Skip to content

Time-Domain Magnetic Model

Introduction

This model uses the quasi-static approximation of Maxwell's equations where wave and displacement effects are neglected. It is typically used for low-frequency applications where magnetic fields and eddy currents dominate, such as electric machines, transformers, and induction heating.

The model uses the so-called A-formulation (also known as the electric formulation) and solves for the magnetic vector potential \(\mathbf{A}\):

\[ \begin{align} \operatorname{curl} \nu \operatorname{curl} \mathbf{A} + \sigma \frac{\partial \mathbf{A}}{\partial t} = \mathbf{J} + \operatorname{curl} \left( \nu \mathbf{B}_r \right)\, , \end{align} \]

where:

  • \(\nu\) is the symmetric rank-2 reluctivity tensor,
  • \(\sigma\) is the symmetric rank-2 electric conductivity tensor,
  • \(\mathbf{J}\) is a prescribed divergence-free current density (\(\operatorname{div} \mathbf{J} = 0\)),
  • \(\mathbf{B}_r\) is the remanent flux density.

The magnetic flux density is related to the magnetic vector potential by

\[ \begin{align} \mathbf{B} = \operatorname{curl} \mathbf{A}. \end{align} \]

The magnetic reluctivity is the inverse of the magnetic permeability tensor (\(\nu = \mu^{-1}\)). The electric conductivity tensor \(\sigma\) is usually diagonal — its off-diagonal terms are zero — and describes how well the material conducts electric current.

Equation (1) is augmented by the constitutive equations

\[ \begin{align} \mathbf{B} &= \mu \mathbf{H} + \mathbf{B}_r, \\ \mathbf{J} &= \sigma \mathbf{E}. \end{align} \]

In general the material properties \(\nu\), \(\sigma\), and \(\mathbf{B}_r\) can be nonlinear and depend on other physical quantities such as temperature.

In the governing equation, the prescribed current density \(\mathbf{J}\) on the right-hand side is supplied through support models such as the Excitation Coil Model.

Model

The model is created and added to the simulation with

time_domain_magnetic_model = TimeDomainMagneticModel(
    marker=["Air", "Cylinder"] @ Vol,
    order=1,
    magnetostatic_initialization=False,
)

sim.get_model_manager().add_model(time_domain_magnetic_model)

where

  • marker specifies the domain on which the model is solved (defaults to the whole volume),
  • order is the polynomial order of the finite element discretization (default 1),
  • magnetostatic_initialization controls whether an initial condition is obtained by first solving a magnetostatic problem (default False).

Solver

The model owns a solver that configures the linear (conjugate-gradient) iteration and the outer nonlinear (Newton) update, including an optional line search for strongly nonlinear materials. It is obtained with

solver = time_domain_magnetic_model.get_solver()
solver.set_verbose(True)

See Solver for the full list of controls.

Materials

The governing equation requires three material properties: the magnetic reluctivity (inverse permeability), the electric conductivity, and the remanent flux density. A material is created by specifying a method for each of these material properties. Most cases can be set up using the General Material, with examples given in Table 1.

Table 1: General Material Example
materials
Example simulation with three materials: Air, Copper and Steel.
Air
For non-magnetic and non-conductive regions such as air with $$ \mu = \mu_0,\qquad \sigma = 0,\qquad \mathbf{B}_r = 0, $$ the material is created with:
air_material = TimeDomainMagneticGeneralMaterial(
    name="Air",
    marker="Air" @ Vol,
)
Copper
For non-magnetic but electrically conductive regions such as copper with $$ \mu = \mu_0,\qquad \sigma = \sigma_{\text{Cu}},\qquad \mathbf{B}_r = 0, $$ the material is created with:
copper_material = TimeDomainMagneticGeneralMaterial(
    name="Copper",
    marker=["Upper Coil", "Lower Coil"] @ Vol,
    electric_conductivity=5.8e7,
    has_eddy_currents=False,
)
Steel
For magnetic and electrically conductive regions such as steel with $$ \mu = \mu(|\mathbf{B}|),\qquad \sigma = \sigma_{\text{steel}},\qquad \mathbf{B}_r = 0, $$ the material is created with:
steel_material = TimeDomainMagneticGeneralMaterial(
    name="Steel",
    marker=["Rotor", "Stator"] @ Vol,
    magnetic_permeability=([0, 120, 330, 500, 3100],
                           [0.00, 0.10, 1.00, 1.30, 1.65]),
    electric_conductivity=4.5e6,
)

Once created, the materials must be added to the model:

time_domain_magnetic_model.add_materials(
    [air_material, copper_material, steel_material]
)

Conditions

The following conditions are available for the time-domain magnetic model:

List of supported conditions
Name Supported Entities Description
Tangential Magnetic Flux Boundary Enforces the magnetic flux density to be tangential to the boundary: $$ \mathbf{n} \cdot \mathbf{B} = 0 $$ on the boundary $\Gamma_0$.
Normal Magnetic Field Boundary Forces the magnetic field to be normal to the boundary by setting its tangential component to zero: $$ \left. \mathbf{H} \times \mathbf{n} \right|_{\Gamma_0} = 0. $$
Tangential Magnetic Field Boundary Imposes a prescribed tangential magnetic field $$ \left. \mathbf{H} \times \mathbf{n} \right|_{\Gamma_0} = \mathbf{H}_\text{ext}, $$ where $\mathbf{H}_\text{ext}$ is the user-defined external magnetic field on the boundary $\Gamma_0$.
Matching Interface Boundary pair Stitches two matching boundaries together, optionally with a sign flip across the interface. Supports rigid transforms (translation and rotation), so it covers periodic and anti-periodic boundary conditions for full-period and pole-pitch sector models.

Reports

The following reports are available for the time-domain magnetic model:

List of reports
Name Field Type Description
Magnetic Force Report Vector Returns the total magnetic force on an object.
Magnetic Torque Report Vector Returns the total magnetic torque on an object.

Coefficients

The following functions are available for the time-domain magnetic model for visualization or querying:

List of functions
Name Field Type Description
Magnetic Flux Density Vector The magnetic flux density is computed as: $$ \mathbf{B} = \operatorname{curl} \mathbf{A}. $$
Magnetic Field Vector The magnetic field obtained from the constitutive relation: $$ \mathbf{H} = \nu \left( \mathbf{B} - \mathbf{B}_r \right), $$ where $\mathbf{B}_r$ is the remanent flux density.
Electric Current Density Vector The electric current density inside the simulation domain. It is the sum of the eddy current density and the current density from the coils.
Ohmic Heating Scalar The ohmic heating per unit volume: $$ P_\Omega = \mathbf{J} \cdot \mathbf{E}. $$
Electric Conductivity Symmetric Tensor The electric conductivity tensor $\sigma$.
Relative Magnetic Permeability Scalar The relative magnetic permeability $\mu_r = \mu / \mu_0$, evaluated as the inverse of the mean reluctivity diagonal so it remains meaningful for anisotropic and nonlinear materials.
Remanence Flux Density Vector The remanent flux density $\mathbf{B}_r$ provided by the materials.

Multiphysics Coupling

Thermal Coupling

In conductive regions the model dissipates Ohmic (Joule) heating

\[ P_\Omega = \mathbf{J} \cdot \mathbf{E} \qquad [\mathrm{W/m^3}], \]

which it exposes as a volumetric heat source. When a Solid Temperature model is added to the same simulation, this heating is automatically deposited as a volumetric source over the thermal domain — no explicit condition is required. This realises Joule-heating multiphysics, where the magnetic losses drive the temperature field, which in turn can feed back through temperature-dependent material properties.

from mufem.thermal import SolidTemperatureModel

# magnetic model (with its materials, coil / excitation) on the conductor
magnetic_model = TimeDomainMagneticModel(marker="Billet" @ Vol, order=1)
sim.get_model_manager().add_model(magnetic_model)

# adding a thermal model on the same region couples in the Ohmic heating
thermal_model = SolidTemperatureModel(marker="Billet" @ Vol, order=1)
sim.get_model_manager().add_model(thermal_model)

See the Solid Temperature model for the thermal materials, boundary conditions, and solver settings.

Modules

Constitutive behaviour outside the scope of the General Material is provided through dedicated modules that plug into the time-domain magnetic model:

  • Superconductor Module — power-law E-J characteristic for LTS and HTS conductors (AC-loss studies, fault-current limiters, HTS magnets).
  • Lamination Module — stacks of thin ferromagnetic sheets (transformer cores, motor stators / rotors). Provides a homogenised anisotropic constitutive law plus a sub-grid in-sheet eddy-current correction so the laminate does not have to be resolved sheet-by-sheet.

A hysteresis module is planned.