Integrators for the Landau-Lifshitz-Gilbert Equation¶
One of the key features of magnum.fe is the time integration of the Landau-Lifshitz-Gilbert equation (LLG). The LLG describes the motion of the magnetization configuration in micromagnetics:
where the effective field \(\vec{H}_\text{eff}\) is given by the variational derivative of the total free energy
For a detailed discussion on the LLG, see [Brown1963]. magnum.fe implements different algorithms for the integration of the LLG. For most situations the LLGCvode
integrator will provide by far the best performance.
All LLG integrators are configured with a list of LLGTerm
objects. Each of these objects represents either an effective field contribution, e.g. the demagnetization field, or a more general contribution to the LLG, e.g. the spin-torque term.
# create LLG integrator that incorporates the demagnetization field
# and the exchange field as effective field
llg = LLGCvode([DemagField(), ExchangeField()])
By default all integrators solve the LLG on the ‘magnetic’ region. This default can be changed by passing a region
parameter to the initializer.
# solve LLG on region named 'some_region_name'
llg = LLGCvode([DemagField(), ExchangeField()], region = 'some_region_name')
The integration is then performed stepwise by calling the step
method on the solver object.
# perform timestep with dt = 1ps
llg.step(state, 1e-12)
Alternatively you can use the step
method of the state
object. This method does not only call the step
method of the integrator, but also increases the time state.t
appropriately.
# perform timestep with dt = 1ps and increase state.t
state.step(llg, 1e-12)
Depending on the type of LLG integrator, different additional options might be passed to the initializer. Please refer to the following class reference for details.
LLGCvode
¶
-
class
magnumfe.
LLGCvode
(terms=[], prec_solver='LU', region='magnetic', normtol=0.005, no_precession=False, **kwargs)¶ Solver for the Landau-Lifshitz-Gilbert equation using Sundials CVODE for integration. The right-hand-side of the LLG is evaluated nodewise.
If the BDF method is used, the linear solver is preconditioned as described in [Suess2002] with
\[\mat{P} = \mat{I} - \phi \frac{\delta}{\delta \vec{m}} \left[ - \gamma' ( \vec{m} \times \vec{H}_\text{prec}(\vec{m}) ) - \alpha' ( \vec{m} \times (\vec{m} \times \vec{H}_\text{prec}(\vec{m}) ) \right]\]where \(\phi\) is the scalar parameter in the Newton matrix \(\mat{M} = \mat{I} - \phi \mat{J}\) and \(\vec{H}_\text{prec}\) contains all effective-field terms but the demagnetization field.
- Arguments
- terms (
LLGTerm
) - Effective Field terms to be considered.
- prec_solver (
string
) - Solver for preconditioning system, either ‘LU’ or ‘GMRES’, defaults to ‘LU’
- region (
string
) - The region where the LLG is solved, defaults to ‘magnetic’
- normtol (
float
) - Threshold for the renormalization of the magnetization
- rtol (
float
) - relative tolerance of CVODE integrator, defaults to 1e-5
- atol (
float
) - absolute tolerance of CVODE integrator, defaults to 1e-5
- **kwargs
- Additional options for the CVODE solver (e.g. order, maxl)
- terms (
-
reset
()¶ Reset the CVode solver. This method should be called after hard resets of input values, e.g. after calling
set
on an external field object.
LLGAlougesProject
¶
-
class
magnumfe.
LLGAlougesProject
(terms=[], region='magnetic')¶ Solver for the Landau-Lifshitz-Gilbert equation according to Alouges [Alouges2008]. In this two-step algorithm \(\partial_t \vec{m} = \vec{v}\) is computed as
\[\int_\Omega ( \alpha \vec{v} + \vec{m} \times \vec{v}) \cdot \vec{w} \dx + \frac{2 A_\text{ex} \gamma}{\mu_0 M_\text{s}} \int_\Omega \nabla (\vec{m} + \frac{1}{2} k \vec{v}) \cdot \nabla \vec{w} \dx + \gamma \int_\Omega \vec{H}_\text{eff} \cdot \vec{w} \dx = 0 \quad \forall \quad \vec{w} \in T_{\vec{m}}\]where both the trial and test functions are restricted to \(T_{\vec{m}}\) which is the tangent space of \(\vec{m}\) [Abert2013b]. As suggested in [Goldenits2012] the exchange field is integrated implicitly whereas all other contributions to the effective field \(\vec{H}_\text{eff}\) are integrated explicitly. This class implements the tangent-space restriction through a projection method
\[(\mat{I} - \mat{B}^T \mat{B}) \mat{A} \vec{v} = (\mat{I} - \mat{B}^T \mat{B}) \vec{b}\]where \(\mat{A}\) and \(\vec{b}\) are the discretized bilinear and linear part of the weak formulation above and \(\mat{B}\) is a matrix that delivers the node-wise scalar product with \(\vec{m}\) if applied to a vector field (e.g. \(\vec{v}\)).
The integration step itself is performed by application of a node-wise renormalization as proposed by Alouges in [Alouges2008]:
\[\vec{m}_i(t+k) = \frac{\vec{m}_i(t) + k \vec{v}_i}{|\vec{m}_i(t) + k \vec{v}_i|}\]- Arguments
- terms (
LLGTerm
) - Effective Field terms to be considered.
- region (
string
) - The region where the LLG is solved, defaults to ‘magnetic’
- terms (
LLGAlougesLagrange
¶
-
class
magnumfe.
LLGAlougesLagrange
(terms=[], region='magnetic')¶ Solver for the Landau-Lifshitz-Gilbert equation according to Alouges [Alouges2008]. In this two-step algorithm \(\partial_t \vec{m} = \vec{v}\) is computed as
\[\int_\Omega ( \alpha \vec{v} + \vec{m} \times \vec{v}) \cdot \vec{w} \dx + \frac{2 A_\text{ex} \gamma}{\mu_0 M_\text{s}} \int_\Omega \nabla (\vec{m} + \frac{1}{2} k \vec{v}) \cdot \nabla \vec{w} \dx + \gamma \int_\Omega \vec{H}_\text{eff} \cdot \vec{w} \dx = 0 \quad \forall \quad \vec{w} \in T_{\vec{m}}\]where both the trial and test functions are restricted to \(T_{\vec{m}}\) which is the tangent space of \(\vec{m}\) [Abert2013b]. As suggested in [Goldenits2012] the exchange field is integrated implicitly whereas all other contributions to the effective field \(\vec{H}_\text{eff}\) are integrated explicitly. This class implements the tangent-space restriction through a Lagrange multiplier ansatz as proposed in [Goldenits2012].
\[\begin{split}\begin{pmatrix} \mat{A} & \mat{B} \\ \mat{B}^T & 0 \end{pmatrix} \begin{pmatrix} \vec{v} \\ \lambda \end{pmatrix} = \begin{pmatrix} \vec{b} \\ 0 \end{pmatrix}\end{split}\]where \(\mat{A}\) and \(\vec{b}\) are the discretized bilinear and linear part of the weak formulation above and \(\mat{B}\) is a matrix that delivers the node-wise scalar product with \(\vec{m}\) if applied to a vector field (e.g. \(\vec{v}\)).
The integration step itself is performed by application of a node-wise renormalization as proposed by Alouges in [1]:
\[\vec{m}_i(t+k) = \frac{\vec{m}_i(t) + k \vec{v}_i}{|\vec{m}_i(t) + k \vec{v}_i|}\]- Arguments
- terms (
LLGTerm
) - Effective Field terms to be considered.
- region (
string
) - The region where the LLG is solved, defaults to ‘magnetic’
- terms (
LLGStochastic
¶
-
class
magnumfe.
LLGStochastic
(terms=[], region='magnetic', normtol=0.005, seed=None)¶ Solver for the Landau-Lifshitz-Gilbert equation using semi-implicit integrator suitable for stochastic integration. The right-hand-side of the LLG is evaluated nodewise.
Stochastic LLG equation:
\[\partial_t \vec{m} = - \frac{\gamma}{1+\alpha^2} \vec{m} \times \left( \vec{h}_\text{eff} + \vec{h}_\text{th}\right) + \frac{\alpha \gamma}{1+\alpha^2} \vec{m} \times \vec{m} \times \left( \vec{h}_\text{eff} + \vec{h}_\text{th} \right)\]where the fluctuating magnetic fields \(\vec{h}_\text{th}\) are uncorrelated Gaussian white noises interpreted in the sense of Stratonovich and
\[\begin{split}\langle \vec{h}_\text{th}^{i,l}(t) \rangle &= 0 \\ \langle \vec{h}_\text{th}^{i,m}(t) \; \vec{h}_\text{th}^{j,n}(t_0) \rangle &= 2D \; \delta_{ij} \; \delta_{mn} \; \delta(t-t_0)\end{split}\]with \(D=\frac{\alpha \, k_b \, T}{\gamma \, \mu_0 \, m_s \, V}\), \(i,j = 1, \dots, N\) and \(m,n \in {x,y,z}\). Integration of the thermal field over a timeinterval \(\Delta t\) leads to a fluctuating field \(\Delta W\), with the following properties:
\[\begin{split}\langle \Delta W^{i,m}(t) \rangle &= 0 \\ \langle \Delta W^{i,m}(t) \; \Delta W^{j,n}(t_0) \rangle &= 2D \; \delta_{ij} \; \delta_{mn} \; \delta(t-t_0) \; \Delta t\end{split}\]Using a normally distributed random variable with zero mean and unit variance \(\eta\) allows to write \(\Delta W = \sqrt{2 \, D \, \Delta t} \, \eta\)
The stochastic PDE is often split into a deterministic and a stochastic part in order to distinguish the different temporal scaling of the contributing fields:
\[\begin{split}\Delta \vec{m} &= A(\vec{m}, t) \; \Delta t + B_k(\vec{m}, t) \; \Delta W_k \\ &= A(\vec{m}, t) \; \Delta t + B_k(\vec{m}, t) \; \sqrt{2 \, D \, \Delta t} \; \eta_k\end{split}\]Due to the stochastic nature of the thermal field the second term contributes only with \(\sqrt{\Delta t}\) to the change in the magnetization, thereas the deterministic term contributes with \(\Delta t\). This discrepancy can be hided by moving the different scaling into the thermal field.
Finally the semiimplicit integration method reads as follows:
\[\begin{split}\partial_t \vec{m} &= \left[ A(\vec{m}, t) + B_k(\vec{m}, t) \; \sqrt{\frac{2 \, D}{\Delta t}} \; \eta_k \right] \\ \vec{m}^0_{t+\Delta t/2} &= \vec{m}_{t} + \frac{\vec{m}_{t}-\vec{m}_{t-\Delta t}}{2} \\ \vec{m}^p_{t+\Delta t/2} &= \vec{m}_{t} + \partial_t \vec{m} \left(\vec{m}^{p-1}_{t+\Delta t/2} \; , \; t + \Delta t / 2\right) \; \frac{\Delta t}{2} \\ \vec{m}_{t+\Delta t} &= \vec{m}_{t} + \partial_t \vec{m} \left(\vec{m}^p_{t+\Delta t/2} \; , \; t + \Delta t / 2\right) \; \Delta t\end{split}\]where \(p\) is the index of the fixpoint iteration, used to solve the implicit (and nonlinear) equation.
- Arguments
- terms (
LLGTerm
) - Effective Field terms to be considered.
- region (
string
) - The region where the LLG is solved, defaults to ‘magnetic’
- normtol (
float
) - Threshold for the renormalization of the magnetization
- seed (
int
) - Seed for the random number generator (defaults to ‘None’ for random seed)
- terms (
[Brown1963] | Brown Jr, W. F. Micromagnetics, 1963. Interscience, New York. |
[Suess2002] | Suess, D., Tsiantos, V., Schrefl, T., Fidler, J., Scholz, W., Forster, H., ... & Miles, J. J. (2002). Time resolved micromagnetics using a preconditioned time integration method. Journal of Magnetism and Magnetic Materials, 248(2), 298-311. |
[Alouges2008] | (1, 2, 3) Alouges, F. (2008). A new finite element scheme for Landau-Lifchitz equations. Discrete Contin. Dyn. Syst. Ser. S, 1(2), 187-196. |
[Abert2013b] | (1, 2) Abert, C., Exl, L., Bruckner, F., Drews, A., & Suess, D. (2013). magnum. fe: A micromagnetic finite-element simulation code based on FEniCS. Journal of Magnetism and Magnetic Materials, 345, 29-35. |
[Goldenits2012] | (1, 2, 3) Goldenits, P., Hrkac, G., Praetorius, D., & Suess, D. (2012, February). An effective integrator for the Landau-Lifshitz-Gilbert equation. In Proceedings of Mathmod 2012 Conference. |