Corpus & reference

The 834 Materials-Project elemental structures. A DFT VRH reference (dft_k_vrh, dft_g_vrh) exists for ~37 % of them (those for which MP has an elastic tensor); the percent-error metrics are defined only on that subset.

Protocol (MP stress–strain)

  1. Reference relaxation — variable-cell (ExpCellFilter) BFGS to the MLIP's own equilibrium cell, fmax = 1e-2 eV/Å. The residual reference stress (eq_stress) is captured and subtracted in the fit.
  2. 24 deformations — 3 normal + 3 shear modes × 4 magnitudes: normal ±0.5 % and ±1 %, shear ±3 % and ±6 % (Green–Lagrange strains, the MP grid).
  3. Per-deformation stress — each strained cell is ion-relaxed at fixed cell, then its stress is read (tension-positive Cauchy, converted to GPa with ×160.21766208).
  4. FitElasticTensor.from_independent_strains (least squares, eq_stress subtracted, Voigt-symmetrised) → K/G (Voigt/Reuss/VRH), Young's modulus, Poisson ratio, universal anisotropy, and Born mechanical stability.

The effective optimiser step cap is 10 000 (a documented max_iterations=300 is shadowed by the engine default and never reached). mechanically_stable is the general positive-definite Born criterion (all stiffness eigenvalues > 1e-8 GPa); there is no cubic-specific branch. It is a property of the predicted tensor with no DFT comparand.

Metrics

Metric Definition
median_abs_k_pct median of |100·(K_MLIP − K_DFT)/K_DFT| over structures with a DFT reference — median of absolute %, because near-zero DFT moduli give heavy tails (default sort, ascending)
median_abs_g_pct same for the VRH shear modulus
frac_mech_stable fraction of structures the MLIP predicts Born-stable (MLIP-only; no DFT comparand)

Caveats

Use the With DFT ref facet for the comparison metrics and Predicted only to inspect structures without a comparand (where only mechanical stability is meaningful). On an errored re-run the database UPSERT can overwrite a previously-good row's physics columns with NULLs.

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

See the leaderboard → · ← Methodology overview

Code

Full stiffness tensor + moduli for one crystal (elastic_compute.py in mlip-elemental-benchmark, MP stress–strain protocol):

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

res = compute_elastic(bulk("Cu", "fcc", a=3.6, cubic=True), calc)
res["elastic_tensor"]        # 6×6 Cij (GPa)
res["k_vrh"], res["g_vrh"]   # bulk / shear moduli (GPa)
res["mechanically_stable"]   # Born-stability flag