ReactionMechanismGenerator / ReactionMechanismGenerator/RMG-Py
Consistent Non-deterministic Behavior in Thermo (polycylic) and Kinetics (Peroxyl_Disproportionation)
@xiaoruiDong is already working on this.
Since Oct 24, 2023.
- Dominant language
- Python
- Stars
- 530
- Forks
- 260
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 8
Description
Bug Description
The regression tests are showing up differences between models, when no relevant changes to RMG have been made. The differences seem to be random
Non-identical kinetics!
original:
rxn: CCCC(C)O[O](20) + CCCCCO[O](103) <=> oxygen(1) + CCCC(C)[O](64) + CCCCC[O](128) origin: Peroxyl_Disproportionation
tested:
rxn: CCCC(C)O[O](20) + CCCCCO[O](103) <=> oxygen(1) + CCCC(C)[O](64) + CCCCC[O](128) origin: Peroxyl_Disproportionation
k(1bar)|300K |400K |500K |600K |800K |1000K |1500K |2000K
k(T): | 3.77| 4.45| 4.86| 5.14| 5.48| 5.68| 5.96| 6.09
k(T): | 7.83| 7.49| 7.23| 7.02| 6.68| 6.42| 5.95| 5.61
Kinetics: Arrhenius(A=(3.2e+12,'cm^3/(mol*s)'), n=0, Ea=(3.756,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R""")
Kinetics: Arrhenius(A=(3.18266e+20,'cm^3/(mol*s)'), n=-2.694, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing""")
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing
and in a different model
Non-identical kinetics!
original:
rxn: CCCC(C)O[O](20) + CCCCCO[O](103) <=> oxygen(1) + CCCC(C)[O](64) + CCCCC[O](128) origin: Peroxyl_Disproportionation
tested:
rxn: CCCC(C)O[O](20) + CCCCCO[O](103) <=> oxygen(1) + CCCC(C)[O](64) + CCCCC[O](128) origin: Peroxyl_Disproportionation
k(1bar)|300K |400K |500K |600K |800K |1000K |1500K |2000K
k(T): | 3.77| 4.45| 4.86| 5.14| 5.48| 5.68| 5.96| 6.09
k(T): | 7.83| 7.49| 7.23| 7.02| 6.68| 6.42| 5.95| 5.61
Kinetics: Arrhenius(A=(3.2e+12,'cm^3/(mol*s)'), n=0, Ea=(3.756,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R""")
Kinetics: Arrhenius(A=(3.18266e+20,'cm^3/(mol*s)'), n=-2.694, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing""")
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing
See my comment https://github.com/ReactionMechanismGenerator/RMG-Py/pull/2452#issuecomment-1584973740
Comparing the model edge for the liquid_oxidation
``` Non-identical kinetics! original: rxn: CCCCCO[O](104) + CC(CC(C)OO)O[O](103) <=> oxygen(1) + CCCCC[O](128) + CC([O])CC(C)OO(127) origin: Peroxyl_Disproportionation tested: rxn: CCCCCO[O](104) + CC(CC(C)OO)O[O](103) <=> oxygen(1) + CCCCC[O](127) + CC([O])CC(C)OO(129) origin: Peroxyl_Disproportionation k(1bar)|300K |400K |500K |600K |800K |1000K |1500K |2000K
k(T): | 3.52| 4.27| 4.71| 5.01| 5.39| 5.61| 5.91| 6.06
k(T): | 7.79| 7.46| 7.21| 7.00| 6.67| 6.41| 5.94| 5.60Kinetics: Arrhenius(A=(3.2e+12,'cm^3/(mols)'), n=0, Ea=(4.096,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R""")
Kinetics: Arrhenius(A=(3.18266e+20,'cm^3/(mols)'), n=-2.694, Ea=(0.053,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing Ea raised from 0.0 to 0.2 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing Ea raised from 0.0 to 0.2 kJ/mol to match endothermicity of reaction.Perhaps an instance of something like #2010 ? This may be related #1027 but is 6 years old and quite likely outdated. We need to decide what counts as a regression worth failing the tests for!
and Matt's reply
https://github.com/ReactionMechanismGenerator/RMG-Py/pull/2452#issuecomment-1584990833
Those two nodes are parent and child and look like this:
I'm wondering a little bit if this is something related to how the atoms are labeled in that family...in R_Recombination we handle the fact that the radicals aren't unique by using the same label for both radicals...but here the -O[O]'s are labeled differently so I could imagine the prediction is dependent on where the isomorphism (that will match both ways) puts the labels. (I.E. if it puts *1 and *2 on the branched species and *3 and *4 on the other it will match the less specific group while if it puts *1 and *2 on the non-branched species it will match the more specific group.
How To Reproduce
Run (or look at) the regression tests for a pull request that doesn't change RMG code (eg. it makes some other change). Two models built with identical code will have different results.
Expected Behavior
RMG results wouldn't be random.
Installation Information
Describe your installation method and system information.
- OS: latest ubuntu github actions runner
- Installation method: from source in conda environment
- RMG version information:
- RMG-Py: current main
- RMG-database: current main
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.
```
Non-identical kinetics!
original:
rxn: CCCCCO[O](104) + CC(CC(C)OO)O[O](103) <=> oxygen(1) + CCCCC[O](128) + CC([O])CC(C)OO(127) origin: Peroxyl_Disproportionation
tested:
rxn: CCCCCO[O](104) + CC(CC(C)OO)O[O](103) <=> oxygen(1) + CCCCC[O](127) + CC([O])CC(C)OO(129) origin: Peroxyl_Disproportionation
k(1bar)|300K |400K |500K |600K |800K |1000K |1500K |2000K

