-
Notifications
You must be signed in to change notification settings - Fork 250
Description
Bug Description
This isn't necessarily an RMG/cantera bug, it is just a difference of how reactions are interpreted in each.
For plog reactions, RMG represents multiple plog reactions in chemkin by marking them as "duplicates":
! Reaction index: Chemkin #8; RMG #5
HO2(5)+CH3(13)=O2(6)+CH4(15) 1.000e+00 0.000 0.000
PLOG/ 0.001 9.300e+10 0.000 0.000 /
PLOG/ 1.000 8.000e+10 0.000 0.000 /
PLOG/ 3.000 7.000e+10 0.000 0.000 /
PLOG/ 10.000 3.700e+12 0.000 12.518 /
PLOG/ 20.000 2.900e+12 0.000 11.922 /
PLOG/ 50.000 1.500e+12 0.000 13.909 /
PLOG/ 80.000 1.500e+11 0.000 1.987 /
PLOG/ 100.000 1.500e+11 0.000 1.987 /
PLOG/ 650.000 2.300e+11 0.200 4.968 /
PLOG/ 2000.000 3.700e+07 1.340 2.186 /
DUPLICATE
! Reaction index: Chemkin #9; RMG #5
HO2(5)+CH3(13)=O2(6)+CH4(15) 1.000e+00 0.000 0.000
PLOG/ 0.001 7.100e+05 1.800 1.133 /
PLOG/ 1.000 8.800e+05 1.770 0.954 /
PLOG/ 3.000 2.900e+05 1.900 0.397 /
PLOG/ 10.000 9.300e+07 1.100 0.000 /
PLOG/ 20.000 4.500e+07 1.200 0.000 /
PLOG/ 50.000 5.800e+06 1.500 0.000 /
PLOG/ 80.000 2.500e+05 1.900 0.000 /
PLOG/ 100.000 1.900e+05 1.940 0.000 /
PLOG/ 650.000 7.000e+05 1.700 0.298 /
PLOG/ 2000.000 0.000e+00 0.000 0.000 /
DUPLICATE
the above mechanism can be converted to a cantera yaml file, but attempting to use it in a cantera reactor will give the following message:
CanteraError:
*******************************************************************************
CanteraError thrown by addReactions:
*******************************************************************************
InputFileError thrown by PlogRate::validate:
Error on line 225 of ./chemkin_error.yaml:
Invalid rate coefficient for reaction 'CH3(13) + HO2(5) <=> CH4(15) + O2(6)'
at P = 2.0265e+08, T = 200.0
at P = 2.0265e+08, T = 500.0
at P = 2.0265e+08, T = 1000.0
at P = 2.0265e+08, T = 2000.0
at P = 2.0265e+08, T = 5000.0
at P = 2.0265e+08, T = 10000.0
| Line |
| 220 | - {P: 80.0 atm, A: 1.5e+11, b: 0.0, Ea: 1.987}
| 221 | - {P: 100.0 atm, A: 1.5e+11, b: 0.0, Ea: 1.987}
| 222 | - {P: 650.0 atm, A: 2.3e+11, b: 0.2, Ea: 4.968}
| 223 | - {P: 2000.0 atm, A: 3.7e+07, b: 1.34, Ea: 2.186}
| 224 | note: 'Reaction index: Chemkin #8; RMG #5'
> 225 > - equation: HO2(5) + CH3(13) <=> O2(6) + CH4(15) # Reaction 9
^
| 226 | duplicate: true
| 227 | type: pressure-dependent-Arrhenius
| 228 | rate-constants:
*******************************************************************************
*******************************************************************************
the PLOG/ 2000.000 0.000e+00 0.000 0.000 / line is what causes the error. Cantera evaluates the reactions separately at a number of temperatures and pressures as part of it's validation procedure. In order for this representation to be interpreted at all, the above line needs to be commented out.
This reaction can alternatively be represented as follows, which will yield no errors:
! Reaction index: Chemkin #8; RMG #5
HO2(5)+CH3(13)=O2(6)+CH4(15) 1.000e+00 0.000 0.000
PLOG/ 0.001 9.300e+10 0.000 0.000 /
PLOG/ 0.001 7.100e+05 1.800 1.133 /
PLOG/ 1.000 8.000e+10 0.000 0.000 /
PLOG/ 1.000 8.800e+05 1.770 0.954 /
PLOG/ 3.000 7.000e+10 0.000 0.000 /
PLOG/ 3.000 2.900e+05 1.900 0.397 /
PLOG/ 10.000 3.700e+12 0.000 12.518 /
PLOG/ 10.000 9.300e+07 1.100 0.000 /
PLOG/ 20.000 2.900e+12 0.000 11.922 /
PLOG/ 20.000 4.500e+07 1.200 0.000 /
PLOG/ 50.000 1.500e+12 0.000 13.909 /
PLOG/ 50.000 5.800e+06 1.500 0.000 /
PLOG/ 80.000 1.500e+11 0.000 1.987 /
PLOG/ 80.000 2.500e+05 1.900 0.000 /
PLOG/ 100.000 1.500e+11 0.000 1.987 /
PLOG/ 100.000 1.900e+05 1.940 0.000 /
PLOG/ 650.000 2.300e+11 0.200 4.968 /
PLOG/ 650.000 7.000e+05 1.700 0.298 /
PLOG/ 2000.000 3.700e+07 1.340 2.186 /
PLOG/ 2000.000 0.000e+00 0.000 0.000 /
The two representations (2 reactions with the 2000 atm rate commented out vs 1 reaction) yield different results for rates in cantera at 2000 atm (see minimal example for code used to generate this:)
rate not equal at pressure: 2000.0 and temperature 500
combined rate expression: 1007315.6839752827 kmol/cm^3/s ; separate rate expression : 2201080.556622974 kmol/cm^3/s
How To Reproduce
I have attached a minimal example with a jupyter notebook and chemkin/cantera input files.
Expected Behavior
I think it requires some thought, but I believe the "combined" method is how we want to represent reactions before we port them to Cantera.
Installation Information
Describe your installation method and system information.
- macOS 10.15.7
- Installed from source, with anaconda
- RMG version: 3.0.0-1208-gf8b136e26
Additional Context
this came up in #2288, you can refer to that for additional context.
see below for minimal example: