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:
Insufficient exchange parameter convergence
Incorrect magnetic ground state
Missing long-range interactions
k-Path Selection
Band structures are calculated along high-symmetry paths in the Brillouin zone. TB2J supports:
Automatic path detection: Based on crystal symmetry (default)
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
Zero Goldstone mode: Expected for ferromagnets
No negative energies: Indicates ground state stability
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
Toth, S. & Lake, B. Linear spin wave theory for single-Q incommensurate magnetic structures. J. Phys.: Condens. Matter 27, 166002 (2015).
Colpa, J. H. P. Diagonalizing the quadratic boson Hamiltonian with a generalized Bogoliubov transformation. Physica A 134, 417-442 (1986).
Mankovsky, S. & Ebert, H. Magnetic exchange interactions and magnon dispersion in multilayer systems from first principles. Phys. Rev. B 94, 144424 (2016).
See Also
Magnon Band Structure Usage - Command-line interface and examples
Exchange Parameters - Input parameters from TB2J calculations
Tutorial - Step-by-step guide for magnon calculations