Mode Scanning¶
Mode Scanning can be used to obtain more accurate approximations for the
properties of the vibrational normal modes. Mode Scanning is an extension of the
frequency scanning options (ScanFreq
) that were part of ADF and BAND in
earlier versions of the Amsterdam Modeling Suite.
Theory¶
Vibrational normal modes are usually obtained as eigenvectors of the Hessian matrix. A common problem with this scheme however, is that due to numerical errors in constructing this Hessian, low-frequency vibrations may be reported to have imaginary frequencies instead. The Mode Scanning task allows for re-calculation of the frequency of these modes. This allows you to confirm whether reported imaginary frequencies are attributed to transition states or whether they are simply due to numerical errors.
Given a user-supplied mode \(Q\), the frequency is calculated from the force constant:
This is again done by numerical differentiation of the energy gradients, requiring AMS to set up 2 single point calculations per selected normal mode. Integrated IR intensities are also calculated simultaneously (if dipole moments are supported by the engine):
Where the derivative is with respect to the mass-weighted normal mode.
It is also possible to use this method to selectively re-calculate the normal mode properties for different engine settings. This has two distinct uses:
- If the modes were originally generated using a finite difference method, a
different stepsize can be used. For strong vibrations (high frequencies),
large stepsizes may cause inaccuracies due to increasing anharmonic
contributions. For weak vibrations (low frequencies) on the other hand,
stepsizes can often be too small. The displacements associated with these
vibrations are small, which can give incorrect sampling of the PES profile.
This should be compensated for by choosing a larger stepsize. The stepsize
can be set using the
Displacement
key. - Users can also recalculate modes using higher levels of theory. Modes generated from a full frequency analysis using e.g. DFTB can be recalculated using e.g. LDA DFT to obtain more realistic integrated IR intensities. The method used for the single point calculations can be set in the Engine block.
Calculation setup¶
A numerical frequency calculation is performed by requesting the
ModeScanning
task:
Task ModeScanning
ModeScanning
ModePath adf.rkf
# select all modes with imaginary frequencies
ModeSelect
ImFreq true
End
Displacement 0.001
End
The details of the calculation are specified in the ModeScanning
block.
Here, ModePath
specifies the AMS output file containing the normal modes
for which you want to calculate the frequencies. The ModeSelect
block is
used to specify which of the modes in this file should be recalculated, since
we are often only interested in a select few of them. A more detailed overview
of this block is given in the section Selecting Modes on the main
page. Finally, Displacement
can be used to specify the
stepsize (in Bohr) for the finite differences. The stepsize is provided for
displacements along the Cartesian normal modes.
The Mode Scanning module is the main driving force for the Mode Tracking and Vibrational Mode Refinement tasks, which provide more advanced options for refining not only the properties of the modes, but also the modes themselves. Consult the relevant pages for more information.
Overview of input options¶
Below is the overview for all the keys in the ModeScanning
block:
ModeScanning
Displacement float
ModePath string
ModeSelect
FreqAndIRRange float_list
FreqRange float_list
Full [True | False]
HighFreq integer
HighIR integer
IRRange float_list
ImFreq [True | False]
LowFreq integer
LowFreqNoIm integer
LowIR integer
ModeNumber integer_list
End
End
ModeScanning
Type: Block Description: Input data for the ModeScanning task. Displacement
Type: Float Default value: 0.001 Description: Step size for finite difference calculation of frequencies and IR intensities. ModePath
Type: String Description: Path to a .rkf file containing the modes which are to be scanned. Which modes will be scanned is selected using the criteria from the [ModeSelect] block.) ModeSelect
Type: Block Description: Pick which modes to scan from those read from file. FreqAndIRRange
Type: Float List Unit: cm-1 and km/mol Recurring: True Description: Specifies a combined frequency and IR intensity range within which all modes will be scanned. (First 2 numbers are the frequency range, last 2 numbers are the IR intensity range.) FreqRange
Type: Float List Unit: cm-1 Recurring: True Description: Specifies a frequency range within which all modes will be scanned. (2 numbers: a upper and a lower bound.) Full
Type: Bool Default value: False Description: Scan all modes. HighFreq
Type: Integer Description: Scan the N modes with the highest frequencies. HighIR
Type: Integer Description: Scan the N modes with the largest IR intensities. IRRange
Type: Float List Unit: km/mol Recurring: True Description: Specifies an IR intensity range within which all modes will be scanned. (2 numbers: a upper and a lower bound.) ImFreq
Type: Bool Default value: False Description: Scan all modes with imaginary frequencies. LowFreq
Type: Integer Description: Scan the N modes with the lowest frequencies. (Includes imaginary modes which are recorded with negative frequencies.) LowFreqNoIm
Type: Integer Description: Scan the N modes with the lowest non-negative frequencies. (Imaginary modes have negative frequencies and are thus omitted here.) LowIR
Type: Integer Description: Scan the N modes with the smallest IR intensities. ModeNumber
Type: Integer List Description: Indices of the modes to scan.