Magnon Band Structure and Density of States: Theory

For usage instructions and command-line interface, see [Magnon Band Structure](magnon_band.rst).

This document describes the theoretical background for calculating magnon band structures and density of states (DOS) from exchange parameters computed by TB2J.

Introduction

Magnons are quantized spin waves in magnetic materials. Understanding magnon dispersions is essential for:

  • Predicting thermodynamic properties (magnetization, specific heat)

  • Analyzing magnetic stability and phase transitions

  • Designing spintronic devices

  • Interpreting neutron scattering experiments

TB2J calculates magnon properties from first-principles-derived exchange parameters using linear spin wave theory (LSWT).

Heisenberg Model

General Spin Hamiltonian

The magnetic interactions in a crystal are described by a generalized Heisenberg Hamiltonian:

$$ \mathcal{H} = -\sum_{i,j,\mathbf{R}} \mathbf{S}i \cdot \mathbf{J}{ij}(\mathbf{R}) \cdot \mathbf{S}_j(\mathbf{R}) $$

where:

  • $i, j$ index magnetic atoms in the unit cell

  • $\mathbf{R}$ is the lattice vector connecting unit cells

  • $\mathbf{S}_i$ is the spin operator at site $i$

  • $\mathbf{J}_{ij}(\mathbf{R})$ is the $3\times3$ exchange tensor

Exchange Tensor Components

The exchange tensor can be decomposed into:

$$ \mathbf{J}{ij} = J{ij}^{\text{iso}} \mathbf{I} + \mathbf{J}{ij}^{\text{sym}} + \mathbf{D}{ij} \times $$

where:

  • $J_{ij}^{\text{iso}}$: Isotropic (Heisenberg) exchange

  • $\mathbf{J}_{ij}^{\text{sym}}$: Symmetric anisotropic exchange (traceless)

  • $\mathbf{D}_{ij}$: Dzyaloshinskii-Moriya interaction (DMI) vector

In component form:

$$ J_{ij}^{\alpha\beta} = J_{ij}^{\text{iso}}\delta_{\alpha\beta} + J_{ij}^{\text{sym},\alpha\beta} + \epsilon_{\alpha\beta\gamma} D_{ij}^\gamma $$

Single-Ion Anisotropy

For on-site terms ($i=j$, $\mathbf{R}=0$), single-ion anisotropy (SIA) contributes:

$$ \mathcal{H}_{\text{SIA}} = -\sum_i \mathbf{S}_i \cdot \mathbf{A}_i \cdot \mathbf{S}_i $$

where $\mathbf{A}_i$ is the anisotropy tensor.

Fourier Transform to Reciprocal Space

Exchange in q-Space

The real-space exchange tensors are transformed to reciprocal space:

$$ \mathbf{J}{ij}(\mathbf{q}) = \sum{\mathbf{R}} \mathbf{J}_{ij}(\mathbf{R}) e^{i\mathbf{q}\cdot\mathbf{R}} $$

This is implemented in Magnon.Jq() (see TB2J/magnon/magnon3.py):

for iR, R in enumerate(Rlist):
    for iqpt, qpt in enumerate(kpoints):
        phase = 2 * np.pi * R @ qpt
        Jq[iqpt] += np.exp(1j * phase) * JRprime[iR]

Non-collinear Magnetic Structures

For helimagnetic or spin-spiral systems with propagation vector $\mathbf{Q}$, each exchange tensor is rotated before the Fourier transform:

$$ \mathbf{J}’_{mn}(\mathbf{R}) = \mathbf{R}m(\phi)^T \mathbf{J}{mn}(\mathbf{R}) \mathbf{R}_n(\phi) $$

where $\phi = 2\pi \mathbf{R}\cdot\mathbf{Q}$ and $\mathbf{R}(\phi)$ is the rotation matrix.

Magnon Hamiltonian Construction

Local Reference Frame

For each magnetic atom, we define a local coordinate system where the $z’$-axis aligns with the spin direction. The rotation from global to local frame is characterized by:

$$ U_i = R_{i,x’} + iR_{i,y’}, \quad V_i = R_{i,z’} $$

where $\mathbf{R}_i$ is the rotation matrix for site $i$.

Holstein-Primakoff Transformation

In linear spin wave theory, spin operators are expressed in terms of bosonic creation/annihilation operators:

$$ S_i^+ \approx \sqrt{2S_i} a_i, \quad S_i^- \approx \sqrt{2S_i} a_i^\dagger, \quad S_i^z = S_i - a_i^\dagger a_i $$

Dynamical Matrix

The magnon Hamiltonian in the local frame takes the form:

$$ \mathcal{H} = \frac{1}{2}\sum_{\mathbf{q}} \begin{pmatrix} \mathbf{a}\mathbf{q}^\dagger & \mathbf{a}{-\mathbf{q}} \end{pmatrix} \mathbf{H}(\mathbf{q}) \begin{pmatrix} \mathbf{a}\mathbf{q} \ \mathbf{a}{-\mathbf{q}}^\dagger \end{pmatrix} $$

where $\mathbf{a}_\mathbf{q}$ is a vector of bosonic operators for all $N$ magnetic atoms.

The dynamical matrix has the block structure:

$$ \mathbf{H}(\mathbf{q}) = \begin{pmatrix} \mathbf{A}(\mathbf{q}) & \mathbf{B}(\mathbf{q}) \ \mathbf{B}^(\mathbf{-q}) & \mathbf{A}^(\mathbf{-q}) \end{pmatrix} $$

Matrix Elements

The matrix elements are computed from the exchange tensors:

$$ A_{ij}(\mathbf{q}) = \sqrt{S_i S_j} \left[ \sum_k V_k^T \mathbf{J}{ik}(\mathbf{0}) V_k S_k \delta{ij} - U_i^* \mathbf{J}_{ij}(\mathbf{q}) U_j \right] $$

$$ B_{ij}(\mathbf{q}) = -\sqrt{S_i S_j} , U_i \mathbf{J}_{ij}(\mathbf{q}) U_j $$

This is implemented in Magnon.Hq():

A1 = np.einsum("ix,kijxy,jy->kij", U, Jq, U.conj())
B = np.einsum("ix,kijxy,jy->kij", U, Jq, U)
C = np.diag(np.einsum("ix,ijxy,jy,j->i", V, 2*J0, V, self.Snorm))
H = np.block([[A1 - C, B], [B.swapaxes(-1,-2).conj(), A2 - C]])

Band Structure Calculation

Bogoliubov Transformation

The magnon eigenfrequencies are obtained by diagonalizing the Hamiltonian with the bosonic metric:

$$ \mathbf{g} = \begin{pmatrix} \mathbf{I}_N & 0 \ 0 & -\mathbf{I}_N \end{pmatrix} $$

Using Cholesky decomposition $\mathbf{H} = \mathbf{K}^\dagger \mathbf{K}$, we solve:

$$ \mathbf{K}^\dagger \mathbf{g} \mathbf{K} \mathbf{v} = \omega \mathbf{v} $$

The positive eigenvalues give the magnon energies:

K = np.linalg.cholesky(H)
g = np.block([[1*I, 0*I], [0*I, -1*I]])
energies = np.linalg.eigvalsh(K.T.conj() @ g @ K)[:, n:]

Goldstone Mode

For ferromagnetic systems, the magnon energy at $\mathbf{q}=0$ should be zero (Goldstone mode). Deviations indicate:

  1. Insufficient exchange parameter convergence

  2. Incorrect magnetic ground state

  3. Missing long-range interactions

k-Path Selection

Band structures are calculated along high-symmetry paths in the Brillouin zone. TB2J supports:

  1. Automatic path detection: Based on crystal symmetry (default)

  2. Manual specification: Using string notation (e.g., “GXMR”)

# Automatic
xlist, kptlist, Xs, knames, spk = auto_kpath(cell, None, npoints=300)

# Manual
bandpath = cell.bandpath(path="GXMR", npoints=300)

Density of States Calculation

Definition

The magnon DOS is defined as:

$$ g(\omega) = \frac{1}{N_k} \sum_{\mathbf{k},n} \delta(\omega - \omega_{n\mathbf{k}}) $$

where $\omega_{n\mathbf{k}}$ is the energy of magnon band $n$ at wavevector $\mathbf{k}$.

Gaussian Smearing

In practice, the delta function is approximated by a Gaussian:

$$ g(\omega) = \frac{1}{N_k} \sum_{\mathbf{k},n} \frac{1}{\sqrt{2\pi}\sigma} \exp\left(-\frac{(\omega - \omega_{n\mathbf{k}})^2}{2\sigma^2}\right) $$

where $\sigma$ is the smearing width (typically 0.001 eV ≈ 0.08 meV).

k-Mesh Sampling

DOS calculations require dense k-mesh sampling:

kpts = monkhorst_pack([20, 20, 20], gamma_center=True)

The gamma-centered mesh ensures better convergence for magnetic systems.

Implementation

from TB2J.magnon.magnon_dos import MagnonDOSCalculator

calculator = MagnonDOSCalculator(magnon)
calculator.set_kmesh(kmesh=[20, 20, 20], gamma=True)
dos = calculator.get_dos(width=0.001, window=None, npts=401)

Energy Units

TB2J uses consistent energy units:

| Quantity | Internal Unit | Output Unit | |———-|—————|————-| | Exchange parameters | eV | meV | | Magnon energies | eV | meV | | DOS energy axis | eV | meV | | DOS values | states/eV | states/meV |

The conversion factors are applied during plotting:

energies_meV = energies_eV * 1000
dos_states_per_meV = dos_states_per_eV / 1000

Validation and Quality Checks

Positive Definiteness

The Hamiltonian should be positive semi-definite at all q-points. If not:

try:
    K = np.linalg.cholesky(H)
except np.linalg.LinAlgError:
    min_eig = np.min(np.linalg.eigvalsh(H))
    warn(f"WARNING: The system may be far from the magnetic ground-state. "
         f"Minimum eigenvalue: {min_eig}")

Stability Indicators

  1. Zero Goldstone mode: Expected for ferromagnets

  2. No negative energies: Indicates ground state stability

  3. Smooth band dispersion: Validates k-path continuity

Spin Quantization

In linear spin wave theory, the spin quantum number $S = n/2$ ($n = 1, 2, 3, …$). TB2J uses magnetic moment values in units of $\mu_B$ (Bohr magneton). The input moment corresponds to $2S,\mu_B$, so $S=3/2$ requires $3,\mu_B$.

DFT calculations typically give moments that deviate slightly from these values (e.g., $\sim 3.1,\mu_B$ instead of $3,\mu_B$ for Cr³⁺). While the DFT value is accurate for exchange calculations, using $2S,\mu_B$ values in magnon calculations ensures internal consistency with the bosonic Holstein-Primakoff transformation.

You can specify custom moments via --spin-conf or TOML spin_conf (see Magnon Band Structure for usage).

References

  1. Toth, S. & Lake, B. Linear spin wave theory for single-Q incommensurate magnetic structures. J. Phys.: Condens. Matter 27, 166002 (2015).

  2. Colpa, J. H. P. Diagonalizing the quadratic boson Hamiltonian with a generalized Bogoliubov transformation. Physica A 134, 417-442 (1986).

  3. Mankovsky, S. & Ebert, H. Magnetic exchange interactions and magnon dispersion in multilayer systems from first principles. Phys. Rev. B 94, 144424 (2016).

See Also