Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minimum energy crossing point / conical intersection optimization #82

Merged
merged 3 commits into from
Apr 16, 2019

Conversation

leeping
Copy link
Owner

@leeping leeping commented Apr 15, 2019

This PR adds a new feature and makes a number of changes:

  • The penalty-constrained optimization for minimum energy conical intersections and minimum energy crossing points has been generalized to work with any engine. Previously there was only a specialized engine that was a modified version of the TeraChem engine.

To run this job from the command line, pass a second input file as the parameter to the --meci option in addition to the original input file. The two input files correspond to computing the two electronic states for which the MECI/MECP is desired. On the back end, the MECI engine contains two sub-engines created from the two input files, and the optimization will minimize the average of the energy with a penalty function applied to the energy difference. The objective function being minimized is described in Levine, Coe, and Martinez (http://dx.doi.org/10.1021/jp0761618)

This implementation assumes that each input file calculates the energy and gradient of only one of two electronic states, so methods that calculate both states in a single QC call do not work at the moment (as there needs to be a way to parse out the energies and gradients of each state).

This feature was added because crossing points between closed-shell and diradical SCF solutions were found in optimizations of several reaction pathways at the DFT level for an ongoing research project. An example calculation will be added following publication of the paper, but any suggestions for simpler examples are welcome.

  • New specification for return value of Engine.calc_new(). Instead of passing back the energy and gradient as a 2-tuple, a dictionary is returned that contains {'energy':energy, 'gradient':gradient}. The main benefit is that other properties can also be returned. The MECI engine makes use of this by printing out the <S^2> expectation value of each state calculated by the sub-engines. @sunqm @dgasmith @bgobbi @yudongqiu may want to know about this change.

  • Guess file handling for TeraChem has been refactored and moved into its own function for easier maintenance.

@codecov-io
Copy link

Codecov Report

Merging #82 into master will increase coverage by 0.08%.
The diff coverage is 28%.

@leeping leeping merged commit 0007fbf into master Apr 16, 2019
@leeping leeping deleted the meci branch July 4, 2020 23:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants