Skip to content

ulissigroup/ternseg

Repository files navigation

TernSeg

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

Checkpoints

gnoc_oc22_oc20_all_s2ef.pt: Taken directly from the OCP models.md page.

DFT Data Generation

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

OCP

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.

Campaign A:

Aux Data

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

Campaign B:

Aux Data

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.

Monte Carlo Simulation

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.

About

Ternary alloy segregation predictions with Monte Carlo simulation

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors