Research code · Python
Water-layer genetic algorithm
A genetic algorithm for finding the lowest-energy arrangements of water molecules on oxide surfaces. Searches configuration space with a fast surrogate energy, then validates the best candidates with DFT.
The problem
Ordered hand-placement (as in Tegner & Kaltsoyannis 2018) puts every water on the same high-symmetry site and misses cooperative, disordered minima. Brute-force DFT across the configuration space is intractable: too many degrees of freedom, too many candidates. The genetic algorithm fills the gap.
How it works
Each generation runs through five stages:
- Population: random initial placements of N water molecules across the surface.
- Score: evaluate each candidate with the surrogate energy.
- Select: keep the best-scoring fraction; discard the rest.
- Recombine: produce new candidates by mixing two parents.
- Mutate: apply small random perturbations to positions and orientations.
The cycle repeats for many generations until the population converges.
The surrogate energy
Total energy
Etotal = Σ Eads(site, orient.) + EHB(water–water) + EHB(water–surface) − Erepulsion
- Eads: per-water adsorption energy from a DFT-derived lookup table: 5 sites × 6 orientations per surface.
- EHB (water–water): geometric hydrogen-bond term between adjacent water molecules.
- EHB (water–surface): water donating H to surface O.
- Erepulsion: steric penalty for waters that crowd each other.
Designed to rank candidates correctly, not to reproduce DFT energies.
DFT validation
The top ~10 candidates from each coverage are fully relaxed in VASP (PBE+U with U = 4 eV on the Pu 5f states, 650 eV plane-wave cut-off). Every published binding energy is a converged DFT number; the GA proposes, DFT decides.
What it has found
On PuO₂ surfaces, the GA recovers binding energies meaningfully below the literature ordered-placement values:
- (111) layer 1−0.789 eV/H₂O vs. literature −0.57 (+219 meV)
- (111) layer 312 H₂O at −0.685 vs. −0.56 (+125 meV)
- (110) layer 1+47 meV improvement
- (100) layer 1+315 meV improvement
All margins sit above the typical DFT noise floor (~50–100 meV).
Generality
The core is surface-agnostic; only the single-water DFT lookup table is per-material. The same engine is currently being extended to MgO and Gd₂O₃.
Roadmap
- Mixed molecular + dissociated (OH + H) adsorption.
- Defective surfaces: oxygen vacancies and Pu vacancies.
- Higher coverages (7–9 water layers).