Practical Guide · D1

Build an Adsorption-Energy and Free-Energy Ledger

Inspect an attributed CO/surface reaction ledger before using synthetic normalization and free-energy bookkeeping examples.

Put the real adsorption geometries beside the ledger

Open the clean slab, gas-phase or molecular reference, and relaxed adsorbate structure. View the final structure from above and from the side, identify the actual site and coverage, and measure relevant distances before entering its energy in a spreadsheet or notebook. Compare the reaction convention with the source Methods or supporting information; the energy ledger cannot reveal migration, dissociation, or reconstruction. Use visual tools, specialist surface tools, and literature sources for this human route.

Start with attributed public data: the companion script checks a frozen CMR ledger. Inspect its reaction, coverage, site, row identities, and source hash before comparing energies. The later invented bookkeeping examples are optional arithmetic checks, not atomistic configurations or new calculations.

Audit the attributed public reaction ledger first:

python3 examples/practical-guides/adsorption_ledger_cmr.py

The command checks the frozen CMR source identity, database SHA-256, reaction, sign convention, coverage statement, metal order, and selected scalar values. Its JSON output exposes the source hash and four PBE values. It does not launch DFT, calculate a new adsorption energy, or establish another site or coverage.

Read the reaction before the numbers

The snapshot defines

CO(g)+∗→CO∗\mathrm{CO(g)}+*\rightarrow\mathrm{CO*}

with products minus reactants and negative values favourable. It records full-coverage top-site fcc(111) models and PBE values of 0.263, -0.682, -0.946, and 0.105 eV per written reaction for Cu, Pd, Pt, and Au. Those state and reference choices travel with every number.

For a private calculation, build the ledger before subtraction. Record the clean slab, combined state, every reservoir, stoichiometric coefficient, charge and spin, coverage, unit, and sign. For one adsorbate,

Eads=Eslab+A−Eslab−EA,ref.E_{\mathrm{ads}} =E_{\mathrm{slab}+A}-E_{\mathrm{slab}}-E_{A,\mathrm{ref}}.

Optionally test reaction normalization

The retained synthetic explanation separately evaluates CO(g)+∗→CO∗\mathrm{CO(g)}+*\rightarrow\mathrm{CO*} and H2(g)+2∗→2H∗\mathrm{H_2(g)}+2*\rightarrow2\mathrm{H*}. It divides by two only after balancing the second reaction. Those invented totals demonstrate normalization; they are not source data or reusable reference energies.

Keep coverage quantities distinct

The synthetic one- and two-CO totals yield an average adsorption energy of -0.60 eV per CO at N=2N=2, while the second addition is -0.40 eV. The average and differential quantities answer different questions. State whether coverage is a site fraction, adsorbates per surface atom, molecules per area, or a surface-cell stoichiometry before comparing rows.

Add zero-point, thermal, entropy, solvent, pressure, or electrode terms only after closing the static reaction ledger. Record the model and unit of every term, and do not count a contribution twice. The Campbell and Sellers paper and its published correction bound the entropy discussion; surface thermodynamics and the computational hydrogen electrode define different reservoir transformations.

What this guide verifies

Check that the reaction is balanced, the sign and denominator are explicit, clean and adsorbed states are compatible, final geometry matches its label, and the target energy and ordering are converged. A successful companion run verifies frozen-data identity and ledger arithmetic only. It does not establish adsorption convergence, thermodynamic accuracy, a real site or coverage series, entropy, solvent, pressure, electrode conditions, catalytic ranking, or a material conclusion.

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.