Time-Domain Magnetic Model¶
Introduction¶
This model uses the quasi-static approximation of Maxwell's equations, which ignores wave and displacement effects. You typically use it 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}\):
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
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
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, support models such as the Excitation Coil Model supply the prescribed current density \(\mathbf{J}\) on the right-hand side.
Model¶
You create the model and add it 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
markerspecifies the domain on which the model is solved (defaults to the whole volume),orderis the polynomial order of the finite element discretization (default1),magnetostatic_initializationcontrols whether the solver first solves a magnetostatic problem to get an initial condition (defaultFalse).
Solver¶
The model owns a solver that configures the linear (conjugate-gradient) iteration and the outer nonlinear (Newton) update. The solver also has an optional line search for strongly nonlinear materials. You get it with
See Solver for the full list of controls.
Materials¶
The governing equation needs three material properties: the magnetic reluctivity (inverse permeability), the electric conductivity, and the remanent flux density. You create a material with a method for each of these material properties. You can set up most cases with the General Material. Table 1 gives examples.
![]() 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, $$ you create the material with:
CopperFor non-magnetic but electrically conductive regions such as copper with $$ \mu = \mu_0,\qquad \sigma = \sigma_{\text{Cu}},\qquad \mathbf{B}_r = 0, $$ you create the material with:
SteelFor magnetic and electrically conductive regions such as steel with $$ \mu = \mu(|\mathbf{B}|),\qquad \sigma = \sigma_{\text{steel}},\qquad \mathbf{B}_r = 0, $$ you create the material with:
|
After you create them, add the materials to the model:
Conditions¶
The following conditions are available for the time-domain magnetic model:
| 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:
| 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:
| 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
which it exposes as a volumetric heat source. When you add a Solid Temperature model to the same simulation, mufem automatically deposits this heating as a volumetric source over the thermal domain. You do not need an explicit condition. This gives Joule-heating multiphysics, where the magnetic losses drive the temperature field. The temperature field can then 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¶
Dedicated modules that plug into the time-domain magnetic model provide constitutive behaviour outside the scope of the General Material:
- 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.
