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:

\[k = \frac{\partial^2E}{\partial{}^2Q}\]
\[\nu = \frac{1}{2\pi c}\sqrt{\frac{k}{\mu_r}}\]

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):

\[I_{IR} = \frac{N\pi}{3c^2}\sum_\alpha\Big(\frac{\partial{}\mu_\alpha}{\partial{}Q^m}\Big)^2\]

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.