-
Notifications
You must be signed in to change notification settings - Fork 873
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
QChem: add CMIRS solvent model support #2215
Conversation
These sections are required in order to use the new CMIRS solvation model
@samblau @espottesmith I want to flag this for you guys to start reviewing as it's 95% done. I'm leaving in WIP status b/c I want to add output parsing before merging, but the input setup parts are solid. I particularly want to call attention to the change in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly seems fine to me. A few small style things, a naming issue, but the bulk of the work looks solid. Looking forward to seeing your output parser and getting this integrated into atomate/emmet!
__copyright__ = "Copyright 2018, The Materials Project" | ||
__version__ = "0.1" | ||
__email__ = "[email protected]" | ||
__credits__ = "Xiaohui Qu" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably Xiaohui should still get credit. His original work inspired what's now in pymatgen.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess I'm not clear on the distinction between __credits__
and __authors__
(I might just be ignorant). Those seemed equivalent to me. Happy to revert though if __credits__
implies origination or some other special status.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did make sure to add Xiaohui to the __authors__
list for any file where he was listed in __credits__
, in case that wasn't obvious
pymatgen/io/qchem/inputs.py
Outdated
svp={"RHOISO": 0.001, "DIELST": 78.39, "NPTLEB": 110} | ||
Note that the "DIELST" setting has no effect on non-isodensity SS(V)PE calculations (i.e., when | ||
solvent_method = PCM). | ||
pcm_nonels (dict): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This name feels misleading and possibly just wrong. These aren't PCM parameters. They're nonelectrostatic implicit solvent parameters for CMIRS.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's fair; however $pcm_nonels
is the name Q-Chem chose for the relevant input file section. It seems like throughout our infrastructure we use the exact section names as variables (e.g. rem
, solvent
, etc.) to avoid ambiguity, so I thought it best to do so here as well.
OK, I have the basics of output parsing in place now. However I'm having difficulty understanding how Specifically:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few very minor things, but over all looks great. Output testing still needed before PR is finalized.
@samblau ready for another review. Per our discussion, I went ahead and nested the solvent data under I will test this with atomate soon and report back if I encounter any problems. |
UPDATE: I've done some testing of this with
However I'm working on pinning down what's going on here, and that might warrant some small modifications to the IO. See forum post |
Alright, I think all issues have been resolved and this is working as intended. I learned (the hard way) that you have to disable After adding those changes to our IO, I have successfully set up and run single point calcs using all four solvent models (PCM, SMD, ISOSVP, and CMIRS) and inspected the Unless @samblau or @espottesmith spot anything problematic, I think this is ready to merge. |
I'd like to go ahead and merge this -- @samblau, @espottesmith unless you have any objections, will go ahead. |
@mkhorton looks good to me! merge away |
Thanks @rkingsbury, merged :) |
Summary
Additions to
QCInput
andQChemDictSet
needed to support the new CMIRS implicit solvent model and the isodensity implementation of SS(V)PE.See relevant Q-Chem manual pages:
Specific changes include:
$svp
and$pcm_nonels
sections inQCInput
isosvp_dielectric
andcmirs_solvent
kwargs and documentation toQChemDictSet
and all inheritedInputSet
classesDMSO
works.lower_and_check_unique
utility such that it converts all values (including numeric values) to strings. This was necessary to facilitate reading/writing numerical parameters to and from files. the already-existingpcm_defaults
dictionary usedstr
to store its numerical parameters, so this change appears to be consistent with the original design intent and it appears not to break anything. However, as a result of that change, thedielectric
attribute is now astr
and not afloat
.lower_and_check_unique
__version__=0.1
didn't seem meaningful and it didn't make sense to have Brandon's stale email in theresolvent_data.cmirs
andsolvent_data.isosvp
, respectively. Per discussion with @samblau , this is in preparation for nesting PCM and SMD data in a similar way, which we plan to do in a separate PR.TODO