formulary#

Functions to calculate common micromagnetic quantities.

magnetostatic_energy_density(msat)#

Magnetostatic energy density (J/m³).

1/2 μ0 msat²

Parameters:

msat (float) – Saturation magnetization (A/m).

Returns:

Magnetostatic energy density (J/m³).

Return type:

float

Km(msat)#

Magnetostatic energy density (J/m³).

1/2 μ0 msat²

This is a short alias for magnetostatic_energy_density(msat).

Parameters:

msat (float) – Saturation magnetization (A/m).

Returns:

Magnetostatic energy density (J/m³).

Return type:

float

exchange_length(aex, msat)#

Ferromagnetic exchange length (m). Beware that different definitions exist without the √2 prefactor, but this one seems to be used most often.

\[l_{ex} = \sqrt{a_\text{ex}/K_\text{m}} = \sqrt{2a_\text{ex}/(\mu_0 m_\text{sat}^2)}\]
Parameters:
  • aex (float) – Exchange stiffness (J/m).

  • msat (float) – Saturation magnetization (A/m).

Returns:

Exchange length (m).

Return type:

float

l_ex(aex, msat)#

Ferromagnetic exchange length (m). Beware that different definitions exist without the √2 prefactor, but this one seems to be used most often.

\[l_{ex} = \sqrt{a_\text{ex}/K_\text{m}} = \sqrt{2a_\text{ex}/(\mu_0 m_\text{sat}^2)}\]

This is a short alias for exchange_length(aex, msat).

Parameters:
  • aex (float) – Exchange stiffness (J/m).

  • msat (float) – Saturation magnetization (A/m).

Returns:

Exchange length (m).

Return type:

float

wall_width(aex, K_eff)#

Bloch wall width (m). Mind the lack of any prefactor! Different definitions exist, for example with a prefactor π.

\[\sqrt{a_\text{ex}/K_{\text{eff}}}\]
Parameters:
  • aex (float) – Exchange stiffness (J/m).

  • K_eff (float) – Effective anisotropy constant (J/m³), for example Ku1.

Returns:

Wall width (m).

Return type:

float

wall_energy(aex, K_eff)#

Bloch wall energy (J/m²): the energy per unit of Bloch domain wall area. Mind the lack of any prefactor, different definitions exist!

\[\sqrt{a_\text{ex} K_{\text{eff}}}\]
Parameters:
  • aex (float) – Exchange stiffness (J/m).

  • K_eff (float) – Effective anisotropy constant (J/m³), for example Ku1.

Returns:

Wall energy (J/m²).

Return type:

float

helical_length(aex, D)#

Characteristic length scale of a DMI dominated system, such as with skyrmions. Mind the lack of any prefactor! Different definitions exist, with prefactors like 1, 2 or 4π.

aex/D

Parameters:
  • aex (float) – Exchange stiffness (J/m).

  • D (float) – Strength of DMI (J/m²), for example interfacial DMI strength.

Returns:

Helical length (m).

Return type:

float

magnetic_hardness(K1, msat)#

Magnetic hardness parameter κ (dimensionless). It should be greater than 1 for a permanent magnet and much less than 1 for a good temporary magnet.

\[\sqrt{\frac{|K_1|}{\mu_0 m_\text{sat}^2}}\]

https://doi.org/10.1016/j.scriptamat.2015.09.021

Parameters:
  • K1 (float) – Anisotropy energy density (J/m³), for example ku1.

  • msat (float) – Saturation magnetization (A/m).

Returns:

Magnetic hardness parameter (dimensionless).

Return type:

float

bulk_modulus(C11, C44)#

For isotropic materials, the bulk modulus is given by K = C11 - 4/3 C44 = C12 + 2/3 C44. https://en.wikipedia.org/wiki/Hooke%27s_law

Parameters:
  • C11 (float) – Stiffness constant C11 (Pa).

  • C44 (float) – Stiffness constant C44 (Pa).

Returns:

Bulk modulus (Pa).

Return type:

float

Rayleigh_damping_coefficients(frequency_1, damping_ratio_1, frequency_2, damping_ratio_2)#

Rayleigh damping mass coefficient α and stiffness coefficient β calculated by providing damping ratios ζ₁,₂ at specified frequencies f₁,₂.

α = 4π f₁ f₂ * (ζ₁f₂ - ζ₂f₁) / (f₂² - f₁²)

β = 1/π * (ζ₂f₂ - ζ₁f₁) / (f₂² - f₁²)

with f₁/f₂ <= ζ₂/ζ₁ <= f₂/f₁

Based on https://www.comsol.com/blogs/how-to-model-different-types-of-damping-in-comsol-multiphysics and https://doc.comsol.com/6.3/doc/com.comsol.help.sme/sme_ug_modeling.05.126.html.

Parameters:
  • frequency_1 (float) – Low frequency f₁ (Hz) at which damping_ratio_1 is expected. This should be smaller than frequency_2.

  • damping_ratio_1 (float) – Positive damping ratio ζ₁ (dimensionless) expected at frequency_1.

  • frequency_2 (float) – High frequency f₂ (Hz) at which damping_ratio_2 is expected. This should be larger than frequency_1.

  • damping_ratio_2 (float) – Positive damping ratio ζ₂ (dimensionless) expected at frequency_2.

Returns:

Rayleigh damping mass coefficient α (1/s) and stiffness coefficient β (s).

Return type:

tuple[float] of size 2

Rayleigh_damping_stiffness_coefficient(frequency, damping_ratio)#

Rayleigh damping stiffness coefficient β, assuming a mass coefficient of zero, calculated by providing a damping ratio ζ at a specified frequency f.

β = ζ/(πf)

This is useful to obtain a damping that increases linearly with frequency, by only setting the viscosity tensor, but not the phenomenological elastic damping constant.

Based on https://doc.comsol.com/6.3/doc/com.comsol.help.sme/sme_ug_modeling.05.126.html.

Parameters:
  • frequency (float) – Frequency f (Hz) at which the damping_ratio is expected.

  • damping_ratio (float) – Positive damping ratio ζ (dimensionless) expected at the frequency.

Returns:

Rayleigh damping stiffness coefficient β (s).

Return type:

float