We shipped Ouro DFT (ABACUS), a general-purpose DFT property API with structure-keyed SCF caching. Electronic and magnetic endpoints share the same ground-state charge density, so SCF runs once and moments, MAE, DOS, and related properties reuse it.
This is a first sanity check for permanent-magnet screening: run the API on known magnets with ≤6 atoms/cell, compare predicted and MAE to literature, and see where the ranking holds.
Engine | ABACUS LCAO (PBE, DZP, Ry, |
Structures on this team:
from the moments route vs typical experimental room-temperature values:
Material | Atoms | Exp. (T) |
|---|
Ranking matches experiment: FeCo and Fe highest, MnBi lowest, FePt in between. Absolute is already usable for screening at these defaults.
TB2J MAE (hard − easy over {001,100,010}) vs literature uniaxial (cubic for Fe):
Material | Exp. (MJ/m³) | DFT MAE (MJ/m³) | Easy axis (DFT) | Exp. easy |
|---|---|---|---|---|
What holds:
Soft vs hard separation works. Fe / FeCo sit near zero; Co / MnBi / FePt are clearly anisotropic.
Co magnitude matches experiment (0.44 vs 0.45 MJ/m³), but the predicted easy axis is basal rather than .
FePt is correctly uniaxial along , with MAE about 2× experimental. Fine for ranking, not for absolute .
MnBi is in the right order of magnitude but prefers the basal plane here.
Hardness
TB2J exchange on the same collinear SCF, with mean-field
Material | Exp. (K) | MF |
|---|
Ranking matches the known magnets: FeCo and Fe highest, then Co, then MnBi / FePt. Absolute MF is high (especially Fe and FeCo), as expected for Heisenberg mean-field. Co and FePt are surprisingly close to experiment at these defaults.
This does not look like a simple reporting bug. Easy axis is , hard axis is , and MAE is hard − easy. FePt landing on ⟨001⟩ is a useful control: the direction labels and mapping are not systematically flipped.
The two mismatches have different explanations.
MnBi is expected at 0 K. Experiment is easy-plane below ~90 K and only becomes -axis after the spin reorientation (~90-140 K), driven largely by thermal expansion of . Fixed-cell DFT (and low- experiment) routinely prefer the basal plane. Comparing a 0 K MAE sign to room-temperature is the wrong comparison for MnBi, not evidence that the calculator inverted axes.
Co is the more interesting case. PBE/GGA usually gets -easy for hcp Co; LDA often flips the sign. We got the right magnitude with the wrong sign. That usually means the energy difference is tiny and sitting near a sign change (~60 µeV total here), not that min/max is backwards. Plausible contributors at these defaults:
coarse -mesh relative to how small the MAE is
DZP + modest cutoff vs denser PAW setups in the literature
fixed experimental (Co MAE sign is lattice-sensitive)
TB2J magnetic force theorem vs full SOC total-energy differences
So for screening: trust soft vs hard and FePt-like uniaxial ranking; treat absolute MJ/m³ and easy-axis sign as directional, especially for Mn-pnictides and for Co until we converge , cutoff, and (if needed) a total-energy SOC cross-check.
Moments:
Compute the converged total energy, total and site-projected magnetic moments (Mulliken), site charges, and saturation magnetization (A/m, T = μ₀ Ms, emu/cm³) when available. Returns a magCIF with atomsitemoment so the local moments can be visualized. Run FM- and AFM-seeded requests at identical settings to compare their total energies. Set soc_axis to include spin–orbit coupling and site orbital moments, which carry a large share of the moment in Co and rare-earth compounds.
Compute the converged total energy, total and site-projected magnetic moments (Mulliken), site charges, and saturation magnetization (A/m, T = μ₀ Ms, emu/cm³) when available. Returns a magCIF with atomsitemoment so the local moments can be visualized. Run FM- and AFM-seeded requests at identical settings to compare their total energies. Set soc_axis to include spin–orbit coupling and site orbital moments, which carry a large share of the moment in Co and rare-earth compounds.
Compute the converged total energy, total and site-projected magnetic moments (Mulliken), site charges, and saturation magnetization (A/m, T = μ₀ Ms, emu/cm³) when available. Returns a magCIF with atomsitemoment so the local moments can be visualized. Run FM- and AFM-seeded requests at identical settings to compare their total energies. Set soc_axis to include spin–orbit coupling and site orbital moments, which carry a large share of the moment in Co and rare-earth compounds.
Compute the converged total energy, total and site-projected magnetic moments (Mulliken), site charges, and saturation magnetization (A/m, T = μ₀ Ms, emu/cm³) when available. Returns a magCIF with atomsitemoment so the local moments can be visualized. Run FM- and AFM-seeded requests at identical settings to compare their total energies. Set soc_axis to include spin–orbit coupling and site orbital moments, which carry a large share of the moment in Co and rare-earth compounds.
Compute the converged total energy, total and site-projected magnetic moments (Mulliken), site charges, and saturation magnetization (A/m, T = μ₀ Ms, emu/cm³) when available. Returns a magCIF with atomsitemoment so the local moments can be visualized. Run FM- and AFM-seeded requests at identical settings to compare their total energies. Set soc_axis to include spin–orbit coupling and site orbital moments, which carry a large share of the moment in Co and rare-earth compounds.
MAE:
Estimate magnetic anisotropy energy (MAE) across magnetization directions. By default, rejects DFT-unrelaxed inputs (force/stress above threshold); run /dft/structure/relax first or set allow_unrelaxed=true. Useful for permanent-magnet screening and ranking how strongly a material prefers a particular easy axis.
Estimate magnetic anisotropy energy (MAE) across magnetization directions. By default, rejects DFT-unrelaxed inputs (force/stress above threshold); run /dft/structure/relax first or set allow_unrelaxed=true. Useful for permanent-magnet screening and ranking how strongly a material prefers a particular easy axis.
Estimate magnetic anisotropy energy (MAE) across magnetization directions. By default, rejects DFT-unrelaxed inputs (force/stress above threshold); run /dft/structure/relax first or set allow_unrelaxed=true. Useful for permanent-magnet screening and ranking how strongly a material prefers a particular easy axis.
Estimate magnetic anisotropy energy (MAE) across magnetization directions. By default, rejects DFT-unrelaxed inputs (force/stress above threshold); run /dft/structure/relax first or set allow_unrelaxed=true. Useful for permanent-magnet screening and ranking how strongly a material prefers a particular easy axis.
Estimate magnetic anisotropy energy (MAE) across magnetization directions. By default, rejects DFT-unrelaxed inputs (force/stress above threshold); run /dft/structure/relax first or set allow_unrelaxed=true. Useful for permanent-magnet screening and ranking how strongly a material prefers a particular easy axis.
Moments for : already good enough to rank candidates.
MAE for soft vs hard, and for confirming uniaxial -axis cases like FePt. Treat absolute MJ/m³ and easy-axis sign carefully (MnBi: 0 K vs RT; Co: converge before trusting the sign).
Exchange / mean-field
To try it: run a small CIF on Magnetic moments, then MAE
Moments | Magnetic moments (collinear SCF + Mulliken) |
MAE | Magnetic anisotropy energy (TB2J, warm-started from collinear charge) |
Exchange / | TB2J Jij from collinear SCF + mean-field (upper bound) |
Cells | All ≤ 6 atoms (primitive Fe is 1) |
FeCo B2 (2)
FePt L1₀ (2)
MnBi (4)
SmCo₅ (6), failed: no Sm Dojo NC-FR pseudopotential yet
DFT (T)
Δ |
|---|
Fe bcc | 1 | 2.15 | 2.32 | +8% |
Co hcp | 2 | 1.82 | 1.63 | −11% |
FeCo B2 | 2 | ~2.4 | 2.22 | −7% |
FePt L1₀ | 2 | ~1.4 | 1.40 | ~0% |
MnBi | 4 | 0.78-0.90 | 0.91 | within range |
Fe bcc
~0.05 () |
0.0002 |
~isotropic |
cubic soft |
FeCo B2 | ~0 | 0.003 | ~isotropic | cubic soft |
Co hcp | ~0.45 | 0.44 | ⟨100⟩ | ⟨001⟩ |
MnBi | 1.2-1.8 (RT) | 0.71 | ⟨100⟩ | ⟨001⟩ (RT) |
FePt L1₀ | 6-10 | 18.0 | ⟨001⟩ ✓ | ⟨001⟩ |
(meV) |
|---|
MF / exp |
|---|
Fe bcc | 1043 | 2151 | 278 | 2.1× |
Co hcp | 1388 | 1558 | 201 | 1.1× |
FeCo B2 | ~1250-1400 | 2253 | 291 | ~1.7× |
FePt L1₀ | ~750 | 868 | 112 | 1.2× |
MnBi | 630 | 892 | 115 | 1.4× |
SCF cache works: MAE warm-started from moments charge; exchange reused the same collinear SCF where available.
Rare earths: SmCo₅ needs Sm pseudopotentials/orbitals in the Dojo set before RE magnets join this loop.
ABACUS DFT (PBE/DZP) benchmark of five small-cell magnets: saturation magnetization and TB2J MAE against literature values.
Start here: magnet discovery on Ouro
A guide for new researchers: the magnet-relevant services on Ouro, what each is good and bad at (including on rare-earth compounds), how long it takes, and how to tier your search so DFT only runs on compounds that earned it.
Ouro DFT now predicts Curie temperatures, and MAE runs at a converged cutoff
A dedicated Tc route on Monte Carlo exchange, a 100 Ry default that fixes a 50% MAE overshoot, faster magnetic paths, and validation on Fe, NiO and FePt.
mCGCNN vs CHGNet: metals lose, oxides compete
Metals: CHGNet MAE 0.20 μB. Ligand oxides: mCGCNN competitive (wins SrRuO3/CrO2/EuO). Not a wrapper bug — domain mismatch.
Comprehensive RE-free permanent magnet candidate dataset compiled and published at 019f67f...