13. Intrinsic Reaction Coordinate (IRC)
By default two paths are integrated in plus- and minus-direction of the imaginary mode (transition vector, TV) at the transition state (TS). If the IRC is started from a non-stationary point with non-vanishing gradient the downhill: True argument can be set to integrate only one path and skip the initial hessian calculation.
IRCs are integrated in mass-weighted coordinates and the default integrator is EulerPC.
The initial displacement from the TS is done by requiring a certain energy lowering \(\mathrm{d}E\) from moving along the TV and calculating the corresponding step length from a quadratic potential: \(\mathrm{d}E = \frac{1}{2} (k \cdot \mathrm{d}q^2)\), with \(k\) being the eigenvalue of the TV (imaginary mode) and \(\mathrm{d}q\) the required step length. The default required energy lowering is \(0.0005 ~ \mathrm{au}\). Alternatively the initial can be done by a prescribed length: displ: length and displ_length: [desired step] (default is \(0.1 \sqrt{\mathrm{amu}} \cdot \mathrm{bohr}\)).
The resulting endpoints of the IRC integration can be further optimized to stationary poins by adding the endopt: section (vide infra). By setting fragments: True in endopt separate fragments will be detected and optimized individually. This may be useful if the molecules are only weakly bound. By setting fragments: total the total system, as well as the separate fragments will be optimized.
By default IRC path data is dumped to dump_fn: irc_data.h5 every dump_every: 5 cycles. IRC paths can be plotted with pysisplot --irc.
13.1. YAML example(s)
Below you can find an example YAML-input including the most important options that the user may want to modify.
geom:
fn: hfabstraction_ts_opt_xtb.xyz # Input coordinates
calc:
type: xtb # extended tight-binding calculator
pal: 4
charge: 0
mult: 1
irc:
type: eulerpc # Similar to EulerPC from Gaussian
#rms_grad_thresh: 0.001 # Convergence threshold
#displ: energy|length|energy_cubic # How to do the initial displacement
#displ_energy: 0.001 # Energy lowering in au (Hartree)
#displ_length: 0.1 # Step length along the TV
#forward: True
#backward: True
#downhill: False # Only integrate downhill, disables forward/backward
#hessian_init: null # Path to HDF5 Hessian file
#displ_third_h5: null # Path to HDF5 file containing third derivative data
endopt:
#fragments: False|True|total # Detect & optimize fragments separately. Default is
# False. When set to 'total' the total system as well
# as the fragments are optimized.
do_hess: False # Frequency calculation at the end
Further examples for IRC calculations from .yaml input can be found here.
13.2. IRC base class
Base class for IRC integrators from which actual IRC integrators are derived.
13.3. IRC Integrators
13.3.1. Damped-Velocity-Verlet integrator
13.3.2. Euler integrator
Not recommended as it only produces reasonable results with very small step sizes.
13.3.3. Euler-Predictor-Corrector integrator
Recommended IRC integrator and default choice.
13.3.4. Gonzales-Schlegel-2 integrator
13.3.5. Local-Quadratic-Approximation integrator
13.3.6. Modified-Ishida-Morokuma-Komornicki integrator
Similar to the algorithm implemented by ORCA 4.
13.3.7. Runge-Kutta-4 integrator
Not recommended, as it is very slow.