# All vibrational modes¶

With vibrational analysis, we focus on the calculation of molecular vibrational modes and their associated properties. These molecular normal modes are typically calculated within the harmonic oscillation model.

If the molecule is in its equilibrium conformation, it sits in the lowest point (at least locally) on the PES. The cross-section of the PES profile close to this point can then be assumed to be approximately parabolic, such that the second derivative of the energy w.r.t a nuclear coordinate can be interpreted as a force constant for the harmonic oscillation of an atom along this coordinate. Since molecular vibrations in polyatomics involve the simultaneous displacement of multiple atoms, this harmonic oscillator model can be generalized to multiple nuclear coordinates. The normal modes and their frequencies then become eigenvectors and eigenvalues of a force constant matrix, the Hessian:

This Hessian can be requested as a PES property in AMS.

```
Properties
Hessian [True | False]
End
```

`Properties`

`Hessian`

Type: Bool Default value: False Description: Whether or not to calculate the Hessian.

The (non-mass-weighted) Hessian is saved in the engine result file as variable
`AMSResults%Hessian`

. It is not printed to the text output. The column/row
indices are ordered as: x-component of atom 1, y-component of atom 1,
z-component of atom 1, x-component of atom 2, etc.

Most engines cannot calculate the Hessian analytically. The Hessian is then constructed column-wise through numerical differentiation of the energy gradients w.r.t. each nuclear coordinate. AMS will set up 2 single-point calculations (1 for the positive displacement, 1 for the negative displacement), and the requested engine will return the energy gradients at these displacements. These gradients are calculated analytically for most engines.

Note

Numerical calculation of the full Hessian requires 6N single points calculation, which can take a considerable amount of time for large systems. A mode selective method can be a fast alternative.

You can also request AMS to calculate the normal modes (and their properties). AMS will obtain the normal modes as the eigenvectors of the mass-weighted Hessian.

```
Properties
NormalModes [True | False]
End
```

`Properties`

`NormalModes`

Type: Bool Default value: False GUI name: Frequencies Description: Calculate the frequencies and normal modes of vibration, and for molecules also the corresponding IR intensities.

The frequencies of the normal modes are then obtained from the Hessian eigenvalues, which are the effective force constants of the vibrational modes:

Here \(\nu\) is the vibrational frequency in \(cm^{-1}\), \(\lambda\) is the Hessian eigenvalue and \(\mu_r\) is the reduced mass associated with the vibrational mode.

Note that the normal modes also include 3 translational and 3 rotational modes
(2 for linear molecules). Together, these are referred to as “rigid modes”.
While they are not presented as part of the vibrational spectra, they are still
stored in the engine result file in the
`Vibrations`

section.

When requesting the normal modes calculation, integrated IR intensities are simultaneously calculated during the finite differentiation steps when constructing the Hessian (as long as dipole moments are supported by the engine). These IR intensities are calculated from the numerical dipole gradients:

Where \(\alpha\) denotes the x-,y- and z-components of the dipole moment \(\mu\), and \(Q^m\) is the mass-weighted vibrational normal mode.

Note

To obtain accurate results using this method, the harmonic approximation
must hold. Your calculations should thus be done at the system’s equilibrium
geometry. Since different engines, functionals, parameter sets etc. all
yield slightly different PESs, it is recommended to always precede the
calculation of the normal modes and/or Hessian with a geometry optimization
at the desired engine settings. One can either run this optimization first
and then get the Hessian/modes from a PES point
calculation, or combine both steps into one job by using the geometry
optimization task together with the
`Properties%NormalModes`

keyword.

Older versions of ADF and BAND in AMS supported a `ScanFreq`

keyword which
allowed the user to recalculate suspicious/spurious frequencies after a normal
mode calculation. This keyword is now available as `ScanModes`

under the
`NormalModes`

input block. It allows the user to specify a frequency range.
All normal modes with frequencies in this range will be recalculated. By default
this includes all negative frequencies and positive frequencies up to 10 cm \(^{-1}\).
The step size for the numerical differentiation uses that specified in the
`VibrationalAnalysis`

block (with a default of 0.001).

```
NormalModes
FreqRange float_list
ScanModes [True | False]
UseSymmetry [True | False]
End
```

`NormalModes`

Type: Block Description: Configures details of a normal modes calculation. `FreqRange`

Type: Float List Default value: [-10000000.0, 10.0] Unit: cm-1 Recurring: True Description: Specifies a frequency range within which all modes will be scanned. (2 numbers: an upper and a lower bound.) `ScanModes`

Type: Bool Default value: False Description: Whether or not to scan imaginary modes after normal modes calculation has concluded. `UseSymmetry`

Type: Bool Default value: True Description: Whether or not to exploit the symmetry of the system in the normal modes calculation.

An extension of this functionality is available as the `ModeScanning`

application
in AMS. For more details on how `ScanModes`

recalculates frequencies and the
extensions implemented by `ModeScanning`

, see its documentation page.