-
Notifications
You must be signed in to change notification settings - Fork 36
Polycyclics thoughts: on-the-fly vs group additivity #273
Comments
Here is a sample Mopac file that can give two different outputs based on the machine it was run.
RMG generates one of these thermo values based on Mopac output (where the difference originated): Thermo for FBVAULMWQCXHBR-UHFFFAOYAF: Thermo for FBVAULMWQCXHBR-UHFFFAOYAF: There is no fault on RMG side for this problem. As Nick mentioned, this is related to the number of cycles in Mopac optimization step. In machines with different floating point handlings (e.g. 8 core nodes vs 48 core nodes on pharos) you can observe that one can achieve convergence earlier than other. Possible solutions are either recompiling Mopac (or maybe updating to a newer version) with flags that ensure numerics are independent of the machine (Ray's suggestion) or setting a tighter convergence (change first line as: pm3 let precise nosym gnorm=0.0001 SCFCRT=1.D-10) to minimize the difference. If we can find an open source (with GPL or similar license) alternative to Mopac for PM3 calculations, that might be the best solution, since it gives the option to pack it with RMG. |
the interesting thing is also that significant differences in this example are limited to the entropy, and not to the heat capacity. any idea if this is the case for other examples too? |
I'm trying to merge the polycyclics work into master for the 4.0 release, but when I test it I found a problem: monocyclics are not having any ring corrections applied (during a regular RMG job without QMTP). The log file is full of |
I assume that the strategy you used to deal with cyclics is the one in which QMTP is explicitly not used. In case of a monocyclic species, RMG searches through Ring_Library/Dictionary/Tree.txt to find an apt ring correction. If there was not a single ring correction that fitted the description of the SSSR atoms, then it warns the user that thermo for that species did not contain any ring correction. Previously, RMG would silently use the most generic ring correction, e.g. five-membered-ring (or which one did it use in this case). Currently, it does not add any correction, but instead warns the user about this. Next, the user would need to supply a more accurate thermo for that particular ring correction/species, or use the strategy that automatically switches to QMTP to provide thermo estimates. So, the printed message in the log warns the user that he/she should revise the ring correction libraries. That was the behaviour i aimed at. In conclusion, the discrepancies of 6 kcal/mol are presumably the correction for a generic_five_member_ring that is pointing to something like cyclopentane. Does that make sense to you? |
That makes sense. However, I think we should still use the generic ring corrections as before, even if they aren't a perfect match, while keeping the error message. (Maybe only print the error message for polycyclics, not monocyclics?) Otherwise people would need to run QMTP all the time, which I think is overkill for the model I am trying to build. The only significant cyclics in my model are monocyclic ethers formed from the low-temperature peroxy chemistry, and the generic ring corrections were good enough to get the major cyclic ethers correct without QMTP. Basically, I think that some ring corrections + warning is better than no ring corrections + warning. At some point we may want to gather warnings such as these and print them at the end of the log file so they are easier to find (similar to the way LaTeX does), but that's for another issue. |
ok, fair enough. I understand your point. I think it's pretty easy to change to "corrections + warning". I'll look into where exactly this needs to be changed. Of course, this strategy was based on my experiences with my systems of interest where crazy species such as C1=C=CCC1 kept on accumulating because they were as stable as "regular" cyclopentanes. |
We were able to get the old functionality by removing lines 356-357 in ThermoGAGroupLibrary.java and replacing with an error warning message instead of returning null: This will probably screw up the hybrid and qmtp schemes completely though. So we need to figure out how to maintain the functionality for hybrid and qmtp but still have generic ring strain corrections incorporated when it's BensonOnly. |
Without having tested anything: why don't you change the value 1 to 0?
what this should do is take the L1 hit (e.g. L1: FiveMember) in Ring_Tree.txt as a value for the ThermoGAValue. Only if the ring hits L0 ("Ring"), then it will return null. This seems to be less invasive than your idea. |
I think that would have the same effect as my idea (fix the BensonTDGenerator but break the HybridTDGenerator) because I don't think we ever stop at the L0 node since there are L1 nodes for three-membered to ten-membered rings. The challenge here seems to be that |
Just a post to share my experiences with thermochemistry for polycyclics.
Greg implemented the semi-empirical PM3 , molecular mechanics MM4 features. I extended Benson for polycyclics by creating a new polycyclic ring correction library. Both were fueled by the sense that something was very wrong with the thermo for polycyclic molecules.
Both have weaknesses and strengths:
For some reason, unknown to me, the enthalpy by MM4 ends up being 323 kcal/mol while 19 kcal/ mol is a reasonable estimate.
In conclusion:
I am thinking of creating a new thermochemistry for polycyclics strategy where enthalpies are preferrably based on polcycylic library corrections while S, and Cps are calculated on-the-fly, and thus benefitting from the strengths of both approaches.
this should definitely improve the accuracy but will lead to longer simulation times, compared to the current strategy, where on-the-fly calcs are only done on species that did not have library entries.
Let me know what you think about this.
The text was updated successfully, but these errors were encountered: