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\) — plus a flag indicating whether eddy currents are computed in this material.

A material is created by specifying a property method for each of the three quantities:

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 property accepts either an explicit method object (see tables below) or a convenient shorthand (a scalar, a list, a LinearTemperatureCoefficient, …) that is wrapped automatically. Passing None (the default) selects the trivial method (non-magnetic / insulating / zero remanence).

Typical applications

The general material covers most regions encountered in low-frequency electromagnetic devices:

  • Air, plastics, encapsulants — non-magnetic, insulating (defaults).
  • Copper / aluminium windings — non-magnetic, finite conductivity; eddy currents disabled for stranded coils, enabled for solid conductors.
  • Soft-magnetic iron (motor / transformer cores) — nonlinear BH curve, optional eddy currents.
  • Permanent magnets (NdFeB, SmCo, ferrite) — near-unity permeability with a constant remanent flux density; magnetization may vary in space for Halbach-style arrays.
  • Conductive shells and shielding — high conductivity with eddy currents to capture induced losses.

For superconducting materials, see the Superconductor Module; for stacks of thin ferromagnetic sheets, see the Lamination Module. A hysteresis module is planned.

Material Properties

Magnetic Permeability

The magnetic permeability links the magnetic field \(\mathbf{H}\) to the magnetic flux density \(\mathbf{B}\) through the constitutive law \(\mathbf{B} = \mu \mathbf{H}\). In general, \(\mu\) is 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} \]

whose components may further depend on the magnetic flux density (nonlinear materials) or on other physical quantities.

The available methods are summarized in Table 1.

Table 1: Magnetic Permeability Methods
Name Example Description
Non-magnetic (default)
my_mu = None
Equivalently:
my_mu = MagneticPermeabilityMethodNonMagnetic()
Vacuum permeability \( \mu = \mu_0 \).
Linear Isotropic
my_mu = 132.0
Equivalently:
my_mu = MagneticPermeabilityMethodLinearIsotropic(
    relative_permeability_value=132.0,
)
Constant, isotropic relative permeability $\mu_r$, so that \( \mu = \mu_0 \mu_r \).
BH Curve
my_mu = ([0., 120., 330., 500., 3100.],
         [0.00, 0.10, 1.00, 1.30, 1.65])
Equivalently:
my_mu = MagneticPermeabilityMethodBHCurve(
    magnetic_field_strength=[0, 120, 330, 500, 3100],
    magnetic_flux_density=[0.00, 0.10, 1.00, 1.30, 1.65],
)
Nonlinear isotropic permeability obtained from a tabulated $|\mathbf{B}|$–$|\mathbf{H}|$ curve via $$ \mu(|\mathbf{H}|) = \frac{|\mathbf{B}(|\mathbf{H}|)|}{|\mathbf{H}|}. $$ The table must be strictly monotonic.
Linear Anisotropic
my_mu = MagneticPermeabilityMethodLinearAnisotropic(
    permeability_tensor=FixedMatrix([
        [mu_xx, mu_xy, mu_xz],
        [mu_xy, mu_yy, mu_yz],
        [mu_xz, mu_yz, mu_zz],
    ]),
)
Constant, fully anisotropic permeability tensor.

Electric Conductivity

The electric conductivity \(\sigma\) links the electric field \(\mathbf{E}\) to the electric current density \(\mathbf{J}\) via Ohm's law \(\mathbf{J} = \sigma \mathbf{E}\). It is expressed in siemens per meter (S/m). In general, \(\sigma\) is 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} \]

whose components may depend on temperature, current density, etc. In many practical cases the material is assumed isotropic.

Table 2: Electric Conductivity Methods
Name Example Description
Insulating (default)
my_sigma = None
Equivalently:
my_sigma = ElectricConductivityMethodInsulating()
Zero conductivity: \( \sigma = 0 \).
Linear Isotropic
my_sigma = 5.8e7
Equivalently:
my_sigma = ElectricConductivityMethodLinearIsotropic(
    conductivity_value=5.8e7,
)
Constant, isotropic conductivity.
Linear Anisotropic
my_sigma = ElectricConductivityMethodLinearAnisotropic(
    conductivity_tensor=FixedMatrix([
        [5.8e7, 1.0e6, 0.0],
        [1.0e6, 4.2e7, 0.0],
        [0.0,   0.0,   2.0e7],
    ]),
)
Constant, fully anisotropic conductivity tensor.
Linear Temperature Coefficient
my_sigma = mufem.methods.LinearTemperatureCoefficient(
    reference_value=5.8e7,
    temperature_coefficient=-3.9e5,
    reference_temperature=293.15,
)
Isotropic conductivity with linear temperature dependence $$ \sigma(T) = \sigma_{\text{ref}} + \alpha \left( T - T_{\text{ref}} \right). $$ Requires a *Temperature Model* to be present.
Temperature Table
my_sigma = mufem.methods.TemperatureTable(
    temperature=[293.15, 400.0, 600.0, 800.0],
    values=[5.8e7, 4.9e7, 3.8e7, 3.0e7],
)
Isotropic conductivity tabulated against temperature; linearly interpolated. Requires a *Temperature Model* to be present.

Remanent Flux Density

The remanent flux density \(\mathbf{B}_r\) accounts for permanent magnetization. With the convention \(\mathbf{B} = \mu \mathbf{H} + \mathbf{B}_r\), it is the residual magnetic flux density retained after the external magnetizing field is removed. It is generally a vector

\[ \begin{align} \mathbf{B}_r = B_r \mathbf{d}, \end{align} \]

where \(B_r\) is the magnitude and \(\mathbf{d}\) the unit vector of the magnetization direction. The available methods are summarized in Table 3.

Table 3: Remanent Flux Density Methods
Name Example Description
Zero (default)
my_br = None
Equivalently:
my_br = MagnetizationMethodNoMagnetization()
\( \mathbf{B}_r = 0 \).
Constant Direction
my_br = [0.0, 0.0, 1.2]
Equivalently:
my_br = MagnetizationMethodDirection(
    x=0.0, y=0.0, z=1.2,
)
Constant remanent flux density vector.
Variable
halbach_components = mufem.CffConstantVector((0, 1, 0))
halbach_remanence = mufem.CffCylindricalCoordinate(
    vec=halbach_components,
)

my_br = MagnetizationMethodVariable(
    magnetization=halbach_remanence,
)
Spatially varying remanent flux density driven by a user-provided vector coefficient. Useful for Halbach arrays, poloidal patterns, and any magnetization built from the existing coefficient building blocks (cylindrical / spherical coordinates, expressions, etc.).

Example

A linear permanent-magnet material can be created in two equivalent ways.

Using the shorthand form:

from mufem.electromagnetics.timedomainmagnetic import TimeDomainMagneticGeneralMaterial

magnet_material = TimeDomainMagneticGeneralMaterial(
    name="Magnet",
    marker="Magnet" @ Vol,
    magnetic_permeability=1.12,
    remanent_flux_density=[1.02, 0.0, 0.0],
    has_eddy_currents=False,
)

Using explicit method objects:

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

magnet_material = TimeDomainMagneticGeneralMaterial(
    name="Magnet",
    marker="Magnet" @ Vol,
    magnetic_permeability=MagneticPermeabilityMethodLinearIsotropic(1.12),
    electric_conductivity=ElectricConductivityMethodInsulating(),
    remanent_flux_density=MagnetizationMethodDirection(1.02, 0.0, 0.0),
    has_eddy_currents=False,
)