Practical Guide · D1

Build a Surface-Energy Ledger and Diagnose Bulk Drift

Use an attributed published Si-surface ledger alongside a synthetic bulk-drift diagnostic, without confusing three table values with a converged slab series.

View the facets and slab definitions before comparing values

Open each facet as a slab, view it from the side and along the surface normal, and identify termination, surface-cell area, layer count, fixed atoms, vacuum, and whether the two faces are equivalent. Read the source Methods or database record to determine the bulk reference and unit convention, then place those definitions beside the energy table. Use visual tools, structure and surface data, and literature sources.

Start with attributed public data: the first command audits three published silicon surface values. They are not a slab-thickness or vacuum-convergence series, so inspect their facet and method identities before comparing them. A separate synthetic bulk-drift exercise appears later and is not Si slab evidence.

Start by auditing the attributed InterMat ledger:

python3 examples/practical-guides/surface_ledger_intermat.py

This declared companion checks the frozen snapshot identity, SHA-256, licence, method label, orientation order, and the three reported Si surface-energy values. It reads and audits an existing public-data ledger. It does not launch a DFT executable, build a slab, or test slab convergence.

Inspect the parent objects

The snapshot records unreconstructed Si(111), Si(110), and Si(001) rows for JVASP-1002 from the open-access InterMat paper. It reports OptB88vdW surface energies of 1.60, 1.66, and 2.22 J m^-2. The NIST-hosted PDF remains the authority for the calculation and experimental context.

Check the source ID, facet, method, units, and state definition before comparing the three values. They are different orientations from one table, not a thickness series, and cannot diagnose bulk-reference drift or establish a reconstruction ranking.

For a real symmetric stoichiometric slab ledger, record NN, one-face area AA, slab energy, compatible bulk energy per counted unit, surface count, units, final structure, and output hashes. Then evaluate

γ=Eslab(N)−Nebulk2A.\gamma=\frac{E_{\mathrm{slab}}(N)-N e_{\mathrm{bulk}}}{2A}.

Use the divisor 2A2A only for two equivalent faces. An asymmetric slab yields a sum of two surface excesses; a nonstoichiometric slab needs explicit chemical potentials.

Optionally check the drift arithmetic

The repository also retains an invented four-slab fixture for the specific failure pattern caused by an incompatible bulk slope:

python3 examples/practical-guides/surface_energy_ledger.py

It fits

Eslab(N)=Nebulkfit+EexcessE_{\mathrm{slab}}(N)=N e_{\mathrm{bulk}}^{\mathrm{fit}}+E_{\mathrm{excess}}

for one invented slab family, then perturbs the slope by 0.003 eV/atom to expose thickness drift. The script checks regression arithmetic, unit conversion, and the two-face factor. The resulting records are a deliberately synthetic failure pattern, not Si data or a recommended tolerance.

What this guide verifies

For a real series, first confirm that orientation, termination, reconstruction, stoichiometry, area, strain, constraints, magnetic state, and numerical protocol remain unchanged. Inspect the final structures and central layers. Accept a plateau or fitted intercept only after slab thickness, bulk cancellation, and the target surface energy meet the study’s declared tolerance without a state switch.

The two commands verify a public snapshot and a synthetic diagnostic, respectively. Neither establishes a new surface energy, executes DFT, proves termination completeness, validates the bulk reference, or supports a material-stability claim.

Official sources

Ways to work: Python

Companion checked with: Python 3.12.

Reproducibility note

The companion material was checked with Python 3.12. It tests only the bounded software or analysis behaviour described here; it does not establish numerical convergence, model validity, or a material property.