Vasp TST Tools
     
ADAPTIVE KINETIC MONTE CARLO

Kinetic Monte Carlo is a method for simulating the state-to-state dynamics of a rare event system. For dynamics of atomic systems, the rare events correspond to the thermal activation of atoms from one energy basin to another on the potential energy surface. If the rates of these transitions are known, KMC can be used to simulate dynamics over long time scales. The strength of KMC is that the fast vibrational motion of atoms is averaged out, using transition state theory, so that the dynamics can be modelled on the time scale of the thermally activated events.

KMC has some important limitations. The first is that the rates of thermal events needs to be calculated before the simulation begins. This can be done using density functional theory, for example, with the VASP code. For modeling solid systems, rates can be found using harmonic transition state theory. This is a very computationally efficient approximation because only the energy and frequencies of minima and saddle points are needed to find rates of reactions. Adaptive kinetic Monte Carlo is a method for simulating uses saddle point searches to find processes available to the system. Kinetic Monte Carlo is then used to advance the system from state to state. Here, we present a package that can used to do adaptive kinetic Monte Carlo simulations in VASP.


Setup

Put the necessary scripts in place:

  • Download the vtstscripts to get the scripts: akmc.pl, dimmins.pl and diminit.pl
    Please report any bugs to xulijun-at-mail.utexas.edu.
  • Three job handling scripts in the same folder: akmc_submit.pl, akmc_check.pl, and akmc_kill.pl
    Note: Those file names can't be changed, and you need to write your own scripts since they are specific to the queuing system.

Start with a directory containing:

  • config, the parameter file (see below for details)
  • POSCAR, initial configuration
  • KPOINTS, k-point mesh to sample the Brillouin zone
  • POTCAR, pseudopotential file
  • INCAR_min, parameters for minimization calculations
  • INCAR_sp, parameters for saddle point finding calculations
  • INCAR_dymmat, parameters for dynamical matrix calculations
  • DISPLACECAR_sp, displacements for initializing dimer searches
  • DISPLACECAR, displacements for dynamical matrix calculations
  • akmc_min.sub, submission script for minimization jobs
  • akmc_sp.sub, submission script for saddle point finding jobs
  • akmc_dymmat.sub, submission script for dynamical matrix jobs

Run the script in this directory by typing the command: akmc.pl

Example job, and job related scripts for the SGE queueing system:


Configuration parameters

Parameter
Default Value
Description
MaxJobs8Maximum number of job to run
NumSearches20Number of good saddle points to be found at each step or the number of searches in the dynamic stopping criteria
AkmcSteps100000Number of kMC steps
SimR0.1in Angstrom, to set up the dimer quenching
NumKT20in Kelvin, the allowed zone in the dynamic stopping criteria
Temperature300.0Temperature in Kelvin
SearchesAlgodimerSaddle point finding algorithm: dimer or lanzcos
BarrierMAX10the highest barrier allowed (in eV)
JobFilejobs.data file storing jobs information at each step
StFilest.data file storing information for the state "st000x"
AkmcFileakmc.data file recording each KMC step information
DynMatFilenormalfreqs.datoutput file for DymMatrix.pl screen output
Prefactor1.0e12dynmat calculculation will be turned off if this line is not commented out
RateTableFileRateTableFile.datthe rate table file for each state
OldRunDirFilestpool.datdirectories where those done states are located; if the is empty, the current akmc folder will be the only directory in which to check for possible repeated states
StEnergyFileStEnergyFile.data file containing energy for each initial state
Population0.2percentage of the lowest energy saddle point among all the saddles found
PrRecycleAll1if true, before starting a new state, check for quenched processes in previous states to recover good saddles (if any)
PrRecycle1if true, recycle good saddle points from the previous state
PrRecycleShift1if true, vector-shift good saddle points from the previous state
GrabQuenched1if true, check if a saddle has been quenched before in previous states
SurfaceRecShift1if true, check if the last atomic group is equivalent to the counterpart in previous states. if so, followed by vector-shift
ConvergenceAlgo1 1: dynamic criteria 0: fixed number of saddle searches 2: percentage control
equivalency1 if true, using indistinguishablity in comparing the two states.