Core equations

Fidimag can simulate systems using either a discrete spin formalism or a continuum approximation of the material, i.e. micromagnetism. Spins are described at a semi-classical level.

  • Atomistic

    We describe the material by a lattice of magnetic moments \(\vec{\mu}_i=\mu_{s}\vec{S}_{i}\), with \(\vec{S}\) as the spin direction (unit vector). The ordering of the atoms or molecules is given by the crystal structure of the magnetic solid. Currently, it is possible to specify a 2D/3D square lattice or a 2D hexagonal lattice. The magnetic moment is defined as \(\mu_{s}=g \mu_{B} S\), where g is the Landé g-factor, \(\mu_{B}\) is the Bohr magneton and \(S\) is the average spin (angular momentum) magnitude.

    Interactions between magnetic moments are specified using the Heisenberg formalism.

  • Micromagnetics

    In the continuum limit, we discretise the material as a mesh whose nodes are arranged in a cubic lattice and we use finite differences to evaluate the interactions. Instead of discrete spins, now we have a coordinate dependent magnetisation field whose magnitude is the magnetic moment per unit volume \(\vec{M}(\vec{r})=\mu_{s}\vec{m}/V\) (\(\vec{m}\) as a unit vector). Accordingly, every mesh node has assigned a magnetisation vector, which is the magnetisation field evaluated at that point. Because we are considering systems at zero temperature, it is more common to use the saturation magnetisation \(M_{s}\) to describe the magnetisation field magnitude, i.e. \(\vec{M}=M_{s}\vec{m}\), where \(M_{s}\) has units of A/m.

    The interactions under this approximation can be computed by taking the continuum limit of the interactions from the Heisenberg Hamiltonian.


At the atomic level, the magnetic moment originates from the total angular momentum of electrons in the atoms of the magnetic material. In ferromagnets, most of the angular momentum comes from the spin, thus we normally just refer to this quantity. There are multiple interactions between electrons that we can describe using a semi-classical approximation, where the spin is treated as a pseudo vector per every lattice site of the material. In this approximation, magnetic interactions can be described using Heisenberg’s formalism for the exchange interaction. The total Hamiltonian for a magnetic system is the sum of all these magnetic interactions:

\[\mathcal{H} = \mathcal{H}_{\text{ex}} + \mathcal{H}_{\text{an}} + \mathcal{H}_{\text{d}} + \mathcal{H}_{\text{DMI}} + \mathcal{H}_{\text{Zeeman}}\]

where we have exchange, anisotropy, dipolar interactions, Dzyaloshinskii-Moriya interactions and Zeeman interaction.

Exchange interaction

The classical Heisenberg Hamiltonian with the nearest-neighbor exchange interaction reads

\[\mathcal{H}_{ex} = -J \sum_{<i,j>}\vec{S}_i \cdot \vec{S}_j\]

where the summation is performed only once for every pair of spins. The effective field is

\[\vec{H}_{i,ex} = \frac{J}{\mu_s} \sum_{<i,j>} \vec{S}_j\]

In the continuum limit the exchange energy can be written as

\[E_{ex} = \int_{V} A (\nabla \vec{m})^2 dx\]

with \(V\) as the volume of the system and \(A\) the anisotropy constant in \(\text{J m}^{-1}\). Correspondingly, the effective field is

\[\vec{H} = \frac{2 A}{\mu_0 M_s} \nabla^2 \vec{m}\]

The effective field in the continuum approximation can be computed as

\[J_x = 2A \frac{\Delta y \Delta z}{\Delta x}\]

Note that we need the \(\mu_0\) factor to convert units from T to A/m.


The Hamiltonian for uniaxial anisotropy with easy axis along the unitary \(\hat{u}\) direction is expressed as,

\[\mathcal{H}_{\text{an}} = - \mathcal{K}_{u} \sum_i \left(\vec{S}_{i}\cdot\hat{u}\right)^2\]

with \(\mathcal{K}_{u}\) as the anisotropy constant in eV. The corresponding field is

\[\vec{H}_{i,\text{an}} = \frac{2 \mathcal{K}_{u}}{\mu_s} \left(\vec{S}_{i}\cdot\hat{u}\right)\hat{u}\]

The Hamiltonian for the cubic anisotropy is given by

\[\mathcal{H}_{\text{an}}^c = \mathcal{K}_{c} \sum_i (S_x^4+S_y^4+S_z^4)\]

which is equivalent to the popular form

\[\mathcal{H}_{\text{an}}^c = -2 \mathcal{K}_{c} \sum_i (S_x^2 S_y^2 + S_y^2 S_z^2 + S_z^2 S_x^2)\]

The effective fields thus can be computed as

\[\vec{H}_{i,\text{an}}^c = -\frac{4 \mathcal{K}_{c}}{\mu_s} \left ( S_x^3 \hat{x} + S_y^3 \hat{y} + S_z^3 \hat{z} \right)\]

In micromagnetics, the uniaxial anisotropy energy of the system is defined as

\[E_{anis} = \int_{V} K_{u} [ 1 - (\vec{m} \cdot \hat{u})^2 ]\, dV\]

with \(K_{u}\) as the anisotropy constant in \(\text{J m}^{-3}\). The effective field reads

\[\vec{H}=\frac{2 K_{u}}{\mu_0 M_s} \left(\vec{m} \cdot \hat{u}\right) \hat{u}\]

Dipolar interaction

The Hamiltonian for dipolar interactions is defined as

\[\mathcal{H}_{d}=-\frac{\mu_0 \mu_{s}^{2}}{4\pi} \sum_{i<j} \frac{3 (\vec{S}_i\cdot \hat{r}_{ij})(\vec{S}_j\cdot \hat{r}_{ij}) - \vec{S}_i \cdot \vec{S}_j}{\vec{r}_{ij}^3}\]

with \(\vec{r}_{ij}\) the spatial vector pointing from the \(i\)-th to the \(j\)-th lattice site. The effective field is

\[\vec{H}_{i,d} =\frac{\mu_0 \mu_{s}}{4\pi}\sum_{i \neq j}\frac{3 \hat{r}_{ij} (\vec{S}_j\cdot \hat{r}_{ij}) - \vec{S}_j}{\vec{r}_{ij}^3}\]

Dzyaloshinskii-Moriya interaction (DMI)

DMI is an antisymmetric, anisotropic exchange coupling between spins (magnetic moments),

\[\mathcal{H}_{\text{DMI}}= \sum_{<i,j>} \vec{D}_{ij}\cdot [\vec{S}_i \times \vec{S}_j]\]

Noting that \(\vec{a}\cdot(\vec{b}\times\vec{c})=(\vec{a}\times\vec{b})\cdot\vec{c}\), the effective field can be computed as

\[\vec{H}_i = - \frac{1}{\mu_s} \frac{\partial \mathcal{H}}{\partial \vec{S}_i} = \frac{1}{\mu_s} \sum_{<i,j>} \vec{D}_{ij}\times\vec{S}_j\]

For bulk materials \(\vec{D}_{ij} = D \vec{r}_{ij}\) and for interfacial DMI one has \(\vec{D}_{ij} = D \vec{r}_{ij} \times \vec{e}_z\), in both cases the vector \(\vec{D}_{ij}\) such that \(\vec{D}_{ij}=-\vec{D}_{ji}\).

In the continuum limit the bulk DMI energy is written as

\[E_{dmi} = \int_\Omega D_a \vec{m} \cdot (\nabla \times \vec{m}) dx\]

where \(D_a = -D/a^2\) and the effective field is

\[\vec{H}=-\frac{2 D_a}{\mu_0 M_s} (\nabla \times \vec{m})\]

For the interfacial case, the effective field becomes,

\[\vec{H}=\frac{2 D}{M_s a^2} (\vec{e}_x \times \frac{\partial \vec{m}}{\partial y} - \vec{e}_y \times \frac{\partial \vec{m}}{\partial x} )\]

Compared with the effective field [PRB 88 184422]

\[\vec{H}=\frac{2 D_a}{\mu_0 M_s} ((\nabla \cdot \vec{m}) \vec{e}_z - \nabla m_z)\]

where \(D_a = D/a^2\). Notice that there is no negative sign for the interfacial case.

Zeeman energy

The Zeeman energy is,

\[\mathcal{H}_{\text{Zeeman}}= - \sum_{i} \mu_s \vec{H}_{ext}\cdot \vec{S}_i\]

Landau-Lifshitz-Gilbert (LLG) equation

  • Atomistic

For the discrete theory, the dynamics of the magnetic moments is governed by the LLG equation,

\[\frac{\partial \vec{S}_i}{\partial t} = -\frac{\gamma}{(1+\alpha^2)} \vec{S}_i \times (\vec{H}_i + \alpha \vec{S}_i \times \vec{H}_i) ]\]

where \(\vec{\mu}_s = |\vec{\mu}_i|\), \(0\leq\alpha\leq 1\) is the Gilbert damping constant, \(\gamma\) is the Gilbert gyromagnetic ratio (which sets the time scale) and the effective field \(\vec{H}_i\) is defined using the Hamiltonian \(\mathcal{H}\) as

\[\vec{H}_i = - \frac{1}{\mu_s} \frac{\partial \mathcal{H}}{\partial \vec{S}_i}.\]

The gyromagnetic ratio of a free electron is \(\gamma = 1.76\times10^{11}\,\text{rad Hz T}^{-1}\).

  • Micromagnetics

In the micromagnetic limit, the equation has a similar structure

\[\frac{\partial \vec{m}}{\partial t} = -\frac{\gamma}{(1+\alpha^2)} \vec{m} \times (\vec{H} + \alpha \vec{m} \times \vec{H}) ]\]

where \(0\leq\alpha\leq 1\) is the Gilbert damping constant and \(\gamma\) is the Gilbert gyromagnetic ratio (which sets the time scale). The effective field \(\vec{H}\) for this case is defined as

\[\vec{H} = - \frac{1}{\mu_{0}M_{s}} \frac{\partial \mathcal{H}}{\partial \vec{m}}.\]

The Gilbert gyromagnetic ratio of a free electron is \(\gamma = 2.21\times10^{5}\,\text{Hz T}^{-1}\).