This is a repository created to analyze fcc surface segregation of late transition metals using OCP models and Monte Carlo simulations. It contains tools to:
- Generate randomly ordered fcc metal slabs of arbitrary sizes
- Relax slabs using DFT with Kubernetes or Slurm HPC
- Train OCP models using Kubernetes jobs
- Run Monte Carlo simulations using OCP models to predict energies
gnoc_oc22_oc20_all_s2ef.pt: Taken directly from the OCP models.md page.
See scripts/dft/ for the scripts used to generate this data. Only converged runs are included in tallies. All slabs were initialized randomly onto an ideal fcc lattice, and the slab orientation was randomly selected from ['111', '110', and '100'].
Slabs were initialized in the following sizes, depending on Miller index:
- 1 x 1 x 7
- 2 x 1 x 7
- 4 x 1 x 7
-
$\sqrt3$ x$\sqrt3$ x 5 -
$\sqrt4$ x$\sqrt4$ x 5 -
$\sqrt3$ x$\sqrt3$ x 7 -
$\sqrt8$ x$\sqrt8$ x 4 -
$\sqrt5$ x$\sqrt5$ x 7 -
$\sqrt6$ x$\sqrt6$ x 7 -
$\sqrt12$ x$\sqrt12$ x 5 -
$\sqrt10$ x$\sqrt10$ x 6
Slabs relaxed with the PBE functional:
- 999 AuCuPd slabs (244 of which were 60-atom slabs)
- 409 AgAuCu slabs (198 of which were 60-atom slabs)
- 301 CuPdPt slabs (82 of which were 60-atom slabs)
- 223 binary or unary slabs from these ternaries
Slabs relaxed with the PBEsol functional with D3 corrections:
- 719 AuCuPd slabs (162 of which were 60-atom slabs)
- 717 AgAuCu slabs (162 of which were 60-atom slabs)
- 708 CuPdPt slabs (162 of which were 60-atom slabs)
- 172 binary slabs from those ternaries
See scripts/ocp/campaign_A.py and scripts/ocp/campaign_B.py for the scripts used to generate training runs. Campaign A focused on PBE data, and Campaign B was trained on PBEsol+D3 data. All training runs were done with the same hyperparameters. The configs are found in configs/OCP_training_campaigns and the data (train/val/test LMDBs and pickles) can be found in data/OCP_training_campaigns. Every training run used different proportions of two datasets: some amount of "auxiliary dataset" consisting of AgAuCu and CuPdPt slabs, and a learning curve taken from the dataset of AuCuPd slabs of up to 35 atoms. Training fractions of small AuCuPd slabs used for the learning curve were 0%, 10%, 25%, 50%, 75%, 90%, and 100%. These were combined and then split into 90% training and 10% validation. The test data was 60-atom AuCuPd slabs. Separately, for Monte Carlo simulations, all data was trained on.
i - No auxiliary data, i.e. just a learning curve of AuCuPd data. ii - All small (up to 35-atom) AgAuCu slabs iii - All small AgAuCu and CuPdPt slabs iv - All small AgAuCu and CuPdPt slabs and 60-atom slabs, but if two slabs differed by one atom swap, one member was excluded v - All AgAuCu and CuPdPt slabs
i - No auxiliary data, i.e. just a learning curve of AuCupd data. ii - All small (up to 35-atom) AgAuCu and CuPdPt slabs iii - All AgAuCu and CuPdPt slabs iv-vi - Same as i-iii, but starting from a checkpoint trained on all PBE data.
See scripts/mc/run_mc.py for the script used to run Monte Carlo, and scripts/mc/slurm/make_inputs* for the scripts used to generate inputs. A 10x10x15 AgAuCu, AuCuPd, or CuPdPt slab with the [111], [110], or [100] orientation was created with the composition determined by a Dirichlet distribution on an ideal lattice following Vegard's law. 200 simulations were run using each ternary, orientation, and functional, although not all of them converged.