OpenMKM Input and Output

This notebook describes pmutt's functionality to read and write OpenMKM CTI files. We will use the NH3 formation mechanism as a case study.

Topics Covered

  • Read species ab-initio data, reactions, lateral interactions and phases from a spreadsheet
  • Write the CTI file that can be read by OpenMKM

Input Spreadsheet

All the data will be imported from the ./inputs/NH3_Input_data.xlsx file. There are five sheets:

  1. refs contains ab-initio and experimental data for a handful of gas species to calculate references
  2. species contains ab-initio data for each specie
  3. reactions contains elementary steps
  4. phases contains phases for the species
  5. lateral_interactions contains lateral interactions between species

The contents are displayed below:

References

name elements.N elements.H elements.Ru T_ref HoRT_ref potentialenergy symmetrynumber statmech_model atoms vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber
N2 2 0 0 298.15 0 -16.63 2 IdealGas ./N2/CONTCAR 2744
NH3 1 3 0 298.15 -18.38025311 -19.54 3 IdealGas ./NH3/CONTCAR 3534 3464 1765 1139
H2 0 2 0 298.15 0 -6.7700 2 IdealGas ./H2/CONTCAR 4342
Ru 0 0 1 298.15 0.0000 Placeholder

Species

name elements.N elements.H elements.Ru phase statmech_model symmetrynumber atoms potentialenergy vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber vib_wavenumber
N2 2 gas IdealGas 2 ./N2/CONTCAR -16.63 2744.00
NH3 1 3 gas IdealGas 3 ./NH3/CONTCAR -19.54 3534.00 3464.00 1765.00 1139.00
H2 2 gas IdealGas 2 ./H2/CONTCAR -6.77 4342.00
N2(S) 2 terrace Harmonic -17.24 2197.19 360.42 347.34 335.67 62.08 32.18
N(S) 1 terrace Harmonic -9.34 549.11 538.56 504.32 475.81 459.08 410.02
H(S) 1 terrace Harmonic -4.00 1003.51 625.55 616.29
NH3(S) 1 3 terrace Harmonic -20.43 3491.09 3488.82 3364.52 1583.52 1582.07 1124.22 570.21 567.22 333.09 122.86 83.83 70.63
NH2(S) 1 2 terrace Harmonic -16.59 3469.30 3381.05 1503.02 698.87 625.60 615.94 475.13 298.12 153.25
NH(S) 1 1 terrace Harmonic -13.21 3403.13 718.18 710.58 528.53 415.20 410.13
TS1_NH3(S) 1 3 Harmonic -19.24 3453.41 3355.67 1723.85 1487.95 959.15 888.95 594.09 428.43 227.03 206.05 142.14
TS2_NH2(S) 1 2 Harmonic -15.87 3426.44 1293.72 922.83 660.97 525.60 496.84 330.67 290.28
TS3_NH(S) 1 1 Harmonic -11.93 1201.60 491.57 462.02 402.16 242.14
TS4_N2(S) 2 Harmonic -14.67 485.61 392.98 386.19 280.94 168.43
RU(S) 1 terrace Placeholder
RU(B) 1 bulk Placeholder

Phases

name phase_type density site_density reactions interactions list.phases list.phases note
gas IdealGas
bulk StoichSolid 12.4 Ru Metal
terrace InteractingInterface 2.17E-09 all all gas bulk Ru(0001)

Reactions

reaction_str is_adsorption
H2 + 2RU(S) = 2H(S) + 2RU(B) TRUE
N2 + RU(S) = N2(S) + RU(B) TRUE
NH3 + RU(S) = NH3(S) + RU(B) TRUE
NH3(S) + RU(S)= TS1_NH3(S) = NH2(S) + H(S) + RU(B) FALSE
NH2(S) + RU(S) = TS2_NH2(S) = NH(S) + H(S) + RU(B) FALSE
NH(S) + RU(S) = TS3_NH(S) = N(S) + H(S) + RU(B) FALSE
2N(S) + RU(B) = TS4_N2(S) = N2(S) + RU(S) FALSE

Lateral Interactions

name_i name_j list.intervals list.slopes
N(S) N(S) 0 -52.6
N(S) H(S) 0 -17.7
H(S) N(S) 0 -17.7
H(S) H(S) 0 -3
NH2(S) N(S) 0 -20.7

Designate Units

First, we will designate the units to write the CTI file.

In [1]:
from pmutt.omkm.units import Units

units = Units(length='cm', quantity='mol', act_energy='kcal/mol', mass='g', energy='kcal/mol')

Reading data

Before we can initialize our species, we need the references.

Reading References

We will open the input spreadsheet and read the refs sheet.

In [2]:
import os
from pathlib import Path

from pmutt.io.excel import read_excel
from pmutt.empirical.references import Reference, References

# Find the location of Jupyter notebook
# Note that normally Python scripts have a __file__ variable but Jupyter notebook doesn't.
# Using pathlib can overcome this limiation
notebook_path = Path().resolve()
os.chdir(notebook_path)
input_path = './inputs/NH3_Input_Data.xlsx'

refs_data = read_excel(io=input_path, sheet_name='refs')
refs = [Reference(**ref_data) for ref_data in refs_data]
refs = References(references=refs)

Reading Species

In [3]:
from pmutt.empirical.nasa import Nasa

# Lower and higher temperatures
T_low = 298. # K
T_high = 800. # K

species_data = read_excel(io=input_path, sheet_name='species')
species = []
species_phases = {}
for ind_species_data in species_data:
    # Initialize NASA from statistical mechanical data
    ind_species = Nasa.from_model(T_low=T_low, T_high=T_high, references=refs, **ind_species_data)
    species.append(ind_species)

    # Group the species by phase for later use
    try:
        species_phases[ind_species.phase].append(ind_species)
    except KeyError:
        species_phases[ind_species.phase] = [ind_species]
C:\Users\jonat\AppData\Roaming\Python\Python37\site-packages\scipy-1.3.0-py3.7-win-amd64.egg\scipy\stats\stats.py:1040: RuntimeWarning: invalid value encountered in double_scalars
  return a.std(axis) / a.mean(axis)

Adding species from other empirical sources

In [4]:
import numpy as np
from pmutt.empirical.shomate import Shomate

Ar = Shomate(name='Ar', elements={'Ar': 1}, phase='gas', T_low=298., T_high=6000.,
             a=np.array([20.78600, 2.825911e-7, -1.464191e-7, 1.092131e-8, -3.661371e-8, -6.19735, 179.999, 0.]))

species.append(Ar)
species_phases['gas'].append(Ar)

Reading BEP

In [5]:
from pmutt.omkm.reaction import BEP

beps_data = read_excel(io=input_path, sheet_name='beps')
beps = []
for bep_data in beps_data:
    beps.append(BEP(**bep_data))

# Combine species and BEPs to make reactions
species_with_beps = species + beps

Read reactions

In [6]:
from pmutt import pmutt_list_to_dict
from pmutt.omkm.reaction import SurfaceReaction

# Convert species to dictionary for easier reaction assignment
species_with_beps_dict = pmutt_list_to_dict(species_with_beps)
reactions_data = read_excel(io=input_path, sheet_name='reactions')
reactions = []
# Store information about phases for later retrieval
reaction_phases = {}
for reaction_data in reactions_data:
    reaction = SurfaceReaction.from_string(species=species_with_beps_dict,
                                           **reaction_data)
    reactions.append(reaction)
    # Assign phase information
    reaction_species = reaction.get_species(include_TS=True)
    for ind_species in reaction_species:
        try:
            phase = species_with_beps_dict[ind_species].phase
        except AttributeError:
            pass
        # Assign if key already exists
        if phase in reaction_phases:
            if reaction not in reaction_phases[phase]:
                reaction_phases[phase].append(reaction)
        else:
            reaction_phases[phase] = [reaction]

Read lateral interactions

In [7]:
from pmutt.mixture.cov import PiecewiseCovEffect

interactions = []
interactions_data = read_excel(io=input_path, sheet_name='lateral_interactions')
interaction_phases = {}
for interaction_data in interactions_data:
    interaction = PiecewiseCovEffect(**interaction_data)
    interactions.append(interaction)

    # Assign phase information
    phase = species_with_beps_dict[interaction.name_i].phase
    # Assign if key already exists
    if phase in interaction_phases:
        if interaction not in interaction_phases[phase]:
            interaction_phases[phase].append(interaction)
    else:
        interaction_phases[phase] = [interaction]

Reading Phases

In [8]:
from pmutt.omkm.phase import IdealGas, InteractingInterface, StoichSolid

phases_data = read_excel(io=input_path, sheet_name='phases')
phases = []
for phase_data in phases_data:
    # Pre-processing relevant data
    phase_name = phase_data['name']
    phase_type = phase_data.pop('phase_type')
    phase_data['species'] = species_phases[phase_name]

    # Create the appropriate object
    if phase_type == 'IdealGas':
        phase = IdealGas(**phase_data)
    elif phase_type == 'StoichSolid':
        phase = StoichSolid(**phase_data)
    elif phase_type == 'InteractingInterface':
        phase_data['reactions'] = reaction_phases[phase_name]
        phase_data['interactions'] = interaction_phases[phase_name]
        phase = InteractingInterface(**phase_data)
    phases.append(phase)

Write CTI File

In [9]:
from pmutt.io.omkm import write_cti

output_path = './outputs/input.cti'
use_motz_wise = True

write_cti(reactions=reactions, species=species, phases=phases, units=units,
          lateral_interactions=interactions, filename=output_path,
          use_motz_wise=use_motz_wise)

Output CTI File

If you would prefer to return the file as a string instead of writing it, omit the filename.

In [10]:
print(write_cti(reactions=reactions, species=species, phases=phases, units=units,
                lateral_interactions=interactions, use_motz_wise=use_motz_wise))
# File generated by pMuTT (v 1.2.14) on 2019-10-27 19:31:04.545727
# See documentation for OpenMKM CTI file here:
# https://vlachosgroup.github.io/openmkm/input

#-------------------------------------------------------------------------------
# UNITS
#-------------------------------------------------------------------------------
units(length="cm", time="s", quantity="mol", energy="kcal/mol",
      act_energy="kcal/mol", pressure="bar", mass="g")

#--------------------------------------------------------------------------------
# PHASES
#--------------------------------------------------------------------------------
ideal_gas(name="gas",
          elements="H Ar N",
          species="N2 NH3 H2 Ar")

stoichiometric_solid(name="bulk",
                     elements="Ru",
                     species="RU(B)",
                     density=12.4,
                     note="Ru Metal")

interacting_interface(name="terrace",
                      elements="H N Ru",
                      species="N2(T) N(T) H(T) NH3(T) NH2(T) NH(T) RU(T)",
                      phases="gas bulk",
                      site_density=2.1671e-09,
                      interactions=["0000 to 0004"],
                      reactions=["0000 to 0003", "NH2-H_cle_0001", "NH-H_cle_0001", "N-H_cle_0001"],
                      beps="NH2-H NH-H N-H",
                      note="Ru(0001)")

interacting_interface(name="step",
                      elements="H N Ru",
                      species="N2(S) N(S) H(S) NH3(S) NH2(S) NH(S) RU(S)",
                      phases="gas bulk",
                      site_density=4.4385e-10,
                      interactions=["0005 to 0009"],
                      reactions=["0004 to 0007", "NH2-H_cle_0002", "NH-H_cle_0002", "N-H_syn_0001"],
                      beps="NH2-H NH-H N-H",
                      note="Ru(0001) with atoms deleted")


#--------------------------------------------------------------------------------
# SPECIES
#--------------------------------------------------------------------------------
species(name="N2", atoms="N:2",
        thermo=(NASA([298.0, 523.3877551020408],
                     [ 3.41792195E+00,  8.91688129E-04, -3.46864753E-06,
                       5.44691795E-09, -2.46804017E-12, -1.27218598E+02,
                       3.46925446E+00]),
                NASA([523.3877551020408, 800.0], 
                     [ 3.75207309E+00, -1.30159027E-03,  1.83848785E-06,
                      -1.17413430E-10, -3.65391117E-13, -1.67466046E+02,
                       2.02487235E+00])))

species(name="NH3", atoms="N:1 H:3",
        thermo=(NASA([298.0, 533.6326530612245],
                     [ 4.57124680E+00, -6.89724277E-03,  2.70972941E-05,
                      -3.44331645E-08,  1.62568430E-11, -8.53630392E+03,
                      -1.78236482E+00]),
                NASA([533.6326530612245, 800.0], 
                     [ 3.29427463E+00,  2.57481517E-03,  5.20883059E-07,
                      -1.00678313E-09,  3.59356180E-13, -8.39739729E+03,
                       3.59518179E+00])))

species(name="H2", atoms="H:2",
        thermo=(NASA([298.0, 574.6122448979592],
                     [ 3.50717925E+00, -8.50397135E-05,  3.79570576E-07,
                      -7.57943298E-10,  5.72423558E-13,  1.68725521E+03,
                      -4.30359616E+00]),
                NASA([574.6122448979592, 800.0], 
                     [ 3.37903251E+00,  7.92301907E-04, -1.88662952E-06,
                       1.85974220E-09, -5.68447254E-13,  1.70231785E+03,
                      -3.75384878E+00])))

species(name="N2(T)", atoms="N:2", size=1.0,
        thermo=(NASA([298.0, 482.40816326530614],
                     [ 4.40553502E-01,  2.97759950E-02, -8.47698148E-05,
                       1.16195177E-07, -6.12938589E-11, -6.81713036E+03,
                      -1.67535850E+00]),
                NASA([482.40816326530614, 800.0], 
                     [ 3.42605836E+00,  5.03710708E-03, -6.92689694E-06,
                       6.03246113E-09, -2.18862675E-12, -7.10908593E+03,
                      -1.39234158E+01])))

species(name="N(T)", atoms="N:1", size=1.0,
        thermo=(NASA([298.0, 502.8979591836735],
                     [-5.23174593E+00,  6.11537184E-02, -1.47762309E-04,
                       1.74618161E-07, -8.21997526E-11, -1.05501788E+04,
                       1.88655390E+01]),
                NASA([502.8979591836735, 800.0], 
                     [-8.29107669E-01,  2.64469843E-02, -4.38832016E-05,
                       3.47600781E-08, -1.07819310E-11, -1.10025322E+04,
                       5.84860624E-01])))

species(name="H(T)", atoms="H:1", size=1.0,
        thermo=(NASA([298.0, 461.9183673469388],
                     [-1.41307531E+00,  1.00687718E-02,  1.09758988E-06,
                      -2.55216914E-08,  2.17566538E-11, -6.12991563E+03,
                       5.64663049E+00]),
                NASA([461.9183673469388, 800.0], 
                     [-2.11302416E+00,  1.72572991E-02, -2.60046478E-05,
                       1.92388088E-08, -5.68363784E-12, -6.07714366E+03,
                       8.35375655E+00])))

species(name="NH3(T)", atoms="N:1 H:3", size=1.0,
        thermo=(NASA([298.0, 461.9183673469388],
                     [ 1.16759533E+00,  2.05732170E-02, -3.66958772E-05,
                       4.56112325E-08, -2.49628744E-11, -1.42311185E+04,
                      -4.80504278E+00]),
                NASA([461.9183673469388, 800.0], 
                     [ 1.58312977E+00,  1.57753291E-02, -1.71587153E-05,
                       1.15414255E-08, -3.21958978E-12, -1.42567384E+04,
                      -6.35076167E+00])))

species(name="NH2(T)", atoms="N:1 H:2", size=1.0,
        thermo=(NASA([298.0, 523.3877551020408],
                     [-2.56305506E+00,  3.84726874E-02, -7.73503504E-05,
                       8.09903199E-08, -3.43595838E-11, -1.17458655E+04,
                       8.90806366E+00]),
                NASA([523.3877551020408, 800.0], 
                     [-6.86530719E-01,  2.43298826E-02, -3.68705157E-05,
                       2.88483783E-08, -8.86963660E-12, -1.19475373E+04,
                       1.03191178E+00])))

species(name="NH(T)", atoms="N:1 H:1", size=1.0,
        thermo=(NASA([298.0, 543.8775510204082],
                     [-3.73687435E+00,  4.05226889E-02, -8.44226964E-05,
                       8.65932632E-08, -3.53036247E-11, -1.46202196E+04,
                       1.37781588E+01]),
                NASA([543.8775510204082, 800.0], 
                     [-1.33660645E+00,  2.33106600E-02, -3.77180253E-05,
                       2.97486446E-08, -9.12157176E-12, -1.48903410E+04,
                       3.58875263E+00])))

species(name="TS1_NH3(T)", atoms="N:1 H:3", size=1.0,
        thermo=(NASA([298.0, 451.67346938775506],
                     [ 4.96418515E-02,  2.15674671E-02, -2.75604959E-05,
                       2.23225323E-08, -8.79255935E-12, -2.50469914E+03,
                      -1.46480767E+00]),
                NASA([451.67346938775506, 800.0], 
                     [ 5.21221040E-02,  2.11615812E-02, -2.49542203E-05,
                       1.66204937E-08, -4.59897868E-12, -2.50090675E+03,
                      -1.43098814E+00])))

species(name="TS2_NH2(T)", atoms="N:1 H:2", size=1.0,
        thermo=(NASA([298.0, 554.1224489795918],
                     [-2.58881424E+00,  3.43781302E-02, -5.87419101E-05,
                       5.18321984E-08, -1.87340797E-11, -5.75828326E+03,
                       8.95651588E+00]),
                NASA([554.1224489795918, 800.0], 
                     [-1.48538501E+00,  2.67287608E-02, -3.86606417E-05,
                       2.81558194E-08, -8.15140597E-12, -5.88676392E+03,
                       4.23478570E+00])))

species(name="TS3_NH(T)", atoms="N:1 H:1", size=1.0,
        thermo=(NASA([298.0, 482.40816326530614],
                     [-1.80701218E+00,  3.07479132E-02, -6.96816870E-05,
                       8.30020912E-08, -4.08170225E-11, -2.37120889E+03,
                       5.69776360E+00]),
                NASA([482.40816326530614, 800.0], 
                     [-1.24242592E-01,  1.65859456E-02, -2.43704704E-05,
                       1.77594067E-08, -5.19878424E-12, -2.53350782E+03,
                      -1.18098922E+00])))

species(name="TS4_N2(T)", atoms="N:2", size=1.0,
        thermo=(NASA([298.0, 482.40816326530614],
                     [-1.75107618E+00,  4.12189598E-02, -1.09828935E-04,
                       1.41320046E-07, -7.17404084E-11,  2.18956564E+04,
                       4.82385770E+00]),
                NASA([482.40816326530614, 800.0], 
                     [ 1.52431744E+00,  1.40315985E-02, -2.40821843E-05,
                       1.96281604E-08, -6.24114074E-12,  2.15756709E+04,
                      -8.60900953E+00])))

species(name="RU(T)", atoms="Ru:1", size=1.0,
        thermo=(NASA([298.0, 554.1224489795918],
                     [ 0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00]),
                NASA([554.1224489795918, 800.0], 
                     [ 0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00])))

species(name="N2(S)", atoms="N:2", size=1.0,
        thermo=(NASA([298.0, 492.65306122448976],
                     [-2.61113029E+00,  4.30280784E-02, -1.00995865E-04,
                       1.19786985E-07, -5.75841652E-11, -8.73636880E+03,
                       8.24537861E+00]),
                NASA([492.65306122448976, 800.0], 
                     [ 7.86915518E-02,  2.11483916E-02, -3.33140389E-05,
                       2.54979807E-08, -7.72804711E-12, -9.00472791E+03,
                      -2.84148395E+00])))

species(name="N(S)", atoms="N:1", size=1.0,
        thermo=(NASA([298.0, 502.8979591836735],
                     [-2.74170137E+00,  3.09262020E-02, -7.40012939E-05,
                       8.66964232E-08, -4.04996423E-11, -1.22881492E+04,
                       9.99157160E+00]),
                NASA([502.8979591836735, 800.0], 
                     [-5.50172452E-01,  1.37232473E-02, -2.27404363E-05,
                       1.79947600E-08, -5.57731485E-12, -1.25142150E+04,
                       8.82855257E-01])))

species(name="H(S)", atoms="H:1", size=1.0,
        thermo=(NASA([298.0, 461.9183673469388],
                     [-1.41307531E+00,  1.00687718E-02,  1.09758988E-06,
                      -2.55216914E-08,  2.17566538E-11, -6.12991563E+03,
                       5.64663049E+00]),
                NASA([461.9183673469388, 800.0], 
                     [-2.11302416E+00,  1.72572991E-02, -2.60046478E-05,
                       1.92388088E-08, -5.68363784E-12, -6.07714366E+03,
                       8.35375655E+00])))

species(name="NH3(S)", atoms="N:1 H:3", size=1.0,
        thermo=(NASA([298.0, 461.9183673469388],
                     [ 1.14054296E+00,  2.11528629E-02, -3.94113500E-05,
                       5.04119756E-08, -2.79498362E-11, -1.71372331E+04,
                      -4.81930148E+00]),
                NASA([461.9183673469388, 800.0], 
                     [ 1.66079448E+00,  1.53778585E-02, -1.64435153E-05,
                       1.09730315E-08, -3.04769119E-12, -1.71718653E+04,
                      -6.78171189E+00])))

species(name="NH2(S)", atoms="N:1 H:2", size=1.0,
        thermo=(NASA([298.0, 513.1428571428571],
                     [-2.26986613E+00,  3.69783572E-02, -7.37914233E-05,
                       7.69637123E-08, -3.26409225E-11, -1.82944702E+04,
                       7.98342065E+00]),
                NASA([513.1428571428571, 800.0], 
                     [-5.94719805E-01,  2.42276179E-02, -3.69256529E-05,
                       2.89797307E-08, -8.92777368E-12, -1.84727350E+04,
                       9.69000209E-01])))

species(name="NH(S)", atoms="N:1 H:1", size=1.0,
        thermo=(NASA([298.0, 533.6326530612245],
                     [-3.67269046E+00,  4.12908126E-02, -8.83354768E-05,
                       9.30708814E-08, -3.90095812E-11, -1.35450272E+04,
                       1.34062488E+01]),
                NASA([533.6326530612245, 800.0], 
                     [-1.16677718E+00,  2.29677564E-02, -3.75818066E-05,
                       2.99430978E-08, -9.26414211E-12, -1.38218900E+04,
                       2.81582251E+00])))

species(name="TS1_NH3(S)", atoms="N:1 H:3", size=1.0,
        thermo=(NASA([298.0, 461.9183673469388],
                     [-2.15711800E-01,  2.23671232E-02, -2.90792507E-05,
                       2.46217683E-08, -1.04098955E-11, -8.98514743E+03,
                       1.18397898E-01]),
                NASA([461.9183673469388, 800.0], 
                     [-2.41469187E-01,  2.19587885E-02, -2.57139612E-05,
                       1.67995163E-08, -4.53990713E-12, -8.97590560E+03,
                       2.96197860E-01])))

species(name="TS2_NH2(S)", atoms="N:1 H:2", size=1.0,
        thermo=(NASA([298.0, 482.40816326530614],
                     [-1.29806321E+00,  3.33296291E-02, -7.49082969E-05,
                       9.09398161E-08, -4.50950303E-11, -5.20663944E+03,
                       3.68685183E+00]),
                NASA([482.40816326530614, 800.0], 
                     [ 6.60409671E-01,  1.69840135E-02, -2.30811277E-05,
                       1.70174943E-08, -5.12349549E-12, -5.39692076E+03,
                      -4.33432757E+00])))

species(name="TS3_NH(S)", atoms="N:1 H:1", size=1.0,
        thermo=(NASA([298.0, 482.40816326530614],
                     [-3.19849368E+00,  4.08355096E-02, -1.04789990E-04,
                       1.36204946E-07, -7.03581093E-11, -3.95925686E+03,
                       1.12114765E+01]),
                NASA([482.40816326530614, 800.0], 
                     [ 2.10817763E-02,  1.38454046E-02, -1.89560044E-05,
                       1.35775840E-08, -4.02213306E-12, -4.27023844E+03,
                      -1.95813214E+00])))

species(name="TS4_N2(S)", atoms="N:2", size=1.0,
        thermo=(NASA([298.0, 492.65306122448976],
                     [-4.02990616E+00,  5.10850629E-02, -1.27788869E-04,
                       1.55874918E-07, -7.55559553E-11, -2.23209290E+03,
                       1.41653650E+01]),
                NASA([492.65306122448976, 800.0], 
                     [-2.46781062E-01,  2.06356563E-02, -3.46960019E-05,
                       2.78040159E-08, -8.71443394E-12, -2.61299814E+03,
                      -1.46528582E+00])))

species(name="RU(S)", atoms="Ru:1", size=1.0,
        thermo=(NASA([298.0, 554.1224489795918],
                     [ 0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00]),
                NASA([554.1224489795918, 800.0], 
                     [ 0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00])))

species(name="RU(B)", atoms="Ru:1", size=1.0,
        thermo=(NASA([298.0, 554.1224489795918],
                     [ 0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00]),
                NASA([554.1224489795918, 800.0], 
                     [ 0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00,  0.00000000E+00,  0.00000000E+00,
                       0.00000000E+00])))

species(name="Ar", atoms="Ar:1",
        thermo=Shomate([298.0, 6000.0],
                       [ 2.07860000E+01,  2.82591100E-07, -1.46419100E-07,
                         1.09213100E-08, -3.66137100E-08, -6.19735000E+00,
                         1.79999000E+02]))

#--------------------------------------------------------------------------------
# LATERAL INTERACTIONS
#--------------------------------------------------------------------------------
lateral_interaction("N(T) N(T)", [-52.6], [0], id="0000")
lateral_interaction("N(T) H(T)", [-17.7], [0], id="0001")
lateral_interaction("H(T) N(T)", [-17.7], [0], id="0002")
lateral_interaction("H(T) H(T)", [-3.], [0], id="0003")
lateral_interaction("NH2(T) N(T)", [-20.7], [0], id="0004")
lateral_interaction("N(S) N(S)", [-52.6], [0], id="0005")
lateral_interaction("N(S) H(S)", [-17.7], [0], id="0006")
lateral_interaction("H(S) N(S)", [-17.7], [0], id="0007")
lateral_interaction("H(S) H(S)", [-3.], [0], id="0008")
lateral_interaction("NH2(S) N(S)", [-20.7], [0], id="0009")

#--------------------------------------------------------------------------------
# REACTION OPTIONS
#--------------------------------------------------------------------------------
enable_motz_wise()


#--------------------------------------------------------------------------------
# REACTIONS
#--------------------------------------------------------------------------------
surface_reaction("H2 + 2 RU(T) <=> 2 H(T) + 2 RU(B)",
                 stick( 5.00000e-01, 1,  0.00000e+00),
                 id="0000")
surface_reaction("N2 + RU(T) <=> N2(T) + RU(B)",
                 stick( 5.00000e-01, 1,  0.00000e+00),
                 id="0001")
surface_reaction("NH3 + RU(T) <=> NH3(T) + RU(B)",
                 stick( 5.00000e-01, 1,  0.00000e+00),
                 id="0002")
surface_reaction("NH3(T) + RU(T) <=> NH2(T) + H(T) + RU(B)",
                 [ 9.61497e+18, 1,  1.76804e+01],
                 id="NH2-H_cle_0001")
surface_reaction("NH2(T) + RU(T) <=> NH(T) + H(T) + RU(B)",
                 [ 9.61497e+18, 1,  1.01500e+01],
                 id="NH-H_cle_0001")
surface_reaction("NH(T) + RU(T) <=> N(T) + H(T) + RU(B)",
                 [ 9.61497e+18, 1,  2.20771e+01],
                 id="N-H_cle_0001")
surface_reaction("2 N(T) + RU(B) <=> N2(T) + RU(T)",
                 [ 9.61497e+18, 1,  8.64725e+01],
                 id="0003")
surface_reaction("H2 + 2 RU(S) <=> 2 H(S) + 2 RU(B)",
                 stick( 5.00000e-01, 1,  0.00000e+00),
                 id="0004")
surface_reaction("N2 + RU(S) <=> N2(S) + RU(B)",
                 stick( 5.00000e-01, 1,  0.00000e+00),
                 id="0005")
surface_reaction("NH3 + RU(S) <=> NH3(S) + RU(B)",
                 stick( 5.00000e-01, 1,  0.00000e+00),
                 id="0006")
surface_reaction("NH3(S) + RU(S) <=> NH2(S) + H(S) + RU(B)",
                 [ 4.69452e+19, 1,  1.26026e+01],
                 id="NH2-H_cle_0002")
surface_reaction("NH2(S) + RU(S) <=> NH(S) + H(S) + RU(B)",
                 [ 4.69452e+19, 1,  1.80120e+01],
                 id="NH-H_cle_0002")
surface_reaction("N(S) + H(S) + RU(B) <=> NH(S) + RU(S)",
                 [ 4.69452e+19, 1,  2.60809e+01],
                 id="N-H_syn_0001")
surface_reaction("2 N(S) + RU(B) <=> N2(S) + RU(S)",
                 [ 4.69452e+19, 1,  4.45992e+01],
                 id="0007")

#--------------------------------------------------------------------------------
# BEP Relationships
#--------------------------------------------------------------------------------
bep(id="NH2-H",
    slope=0.71,
    intercept=23.69,
    direction="cleavage",
    cleavage_reactions=["NH2-H_cle_0001 to NH2-H_cle_0002"],
    synthesis_reactions=[])

bep(id="NH-H",
    slope=0.52,
    intercept=19.78,
    direction="cleavage",
    cleavage_reactions=["NH-H_cle_0001 to NH-H_cle_0002"],
    synthesis_reactions=[])

bep(id="N-H",
    slope=0.29,
    intercept=23.23,
    direction="cleavage",
    cleavage_reactions=["N-H_cle_0001"],
    synthesis_reactions=["N-H_syn_0001"])