Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid Unnecessary Julia Operations + Optional RMS Installation #2631

Open
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

JacksonBurns
Copy link
Contributor

Replaces part of #2539 which 1. fixed the conda recipe 2. added a subpackage 3. avoided unnecesary RMS operations and 4. grew totally un-reviewable. This PR contains only 3. - later PRs will implement 1. and 2.

Description of Changes

Two new internal-only boolean variables are added, NO_JULIA and requires_rms:

  • NO_JULIA is set based on whether or not the Julia dependencies (which are now optional) are installed. This resolves Arkane takes a long time to run due to loading Julia dependencies #2547 by allowing for a standalone installation of RMG or Arkane.
  • requires_rms is set if the user calling RMG actually has a reactor system that requires an RMS-based reactor. This avoids a lot of work (see which lines can now be skipped in this PR) when running RMG from the CLI inside the Docker container (or a source install with RMS).

I have also renamed the reactors file for clarity, to differentiate it from reactors.py which has the RMG-based pure-python reactors.

Impact of Changes

As of right now, the CI and Docker image still install Julia and RMS as they do now, so the version of RMG that we send out has all the features RMS offers.
This change is intended for:

  • generally speeding up RMG
  • allowing people to extend RMG more easily
  • allow fixing the conda recipe (see the referenced PR at the top that necessitated this change, or wait for the follow up PR)

TODO Before Merging

Update user-facing docs to provide details on how to do a julia-less installation and indicate which features require Julia.

I am opening and requesting review now so that we can hash out the finer points of the implementation, and then I can write up the docs for the users once that is settled.

@JacksonBurns JacksonBurns self-assigned this Mar 11, 2024
@JacksonBurns JacksonBurns force-pushed the fix/avoid_unnecessary_julia branch 3 times, most recently from 52ada46 to ab9468e Compare March 11, 2024 17:16
@JacksonBurns
Copy link
Contributor Author

JacksonBurns commented Mar 11, 2024

Also TODO: use pytest.mark to label tests with those that require Julia to allow for running pytest without the Julia stuff.

Also also TODO: after updating the documentation, add a link to the Julia-related installation steps in the exception that is thrown when attempting to call RMS without it installed. See #2631 (comment)

@mjohnson541
Copy link
Contributor

I'm all in favor of avoiding the julia start up cost for runs that don't need it. Which should solve issue #2547. Although, as I noted in that issue Arkane is dependent on pyjulia entirely independently of RMS.

However, RMS is not an optional install or anything you can treat as an optional backend. We have published RMG features that are not available without RMS, RMS is the only sensible way right now to add a new reactor to RMG, RMG electrochemistry is entirely dependent on RMS because none of the RMG reactors can run it.

Doing so does not save anyone time maintaining the installation because the installation with RMS has to work regardless. The initial install time for RMS is not particularly burdensome. It will even make debugging PRs more complicated because there will be more differences between users' local copies and the tests.

Copy link

Regression Testing Results

⚠️ One or more regression tests failed.
Please download the failed results and run the tests locally or check the log to see why.

Detailed regression test results.

Regression test aromatics:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:07
Current: Execution time (DD:HH:MM:SS): 00:00:01:04
Reference: Memory used: 3046.07 MB
Current: Memory used: 3027.16 MB

aromatics Passed Core Comparison ✅

Original model has 15 species.
Test model has 15 species. ✅
Original model has 11 reactions.
Test model has 11 reactions. ✅

aromatics Passed Edge Comparison ✅

Original model has 106 species.
Test model has 106 species. ✅
Original model has 358 reactions.
Test model has 358 reactions. ✅

Observables Test Case: Aromatics Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

aromatics Passed Observable Testing ✅

Regression test liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:19
Current: Execution time (DD:HH:MM:SS): 00:00:02:04
Reference: Memory used: 3158.95 MB
Current: Memory used: 3118.50 MB

liquid_oxidation Failed Core Comparison ❌

Original model has 37 species.
Test model has 37 species. ✅
Original model has 215 reactions.
Test model has 216 reactions. ❌
The tested model has 1 reactions that the original model does not have. ❌
rxn: CCO[O](31) <=> [OH](22) + CC=O(69) origin: intra_H_migration

liquid_oxidation Failed Edge Comparison ❌

Original model has 202 species.
Test model has 202 species. ✅
Original model has 1610 reactions.
Test model has 1610 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCO[O](31) <=> C[CH]OO(70) origin: intra_H_migration
The tested model has 1 reactions that the original model does not have. ❌
rxn: CCO[O](31) <=> [OH](22) + CC=O(69) origin: intra_H_migration

Non-identical kinetics! ❌
original:
rxn: CCCCCO[O](103) + CC(CC(C)OO)O[O](104) <=> oxygen(1) + CCCCC[O](127) + CC([O])CC(C)OO(129) origin: Peroxyl_Disproportionation
tested:
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

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 7.79 7.46 7.21 7.00 6.67 6.41 5.94 5.60
k(T): 3.52 4.27 4.71 5.01 5.39 5.61 5.91 6.06

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: Arrhenius(A=(3.2e+12,'cm^3/(mol*s)'), 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: 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

Observables Test Case: liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

liquid_oxidation Passed Observable Testing ✅

Regression test nitrogen:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:25
Current: Execution time (DD:HH:MM:SS): 00:00:01:13
Reference: Memory used: 3159.87 MB
Current: Memory used: 3116.13 MB

nitrogen Passed Core Comparison ✅

Original model has 41 species.
Test model has 41 species. ✅
Original model has 360 reactions.
Test model has 360 reactions. ✅

nitrogen Passed Edge Comparison ✅

Original model has 132 species.
Test model has 132 species. ✅
Original model has 997 reactions.
Test model has 997 reactions. ✅

Observables Test Case: NC Comparison

✅ All Observables varied by less than 0.200 on average between old model and new model in all conditions!

nitrogen Passed Observable Testing ✅

Regression test oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:33
Current: Execution time (DD:HH:MM:SS): 00:00:01:49
Reference: Memory used: 3024.88 MB
Current: Memory used: 2983.54 MB

oxidation Passed Core Comparison ✅

Original model has 59 species.
Test model has 59 species. ✅
Original model has 694 reactions.
Test model has 694 reactions. ✅

oxidation Passed Edge Comparison ✅

Original model has 230 species.
Test model has 230 species. ✅
Original model has 1526 reactions.
Test model has 1526 reactions. ✅

Observables Test Case: Oxidation Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

oxidation Passed Observable Testing ✅

Regression test sulfur:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:57
Current: Execution time (DD:HH:MM:SS): 00:00:00:50
Reference: Memory used: 3120.30 MB
Current: Memory used: 3120.82 MB

sulfur Passed Core Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 74 reactions.
Test model has 74 reactions. ✅

sulfur Failed Edge Comparison ❌

Original model has 89 species.
Test model has 89 species. ✅
Original model has 227 reactions.
Test model has 227 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary
The tested model has 1 reactions that the original model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary

Observables Test Case: SO2 Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

sulfur Passed Observable Testing ✅

Regression test superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:36
Current: Execution time (DD:HH:MM:SS): 00:00:00:32
Reference: Memory used: 3230.77 MB
Current: Memory used: 3233.35 MB

superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 21 reactions.
Test model has 21 reactions. ✅

superminimal Passed Edge Comparison ✅

Original model has 18 species.
Test model has 18 species. ✅
Original model has 28 reactions.
Test model has 28 reactions. ✅

Regression test RMS_constantVIdealGasReactor_superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:31
Current: Execution time (DD:HH:MM:SS): 00:00:02:27
Reference: Memory used: 3704.26 MB
Current: Memory used: 3710.76 MB

RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_superminimal Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_superminimal Passed Observable Testing ✅

Regression test RMS_CSTR_liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:05:52
Current: Execution time (DD:HH:MM:SS): 00:00:06:08
Reference: Memory used: 3641.41 MB
Current: Memory used: 3659.30 MB

RMS_CSTR_liquid_oxidation Failed Core Comparison ❌

Original model has 35 species.
Test model has 37 species. ❌
Original model has 211 reactions.
Test model has 232 reactions. ❌
The tested model has 2 species that the original model does not have. ❌
spc: CCC(37)
spc: C[CH]OCCC(128)
The tested model has 21 reactions that the original model does not have. ❌
rxn: [CH2]CC(5) + pentane(2) <=> CCC(37) + CC[CH]CC(7) origin: H_Abstraction
rxn: [CH2]CC(5) + pentane(2) <=> CCC(37) + C[CH]CCC(11) origin: H_Abstraction
rxn: CCC(37) + [CH2]CCCC(12) <=> [CH2]CC(5) + pentane(2) origin: H_Abstraction
rxn: [CH2]CC(5) + CCCC(C)OO(59) <=> CCC(37) + CCCC(C)O[O](33) origin: H_Abstraction
rxn: [CH2]CC(5) + CCCC(C)OO(59) <=> CCC(37) + C[CH]CC(C)OO(48) origin: H_Abstraction
rxn: [CH2]CC(5) + C[CH]CCC(11) <=> CCC(37) + C=CCCC(25) origin: Disproportionation
rxn: [CH2]CC(5) + CCC(CC)OO(21) <=> CCC(37) + CCC(CC)O[O](18) origin: H_Abstraction
rxn: [CH2]CC(5) + CCCCCOO(90) <=> CCC(37) + CCCCCO[O](70) origin: H_Abstraction
rxn: [CH2]CC(5) + CCCOO(60) <=> CCCO[O](35) + CCC(37) origin: H_Abstraction
rxn: OO(20) + [CH2]CC(5) <=> [O]O(13) + CCC(37) origin: H_Abstraction
rxn: [OH](22) + CCC(37) <=> O(40) + [CH2]CC(5) origin: H_Abstraction
rxn: CC=O(100) + [CH2]CC(5) <=> C[CH]OCCC(128) origin: R_Addition_MultipleBond
rxn: [O]O(13) + [CH2]CC(5) <=> oxygen(1) + CCC(37) origin: H_Abstraction
rxn: [CH2]CC(5) + [CH2]CCCC(12) <=> CCC(37) + C=CCCC(25) origin: Disproportionation
rxn: [CH2]CC(5) + CCCC(C)OO(59) <=> CCC(37) + CC[CH]C(C)OO(46) origin: H_Abstraction
rxn: [CH2]CC(5) + CCC(CC)OO(21) <=> CCC(37) + C[CH]C(CC)OO(29) origin: H_Abstraction
rxn: [CH2]CC(5) + CC(CC(C)OO)OO(171) <=> CCC(37) + CC(CC(C)OO)O[O](148) origin: H_Abstraction
rxn: [CH2]CC(5) + CC[CH]CC(7) <=> CCC(37) + CC=CCC(16) origin: Disproportionation
rxn: [CH2]CC(5) + C[CH]CCC(11) <=> CCC(37) + CC=CCC(16) origin: Disproportionation
rxn: CCO[O](36) + C[CH]CCC(11) <=> CCOO(72) + CC=CCC(16) origin: Disproportionation
rxn: CCO[O](36) + CC[CH]CC(7) <=> CCOO(72) + CC=CCC(16) origin: Disproportionation

RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌

Original model has 197 species.
Test model has 206 species. ❌
Original model has 1421 reactions.
Test model has 1508 reactions. ❌
The tested model has 9 species that the original model does not have. ❌
spc: C[CH]OCC(142)
spc: C=COCCC(143)
spc: [CH2]COCCC(144)
spc: CC[CH]OCC(145)
spc: C[CH]COCC(146)
spc: [CH2]CCOCC(147)
spc: CCCOCC(149)
spc: CC([O])O(150)
spc: C[CH]C(O)CC(202)
The original model has 11 reactions that the tested model does not have. ❌
rxn: CCCO[O](35) <=> CC[CH]OO(45) origin: intra_H_migration
rxn: CCCC(C)[O](61) + C[CH]C(CC)OO(31) <=> CC=C(CC)OO(109) + CCCC(C)O(128) origin: Disproportionation
rxn: CCCC(C)[O](61) + C[CH]C(CC)OO(31) <=> C=CC(CC)OO(110) + CCCC(C)O(128) origin: Disproportionation
rxn: CCCC(C)[O](61) + C[CH]C(CC)OO(31) <=> CCCC(C)=O(49) + CCC(CC)OO(21) origin: Disproportionation
rxn: CCCC(C)[O](61) + CC[CH]C(C)OO(50) <=> CCC=C(C)OO(115) + CCCC(C)O(128) origin: Disproportionation
rxn: CCCC(C)[O](61) + CC[CH]C(C)OO(50) <=> CC=CC(C)OO(116) + CCCC(C)O(128) origin: Disproportionation
rxn: CCCC(C)[O](61) + CC[CH]C(C)OO(50) <=> CCCC(C)=O(49) + CCCC(C)OO(58) origin: Disproportionation
rxn: CCCC(C)[O](61) + C[CH]CC(C)OO(52) <=> CC=CC(C)OO(116) + CCCC(C)O(128) origin: Disproportionation
rxn: CCCC(C)[O](61) + C[CH]CC(C)OO(52) <=> C=CCC(C)OO(122) + CCCC(C)O(128) origin: Disproportionation
rxn: CCCC(C)[O](61) + C[CH]CC(C)OO(52) <=> CCCC(C)=O(49) + CCCC(C)OO(58) origin: Disproportionation
rxn: [CH2]CC(5) + CC(CC(C)OO)O[O](127) <=> C=CC(26) + CC(CC(C)OO)OO(131) origin: Disproportionation
The tested model has 98 reactions that the original model does not have. ❌
rxn: [CH2]CC(5) + [CH2]CCCC(12) <=> CCC(37) + C=CCCC(25) origin: Disproportionation
rxn: CCO[O](36) + C[CH]CCC(11) <=> CCOO(72) + CC=CCC(16) origin: Disproportionation
rxn: CCO[O](36) + CC[CH]CC(7) <=> CCOO(72) + CC=CCC(16) origin: Disproportionation
rxn: CCCO[O](35) <=> [OH](22) + CCC=O(50) origin: intra_H_migration
rxn: [CH2](3) + CC(38) <=> CCC(37) origin: 1,2_Insertion_carbene
rxn: [CH2](3) + CC(38) <=> CCC(37) origin: 1,2_Insertion_carbene
rxn: [CH3](10) + C[CH2](6) <=> CCC(37) origin: R_Recombination
rxn: [H](8) + C[CH]C(32) <=> CCC(37) origin: R_Recombination
rxn: [H](8) + [CH2]CC(5) <=> CCC(37) origin: R_Recombination
rxn: [CH2](3) + C[CH]OCC(142) <=> C[CH]OCCC(128) origin: 1,2_Insertion_carbene
rxn: [CH2](3) + C[CH]OCC(142) <=> C[CH]OCCC(128) origin: 1,2_Insertion_carbene
rxn: [H](8) + C=COCCC(143) <=> C[CH]OCCC(128) origin: R_Addition_MultipleBond
rxn: [CH2]COCCC(144) <=> C[CH]OCCC(128) origin: intra_H_migration
rxn: CC[CH]OCC(145) <=> C[CH]OCCC(128) origin: intra_H_migration
rxn: C[CH]COCC(146) <=> C[CH]OCCC(128) origin: intra_H_migration
rxn: [CH2]CCOCC(147) <=> C[CH]OCCC(128) origin: intra_H_migration
rxn: oxygen(1) + CCC(37) <=> [O]O(13) + C[CH]C(32) origin: H_Abstraction
rxn: CC[CH]CC(7) + CCCOCC(149) <=> C[CH]OCCC(128) + pentane(2) origin: H_Abstraction
rxn: C[CH]CCC(11) + CCCOCC(149) <=> C[CH]OCCC(128) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCOCC(149) <=> C[CH]OCCC(128) + pentane(2) origin: H_Abstraction
rxn: C[CH]C(32) + pentane(2) <=> CCC(37) + CC[CH]CC(7) origin: H_Abstraction
rxn: C[CH]C(32) + pentane(2) <=> CCC(37) + C[CH]CCC(11) origin: H_Abstraction
rxn: [O]O(13) + CCC(37) <=> OO(20) + C[CH]C(32) origin: H_Abstraction
rxn: C[CH]C(32) + CCC(CC)OO(21) <=> CCC(37) + CCC(CC)O[O](18) origin: H_Abstraction
rxn: [CH2]CC(5) + CCC(37) <=> C[CH]C(32) + CCC(37) origin: H_Abstraction
rxn: C[CH]C(32) + CCCC(C)OO(59) <=> CCC(37) + CCCC(C)O[O](33) origin: H_Abstraction
rxn: C[CH]C(32) + CCCOO(60) <=> CCCO[O](35) + CCC(37) origin: H_Abstraction
rxn: CCC(37) + [CH2]CCCC(12) <=> C[CH]C(32) + pentane(2) origin: H_Abstraction
rxn: C[CH]C(32) + CCCCCOO(90) <=> CCC(37) + CCCCCO[O](70) origin: H_Abstraction
rxn: [OH](22) + CC=O(100) <=> O(40) + C=C[O](121) origin: H_Abstraction
rxn: [OH](22) + CC=O(100) <=> O(40) + C[C]=O(122) origin: H_Abstraction
rxn: [OH](22) + CC=O(100) <=> C[CH]OO(63) origin: R_Addition_MultipleBond
rxn: [OH](22) + CC=O(100) <=> CC([O])O(150) origin: R_Addition_MultipleBond
rxn: [OH](22) + CCC(37) <=> O(40) + C[CH]C(32) origin: H_Abstraction
rxn: C[CH]C(32) + [CH2]CCCC(12) <=> CCC(37) + C=CCCC(25) origin: Disproportionation
rxn: C[CH]C(32) + C[CH]CCC(11) <=> CCC(37) + C=CCCC(25) origin: Disproportionation
rxn: C[CH]O(123) + CCO[O](36) <=> CC=O(100) + CCOO(72) origin: Disproportionation
rxn: CC[O](92) + CCO[O](36) <=> CC=O(100) + CCOO(72) origin: Disproportionation
rxn: C[CH]O(123) + C[CH]OO(63) <=> CC=O(100) + CCOO(72) origin: Disproportionation
rxn: CC[O](92) + C[CH]OO(63) <=> CC=O(100) + CCOO(72) origin: Disproportionation
rxn: C[CH]O(123) + [CH2]COO(69) <=> CC=O(100) + CCOO(72) origin: Disproportionation
rxn: CC[O](92) + [CH2]COO(69) <=> CC=O(100) + CCOO(72) origin: Disproportionation
rxn: CC=O(100) + CCCC(C)[O](62) <=> C=C[O](121) + CCCC(C)O(108) origin: H_Abstraction
rxn: CC=O(100) + CCCC(C)[O](62) <=> C[C]=O(122) + CCCC(C)O(108) origin: H_Abstraction
rxn: C[CH]C(32) + CCCC(C)O(108) <=> CCC(37) + CCCC(C)[O](62) origin: H_Abstraction
rxn: CCC(37) + CCCC(C)[O](62) <=> [CH2]CC(5) + CCCC(C)O(108) origin: H_Abstraction
rxn: C[CH]O(123) + C[CH]C(32) <=> CC=O(100) + CCC(37) origin: Disproportionation
rxn: C[CH]O(123) + [CH2]CC(5) <=> CC=O(100) + CCC(37) origin: Disproportionation
rxn: CC[O](92) + C[CH]C(32) <=> CC=O(100) + CCC(37) origin: Disproportionation
rxn: CC[O](92) + [CH2]CC(5) <=> CC=O(100) + CCC(37) origin: Disproportionation
rxn: C[CH]C(32) + CCCC(C)OO(59) <=> CCC(37) + C[CH]CC(C)OO(48) origin: H_Abstraction
rxn: C[CH]CC(C)OO(48) + CC(CC(C)OO)O[O](148) <=> CC=CC(C)OO(139) + CC(CC(C)OO)OO(171) origin: Disproportionation
rxn: C[CH]CC(C)OO(48) + CC(CC(C)OO)O[O](148) <=> C=CCC(C)OO(140) + CC(CC(C)OO)OO(171) origin: Disproportionation
rxn: CCC(37) + CC[CH]C(C)OO(46) <=> C[CH]C(32) + CCCC(C)OO(59) origin: H_Abstraction
rxn: C[CH]C(32) + CC(CC(C)OO)OO(171) <=> CCC(37) + CC(CC(C)OO)O[O](148) origin: H_Abstraction
rxn: CCC(37) + C[CH]C(CC)OO(29) <=> C[CH]C(32) + CCC(CC)OO(21) origin: H_Abstraction
rxn: CCC(CC)OOO(115) + CC(CC(C)OO)OO(171) <=> O(40) + CCC(CC)O[O](18) + CC(CC(C)OO)O[O](148) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCC(C)OOO(110) + CC(CC(C)OO)OO(171) <=> O(40) + CCCC(C)O[O](33) + CC(CC(C)OO)O[O](148) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCCCOOO(116) + CC(CC(C)OO)OO(171) <=> O(40) + CCCCCO[O](70) + CC(CC(C)OO)O[O](148) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCO[O](35) + CC(CC(C)OO)O[O](148) <=> oxygen(1) + CCC[O](97) + CC([O])CC(C)OO(172) origin: Peroxyl_Disproportionation
rxn: CCCO[O](35) + CC(CC(C)OO)O[O](148) <=> oxygen(1) + CCC=O(50) + CC(O)CC(C)OO(173) origin: Peroxyl_Termination
rxn: CCCO[O](35) + CC(CC(C)OO)O[O](148) <=> oxygen(1) + CCCO(127) + CC(=O)CC(C)OO(162) origin: Peroxyl_Termination
rxn: [OH](22) + CCC1OC1C(154) <=> O(40) + CC[C]1OC1C(179) origin: H_Abstraction
rxn: [OH](22) + CCC1OC1C(154) <=> O(40) + CCC1O[C]1C(181) origin: H_Abstraction
rxn: [OH](22) + CCC1OC1C(154) <=> O(40) + C[CH]C1OC1C(183) origin: H_Abstraction
rxn: [OH](22) + CCC1OC1C(154) <=> O(40) + [CH2]C1OC1CC(184) origin: H_Abstraction
rxn: [OH](22) + CCC1OC1C(154) <=> O(40) + [CH2]CC1OC1C(185) origin: H_Abstraction
rxn: [OH](22) + CC(CC(C)OO)OO(171) <=> O(40) + C[C](CC(C)OO)OO(188) origin: H_Abstraction
rxn: [OH](22) + CC(CC(C)OO)OO(171) <=> O(40) + CC([CH]C(C)OO)OO(163) origin: H_Abstraction
rxn: [OH](22) + CC(CC(C)OO)OO(171) <=> O(40) + [CH2]C(CC(C)OO)OO(164) origin: H_Abstraction
rxn: [OH](22) + CC=CCC(16) <=> O(40) + C[CH]C=CC(193) origin: H_Abstraction
rxn: [OH](22) + CC=CCC(16) <=> O(40) + [CH2]CC=CC(194) origin: H_Abstraction
rxn: [OH](22) + CC=CCC(16) <=> O(40) + [CH2]C=CCC(83) origin: H_Abstraction
rxn: [OH](22) + CC=CCC(16) <=> O(40) + CC=[C]CC(196) origin: H_Abstraction
rxn: [OH](22) + CC=CCC(16) <=> O(40) + C[C]=CCC(197) origin: H_Abstraction
rxn: [OH](22) + CC=CCC(16) <=> C[CH]C(O)CC(202) origin: R_Addition_MultipleBond
rxn: [OH](22) + CC=CCC(16) <=> CC[CH]C(C)O(103) origin: R_Addition_MultipleBond
rxn: C[CH]OO(63) + C[CH]CCC(11) <=> CCOO(72) + CC=CCC(16) origin: Disproportionation
rxn: C[CH]OO(63) + CC[CH]CC(7) <=> CCOO(72) + CC=CCC(16) origin: Disproportionation
rxn: [CH2]COO(69) + C[CH]CCC(11) <=> CCOO(72) + CC=CCC(16) origin: Disproportionation
rxn: [CH2]COO(69) + CC[CH]CC(7) <=> CCOO(72) + CC=CCC(16) origin: Disproportionation
rxn: CCC1OC1C(154) + CCCC(C)[O](62) <=> CC[C]1OC1C(179) + CCCC(C)O(108) origin: H_Abstraction
rxn: CCC1OC1C(154) + CCCC(C)[O](62) <=> CCC1O[C]1C(181) + CCCC(C)O(108) origin: H_Abstraction
rxn: CCC1OC1C(154) + CCCC(C)[O](62) <=> C[CH]C1OC1C(183) + CCCC(C)O(108) origin: H_Abstraction
rxn: CCC1OC1C(154) + CCCC(C)[O](62) <=> [CH2]C1OC1CC(184) + CCCC(C)O(108) origin: H_Abstraction
rxn: CCC1OC1C(154) + CCCC(C)[O](62) <=> [CH2]CC1OC1C(185) + CCCC(C)O(108) origin: H_Abstraction
rxn: CCCC(C)[O](62) + CC(CC(C)OO)OO(171) <=> CC(CC(C)OO)O[O](148) + CCCC(C)O(108) origin: H_Abstraction
rxn: CCCC(C)[O](62) + CC(CC(C)OO)OO(171) <=> C[C](CC(C)OO)OO(188) + CCCC(C)O(108) origin: H_Abstraction
rxn: CCCC(C)[O](62) + CC(CC(C)OO)OO(171) <=> CC([CH]C(C)OO)OO(163) + CCCC(C)O(108) origin: H_Abstraction
rxn: CCCC(C)[O](62) + CC(CC(C)OO)OO(171) <=> [CH2]C(CC(C)OO)OO(164) + CCCC(C)O(108) origin: H_Abstraction
rxn: CC=CCC(16) + CCCC(C)[O](62) <=> C[CH]C=CC(193) + CCCC(C)O(108) origin: H_Abstraction
rxn: CC=CCC(16) + CCCC(C)[O](62) <=> [CH2]CC=CC(194) + CCCC(C)O(108) origin: H_Abstraction
rxn: CC=CCC(16) + CCCC(C)[O](62) <=> [CH2]C=CCC(83) + CCCC(C)O(108) origin: H_Abstraction
rxn: CC=[C]CC(196) + CCCC(C)O(108) <=> CC=CCC(16) + CCCC(C)[O](62) origin: H_Abstraction
rxn: C[C]=CCC(197) + CCCC(C)O(108) <=> CC=CCC(16) + CCCC(C)[O](62) origin: H_Abstraction
rxn: C[CH]C(32) + C[CH]CCC(11) <=> CCC(37) + CC=CCC(16) origin: Disproportionation
rxn: C[CH]C(32) + CC[CH]CC(7) <=> CCC(37) + CC=CCC(16) origin: Disproportionation
rxn: OOO(114) + CC(CC(C)OO)OO(171) <=> [O]O(13) + O(40) + CC(CC(C)OO)O[O](148) origin: Bimolec_Hydroperoxide_Decomposition

Observables Test Case: RMS_CSTR_liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_CSTR_liquid_oxidation Passed Observable Testing ✅

Regression test fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:42
Current: Execution time (DD:HH:MM:SS): 00:00:00:38
Reference: Memory used: 2959.95 MB
Current: Memory used: 2943.83 MB

fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

fragment Passed Edge Comparison ✅

Original model has 33 species.
Test model has 33 species. ✅
Original model has 47 reactions.
Test model has 47 reactions. ✅

Observables Test Case: fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

fragment Passed Observable Testing ✅

Regression test RMS_constantVIdealGasReactor_fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:03:09
Current: Execution time (DD:HH:MM:SS): 00:00:03:08
Reference: Memory used: 3841.29 MB
Current: Memory used: 3846.80 MB

RMS_constantVIdealGasReactor_fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

RMS_constantVIdealGasReactor_fragment Passed Edge Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 24 reactions.
Test model has 24 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_fragment Passed Observable Testing ✅

beep boop this comment was written by a bot 🤖

Copy link

codecov bot commented Mar 11, 2024

Codecov Report

Attention: Patch coverage is 75.72816% with 25 lines in your changes missing coverage. Please review.

Project coverage is 54.26%. Comparing base (6d9a56e) to head (24284bc).
Report is 1 commits behind head on main.

Current head 24284bc differs from pull request most recent head 363e2a6

Please upload reports for the commit 363e2a6 to get more accurate results.

Files Patch % Lines
rmgpy/rmg/model.py 73.33% 16 Missing ⚠️
rmgpy/rmg/main.py 84.61% 4 Missing ⚠️
rmgpy/rmg/reactionmechanismsimulator_reactors.py 75.00% 3 Missing ⚠️
rmgpy/rmg/input.py 33.33% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2631      +/-   ##
==========================================
- Coverage   54.79%   54.26%   -0.54%     
==========================================
  Files         125      125              
  Lines       37164    37061     -103     
==========================================
- Hits        20365    20110     -255     
- Misses      16799    16951     +152     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

@hwpang hwpang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR! I have some questions and some comments

Dockerfile Show resolved Hide resolved
rmgpy/rmg/input.py Outdated Show resolved Hide resolved
environment.yml Show resolved Hide resolved
@JacksonBurns
Copy link
Contributor Author

I'm all in favor of avoiding the julia start up cost for runs that don't need it. Which should solve issue #2547. Although, as I noted in that issue Arkane is dependent on pyjulia entirely independently of RMS.

Thanks for pointing that out! I have added a comment on that issue.

However, RMS is not an optional install or anything you can treat as an optional backend. We have published RMG features that are not available without RMS, RMS is the only sensible way right now to add a new reactor to RMG, RMG electrochemistry is entirely dependent on RMS because none of the RMG reactors can run it.

I see this as less about removing features and more about increasingly the 'extend-ability' of RMG.
The RMS features are great, yet some of our users only want to run basic reactors and 'plug in' RMG to other tools, which is difficult in the current state.

Our primary distribution method (Docker) will still include all of the RMS stuff, so by default everyone will still have access to every feature we have ever promised.
The CI, too, will continue to install the RMS features and ensure forward-compatibility with the inter-operation of the two packages.

I'll also add that this is somewhat being forced as a technical issue, or at least an issue with my technical understanding.
I only alluded to this in my initial comment ("allow fixing the conda recipe") but I'll be more explicit here.
In the process of attempting to fix the conda recipe, I did not find a way to build a new RMG binary with the RMS installation included. When attempting to build RMS within the conda recipe I couldn't get the build to 'find' RMG (so it went out to install the old binary), couldn't get the build to run (would fail for difficult-to-discern reasons), and overall the Julia language seems to only just be adopting conda as a binary distribution method (with 'new' packages like Conda.jl) picking up steam).

There may very well be a way to get the binary creation to work, but it will certainly be more difficult than the workflow that this change would allow:
We Build Standalone RMG Binary -> Users Install Standalone RMG Binary -> Users Add RMS on Top of It Locally

We have also historically 'promised' binaries, and I see this as the only way to provide those.

Doing so does not save anyone time maintaining the installation because the installation with RMS has to work regardless. The initial install time for RMS is not particularly burdensome. It will even make debugging PRs more complicated because there will be more differences between users' local copies and the tests.

Partly replied to this above - CI will continue to install RMS so it will continue to work in the future.

Second point is a very real challenge, I agree. I can readily imagine circumstances where a user might suggest changes to RMG that pass RMG-only tests locally and then fail RMG+RMS CI on GitHub. This might ultimately be resolved with good practices (i.e. requiring people to run RMG+RMS for development) but I am open to input from the dev team on this.

@mjohnson541
Copy link
Contributor

I'm all in favor of avoiding the julia start up cost for runs that don't need it. Which should solve issue #2547. Although, as
However, RMS is not an optional install or anything you can treat as an optional backend. We have published RMG features that are not available without RMS, RMS is the only sensible way right now to add a new reactor to RMG, RMG electrochemistry is entirely dependent on RMS because none of the RMG reactors can run it.

I see this as less about removing features and more about increasingly the 'extend-ability' of RMG. The RMS features are great, yet some of our users only want to run basic reactors and 'plug in' RMG to other tools, which is difficult in the current state.

Once the julia imports are avoided running RMG without using julia features will not have a meaningful distinction between running RMG without RMS installed. So aside from installation, there won't be a meaningful distinction in difficulty for users.

Our primary distribution method (Docker) will still include all of the RMS stuff, so by default everyone will still have access to every feature we have ever promised. The CI, too, will continue to install the RMS features and ensure forward-compatibility with the inter-operation of the two packages.

I'll also add that this is somewhat being forced as a technical issue, or at least an issue with my technical understanding. I only alluded to this in my initial comment ("allow fixing the conda recipe") but I'll be more explicit here. In the process of attempting to fix the conda recipe, I did not find a way to build a new RMG binary with the RMS installation included. When attempting to build RMS within the conda recipe I couldn't get the build to 'find' RMG (so it went out to install the old binary), couldn't get the build to run (would fail for difficult-to-discern reasons), and overall the Julia language seems to only just be adopting conda as a binary distribution method (with 'new' packages like Conda.jl) picking up steam).

I haven't seen the build script you devised, but this at least sounds resolvable to me. It sounds like RMS is being imported before julia is linked to the correct python (which will cause it to start installing things). Julia-python linking is most easily done inside the python you want to link to by calling julia.install() that should automatically identify julia and link it to the python you are in. I would think that should be done in pyjulia's build script, but for the RMG binary it can be done inside RMG's build script. The point of conda is to be universally applicable so we shouldn't be hindered by choice of language.

@mjohnson541
Copy link
Contributor

mjohnson541 commented Mar 13, 2024

Oh wait, sorry...the issue isn't that...the issue is that the python that you're building with in conda is not the python in use when you run the binary. The linking needs done for the run python. Should just be the linking, the package installs and everything should be fine.

@JacksonBurns
Copy link
Contributor Author

I see this as less about removing features and more about increasingly the 'extend-ability' of RMG. The RMS features are great, yet some of our users only want to run basic reactors and 'plug in' RMG to other tools, which is difficult in the current state.

Once the julia imports are avoided running RMG without using julia features will not have a meaningful distinction between running RMG without RMS installed. So aside from installation, there won't be a meaningful distinction in difficulty for users.

My apologies, I'm not sure I understand what you mean, could you restate this another way?

Our primary distribution method (Docker) will still include all of the RMS stuff, so by default everyone will still have access to every feature we have ever promised. The CI, too, will continue to install the RMS features and ensure forward-compatibility with the inter-operation of the two packages.
I'll also add that this is somewhat being forced as a technical issue, or at least an issue with my technical understanding. I only alluded to this in my initial comment ("allow fixing the conda recipe") but I'll be more explicit here. In the process of attempting to fix the conda recipe, I did not find a way to build a new RMG binary with the RMS installation included. When attempting to build RMS within the conda recipe I couldn't get the build to 'find' RMG (so it went out to install the old binary), couldn't get the build to run (would fail for difficult-to-discern reasons), and overall the Julia language seems to only just be adopting conda as a binary distribution method (with 'new' packages like Conda.jl) picking up steam).

I haven't seen the build script you devised, but this at least sounds resolvable to me. It sounds like RMS is being imported before julia is linked to the correct python (which will cause it to start installing things). Julia-python linking is most easily done inside the python you want to link to by calling julia.install() that should automatically identify julia and link it to the python you are in. I would think that should be done in pyjulia's build script, but for the RMG binary it can be done inside RMG's build script. The point of conda is to be universally applicable so we shouldn't be hindered by choice of language.

The build.sh looked like this:

make install
export PYTHON=$PREFIX/bin/python
export PYTHONPATH=$SRC_DIR:$PYTHONPATH
python -c "import julia; julia.install(); import diffeqpy; diffeqpy.install()"
julia -e 'using Pkg; Pkg.add(PackageSpec(name="Functors",version="0.4.3")); Pkg.pin("Functors"); Pkg.add(PackageSpec(name="ReactionMechanismSimulator",rev="for_rmg")); using ReactionMechanismSimulator'

the conda_build_config.yaml looked like this:

python:
  - 3.7
numpy:
  - 1.15

and the meta.yaml is here:

recipe
# For conda build
package:
  name: rmg
  version: 3.2.0

source:
  path: ../

build:
  number: {{ environ.get('GIT_DESCRIBE_NUMBER', 0) }}

requirements:
  build:
    - {{ compiler('c') }}
  host:
    - cairo
    - cairocffi
    - ffmpeg
    - xlrd
    - xlwt
    - h5py
    - graphviz
    - markupsafe
    - psutil
    - ncurses
    - suitesparse

  # external software tools for chemistry
    - coolprop
    - cantera=2.6
    - mopac
    - cclib >=1.6.3,!=1.8.0
    - openbabel >=3

  # Python tools
    - python >=3.7
    - coverage
    - cython >=0.25.2
    - scikit-learn
    - scipy
    - numpy >=1.10.0
    - pydot
    - jinja2
    - jupyter
    - pymongo
    - pyparsing
    - pyyaml
    - networkx
    - matplotlib >=1.5
    - mpmath
    - pandas

  # packages we maintain
    - rmgdatabase
    - gprof2dot
    - lpsolve55
    - muq2
    - numdifftools
    - pydas >=1.0.3
    - pydqed >=1.0.3
    - pyrdl
    - quantities
    - symmetry
    - chemprop==0.0.1
    - rdkit >=2020.03.3.0
  run:
    - cairo
    - cairocffi
    - ffmpeg
    - xlrd
    - xlwt
    - h5py
    - graphviz
    - markupsafe
    - psutil
    - ncurses
    - suitesparse

  # external software tools for chemistry
    - coolprop
    - cantera=2.6
    - mopac
    - cclib >=1.6.3,!=1.8.0
    - openbabel >=3

  # Python tools
    - python >=3.7
    - coverage
    - cython >=0.25.2
    - scikit-learn
    - scipy
    - numpy >=1.10.0
    - pydot
    - jinja2
    - jupyter
    - pymongo
    - pyparsing
    - pyyaml
    - networkx
    - matplotlib >=1.5
    - mpmath
    - pandas

  # packages we maintain
    - rmgdatabase
    - gprof2dot
    - lpsolve55
    - muq2
    - numdifftools
    - pydas >=1.0.3
    - pydqed >=1.0.3
    - pyrdl
    - quantities
    - symmetry
    - chemprop==0.0.1
    - rdkit >=2020.03.3.0
test:
  requires:
    - cairo
    - cairocffi
    - ffmpeg
    - xlrd
    - xlwt
    - h5py
    - graphviz
    - markupsafe
    - psutil
    - ncurses
    - suitesparse

  # external software tools for chemistry
    - coolprop
    - cantera=2.6
    - mopac
    - cclib >=1.6.3,!=1.8.0
    - openbabel >=3

  # Python tools
    - python >=3.7
    - coverage
    - cython >=0.25.2
    - scikit-learn
    - scipy
    - numpy >=1.10.0
    - pydot
    - jinja2
    - jupyter
    - pymongo
    - pyparsing
    - pyyaml
    - networkx
    - matplotlib >=1.5
    - mpmath
    - pandas

  # packages we maintain
    - rmgdatabase
    - gprof2dot
    - lpsolve55
    - muq2
    - numdifftools
    - pydas >=1.0.3
    - pydqed >=1.0.3
    - pyrdl
    - quantities
    - symmetry
    - chemprop==0.0.1
    - rdkit >=2020.03.3.0
  source_files:
    - 'examples/rmg/superminimal'
    - 'examples/arkane/networks/n-butanol'
  imports:
    - rmgpy
    - arkane
  commands:
    - rmg.py examples/rmg/superminimal/input.py
    - Arkane.py examples/arkane/networks/n-butanol/input.py

about:
  home: https://github.com/ReactionMechanismGenerator/RMG-Py
  license: MIT
  summary: "A program for automatically generating kinetic models of chemical reaction mechanisms."

though this last component would be a little bit simpler now that some of the deps have been removed.

I agree that this should be resolvable, but I'm also anxious about the maintainability of the results. Seems like it would be house of cards waiting to crash down, whereas a system that built an RMG binary independently and then added RMS on top of it would allow for greater flexibility in the two steps.

@mjohnson541
Copy link
Contributor

Sorry, I felt like the reply stuff was getting too nested.

On that point, I guess I don't understand why making RMS an optional install makes future development and plug-ability any easier given that after installation the user experience is the same for a user not using those features.

Super interested about why you needed that Functors line in the build.

Overall on the issues with the build my understanding is that if RMG starts using an RMS feature, RMS tries to install stuff?
My interpretation of this is

  1. Python/pyjulia knows where Julia is
  2. The Julia python finds has RMS installed
  3. Julia/PyCall finds the wrong python and can't find the rmg stuff so tries to install it (probably using the default python)

So it seems that our problem is simply that while everything we need is installed PyCall doesn't know where the right python/conda env is. This can be set by defining environment variables: PYTHON and maybe also CONDA_JL_HOME (see https://github.com/JuliaPy/PyCall.jl and https://github.com/JuliaPy/Conda.jl). In the build we can set environmental variables that will automatically load when the environment loads so in theory if we do this for PYTHON and CONDA_JL_HOME RMS will grab the appropriate python and find that the packages it needs are already there. An example of doing this from the build file I wrote for julia binaries is below:

#make julia directory
mkdir -p ${PREFIX}/share/julia/site
mkdir -p ${PREFIX}/bin
#set JULIA_DEPOT_PATH in conda env
export JULIA_DEPOT_PATH="${PREFIX}/share/julia/site"
ACTIVATE_ENV="${PREFIX}/etc/conda/activate.d/env_vars.sh"
DEACTIVATE_ENV="${PREFIX}/etc/conda/deactivate.d/env_vars.sh"

if [ -f "$ACTIVATE_ENV" ]; then
        echo "export JULIA_DEPOT_PATH=\"${PREFIX}/share/julia/site\"" >> $ACTIVATE_ENV
        echo "export JULIA_OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $ACTIVATE_ENV
        echo "export LD_LIBRARY_PATH=\"${PREFIX}/lib\"" >> $ACTIVATE_ENV
else
        mkdir -p ${PREFIX}/etc/conda/activate.d
        touch ${PREFIX}/etc/conda/activate.d/env_vars.sh
        echo '#!/bin/sh' >> $ACTIVATE_ENV
        echo "export JULIA_DEPOT_PATH=\"${PREFIX}/share/julia/site\"" >> $ACTIVATE_ENV
        echo "export JULIA_OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $ACTIVATE_ENV
        echo "export LD_LIBRARY_PATH=\"${PREFIX}/lib\"" >> $ACTIVATE_ENV
fi
if [ -f "$DEACTIVATE_ENV" ]; then
        echo "unset JULIA_DEPOT_PATH" >> $DEACTIVATE_ENV
        echo "export LD_LIBRARY_PATH=$JULIA_OLD_LD_LIBRARY_PATH" >> $DEACTIVATE_ENV
        echo "unset JULIA_OLD_LD_LIBRARY_PATH" >> $DEACTIVATE_ENV
else
        mkdir -p ${PREFIX}/etc/conda/deactivate.d
        touch ${PREFIX}/etc/conda/deactivate.d/env_vars.sh
        echo '#!/bin/sh' >> $DEACTIVATE_ENV
        echo "unset JULIA_DEPOT_PATH" >> $DEACTIVATE_ENV
        echo "export LD_LIBRARY_PATH=$JULIA_OLD_LD_LIBRARY_PATH" >> $DEACTIVATE_ENV
        echo "unset JULIA_OLD_LD_LIBRARY_PATH" >> $DEACTIVATE_ENV
fi

@JacksonBurns
Copy link
Contributor Author

At a high level I'm still skeptical that this is possible - the whole point of Conda.jl seems to be building Julia packages that require Python rather than Python Packages that require Julia. I can give this script a shot, but I must emphasize that this is a maintainability concern. As soon as Conda.jl changes anything we are going to be stuck unable to build RMG binaries again despite nothing being wrong with the Python side.

There's also just such a natural separation between mechanism generator in Python + reactor simulator in Julia that it seems (to me) unnecessary to try and combine the two. This would decouple our release schedule, allow people to extend RMG without also installing RMS, etc.

To me this is also just occam's razor. Why do this (comparatively) complex installation when we could so easily separate the two?

I don't recall the exact reason the Functors thing was there, I think something was wrong with that upstream on whatever day I wrote that build script.

@mjohnson541
Copy link
Contributor

I'm happy to explain how the python-julia system works, why what I proposed is a robust solution to your particular problem as described (which honestly is rare to find with conda-build problems), what role PyCall.jl and Conda.jl play in the system and why there aren't any concerns about maintainability related to them in particular.

I know this part is new for the binaries and you guys aren't as experienced with these systems as I am. I'm surprised you didn't bring this up with me earlier in the process when you ran into this issue. I would hope that I could have helped you avoid the frustrations it seems you've clearly run into. I'm well aware building binaries is not a fun process especially when dealing with systems you aren't intimately familiar with.

However, I think it would be best to have such a conversation offline.

@mjohnson541
Copy link
Contributor

mjohnson541 commented Mar 15, 2024

Sorry, I felt like the reply stuff was getting too nested.

On that point, I guess I don't understand why making RMS an optional install makes future development and plug-ability any easier given that after installation the user experience is the same for a user not using those features.

Super interested about why you needed that Functors line in the build.

Overall on the issues with the build my understanding is that if RMG starts using an RMS feature, RMS tries to install stuff? My interpretation of this is

1. Python/pyjulia knows where Julia is

2. The Julia python finds has RMS installed

3. Julia/PyCall finds the wrong python and can't find the rmg stuff so tries to install it (probably using the default python)

So it seems that our problem is simply that while everything we need is installed PyCall doesn't know where the right python/conda env is. This can be set by defining environment variables: PYTHON and maybe also CONDA_JL_HOME (see https://github.com/JuliaPy/PyCall.jl and https://github.com/JuliaPy/Conda.jl). In the build we can set environmental variables that will automatically load when the environment loads so in theory if we do this for PYTHON and CONDA_JL_HOME RMS will grab the appropriate python and find that the packages it needs are already there. An example of doing this from the build file I wrote for julia binaries is below:

#make julia directory
mkdir -p ${PREFIX}/share/julia/site
mkdir -p ${PREFIX}/bin
#set JULIA_DEPOT_PATH in conda env
export JULIA_DEPOT_PATH="${PREFIX}/share/julia/site"
ACTIVATE_ENV="${PREFIX}/etc/conda/activate.d/env_vars.sh"
DEACTIVATE_ENV="${PREFIX}/etc/conda/deactivate.d/env_vars.sh"

if [ -f "$ACTIVATE_ENV" ]; then
        echo "export JULIA_DEPOT_PATH=\"${PREFIX}/share/julia/site\"" >> $ACTIVATE_ENV
        echo "export JULIA_OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $ACTIVATE_ENV
        echo "export LD_LIBRARY_PATH=\"${PREFIX}/lib\"" >> $ACTIVATE_ENV
else
        mkdir -p ${PREFIX}/etc/conda/activate.d
        touch ${PREFIX}/etc/conda/activate.d/env_vars.sh
        echo '#!/bin/sh' >> $ACTIVATE_ENV
        echo "export JULIA_DEPOT_PATH=\"${PREFIX}/share/julia/site\"" >> $ACTIVATE_ENV
        echo "export JULIA_OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $ACTIVATE_ENV
        echo "export LD_LIBRARY_PATH=\"${PREFIX}/lib\"" >> $ACTIVATE_ENV
fi
if [ -f "$DEACTIVATE_ENV" ]; then
        echo "unset JULIA_DEPOT_PATH" >> $DEACTIVATE_ENV
        echo "export LD_LIBRARY_PATH=$JULIA_OLD_LD_LIBRARY_PATH" >> $DEACTIVATE_ENV
        echo "unset JULIA_OLD_LD_LIBRARY_PATH" >> $DEACTIVATE_ENV
else
        mkdir -p ${PREFIX}/etc/conda/deactivate.d
        touch ${PREFIX}/etc/conda/deactivate.d/env_vars.sh
        echo '#!/bin/sh' >> $DEACTIVATE_ENV
        echo "unset JULIA_DEPOT_PATH" >> $DEACTIVATE_ENV
        echo "export LD_LIBRARY_PATH=$JULIA_OLD_LD_LIBRARY_PATH" >> $DEACTIVATE_ENV
        echo "unset JULIA_OLD_LD_LIBRARY_PATH" >> $DEACTIVATE_ENV
fi

Actually, in addition to this we also need to run Pkg.build("PyCall") once in the conda environment after construction...cleanest would be the first time the conda environment activates, although calling julia.install() inside RMG will also do this.

Copy link

Regression Testing Results

⚠️ One or more regression tests failed.
Please download the failed results and run the tests locally or check the log to see why.

Detailed regression test results.

Regression test aromatics:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:05
Current: Execution time (DD:HH:MM:SS): 00:00:01:03
Reference: Memory used: 2982.38 MB
Current: Memory used: 2971.48 MB

aromatics Passed Core Comparison ✅

Original model has 15 species.
Test model has 15 species. ✅
Original model has 11 reactions.
Test model has 11 reactions. ✅

aromatics Failed Edge Comparison ❌

Original model has 106 species.
Test model has 106 species. ✅
Original model has 358 reactions.
Test model has 358 reactions. ✅

Non-identical thermo! ❌
original: C=CC1C=CC2=CC1C=C2
tested: C=CC1C=CC2=CC1C=C2

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
83.22 82.78 35.48 45.14 53.78 61.40 73.58 82.20 95.08
83.22 84.16 35.48 45.14 53.78 61.40 73.58 82.20 95.08

Identical thermo comments:
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds- CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsHH) + Estimated bicyclic component: polycyclic(s3_5_6_ane) - ring(Cyclohexane) - ring(Cyclopentane) + ring(1,3-Cyclohexadiene) + ring(Cyclopentadiene)

Non-identical thermo! ❌
original: C1=CC2C=CC=1C=C2
tested: C1=CC2C=CC=1C=C2

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
164.90 80.93 22.21 28.97 35.25 40.69 48.70 53.97 64.36
129.39 79.85 22.98 30.09 36.61 42.21 50.22 55.39 65.95

thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsCsH) + group(Cdd-CdsCds) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(124cyclohexatriene) + ring(124cyclohexatriene)
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsCsH) + group(Cdd-CdsCds) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(124cyclohexatriene) + ring(1,4-Cyclohexadiene)

Non-identical kinetics! ❌
original:
rxn: [c]1ccccc1(3) + C1=CC2C=C[C]1C=C2(49) <=> benzene(1) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [c]1ccccc1(3) + C1=CC2C=C[C]1C=C2(49) <=> benzene(1) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -3.00 -0.74 0.70 1.71 3.07 3.97 5.33 6.15
k(T): 4.24 4.69 5.05 5.33 5.79 6.14 6.78 7.23

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(9.943,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 38.5 to 41.6 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 38.5 to 41.6 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: [H](4) + C1=CC2C=C[C]1C=C2(49) <=> [H][H](11) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [H](4) + C1=CC2C=C[C]1C=C2(49) <=> [H][H](11) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -7.44 -4.08 -2.05 -0.69 1.02 2.06 3.46 4.18
k(T): 5.77 5.83 5.88 5.92 5.97 6.02 6.10 6.16

kinetics: Arrhenius(A=(4.06926e+10,'cm^3/(mol*s)'), n=0.47, Ea=(18.137,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O Multiplied by reaction path degeneracy 3.0 Ea raised from 75.2 to 75.9 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(4.06926e+10,'cm^3/(mol*s)'), n=0.47, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O Multiplied by reaction path degeneracy 3.0""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O
Multiplied by reaction path degeneracy 3.0
Ea raised from 75.2 to 75.9 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: [CH]=C(7) + C1=CC2C=C[C]1C=C2(49) <=> C=C(13) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]=C(7) + C1=CC2C=C[C]1C=C2(49) <=> C=C(13) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -7.17 -3.66 -1.56 -0.16 1.60 2.65 4.05 4.75
k(T): 4.06 4.76 5.18 5.46 5.81 6.02 6.30 6.44

kinetics: Arrhenius(A=(7.23e+12,'cm^3/(mol*s)'), n=0, Ea=(19.262,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_N-Sp-6R!H-4CHNS Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(7.23e+12,'cm^3/(mol*s)'), n=0, Ea=(3.841,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_N-Sp-6R!H-4CHNS Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_N-Sp-6R!H-4CHNS
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2CC2=C1(27) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2CC2=C1(27) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -30.48 -21.35 -15.79 -12.03 -7.23 -4.28 -0.16 2.03
k(T): -4.55 -1.90 -0.23 0.94 2.49 3.50 5.02 5.92

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(47.659,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(12.063,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=C2C1(29) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=C2C1(29) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -31.23 -21.91 -16.23 -12.40 -7.51 -4.50 -0.31 1.91
k(T): -5.30 -2.46 -0.68 0.57 2.21 3.28 4.87 5.80

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(48.686,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 202.2 to 203.7 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(13.089,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 53.5 to 54.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 202.2 to 203.7 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 53.5 to 54.8 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2=CC2C1(28) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2=CC2C1(28) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -27.24 -18.91 -13.84 -10.40 -6.02 -3.30 0.48 2.51
k(T): -1.38 0.48 1.67 2.52 3.68 4.45 5.66 6.39

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(43.208,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 180.2 to 180.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(7.718,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 180.2 to 180.8 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: [CH]=CC=C(15) + C1=CC2C=C[C]1C=C2(49) <=> C=CC=C(17) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]=CC=C(15) + C1=CC2C=C[C]1C=C2(49) <=> C=CC=C(17) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -11.95 -7.61 -5.01 -3.27 -1.10 0.20 1.93 2.80
k(T): -0.49 0.99 1.87 2.46 3.19 3.64 4.23 4.52

kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(23.821,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(8.084,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]=Cc1ccccc1(12) <=> C1=CC2C=CC=1C=C2(79) + C=Cc1ccccc1(16) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]=Cc1ccccc1(12) <=> C1=CC2C=CC=1C=C2(79) + C=Cc1ccccc1(16) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -12.28 -7.86 -5.21 -3.44 -1.23 0.10 1.87 2.75
k(T): -0.66 0.85 1.76 2.37 3.13 3.58 4.19 4.49

kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(24.273,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(8.328,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C1)C2(69) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C1)C2(69) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -30.44 -21.32 -15.76 -12.01 -7.22 -4.26 -0.16 2.03
k(T): -4.51 -1.87 -0.20 0.96 2.51 3.52 5.03 5.92

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(47.606,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 195.1 to 199.2 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(12.01,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 46.5 to 50.2 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 195.1 to 199.2 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 46.5 to 50.2 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C2)C1(70) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C2)C1(70) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -32.11 -22.57 -16.76 -12.84 -7.84 -4.76 -0.49 1.78
k(T): -6.18 -3.12 -1.20 0.13 1.88 3.01 4.70 5.67

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(49.895,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 205.2 to 208.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(14.299,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 56.6 to 59.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 205.2 to 208.8 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 56.6 to 59.8 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2=CC(C=C2)C1(71) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2=CC(C=C2)C1(71) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -33.97 -23.97 -17.88 -13.77 -8.54 -5.32 -0.86 1.50
k(T): -8.04 -4.52 -2.32 -0.81 1.18 2.46 4.32 5.39

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(52.457,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 214.4 to 219.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(16.86,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 65.8 to 70.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 214.4 to 219.5 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 65.8 to 70.5 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1C=C2(82) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1C=C2(82) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -30.48 -21.35 -15.79 -12.03 -7.23 -4.28 -0.16 2.03
k(T): -4.55 -1.90 -0.23 0.94 2.49 3.50 5.02 5.92

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(47.659,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(12.063,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1=CC2(83) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1=CC2(83) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -19.49 -12.98 -9.00 -6.29 -2.81 -0.64 2.42 4.08
k(T): 3.96 4.60 5.07 5.43 5.98 6.39 7.11 7.60

kinetics: Arrhenius(A=(51.5097,'cm^3/(mol*s)'), n=3.635, Ea=(33.226,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 9.0 Ea raised from 133.4 to 139.0 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(51.5097,'cm^3/(mol*s)'), n=3.635, Ea=(1.036,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 9.0""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 9.0
Ea raised from 133.4 to 139.0 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 9.0

Observables Test Case: Aromatics Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

aromatics Passed Observable Testing ✅

Regression test liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:08
Current: Execution time (DD:HH:MM:SS): 00:00:02:04
Reference: Memory used: 3105.74 MB
Current: Memory used: 3071.60 MB

liquid_oxidation Passed Core Comparison ✅

Original model has 37 species.
Test model has 37 species. ✅
Original model has 216 reactions.
Test model has 216 reactions. ✅

liquid_oxidation Failed Edge Comparison ❌

Original model has 202 species.
Test model has 202 species. ✅
Original model has 1610 reactions.
Test model has 1610 reactions. ✅

Non-identical kinetics! ❌
original:
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
tested:
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

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 7.79 7.46 7.21 7.00 6.67 6.41 5.94 5.60
k(T): 3.52 4.27 4.71 5.01 5.39 5.61 5.91 6.06

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: Arrhenius(A=(3.2e+12,'cm^3/(mol*s)'), 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: 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

Observables Test Case: liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

liquid_oxidation Passed Observable Testing ✅

Regression test nitrogen:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:22
Current: Execution time (DD:HH:MM:SS): 00:00:01:14
Reference: Memory used: 3100.00 MB
Current: Memory used: 3080.04 MB

nitrogen Passed Core Comparison ✅

Original model has 41 species.
Test model has 41 species. ✅
Original model has 359 reactions.
Test model has 359 reactions. ✅

nitrogen Passed Edge Comparison ✅

Original model has 132 species.
Test model has 132 species. ✅
Original model has 995 reactions.
Test model has 995 reactions. ✅

Observables Test Case: NC Comparison

✅ All Observables varied by less than 0.200 on average between old model and new model in all conditions!

nitrogen Passed Observable Testing ✅

Regression test oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:20
Current: Execution time (DD:HH:MM:SS): 00:00:01:46
Reference: Memory used: 2976.81 MB
Current: Memory used: 2958.54 MB

oxidation Passed Core Comparison ✅

Original model has 59 species.
Test model has 59 species. ✅
Original model has 694 reactions.
Test model has 694 reactions. ✅

oxidation Passed Edge Comparison ✅

Original model has 230 species.
Test model has 230 species. ✅
Original model has 1526 reactions.
Test model has 1526 reactions. ✅

Observables Test Case: Oxidation Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

oxidation Passed Observable Testing ✅

Regression test sulfur:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:54
Current: Execution time (DD:HH:MM:SS): 00:00:00:49
Reference: Memory used: 3081.25 MB
Current: Memory used: 3078.55 MB

sulfur Passed Core Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 74 reactions.
Test model has 74 reactions. ✅

sulfur Failed Edge Comparison ❌

Original model has 89 species.
Test model has 89 species. ✅
Original model has 227 reactions.
Test model has 227 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary
The tested model has 1 reactions that the original model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary

Observables Test Case: SO2 Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

sulfur Passed Observable Testing ✅

Regression test superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:34
Current: Execution time (DD:HH:MM:SS): 00:00:00:32
Reference: Memory used: 3181.24 MB
Current: Memory used: 3173.04 MB

superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 21 reactions.
Test model has 21 reactions. ✅

superminimal Passed Edge Comparison ✅

Original model has 18 species.
Test model has 18 species. ✅
Original model has 28 reactions.
Test model has 28 reactions. ✅

Regression test RMS_constantVIdealGasReactor_superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:26
Current: Execution time (DD:HH:MM:SS): 00:00:02:27
Reference: Memory used: 3644.32 MB
Current: Memory used: 3642.18 MB

RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_superminimal Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_superminimal Passed Observable Testing ✅

Regression test RMS_CSTR_liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:06:05
Current: Execution time (DD:HH:MM:SS): 00:00:06:10
Reference: Memory used: 3590.43 MB
Current: Memory used: 3575.23 MB

RMS_CSTR_liquid_oxidation Passed Core Comparison ✅

Original model has 37 species.
Test model has 37 species. ✅
Original model has 232 reactions.
Test model has 232 reactions. ✅

RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌

Original model has 206 species.
Test model has 206 species. ✅
Original model has 1508 reactions.
Test model has 1508 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCCO[O](34) <=> [OH](22) + CCC=O(44) origin: intra_H_migration
The tested model has 1 reactions that the original model does not have. ❌
rxn: CCCO[O](36) <=> CC[CH]OO(45) origin: intra_H_migration

Observables Test Case: RMS_CSTR_liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_CSTR_liquid_oxidation Passed Observable Testing ✅

Regression test fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:39
Current: Execution time (DD:HH:MM:SS): 00:00:00:38
Reference: Memory used: 2905.14 MB
Current: Memory used: 2894.54 MB

fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

fragment Passed Edge Comparison ✅

Original model has 33 species.
Test model has 33 species. ✅
Original model has 47 reactions.
Test model has 47 reactions. ✅

Observables Test Case: fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

fragment Passed Observable Testing ✅

Regression test RMS_constantVIdealGasReactor_fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:03:04
Current: Execution time (DD:HH:MM:SS): 00:00:03:08
Reference: Memory used: 3807.51 MB
Current: Memory used: 3794.07 MB

RMS_constantVIdealGasReactor_fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

RMS_constantVIdealGasReactor_fragment Passed Edge Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 24 reactions.
Test model has 24 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_fragment Passed Observable Testing ✅

beep boop this comment was written by a bot 🤖

@JacksonBurns JacksonBurns changed the title Avoid Unnecessary Julia Operations Avoid Unnecessary Julia Operations + Optional RMS Installation Mar 22, 2024
@JacksonBurns
Copy link
Contributor Author

Rebased onto the latest cclib CI fix in #2638

Copy link

Regression Testing Results

⚠️ One or more regression tests failed.
Please download the failed results and run the tests locally or check the log to see why.

Detailed regression test results.

Regression test aromatics:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:05
Current: Execution time (DD:HH:MM:SS): 00:00:01:04
Reference: Memory used: 2775.14 MB
Current: Memory used: 2752.61 MB

aromatics Passed Core Comparison ✅

Original model has 15 species.
Test model has 15 species. ✅
Original model has 11 reactions.
Test model has 11 reactions. ✅

aromatics Failed Edge Comparison ❌

Original model has 106 species.
Test model has 106 species. ✅
Original model has 358 reactions.
Test model has 358 reactions. ✅

Non-identical thermo! ❌
original: C=CC1C=CC2=CC1C=C2
tested: C=CC1C=CC2=CC1C=C2

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
83.22 82.78 35.48 45.14 53.78 61.40 73.58 82.20 95.08
83.22 84.16 35.48 45.14 53.78 61.40 73.58 82.20 95.08

Identical thermo comments:
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds- CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsHH) + Estimated bicyclic component: polycyclic(s3_5_6_ane) - ring(Cyclohexane) - ring(Cyclopentane) + ring(1,3-Cyclohexadiene) + ring(Cyclopentadiene)

Observables Test Case: Aromatics Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

aromatics Passed Observable Testing ✅

Regression test liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:09
Current: Execution time (DD:HH:MM:SS): 00:00:02:07
Reference: Memory used: 2911.35 MB
Current: Memory used: 2858.28 MB

liquid_oxidation Failed Core Comparison ❌

Original model has 37 species.
Test model has 37 species. ✅
Original model has 215 reactions.
Test model has 216 reactions. ❌
The tested model has 1 reactions that the original model does not have. ❌
rxn: CCO[O](30) <=> [OH](22) + CC=O(69) origin: intra_H_migration

liquid_oxidation Failed Edge Comparison ❌

Original model has 202 species.
Test model has 202 species. ✅
Original model has 1613 reactions.
Test model has 1613 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCO[O](30) <=> C[CH]OO(73) origin: intra_H_migration
The tested model has 1 reactions that the original model does not have. ❌
rxn: CCO[O](30) <=> [OH](22) + CC=O(69) origin: intra_H_migration

Non-identical kinetics! ❌
original:
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
tested:
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

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 7.79 7.46 7.21 7.00 6.67 6.41 5.94 5.60
k(T): 3.52 4.27 4.71 5.01 5.39 5.61 5.91 6.06

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: Arrhenius(A=(3.2e+12,'cm^3/(mol*s)'), 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: 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

Observables Test Case: liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

liquid_oxidation Passed Observable Testing ✅

Regression test nitrogen:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:21
Current: Execution time (DD:HH:MM:SS): 00:00:01:13
Reference: Memory used: 2910.90 MB
Current: Memory used: 2858.85 MB

nitrogen Passed Core Comparison ✅

Original model has 41 species.
Test model has 41 species. ✅
Original model has 360 reactions.
Test model has 360 reactions. ✅

nitrogen Failed Edge Comparison ❌

Original model has 132 species.
Test model has 132 species. ✅
Original model has 997 reactions.
Test model has 997 reactions. ✅

Non-identical thermo! ❌
original: O1[C]=N1
tested: O1[C]=N1

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
141.64 58.66 12.26 12.27 12.09 11.96 12.26 12.72 12.15
116.46 53.90 11.62 12.71 13.49 13.96 14.14 13.85 13.58

thermo: Thermo group additivity estimation: group(O2s-CdN3d) + group(N3d-OCd) + group(Cd-HN3dO) + ring(oxirene) + radical(CdJ-NdO)
thermo: Thermo group additivity estimation: group(O2s-CdN3d) + group(N3d-OCd) + group(Cd-HN3dO) + ring(Cyclopropene) + radical(CdJ-NdO)

Non-identical kinetics! ❌
original:
rxn: NCO(66) <=> O1[C]=N1(126) origin: Intra_R_Add_Endocyclic
tested:
rxn: NCO(66) <=> O1[C]=N1(126) origin: Intra_R_Add_Endocyclic

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -66.25 -46.19 -34.19 -26.21 -16.28 -10.36 -2.54 1.31
k(T): -49.54 -33.65 -24.16 -17.85 -10.01 -5.35 0.80 3.82

kinetics: Arrhenius(A=(6.95187e+18,'s^-1'), n=-1.628, Ea=(111.271,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone0_N-2R!H-inRing_N-1R!H-inRing_Sp-2R!H-1R!H""")
kinetics: Arrhenius(A=(6.95187e+18,'s^-1'), n=-1.628, Ea=(88.327,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone0_N-2R!H-inRing_N-1R!H-inRing_Sp-2R!H-1R!H""")
Identical kinetics comments:
kinetics: Estimated from node Backbone0_N-2R!H-inRing_N-1R!H-inRing_Sp-2R!H-1R!H

Observables Test Case: NC Comparison

✅ All Observables varied by less than 0.200 on average between old model and new model in all conditions!

nitrogen Passed Observable Testing ✅

Regression test oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:23
Current: Execution time (DD:HH:MM:SS): 00:00:01:46
Reference: Memory used: 2780.00 MB
Current: Memory used: 2741.80 MB

oxidation Passed Core Comparison ✅

Original model has 59 species.
Test model has 59 species. ✅
Original model has 694 reactions.
Test model has 694 reactions. ✅

oxidation Passed Edge Comparison ✅

Original model has 230 species.
Test model has 230 species. ✅
Original model has 1526 reactions.
Test model has 1526 reactions. ✅

Observables Test Case: Oxidation Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

oxidation Passed Observable Testing ✅

Regression test sulfur:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:54
Current: Execution time (DD:HH:MM:SS): 00:00:00:50
Reference: Memory used: 2886.10 MB
Current: Memory used: 2861.99 MB

sulfur Passed Core Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 74 reactions.
Test model has 74 reactions. ✅

sulfur Failed Edge Comparison ❌

Original model has 89 species.
Test model has 89 species. ✅
Original model has 227 reactions.
Test model has 227 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary
The tested model has 1 reactions that the original model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary

Observables Test Case: SO2 Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

sulfur Passed Observable Testing ✅

Regression test superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:34
Current: Execution time (DD:HH:MM:SS): 00:00:00:32
Reference: Memory used: 2992.09 MB
Current: Memory used: 2958.99 MB

superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 21 reactions.
Test model has 21 reactions. ✅

superminimal Passed Edge Comparison ✅

Original model has 18 species.
Test model has 18 species. ✅
Original model has 28 reactions.
Test model has 28 reactions. ✅

Regression test RMS_constantVIdealGasReactor_superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:27
Current: Execution time (DD:HH:MM:SS): 00:00:02:27
Reference: Memory used: 3451.60 MB
Current: Memory used: 3458.48 MB

RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_superminimal Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_superminimal Passed Observable Testing ✅

Regression test RMS_CSTR_liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:06:08
Current: Execution time (DD:HH:MM:SS): 00:00:06:15
Reference: Memory used: 3384.60 MB
Current: Memory used: 3363.76 MB

RMS_CSTR_liquid_oxidation Failed Core Comparison ❌

Original model has 37 species.
Test model has 37 species. ✅
Original model has 233 reactions.
Test model has 232 reactions. ❌
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCO[O](34) <=> [OH](21) + CC=O(61) origin: intra_H_migration

RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌

Original model has 206 species.
Test model has 206 species. ✅
Original model has 1508 reactions.
Test model has 1508 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCO[O](34) <=> [OH](21) + CC=O(61) origin: intra_H_migration
The tested model has 1 reactions that the original model does not have. ❌
rxn: CCO[O](35) <=> C[CH]OO(62) origin: intra_H_migration

Observables Test Case: RMS_CSTR_liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_CSTR_liquid_oxidation Passed Observable Testing ✅

Regression test fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:40
Current: Execution time (DD:HH:MM:SS): 00:00:00:38
Reference: Memory used: 2711.97 MB
Current: Memory used: 2685.41 MB

fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

fragment Passed Edge Comparison ✅

Original model has 33 species.
Test model has 33 species. ✅
Original model has 47 reactions.
Test model has 47 reactions. ✅

Observables Test Case: fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

fragment Passed Observable Testing ✅

Regression test RMS_constantVIdealGasReactor_fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:03:06
Current: Execution time (DD:HH:MM:SS): 00:00:03:10
Reference: Memory used: 3584.70 MB
Current: Memory used: 3577.63 MB

RMS_constantVIdealGasReactor_fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

RMS_constantVIdealGasReactor_fragment Passed Edge Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 24 reactions.
Test model has 24 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_fragment Passed Observable Testing ✅

beep boop this comment was written by a bot 🤖

@JacksonBurns
Copy link
Contributor Author

@hwpang please re-review!

environment.yml Show resolved Hide resolved
rmgpy/rmg/input.py Outdated Show resolved Hide resolved
@JacksonBurns
Copy link
Contributor Author

Long Comment! Breaking Into Sections

Continuing Review

@hwpang I have addressed your comments and rebased - please re-review!

I am going to tack on a couple commits to the docs about the installation process.

Addressing @hwpang's Notes

@JacksonBurns Could you elaborate on how #2635 is blocked by this PR?

Addressing @mjohnson541's Notes

  1. The "Avoid Unnecessary Julia Operations" removes nearly all annoyance users have with waiting for julia precompilation when they don't need it.

👍 to this benefit - but I'd also like to mention that there are other benefits:

  • would allow developers to run pytest via Python instead of python-jl, dramatically cutting down on execution time
  • would make using RMG as a library in others software easier, since it doesn't require this additional set of dependencies
  1. In PR revise conda recipe and github actions to execute it #2636 we showed that Julia/RMS is not the source of the issues building binaries, the issue at stake was shown to be a cython compilation issue that RMS merely catches first because it was the first thing to import from RMG.

I don't think this is a reason to not merge this PR. #2641 shows that by merging this we could get the build to work.

  1. We are about to completely overhaul this system in Overhaul RMG-RMS Python-Julia dependencies & Add tests for many testless Arkane network algorithms #2640 [...]

See my notes in the above section about why this is blocked.

also update the final run example - the point of specifying the `PYTHONPATH` was so that users _don't_ have to give the full path to `rmg.py` - the `python` executable can search it out
rmgpy/pdep/sls.py Outdated Show resolved Hide resolved
rmgpy/rmg/input.py Outdated Show resolved Hide resolved
rmgpy/rmg/main.py Outdated Show resolved Hide resolved
rmgpy/pdep/sls.py Outdated Show resolved Hide resolved
@hwpang
Copy link
Contributor

hwpang commented Jun 12, 2024

@JacksonBurns Thanks for the explanation! I have left some minor comments, and I am happy to merge this (so that we can get other PRs unblocked) after they are addressed.

Copy link

Regression Testing Results

WARNING:root:Initial mole fractions do not sum to one; normalizing.
WARNING:root:Initial mole fractions do not sum to one; normalizing.
WARNING:root:Initial mole fractions do not sum to one; normalizing.
⚠️ One or more regression tests failed.
Please download the failed results and run the tests locally or check the log to see why.

Detailed regression test results.

Regression test aromatics:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:05
Current: Execution time (DD:HH:MM:SS): 00:00:01:04
Reference: Memory used: 2765.54 MB
Current: Memory used: 2753.24 MB

aromatics Passed Core Comparison ✅

Original model has 15 species.
Test model has 15 species. ✅
Original model has 11 reactions.
Test model has 11 reactions. ✅

aromatics Passed Edge Comparison ✅

Original model has 106 species.
Test model has 106 species. ✅
Original model has 358 reactions.
Test model has 358 reactions. ✅

Observables Test Case: Aromatics Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

aromatics Passed Observable Testing ✅

Regression test liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:08
Current: Execution time (DD:HH:MM:SS): 00:00:02:07
Reference: Memory used: 2911.88 MB
Current: Memory used: 2865.91 MB

liquid_oxidation Failed Core Comparison ❌

Original model has 37 species.
Test model has 37 species. ✅
Original model has 216 reactions.
Test model has 215 reactions. ❌
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCO[O](30) <=> [OH](22) + CC=O(72) origin: intra_H_migration

Non-identical kinetics! ❌
original:
rxn: CCCC(C)O[O](20) + CCCCCO[O](104) <=> oxygen(1) + CCCC(C)[O](61) + CCCCC[O](127) origin: Peroxyl_Disproportionation
tested:
rxn: CCCC(C)O[O](20) + CCCCCO[O](104) <=> oxygen(1) + CCCC(C)[O](61) + CCCCC[O](127) 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

liquid_oxidation Failed Edge Comparison ❌

Original model has 202 species.
Test model has 202 species. ✅
Original model has 1610 reactions.
Test model has 1618 reactions. ❌
The original model has 2 reactions that the tested model does not have. ❌
rxn: CCO[O](30) <=> [OH](22) + CC=O(72) origin: intra_H_migration
rxn: CCCCCO[O](104) + CCCCCO[O](104) <=> oxygen(1) + CCCCC=O(106) + CCCCCO(130) origin: Peroxyl_Termination
The tested model has 10 reactions that the original model does not have. ❌
rxn: CCO[O](29) <=> C[CH]OO(73) origin: intra_H_migration
rxn: [CH2]CCOO(70) + CCCCCOO(105) <=> CCCOO(36) + CC[CH]CCOO(108) origin: H_Abstraction
rxn: [CH2]CCOO(70) + CCCCCOO(105) <=> CCCOO(36) + CCC[CH]COO(107) origin: H_Abstraction
rxn: [CH2]CCOO(70) + CCCCCOO(105) <=> CCCOO(36) + C[CH]CCCOO(109) origin: H_Abstraction
rxn: [CH2]CCOO(70) + CCCCCOO(105) <=> CCCOO(36) + CCCC[CH]OO(135) origin: H_Abstraction
rxn: CCCOO(36) + [CH2]CCCCOO(110) <=> [CH2]CCOO(70) + CCCCCOO(105) origin: H_Abstraction
rxn: C[CH]CCCO(157) + CCCCCO[O](104) <=> CC=CCCO(183) + CCCCCOO(105) origin: Disproportionation
rxn: C[CH]CCCO(157) + CCCCCO[O](104) <=> C=CCCCO(184) + CCCCCOO(105) origin: Disproportionation
rxn: C[CH]CCCO(157) + C[CH]CCCO(157) <=> CC=CCCO(183) + CCCCCO(130) origin: Disproportionation
rxn: C[CH]CCCO(157) + C[CH]CCCO(157) <=> C=CCCCO(184) + CCCCCO(130) origin: Disproportionation

Non-identical kinetics! ❌
original:
rxn: CCCC(C)O[O](20) + CCCCCO[O](104) <=> oxygen(1) + CCCC(C)[O](61) + CCCCC[O](127) origin: Peroxyl_Disproportionation
tested:
rxn: CCCC(C)O[O](20) + CCCCCO[O](104) <=> oxygen(1) + CCCC(C)[O](61) + CCCCC[O](127) 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

Observables Test Case: liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

liquid_oxidation Passed Observable Testing ✅

Regression test nitrogen:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:23
Current: Execution time (DD:HH:MM:SS): 00:00:01:15
Reference: Memory used: 2903.45 MB
Current: Memory used: 2862.33 MB

nitrogen Passed Core Comparison ✅

Original model has 41 species.
Test model has 41 species. ✅
Original model has 360 reactions.
Test model has 360 reactions. ✅

nitrogen Passed Edge Comparison ✅

Original model has 132 species.
Test model has 132 species. ✅
Original model has 997 reactions.
Test model has 997 reactions. ✅

Observables Test Case: NC Comparison

✅ All Observables varied by less than 0.200 on average between old model and new model in all conditions!

nitrogen Passed Observable Testing ✅

Regression test oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:21
Current: Execution time (DD:HH:MM:SS): 00:00:01:47
Reference: Memory used: 2771.24 MB
Current: Memory used: 2741.45 MB

oxidation Passed Core Comparison ✅

Original model has 59 species.
Test model has 59 species. ✅
Original model has 694 reactions.
Test model has 694 reactions. ✅

oxidation Passed Edge Comparison ✅

Original model has 230 species.
Test model has 230 species. ✅
Original model has 1526 reactions.
Test model has 1526 reactions. ✅

Observables Test Case: Oxidation Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

oxidation Passed Observable Testing ✅

Regression test sulfur:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:54
Current: Execution time (DD:HH:MM:SS): 00:00:00:50
Reference: Memory used: 2872.34 MB
Current: Memory used: 2853.45 MB

sulfur Passed Core Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 74 reactions.
Test model has 74 reactions. ✅

sulfur Failed Edge Comparison ❌

Original model has 89 species.
Test model has 89 species. ✅
Original model has 227 reactions.
Test model has 227 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary
The tested model has 1 reactions that the original model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary

Observables Test Case: SO2 Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

sulfur Passed Observable Testing ✅

Regression test superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:35
Current: Execution time (DD:HH:MM:SS): 00:00:00:33
Reference: Memory used: 2953.67 MB
Current: Memory used: 2971.57 MB

superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 21 reactions.
Test model has 21 reactions. ✅

superminimal Passed Edge Comparison ✅

Original model has 18 species.
Test model has 18 species. ✅
Original model has 28 reactions.
Test model has 28 reactions. ✅

Regression test RMS_constantVIdealGasReactor_superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:23
Current: Execution time (DD:HH:MM:SS): 00:00:02:23
Reference: Memory used: 3450.99 MB
Current: Memory used: 3433.79 MB

RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_superminimal Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_superminimal Passed Observable Testing ✅

Regression test RMS_CSTR_liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:05:54
Current: Execution time (DD:HH:MM:SS): 00:00:05:55
Reference: Memory used: 3368.83 MB
Current: Memory used: 3373.24 MB

RMS_CSTR_liquid_oxidation Passed Core Comparison ✅

Original model has 37 species.
Test model has 37 species. ✅
Original model has 233 reactions.
Test model has 233 reactions. ✅

RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌

Original model has 206 species.
Test model has 206 species. ✅
Original model has 1508 reactions.
Test model has 1508 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCCO[O](36) <=> CC[CH]OO(51) origin: intra_H_migration
The tested model has 1 reactions that the original model does not have. ❌
rxn: CCCO[O](36) <=> [OH](21) + CCC=O(44) origin: intra_H_migration

Non-identical kinetics! ❌
original:
rxn: CCCO[O](36) + CCCC(C)O[O](33) <=> oxygen(1) + CCC[O](97) + CCCC(C)[O](64) origin: Peroxyl_Disproportionation
tested:
rxn: CCCO[O](36) + CCCC(C)O[O](33) <=> oxygen(1) + CCC[O](92) + CCCC(C)[O](65) origin: Peroxyl_Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 3.69 4.39 4.82 5.10 5.45 5.66 5.94 6.08
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.866,'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

Observables Test Case: RMS_CSTR_liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_CSTR_liquid_oxidation Passed Observable Testing ✅

Regression test fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:40
Current: Execution time (DD:HH:MM:SS): 00:00:00:39
Reference: Memory used: 2702.63 MB
Current: Memory used: 2688.36 MB

fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

fragment Passed Edge Comparison ✅

Original model has 33 species.
Test model has 33 species. ✅
Original model has 47 reactions.
Test model has 47 reactions. ✅

Observables Test Case: fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

fragment Passed Observable Testing ✅

Regression test RMS_constantVIdealGasReactor_fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:03:01
Current: Execution time (DD:HH:MM:SS): 00:00:03:02
Reference: Memory used: 3592.03 MB
Current: Memory used: 3585.91 MB

RMS_constantVIdealGasReactor_fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

RMS_constantVIdealGasReactor_fragment Passed Edge Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 24 reactions.
Test model has 24 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_fragment Passed Observable Testing ✅

beep boop this comment was written by a bot 🤖

hwpang
hwpang previously approved these changes Jun 12, 2024
Copy link
Contributor

@hwpang hwpang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@hwpang hwpang enabled auto-merge June 12, 2024 18:30
Copy link
Contributor

@mjohnson541 mjohnson541 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting this to automerge without resolving discussions is absolutely not appropriate behavior!

Copy link

Regression Testing Results

WARNING:root:Initial mole fractions do not sum to one; normalizing.
WARNING:root:Initial mole fractions do not sum to one; normalizing.
WARNING:root:Initial mole fractions do not sum to one; normalizing.
⚠️ One or more regression tests failed.
Please download the failed results and run the tests locally or check the log to see why.

Detailed regression test results.

Regression test aromatics:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:05
Current: Execution time (DD:HH:MM:SS): 00:00:01:03
Reference: Memory used: 2765.54 MB
Current: Memory used: 2751.70 MB

aromatics Passed Core Comparison ✅

Original model has 15 species.
Test model has 15 species. ✅
Original model has 11 reactions.
Test model has 11 reactions. ✅

aromatics Failed Edge Comparison ❌

Original model has 106 species.
Test model has 106 species. ✅
Original model has 358 reactions.
Test model has 358 reactions. ✅

Non-identical thermo! ❌
original: C1=CC2C=CC=1C=C2
tested: C1=CC2C=CC=1C=C2

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
129.39 79.85 22.98 30.09 36.61 42.21 50.22 55.39 65.95
164.90 80.93 22.21 28.97 35.25 40.69 48.70 53.97 64.36

thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsCsH) + group(Cdd-CdsCds) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(124cyclohexatriene) + ring(1,4-Cyclohexadiene)
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsCsH) + group(Cdd-CdsCds) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(124cyclohexatriene) + ring(124cyclohexatriene)

Non-identical kinetics! ❌
original:
rxn: [c]1ccccc1(3) + C1=CC2C=C[C]1C=C2(49) <=> benzene(1) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [c]1ccccc1(3) + C1=CC2C=C[C]1C=C2(49) <=> benzene(1) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 4.24 4.69 5.05 5.33 5.79 6.14 6.78 7.23
k(T): -3.00 -0.74 0.70 1.71 3.07 3.97 5.33 6.15

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(9.943,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 38.5 to 41.6 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 38.5 to 41.6 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: [H](4) + C1=CC2C=C[C]1C=C2(49) <=> [H][H](11) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [H](4) + C1=CC2C=C[C]1C=C2(49) <=> [H][H](11) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 5.77 5.83 5.88 5.92 5.97 6.02 6.10 6.16
k(T): -7.44 -4.08 -2.05 -0.69 1.02 2.06 3.46 4.18

kinetics: Arrhenius(A=(4.06926e+10,'cm^3/(mol*s)'), n=0.47, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(4.06926e+10,'cm^3/(mol*s)'), n=0.47, Ea=(18.137,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O Multiplied by reaction path degeneracy 3.0 Ea raised from 75.2 to 75.9 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O
Multiplied by reaction path degeneracy 3.0
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O
Multiplied by reaction path degeneracy 3.0
Ea raised from 75.2 to 75.9 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: [CH]=C(7) + C1=CC2C=C[C]1C=C2(49) <=> C=C(13) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]=C(7) + C1=CC2C=C[C]1C=C2(49) <=> C=C(13) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 4.06 4.76 5.18 5.46 5.81 6.02 6.30 6.44
k(T): -7.17 -3.66 -1.56 -0.16 1.60 2.65 4.05 4.75

kinetics: Arrhenius(A=(7.23e+12,'cm^3/(mol*s)'), n=0, Ea=(3.841,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_N-Sp-6R!H-4CHNS Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(7.23e+12,'cm^3/(mol*s)'), n=0, Ea=(19.262,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_N-Sp-6R!H-4CHNS Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_N-Sp-6R!H-4CHNS
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2CC2=C1(27) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2CC2=C1(27) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -4.55 -1.90 -0.23 0.94 2.49 3.50 5.02 5.92
k(T): -30.48 -21.35 -15.79 -12.03 -7.23 -4.28 -0.16 2.03

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(12.063,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(47.659,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=C2C1(29) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=C2C1(29) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -5.30 -2.46 -0.68 0.57 2.21 3.28 4.87 5.80
k(T): -31.23 -21.91 -16.23 -12.40 -7.51 -4.50 -0.31 1.91

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(13.089,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 53.5 to 54.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(48.686,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 202.2 to 203.7 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 53.5 to 54.8 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 202.2 to 203.7 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2=CC2C1(28) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2=CC2C1(28) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -1.38 0.48 1.67 2.52 3.68 4.45 5.66 6.39
k(T): -27.24 -18.91 -13.84 -10.40 -6.02 -3.30 0.48 2.51

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(7.718,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(43.208,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 180.2 to 180.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 180.2 to 180.8 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: [CH]=CC=C(15) + C1=CC2C=C[C]1C=C2(49) <=> C=CC=C(17) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]=CC=C(15) + C1=CC2C=C[C]1C=C2(49) <=> C=CC=C(17) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -0.49 0.99 1.87 2.46 3.19 3.64 4.23 4.52
k(T): -11.95 -7.61 -5.01 -3.27 -1.10 0.20 1.93 2.80

kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(8.084,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(23.821,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]=Cc1ccccc1(12) <=> C1=CC2C=CC=1C=C2(79) + C=Cc1ccccc1(16) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]=Cc1ccccc1(12) <=> C1=CC2C=CC=1C=C2(79) + C=Cc1ccccc1(16) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -0.66 0.85 1.76 2.37 3.13 3.58 4.19 4.49
k(T): -12.28 -7.86 -5.21 -3.44 -1.23 0.10 1.87 2.75

kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(8.328,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(24.273,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C1)C2(69) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C1)C2(69) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -4.51 -1.87 -0.20 0.96 2.51 3.52 5.03 5.92
k(T): -30.44 -21.32 -15.76 -12.01 -7.22 -4.26 -0.16 2.03

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(12.01,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 46.5 to 50.2 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(47.606,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 195.1 to 199.2 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 46.5 to 50.2 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 195.1 to 199.2 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C2)C1(70) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C2)C1(70) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -6.18 -3.12 -1.20 0.13 1.88 3.01 4.70 5.67
k(T): -32.11 -22.57 -16.76 -12.84 -7.84 -4.76 -0.49 1.78

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(14.299,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 56.6 to 59.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(49.895,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 205.2 to 208.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 56.6 to 59.8 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 205.2 to 208.8 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2=CC(C=C2)C1(71) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2=CC(C=C2)C1(71) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -8.04 -4.52 -2.32 -0.81 1.18 2.46 4.32 5.39
k(T): -33.97 -23.97 -17.88 -13.77 -8.54 -5.32 -0.86 1.50

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(16.86,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 65.8 to 70.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(52.457,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 214.4 to 219.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 65.8 to 70.5 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 214.4 to 219.5 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1C=C2(82) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1C=C2(82) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -4.55 -1.90 -0.23 0.94 2.49 3.50 5.02 5.92
k(T): -30.48 -21.35 -15.79 -12.03 -7.23 -4.28 -0.16 2.03

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(12.063,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(47.659,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1=CC2(83) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1=CC2(83) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 3.96 4.60 5.07 5.43 5.98 6.39 7.11 7.60
k(T): -19.49 -12.98 -9.00 -6.29 -2.81 -0.64 2.42 4.08

kinetics: Arrhenius(A=(51.5097,'cm^3/(mol*s)'), n=3.635, Ea=(1.036,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 9.0""")
kinetics: Arrhenius(A=(51.5097,'cm^3/(mol*s)'), n=3.635, Ea=(33.226,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 9.0 Ea raised from 133.4 to 139.0 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 9.0
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 9.0
Ea raised from 133.4 to 139.0 kJ/mol to match endothermicity of reaction.

Observables Test Case: Aromatics Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

aromatics Passed Observable Testing ✅

Regression test liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:08
Current: Execution time (DD:HH:MM:SS): 00:00:02:04
Reference: Memory used: 2911.88 MB
Current: Memory used: 2860.38 MB

liquid_oxidation Passed Core Comparison ✅

Original model has 37 species.
Test model has 37 species. ✅
Original model has 216 reactions.
Test model has 216 reactions. ✅

liquid_oxidation Passed Edge Comparison ✅

Original model has 202 species.
Test model has 202 species. ✅
Original model has 1610 reactions.
Test model has 1610 reactions. ✅

Observables Test Case: liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

liquid_oxidation Passed Observable Testing ✅

Regression test nitrogen:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:23
Current: Execution time (DD:HH:MM:SS): 00:00:01:13
Reference: Memory used: 2903.45 MB
Current: Memory used: 2881.54 MB

nitrogen Passed Core Comparison ✅

Original model has 41 species.
Test model has 41 species. ✅
Original model has 360 reactions.
Test model has 360 reactions. ✅

nitrogen Passed Edge Comparison ✅

Original model has 132 species.
Test model has 132 species. ✅
Original model has 997 reactions.
Test model has 997 reactions. ✅

Observables Test Case: NC Comparison

✅ All Observables varied by less than 0.200 on average between old model and new model in all conditions!

nitrogen Passed Observable Testing ✅

Regression test oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:21
Current: Execution time (DD:HH:MM:SS): 00:00:01:46
Reference: Memory used: 2771.24 MB
Current: Memory used: 2743.99 MB

oxidation Passed Core Comparison ✅

Original model has 59 species.
Test model has 59 species. ✅
Original model has 694 reactions.
Test model has 694 reactions. ✅

oxidation Passed Edge Comparison ✅

Original model has 230 species.
Test model has 230 species. ✅
Original model has 1526 reactions.
Test model has 1526 reactions. ✅

Observables Test Case: Oxidation Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

oxidation Passed Observable Testing ✅

Regression test sulfur:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:54
Current: Execution time (DD:HH:MM:SS): 00:00:00:49
Reference: Memory used: 2872.34 MB
Current: Memory used: 2859.96 MB

sulfur Passed Core Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 74 reactions.
Test model has 74 reactions. ✅

sulfur Failed Edge Comparison ❌

Original model has 89 species.
Test model has 89 species. ✅
Original model has 227 reactions.
Test model has 227 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary
The tested model has 1 reactions that the original model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary

Observables Test Case: SO2 Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

sulfur Passed Observable Testing ✅

Regression test superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:35
Current: Execution time (DD:HH:MM:SS): 00:00:00:33
Reference: Memory used: 2953.67 MB
Current: Memory used: 2969.24 MB

superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 21 reactions.
Test model has 21 reactions. ✅

superminimal Passed Edge Comparison ✅

Original model has 18 species.
Test model has 18 species. ✅
Original model has 28 reactions.
Test model has 28 reactions. ✅

Regression test RMS_constantVIdealGasReactor_superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:23
Current: Execution time (DD:HH:MM:SS): 00:00:02:24
Reference: Memory used: 3450.99 MB
Current: Memory used: 3443.20 MB

RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_superminimal Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_superminimal Passed Observable Testing ✅

Regression test RMS_CSTR_liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:05:54
Current: Execution time (DD:HH:MM:SS): 00:00:05:59
Reference: Memory used: 3368.83 MB
Current: Memory used: 3360.90 MB

RMS_CSTR_liquid_oxidation Failed Core Comparison ❌

Original model has 37 species.
Test model has 37 species. ✅
Original model has 233 reactions.
Test model has 232 reactions. ❌
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCO[O](35) <=> [OH](21) + CC=O(61) origin: intra_H_migration

RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌

Original model has 206 species.
Test model has 206 species. ✅
Original model has 1508 reactions.
Test model has 1508 reactions. ✅
The original model has 2 reactions that the tested model does not have. ❌
rxn: CCO[O](35) <=> [OH](21) + CC=O(61) origin: intra_H_migration
rxn: CCCO[O](36) <=> CC[CH]OO(51) origin: intra_H_migration
The tested model has 2 reactions that the original model does not have. ❌
rxn: CCCO[O](36) <=> [OH](22) + CCC=O(44) origin: intra_H_migration
rxn: CCO[O](34) <=> C[CH]OO(63) origin: intra_H_migration

Non-identical kinetics! ❌
original:
rxn: CCCO[O](36) + CCCC(C)O[O](33) <=> oxygen(1) + CCC[O](97) + CCCC(C)[O](64) origin: Peroxyl_Disproportionation
tested:
rxn: CCCO[O](36) + CCCC(C)O[O](33) <=> oxygen(1) + CCC[O](94) + CCCC(C)[O](62) origin: Peroxyl_Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 3.69 4.39 4.82 5.10 5.45 5.66 5.94 6.08
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.866,'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

Observables Test Case: RMS_CSTR_liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_CSTR_liquid_oxidation Passed Observable Testing ✅

Regression test fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:40
Current: Execution time (DD:HH:MM:SS): 00:00:00:38
Reference: Memory used: 2702.63 MB
Current: Memory used: 2686.80 MB

fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

fragment Passed Edge Comparison ✅

Original model has 33 species.
Test model has 33 species. ✅
Original model has 47 reactions.
Test model has 47 reactions. ✅

Observables Test Case: fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

fragment Passed Observable Testing ✅

Regression test RMS_constantVIdealGasReactor_fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:03:01
Current: Execution time (DD:HH:MM:SS): 00:00:03:03
Reference: Memory used: 3592.03 MB
Current: Memory used: 3588.15 MB

RMS_constantVIdealGasReactor_fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

RMS_constantVIdealGasReactor_fragment Passed Edge Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 24 reactions.
Test model has 24 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_fragment Passed Observable Testing ✅

beep boop this comment was written by a bot 🤖

@hwpang
Copy link
Contributor

hwpang commented Jun 13, 2024

@mjohnson541 My bad, sorry, I thought Jackson has replied and resolved your concerns, so I set it to automerge after seeing that he addressed my change requests. Thanks for disabling the automerge.

@JacksonBurns
Copy link
Contributor Author

What else should we discuss?

Copy link

Regression Testing Results

WARNING:root:Initial mole fractions do not sum to one; normalizing.
WARNING:root:Initial mole fractions do not sum to one; normalizing.
WARNING:root:Initial mole fractions do not sum to one; normalizing.
⚠️ One or more regression tests failed.
Please download the failed results and run the tests locally or check the log to see why.

Detailed regression test results.

Regression test aromatics:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:10
Current: Execution time (DD:HH:MM:SS): 00:00:01:04
Reference: Memory used: 2778.28 MB
Current: Memory used: 2751.15 MB

aromatics Passed Core Comparison ✅

Original model has 15 species.
Test model has 15 species. ✅
Original model has 11 reactions.
Test model has 11 reactions. ✅

aromatics Failed Edge Comparison ❌

Original model has 106 species.
Test model has 106 species. ✅
Original model has 358 reactions.
Test model has 358 reactions. ✅

Non-identical thermo! ❌
original: C1=CC2C=CC=1C=C2
tested: C1=CC2C=CC=1C=C2

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
164.90 80.93 22.21 28.97 35.25 40.69 48.70 53.97 64.36
129.39 79.85 22.98 30.09 36.61 42.21 50.22 55.39 65.95

thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsCsH) + group(Cdd-CdsCds) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(124cyclohexatriene) + ring(124cyclohexatriene)
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsCsH) + group(Cdd-CdsCds) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(124cyclohexatriene) + ring(1,4-Cyclohexadiene)

Non-identical kinetics! ❌
original:
rxn: [c]1ccccc1(3) + C1=CC2C=C[C]1C=C2(49) <=> benzene(1) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [c]1ccccc1(3) + C1=CC2C=C[C]1C=C2(49) <=> benzene(1) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -3.00 -0.74 0.70 1.71 3.07 3.97 5.33 6.15
k(T): 4.24 4.69 5.05 5.33 5.79 6.14 6.78 7.23

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(9.943,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 38.5 to 41.6 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 38.5 to 41.6 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: [H](4) + C1=CC2C=C[C]1C=C2(49) <=> [H][H](11) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [H](4) + C1=CC2C=C[C]1C=C2(49) <=> [H][H](11) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -7.44 -4.08 -2.05 -0.69 1.02 2.06 3.46 4.18
k(T): 5.77 5.83 5.88 5.92 5.97 6.02 6.10 6.16

kinetics: Arrhenius(A=(4.06926e+10,'cm^3/(mol*s)'), n=0.47, Ea=(18.137,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O Multiplied by reaction path degeneracy 3.0 Ea raised from 75.2 to 75.9 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(4.06926e+10,'cm^3/(mol*s)'), n=0.47, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O Multiplied by reaction path degeneracy 3.0""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O
Multiplied by reaction path degeneracy 3.0
Ea raised from 75.2 to 75.9 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: [CH]=C(7) + C1=CC2C=C[C]1C=C2(49) <=> C=C(13) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]=C(7) + C1=CC2C=C[C]1C=C2(49) <=> C=C(13) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -7.17 -3.66 -1.56 -0.16 1.60 2.65 4.05 4.75
k(T): 4.06 4.76 5.18 5.46 5.81 6.02 6.30 6.44

kinetics: Arrhenius(A=(7.23e+12,'cm^3/(mol*s)'), n=0, Ea=(19.262,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_N-Sp-6R!H-4CHNS Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(7.23e+12,'cm^3/(mol*s)'), n=0, Ea=(3.841,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_N-Sp-6R!H-4CHNS Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_N-Sp-6R!H-4CHNS
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2CC2=C1(27) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2CC2=C1(27) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -30.48 -21.35 -15.79 -12.03 -7.23 -4.28 -0.16 2.03
k(T): -4.55 -1.90 -0.23 0.94 2.49 3.50 5.02 5.92

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(47.659,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(12.063,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=C2C1(29) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=C2C1(29) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -31.23 -21.91 -16.23 -12.40 -7.51 -4.50 -0.31 1.91
k(T): -5.30 -2.46 -0.68 0.57 2.21 3.28 4.87 5.80

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(48.686,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 202.2 to 203.7 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(13.089,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 53.5 to 54.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 202.2 to 203.7 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 53.5 to 54.8 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2=CC2C1(28) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]1C2=CC=CC12(8) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2=CC2C1(28) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -27.24 -18.91 -13.84 -10.40 -6.02 -3.30 0.48 2.51
k(T): -1.38 0.48 1.67 2.52 3.68 4.45 5.66 6.39

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(43.208,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 180.2 to 180.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(7.718,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 180.2 to 180.8 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: [CH]=CC=C(15) + C1=CC2C=C[C]1C=C2(49) <=> C=CC=C(17) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation
tested:
rxn: [CH]=CC=C(15) + C1=CC2C=C[C]1C=C2(49) <=> C=CC=C(17) + C1=CC2C=CC=1C=C2(79) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -11.95 -7.61 -5.01 -3.27 -1.10 0.20 1.93 2.80
k(T): -0.49 0.99 1.87 2.46 3.19 3.64 4.23 4.52

kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(23.821,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(8.084,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]=Cc1ccccc1(12) <=> C1=CC2C=CC=1C=C2(79) + C=Cc1ccccc1(16) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]=Cc1ccccc1(12) <=> C1=CC2C=CC=1C=C2(79) + C=Cc1ccccc1(16) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -12.28 -7.86 -5.21 -3.44 -1.23 0.10 1.87 2.75
k(T): -0.66 0.85 1.76 2.37 3.13 3.58 4.19 4.49

kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(24.273,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(2.529e+11,'cm^3/(mol*s)'), n=0, Ea=(8.328,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-6R!H-R
Multiplied by reaction path degeneracy 3.0

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C1)C2(69) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C1)C2(69) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -30.44 -21.32 -15.76 -12.01 -7.22 -4.26 -0.16 2.03
k(T): -4.51 -1.87 -0.20 0.96 2.51 3.52 5.03 5.92

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(47.606,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 195.1 to 199.2 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(12.01,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 46.5 to 50.2 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 195.1 to 199.2 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 46.5 to 50.2 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C2)C1(70) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC(=C2)C1(70) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -32.11 -22.57 -16.76 -12.84 -7.84 -4.76 -0.49 1.78
k(T): -6.18 -3.12 -1.20 0.13 1.88 3.01 4.70 5.67

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(49.895,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 205.2 to 208.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(14.299,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 56.6 to 59.8 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 205.2 to 208.8 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 56.6 to 59.8 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2=CC(C=C2)C1(71) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + [CH]1C2=CC=CC1C=C2(48) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2=CC(C=C2)C1(71) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -33.97 -23.97 -17.88 -13.77 -8.54 -5.32 -0.86 1.50
k(T): -8.04 -4.52 -2.32 -0.81 1.18 2.46 4.32 5.39

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(52.457,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 214.4 to 219.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(16.86,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 65.8 to 70.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 214.4 to 219.5 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 65.8 to 70.5 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1C=C2(82) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1C=C2(82) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -30.48 -21.35 -15.79 -12.03 -7.23 -4.28 -0.16 2.03
k(T): -4.55 -1.90 -0.23 0.94 2.49 3.50 5.02 5.92

kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(47.659,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(17.1699,'cm^3/(mol*s)'), n=3.635, Ea=(12.063,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 3.0 Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 195.4 to 199.4 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 3.0
Ea raised from 46.8 to 50.5 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1=CC2(83) origin: Disproportionation
tested:
rxn: C1=CC2C=C[C]1C=C2(49) + C1=CC2C=C[C]1C=C2(49) <=> C1=CC2C=CC=1C=C2(79) + C1=CC2C=CC1=CC2(83) origin: Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -19.49 -12.98 -9.00 -6.29 -2.81 -0.64 2.42 4.08
k(T): 3.96 4.60 5.07 5.43 5.98 6.39 7.11 7.60

kinetics: Arrhenius(A=(51.5097,'cm^3/(mol*s)'), n=3.635, Ea=(33.226,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 9.0 Ea raised from 133.4 to 139.0 kJ/mol to match endothermicity of reaction.""")
kinetics: Arrhenius(A=(51.5097,'cm^3/(mol*s)'), n=3.635, Ea=(1.036,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R Multiplied by reaction path degeneracy 9.0""")
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 9.0
Ea raised from 133.4 to 139.0 kJ/mol to match endothermicity of reaction.
kinetics: Estimated from node Root_Ext-1R!H-R_N-4R->O_Sp-5R!H=1R!H_Ext-4CHNS-R_Ext-4CHNS-R
Multiplied by reaction path degeneracy 9.0

Observables Test Case: Aromatics Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

aromatics Passed Observable Testing ✅

Regression test liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:11
Current: Execution time (DD:HH:MM:SS): 00:00:02:00
Reference: Memory used: 2914.60 MB
Current: Memory used: 2864.00 MB

liquid_oxidation Passed Core Comparison ✅

Original model has 37 species.
Test model has 37 species. ✅
Original model has 215 reactions.
Test model has 215 reactions. ✅

liquid_oxidation Passed Edge Comparison ✅

Original model has 202 species.
Test model has 202 species. ✅
Original model has 1610 reactions.
Test model has 1610 reactions. ✅

Observables Test Case: liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

liquid_oxidation Passed Observable Testing ✅

Regression test nitrogen:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:27
Current: Execution time (DD:HH:MM:SS): 00:00:01:11
Reference: Memory used: 2907.66 MB
Current: Memory used: 2865.61 MB

nitrogen Failed Core Comparison ❌

Original model has 41 species.
Test model has 41 species. ✅
Original model has 359 reactions.
Test model has 360 reactions. ❌
The tested model has 1 reactions that the original model does not have. ❌
rxn: HNO(48) + HCO(13) <=> NO(38) + CH2O(18) origin: H_Abstraction

nitrogen Failed Edge Comparison ❌

Original model has 132 species.
Test model has 132 species. ✅
Original model has 995 reactions.
Test model has 997 reactions. ❌

Non-identical thermo! ❌
original: O1[C]=N1
tested: O1[C]=N1

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
116.46 53.90 11.62 12.71 13.49 13.96 14.14 13.85 13.58
141.64 58.66 12.26 12.27 12.09 11.96 12.26 12.72 12.15

thermo: Thermo group additivity estimation: group(O2s-CdN3d) + group(N3d-OCd) + group(Cd-HN3dO) + ring(Cyclopropene) + radical(CdJ-NdO)
thermo: Thermo group additivity estimation: group(O2s-CdN3d) + group(N3d-OCd) + group(Cd-HN3dO) + ring(oxirene) + radical(CdJ-NdO)
The tested model has 2 reactions that the original model does not have. ❌
rxn: HNO(48) + HCO(13) <=> NO(38) + CH2O(18) origin: H_Abstraction
rxn: HON(T)(83) + HCO(13) <=> NO(38) + CH2O(18) origin: Disproportionation

Non-identical kinetics! ❌
original:
rxn: NCO(66) <=> O1[C]=N1(126) origin: Intra_R_Add_Endocyclic
tested:
rxn: NCO(66) <=> O1[C]=N1(126) origin: Intra_R_Add_Endocyclic

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -49.54 -33.65 -24.16 -17.85 -10.01 -5.35 0.80 3.82
k(T): -66.25 -46.19 -34.19 -26.21 -16.28 -10.36 -2.54 1.31

kinetics: Arrhenius(A=(6.95187e+18,'s^-1'), n=-1.628, Ea=(88.327,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone0_N-2R!H-inRing_N-1R!H-inRing_Sp-2R!H-1R!H""")
kinetics: Arrhenius(A=(6.95187e+18,'s^-1'), n=-1.628, Ea=(111.271,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone0_N-2R!H-inRing_N-1R!H-inRing_Sp-2R!H-1R!H""")
Identical kinetics comments:
kinetics: Estimated from node Backbone0_N-2R!H-inRing_N-1R!H-inRing_Sp-2R!H-1R!H

Observables Test Case: NC Comparison

✅ All Observables varied by less than 0.200 on average between old model and new model in all conditions!

nitrogen Passed Observable Testing ✅

Regression test oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:31
Current: Execution time (DD:HH:MM:SS): 00:00:01:47
Reference: Memory used: 2779.39 MB
Current: Memory used: 2740.63 MB

oxidation Passed Core Comparison ✅

Original model has 59 species.
Test model has 59 species. ✅
Original model has 694 reactions.
Test model has 694 reactions. ✅

oxidation Passed Edge Comparison ✅

Original model has 230 species.
Test model has 230 species. ✅
Original model has 1526 reactions.
Test model has 1526 reactions. ✅

Observables Test Case: Oxidation Comparison

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!

oxidation Passed Observable Testing ✅

Regression test sulfur:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:58
Current: Execution time (DD:HH:MM:SS): 00:00:00:49
Reference: Memory used: 2878.29 MB
Current: Memory used: 2861.59 MB

sulfur Passed Core Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 74 reactions.
Test model has 74 reactions. ✅

sulfur Failed Edge Comparison ❌

Original model has 89 species.
Test model has 89 species. ✅
Original model has 227 reactions.
Test model has 227 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary
The tested model has 1 reactions that the original model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary

Observables Test Case: SO2 Comparison

The following observables did not match:

❌ Observable species O=S=O varied by more than 0.100 on average between old model SO2(15) and new model SO2(15) in condition 1.

⚠️ The following reaction conditions had some discrepancies:
Condition 1:
Reactor Type: IdealGasReactor
Reaction Time: 0.01 s
T0: 900 K
P0: 30 bar
Initial Mole Fractions: {'S': 0.000756, '[O][O]': 0.00129, 'N#N': 0.997954}

sulfur Failed Observable Testing ❌

Regression test superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:41
Current: Execution time (DD:HH:MM:SS): 00:00:00:33
Reference: Memory used: 2998.19 MB
Current: Memory used: 2974.85 MB

superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 21 reactions.
Test model has 21 reactions. ✅

superminimal Passed Edge Comparison ✅

Original model has 18 species.
Test model has 18 species. ✅
Original model has 28 reactions.
Test model has 28 reactions. ✅

Regression test RMS_constantVIdealGasReactor_superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:24
Current: Execution time (DD:HH:MM:SS): 00:00:02:20
Reference: Memory used: 3461.57 MB
Current: Memory used: 3441.21 MB

RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_superminimal Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_superminimal Passed Observable Testing ✅

Regression test RMS_CSTR_liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:05:58
Current: Execution time (DD:HH:MM:SS): 00:00:05:53
Reference: Memory used: 3386.19 MB
Current: Memory used: 3379.04 MB

RMS_CSTR_liquid_oxidation Failed Core Comparison ❌

Original model has 37 species.
Test model has 37 species. ✅
Original model has 233 reactions.
Test model has 232 reactions. ❌
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCO[O](34) <=> [OH](22) + CC=O(61) origin: intra_H_migration

RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌

Original model has 206 species.
Test model has 206 species. ✅
Original model has 1508 reactions.
Test model has 1508 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: CCO[O](34) <=> [OH](22) + CC=O(61) origin: intra_H_migration
The tested model has 1 reactions that the original model does not have. ❌
rxn: CCO[O](35) <=> C[CH]OO(62) origin: intra_H_migration

Observables Test Case: RMS_CSTR_liquid_oxidation Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_CSTR_liquid_oxidation Passed Observable Testing ✅

Regression test fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:44
Current: Execution time (DD:HH:MM:SS): 00:00:00:39
Reference: Memory used: 2709.76 MB
Current: Memory used: 2687.75 MB

fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

fragment Passed Edge Comparison ✅

Original model has 33 species.
Test model has 33 species. ✅
Original model has 47 reactions.
Test model has 47 reactions. ✅

Observables Test Case: fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

fragment Passed Observable Testing ✅

Regression test RMS_constantVIdealGasReactor_fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:03:07
Current: Execution time (DD:HH:MM:SS): 00:00:03:03
Reference: Memory used: 3586.79 MB
Current: Memory used: 3587.61 MB

RMS_constantVIdealGasReactor_fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

RMS_constantVIdealGasReactor_fragment Passed Edge Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 24 reactions.
Test model has 24 reactions. ✅

Observables Test Case: RMS_constantVIdealGasReactor_fragment Comparison

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!

RMS_constantVIdealGasReactor_fragment Passed Observable Testing ✅

beep boop this comment was written by a bot 🤖

Copy link

This pull request 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 pull request, otherwise it will automatically be closed in 30 days.

@github-actions github-actions bot added the stale stale issue/PR as determined by actions bot label Sep 17, 2024
@JacksonBurns
Copy link
Contributor Author

Ongoing

@github-actions github-actions bot removed the stale stale issue/PR as determined by actions bot label Sep 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Arkane takes a long time to run due to loading Julia dependencies
3 participants