primaryNitrogenLibrary: Lin2013a CH3NO2 isomerization entries (#127–#129) applied outside their pressure range
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 12/100
Línea de trabajo
The entries are in input/kinetics/libraries/primaryNitrogenLibrary/reactions.py, indices 127 to 129, and the validation comparison is against Rasmussen et al. 2008 Table 3. Reading the paper's pressure dependence and the RMG rate-form documentation is needed first. Done would mean a pressure-dependent representation for the CH3NO2/CH3ONO network that reproduces the source paper's branching, with the isomerization flux counted once.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Three primaryNitrogenLibrary entries from Zhu, Raghunath & Lin, J. Phys. Chem. A 117 (2013) 7308 ([Lin2013a]) are stored in forms valid only at low pressure, but RMG applies them at all pressures. Above roughly 1 atm the CH3NO2 → CH3ONO channel then dominates nitromethane decomposition. The source paper says the opposite: CH3 + NO2 accounts for more than 90% of the products above 200 Torr.
In a CH4/O2/NOx mechanism generated with default ('auto') libraries, this makes the predicted CH3NO2 25–400× too low compared with high-pressure flow-reactor data.
Affected entries (input/kinetics/libraries/primaryNitrogenLibrary/reactions.py)
| index | label | stored as | issue |
|---|---|---|---|
| 127 | CH3NO2 <=> CH3ONO |
ThirdBody(arrheniusLow = 7.05e54 T^-10.94 exp(-64344 cal/mol / RT)) |
This is exactly the paper's low-pressure limit for the roaming isomerization (p. 7311: k0 = 1.17e31 T^-10.94 exp(-32379/T) cm3 molecule-1 s-1; 1.17e31 × N_A = 7.05e54; 32379 K = 64344 cal/mol). As a third-body rate with no fall-off or k∞ cap, it grows linearly with [M] at every pressure. The paper gives no k∞ or fall-off parameters for this channel. |
| 128 | CH3NO2 <=> CH3O + NO |
pressure-independent Arrhenius, elementary_high_p = False |
The longDesc already says "valid for 10e-5 to 760 torr". It is the chemically activated CH3NO2 → CH3ONO* → CH3O + NO fit, but it is applied at all pressures. |
| 129 | CH3NO2 <=> CH2O + HNO |
same as 128 | Same: the chemically activated CH3ONO* → CH2O + HNO fit, valid ≤ 760 Torr, applied at all pressures. |
Entries 126 (CH3NO2 <=> CH3 + NO2, k∞) and 130 (CH3ONO <=> CH3O + NO, k∞) look fine.
127, 128 and 129 all describe the same roaming-isomerization flux (to CH3ONO, and then to its two product channels). When all three are loaded together, that flux is represented up to three times.
Evidence 1: comparison with the source paper
At 1000 K and 1 atm, entry 127 × [M] gives about 1.1e3 s⁻¹. The paper's Fig. 2 shows about 10–20 s⁻¹ for the isomerization (read by eye) against kd760 ≈ 180 s⁻¹ for fission. Fig. 3 shows the isomerization branching ratio is ≤ 0.05 at 760 Torr above about 600 K.
At 800 K, entry 127 gives 4.9, 49 and 487 s⁻¹ at 1, 10 and 100 bar. That exceeds the C–N fission rate in the same mechanism by 9×, 24× and 108×.
Evidence 2: effect on a generated mechanism compared with experiment
Setup:
- An RMG model for CH4/O2/NO/NO2 with
reactionLibraries = 'auto'(which loads primaryNitrogenLibrary and NOx2018). - Reactors spanning 700–1200 K and 1.07–100 bar; move-to-core tolerance 0.001.
- Simulated at the exact conditions of Rasmussen, Rasmussen & Glarborg, Combust. Flame 154 (2008) 529, Table 3: isothermal PFR, τ = C/T, N2 bath, measured inlet NO/NO2 split.
Peak CH3NO2 in ppm. Measured values were read from the paper's Figs. 3–4 (±5 ppm).
| exp | P (bar) | measured | 'auto' model | same model without entry 127 |
|---|---|---|---|---|
| DN (φ≈1.1) | 100 | 167 | 0.4 | 163 |
| EN (φ≈1.15) | 50 | 109 | 0.8 | 82 |
| FN (φ≈1.05) | 20 | 27 | 0.5 | 14 |
| GN (φ≈0.04) | 100 | 115 | 0.9 | 136 |
| HN (φ≈0.04) | 50 | 107 | 2.1 | 98 |
| IN (φ≈0.05) | 20 | 63 | 2.5 | 53 |
Rate-of-production analysis shows entry 127 consumes about half of the CH3NO2 formed. The CH3ONO it makes falls apart at once to CH3O + NO, so CH3NO2 acts as a chain-propagating shortcut instead of a chain-terminating reservoir.
The full 'auto' model still gets the onset temperature roughly right. That is a compensating error: removing entry 127 alone fixes CH3NO2 but delays the onset by 25–50 K at 20–50 bar. This suggests the true isomerization rate is small but not zero, and that a pressure-dependent representation, rather than plain removal, is the right long-term fix.
Suggested fix: Chebyshev k(T,P) for the CH3NO2 / CH3ONO network
Replace entries 127–129 with Chebyshev kinetics covering the full range RMG uses: about 300–3000 K and 1e-5 Torr to ≥ 100 bar.
The data could come from a master-equation calculation (e.g. Arkane) on the paper's PES:
- energies in Fig. 1 (CH3 + NO2 59.8, RTS1 ≈ 57–59, TS2 69.4, CH3ONO ≈ 2, CH3O + NO 42.9 kcal/mol);
- ⟨ΔE⟩down = 400 cm⁻¹ for Ar, as in the paper.
A single Chebyshev fit gives each channel the correct fall-off. That means:
- the isomerization dominates at very low pressure;
- CH3 + NO2 dominates above about 200 Torr;
- the isomerization flux is counted once, not three times.
Ideally, entry 126 (CH3NO2 <=> CH3 + NO2, currently k∞ only) would come from the same calculation, so all channels of the network are consistent.
An interim option, if a new calculation is not practical soon: restrict 127–129 to their valid range with PLOG at ≤ 760 Torr, built from the paper's figures. Anything above 760 Torr would be an extrapolation.
Environment
- RMG-database
fc7bb138f. The entries are unchanged on currentmain(6391cc4f7). - RMG-Py
5c33e07e0. - The entries came in with the 2018 nitrogen-library refactor (
f5062c2cd).
I can share the RMG input files, the analysis scripts and the full comparison on request.
- Lenguaje dominante
- Python
- Estrellas
- 131
- Forks
- 163
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ReactionMechanismGenerator/RMG-database
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
Topic: Sulfur Topic: Thermo
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
ReactionMechanismGenerator/RMG-database#740 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
ReactionMechanismGenerator/RMG-database#737 · 8 comentarios ·
-
CO2 + O <=> CO3 generated from R_Addition_MultipleBondQuizá libre de nuevo @rwest la tomó hace 276 días y no hay ningún pull request abierto. Abierto
ReactionMechanismGenerator/RMG-database#706 · 2 asignados ·
Todos los issues de ReactionMechanismGenerator/RMG-database
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
adafruit/Fruit-Jam-OS#98 ·
-
python triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/semantic-kernel#14753 ·
Los mantenedores suelen responder en 5 días
-
area:cli area:configuration documentation priority:low size:small
Dificultad 1/5 1-3 horas Aptitud para principiantes 80/100
RonaldHensbergen/composable-data-stack#1222 ·
Los mantenedores suelen responder en 1 día
-
bug python
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
pvlib/pvlib-python#2939 ·
Los mantenedores suelen responder en 1 día