mammos_analysis.kuzmin#

Postprocessing functions for micromagnetic property estimation.

Functions

kuzmin_formula(Ms_0, T_c, s, T)

Compute spontaneous magnetization at temperature T using Kuz'min formula.

kuzmin_properties(Ms, T[, Tc, Ms_0, K1_0, ...])

Evaluate intrinsic micromagnetic properties using Kuz’min model.

Classes

KuzminResult(Ms, A, Tc, s[, K1])

Result of Kuz'min magnetic properties estimation.

class mammos_analysis.kuzmin.KuzminResult(Ms, A, Tc, s, K1=None)[source]#

Result of Kuz’min magnetic properties estimation.

Parameters:
A: Callable[[Real | Quantity], Entity]#

Callable returning temperature-dependent exchange stiffness.

K1: Callable[[Real | Quantity], Entity] | None = None#

Callable returning temperature-dependent uniaxial anisotropy.

Ms: Callable[[Real | Quantity], Entity]#

Callable returning temperature-dependent spontaneous magnetization.

Tc: Entity#

Curie temperature.

plot(T=None, ax=None, celsius=False)[source]#

Create a plot for Ms, A, and K1 as a function of temperature.

Parameters:
  • T (mammos_entity.Entity | astropy.units.Quantity | numpy.ndarray | None) – If specified, the entities are plotted against this array. Otherwise, a uniform array of 100 points is generated between the minimum and the maximum available data.

  • ax (matplotlib.axes.Axes | None) – optional matplotlib Axes instance to plot on an existing subplot.

  • celsius (bool) – If True, plots the temperature in degree Celsius.

Return type:

matplotlib.axes.Axes

s: Quantity#

Kuzmin parameter.

mammos_analysis.kuzmin.kuzmin_formula(Ms_0, T_c, s, T)[source]#

Compute spontaneous magnetization at temperature T using Kuz’min formula.

The formula approximate spontaneous magnetization \(M_s(T)\) for \(0 < T < T_c\) as

\[\begin{split}M_s(T) = M_0 \left[ 1 - s \left( \frac{T}{T_c} \right)^{3/2} \\ - (1-s) \left( \frac{T}{T_c} \right)^{5/2} \right]^{1/3}\end{split}\]

where \(M_0\) is the saturation magnetization, \(T_c\) is the Curie temperature, and \(s\) is an adjustable parameter.

Kuz’min, M.D., Skokov, K.P., Diop, L.B. et al. Exchange stiffness of ferromagnets. Eur. Phys. J. Plus 135, 301 (2020). https://doi.org/10.1140/epjp/s13360-020-00294-y

Parameters:
  • Ms_0 – Spontaneous magnetization at 0 K.

  • T_c – Curie temperature.

  • s – Kuzmin exponent parameter.

  • T – Temperature(s) for evaluation.

Returns:

Spontaneous magnetization at temperature T as an array.

mammos_analysis.kuzmin.kuzmin_properties(Ms, T, Tc=None, Ms_0=None, K1_0=None, Tc_initial_guess=None, Ms_0_initial_guess=None, s_initial_guess=0.5)[source]#

Evaluate intrinsic micromagnetic properties using Kuz’min model.

Computes Ms, A, and K1 as function of temperature by fitting the Kuz’min equation to Ms vs T. The attributes Ms, A and K1 in the returned object can be called to get values at arbitrary temperatures.

K1 is only available in the output data if the value of the zero-temperature uniaxial anisotropy constant K1_0 has been passed.

If Ms_0 is None, then we check if the first temperature value is zero. If so, we Ms_0 corresponding to the first value of Ms. Otherwise, its value is fitted from Kuz’min curve.

If Tc is None, it will be treated as an optimization variable and estimated during the fitting process via curve fitting.

If Ms_0 is fitted and Ms_0_initial_guess is not defined, we start the optimization from the value 1.2 * max(Ms_0).

If Tc is fitted and Tc_initial_guess is not defined, we start the optimization from the highest temperature value T such that the corresponding Ms is higher than 0.1 * max(Ms).

Parameters:
Returns:

KuzminResult with temperature-dependent Ms, A, K1 (optional), Curie temperature (optional), and exponent.

Raises:
  • ValueError – Value of Ms at zero temperature is not given.

  • ValueError – If K1_0 has incorrect unit.

Return type:

KuzminResult