---
title: "MAE without the second SCF: the spin–orbit operator is geometry"
description: "The MAE route's nspin=4 SCF is replaced by two single steps on the collinear density; 17 structures agree to 0.03 MJ/m³, and the detour shows what the spin–orbit operator is made of."
url: "https://ouro.foundation/posts/mmoderwell/mae-without-the-second-scf-the-spin-orbit-operator-is-geometry"
id: "01a15f95-f37b-7aaa-8804-1958605af2ce"
type: "post"
---

# MAE without the second SCF: the spin–orbit operator is geometry

Post by @mmoderwell in #materials-science (all) · 2026-10-21

- Asset id: `01a15f95-f37b-7aaa-8804-1958605af2ce`
- Page: https://ouro.foundation/posts/mmoderwell/mae-without-the-second-scf-the-spin-orbit-operator-is-geometry

Our magnetic anisotropy route computes K₁ from the second-order spin–orbit band energy: two ABACUS Hamiltonians, H₀ without spin–orbit coupling and H₁ with it, and a sum over the Brillouin zone of |⟨a|H₁ − H₀|b⟩|² (f_a − f_b)/(ε_a − ε_b). Until today H₀ came from a second self-consistent run, nspin=4 at `soc_lambda 0`, on top of the collinear SCF the route already does for its geometry gate. That second SCF was most of the route's DFT time: 106 s on L1₀ FePt against 15 s for everything else, 711 s on a 108-basis Fe–W cell.

It isn't needed. Both Hamiltonians are functions of the density alone, and the nspin=4 SCF converges to the same density as the collinear one (total energies agree to 10⁻¹⁰ Ry). So the route now takes two single nspin=4 steps on the collinear density, at `soc_lambda` 0 and 1, and sums as before. Same physics, same cache, same response; results carry `h0_source: collinear_scf`.

## What the spin–orbit operator looks like

The detour that led here was a look at H₁ − H₀ itself across 141 cached MAE runs on 3d/4d/5d hosts. In the LCAO basis it is exactly what the pseudopotential says it should be:

- **On-site: ξ L·S per atom and l**, with ξ a per-element constant. Fe 3d 56.1 ± 0.15 meV across 134 jobs, Co 71.5, Pt 5d 518, W 285, Ta 225. The fit leaves 10⁻⁶–10⁻³ of the on-site norm, nothing in the s block, nothing between different l. No environment dependence at all: it is a table.
- **Off-site: two-center terms** from neighbor orbital tails at a heavy nucleus. Only 1% of ‖H₁ − H₀‖² for B/N/Al hosts and 5–7% for W/Ta, but the band sum is quadratic, so their cross term with the on-site part is first order in amplitude. Dropping them overshoots K₁ by 25% on FePt and by 1.5–3× on Fe–W and Fe–Ta, while 3d/sp hosts stay within 3%.

So the on-site table is a good approximation for 3d chemistry and a bad one for the 5d hosts we care most about, and the two-center part has to be computed. Since the whole operator is density-independent, that costs one single-step run, not an SCF.

## Validation

Route (nspin=4 SCF) against the new recipe on cached structures, sum on the route's own mesh and smearing. K is the out-of-plane anisotropy in MJ/m³.

| Host | basis functions | Route K | Fast K | Δ | nspin=4 SCF replaced (s) | two steps (s) |
| ---- | --------------- | ------- | ------ | --- | ------------------------ | ------------- |
| Fe–Pt | 54 | +13.274 | +13.258 | -0.016 | 106 | 12 |
| Fe–Pt | 54 | +13.918 | +13.935 | +0.017 | 91 | 16 |
| Fe–Ge | 79 | +0.190 | +0.190 | +0.001 | 153 | 20 |
| Fe–Ga | 106 | -0.847 | -0.849 | -0.002 | 103 | 18 |
| Fe–W | 108 | +2.431 | +2.430 | -0.000 | 711 | 37 |
| Fe–Mn–N | 121 | +0.201 | +0.227 | +0.026 | 68 | 11 |
| Fe–N | 121 | -1.046 | -1.070 | -0.023 | 55 | 16 |
| B–Fe | 134 | +0.191 | +0.199 | +0.008 | 222 | 36 |
| Fe–Mo | 135 | +0.164 | +0.158 | -0.006 | 261 | 62 |
| Fe–Sb | 158 | -0.299 | -0.301 | -0.002 | 41 | 17 |
| Fe–W | 162 | +0.278 | +0.266 | -0.012 | 131 | 22 |
| Fe–Y | 162 | -2.032 | -2.034 | -0.003 | 66 | 17 |
| Fe–Zr | 162 | +1.625 | +1.623 | -0.002 | 60 | 18 |
| Co–Fe–Ge | 185 | +0.335 | +0.340 | +0.004 | 59 | 22 |
| Al–Fe | 188 | -1.869 | -1.869 | +0.000 | 50 | 20 |
| Fe–Si–W | 202 | +1.044 | +1.039 | -0.005 | 139 | 29 |
| Fe–Sn | 212 | -1.510 | -1.507 | +0.002 | 58 | 23 |

17 structures: max |Δ| 0.026 MJ/m³, median |Δ| 0.004. Route times are the cached nspin=4 SCFs on the 16-core MAE worker; the steps ran on 8 cores.

Each step is one diagonalization pass, 5–30 s on 8 cores. The collinear SCF they read is the one the geometry gate already made, so it costs the route nothing extra.

## Limits

- **DFT+U** keeps the nspin=4 SCF: the collinear run's occupation matrix cannot seed the spinor one (`h0_source: nspin4_scf`).
- **Rare earths** are a limit of the theory, not the recipe. Second-order perturbation in spin–orbit coupling does not describe 4f shells.
- Lifting the nspin=2 Hamiltonian straight into spinor form, without the `soc_lambda 0` step, is cheaper still but not good enough: the scalar-relativistic parts of the two formalisms differ at the 10⁻³ level, which moves small-K cells by up to 0.1 MJ/m³.

## Why this matters beyond speed

H₀ is now a plain collinear Hamiltonian, which is what Hamiltonian-learning models (DeepH-style) are built to predict, and every cached collinear SCF that wrote H(R) is an anisotropy label for the price of two short steps. That is the path to a learned MAE screen that we could not get from public high-throughput datasets, where held-out-chemistry correlation never rose above 0.2.

> Embedded route: [Magnetic anisotropy energy](https://ouro.foundation/routes/mmoderwell/magnetic-anisotropy-energy)

## Assets in this post

- [Magnetic anisotropy energy](https://ouro.foundation/routes/mmoderwell/magnetic-anisotropy-energy) (route, id `331d9faf-4b44-4679-a958-5a9a816036e1`)
