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. Details of all the algorithms can be found in J. Chem. Phys. 129, 114104 (2008). A manual for using this package is being prepared. You are welcome to ask for help in setting up the simulation.


Setup

Put the necessary scripts in place:

  • Download the vtstscripts to get the scripts: akmc.pl, dimmins.pl and diminit.pl
    Please report bugs to xulijun@u.washington.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. For example, if no more than 20 jobs are allowed in the queue (including running jobs) and you are using 5 of them to run other jobs, the maimum number of jobs for akmc must not exceed 15.
NumSearches20Number of good saddle points to be found at each step or the number of searches in the dynamic stopping criteria [see JCP 129, 114104 (2008)].
AkmcSteps100000Number of kMC steps
SimR0.1in Angstrom, to set up the dimer quenching
Ediffmax0.05in eV, the energy tolerance for two configurations to be considered as same (subject to Rdiffmax).
Rdiffmax0.05in Angstrom, the distance tolerance for two configurations to be deemed as same: any atom moves no more than this distance.
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
DynMatFilefreq.datoutput file for DymMatrix.pl screen output
Prefactor1.0e12dynmat calculculation will be turned off if this line is not commented out by placing "#" to the front of this line.
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 completed state, not including the current running state
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 state in the previous step
PrRecycleShift1if true, vector-shift good saddle points from the state in the previous step
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
equivalency1 if true, using indistinguishablity in comparing the two states
Screenoutputout.dat a file containing the screen output.
DisplaceAlgo1 the algorithmm for randomly displacing atoms [see JCP 129, 114104 (2008)]
DisplaceRang3 the radius of the sphere confining the atoms to be displaced.
NN_rcut2.6 the maximum distance defining two atoms as neighbors
MaxCoordNumout.dat the maximum coordination number (calculated by using NN_rcut) allowed for an atom to be displace based on DisplaceAlgo=1
BoltzmanEqu0.99999 the minimum fraction of a rate constant in the total rate, which is necessary for assuming a Boltzmann equilibrium between two consecutive states.
UseKDB0 if true, preparing dimer searches from a database first before doing random searches.