Skip to content

General Material

Introduction

A time-domain magnetic general material is defined by its magnetic permeability \(\mu\), electric conductivity \(\sigma\), and remanent magnetc flux density \(\mathbf{B}_r\) material properties - with an additional flag to indicate if eddy currents are present.

A user can define their own material by specifying the material properties methods individually using:

my_material = TimeDomainMagneticGeneralMaterial(
    name="My Material",
    marker=my_material_marker,
    magnetic_permeability=my_mu,
    electric_conductivity=mu_sigma,
    remanent_flux_density=my_br,
    has_eddy_currents=True,
)

Where each of the three material properties my_mu (\(\mu\)), my_sigma (\(\sigma\)), and my_br(\(\mathbf{B}_r\)) can be defined by specifying a property method to compute those.

Material Properties

Magnetic Permeability

The magnetic permeability describes how a material responds to a magnetic field and how strongly magnetic flux is established inside the material. It links the magnetic field strength \(\mathbf{H}\) to the magnetic flux density \(\mathbf{B}\) via the magnetic constitutive law \(\mathbf{B} = \mu \mathbf{H}\).

In general the magnetic permeability \(\mu\) is described by a symmetric two-rank tensor:

\[ \begin{align} \mu &= \left( \begin{array}{ccc} \mu_{xx} & \mu_{xy} & \mu_{xz} \\ & \mu_{yy} & \mu_{yz} \\ & & \mu_{zz} \end{array} \right). \end{align} \]

Note that each component may additionally have dependency on other physical quantities, such as temperature or be nonlinear (dependent on the magnetic flux density).

The magnetic permeability can be defined by the following methods summarized in Table 1.

Table 1: Magnetic Permeability Methods
Name Example Description
Non-magnetic (default)
my_mu = None
Alternatively also using
my_mu = MagneticPermeabilityMethodNonMagnetic()
Specify the vacuum permeability \( \mu = \mu_0 \).
Constant
my_mu = 132.0
Alternatively also using
my_mu = methods.MagneticPermeabilityMethodRelative(132.0)
Specify a constant, isotropic relative magnetic permeability $\mu_r$, so that \( \mu = \mu_0 \mu_r \).
BH Curve
my_mu = ([0., 120., 330.], [0.0, 0.1, 1.0])
Alternatively also using
MagneticPermeabilityMethodBHCurve(
    magnetic_field=[0, 120, 330, 500, 3100],
    magnetic_flux_density=[ 0.00, 0.10, 1.00,1.30, 1.65]
)
The BH Curve is a non-linear isotropic specification, where the permeability is obtained from the relation between $$ \begin{align*} \mu \leftarrow \mathbf{B}(|\mathbf{H}|) \quad. \end{align*} $$ where $B$ and $H$ are given by tabulated values. Note that the table needs to be strict monotonic.
Linear Temperature Coefficient
my_mu = mufem.methods.LinearTemperatureCoefficient(
    reference_value=3000.0,
    temperature_coefficient=-2.5,
    reference_temperature=300.0,
)
Specify an isotropic relative magnetic permeability with a linear temperature dependence

\( \mu(T) = \mu_0 \left( \mu_{\text{ref}} + \alpha (T - T_{\text{ref}}) \right) \),

where:
  • \( \mu_{\text{ref}} \) is the reference relative magnetic permeability
  • \( \alpha \) is the temperature coefficient
  • \( T_{\text{ref}} \) is the reference temperature
Orthotropic Tensor
my_mu = mufem.methods.OrthotropicTensor(xx=1000, yy=1000, zz=100)
$$ \begin{align*} \mu &= \left( \begin{array}{ccc} \mu_{xx} & & \\ & \mu_{yy} & \\ & & \mu_{zz} \end{array} \right) \end{align*} $$ allows the specification of each axis component of the magnetic permeability tensor.

Electrical Conductivity

The electrical conductivity is the measure of a material's ability to conduct electric current. It is represented by the symbol \(\sigma\) and is expressed in units of siemens per meter (S/m). The electrical conductivity links the electric field \(\mathbf{E}\) to the electric current density \(\mathbf{J}\) via the Ohm's law \(\mathbf{J} = \sigma \mathbf{E}\).

In general, the electrical conductivity \(\sigma\) is described by a symmetric two-rank tensor:

\[ \begin{align} \sigma &= \left( \begin{array}{ccc} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ & \sigma_{yy} & \sigma_{yz} \\ & & \sigma_{zz} \end{array} \right). \end{align} \]

Note that each component may additionally have dependency on other physical quantities, such as temperature or be nonlinear (dependent on the magnetic flux density). In many cases an isotropic material is assumed, where the tensor is diagonal.

Table 2: Electrical Conductivity Methods
Name Example Description
Insulating (Default)
my_sigma = None
Alternatively
my_sigma = methods.ElectricConductivityPropertyMethodInsulating()
Specifies a zero electrical conductivity: $$ \begin{align*} \sigma &= 0 \end{align*} $$
Constant
my_sigma = 5.8e7
my_sigma = methods.Constant(5.8e7)
ElectricConductivityPropertyMethodConstant

Specify a constant, isotropic electrical conductivity: $$ \begin{align*} \sigma &= \sigma_{\text{usr}} \end{align*} $$
Constant Anisotropic
my_sigma = methods.ConstantTensor(
    xx=5.8e7, xy=1.0e6, xz=0.0,
    yy=4.2e7, yz=0.0,
    zz=2.0e7,
)
Specify a (symmetric) electrical conductivity tensor: $$ \begin{align*} \sigma &= \left( \begin{array}{ccc} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ & \sigma_{yy} & \sigma_{yz} \\ & & \sigma_{zz} \end{array} \right) \end{align*} $$ allowing individual component specification.
Linear Temperature Coefficient
my_sigma = methods.LinearTemperatureCoefficient(
    reference_value=5.8e7,
    temperature_coefficient=-3.9e5,
    reference_temperature=293.15,
)
Specify an isotropic electrical conductivity with linear temperature dependence: $$ \begin{align*} \sigma(T) &= \left[ \sigma_{\text{ref}} - \gamma \left( T - T_{\text{ref}} \right) \right]\mathbf{I} \end{align*} $$ where:
  • \( \sigma_{\text{ref}} \) is the conductivity at \( T_{\text{ref}} \)
  • \( \gamma \) is the temperature coefficient
Note that this requires a Temperature Model to be present.
Temperature Table
my_sigma = methods.TemperatureTable(
    temperature=[293.15, 400.0, 600.0, 800.0],
    values=[5.8e7, 4.9e7, 3.8e7, 3.0e7],
)
Specify an isotropic electrical conductivity from a temperature table: $$ \begin{align*} \sigma(T) &= \sigma(T)\mathbf{I} \end{align*} $$ Note that this requires a Temperature Model to be present.

Magnetization

The magnetization describes the density of magnetic dipole moments inside a material and represents the magnetic moment per unit volume. It contributes to the magnetic flux density in addition to the applied magnetic field. The magnetic flux density is given by \(\mathbf{B} = \mu \mathbf{H} + \mathbf{B}_r\). For permanent magnets, the material is commonly characterized by the remanent flux density \(\mathbf{B}_r\), which describes the magnetic flux density retained after removal of the external magnetizing field.

In general, the remanent flux density is described as a vector: $$ \begin{align} \mathbf{B}_r = B_r \mathbf{d}, \end{align} $$

where

  • \(B_r\) — remanent flux density magnitude
  • \(\mathbf{d}\) — unit vector defining the magnetization direction

The magnetization may depend on temperature, external magnetic fields, and material history (e.g., nonlinear or hysteretic behavior).

The magnetization can be defined by the following methods summarized in Table 3.

Table 3: Magnetization Methods
Name Example Description
Zero (Default)
my_br = None
Specify zero remanent flux density: $$ \begin{align*} \mathbf{B}_r &= 0 \end{align*} $$
Constant
my_br = [0.0, 0.0, 1.2]
Specify a constant remanent flux density vector: $$ \begin{align*} \mathbf{B}_r &= \mathbf{B}_{r,\text{usr}} \end{align*} $$

Examples

We can create a linear permanent magnet material through a function using

from mufem.electromagnetics.timedomainmagnetic import TimeDomainMagneticGeneralMaterial

magnet_material = TimeDomainMagneticGeneralMaterial.Magnet(
    name="Magnet Material",
    marker=my_magnet_material_marker,
    relative_permeability=1.12,
    electric_conductivity=0.0,
    magnetization=[1.02, 0.0, 0.0],
)

the same can be achieved by specifying the methods individually using

from mufem.electromagnetics.timedomainmagnetic import (
    ElectricConductivityMethodInsulating,
    TimeDomainMagneticGeneralMaterial,
    MagneticPermeabilityMethodLinearIsotropic,
    MagnetizationMethodDirection
)

permeability_non_magnetic = MagneticPermeabilityMethodLinearIsotropic(1.12)
conductivity_insulating = ElectricConductivityMethodInsulating()
magnetization_direction = MagnetizationMethodDirection(1.02, 0.0, 0.0)

magnet_material = TimeDomainMagneticGeneralMaterial(
    "Magnet Material",
    my_magnet_material_marker,
    permeability_non_magnetic,
    conductivity_insulating,
    magnetization_direction,
)