What ran

For each (potential, structure) the campaign relaxed the cell to the MLIP's own equilibrium (FrechetCellFilter + FIRE, to a force-convergence criterion of fmax = 1e-4 eV/Å on the maximum cell+ion generalized force; cells that reached it are flagged done, those that did not within the step cap are unconverged — the FC2 is still built on the near-minimum cell), then computed:

Coverage: 60 potentials were enqueued over the 834 structures; 58 produced ≥1 result (the headline set). 35,314 completed harmonic runs over 770 structures; 15,389 completed QHA fits. Completeness is now uniform: all 58 producing potentials ran the full 834 (counting error attempts) — the GRACE SMAX-family + gracelocal_* seeds, partial in earlier exports, were unblocked on dais (the model registry had been empty) and run to completion — leaving only 2 never-ran potentials (grace_2L-MPtrj, m3gnet_MP-2021.2.8-EFS; 834 queued each). An error row has no force constants and so no DOS; an un-run (potential, structure) pair likewise shows no spectrum for that pair.

The four leaderboard axes

There is no per-structure DFT phonon ground truth in the export, so accuracy is assessed four ways. Every metric is a median (or median-of-absolute), which is robust to the campaign's single-structure force-constant and EOS blow-ups (the raw mean ω_max and mean QHA error are not — see caveats).

Metric Definition Source field
ω-consensus MAE (headline) median |ω_max − the 58-potential consensus median ω_max for that structure| (THz). The cross-potential spread is the reference model: it separates conservative potentials from those that hallucinate soft acoustic branches. Ranks typicality, not correctness. omega_dev_thz
Imag-mode frac fraction of completed structures with an imaginary mode (done-only meanBool). Descriptive: a metastable polymorph should be unstable, so "lower" is only "better" on the ground-state facet. has_imaginary
QHA B vs DFT-K median |B_300K − DFT VRH K| (GPa), with the signed MBE. An order-of-magnitude anchor — a 300 K thermally-softened modulus against a 0 K static one — hence the expected negative bias. b_err_gpa
ω vs MP-DFT median |ω_max − Materials-Project DFT ω_max| (THz), where MP covers the structure (~half). A tagged real-ground-truth validation, not the headline. mp_omega_err_thz

The ground-state vs metastable split of the imaginary-mode fraction is the campaign's strongest sanity signal: 9 % of completed ground states carry imaginary modes vs 34 % of metastable polymorphs — the ensemble "knows" ground states are far more likely to be dynamically stable.

Materials-Project DFT-phonon overlay

The export ships no DFT phonon reference, but Materials Project hosts DFT phonons for 381 / 834 of the benchmark structures (48 / 88 ground states), spanning metals — far beyond the legacy semiconductor DFPT set. These are pulled by mp_id (tools/fetch_mp_phonon_reference.py, mp-api ≥ 0.46.4): 379 references, almost entirely the new PHEASY VASP finite-displacement set (PBE), plus a little legacy DFPT (PBEsol). ω_max and a dynamical-stability flag (same −0.1 THz threshold) are compared to each MLIP. Caveats: MP phonons are at MP's relaxed cell (we relax to each MLIP's V₀ — both are at-equilibrium ω_max, the standard comparison); PHEASY/PBE is a fair functional match, DFPT/PBEsol is softer (tagged). It is a validation overlay, never the headline.

Phonon DOS drill-in (expand a structure row)

The export stores force constants but no DOS curves ("derive on demand from FC2"). For the structures-table drill-in, the total phonon density of states is derived once from the FC2 archive — phonopy.loadrun_meshrun_total_dos() (tetrahedron) — for every completed (structure, potential), resampled onto a fixed shared grid (−2 → 50 THz, 1041 pts ⇒ 0.05 THz) and normalized to 3 states/atom. The mesh is a length-L=40 density mesh — coarser than the campaign's harmonic L=100 because a display DOS needs no more, and crucially length-based (not an explicit grid) so phonopy keeps full crystal symmetry and only diagonalises the irreducible q-points (fast + light; an explicit mesh disables symmetry and diagonalises the whole zone). Expanding a polymorph overlays the selected potential's DOS against the MP-DFT DOS (same grid, per-atom) where MP covers the structure; the imaginary (ω < 0) region is shaded. Coverage: the 2026-06-21 FC2 archive (47,213 files) covers all 58 potentials and all 89 elements — the GRACE potentials, previously blocked by an empty model registry on dais, were run to completion (+1,946 force-constant files over the 06-20 repack). Unconverged cells: a force constant is computed and shown even when the pre-relax did not reach the fmax = 1e-4 eV/Å target (status = unconverged); such rows carry a ⚠ chip with the achieved residual fmax (from achieved_fmax.parquet, recomputed through the same FrechetCellFilter), and the DOS panel warns that soft/imaginary modes may be spurious — ~81% of unconverged cells sit at fmax > 1e-3. Curves are delivered as per-element parquet shards loaded lazily (only the clicked element's shard), so the page stays light. The MLIP DOS is precomputed on the cluster (not in the browser): a DOS needs the dynamical-matrix diagonalization over a q-mesh — the FC2 and phonopy's machinery — so it is computed once and the ~3 KB curves shipped to the browser. The full ~66 GB force-constant archive is itself downloadable from the Data page for anyone who wants to recompute phonons/DOS offline — it is just not shipped for client-side recompute.

Phonon band structure

Band structures are derived from the same FC2 archive as the DOS — no new DFT or MLIP calculations are needed; every completed (structure, potential) automatically has a band path.

Two path conventions are generated once per structure from the input cell, so every potential lands on the same q-points for a consistent cross-potential comparison:

The two conventions pick different high-symmetry paths through the Brillouin zone for many space groups, which is why both are provided: Hinuma is the rigorous default; SC exists solely for the apples-to-apples DFT comparison.

Bands are evaluated by feeding each path's fractional q-coordinates directly into phonopy (run_qpoints) — no reciprocal-basis transform is applied (a transform corrupts the band branches; this was verified adversarially). An atom-count guard skips a (potential, convention) row when the potential's relaxed cell has a different atom count from the path's reference cell, preventing a silent mismatch.

The DOS is convention/path-independent. A phonon DOS is a Brillouin-zone integral over a 3-D mesh — its shape is determined by the zone geometry, not by the high-symmetry path chosen for the band plot. Switching the convention toggle changes only the band panel; the DOS and cumulative ∫DOS panels are unaffected.

The per-structure drill-in figure shows: the band plot (left) alongside the rotated DOS and cumulative ∫DOS (right, sharing the ω axis); a convention toggle (Hinuma ↔ SC; switching to SC activates the MP-DFT overlay and a note explaining the path choice); and a "⤢ Full DOS" expander for the familiar full-size DOS view. Band data are served per-structure from R2 (phonon/bands/{mp_id}.parquet, fetched at runtime) and are not bundled, so they do not count against Cloudflare's deployment file and size limits.

Coverage: bands are available for the 834 structures except a handful of pathological giant cells or spglib failures, documented honestly alongside the DOS error/unconverged cases.

Data-quality corrections (vs the raw export tables)

Status: run 2026-06-19; data last refreshed from the 2026-06-21 re-export (GRACE potentials completed — all 58 producing potentials now cover the full 834).

Provenance & verification (deep, code-cited) → /methodology/deep/phonon

See the leaderboard → · ← Methodology overview

Code

Finite-displacement harmonic phonons for one crystal (phonon_compute.py, branch dais-port of mlip-elemental-benchmark): pre-relax → FC2 → mesh/DOS/thermal.

from ase.build import bulk
from phonon_compute import compute_harmonic
calc = ...   # any ASE calculator for your MLIP (e.g. mace_mp(model="medium", device="cuda"))

res = compute_harmonic(bulk("Cu", "fcc", a=3.6, cubic=True), calc)
# res → phonon DOS, thermal F/S/Cv(T), and imaginary-mode (instability) stats