.. admonition:: Work in Progress :class: warning This document is still under development and may change frequently. ============================= Time-Domain Magnetic Material ============================= .. toctree:: :maxdepth: 0 :caption: Time-Domain Magnetic Material :hidden: time_domain_magnetic_material_vacuum time_domain_magnetic_material_magnet time_domain_magnetic_material_magnetic time_domain_magnetic_material_non_magnetic time_domain_magnetic_material_non_linear magnetic_permeability/magnetic_permeability_method_non_magnetic magnetic_permeability/magnetic_permeability_method_linear_isotropic magnetic_permeability/magnetic_permeability_method_nonlinear_isotropic magnetic_permeability/magnetic_permeability_method_linear_anisotropic electrical_conductivity/electrical_conductivity_method_insulating electrical_conductivity/electrical_conductivity_method_constant electrical_conductivity/electrical_conductivity_method_anisotropic electrical_conductivity/electrical_conductivity_method_constant_linear_temperature electrical_conductivity/electrical_conductivity_method_constant_temperature_table magnetization/magnetization_zero magnetization/magnetization_constant .. contents:: :depth: 2 :local: Introduction ------------ A **time-domain magnetic material** is defined by its magnetic permeability :math:`\mu`, electrical conductivity :math:`\sigma`, and magnetization properties :math:`\mathbf{M}`, with an additional flag to indicate if eddy currents are present. While a simplified approach is available to specify common materials presented here `presented here <../time_domain_magnetic_model.html#materials>`_, the user can define their own materials by specifying the *material properties methods* individually using: .. testsetup:: # @todo We need a way to actually setup the geometry with attributes import mufem from mufem import Vol from mufem.electromagnetics.timedomainmagnetic import ( TimeDomainMagneticGeneralMaterial, MagneticPermeabilityMethodLinearIsotropic, ElectricConductivityMethodLinearIsotropic, MagnetizationMethodNoMagnetization ) sim = mufem.Simulation.New("My Case", f"data/geometry.mesh") my_material_marker = "MyVolume" @ Vol # specify here the material properties methods for each material property my_permeability_method = MagneticPermeabilityMethodLinearIsotropic(1.12) my_conductivity_method = ElectricConductivityMethodLinearIsotropic(0.0) my_magnetization_method = MagnetizationMethodNoMagnetization() .. testcode:: my_material = TimeDomainMagneticGeneralMaterial(name="My Material", marker=my_material_marker, permeability_method=my_permeability_method, conductivity_method=my_conductivity_method, magnetization_method=my_magnetization_method, has_eddy_currents=True) Where each of the three *material properties* ( :math:`\mu`, :math:`\sigma`, and :math:`\mathbf{M}`) can be defined by specifying a *property method* to compute those. Predefined materials are available for common materials, such as vacuum, copper, and iron using following functions. Material Properties ------------------- Magnetic Permeability ~~~~~~~~~~~~~~~~~~~~~ In general, we distinguish between *paramagnetic*, *diamagnetic*, and *ferromagnetic* materials based on their response to an external magnetic field. .. table:: This table summarizes the relative permeability of some common materials. :widths: auto +-------------------+-------------------+----------------------------+ | **Material** | **Type** | **Relative Permeability** | | | | \( \mu_r \) | +===================+===================+============================+ | Aluminum | Paramagnetic | ~1.00002 | +-------------------+-------------------+----------------------------+ | Tungsten | Paramagnetic | ~1.0001 | +-------------------+-------------------+----------------------------+ | Oxygen (gas) | Paramagnetic | ~1.000004 | +-------------------+-------------------+----------------------------+ | Copper | Diamagnetic | ~0.999991 | +-------------------+-------------------+----------------------------+ | Gold | Diamagnetic | ~0.99998 | +-------------------+-------------------+----------------------------+ | Carbon (graphite) | Diamagnetic | ~0.9999995 | +-------------------+-------------------+----------------------------+ | Iron | Ferromagnetic | 200 - 5000 | +-------------------+-------------------+----------------------------+ | Steel | Ferromagnetic | ~2000 | +-------------------+-------------------+----------------------------+ | Nickel | Ferromagnetic | ~600 | +-------------------+-------------------+----------------------------+ | Cobalt | Ferromagnetic | ~250 | +-------------------+-------------------+----------------------------+ While paramagnetic materials have a relative permeability slightly larger than 1, diamagnetic materials have a relative permeability slightly smaller than 1, and ferromagnetic materials have a relative permeability much larger than 1. Ferromagnetic materials have a large permeability due to the alignment of magnetic moments in the material, which can be influenced by an external magnetic field. This effect is called *magnetization*; however for large fields the material may become *saturated* and the permeability may decrease. This behavior is described by a *BH-curve*. +----------------------------------+-----------------------------------+ | .. figure:: ../data/bh_curve.png | .. figure:: ../data/mu_r_curve.png| | :width: 100% | :width: 100% | | :align: left | :align: right | +----------------------------------+-----------------------------------+ | **A BH-curve from a ferromagnetic material.** The magnetic flux | | density :math:`B` is plotted against the magnetic field strength | | :math:`H`. A BH-curve is strictly monotonic. The slope of the | | curve is the magnetic permeability :math:`\mu` of the material. | +----------------------------------------------------------------------+ Once the material is saturated, the magnetic permeability falls back towards the vacuum permeability :math:`\mu_0` for :math:`H \rightarrow \infty`. In general the magnetic permeability is described by a *symmetric* two-rank tensor: .. math:: \begin{alignat}{2} \mu &= \left( \begin{array}{ccc} \mu_{xx} & \mu_{xy} & \mu_{xz} \\ & \mu_{yy} & \mu_{yz} \\ & & \mu_{zz} \end{array} \right) \end{alignat} 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: .. list-table:: Magnetic Permeability Methods :widths: 25 75 :header-rows: 1 * - Name - Description * - :doc:`Non Magnetic ` - the class `MagneticPermeabilityMethodNonMagnetic` gives .. math:: \begin{align} \mu &= \mu_0 \mathbf{I} \quad, \end{align} specifies the magnetic permeability of the material to be vacuum permeability :math:`\mu_0`. \ \ Best used for materials that are paramagnetic or diamagnetic such as non-magnetic materials such as aluminum, copper or gases, or fluids. * - :doc:`Linear Isotropic ` - `MagneticPermeabilityMethodLinearIsotropic` .. math:: \begin{align} \mu &= \mu_{\text{usr}}\mu_0 \mathbf{I} \quad, \end{align} specifies the **relative** magnetic permeability of the material to be a constant value :math:`\mu_{\text{usr}}`. Best used for magnetic material such as iron, steel, nickel, cobalt below saturation. * - :doc:`Nonlinear Isotropic ` - :doc:`MagneticPermeabilityMethodNonlinearIsotropic ` .. math:: \begin{align} \mu &= \mu(|\mathbf{B}|)_{\text{usr}} \mathbf{I} \quad, \end{align} specifies the magnetic permeability through a tabulated values of :math:`B` and :math:`H` (so called *BH-curve*). * - :doc:`Linear Anisotropic ` - `MagneticPermeabilityPropertyMethodConstantTensor` .. math:: \begin{alignat}{2} \mu &= \left( \begin{array}{ccc} \mu_{xx} & \mu_{xy} & \mu_{xz} \\ & \mu_{yy} & \mu_{yz} \\ & & \mu_{zz} \end{array} \right) \end{alignat} allows the specification of each individual 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 :math:`\sigma` (sigma) and is expressed in units of siemens per meter (S/m). Materials are categorized based on their conductivity into conductors (e.g., metals), insulators (e.g., glass), semiconductors (e.g., silicon), electrolytes (e.g., saltwater), and plasmas (e.g., ionized gases). .. table:: Electrical Conductivity of Materials :widths: auto +---------------------------+---------------------------+------------------------------------------+ | **Material** | **Type** | **Electrical Conductivity** | | | | :math:`\sigma \left[\frac{S}{m} \right]` | +===========================+===========================+==========================================+ | Silver | Metal | :math:`6.30 \times 10^7` | +---------------------------+---------------------------+------------------------------------------+ | Copper | Metal | :math:`5.96 \times 10^7` | +---------------------------+---------------------------+------------------------------------------+ | Aluminum | Metal | :math:`3.50 \times 10^7` | +---------------------------+---------------------------+------------------------------------------+ | Iron | Metal | :math:`1.00 \times 10^7` | +---------------------------+---------------------------+------------------------------------------+ | Mercury | Liquid Metal | :math:`1.04 \times 10^6` | +---------------------------+---------------------------+------------------------------------------+ | Molten Sodium | Liquid Metal | :math:`2.10 \times 10^6` | +---------------------------+---------------------------+------------------------------------------+ | Glass | Insulator | :math:`10^{-11} \, \text{to} \, 10^{-15}`| +---------------------------+---------------------------+------------------------------------------+ | Rubber | Insulator | :math:`10^{-13}` | +---------------------------+---------------------------+------------------------------------------+ | Silicon | Semiconductor | :math:`10^{-4} \, \text{to} \, 10^{-1}` | +---------------------------+---------------------------+------------------------------------------+ | Saltwater | Electrolyte | :math:`1 \, \text{to} \, 10` | +---------------------------+---------------------------+------------------------------------------+ | Plasma (ionized gas) | Plasma | :math:`10^3 \, \text{to} \, 10^8` | +---------------------------+---------------------------+------------------------------------------+ | PEDOT:PSS | Conductive Polymer | :math:`10^2 \, \text{to} \, 10^4` | +---------------------------+---------------------------+------------------------------------------+ In general, the electrical conductivity is described by a *symmetric* two-rank tensor: .. math:: \begin{alignat}{2} \sigma &= \left( \begin{array}{ccc} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ & \sigma_{yy} & \sigma_{yz} \\ & & \sigma_{zz} \end{array} \right) \end{alignat} 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. .. list-table:: Electrical Conductivity Methods :widths: 25 75 :header-rows: 1 * - Name - Description * - :doc:`Insulating ` - :doc:`ElectricConductivityPropertyMethodInsulating ` .. math:: \begin{align} \sigma &= 0 \quad, \end{align} specifies the electrical conductivity of the material to be zero. * - :doc:`Constant ` - :doc:`ElectricConductivityPropertyMethodConstant ` .. math:: \begin{align} \sigma &= \sigma_{\text{usr}} \quad, \end{align} specifies the electrical conductivity of the material to be a constant value :math:`\sigma_{\text{usr}}`. * - :doc:`Constant Anisotropic ` - :doc:`ElectricConductivityPropertyMethodConstantTensor ` .. math:: \begin{alignat}{2} \sigma &= \left( \begin{array}{ccc} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ & \sigma_{yy} & \sigma_{yz} \\ & & \sigma_{zz} \end{array} \right) \end{alignat} allows the specification of each individual component of the electrical conductivity tensor. * - :doc:`Constant Linear Temperature ` - :doc:`ElectricConductivityMethodLinearTemperatureDependence ` .. math:: \begin{align} \sigma &= \left( \sigma_{\text{ref}} - \gamma \left( T - T_{\text{ref}} \right) \right) \mathbf{I} \quad, \end{align} specifies the electrical conductivity of the material to be linearly dependent on the temperature. Here, :math:`\sigma_{\text{ref}}` is the conductivity at the reference temperature :math:`T_{\text{ref}}` and :math:`\gamma` is the temperature coefficient of the material. Note that this requires a *Temperature Model* to be present. * - :doc:`Constant Temperature Table ` - :doc:`ElectricConductivityMethodTemperatureTable ` .. math:: \begin{align} \sigma &= \sigma(T) \mathbf{I} \quad, \end{align} specifies the electrical conductivity of the material to be a tabulated value dependent on temperature :math:`T`. Note that this requires a *Temperature Model* to be present. Magnetization ~~~~~~~~~~~~~ The **remanence flux density**, :math:`\mathbf{B}_r`, is a fundamental property of permanent magnets that describes the magnetic flux density retained in a material when the external magnetizing field is removed. It is closely related to the **magnetization** :math:`\mathbf{M}`, which represents the material's magnetic moment per unit volume. Some properties of common permanent magnets: +-----------------------------+-------------------------+-------------------------+ | Magnet Type | Remanence | Relative Permeability | | | :math:`\mathbf{B}_r[T]` | :math:`\mu_r[1]` | +=============================+=========================+=========================+ | Neodymium-Iron-Boron (NdFeB)| 1.0 - 1.4 | 1.05 - 1.2 | +-----------------------------+-------------------------+-------------------------+ | Samarium-Cobalt (SmCo) | 0.8 - 1.2 | 1.05 - 1.15 | +-----------------------------+-------------------------+-------------------------+ | Alnico | 0.6 - 1.35 | 4 - 10 | +-----------------------------+-------------------------+-------------------------+ | Ferrite (Ceramic) | 0.2 - 0.45 | 1.05 - 1.1 | +-----------------------------+-------------------------+-------------------------+ | Flexible Magnets | 0.05 - 0.1 | ~1.05 | +-----------------------------+-------------------------+-------------------------+ There is a large variety in the remanence flux density and relative permeability of permanent magnets, depending on the material composition and manufacturing process as well as how temperature and external fields affect the magnetization. The remanence flux density is described as a vector: .. math:: \mathbf{B}_r = B_r \mathbf{d} \quad, where :math:`B_r` is the remanence flux density and :math:`\mathbf{d}` is the magnetization direction unit vector. The magnetization can be defined by the following methods: .. list-table:: Magnetization Methods :widths: 25 75 :header-rows: 1 * - Name - Description * - :doc:`Zero ` - :doc:`MagnetizationPropertyMethodZero ` .. math:: \begin{align} \mathbf{B}_r &= 0 \quad, \end{align} specifies the magnetization of the material to be zero. * - :doc:`Constant ` - :doc:`MagnetizationPropertyMethodConstant ` .. math:: \begin{align} \mathbf{B}_r &= \mathbf{B}_{r,\text{usr}} \quad, \end{align} Examples -------- We can create a linear permanent magnet material through a function using .. testsetup:: my_magnet_material_marker = "MyVolume" @ Vol .. testcode:: from mufem.electromagnetics.timedomainmagnetic import TimeDomainMagneticGeneralMaterial magnet_material = TimeDomainMagneticGeneralMaterial.Magnet( "Magnet Material", 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 .. testcode:: 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, )