Vibrational Spectra from MD: IR, Raman, VDOS, VCD & ROA¶
This page is a self-contained, textbook-style introduction to predicting vibrational spectra from molecular-dynamics trajectories — the time-correlation route that TRAVIS pioneered for ab initio MD. Every spectrum here is the Fourier transform of an autocorrelation function (ACF) of a fluctuating quantity, dressed with the appropriate prefactor: a velocity ACF gives the vibrational density of states, a dipole-derivative ACF gives the infrared spectrum, a polarizability ACF gives Raman, and cross-correlations give the chiral spectra (VCD, ROA).
The spectral transforms run in Rust (molrs). Unlike the structural operators,
they do not take frames — they take a precomputed ACF and the sampling
interval, and return the spectrum.
Conventions used throughout
- The sampling interval
dt_fsis in femtoseconds; output frequencies are in wavenumbers (cm⁻¹). - You supply the raw ACF (built from the relevant time series — velocities,
dipole flux, polarizability). MolPy's
compute_acf/ACFAnalyzerbuild ACFs from a column.
1. Every vibrational spectrum is the Fourier transform of an ACF¶
The linear-response/Wiener–Khinchin result is that a spectral density is the Fourier transform of the time-correlation function of the corresponding dynamical variable \(A(t)\):
where \(Q(\omega)\) is a method-specific prefactor (a harmonic quantum correction and, for Raman, a frequency/temperature factor). The choice of \(A\) is what distinguishes the spectra:
| Spectrum | Dynamical variable \(A\) | Operator |
|---|---|---|
| VDOS (power) | atomic velocities | PowerSpectrum |
| Infrared | total dipole derivative (flux) | IRSpectrum |
| Raman | polarizability (iso + aniso) | RamanSpectrum |
| VCD | electric ⊗ magnetic dipole | VcdSpectrum |
| ROA | ROA invariants (iso + aniso) | RoaSpectrum |
| Resonance Raman | resonant polarizability | ResonanceRamanSpectrum |
2. Vibrational density of states from velocities¶
The simplest spectrum is the power spectrum of the velocity ACF, the vibrational density of states (VDOS). It needs no electronic information — just the velocities — and locates every vibrational mode, IR-active or not.
from molpy.compute import PowerSpectrum, compute_acf
vacf = compute_acf(velocities) # raw velocity autocorrelation
vdos = PowerSpectrum()(vacf, dt_fs=0.5) # -> {frequency (cm^-1), intensity}
3. Infrared and Raman spectra¶
The infrared spectrum is the Fourier transform of the autocorrelation of the cell's total dipole derivative (\(\dot{\mathbf M}\), the dipole "flux"); its intensities require the molecular dipoles, which for ab initio MD come from Voronoi integration of the electron density. The Raman spectrum uses the molecular polarizability, split into isotropic and anisotropic parts:
from molpy.compute import IRSpectrum, RamanSpectrum
ir = IRSpectrum()(dipole_flux_acf, dt_fs=0.5)
raman = RamanSpectrum(incident_frequency_cm1=20000.0, temperature_k=300.0)(
acf_iso, acf_aniso, dt_fs=0.5
)
The incident_frequency_cm1 and temperature_k apply the Raman scattering
prefactor; leave them at 0.0 to obtain the bare spectral density.
4. Chiral spectra: VCD, ROA and resonance Raman¶
The chiral spectra come from cross-correlations. Vibrational circular dichroism (VCD) is the transform of the electric-dipole ⊗ magnetic-dipole cross-ACF; Raman optical activity (ROA) and resonance Raman use isotropic and anisotropic invariants of the relevant response tensors:
from molpy.compute import VcdSpectrum, RoaSpectrum, ResonanceRamanSpectrum
vcd = VcdSpectrum()(electric_magnetic_acf, dt_fs=0.5)
roa = RoaSpectrum(averaged=True)(acf_iso, acf_aniso, dt_fs=0.5)
rr = ResonanceRamanSpectrum(incident_frequency_cm1=20000.0)(acf_iso, acf_aniso, dt_fs=0.5)
These reproduce TRAVIS's bulk-phase chiral-spectroscopy predictions, the first of their kind from MD.
5. Pitfalls checklist¶
- Sampling interval too coarse → the Nyquist limit \(\tilde\nu_\text{max} =
1/(2c\,\Delta t)\) must exceed the highest mode; sub-femtosecond
dt_fsis needed to reach C–H stretches (~3000 cm⁻¹). - ACF too short → spectral resolution is set by the ACF length; a short ACF gives broad, unresolved peaks. Window the ACF to suppress truncation ringing.
- Missing quantum correction → classical intensities need a harmonic quantum correction factor for quantitative comparison with experiment.
- Wrong variable for the spectrum → IR needs the dipole flux (derivative), not the dipole; VDOS needs velocities, not positions.
- Unconverged molecular dipoles/polarizabilities → garbage in, garbage out: verify the Voronoi charges before trusting IR intensities.
6. References¶
- D. A. McQuarrie, Statistical Mechanics, Harper & Row (1976) — time-correlation functions and spectral densities.
- M. Thomas, M. Brehm, R. Fligg, P. Vöhringer, B. Kirchner, Phys. Chem. Chem. Phys. 15, 6608 (2013) — IR and Raman spectra from AIMD via TCFs.
- M. Brehm, M. Thomas, J. Phys. Chem. Lett. 8, 3409 (2017) — VCD, ROA and resonance Raman from MD.
- M. Brehm, M. Thomas, S. Gehrke, B. Kirchner, J. Chem. Phys. 152, 164105 (2020) — TRAVIS.
See also¶
- Radical Voronoi — supplies the molecular dipoles IR intensities need.
- Van Hove & Reorientational Dynamics — the dynamical correlations behind lineshapes.
- Dielectric Spectroscopy — the dipole-fluctuation route to the dielectric response.
- API reference: Compute.