ReactionMechanismGenerator / ReactionMechanismGenerator/RMG-Py

Consistent Non-deterministic Behavior in Thermo (polycylic) and Kinetics (Peroxyl_Disproportionation)

Open
#2,490 5 comments 0 reactions 1 assignee View on GitHub

@xiaoruiDong is already working on this.

Since Oct 24, 2023.

bug
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

Screenshot 2023-06-09 at 2 13 34 PM ``` 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.60

Kinetics: 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/(mol
s)'), 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:
image
image
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.