12.3. Kinetics Database

This section describes the general usage of RMG’s kinetic database. See Modifying the Kinetics Database for instructions on modifying the database.

Pressure independent reaction rates in RMG are calculated using a modified Arrhenius equation, designating the reaction coefficient as \(k(T)\) at temperature \(T\).

\[k(T) = A\left(\frac{T}{T_0}\right)^ne^{-(E_a + \alpha \Delta H_{rxn})/(RT)}\]

\(R\) is the universal gas constant. The kinetic parameters determining the rate coefficient are:

  • \(A\): the pre-exponential A-factor
  • \(T_0\): the reference temperature
  • \(n\): the temperature exponent
  • \(E_a\): the activation energy
  • \(\alpha\): the Evans-Polanyi coefficient
  • \(\Delta H_{rxn}\): the enthalpy of reaction

When Evans-Polanyi corrections are used, \(\Delta H_{rxn}\) is calculated using RMG’s thermo database, instead of being specified in the kinetic database.

12.3.1. Libraries

Kinetic libraries delineate kinetic parameters for specific reactions. RMG always chooses to use kinetics from libraries over families. If multiple libraries contain the same reaction, then precedence is given to whichever library is listed first in the input.py file.

For combustion mechanisms, you should always use one small-molecule combustion library, such as the pre-packaged ERC-Foundation Fuel. The reactions contained in these libraries are poorly estimated by kinetic families and are universally important to combustion systems.

Kinetic libraries should also be used in the cases where:

  • A set of reaction rates were optimized together
  • You know the reaction rate is not generalizable to similar species (perhaps due to catalysis or aromatic structures)
  • No family exists for the class of reaction
  • You are not confident about the accuracy of kinetic parameters

12.3.2. Families

Allowable reactions in RMG are divided up into classes called reaction families. All reactions not listed in a kinetic library have their kinetic parameters estimated from the reaction families.

Each reaction family contains the files:

  • groups.py containing the recipe, group definitions, and hierarchical trees
  • training.py containing a training set for the family
  • rules.py containing kinetic parameters for rules

There are currently 45 reaction families in RMG:

1+2_Cycloaddition

../../../_images/1+2_Cycloaddition.png

1,2-Birad_to_alkene

../../../_images/1,2-Birad_to_alkene.png

1,2_Insertion_carbene

../../../_images/1,2_Insertion_carbene.png

1,2_Insertion_CO

../../../_images/1,2_Insertion_CO.png

1,2_shiftS

../../../_images/1,2_shiftS.png

1,3_Insertion_CO2

../../../_images/1,3_Insertion_CO2.png

1,3_Insertion_ROR

../../../_images/1,3_Insertion_ROR.png

1,3_Insertion_RSR

../../../_images/1,3_Insertion_RSR.png

1,4_Cyclic_birad_scission

../../../_images/1,4_Cyclic_birad_scission.png

1,4_Linear_birad_scission

../../../_images/1,4_Linear_birad_scission.png

2+2_cycloaddition_CCO

../../../_images/2+2_cycloaddition_CCO.png

2+2_cycloaddition_Cd

../../../_images/2+2_cycloaddition_Cd.png

2+2_cycloaddition_CO

../../../_images/2+2_cycloaddition_CO.png

Birad_recombination

../../../_images/Birad_recombination.png

Cyclic_Ether_Formation

../../../_images/Cyclic_Ether_Formation.png

Diels_alder_addition

../../../_images/Diels_alder_addition.png

Disproportionation

../../../_images/Disproportionation.png

H_Abstraction

../../../_images/H_Abstraction.png

H_shift_cyclopentadiene

../../../_images/H_shift_cyclopentadiene.png

HO2_Elimination_from_PeroxyRadical

../../../_images/HO2_Elimination_from_PeroxyRadical.png

Intra_Diels_alder

../../../_images/Intra_Diels_alder.png

Intra_Disproportionation

../../../_images/Intra_Disproportionation.png

intra_H_migration

../../../_images/intra_H_migration.png

intra_NO2_ONO_conversion

../../../_images/intra_NO2_ONO_conversion.png

intra_OH_migration

../../../_images/intra_OH_migration.png

Intra_R_Add_Endocyclic

../../../_images/Intra_R_Add_Endocyclic.png

Intra_R_Add_Exocyclic

../../../_images/Intra_R_Add_Exocyclic.png

Intra_R_Add_ExoTetCyclic

../../../_images/Intra_R_Add_ExoTetCyclic.png

Intra_RH_Add_Endocyclic

../../../_images/Intra_RH_Add_Endocyclic.png

Intra_RH_Add_Exocyclic

../../../_images/Intra_RH_Add_Exocyclic.png

intra_substitutionCS_cyclization

../../../_images/intra_substitutionCS_cyclization.png

intra_substitutionCS_isomerization

../../../_images/intra_substitutionCS_isomerization.png

intra_substitutionS_cyclization

../../../_images/intra_substitutionS_cyclization.png

intra_substitutionS_isomerization

../../../_images/intra_substitutionS_isomerization.png

ketoenol

../../../_images/ketoenol.png

Korcek_step1

../../../_images/Korcek_step1.png

Korcek_step2

../../../_images/Korcek_step2.png

lone_electron_pair_bond

../../../_images/lone_electron_pair_bond.png

Oa_R_Recombination

../../../_images/Oa_R_Recombination.png

R_Addition_COm

../../../_images/R_Addition_COm.png

R_Addition_CSm

../../../_images/R_Addition_CSm.png

R_Addition_MultipleBond

../../../_images/R_Addition_MultipleBond.png

R_Recombination

../../../_images/R_Recombination.png

Substitution_O

../../../_images/Substitution_O.png

SubstitutionS

../../../_images/SubstitutionS.png

12.3.2.1. Recipe

The recipe can be found near the top of groups.py and describes the changes in bond order and radicals that occur during the reaction. Reacting atoms are labelled with a starred number. Shown below is the recipe for the H-abstraction family.

../../../_images/Recipe.png

The table below shows the possible actions for recipes. The arguments are given in the curly braces as shown above. For the order of bond change in the Change_Bond action, a -1 could represent a triple bond changing to a double bond while a +1 could represent a single bond changing to a double bond.

Action Argument1 Argument2 Argument3
Break_Bond First bonded atom Type of bond Second bonded atom
Form_Bond First bonded atom Type of bond Second bonded atom
Change_Bond First bonded atom Order of bond change Second bonded atom
Gain_Radical Specified atom Number of radicals  
Lose_Radical Specified atom Number of radicals  

Change_Bond order cannot be directly used on benzene bonds. During generation, aromatic species are kekulized to alternating double and single bonds such that reaction families can be applied. However, RMG cannot properly handle benzene bonds written in the kinetic group definitions.

12.3.2.2. Training Set vs Rules

The training set and rules both contain trusted kinetics that are used to fill in templates in a family. The training set contains kinetics for specific reactions, which are then matched to a template. The kinetic rules contain kinetic parameters that do not necessarily correspond to a specific reaction, but have been generalized for a template.

When determining the kinetics for a reaction, a match for the template is searched for in the kinetic database. The three cases in order of decreasing reliability are:

  1. Reaction match from training set
  2. Node template exact match using either training set or rules
  3. Node template estimate averaged from children nodes

Both training sets and reaction libraries use the observed rate, but rules must first be divided by the degeneracy of the reaction. For example, the reaction CH4 + OH –> H2O + CH3 has a reaction degeneracy of 4. If one performed an experiment or obtained this reaction rate using Cantherm (applying the correct symmetry), the resultant rate parameters would be entered into libraries and training sets unmodified. However a kinetic rule created for this reaction must have its A-factor divided by 4 before being entered into the database.

The reaction match from training set is accurate within the documented uncertainty for that reaction. A template exact match is usually accurate within about one order of magnitude. When there is no kinetics available for for the template in either the training set or rules, the kinetics are averaged from the children nodes as an estimate. In these cases, the kinetic parameters are much less reliable. For more information on the estimation algorithm see Kinetics Estimation.

The training set can be modified in training.py and the rules can be modified in rules.py. For more information on modification see Adding Training Reactions and Adding Kinetic Rules.