ReactionMechanismGenerator / RMG-Py

Python version of the amazing Reaction Mechanism Generator (RMG).
http://reactionmechanismgenerator.github.io/RMG-Py/
Other
382 stars 226 forks source link

Re-using thermo of saturated species? #377

Closed nickvandewiele closed 1 year ago

nickvandewiele commented 9 years ago

This issue (rather: a potential performance gain) was raised by @connie and I believe she has a valid point.

In the current design we compute the thermochemistry of a molecule based on the fact whether it is present in the core or the edge of the CoreEdgeReactionModel. If a species is not present in union(core,edge), the thermochemistry will be computed.

However, there's a subspace of molecules for which the thermo will be calculated, regardless whether they belong to the core or edge: the saturated parent molecules.

For example:

When cyclohexane undergoes H-abstraction reactions

image

leading to 5 distinct radicals image

When estimating the thermochemistry of the 5 radicals via the HBI method, the saturated molecule 'cyclohexane' will be generated for each of the 5 cases.

image

Two remarks here:

The trade-off that should be considered here: Is looking up the thermo for saturated species slower or faster than recomputing it in the first place?

In the current state of RMG-Py, we are forced to run species isomorphisms to compare species. But imagine a design with clever molecular fingerprints, and clever molecular caches that reduce the number of expensive isomorphism checks.

Or imagine a hashed species dictionary where the retrieval of elements does not scale with the size of the dictionary (O(1)) as opposed to the current design that uses the very generic molecular formula as a key.

Thirdly, thermo originating from QMTP might be orders of magnitude more expensive to re-compute than thermo originating from group additivity.

connie commented 9 years ago

Recalculation of saturated molecule thermo is only done for GA. For QM this issue does not exist because RMG sees the cached thermo output files in the QMfiles folder.

rwest commented 9 years ago

True, but issue #375 makes me want to check we're saving the symmetry number in there too and loading it, otherwise even if the saturated molecule thermo itself is not recalculated, the symmetry number correction will be. I haven't checked if this is the case. But it's a fairly minor point.

connie commented 9 years ago

Pretty sure a symmetry-> entropy correction is not redone for QM. The symmetry calculation is performed in calculateThermoData() in qm/molecule.py The generateThermoData() function that calls it returns the thermo if it exists prior to calling the calculateThermoData function.

github-actions[bot] commented 1 year ago

This issue is being automatically marked as stale because it has not received any interaction in the last 90 days. Please leave a comment if this is still a relevant issue, otherwise it will automatically be closed in 30 days.