To run OpenMKM, two input files are required:
When running OpenMKM in the command line, the following syntax is used:
omkm reactor.yaml thermo.xml
where reactor.yaml and thermo.xml correspond to (1) and (2) above.
These files can be generated manually or by using software, such as pMuTT.
The reactor file, as its extension implies, uses the YAML format, which is a human-friendly data format. This file contains information related to the reactor, such as:
To generate a YAML file, one could:
This YAML tutorial introduces the YAML-language syntax. Since OpenMKM’s YAML file uses only simple types, readers do not need to write passed the ‘Advanced Options’ heading.
There are several validators available to check your YAML file for syntax errors.This site will show errors and can even reformat your file.
Quantities with units can be specified in the YAML file as a float or a string. If a float is entered, OpenMKM assumes it is in SI units. If a string is entered, then the units can be explictly specified. For example, the reactor volume could either be specified as:
volume: 20 # Units assumed to be m3
or
volume: "20 cm3" # Explictly state the volume is in cm3
Below is an exhaustive list of available options supported by OpenMKM. The level indicates whether this field is nested under another.
| 1st Level | 2nd Level | 3rd Level | Type | Required | Description | Default Units | 
|---|---|---|---|---|---|---|
| reactor | dictionary | Y | Reactor parameters | - | ||
| reactor_type | string | Y | Type of reactor. Supported options: - 'pfr' (plug flow reactor) - 'pfr_0d' (plug flow reactor modeled as a series of CSTRs) - 'cstr' (continuously stirred tank reactor) - 'batch' (batch reactor) | - | ||
| temperature_mode | string | Y | Thermal mode of operation of the reactor. Supported options: - 'isothermal' (constant temperature) - 'heat' (heat transfer with external heat source or sink) - 'adiabatic' (no heat flow) - 'tpd' (temperature programmed desorption, applicable for CSTR/batch reactors only) - 'tprofile' (preset temperature profile along the PFR length, applicable for PFR only) | - | ||
| pressure_mode | string | Y | Pressure mode of the reactor. Valid only for batch, CSTR or pfr_0d reactor models. Supported options: - 'isobaric' (constant pressure) - 'isochoric' or 'isometric' or 'isovolumetric' (constant volume) | - | ||
| nodes | integer | N | Number of CSTRs to model the PFR. Only applicable if reactor.reactor_type='pfr_0d' | - | ||
| volume | float | N | Volume of reactor | m^3 | ||
| temperature | float | Y | Temperature of reactor | K | ||
| Tramp | float | N | Temperature ramp. Only required if reactor.mode='tpd' | K/s | ||
| Tend | float | N | Temperature to end temperature ramp. Only required if mode='tpd' | K | ||
| pressure | float | Y | Pressure of reactor | Pa | ||
| area | float | N | Surface area of reactor. Only applicable if reactor.reactor_type='pfr' | m^2 | ||
| length | float | N | Length of the reactor. Only applicable if reactor.reactor_type='pfr' | m | ||
| cat_abyv | float | N | Catalyst surface area to reactor volume ratio. Only required if a surface phase is specified | m^-1 | ||
| inlet_gas | dictionary | N | Inlet gas properties. Not applicable if reactor.reactor_type = 'batch' | |||
| flow_rate | float | N | Volumetric flow rate of inlet stream. Not required if inlet_gas.residence_time or inlet_gas.mass_flow_rate is specified | m^3/s | ||
| residence_time | float | N | Residence time of reactor. Not required if inlet_gas.flow_rate or inlet_gas.mass_flow_rate is specified | s | ||
| mass_flow_rate | float | N | Mass flow rate of inlet stream. Not required if inlet_gas.residence_time or inlet_gas.flow_rate is specified | kg/s | ||
| simulation | N | Simulation options | ||||
| end_time | float | N | Reactor simulation time. For continuous reactors, the system is assumed to reach steady state by this time | s | ||
| transient | boolean | N | If True, transient results written to output files. Otherwise, transient files are empty | |||
| stepping | string | N | Type of time stepping for transient operation. Pairs with simulation.step_size. Supported options: - 'logarithmic' - 'regular' | - | ||
| step_size | float | N | Step size. If simulation.stepping = 'logarithmic', represents the ratio between the next step and the current step. If simulation.stepping = 'regular', represents the time between the next step and the current step in units of time. Use 'regular' stepping if reactor.mode='tpr' | s | ||
| init_step | float | N | Initial time step | - | ||
| output_format | string | N | Format for output files. Supported options: - 'csv' - 'dat' | - | ||
| solver | dictionary | N | Solver options | |||
| atol | float | N | Absolute tolerance of solver | - | ||
| rtol | float | N | Relative tolerance of solver | - | ||
| multi_input | dictionary | N | Multiple runs where temperature, pressure, and flow rate can be varied | - | ||
| multi_T | list of float | N | Multiple temperatures of reactor | K | ||
| multi_P | list of float | N | Multiple pressures of reactor | Pa | ||
| multi_flow_rate | list of float | N | Multiple volumetric flow rates | m^3/s | ||
| sensitivity | dictionary | N | Sensitivity analysis options | - | ||
| full | boolean | N | If True, runs sensitivity analysis using the Fisher Information Matrix (FIM) | - | ||
| reactions | list of str | N | IDs of reactions to perform local sensitivity analysis (LSA) | - | ||
| species | list of str | N | Names of species to perform local sensitivity analysis (LSA) | |||
| phases | Y | Phase properties | - | |||
| bulk | dictionary | N | Bulk phase properties | - | ||
| name | string | N | Name of bulk phase | - | ||
| gas | N | Gas properties | - | |||
| name | string | N | Name of gas phase | - | ||
| initial_state | string | N | Non-zero initial mole fractions for gas phase. Multiple species should be separated by commas. For example: "H2: 0.4,N2: 0.6" | - | ||
| surfaces | list of dictionaries | N | Surface phase properties. Note that multiple surface can be specified. | - | ||
| name | N | Name of surface phase | - | |||
| initial_state | N | Non-zero initial coverages for surface phase. Multiple species should be separated by commas. For example: "H2: 0.4,N2: 0.6" | - | 
inlet_gas:
    flow_rate: "2 cm3/s"
phases:
    bulk:
        name: bulk
    gas:
        initial_state: "CH3CH3:1.0"
        name: gas
    surfaces:
    -   initial_state: "M(S):1.0"
        name: terrace
reactor:
    cat_abyv: "200 /cm"
    mode: "isothermal"
    nodes: 50
    pressure: "1 atm"
    temperature: 973
    type: "pfr_0d"
    volume: "1 cm3"
simulation:
    end_time: "1000 s"
    init_step: 1.0e-10
    output_format: "csv"
    step_size: 10
    stepping: "logarithmic"
    transient: true
The thermochemistry file specifies physical, thermodynamic, and kinetic parameters of:
The thermochemistry file can be of either XML or YAML format. If you are interested in using XML format for thermochemistry data, the XML can be difficult to generate manually so we recommend creating a CTI file, which has a very similar syntax to Python code. CTI files can be converted to an XML file using ctml_writer.py. Note there are some differences between OpenMKM’s ctml_writer.py and the script supplied by Cantera.
NOTE: XML and thereby CTI formats are going to be deprecated and replaced with YAML in ftuure
Alternatively, Chemkin input files can be converted to Cantera format using ck2cti.py.
The OpenMKM CTI format is based on Cantera’s CTI format. Their documentation has a lot of useful information about specifying types and the syntax.
Default units for the CTI file can be specified using a units directive.
It takes the following parameters:
lengthtimequantityenergy – Used for lateral interactions.act_energy – Used for activation energies and BEP relationships.pressuremassBelow, we show a sample units directive.
units(length="m", time="s", quantity="mol", energy="kcal",
      act_energy="kcal/mol", pressure="atm", mass="g")
The complete list of supported units is available here.
If you wish to override the units for a specific quantity, you can use a tuple
(note that this is different than the YAML syntax which uses strings).
For example, the units directive above specifies quantity="mol" and
length="m" but we would like to specify the site density as
1.e15 molecules/cm2. This can be done using:
site_density = (1.e15, "molec/cm2")
Phases can control transport, kinetic, and thermodynamic properties of the species. Every simulation will require at least one. The comprehensive set of parameters can be found here. Below, we show the three most common for heterogeneous catalysis.
The ideal_gas directive models species in the gas phase.
ideal_gas(name="gas",
          elements="H C", # Elements present in species
          species="H2 CH4 CHCH CH2CH2 CH3CH3",  # Gaseous species
          reactions=["0001", "0003 to 0005"]) # Reaction IDs
The stoichiometric_solid directive is used to specify a bulk solid phase.
This is useful for balancing empty sites.
stoichiometric_solid(name="bulk",
                     elements="Ru", # Elements present in species
                     species="M(B)", # Bulk species
                     density=(12.45, 'g/cm3')) # Ignored property for isothermal
The interacting_interface directive is used to specify a catalytic surface.
For heterogeneous catalysis, this is the most important phase. It links two 
phases (usually an ideal_gas to a stoichiometric_solid), contains the
surface intermediates, their interactions, reactions, and BEP relationships.
interacting_interface(name="terrace",
                      elements="Ru H C", # Elements present in species
                      species="""M(S) H(S) C(S) CH(S) CH2(S) CH3(S) CH4(S) CC(S)
                                 CCH(S) CCH2(S) CHCH(S) CCH3(S) CHCH2(S)
                                 CHCH3(S) CH2CH2(S) CH2CH3(S) CH3CH3(S) """,
                      phases="gas bulk", # Connected phases
                      site_density=(2.49e-09, 'mol/cm2'), # Site density
                      interactions=["0000 to 0195"], # Lateral interactions on this phase
                      reactions=["0000 to 0004"], # Reactions on this phase
                      beps="C-C C-H") # BEPs associated with reactions on this phase
OpenMKM Each species present in your mechanism should have its thermodynamic properties specified using one of the following:
More information can be found on Cantera’s documentation.
NASA7 polynomials use 7 coefficients to describe the heat capacity, enthalpy, and entropy of a species. Common species are available in the Burcat database or can be generated using pMuTT’s Nasa class.
\[\frac {Cp} {R} = a_{1} + a_{2} T + a_{3} T^{2} + a_{4} T^{3} + a_{5} T^{4}\] \[\frac {H} {RT} = a_{1} + a_{2} \frac {T} {2} + a_{3} \frac {T^{2}} {3} + a_{4} \frac {T^{3}} {4} + a_{5} \frac {T^{4}} {5} + a_{6} \frac {1} {T}\] \[\frac {S} {R} = a_{1} \ln {T} + a_{2} T + a_{3} \frac {T^{2}} {2} + a_{4} \frac {T^{3}} {3} + a_{5} \frac {T^{4}} {4} + a_{7}\]species(name="CH4(S)", # Label used to identify the species
        atoms="C:1 H:4", # Atomic composition of species separated with spaces
        size=1, # Number of sites occupied by species. Only needed for surface species
        thermo=(NASA([250.0, 480.0], # This interval is valid between 250 - 480 K
                     [ 6.37200798E+00, -4.66939392E-03,  6.26492184E-06,
                       4.28698448E-08, -5.33259424E-11, -1.23940270E+04,
                      -2.09817174E+01]),
                NASA([480.0, 1500.0], # This interval is valid between 480 - 1500 K
                     [ 3.73282076E+00,  7.75238626E-03,  1.47755181E-06,
                      -3.18500889E-09,  8.84603159E-13, -1.20467882E+04,
                      -9.12054966E+00])))
NASA9 polynomials use 9 coefficients to describe the heat capacity, enthalpy, and entropy of a species. Common species are available in the Burcat database or can be generated using pMuTT’s Nasa9 class.
\[\frac {Cp} {R} = a_{1} T^{-2} + a_{2} T^{-1} + a_{3} + a_{4} T + a_{5} T^{2} + a_{6} T^{3} + a_{7} T^{4}\] \[\frac {H} {RT} = -a_{1} \frac {T^{-2}} {2} + a_{2} \frac {ln {T}} {T} + a_{3} + a_{4} \frac {T} {2} + a_{5} \frac {T^{2}} {3} + a_{6} \frac {T^{3}} {4} + a_{7} \frac {T^{4}} {5} + a_{8} \frac {1} {T}\] \[\frac {S} {R} = -a_{1}\frac {T^{-2}} {2} - a_2 \frac {1} {T} + a_{3} \ln {T} + a_{4} T + a_{5} \frac {T^{2}} {2} + a_{6} \frac {T^{3}} {3} + a_{7}\frac {T^{4}} {4} + a_{9}\]species(name="CH4(S)", # Label used to identify the species
        atoms="C:1 H:4", # Atomic composition of species separated with spaces
        size=1, # Number of sites occupied by species. Only needed for surface species
        thermo=(NASA9([200.0, 1000.0], # This interval is valid between 200 - 1000 K
                      [22103.71497, -381.846182, 6.08273836, -0.00853091441,
                       1.384646189e-05, -9.62579362e-09, 2.519705809e-12,
                       710.846086, -10.76003744]),
                NASA9([1000.0, 6000.0], # This interval is valid between 1000 - 6000 K
                      [587712.406, -2239.249073, 6.06694922, -0.00061396855,
                       1.491806679e-07, -1.923105485e-11, 1.061954386e-15,
                       12832.10415, -15.86640027]),
                NASA9([6000.0, 20000.0], # This interval is valid between 6000 - 20000 K
                      [831013916.0, -642073.354, 202.0264635, -0.03065092046,
                       2.486903333e-06, -9.70595411e-11, 1.437538881e-15,
                       4938707.04, -1672.09974])))
Shomate polynomials use 9 coefficients to describe the heat capacity, enthalpy, and entropy of a species. Common species are available in the NIST database or can be generated using pMuTT’s Shomate class.
\[\frac{c_P}{R}=\frac{1}{R}\bigg(A+Bt+Ct^2+Dt^3+\frac{E}{t^2} \bigg)\] \[\frac{H}{RT}=\frac{1}{RT}\bigg(At+B\frac{t^2}{2}+C\frac{t^3}{3} +D\frac{t^4}{4}-\frac{E}{t}+F\bigg)\] \[\frac{S}{R}=\frac{1}{R}\bigg(A\ln(t)+Bt+C\frac{t^2}{2}+D \frac{t^3}{3}-\frac{E}{2t^2}+G\bigg)\]where \(t=\frac{T}{1000}\) in K
species(name="CH4", # Label used to identify the species
        atoms="C:1 H:4", # Atomic composition of species separated with spaces
        size=1, # Number of sites occupied by species. Only needed for surface species
        thermo=Shomate([298, 1300], # This interval is valid between 298 - 1300 K
                       [-7.03029000E-01,  1.08477300E+02, -4.25215700E+01,
                         5.86278800E+00,  6.78565000E-01, -7.68437600E+01,
                         1.58716300E+02]))
Cantera (and consequently OpenMKM) support a wide variety of reactions. See Cantera’s documentation to see supported types.
For surface chemistry, the surface_reaction directive will be the most
common, which uses a modified Arrhenius expression.
where \(k\) is the rate constant, \(A\) is the pre-exponential factor, \(T\) is the temperature, \(\beta\) adds explicit temperature dependence to the pre-exponential parameter, \(E_a\) is the activation energy, and $R$ is the molar gas constant.
For surface reactions, \(A\) is typically calculated using:
\[A^{SR} = \frac {k_B} {h \sigma^{m-1}}\]where \(k_B\) is the Boltzmann constant, \(h\) is the Planck’s constant, \(\sigma\) is the site density, and \(m\) is the number of surface species (including empty sites).
If \(A\) is represented this way, we typically replace \(E_a\) with the Gibbs energy of activation, \(\Delta G^{TS}\), to include entropic effects based on transition state theory.
\[\Delta G^{TS} = \Delta H^{TS} - T \Delta S^{TS}\]where \(\Delta G^{TS}\) is the Gibbs energy of activation, \(\Delta H^{TS}\) is the enthalpy of activation, \(T\) is the temperature, and \(\Delta S^{TS}\) is the entropy of activation.
surface_reaction("CH4(S) + M(S) <=> CH3(S) + H(S) + M(B)", # Reaction string
                 [ 8.36812e+18, 1,  5.55117e+00], # A, beta, and Ea respectively
                 id="0001") # ID referenced by phase BEP directives
Adsorption reactions also use the surface_reaction directive but with a
couple of changes. The stick keyword must be specified and the first
parameter represents the sticking coefficient, \(s\), instead of the
pre-exponential factor, \(A\).
where \(A^{ads}\) is the pre-exponential for an adsorption reaction, \(s\) is the sticking coefficient, \(\sigma\) is the site density, \(m\) is the number of surface species including empty sites, \(R\) is the molar gas constant, \(T\) is the temperature, and \(M_i\) is the molecular weight of the gas species.
surface_reaction("CH2CH2 + M(S) <=> CH2CH2(S) + M(B)", # Reaction string
                 stick( 5.00000e-01, 0.0,  3.67653e+00), # Stick keyword indicates adsorption, values are s, beta, and Ea
                 id="0001")
The interactions among adsorbates can cause weaker or tighter binding energies. These are handled in OpenMKM using lateral interactions. Currently, we support piecewise linear interactions.
\[H_{ij} = \omega_{ijk} \theta_{j} + b_{ijk}\]where \(i\) is the species affected by species \(j\), \(H_{ij}\) is the enthalpic change due the coverage effect, \(\theta_{j}\) is the coverage of species \(j\), \(\omega_{ijk}\) and \(b_{ijk}\) are the slope (strength) and intercept of the coverage effect at interval \(k\).
They can be specified in two ways using the lateral_interaction directive.
Either pairwise or using a matrix.
lateral_interaction(species="H(S) C(S)", # Species i, Species j
                    coverage_thresholds=[0, 0.11, 1], # Intervals to change 
                    strengths=[0.0, -19.0], # Slope of lateral interaction
                    id="0001")
In the above example, the lateral interaction strength between H(S) and C(S)
is 0 between 0 - 0.11 ML of C(S), and -19 kcal/mol (specified using the energy
parameter in the units directive) between 0.11 ML - 1 ML of C(S).
The lateral interaction matrix takes the following parameters:
species – species which have lateral interactionsinteraction_matrix – a matrix denoting the lateral interaction
strengths, andcoverage_thresholds – coverage thresholds above which lateral
interactions modify enthalpy of species.lateral_interactions(
    species = 'N(S1) H(S1) NH3(S1) NH2(S1) NH(S1)',
    interaction_matrix = [[-47.0179, -17.7545, -25.1631, -20.7620, -48.7823],
                          [-17.7545,  -6.7043,  -9.5019,  -7.8400, -18.4208],
                          [-25.1631,  -9.5019, -13.4668, -11.1115, -26.1074],
                          [-20.762,   -7.8400, -11.1115,  -9.1681, -21.5412],
                          [-48.7823, -18.4208, -26.1074, -21.5412, -50.6129]],
    coverage_thresholds = [0, 0, 0, 0, 0])
Reaction activation energies can be specified using BEP relationships. To
specify BEP relationships, use the bep directive, which takes the following:
slope – slope of the BEP linear relationshipintercept – intercept of the BEP relationshipdirection – Direction of the BEP. Supported values are cleavage and
synthesis.id – Optional argument to distinguish the BEP relationship. If no value
is given, a numerical 4 digit integer starting with 0001 is used to
distinguish the BEP relationshipscleavage_reactions – List of associated reaction ids where a bond is brokensynthesis_reactions – List of associated reaction ids where a bond is formedbep(id='C-H', # Used by phases to identify the BEPs present
    slope=1.02, # Slope
    intercept=(24.44, 'kcal/mol'), # Intercept
    direction='cleavage', # Direction (cleavage or synthesis)
    cleavage_reactions=["0003", "0005", "0007 to 0009", "0013 to 0017"],
    synthesis_reactions=[])
The YAML format for thermochemistry is based on Cantera’s YAML format. Their documentation has a lot of useful information about specifying types and the syntax.
Default units for the YAML file can be specified using a units mapping at the top level.
It takes the following parameters:
lengthtimequantityenergy – Used for lateral interactions.act_energy – Used for activation energies and BEP relationships.pressuremassBelow, we show a sample units mapping.
units: {length: m, time: s, quantity: mol, energy: kcal, act_energy: kcal/mol, pressure: atm, mass: g}
The same units mapping can also be written as
units: 
    length: m
    time: s
    quantity: mol
    energy: kcal
    activation-energy: kcal/mol
    pressure: atm
    mass: g
The complete list of supported units is available here.
If you wish to override the units for a specific quantity, you can specify the unit next to 
the quantity. 
For example, the units directive above specifies quantity="mol" and
length="m" but we would like to specify the site density as
1.e15 molecules/cm2. This can be done using:
site-density: 1.e15 molec/cm^2
Note: In the thermochemistry yaml format, the powers are denoted with ^. So instead of writing cm2 to denote centimeter squared, use cm^2.
Phases can control transport, kinetic, and thermodynamic properties of the species. Every simulation will require at least one. The comprehensive set of parameters can be found here. A phase definition in general contains a list of elements, species, reactions, and the associated thermodynamic and kinetic models. A surface phase definition can contain BEPs and lateral interactions as well.
A list of phase definitions in the YAML format are specified using phases mapping.
phases: 
- name: phase_name
  elements: [list of elements]
  species: [list of species]
  thermo: thermodynamic model
  state: {initial state}
  kinetics: kinetics model for the phase
  reactions: all or declared-species or none
  interactions: all or declared-species or none
  bep: all or none
- additional phase definition
- additional phase definition
In the above phase definition mapping:
name: Identifier for a phase definition and is required.elements: List of elements, mandatory.species: List of species, mandatory.thermo: Thermodynamic model, mandatory.
    thermo: ideal-gas.thermo: ideal-surface.thermo: surface-lateral-interaction.state: Thermodynamic state specifying temperature and pressure for gas phase. For surface phase tempeature and surface coverages are defined. The state specified here is not used by OpenMKM, but is superceded by the thermodynamic state specified with initial_state keyword in the reactor yaml file.kinetics: Kinetics model. Mandatory for gas and surface phases.
    kinetics: gas.kinetics: surface.kinetics can be omitted.reactions: Keyword denoting the list of reactions. The allowed options are declared-species, all, and none.
    none .kinetics is omitted.bep: Bell-Evans-Polyanni relations are denoted with bep keyword. At present only all or none are supported. The keyword can be omitted if BEP relations are not defined.interactions: Mapping to specify the lateral interactions associated with the species that are part of the phase definition. If interactions are not part of phase definition, the keyword can be omitted. If used, allowed options are all, declared-species, and none.Below we show the most common phases used for heterogeneous catalysis.
phases:
    #===========================================
    # Ideal gas phase definition
    #-------------------------------------------
    - name: gas 
      elements: [H, N, Ar] 
      species: [N2, NH3, H2, Ar] 
      thermo: ideal-gas
      state: {T: 300.0 K, P: 1.01325e+05 bar}
      kinetics: gas 
      reactions: none
    #===========================================
    # Bulk phase (Stoichiometric Solid) definition
    #-------------------------------------------
    - name: bulk
      elements: [Ru]
      species: [RU(B)]
      thermo: fixed-stoichiometry
      state: {T: 300.0 K, P: 1.01325e+05 bar}
    #============================================
    # Simple surface phase definition 
    #-------------------------------------------
    - name: terrace
      elements: [H, Ru, N]
      species: [N2(T), N(T), H(T), NH3(T), NH2(T), NH(T), RU(T)]
      thermo: ideal-surface
      site-density: 2.1671e-09 mol/cm^2
      kinetics: surface
      reactions: declared-species
      state: {T: 300.0 K, coverages: {RU(T): 1.0}}
    #==============================================
    # Surface phase with lateral interactions and BEPs
    #-------------------------------------------
    - name: step
      elements: [H, Ru, N]
      species: [N2(S), N(S), H(S), NH3(S), NH2(S), NH(S), RU(S)]
      thermo: surface-lateral-interaction
      site-density: 4.4385e-10 mol/cm^2
      interactions: declared-species
      kinetics: surface
      reactions: declared-species
      bep: all 
      state: {T: 300.0 K, coverages: {RU(S): 1.0}}
Each species present in your mechanism should have its thermodynamic properties specified using one of the following:
More information can be found on Cantera’s documentation.
Below we show the three specie models.
species:
#==========================================================
# NASA7
#---------------------------------------------------------
 - name: CH4(S) # Label used to identify the species
   composition: {C: 1, H: 4} # Atomic composition of species 
   size: 1 # Number of sites occupied by species. Only needed for surface species
   thermo:  
      model: NASA7
      temperature-ranges: [250.0, 480.0, 1500.0]
      data: 
      - [6.37200798E+00, -4.66939392E-03,  6.26492184E-06, 4.28698448E-08, 
         -5.33259424E-11, -1.23940270E+04, -2.09817174E+01]
      - [3.73282076E+00,  7.75238626E-03,  1.47755181E-06, -3.18500889E-09, 
         8.84603159E-13, -1.20467882E+04, -9.12054966E+00]
#==========================================================
# NASA9
#---------------------------------------------------------
 - name: CH4(S) # Label used to identify the species
   composition: {C: 1, H: 4} # Atomic composition of species 
   size: 1 # Number of sites occupied by species. Only needed for surface species
   thermo:
      model: NASA9
      temperature-ranges: [200.0, 1000.0, 6000.0, 20000.0]
      data: 
      - [22103.71497, -381.846182, 6.08273836, -0.00853091441,
         1.384646189e-05, -9.62579362e-09, 2.519705809e-12,
         710.846086, -10.76003744]
      - [587712.406, -2239.249073, 6.06694922, -0.00061396855,
         1.491806679e-07, -1.923105485e-11, 1.061954386e-15,
         12832.10415, -15.86640027]
      - [831013916.0, -642073.354, 202.0264635, -0.03065092046,
         2.486903333e-06, -9.70595411e-11, 1.437538881e-15,
         4938707.04, -1672.09974])))
#==========================================================
# Shomate
#---------------------------------------------------------
 - name: CH4(S) # Label used to identify the species
   composition: {C: 1, H: 4} # Atomic composition of species 
   size: 1 # Number of sites occupied by species. Only needed for surface species
   thermo:
      model: Shomate
      temperature-ranges: [298, 1300] 
      data: 
      - [-7.03029000E-01,  1.08477300E+02, -4.25215700E+01,
         5.86278800E+00,  6.78565000E-01, -7.68437600E+01,
         1.58716300E+02]
Cantera (and consequently OpenMKM) support a wide variety of reactions. See
Cantera’s documentation to see supported types. 
In YAML format, the reactions are specified under reactions keyword.
Below are the popular reaction models such as surface and adsorption reactions.
reactions:
#================================================================
# Surface Reaction
#----------------------------------------------------------------
  - equation: CH4(S) + M(S) <=> CH3(S) + H(S) + M(B) # Reaction string
    rate-constant: {A: 8.36812e+18, b: 1, Ea: 5.55117e+00}
    id: "r0001"       # ID referenced by phase BEP directives
#================================================================
# Adsorption Reaction
#----------------------------------------------------------------
  - equation: CH2CH2 + M(S) <=> CH2CH2(S) + M(B)
    sticking-coefficient: {A: 5.00000e-01, b: 0.0, Ea: 3.67653e+00} # rate constant specified with sticking-coefficient
    sticking-species: CH2CH2
    Motz-Wise: true
    id: "r0002"
Pairwise lateral interactions can be defined under under interactions keyword.
Below is an example defintion for lateral interaction .
interactions:
    - species:[H(S), C(S)] # Species i, Species j
      strength: [0.0 kcal/mol, -19.0 kcal/mol] # Slope of lateral interaction
      coverage-threshold: [0, 0.11, 1] # Intervals to change 
      id: "i001")
In the above example, the lateral interaction strength between H(S) and C(S) is 0 between 0 - 0.11 ML of C(S), and -19 kcal/mol (specified explicitly).
``
Reaction activation energies can be specified using BEP relationships. To
specify BEP relationships, use the bep directive, which takes the following:
slope – slope of the BEP linear relationshipintercept – intercept of the BEP relationshipdirection – Direction of the BEP. Supported values are cleavage and
synthesis.id – Optional argument to distinguish the BEP relationship. If no value
is given, a numerical 4 digit integer starting with 0001 is used to
distinguish the BEP relationshipscleavage-reactions – List of associated reaction ids where a bond is brokensynthesis-reactions – List of associated reaction ids where a bond is formedbep: 
    - id: C-H                   # Used by phases to identify the BEPs present
      slope: 1.02               # Slope
      intercept: 24.44 kcal/mol # Intercept
      direction: cleavage       # Direction (cleavage or synthesis)
      cleavage-reactions: [r0003, r0005, r0007, r0009, r0008, r0013, r0014, r0015, r0016, r0017]
      # No synthesis reactions
Use the conversion script,
\<CANTERA\_ROOT\>/interfaces/cython/cantera/ck2cti.py, which parses gas.inp,
surf.inp and thermdat files to convert Chemkin files into the Cantera CTI input
format. For more information, refer to
Cantera documentation on input file format.
The Chemkin input files are not sometimes parsed by ck2cti.py script due to the
bulk phase definition in surf.inp. Remove the bulk phase definition and
retry. If it works, add the missing bulk phase definition directly into the CTI file using the stoichiometric_solid keyword (see section above).