Kinetic Models
This chapter documents the kinetic models currently covered by the MKMCXX 3 manual.
Included Models
ArrheniusDefaultArrheniusFreqArrheniusQRatioHertzKnudsenDefaultHertzKnudsenNist
ArrheniusDefault
This model is intended for elementary surface reactions with explicit forward and backward prefactors and activation barriers.
Parameters
VfForward pre-exponential factor \(\nu_f\), in \(\mathrm{s^{-1}}\).VbBackward pre-exponential factor \(\nu_b\), in \(\mathrm{s^{-1}}\).EafForward activation energy \(E_{a,f}\), in \(\mathrm{J/mol}\).EabBackward activation energy \(E_{a,b}\), in \(\mathrm{J/mol}\).
Equations
with:
- \(\nu_f\): forward pre-exponential factor, in \(\mathrm{s^{-1}}\)
- \(E_{a,f}\): forward activation energy, in \(\mathrm{J/mol}\)
- \(R\): molar gas constant, in \(\mathrm{J/(mol\,K)}\)
- \(T\): absolute temperature, in \(\mathrm{K}\)
with:
- \(\nu_b\): backward pre-exponential factor, in \(\mathrm{s^{-1}}\)
- \(E_{a,b}\): backward activation energy, in \(\mathrm{J/mol}\)
- \(R\): molar gas constant, in \(\mathrm{J/(mol\,K)}\)
- \(T\): absolute temperature, in \(\mathrm{K}\)
Example
reactions {
{A*}+{B*}=>{AB*}+{*} @ ArrheniusDefault(
Vf=1e13, # forward pre-exponential factor [s^-1]
Vb=1e13, # backward pre-exponential factor [s^-1]
Eaf=120e3, # forward activation energy [J/mol]
Eab=80e3 # backward activation energy [J/mol]
)
}
ArrheniusQRatio
This model is intended for reactions parameterized through partition-function ratios.
Parameters
QTSQISRatio \(Q_{\mathrm{TS}}/Q_{\mathrm{IS}}\) between the transition-state and initial-state partition functions, dimensionless.QTSQFSRatio \(Q_{\mathrm{TS}}/Q_{\mathrm{FS}}\) between the transition-state and final-state partition functions, dimensionless.EafForward activation energy \(E_{a,f}\), in \(\mathrm{J/mol}\).EabBackward activation energy \(E_{a,b}\), in \(\mathrm{J/mol}\).
Equations
In the current implementation, the forward and backward rate constants are given by:
with:
- \(k_b\): Boltzmann constant, in \(\mathrm{J/K}\)
- \(T\): absolute temperature, in \(\mathrm{K}\)
- \(h\): Planck constant, in \(\mathrm{J\,s}\)
- \(Q_{\mathrm{TS}}/Q_{\mathrm{IS}}\): forward partition-function ratio, dimensionless
- \(E_{a,f}\): forward activation energy, in \(\mathrm{J/mol}\)
- \(R\): molar gas constant, in \(\mathrm{J/(mol\,K)}\)
with:
- \(k_b\): Boltzmann constant, in \(\mathrm{J/K}\)
- \(T\): absolute temperature, in \(\mathrm{K}\)
- \(h\): Planck constant, in \(\mathrm{J\,s}\)
- \(Q_{\mathrm{TS}}/Q_{\mathrm{FS}}\): backward partition-function ratio, dimensionless
- \(E_{a,b}\): backward activation energy, in \(\mathrm{J/mol}\)
- \(R\): molar gas constant, in \(\mathrm{J/(mol\,K)}\)
In MKMCXX input syntax, these partition-function ratios are supplied through:
QTSQISfor \(Q_{\mathrm{TS}}/Q_{\mathrm{IS}}\)QTSQFSfor \(Q_{\mathrm{TS}}/Q_{\mathrm{FS}}\)
Example
reactions {
{CO*}+{*}=>{C*}+{O*} @ ArrheniusQRatio(
QTSQIS=2.78e-01, # transition-state / initial-state partition-function ratio [-]
QTSQFS=4.43e-01, # transition-state / final-state partition-function ratio [-]
Eaf=68.4e3, # forward activation energy [J/mol]
Eab=71.7e3 # backward activation energy [J/mol]
)
}
ArrheniusFreq
This model evaluates transition-state-theory prefactors from vibrational
frequency files. Stable-state frequency files are attached to components
through the freqfile attribute, while the reaction argument freqfile
provides the transition-state frequencies.
The intended workflow is:
- assign stable-state vibrational data to components through
freqfile - assign the transition-state vibrational data to the reaction through
freqfile - provide
EafandEabas electronic forward and backward barriers in \(\mathrm{J/mol}\), excluding the zero-point-energy correction
At runtime, MKMCXX combines those inputs into harmonic transition-state-theory rate constants with an explicit vibrational partition-function ratio and an explicit ZPE correction.
Note
ArrheniusFreq expects Eaf and Eab to be electronic barriers only.
The zero-point-energy contribution is added internally from the referenced
frequency files at runtime. This differs from simpler Arrhenius-style
parameterizations where the reported activation energy may already include
the ZPE correction.
Parameters
freqfileTransition-state vibrational frequency file for this reaction.EafForward activation energy \(E_{a,f}\) excluding the ZPE correction, in \(\mathrm{J/mol}\).EabBackward activation energy \(E_{a,b}\) excluding the ZPE correction, in \(\mathrm{J/mol}\).
Equations
For a reaction with initial state \(IS\), transition state \(TS\), and final state \(FS\), the forward and backward rate constants are evaluated as:
with:
- \(k_b\): Boltzmann constant, in \(\mathrm{J/K}\)
- \(T\): absolute temperature, in \(\mathrm{K}\)
- \(h\): Planck constant, in \(\mathrm{J\,s}\)
- \(Q^\mathrm{vib}_{TS}/Q^\mathrm{vib}_{IS}\): forward vibrational partition-function ratio, dimensionless
- \(E_{a,f}\): forward electronic activation energy, in \(\mathrm{J/mol}\)
- \(\Delta E^\mathrm{ZPE}_f\): forward zero-point-energy correction, in \(\mathrm{J/mol}\)
- \(R\): molar gas constant, in \(\mathrm{J/(mol\,K)}\)
with:
- \(k_b\): Boltzmann constant, in \(\mathrm{J/K}\)
- \(T\): absolute temperature, in \(\mathrm{K}\)
- \(h\): Planck constant, in \(\mathrm{J\,s}\)
- \(Q^\mathrm{vib}_{TS}/Q^\mathrm{vib}_{FS}\): backward vibrational partition-function ratio, dimensionless
- \(E_{a,b}\): backward electronic activation energy, in \(\mathrm{J/mol}\)
- \(\Delta E^\mathrm{ZPE}_b\): backward zero-point-energy correction, in \(\mathrm{J/mol}\)
- \(R\): molar gas constant, in \(\mathrm{J/(mol\,K)}\)
with
The vibrational partition functions of the stable states are assembled from the reaction stoichiometry. If the initial state contains components \(i\) with stoichiometric coefficients \(\nu_i^\mathrm{IS}\), then
and similarly for the final state:
The transition-state contribution comes directly from the reaction-level frequency file:
For one vibrational frequency file with real vibrational modes \(\tilde{\nu}_m\) in \(\mathrm{cm}^{-1}\), MKMCXX evaluates:
where \(N_A\) is Avogadro's constant so that the ZPE contribution is expressed in \(\mathrm{J/mol}\), consistent with \(E_{a,f}\), \(E_{a,b}\), and \(RT\).
Cutoff Treatment
To avoid unphysically large low-frequency vibrational contributions, MKMCXX can apply a simulation-level vibrational cutoff:
where \(\tilde{\nu}_\mathrm{min}\) is provided through vib_cutoff in
\(\mathrm{cm}^{-1}\).
The same effective frequency is used consistently in both the partition
function and ZPE evaluation.
Notes
- A component without a
freqfilecontributes no vibrational correction in this model, which is equivalent to \(q^\mathrm{vib}=1\) and \(E^\mathrm{ZPE}=0\). - Empty surface sites can therefore be left without a vibrational file.
EafandEabshould be provided without a ZPE correction, because that correction is inferred from the referenced frequency files at runtime.- The current implementation uses the real frequencies listed under
vibrations.frequencies_cm-1in the YAML files.
Example
components {
CO* {phase=surface, init=0.0, freqfile="ISFS/co.yaml"} # stable-state frequencies for CO*
C* {phase=surface, init=0.0, freqfile="ISFS/c.yaml"} # stable-state frequencies for C*
O* {phase=surface, init=0.0, freqfile="ISFS/o.yaml"} # stable-state frequencies for O*
* {phase=surface, init=1.0} # vacant surface site
}
reactions {
{CO*}+{*}=>{C*}+{O*} @ ArrheniusFreq(
freqfile="TS/co_diss.yaml", # transition-state vibrational frequencies
Eaf=68.4e3, # forward electronic activation energy [J/mol]
Eab=71.7e3 # backward electronic activation energy [J/mol]
)
}
simulation {
baseline @ transient_solve(
model=thermal, # temperature-controlled simulation mode
vib_cutoff=100, # minimum vibrational frequency used in partition functions [cm^-1]
solver={method=cvode_bdf, atol=1e-12, rtol=1e-10, t_end=1e4},
conditions=[{T=600}] # simulation temperature [K]
)
}
In this example, MKMCXX automatically builds:
- \(Q^\mathrm{vib}_{IS}\) from the reactant-side component frequency files
- \(Q^\mathrm{vib}_{FS}\) from the product-side component frequency files
- \(Q^\mathrm{vib}_{TS}\) from
TS/co_diss.yaml
and then evaluates the forward and backward rate constants from the equations above.
HertzKnudsenDefault
This model is intended for adsorption and desorption steps using the Hertz-Knudsen formulation.
Parameters
AsiteActive site area per adsorption site \(A_{\text{site}}\), in \(\mathrm{m^2}\).mMass of the adsorbing species \(m\), in \(\mathrm{amu}\).thetaRotational temperature \(\theta_{\text{rot}}\) used in the desorption expression, in \(\mathrm{K}\).sigmaSymmetry number \(\sigma\) used in the desorption expression, dimensionless.SSticking coefficient \(S\) for adsorption, dimensionless.EdesDesorption energy \(E_{\text{des}}\), in \(\mathrm{J/mol}\).
Equations
In the current implementation, the forward adsorption rate constant is:
with:
- \(A_{\text{site}}\) in \(\mathrm{m^2}\)
- \(m\) in \(\mathrm{amu}\)
- \(k_b\) in \(\mathrm{J/K}\)
- \(T\) in \(\mathrm{K}\)
- \(S\) dimensionless
- \(p_{\mathrm{ref}} = 101325 \; \mathrm{Pa/atm}\)
The factor \(p_{\mathrm{ref}}\) is the explicit pressure-conversion factor used by
the code. This is relevant because gas pressures are provided in atm in MKMCXX
inputs, while the Hertz-Knudsen flux expression itself is written in SI units.
with:
- \(A_{\text{site}}\) in \(\mathrm{m^2}\)
- \(m\) in \(\mathrm{amu}\)
- \(k_b\) in \(\mathrm{J/K}\)
- \(T\) in \(\mathrm{K}\)
- \(h\) in \(\mathrm{J\,s}\)
- \(\sigma\) dimensionless
- \(\theta_{\text{rot}}\) in \(\mathrm{K}\)
- \(E_{\text{des}}\) in \(\mathrm{J/mol}\)
- \(R\) in \(\mathrm{J/(mol\,K)}\)
Example
reactions {
{A}+{*}=>{A*} @ HertzKnudsenDefault(
Asite=1e-20, # active site area [m^2]
m=12, # gas-phase molecular mass [amu]
theta=1.0, # rotational temperature [K]
sigma=1, # rotational symmetry number [-]
S=1, # sticking coefficient [-]
Edes=120e3 # desorption energy [J/mol]
)
}
HertzKnudsenNist
This model extends the Hertz-Knudsen approach with thermochemical data from the NIST-style parameterization.
Parameters
AsiteActive site area per adsorption site \(A_{\text{site}}\), in \(\mathrm{m^2}\).mMass of the adsorbing species \(m\), in \(\mathrm{amu}\).SSticking coefficient \(S\) for adsorption, dimensionless.QadsAdsorbate partition-function contribution \(Q_{\mathrm{ads}}\) used in the desorption term, dimensionless.EdesDesorption energy \(E_{\mathrm{des}}\), in \(\mathrm{J/mol}\).AShomate coefficient \(A\), in \(\mathrm{J/(mol\,K)}\).BShomate coefficient \(B\), in \(\mathrm{J/(mol\,K\,kK)}\).CShomate coefficient \(C\), in \(\mathrm{J/(mol\,K\,kK^2)}\).DShomate coefficient \(D\), in \(\mathrm{J/(mol\,K\,kK^3)}\).EShomate coefficient \(E\), in \(\mathrm{J\,kK^2/(mol\,K)}\).FShomate coefficient \(F\), in \(\mathrm{kJ/mol}\).GShomate coefficient \(G\), in \(\mathrm{J/(mol\,K)}\).HShomate coefficient \(H\), in \(\mathrm{kJ/mol}\).
Equations
In the current implementation, the forward adsorption rate constant is:
with:
- \(A_{\text{site}}\) in \(\mathrm{m^2}\)
- \(m\) in \(\mathrm{amu}\)
- \(k_b\) in \(\mathrm{J/K}\)
- \(T\) in \(\mathrm{K}\)
- \(S\) dimensionless
- \(p_{\mathrm{ref}} = 101325 \; \mathrm{Pa/atm}\)
The factor \(p_{\mathrm{ref}}\) is the explicit pressure-conversion factor used by
the code. This is relevant because gas pressures are provided in atm in MKMCXX
inputs, while the Hertz-Knudsen flux expression itself is written in SI units.
For the backward rate constant, MKMCXX first evaluates the gas-phase entropy
and enthalpy from the Shomate-style parameters A through H using
\(t = T / 1000\):
where \(S_{\mathrm{gas}}\) is in \(\mathrm{J/(mol\,K)}\).
where \(H_{\mathrm{gas}}\) is in \(\mathrm{kJ/mol}\) and \(t\) is the reduced temperature variable in \(\mathrm{kK}\).
The backward desorption rate constant is then computed as:
with \(R\) in \(\mathrm{J/(mol\,K)}\), \(E_{\mathrm{des}}\) in \(\mathrm{J/mol}\), and the factor \(1000\) converting \(H_{\mathrm{gas}}\) from \(\mathrm{kJ/mol}\) to \(\mathrm{J/mol}\) before it is combined with \(E_{\mathrm{des}}\).
Notes
Qadscorresponds to the adsorbate partition-function contribution \(Q_{\mathrm{ads}}\) used in the desorption expression.- The Shomate contribution is evaluated from the supplied coefficients \(A\) through \(H\).
- This documentation follows the implementation in
src/kinetics/reactions/hertz_knudsen_nist.cpp.
Example
reactions {
{CO}+{*}=>{CO*} @ HertzKnudsenNist(
Asite=1e-19, # active site area [m^2]
m=28, # gas-phase molecular mass [amu]
S=1, # sticking coefficient [-]
A=25.56759, # Shomate coefficient A [J/(mol K)]
B=6.09613, # Shomate coefficient B [J/(mol K kK)]
C=4.054656, # Shomate coefficient C [J/(mol K kK^2)]
D=-2.671301, # Shomate coefficient D [J/(mol K kK^3)]
E=0.131021, # Shomate coefficient E [J kK^2/(mol K)]
F=-118.0089, # Shomate coefficient F [kJ/mol]
G=227.3665, # Shomate coefficient G [J/(mol K)]
H=-110.5271, # Shomate coefficient H [kJ/mol]
Qads=1, # adsorbate partition-function contribution [-]
Edes=80e3 # desorption energy [J/mol]
)
}