Why compute frequencies
A frequency job after an optimisation serves three purposes:
- Characterise the stationary point: all real frequencies → stable minimum; exactly one imaginary frequency → transition state.
- Provide thermochemical corrections: zero-point energy (ZPE), thermal corrections, entropy → Gibbs free energy G.
- Predict IR / Raman spectra: vibrational spectra directly comparable to experiment.
Basic usage: AnFreq and NumFreq
Two flavours are available:
| Keyword | Mode | Notes |
|---|---|---|
Freq or AnFreq | Analytical derivatives | Fast and accurate. Supported for HF, DFT, MP2, CASSCF. |
NumFreq | Numerical derivatives | Available for every method. Performs 6 × Natom gradient evaluations. |
# Analytical frequencies (preferred when available)
! B3LYP D4 def2-TZVP Freq
# Numerical frequencies (when analytical derivatives are unavailable, e.g. CCSD(T))
! CCSD(T) cc-pVDZ NumFreq
A frequency calculation only makes sense at a stationary point (zero gradient). If you compute frequencies on an un-optimised geometry the translational and rotational modes acquire non-zero values, and every other mode is contaminated as a result. Always optimise first with the same method and basis set.
Combined with optimisation
The most common pattern is to chain Opt and Freq on the same keyword line:
! B3LYP D4 def2-TZVP RIJCOSX def2/J TightOpt Freq
* xyzfile 0 1 mol.xyz
Once the optimisation converges, ORCA automatically launches the frequency calculation at the same level. If you find an imaginary frequency, distorting the geometry along that mode and re-optimising usually resolves it.
Reading the output
After a frequency calculation the output contains a table like this:
-----------------------
VIBRATIONAL FREQUENCIES
-----------------------
Scaling factor for frequencies = 1.000000000 (already applied!)
0: 0.00 cm**-1
1: 0.00 cm**-1
2: 0.00 cm**-1
3: 0.00 cm**-1
4: 0.00 cm**-1
5: 0.00 cm**-1
6: 1659.34 cm**-1
7: 3805.21 cm**-1
8: 3914.47 cm**-1
The first six entries (five for linear molecules) are the translational and rotational modes, which should always appear near zero. The remaining entries are the true vibrational modes. In the example above water has three modes: the bend (1659), symmetric stretch (3805) and antisymmetric stretch (3914).
Visualising normal coordinates
Displacement vectors for each mode appear in the NORMAL MODES section:
------------
NORMAL MODES
------------
0 1 2 3 4
0 0.000000 0.000000 -0.000000 0.000000 -0.000000
1 0.000000 0.000000 0.000000 -0.000000 0.000000
...
To inspect normal coordinates intuitively, use the orca_pltvib utility to
generate a trajectory of the vibration:
# Extract a trajectory for mode 6 (writes an XYZ file)
orca_pltvib mol.hess 6
Handling imaginary frequencies
Imaginary frequencies appear as negative numbers in the output:
6: -456.78 cm**-1 ***imaginary mode***
7: 1234.56 cm**-1
8: ...
If you did not intend to find a transition state, this is how to resolve it:
- Displace every atom slightly along the imaginary mode's normal coordinate (say ± 0.1 Å). Extracting the first amplitude frame from
orca_pltvibis the easiest way. - Re-optimise from this new geometry. Consider tightening to
VeryTightOpt. - Re-run the frequencies and confirm all modes are real.
Frequencies of ± 10 cm⁻¹ or so are usually numerical noise from the integration
grid or the SCF threshold. Tightening to DefGrid3 VeryTightSCF and
re-running often removes them.
Thermochemistry and Gibbs free energy
Once the frequencies are in, ORCA automatically prints the thermochemistry. The default reference conditions are 298.15 K and 1 atm:
-------------------------
THERMOCHEMISTRY AT 298.15K
-------------------------
Temperature ... 298.15 K
Pressure ... 1.00 atm
Total Mass ... 18.01 AMU
Zero point energy ... 0.02143521 Eh 13.45 kcal/mol
Thermal vibrational correction ... 0.00010256 Eh 0.06 kcal/mol
Thermal rotational correction ... 0.00141572 Eh 0.89 kcal/mol
Thermal translational correction ... 0.00141572 Eh 0.89 kcal/mol
-------------------------------------------------
Total thermal energy -76.39541321 Eh
Total enthalpy -76.39447892 Eh
Final Gibbs free energy -76.42157345 Eh
-------------------------------------------------
G-E(el) ... 0.00219978 Eh 1.38 kcal/mol
The key entries are:
| Item | Meaning |
|---|---|
| Zero point energy | The vibrational energy that remains at 0 K. |
| Total thermal energy | U = Eel + ZPE + thermal corrections. |
| Total enthalpy | H = U + pV. |
| Final Gibbs free energy | G = H − TS. The number you usually want for reaction free energies. |
Changing T and p
%freq
Temp 373.15 # 100 °C
Pressure 1.0 # atm
end
The default RRHO (rigid-rotor harmonic oscillator) model over-estimates the entropy
of low-frequency modes (< 100 cm⁻¹). Applying Grimme's quasi-RRHO correction
gives noticeably better free energies. Enable with
%freq QuasiRRHO true CutOffFreq 35 end. The improvement is
particularly visible for conformer searches and floppy molecules.
IR · Raman spectra
IR intensities are always printed alongside the frequencies. Raman intensities require
either ! NumFreq or a polarisability calculation in the same job.
To turn the printed table into a spectrum, use the orca_mapspc utility:
# IR spectrum (.dat file)
orca_mapspc mol.out ir -w25
# Raman spectrum
orca_mapspc mol.out raman -w50
# Open mol.out.ir.dat or mol.out.raman.dat in gnuplot, matplotlib, …
The -w flag sets the Lorentzian / Gaussian line width in cm⁻¹. Running
orca_mapspc with no arguments prints the full option list.
Useful options
%freq
CentralDiff true # central differences in NumFreq (default: forward). More accurate, 2× slower.
Increment 0.005 # displacement size (bohr). Default 0.005.
Restart true # resume an interrupted NumFreq
ProjectTR true # project out translational / rotational modes (default on)
Mass2016 true # IUPAC 2016 atomic masses
QuasiRRHO true # quasi-RRHO entropy correction
CutOffFreq 35.0 # quasi-RRHO cutoff (cm^-1), default 35
end
Harmonic frequencies from DFT are typically 5–10 % too high compared to experiment. When comparing with literature, multiply by the functional-specific recommended scaling factor, e.g. ~0.961 for B3LYP/6-31G(d) and ~0.965 for B3LYP/def2-TZVP. A comprehensive table lives at NIST CCCBDB (cccbdb.nist.gov).