Theoretical background ====================== Heisenberg Hamiltonian ---------------------- The sign convention used throughout the library is: .. math:: H = +\sum_{i \neq j} J_{ij}\, S_i \cdot S_j \qquad (\mathrm{AFM:}\ J > 0,\ \mathrm{FM:}\ J < 0) Four-state method ----------------- For a given dimer ``i,j``, four collinear spin configurations are built by freezing the **magnetic bath** (all other atoms): .. list-table:: :header-rows: 1 :widths: 10 20 20 50 * - Label - :math:`S_i` - :math:`S_j` - DFT energy (to be computed) * - ``uu`` - +S - +S - :math:`E_{uu}` * - ``dd`` - −S - −S - :math:`E_{dd}` * - ``ud`` - +S - −S - :math:`E_{ud}` * - ``du`` - −S - +S - :math:`E_{du}` Projecting onto :math:`H = +J_{ij}\, S_i \cdot S_j` gives: .. math:: J\,S^2 = \frac{E_{uu} + E_{dd} - E_{ud} - E_{du}}{4} A **supercell** is required so that the two atoms of the dimer are distinct sites (otherwise they would be periodic images of each other and their spins would be locked together). The :func:`mag4.dimers.find_dimers` function automatically diagnoses too-short axes and suggests the appropriate ``--supercell`` flag. The four-state divisor is generalised to :math:`4M` when the chosen dimer also couples to its own periodic images through the *same* shell (multiplicity :math:`M`); mag4's supercell search additionally enforces a **no-self-folding** rule — no coupling within the model may connect an atom to its own image, which would silently fold another shell into the extracted J. Energy-mapping method --------------------- Instead of a few targeted configurations per bond, *every* inequivalent collinear order of the supercell is enumerated and its DFT energy fitted to the exact Ising-projected model .. math:: E[\#u] = E_0 + \sum_k c_k^{(u)}\,(J_k S^2) + c^{(u)}_{\mathrm{ring}}\,(J_\mathrm{ring} S^4), \qquad c_k^{(u)} = \sum_{\langle ij \rangle \in k} s_i s_j, by linear least squares (one global solve; error bars, variance-inflation diagnostics, and indeterminate-column detection come free). The optional four-spin **ring exchange** column :math:`c_\mathrm{ring} = \sum_\square s_i s_j s_k s_l` (``--jring``) is essential for square-lattice cuprates, where :math:`J_\mathrm{ring} \approx 0.25\,J_1`. 16-state ring method -------------------- To isolate :math:`J_\mathrm{ring}` alone, the four atoms of **one** square plaquette are flipped over a fixed bath (:math:`2^4 = 16` states) and the energies contracted with the four-spin **parity** :math:`\chi = s_1 s_2 s_3 s_4` (mathematically, the Walsh character of the spin-flip group :math:`\mathbb{Z}_2^4`): .. math:: J_\mathrm{ring} S^4 = \frac{1}{16 M} \sum_{u=1}^{16} \chi_u\, E_u Parity (character) orthogonality cancels **every** term involving three or fewer plaquette spins — the constant, the bath fields, all pairwise bonds — for *any* fixed bath, so the projection is exact. The plaquette must be fully isolated (:math:`M = 1`); mag4 grows the supercell until it is. Symmetry reduction — the magnetic grey group -------------------------------------------- Configurations are deduplicated under the **magnetic (grey) group**: the unitary crystal operations *plus* each of them composed with time reversal :math:`T` (global spin flip), exact in collinear no-SOC DFT. Two configurations whose spin vectors are related by .. math:: \mathbf{s}^{(2)} = \pm\, \pi(\mathbf{s}^{(1)}) (:math:`\pi` a site permutation from a crystal operation; the minus sign is the antiunitary branch) have the **same energy**: only one is computed. On an antiferromagnetic reference the antiunitary branch does real work — e.g. the square-plaquette :math:`C_4` composed with :math:`T` — and the pairs it merges typically differ in total :math:`S_z`, so no unitary operation could relate them. ``--check-degeneracy`` keeps those pairs as separate DFT runs and ``mag4-extract`` verifies their degeneracy, a direct numerical test of the antiunitary symmetry. See :func:`mag4.spinconfig.find_unique_configs`. Every configuration is additionally classified into one of the 1651 **magnetic (Shubnikov) space groups** (BNS number and type, via spglib's magnetic dataset) with its magnetic point group — colourless :math:`G`, **grey** :math:`G1'` (every type-IV configuration), or black–white :math:`G(H)` in Shubnikov notation. Ring renormalisation of the couplings ------------------------------------- The four-state formulas contain no ring term, so a real :math:`J_\mathrm{ring}` biases the extracted bilinear J's — mag4's ``--jring``/``--jprime`` diagnostics print the leakage and a corrected-J formula. Conversely, at the harmonic (LSWT) level about the Néel state the cyclic four-spin operator reduces **exactly** to renormalised bilinear couplings (Coldea *et al.*, PRL **86**, 5377 (2001)); in mag4's native :math:`JS^2` units, per bond, .. math:: JS^2_\mathrm{edge} \to JS^2_\mathrm{edge} - 2\,J_\mathrm{ring}S^4, \qquad JS^2_\mathrm{diag} \to JS^2_\mathrm{diag} - 1\,J_\mathrm{ring}S^4, which ``mag4-magnon --jring`` applies (and documents) before computing the magnon spectrum and :math:`T_c`. Linear spin-wave theory ----------------------- For the multi-sublattice ordered phase, the reciprocal-space exchange matrix is: .. math:: J_{\alpha\beta}(\mathbf{q}) = \sum_{\text{bonds}(\alpha,\beta)} J_n\, \exp\bigl(i\, \mathbf{q} \cdot \mathbf{r}_{\alpha\beta}\bigr) The ordering wavevector is :math:`\mathbf{q}_0 = \arg\min_q \lambda_{\min}(J(q))` (Luttinger-Tisza approach). Magnon dispersion ~~~~~~~~~~~~~~~~~ .. math:: \omega_k(\mathbf{q}) = 2S\,\bigl[\lambda_k(J(\mathbf{q})) - \lambda_{\min}(\mathbf{q}_0)\bigr] The Goldstone mode (:math:`\omega = 0`) automatically lands at :math:`\mathbf{k} = \mathbf{q}_0`. Critical temperatures ~~~~~~~~~~~~~~~~~~~~~ Mean-field: .. math:: k_B T_c^{\mathrm{MF}} = -\frac{S+1}{3S}\, \lambda_{\min}(\mathbf{q}_0) Tyablikov RPA: .. math:: k_B T_c^{\mathrm{RPA}} = -\frac{S+1}{3S} \, \Bigl/\, \Bigl\langle \frac{1}{\lambda_{\min}(\mathbf{q}_0) - \lambda_{\min}(\mathbf{q})} \Bigr\rangle_{\mathbf{q} \neq \mathbf{q}_0} For :math:`\mathbf{q}_0 \approx \Gamma`, an exact LSWT-RPA acoustic-branch variant is used instead — see :func:`mag4.magnon.tc.compute_tc_lswt`. Honesty guards on :math:`T_c` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ An isotropic Heisenberg model cannot order at :math:`T > 0` in two or fewer dimensions (Mermin–Wagner). mag4 computes the dimensionality of the exchange network, where a coupling counts as zero **only when it is statistically unresolved from zero** (:math:`|JS^2| < 2\sigma` of its own fit error bar, or below the fit RMS) — physical smallness alone never excludes a coupling, since any genuinely finite interlayer J orders a quasi-2D magnet — and, when it is not 3D, states plainly that the printed temperatures are an energy scale of short-range correlations, not a Néel/Curie temperature. A related diagnostic reports ordering-vector components along dispersion-flat axes as *undetermined* rather than as spurious incommensurate modulations.