cclib / cclib

Parsers and algorithms for computational chemistry logfiles
https://cclib.github.io/
BSD 3-Clause "New" or "Revised" License
336 stars 169 forks source link

Non-stationary point used in vib unit tests #136

Open langner opened 10 years ago

langner commented 10 years ago

The coordinates we use for vibrational analysis, at least in some cases, is not a stationary point. While this probably does not influence the performance of parsers, it would be nice to do these calculations at startionary points. I'm not sure which programs check this and report it, but GAMESS-US does: https://github.com/cclib/cclib/blob/master/data/GAMESS/basicGAMESS-US2012/dvb_ir.out#L11303

(I dug this up from an old email on the ML)

langner commented 10 years ago

Kind of part of #45.

berquist commented 10 years ago

I think that this depends on whether or not a program projects out translations and rotations, just assumes the lowest six modes can be ignored and throws them out, or leaves them in. Q-Chem does the second and maybe the first (54 modes), GAMESS-US does the last (60 modes), Gaussian does the second, and ORCA does the second.

langner commented 10 years ago

I'd like to understand the details about this:

ATenderholt commented 10 years ago

ORCA prints the translations/rotations with the vibrations---the six lowest frequencies in dvb_ir and dvb_raman are all 0---but the parser ignores the first six modes and prints a message if any are non-zero. This is dangerous if it's a transition state structure and throws out the imaginary mode. It's also a problem if it's a linear molecule and should only be throwing out five modes. Maybe we should have something like hydrogen cyanide as a regression?

For Gaussian, there is a block of "Low frequencies" that we could parse since it includes the 6 low-frequency modes that it assigns as vibrations/translations.

As far as "projecting out transitions and rotations", I think this Gaussian page explains it: http://www.gaussian.com/g_whitepap/vib.htm

berquist commented 10 years ago

The general procedure is outlined here: http://www.gaussian.com/g_whitepap/vib.htm

Projection refers to the transformation from mass-weighted Cartesian coordinates to internal coordinates, and in the process of this transformation one can separate out translational and rotational modes from the vibrational modes. This can introduce some variation in the final results.

Compare the lowest 9 modes of the GAMESS-US and Gaussian outputs (from "Low frequencies"): -15.52 -8.02 -0.06 0.03 1.06 11.21 47.87 81.04 152.39 -6.0594 -4.5939 -0.0005 -0.0003 -0.0003 3.9500 52.7881 83.9570 148.1576

Gaussian doesn't complain about this; if it were the 5th or 6th mode, it would. I'm not sure that it's an issue.

A harmonic approximation is still used in Q-Chem.

Looks like Adam beat me to the punch.

langner commented 10 years ago

OK, so this means simply removing the lowest frequency rotational and translational modes. Still, the vibrational analysis is not valid if the geometry is not a stationary point, right? That is my main concern at this point.

I understand there are some subtlties here that can be considered. We can add some additional regressions to take them into account, of course.

langner commented 6 years ago

@berquist What do you think about this? Is there something specific action items we can identify here to make this concrete?

berquist commented 6 years ago

I'm confused because other than an old ORCA unit test that's probably a bad calculation or a bug, an ORCA regression, and two ADF unit tests, none of IR outputs present negative frequencies in the regular output (not talking about the "low frequencies" section because not all programs have that).

A partial fix to the solution is

  1. use that program's (+ version) converged geometry for a frequency calculation with all default symmetry enabled.

The most complete solution is to

  1. switch to Hartree-Fock for most tests,
  2. pick a uniform non-stationary starting geometry for most calculation types across all programs,
  3. use that program's (+ version) converged geometry for a frequency calculation with all default symmetry enabled.
langner commented 6 years ago

I like the complete solution most - let's coordinate after v1.5.3 is out.