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.
This is a follow-up to Ouro DFT on known magnets. Ouro DFT (ABACUS) has three changes that matter for magnet screening:
A new Curie temperature (Tc) route that runs classical Monte Carlo on the TB2J exchange couplings, instead of reporting only the mean-field upper bound.
Everything below was run on the deployed defaults (PBE, DZP, 100 Ry, -spacing ) unless marked otherwise.
Curie temperature (Tc) takes a CIF and returns:
Tc_K: the susceptibility peak of classical Heisenberg Monte Carlo, in a supercell twice as wide as the longest kept coupling. For antiferromagnets this is the Néel temperature.
Tc_mean_field_K: the mean-field upper bound.
the magnetization curve.
reference_ordering_overlap: whether the couplings favor the magnetic order the SCF started from. It is near 1 when they do and near 0 when they favor another order. Below 0.5 the response carries a warning, because the Tc then belongs to a different ordering.
It shares one cached calculation with Exchange couplings (TB2J). Whichever route runs second is nearly free: bcc Fe's Tc came back from the cache in 21 s.
Material | Measured (K) | Monte Carlo Tc (K) | Mean-field (K) | Overlap |
|---|---|---|---|---|
Fe bcc | 1043 | 1003 | 1254 |
Monte Carlo removes most of the mean-field overestimate: Fe lands within 4% of experiment. NiO is dominated by the 180° Ni–O–Ni superexchange between next-nearest neighbors. Plain PBE and PBE+U bracket the measured Néel temperature, so for oxides the Hubbard U moves by roughly ±30%. Pick U deliberately and compare candidates at the same U. The NiO seed came from the Magnetic ordering
FePt is a known limit, and the route now says so. L1â‚€ FePt's ferromagnetism is mediated by the moments induced on Pt. A rigid-spin Heisenberg model built from TB2J couplings favors antiferromagnetic stacking along whether Pt is included or not, as Mryasov et al. (2005) found. The overlap comes out 0, and the response warns that the Tc is not the ferromagnet's. This also means the 868 K mean-field FePt number in the July post, which looked close to experiment, was a coincidence. It came from couplings that don't support the ferromagnetic order.
The DZP orbitals are generated for 100 Ry. On the same relaxed L1â‚€ FePt lattice (, Ã…), the old default was not converged:
FePt L1â‚€ | 50 Ry (old default) | 100 Ry (new default) |
|---|---|---|
MAE (meV/f.u.) | 5.15 | 3.45 |
MAE (MJ/m³) | 28.9 | 19.3 |
3.45 meV/f.u. sits inside the GGA literature range (about 2.7–3.5). Experiment is about 1.3–1.4 meV/f.u.; GGA overestimating FePt's anisotropy is a known effect, not something specific to this route. Treat the MJ/m³ as a ranking quantity.
The cost: SCFs are about 1.6× slower, and results cached at 50 Ry won't be reused, because the cutoff is part of the cache key. You can still pass ecutwfc=50 for a quick first pass, but rank and don't quote MAE magnitudes at that cutoff.
The MAE route refuses cells that aren't DFT-relaxed. DFT structure relaxation now checks its own output with a fresh SCF on the relaxed cell. If that SCF would fail the MAE gate, it relaxes again, for up to 3 rounds. ABACUS keeps the starting FFT grid through a cell relax, so the stress it reports at the end can disagree with a fresh calculation on the final cell. FePt went from 78 to 0.35 kbar in one round, and MAE then accepted it without a separate check.
The gate allows 5 kbar, not relax's 0.5 kbar target, because a fresh SCF on a relaxed cell carries about 3 kbar of grid error at 100 Ry (18 kbar at 50 Ry).
One SCF instead of two or three on magnetic paths. The main SCF now also computes forces and stress, and for magnetic cells it saves the Hamiltonian and overlap matrices TB2J needs. Exchange and Tc no longer rerun the SCF, and the MAE gate reads forces off the cached SCF. Ground-state SCF reports max force and stress, so you can tell whether a cell is relaxed without running relax.
Ordering sweeps are cheaper. The parent job that only waits on the per-configuration SCFs now runs on 1 core instead of a full 8-core DFT worker.
Impossible requests fail immediately with a 400.
Rigid-spin magnets: when the Tc route warns about low overlap, trust MAE and for that material but not its Tc. FePt is the known case. Any magnet where induced moments carry the order is suspect.
Oxides: depends strongly on the Hubbard U, as the two NiO rows show.
For a candidate magnet:
DFT structure relaxation on your CIF.
Every route now defaults to a 100 Ry cutoff. At the old 50 Ry default, the FePt MAE came out 50% high.
The magnetic paths run fewer SCFs, and bad requests fail before any compute starts.
1.0
NiO AFM-II, PBE | 523 () | 596 | 795 | 1.0 |
NiO AFM-II, PBE+U ( eV, 50 Ry) | 523 () | 355 | 507 | 1.0 |
FePt L1₀ | ~750 | not reliable | — | 0 |
Hardness | 4.31 | 3.53 |
Easy axis | [001] | [001] |
MAE wall time (A100) | 3.6 min | 5.8 min |
magnetic_elementshubbard_uErrors carry codes an agent can act on: invalid_request, unrelaxed_structure, plus_u_unsupported, and scf_not_converged. The last one includes a suggested_retry with a smaller mixing_beta.
DOS and PDOS series come back as a JSON file with a compact summary, instead of large arrays in the response body.
Cost: cold runs for 2–4 atom cells took about 12 min for relax plus MAE (FePt), 17 min for Tc on bcc Fe, and 26 min for Tc on NiO. Repeats on the same structure and settings come from the cache.
Magnetic anisotropy energy and Curie temperature (Tc) on the relaxed CIF. Check reference_ordering_overlap before you use the Tc.