Static spectral calculations for water molecule

Normal mode analysis

The test calculation on the directory /Static/Normal_mode_analysis demonstrates how one can carry out a normal mode analysis for a simple water molecule providing the and giving the geometry file water.xyz and the file which contains the atomic forces water-force.data (see File Formats for more details on how to append the atomic forces for each displaced structure.) The input file is then given as:

&global
 spectra NMA
&end global
&system
 filename water.xyz
&end system
&static
  &hessian
   force_file water-force.data
  &end hessian
  displacement 0.001
  write_mol_file
&end static

This calculation generates three output files named:

  • normal_mode_freq.txt → contains normal mode frequencies

 # Normal mode freq. (cm^{-1})
  -176.97535653970249     
  -176.42583329045769     
   105.51923823199118     
   193.50471510887877     
   230.82082299950909     
   275.41014020547584     
   1588.9102733774585     
   3612.3956359220965     
   3712.8115592866070     

where the last 3 frequencies correspond to the bending, symmetric stretching and asymmetric stretching modes of water. The first 6 modes correspond to the translational and rotational mode frequencies and can be disregarded by the user. The reason some of them show negative frequencies is because the molecular structure used for the normal mode analysis is not tightly optimized.

  • normal_mode_displ.txt → contains normal mode displacements, i.e., we print for each mode \(p\) and each atom \(k\), the Cartesian displacement vector: \( d_{k\alpha}^{(p)} = q_{\text{vis}}^{(p)} \,\frac{\tilde u_{k\alpha}^{(p)}}{\sqrt{m_k}}, \qquad \alpha \in \{x,y,z\}. \)

where \(\tilde{\mathbf{u}}_p\) are the mass-weighted eigenvectors and \(m_k\) is the mass of atom \(k\) in atomic units. \(q_{\text{vis}}^{(p)}\) is a parameter for the visualization with the unit \(\sqrt{\textnormal{mass}} \cdot \textnormal{length}\). We simply set this parameter to 1 \(\sqrt{\textnormal{u}}\cdot\) bohr, so that the total unit of \(\mathbf{d}_k^p\) is in bohr.

# first atom in first vibrational mode
  0.94616809213469699        2.7946421871026641E-005  -2.9767288434384802E-002
# second atom in first vibrational mode
  0.22740474089226850        1.2654307516200803E-002  -8.3175715860303919E-003
# third atom in first vibrational mode
  0.22740216306823607       -1.2642516133164316E-002  -8.1266552822378130E-003
 ...
# first atom in last vibrational mode
  0.26728409439256395        4.0116848009155714E-006  -8.2828918268760410E-007
# second atom in last vibrational mode
 -0.53240940739379650      -0.42525005582409653       -9.0204921754870363E-007
# third atom in last vibrational mode
 -0.53238715822178384       0.42523609861802070       -1.2091347908508780E-010
  • vibrations.mol → can be opened with MOLDEN to visualize the normal mode vibrations

The following screenshot shows how one can use the vibrations.mol file to visualize the normal modes via MOLDEN:

Vibrational mode of water

Visualization of the bending mode of water.

Static IR and Raman spectra for water molecule

The next example is about the static IR and Raman calculation of the water molecule. Starting with the IR calculation on /Static/IR/, one can see that now there are some new files in addition to the input.txt and water.xyz files, named:

  • normal_mode_freq.txt and normal_mode_displ.txt → normal mode frequencies and normal mode coordinates (See File Formats for the formatting of these file)

  • dipoles_water.xyz → contains the dipole moments for all displaced structures (See File Formats for the formatting)

This example does not perform a normal mode analysis, and instead uses the user-provided normal mode frequencies and coordinates. Running the calculation generates two files:

  • result_static_ir.txt → contains broadened IR spectrum

  • IR.mol → can be opened with MOLDEN to visualize the normal mode vibrations, but this time also the IR spectrum, as shown in the following gif:

Vibrational mode of water

Visualization of the antisymmetric stretching mode of water, alongside the IR spectrum.

The IR spectrum can be obtained directly using the chosen broadening method and full width at half maximum (FWHM). Alternatively, one may plot the Gaussian-broadened file result_static_ir.txt produced by vibrant with the desired FWHM value, for example using Python or Gnuplot. An example Python script is given in the Quick Start section.

The Raman calculation can be found in the directory /scratch/ekin/Examples/Static/Raman. This example uses again the atomic forces to calculate the normal mode frequencies and coordinates. It also uses the polarizabilities.dat file for the polarizability tensors. Details on the format of this file is given in the File Formats section.

&global
 spectra R
 temperature 300
 fwhm 5
&end global
&system
 filename water.xyz
&end system
&static
 diag_hessian y
 &hessian
  force_file water-force.data
 &end hessian
 displacement 0.001
 write_mol_file
&end static
&polarizabilities
 type_pol analytical
 static_pol_file polarizabilities.dat
&end polarizabilities
&raman
 laser_in 2.540639
&end raman

This calculation generates four files, again the normal mode frequency and normal mode coordinate files normal_mode_freq.txt and normal_mode_displ.txt, and also the result_static_raman.txt file which contains the broadened frequencies and the Raman spectrum and can be plotted with, for example, Python. Additionally, Raman.mol can again be opened with MOLDEN to visualize the normal modes alongside the Raman spectrum.

Bonus: Power spectrum of liquid water

After running the static calculations for the water molecule, one can also calculate the MD-based power spectrum of liquid water, as provided in the directory /MD-based/Power_Spectrum/. The directory includes the waterbulk-pos-1.xyz file which contains the atomic positions of the water simulation box for several MD snapshots, and also the input file input.txt. Running the calculation produces two files:

  • power_spec.txt → contains the power spectrum

  • result_acf_velocities.txt → contains the velocity autocorrelation data

The files can be visualized with a Python script as described above. The resulting power spectrum is shown below:


Power spectrum of liquid water.