Chemical Kinetics

Pyrometheus generates code to evaluate chemical source terms. These appear in the conservation equations of reacting flows. Here, we lay out the corresponding equations. We focus on a homogeneous adiabatic reactor for simplicify. Yet, the systems explained here can easily be adapted to other configurations (e.g., isochoric or inhomogeneous reactors).

Species Conservation and Chemical Source Terms

Our goal is to express, in as much detail, the chemical kinetics of reactive flows. We assume a homogeneous mixture of ideal gases evolves at constant pressure \(p\) and enthalpy \(h_{0}\). We characterize its chemical composition by the species mass fractions \(\boldsymbol{y} = \{ y_{i} \}_{i = 1}^{N}\). These evolve from an initial condition \(y_{i}(0) = y_{i}^{0}\) according to

\[\label{eq:species_conservation} \frac{dy_{i}}{dt} = S_{i} \equiv \frac{ W_{i}\dot{\omega}_{i} }{ \rho },\]

where \(S_{i}\) is the chemical source term of the \(i^{\mathrm{th}}\) species (in \(\mathrm{s}^{-1}\)), \(W_{i}\) its molecular weight (in \(\mathrm{kg/kmol})\) and \(\dot{\omega}_{i}\) its molar production rate (in \(\mathrm{kmol/m^{3}-s}\)). The mixture density \(\rho\) (in \(\mathrm{kg/m^{3}}\)) is obtained from

\[pW = \rho RT,\]

where

\[W = \sum_{i = 1}^{N}W_{i}y_{i}\]

is the mixture molecular weight, \(R\) the universal gas constant (in \(\mathrm{J/kmol-K}\)), and \(T\) the temperature (in \(\mathrm{K}\)). We explain how to obtain the mixture temperature in detail in Section 1.2.

To evaluate [species_conservation], we need the net production rates \(\dot{\boldsymbol{\omega}} = \{ \dot{\omega}_{i} \}_{i = 1}^{N}\). These represent changes in composition due to chemical reactions

\[\label{eq:reactions} \sum_{\ell = 1}^{N}\nu_{i\ell}^{\prime}\mathcal{S}_{\ell} \rightleftharpoons \sum_{k = 1}^{N}\nu_{ik}^{\prime\prime}\mathcal{S}_{k},\qquad j = 1,\dots,M,\]

where \(\nu_{ij}^{\prime}\) and \(\nu_{ij}^{\prime\prime}\) are the forward and reverse stoichiometric coefficients of species \(\mathcal{S}_{i}\) in the \(j^{\mathrm{th}}\) reaction. Per [reactions], species \(\mathcal{S}_{i}\) can only be produced (or destroyed) by an amount \(\nu_{ij}^{\prime\prime}\) (or \(\nu_{ij}^{\prime}\)) in the \(j^{\mathrm{th}}\) reaction. Thus, \(\{ \dot{\omega}_{i} \}_{i = 1}^{N}\) are linear combinations of the reaction rates of progress \(R_{j}\),

\[\label{eq:production_rates} \dot{\omega}_{i} = \sum_{j = 1}^{M}\nu_{ij}R_{j},\qquad i = 1,\dots,N,\]

where \(\nu_{ij} = \nu_{ij}^{\prime\prime} - \nu_{ij}^{\prime}\) is the net stoichiometric coefficient of the \(i^{\mathrm{th}}\) species in the \(j^{\mathrm{j}}\) reaction. The rates of progress are given by the law of mass-action,

\[\label{eq:reaction_rates} R_{j} = k_{j}(T)\psq{ \prod_{\ell = 1}^{N}\pp{\frac{ \rho y_{\ell} }{ W_{\ell} }}^{\nu_{mj}^{\prime}} - \frac{1}{K_{j}(T)}\prod_{k = 1}^{N}\pp{\frac{ \rho y_{k} }{ W_{k} }}^{\nu_{mj}^{\prime\prime}} },\qquad j = 1,\dots,M,\]

where \(k_{j}(T)\) is the rate coefficient of the \(j^{\mathrm{th}}\) reaction and \(K_{j}(T)\) its equilibrium constant. Depending on the reaction, the rate coefficient \(k_{j}(T)\) may take different forms (and even become a function of pressure). Its simplest form is the Arrhenius expression,

\[\label{eq:rate_coeff} k_{j}(T) = A_{j}T^{b_{j}}\exp\pp{ -\frac{\theta_{a,j}}{T} },\qquad j = 1,\dots,M\]

where \(A_{j}\) is the pre-exponential, \(b_{j}\) is the temperature exponent, and \(\theta_{a,j}\) is the activation temperature.

The equilibrium constant is evaluated through equilibrium thermodynamics

\[\label{eq:equil_constants} K_{j}(T) = \pp{ \frac{p_{0}}{RT} }^{\sum_{i = 0}^{\nu_{ij}}}\exp\pp{ -\sum_{i = 1}^{N}\frac{\nu_{ij}g_{i}(T)}{RT} },\qquad j = 1,\dots,M,\]

where \(p_{0} = 1\) \(\mathrm{atm}\) and

\[g_{i}(T) = h_{i}(T) - T\,s_{i}(T),\qquad i = 1,\dots,N\]

are the species Gibbs functions, with \(h_{i}\) and \(s_{i}\) the species enthalpies and entropies.

Species Thermodynamics

Conservation of Energy

To evaluate the rates of progress [reaction_rates], we need the temperature. Yet, we have defered any discussion on how to compute it from other state variables.