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 can find the coordinates (in bohr) in the input directory.
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:
- Hint 1: Reading the Hessian
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.
- Hint 2: Solution
Compute the eigenvalues of the mass-weighted Hessian:
You should consider using the same canned diagonalization function you used in Project #1.
- Hint 3: Solution
The vibrational frequencies are proportional to the squareroot of the eigenvalues of the mass-weighted Hessian:
The most common units to use for vibrational frequencies is cm-1.
- Hint 4: Solution
E.B. Willson, J.C. Decius, and P.C. Cross, Molecular Vibrations, McGraw-Hill, 1955.
- Water: Coordinates | Hessian | Output (see the note at the bottom of Hint 4)
- Benzene: Coordinates | Hessian | Output
- 3-chloro-1-butene: Coordinates | Hessian | Output