This release primarily adds transition state optimization, but also includes many other improvements since the release of v0.9.7.2 more than three years ago. Many more exciting features are being prepared for future versions so stay tuned.
Major new features:
- Transition state optimization has been implemented. Read documentation for additional details.
- Numerical Hessian calculation and frequency analysis. Includes generation of position and velocity sample points from Wigner distribution.
- Improved MECI optimization engine to find conical intersections between any number of states, not just two.
- Subtract net force and torque during optimization. Default behavior is to turn on after a poor-quality step dominated by net translation / rotation is detected.
- Interface to Gaussian 09/16 (Josh Horton).
- Interface to ASE for evaluating energies and forces using ASE-supported codes (Tamar Stenczel).
Minor features and improvements:
- Improved organization of example calculations, unit tests, and logging.
- Testing coverage has been improved to above 90%.
- Automated testing using GitHub Actions (Tamar Stenczel).
- For linear molecules, a regularization term has been added to the rotation quaternion instead of adding a dummy atom.
- Added an option for the maximum displacement taken over all atoms to be used as the trust radius, rather than the default behavior which uses RMS displacement.
- Detection of DFT in most Engine subclasses. Print out a warning if DFT is combined with a coordinate system that includes global translation and rotation, because the use of too-small DFT grids could lead to lack of rotational invariance of the energy.
- Added an option to set minimum trust radius. Its purpose is to prevent artificial convergence of the step size criteria due to the trust radius being too small, and also to prevent shrinking the step size to zero due when a non-smooth PES is encountered.
- Optimization parameters are now printed out at job start.
- Orbital guesses are loaded from the last good step when a step is rejected (requires `save/load_guess_files` to be implemented in Engine).
- When a previously rejected step is taken again, accept the step to avoid an infinite loop.
- Add a performance plotting script under `tools/` that can be used to compare performance across multiple runs.
- Constraint violation convergence threshold is now adjustable and part of `params`; its value is unchanged from the default of 1e-2.
- When building primitive ICs, add bonds between isolated atoms and the nearest molecule.
- Improve copying and slicing behavior of Molecule object
- Note for posterity: Over the course of many tests, the linear angle thresholds and initial value of the Hessian diagonal for dihedral angles were adjusted, tested, then set back to their original values because they did not improve performance, and in some cases degraded performance.