Skip to content

Draft: Implement Multiple Approximations for Thermochemistry

Patrick Melix requested to merge patrickmelix/ase:frequency-grimme into master

We implemented the quasi-Harmonic and msRRHO (and automatically with this the quasi-RRHO) approximation by Grimme et al. (based on 10.1002/chem.201200497 and 10.1039/D1SC00621E) for our own usage.

I tried to integrate it as much as possible into the existing framework and reuse as much as possible from the HarmonicThermo class.However one change was necessary:

The _clean_vib_energies was set up previously by @AndrewRosen to remove imaginary frequencies. In these communities however, imaginary frequencies are not removed but rather "made real". Therefore, I refactored the existing _clean_vib_energies to now have three capabilities:

  1. Raise an error
  2. Delete the imaginary numbers
  3. Multiply imaginary numbers by -i to make them real

This is a breaking change compared to the previous behavior, but as @AndrewRosen pointed out, it was not included in a release yet.

ToDo: Remove old option and replace instead of adding as suggested below

In order to keep backward compatibility, I did not remove the old boolean keyword but rather added a new imag_modes_handling in all classes. Documentation and tests are included.

We are looking at implementing more schemes in the future, so I'm putting this here as a Draft to avoid multiplying the work later on.

Please let me know what you think, I'm happy to adapt almost anything.

Edit: Just noticed I can have the quasiRRHO approach as in ORCA without any new functions for free too, gonna add that.

ToDo:

  • Add Truhlars method of setting a lower frequency limit (quasi-Harmonic)
  • Add Grimme's method to the vibrational part (10.1002/jcc.27129) @ppwellmann
Edited by Patrick Melix

Merge request reports