surface_adsorbate_dist_lookup_table
esta.general.surface_adsorbate_dist_lookup_table
¶
bond_lengths_extended.py¶
Extended lookup table of surface–adsorbate bond lengths (Å) for use in automated adsorbate placement workflows.
Organisation
Each key is a sorted two-element tuple so lookup is order-independent: BOND_LENGTHS[tuple(sorted(["Pt", "O"]))] → works whether you write ("O","Pt") or ("Pt","O")
Values represent the equilibrium distance between the surface atom and the first adsorbate atom as determined from: • DFT-PBE / DFT-PBE+D3 geometry optimisations on low-index surfaces • LEED / LEED-IV structural refinements • NEXAFS and XPS-derived bond lengths • Experimental crystal structures (ICSD / CSD) for ionic/covalent analogues • Covalent-radii sums (Pyykkö & Atsumi, Chem. Eur. J. 2009) as a last resort
Key references
[1] Pyykkö & Atsumi, Chem. Eur. J. 15 (2009) 186–197 ← covalent radii [2] Michaelides et al., J. Am. Chem. Soc. 125 (2003) 3704 ← Pt, Ni, Ru DFT [3] Hammer & Norskov, Adv. Catal. 45 (2000) 71 ← d-band model review [4] Grabow & Mavrikakis, ACS Catal. 1 (2011) 365 ← surface DFT benchmark [5] CRC Handbook of Chemistry & Physics (110th ed.) ← molecule geometries [6] Bader et al., Surf. Sci. Rep. 47 (2002) 75 ← CO on metals [7] Woodruff & Delchar, Modern Techniques of Surface Science [8] Vitos et al., Surf. Sci. 411 (1998) 186 ← 3d metals [9] Love et al., Chem. Rev. 105 (2005) 1103 ← thiols on Au, Ag, Cu [10] Dubois & Nuzzo, Annu. Rev. Phys. Chem. 43 (1992) 437 ← SAMs on metals
Units
All values in Ångström (Å).
Usage example
pair = tuple(sorted(["Pt", "O"]))
bond = BOND_LENGTHS.get(pair, fallback_value)
get_bond_length(sym_a: str, sym_b: str, radius_scale: float = 1.0) -> float
¶
Retrieve the surface–adsorbate bond length for the element pair (sym_a, sym_b) using the following priority:
- Explicit entry in BOND_LENGTHS (literature / DFT values above).
- Covalent-radii sum from ASE as a numerical fallback, scaled by radius_scale (e.g. 0.95 for a compressed initial guess).
Parameters:
-
sym_a(str) –Element symbols (order-independent).
-
sym_b(str) –Element symbols (order-independent).
-
radius_scale(float, default:1.0) –Multiplicative factor applied to the covalent-radii fallback only.
Returns:
-
float–Bond length estimate in Å.
Examples: