The purpose of this project is to extend your fundamental C-language programming techniques through a normal coordinate/harmonic vibrational frequency calculation. The theoretical background and a concise set of instructions for this project may be found here.
We thank Dr. Yukio Yamaguchi of the University of Georgia for the original version of this project.
The coordinate data are given in a format identical to that for Project #1. The test case for the remainder of this project is the water molecule, optimized at the SCF/DZP level of theory. You may download the coordinates (in bohr) from here.
The primary input data for the harmonic vibrational calculation is the Hessian matrix, which consists of second derivatives of the energy with respect to atomic positions:
The Hessian matrix (in units of Eh/a02) can be downloaded here for the H2O test case. The first integer in the file is the number of atoms (which you should compare to the corresponding value from the geometry file as a test of consistency), while the remaining values have the following format:
Divide each element of the Hessian matrix by the product of square-roots of the masses of the atoms associated with the given coordinates:
where mi represents the mass of the atom corresponding to atom i. Use atomic mass units (amu) for the masses, just as for Project #1.
Compute the eigenvalues of the mass-weighted Hessian:
You should consider using the same “canned” diagonalization function you used in Project #1 to diagonalize the moment of inertia tensor.
The vibrational frequencies are proportional to the square root of the eigenvalues of the mass-weighted Hessian:
The most common units to use for vibrational frequencies is cm-1.
E.B. Wilson, J.C. Decius, and P.C. Cross, Molecular Vibrations, McGraw-Hill, 1955.