Skip to content

General Material

Introduction

A time-domain magnetic general material is defined by its magnetic permeability \(\mu\), electric conductivity \(\sigma\), and remanent magnetic 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 property methods individually using:

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

Each of the three material properties my_mu (\(\mu\)), my_sigma (\(\sigma\)), and my_br (\(\mathbf{B}_r\)) is defined by specifying a property method that computes it.

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 rank-2 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 depend on other physical quantities (e.g., temperature) or be nonlinear (dependent on the magnetic flux density).

The magnetic permeability can be defined by the 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()
Uses 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 magnitude relation $$ \begin{align*} \mu(|\mathbf{H}|) = \frac{|\mathbf{B}(|\mathbf{H}|)|}{|\mathbf{H}|}, \end{align*} $$ and $|\mathbf{B}|$ and $|\mathbf{H}|$ are given by tabulated values. Note that the table must be strictly 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 electric conductivity measures 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 electric conductivity links the electric field \(\mathbf{E}\) to the electric current density \(\mathbf{J}\) via Ohm's law \(\mathbf{J} = \sigma \mathbf{E}\).

In general, the electric conductivity \(\sigma\) is described by a symmetric rank-2 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 depend on other physical quantities (e.g., temperature or current 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 alongside the applied magnetic field, so that \(\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,
)