# Vibrational frequency calculations

The calculation of harmonic vibrational frequencies is important for many computational chemistry applications, such as:

- determining thermodynamic properties (e.g. enthalpy, entropy, free energy);
- predicting IR and Raman spectra;
- confirming the stability of a minimum or transition-state saddle point;
- efficiently searching for transition states.

A vibrational frequency calculation is performed by calling the `hessian()`

command. Currently, Qcore supports analytic DFT hessian for HF and DFT, and semi-analytic evaluation for GFN-xTB, EMFT, and ONIOM.

Here is a minimal input for running a vibrational frequency calculation:

```
hessian(
structure( molecule = methanol )
save_normal_modes =
'methanol_freq.Molden'
xtb()
)
```

In this example, we use the GFN-xTB method for obtaining the vibrational frequencies of methanol, and save the frequencies and normal modes to a MOLDEN format file, which can be visualized using Avogadro or other packages.

Using the vibrational frequencies, we can compute various thermodynamic properties, including enthalpy, entropy, Gibbs free energy and heat capacity, using ideal gas approximations. The command to run a thermodynamic analysis is `thermodynamics()`

. There are two ways of performing thermodynamic analysis in entos. The first approach is to run a `hessian()`

calculation followed by a `thermodynamics()`

command:

```
hess := hessian(
structure( molecule = methanol )
xtb()
)
thermodynamics(
structure( load = hess )
load = hess
temperature = 300 kelvin
pressure = 1 atm
)
```

Here, we perform a thermodynamic analysis for methanol at 300 K and 1 atm, by loading the vibrational frequencies and structure from a preceding `hessian()`

calculation. Note that we have used the assignment operator := to store the results of the `hessian()`

calculation in memory.

Alternatively, we can use `hessian()`

as a subcommand in `thermodynamics()`

:

```
thermodynamics(
structure( molecule = methanol )
hessian( xtb() )
temperature = 300 kelvin
pressure = 1 atm
)
```