Draft: Implement Multiple Approximations for Thermochemistry
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:
- Raise an error
- Delete the imaginary numbers
- 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