Corpus & reference

116 distinct bulk structures appear in the results (88 flagged is_ground_state); low-index facets are generated per structure. The DFT reference is the MP / Crystalium PBE surface-energy table — 647 reference rows over 54 elements, one mp_id per element (a single prototype-per-element). Accuracy is scored on the 31,150 DFT-matched facets; predictions span 83 elements, but only 52 have any DFT match (31 predicted elements are unreferenced).

Protocol

The clean-surface energy is γ = (E_slab − N·µ_bulk) / (2A), where N is the slab atom count, µ_bulk the per-atom bulk energy, and A the surface area (the factor of 2 accounts for the two surfaces of a symmetric slab). Slabs are built with pymatgen SlabGenerator at MIN_SLAB = 30 Å and MIN_VACUUM = 10 Å, enumerating all symmetric & asymmetric terminations per Miller index.

Relaxation is ASE FIRE: the bulk relaxes cell + ions (FrechetCellFilter) to fmax = 1e-4 eV/Å; each slab relaxes fixed-cell, ions-only to fmax = 1e-3 eV/Å; MAX_STEPS = 500. Accuracy is scored on the minimum-γ converged termination per facet, matched to DFT on (element, miller_index).

Metrics

Metric Definition
surface_mae mean over DFT-matched facets of |γ_MLIP − γ_DFT| (J/m²), lower better — the headline / default sort
surface_rmse √mean(Δγ²) (J/m²) — heavy-tailed, ~1.5× the MAE
surface_mbe mean signed Δγ = γ_MLIP − γ_DFT (J/m²); negative = underprediction — near-universal, 54/57 models negative

MAE/RMSE/MBE are means (not medians), to match the source potential_summary rollup. Alongside them conv_pct = 100·done/(done+unconverged) is shown as a model-health signal — not an accuracy metric.

Caveats

(a) PBE single-source reference. The numbers measure agreement with PBE, not physical accuracy; PBE itself underestimates metal surface energies, which compounds the observed underprediction.

(b) Single prototype per element. One mp_id per element, 31 predicted elements unscored, and 24.8 % of predicted facets unreferenced.

(c) Termination mismatch. The min-γ-MLIP-termination vs DFT-termination mismatch is unquantified (the DFT table does not record its termination); the matched set is 99.8 % symmetric slabs.

(d) Convergence is material-driven. ~78 % of all unconverged rows come from 7 molecular non-metal solids (F₂, O₂, P, S, Se, N₂, C) that no model handles — so the headline conv_pct (~62 %) understates metal performance (~93 % once those are removed).

(e) Low-γ post-transition metals. Hg, Bi, Sb show large relative error that is a denominator artifact — judge them by absolute MAE.

See the leaderboard → · ← Methodology overview

Code

Clean-surface energy γ on a chosen facet — builds and relaxes the slab, then applies γ = (E_slab − N·µ_bulk)/(2A) (pyiron_workflow_atomistics.surface):

from pyiron_workflow.workflow import Workflow
from pyiron_workflow_atomistics.engine import ASEEngine, CalcInputStatic
from pyiron_workflow_atomistics.surface.surface_study import calculate_surface_energy
calc = ...   # any ASE calculator for your MLIP (e.g. mace_mp(model="medium", device="cuda"))

engine = ASEEngine(EngineInput=CalcInputStatic(), calculator=calc, working_directory=".")
out = calculate_surface_energy(Workflow("surface"), engine,
                               symbol="Cu", crystalstructure="fcc",
                               miller_indices=(1, 1, 1)).run()   # γ in J/m²