Infrared (IR) and Raman spectra are two very valuable tools for the characterization of chemical compounds. And although there seem to be many different possibilities to produce them computationally, I didn’t find any clear tutorial on how to produce them using free software tools. Some of them, give complicated instructions on how to calculate second derivatives or Raman tensors, or stuff like that, but in the end one wonders: Where are the numbers I have to plot!
…Thereby, here is my post about computing IR and Raman spectra with Quantum Espresso.
For the impatient: most of this post is resumed in my Quantum Espresso example for the PHonon code, which will run for some 15-17 minutes and pop-up the IR/Raman spectra of CO2 and ZnO (Wurtzite).
If you are familiar with Quantum espresso, this will be very simple for you.
The procedure is as follows:
- Optimize the wavefunction by performing an Self Consistent Field (scf) calculation with pw.x
- Calculate the vibrational frequencies (normal modes/phonons) with ph.x
- Extract the phonon information from ph.x output using dynmat.x
- Parse the dynmat.x output section that contains the spectra data (frequencies and intensities) and plot it with gnuplot, producing these two spectra:
The obtained results for CO2 show normal modes at 604.82 (bending), 1362.90 (symmetric stretching) and 2441.15 cm-1 (antisymmetric stretching) which agree very well with the expected values of 667, 1340 and 2349 cm-1.
For the case of ZnO, the results can be compared to the ones by Calzolari & Nardelli and despite this calculation is a really rough approach intended to get some quick and dirty result, it already shows some similarities in the tendency of the lower frequencies.
There are some vibrational modes missing. This occurs because we only used 4 atoms to simulate an infinite bulk structure, and that creates some error. In the article I mentioned above, they use 512 atoms and besides, higher cutoffs and larger amount of k-points. But that calculation can not be run on a regular PC 😉