Growing String Calculation

There are a set of input files for GSM calculations.
– gfstring.exe
– grad.py
– inpfileq
– status
– scratch directory which contains the submission script and initial structure file (and ISOMERS file for single-ended GSM)

gfstring.exe and status are executable files and are the same for all calculations. Lines 19 and 20 and 27-31 in grad.py file (example below) should be changed for each calculation. The first set is the slab set up and should be exactly same as either reactant or product structures. The second set is the calculator set up and it should be consistent for the reactant, product and gsm calculations. Besides freezing the atoms in the script, a space followed by a asterisk ( *) should be placed after the frozen atoms in the initial###.xyz file.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!usr/bin/python

from ase import Atoms
from ase.visualize import view
from ase.calculators.emt import EMT
from ase.calculators.nwchem import NWChem
from ase.calculators.vasp import Vasp
from ase.constraints import FixAtoms
from ase.io import write, read
import sys, os
from ase.lattice.surface import fcc111,add_adsorbate

nargs = len(sys.argv)
argv1 = sys.argv[1]
argv2 = sys.argv[2]
fname = 'scratch/structure'+argv1

#lattice and initial atom setup for unit cell
slab = fcc111('Pt', size=(3,3,4), vacuum=7)
add_adsorbate(slab, 'Au', 2.7, 'ontop')

#current position read in
slabatoms = read(fname)
slab.set_positions(slabatoms.get_positions())

#set up Calculators
mask = [atom.tag > 2 for atom in slab]
slab.set_constraint(FixAtoms(mask=mask))
calc = Vasp(xc='PBE',lreal='Auto',kpts[2,2,1],ismear=1,
       sigma=0.2,algo='fast',istart=0,npar=8)
slab.set_calculator(calc)

energy = - slab.get_potential_energy()
grads = - slab.get_forces()

#print grads
f = open('scratch/GRAD'+argv1, 'w')
f.write(str(energy))
f.write('\n')
f.write(str(grads))
f.write('\n')
f.close()

 

The third file is the inpfileq. It has the following form:

SM_TYPE
MAX_OPT_ITERS
STEP_OPT_ITERS
CONV_TOL
ADD_NODE_TOL
SCALING
SSM_DQMAX
GROWTH_DIRECTION
INT_THRESH
MIN_SPACING
INITIAL_OPT
FINAL_OPT
PRODUCT_LIMIT
TS_FINAL_TYPE
NNODES
GSM
100
30
0.0005
0.1
1.0
0.8
0
2.0
10.
0
150
70.0
0
11
# SSM or GSM
# maximum iterations
# for FSM/SSM
# perp grad
# for GSM
# for opt steps
# add step size
# normal/react/prod: 0/1/2
# intermediate detection
# node spacing SSM
# opt steps first node
# opt steps last SSM node
# kcal/mol
# any/delta bond: 0/1
# including endpoints

————————————————————————————————

SM_TYPE: GSM for double ended and SSM for single ended calculation.
MAX_OPT_ITERS: maximum number of optimization iterations for string growth, climbing image and exact TS search combined. This parameter can be increased if string does not converge within 100 optimization iterations.
STEP_OPT_ITERS: the maximum number of optimization steps per growth step.
CONV_TOL: the RMS force criteria on TS node for string convergence.
ADD_NODE_TOL: the perpendicular gradient on frontier nodes should be less than this value for addition of new nodes.
SCALING: reduces the optimization step size by this factor. Should be 1.0 in most cases.
SSM_DQMAX: maximum step size for new node addition in Å-radians for single ended calculation.
GROWTH_DIRECTION: this parameter is for double ended calculations. By default (0), string grows form both ends by adding one node at a time to each end. The growth direction can be changed using this parameter.
INT_THRESH: the energy threshold for intermediate detection in kcal/mol. This means barriers below this threshold are not considered TSs.
MIN_SPACING: will add nodes in SSM to ensure nodes are separated by no more than this value.
INITIAL_OPT: 0 for not optimizing the structure of the first node (we usually input optimized structures for GSM/SSM calculations) and 1 for optimizing the given structure.
FINAL_OPT: number of opt steps for final structure (product) in a SSM calculation.
PRODUCT_LIMIT: this parameter is for SSM calculation. The calculation terminates if it does not find a product below this value.
TS_FINAL_TYPE: require a bond-breaking or bond-forming event in SSM, otherwise continue growing string.
NNODES: determines the number of nodes on the string. Usually, 11 for GSM and 30 for SSM. Higher value means higher resolution on the string, however, the number should not be large for short paths. For GSM, this is the exact number of nodes in the calculation, for SSM, this value is the maximum number of nodes allowed (the final string may contain less than this value).

Files in the scratch directory:
an example of submission script is given in general information > setup page. The initial###.xyz file should contain the optimized geometries of reactant and product for double-ended calculations.
For single-ended calculations, the initial###.xyz contains only the optimized geometry of the reactant. In addition to this file and submission script, a file named ISOMERS### should be created to direct the reaction coordinate (the file number for initial and ISOMERS files should be the same, e.g., initial0001.xyz and ISOMERS0001). The ISOMERS file has the following format:

NEW
ADD 1  2
BREAK 3  4
ANGLE 1  2  3  30.
TORSION 1  2  3  4  120.

The above are the desired geometries in the product structure.