primaryNitrogenLibrary: Lin2013a CH3NO2 isomerization entries (#127–#129) applied outside their pressure range

Abierto
#753 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
12/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
python
Área
databases

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 current main (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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ReactionMechanismGenerator/RMG-database

Todos los issues de ReactionMechanismGenerator/RMG-database

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.