What ran
The /thermodynamics explorer surfaces the quasi-harmonic (QHA) and harmonic thermodynamic results computed during the phonon campaign — it adds no new calculations.
For each (potential, structure), after the cell relaxation (FrechetCellFilter + FIRE, to a
force-convergence criterion of fmax = 1e-4 eV/Å on the maximum cell+ion generalized force),
phonons are computed over an 11-volume strain grid (ε ∈ [−4 %, +6 %]); a Vinet EOS is fit
(dynamically-unstable volumes dropped), giving the temperature-dependent equilibrium volume V(T),
volumetric thermal expansion α(T), isothermal bulk modulus B(T), heat capacities Cv(T)/Cp(T),
and the Gibbs free energy G(P,T). The harmonic free energy F(T), entropy S(T) and zero-point
energy ZPE come from the equilibrium-volume phonons.
- Temperature grid: 0–1000 K, 101 points.
- Pressure grid: 0–10 GPa, 4 points — [0, 2, 5, 10] GPa.
- Pressure dependence is Gibbs-only: V, α, B, Cv, Cp and F/S are stored at 0 GPa (ambient);
only
gibbs_ptis pressure-resolved.
How to read it
There is no per-structure DFT ground truth for these thermodynamic quantities, so each panel shows a cross-potential consensus: the median curve + a spread band (IQR or min–max), both recomputed over the potentials you select. The only DFT anchor is the static K_VRH marked at 0 K on B(T) (0 K static vs a finite-T thermally-softened modulus — B(T) sits below the 0 K static K through thermal softening, so the static-K anchor lies above the band).
Consensus uses every potential with a usable QHA fit for that structure — both done (the full
11-volume EOS) and partial (an EOS fit from 4–10 volumes, after dynamically-unstable volumes were
dropped). Both yield valid temperature-dependent curves; only failed fits (≤ 3 usable volumes, no
curve) are excluded. The structures table shows the usable/total coverage (hover for the full-EOS
breakdown), and the explorer's Min EOS volumes control lets you tighten the fit-quality threshold —
11 keeps only done fits. This matters for soft/heavy elements (e.g. Au, Re, Te): few potentials
converge all 11 volumes there, so a done-only view would collapse to a handful while most produce a
perfectly usable partial fit.
See the Phonons & QHA methodology for the harmonic protocol, campaign completeness, and the cell-relaxation criterion in full detail.
See the explorer → · ← Methodology overview
Code
Quasi-harmonic thermodynamics for one crystal (same code as the phonon track, phonon_compute.compute_qha): volume sweep + phonopy QHA fit.
from ase.build import bulk
from phonon_compute import compute_qha
calc = ... # any ASE calculator for your MLIP (e.g. mace_mp(model="medium", device="cuda"))
res = compute_qha(bulk("Cu", "fcc", a=3.6, cubic=True), calc)
# res → V(T), thermal expansion α(T), bulk modulus B(T), Cp/Cv(T), Gibbs G(P,T)