Skip to content

Add selective solvation corrections for liquid phase psecies #2823

@ssun30

Description

@ssun30

Motivation or Problem

Currently, RMG applies implicit solvation corrections to all species in the solvent phase. However, in some cases, species thermochemistry is obtained from DFT calculations that already include explicit solvation effects. Applying an additional implicit correction to these species would result in double counting, reducing the accuracy of the model. This change would allow users to opt out of solvation corrections on a per-species/library basis, ensuring more accurate and flexible thermochemistry handling.

Desired Solution

I've opened #2818 but it's still just a draft at this point. Since the functions used to generate thermo properties take solvent_name as an input parameter, IMO the proper way to do this is creating a dummy solvent with zero effects, and use it for the excluded species.

For input file processing I added two more attributes solvation_excluded_species and solvation_excluded_libraries. I then need to make a database of species that are in these two lists although I'm not sure not to implement that yet.

Then when a new species thermo is generated (in CoreEdgeReactionModel.generate_thermo, an isomorphism check (to all species in the excluded species database) is performed to determine whether the dummy solvent should be used. I'm not sure if this will create a performance bottleneck. Is a SMILES string check sufficient?

The alternative is performing this check at the last level (in thermoengine.process_thermo_data) so only liquid-phase species are considered, but that would require making the database of excluded species a global variable and I'm not sure about RMG's policy with the use of global variables (potential memory safety problems?).

Thoughts are welcome @rwest @mjohnson541 @JacksonBurns

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions