• Home
  • Installation
  • Running
  • Input
  • Output
  • Theory
  • Input Files

    Introduction

    To run OpenMKM, two input files are required:

    1. A YAML file that specifies parameters related to the reactor.
    2. An XML/YAML file that specifies thermodynamic and kinetic parameters.

    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.

    Reactor Input File.

    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:

    Generating YAML Files

    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.

    OpenMKM Reactor YAML Format

    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
    

    OpenMKM Reactor Format

    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" -

    Sample Reactor YAML file.

    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
    

    OpenMKM ThermoChemistry Data File

    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.

    OpenMKM Thermochemistry data CTI Format

    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.

    Units

    Default units for the CTI file can be specified using a units directive. It takes the following parameters:

    Below, 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

    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.

    Ideal Gas

    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
    

    Stoichiometric Solid

    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
    

    Interactive Interface

    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
    

    Species

    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 Polynomial

    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 Polynomial

    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

    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]))
    

    Reactions

    Cantera (and consequently OpenMKM) support a wide variety of reactions. See Cantera’s documentation to see supported types.

    Surface Reactions

    For surface chemistry, the surface_reaction directive will be the most common, which uses a modified Arrhenius expression.

    \[k = A T^\beta \exp(-\frac {E_a}{RT})\]

    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

    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\).

    \[A^{ads} = \frac {s}{\sigma^{m}}\sqrt \frac{RT}{2\pi M_i}\]

    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")
    

    Lateral Interactions

    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.

    Pairwise Interactions

    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).

    Matrix Interactions

    The lateral interaction matrix takes the following parameters:

    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])
    

    Bell-Evans-Polanyi (BEP) relationships

    Reaction activation energies can be specified using BEP relationships. To specify BEP relationships, use the bep directive, which takes the following:

    bep(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=[])
    

    OpenMKM Thermochemistry YAML Format

    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.

    Units

    Default units for the YAML file can be specified using a units mapping at the top level. It takes the following parameters:

    Below, 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

    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:

    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}}
    

    Species

    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]
    

    Reactions

    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"
    

    Lateral Interactions

    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).

    ``

    Bell-Evans-Polanyi (BEP) relationships

    Reaction activation energies can be specified using BEP relationships. To specify BEP relationships, use the bep directive, which takes the following:

    bep: 
        - 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
    

    Chemkin Users

    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).