Cantera/CTI Files: Difference between revisions
From charlesreid1
| Line 90: | Line 90: | ||
There are a variety of forms of surface reactions, each with a different specification method. | There are a variety of forms of surface reactions, each with a different specification method. | ||
===Arrhenius Kinetics=== | ===Surface Reactions with Arrhenius Kinetics=== | ||
The plain/default way, which uses Arrhenius kinetics: | The plain/default way, which uses Arrhenius kinetics: | ||
| Line 116: | Line 116: | ||
</pre> | </pre> | ||
===Coverage-Dependent | ===Surface Reactions with Coverage-Dependent Rates=== | ||
The reaction rate may have some kind of... I dunno... coverage dependency, I guess? | The reaction rate may have some kind of... I dunno... coverage dependency, I guess? | ||
| Line 146: | Line 146: | ||
</pre> | </pre> | ||
===Sticking Equations=== | ===Surface Reactions with Sticking Equations=== | ||
No idea how this works. | No idea how this works. | ||
| Line 154: | Line 154: | ||
</pre> | </pre> | ||
===Duplicate Reactions=== | ===Surface Reactions with Falloff=== | ||
No idea. | |||
===Surface Reactions with Duplicate Reactions=== | |||
<pre> | <pre> | ||
Revision as of 00:41, 29 January 2014
CTI = CanTera Input file
CTI files use a custom markup language to specify information about the kinetics.
Division of CTI Files
The file can be divided into multiple parts:
- Phase specification
- Species
- Gas species
- Surface species
- Reactions
- Gas reactions
- Surface reactions
Units Specification
The units are the first thing defined in the file:
units(length = "cm", time = "s", quantity = "mol", act_energy = "J/mol")
Phase Specification
Gas
ideal_gas(name = "gas",
elements = "O H C N Ar",
species = """gri30: H2 H O O2 OH
H2O HO2 H2O2
C CH CH2 CH2(S) CH3 CH4 CO CO2
HCO CH2O CH2OH CH3O CH3OH C2H C2H2 C2H3
C2H4 C2H5 C2H6 HCCO CH2CO HCCOH AR N2""",
transport = 'Mix',
reactions = 'gri30: all',
options = ['skip_undeclared_elements',
'skip_undeclared_species'],
initial_state = state(temperature = 300.0, pressure = OneAtm,
mole_fractions = 'CH4:0.095, O2:0.21, AR:0.79')
)
Interface (Surface)
ideal_interface(name = "Pt_surf",
elements = " Pt H O C ",
species = """ PT(S) H(S)
H2O(S) OH(S) CO(S) CO2(S) CH3(S)
CH2(S)s CH(S) C(S) O(S) """,
phases = "gas",
site_density = 2.7063e-9,
reactions = "all",
initial_state = state(temperature = 900.0,
coverages = 'O(S):0.0, PT(S):0.5, H(S):0.5')
)
Species Specification
species(name = "CH3OCHO",
atoms = " C:2 H:4 O:2 ",
thermo = (
NASA( [ 300.00, 1452.00], [ 2.435262000E+00, 1.819483250E-02,
1.912365900E-06, -8.442489450E-09, 2.617589100E-12,
-4.465147320E+04, 1.495222650E+01] ),
NASA( [ 1452.00, 5000.00], [ 1.065691850E+01, 9.381127230E-03,
-3.376772060E-06, 5.424555960E-10, -3.222953300E-14,
-4.846517580E+04, -3.275794430E+01] )
),
transport = gas_transport(
geom = "nonlinear",
diam = 4.037,
well_depth = 395,
dipole = 1.3,
rot_relax = 1),
note = "4/15/ 8 THERM"
)
Reaction Specification
Surface Reactions
Any surface reaction can be specified in the cti file using the surface_reaction function. The usage depends on the surface reaction form.
There are a variety of forms of surface reactions, each with a different specification method.
Surface Reactions with Arrhenius Kinetics
The plain/default way, which uses Arrhenius kinetics:
surface_reaction( "A(s) => B(s) + C", [A, b, E])
where:
- A(s), B(s), C - species whose properties are defined in the species section (see above)
- A - Arrhenius parameter, pre-exponential factor (specified in units of...)
- b - Arrhenius parameter, degree of temperature influence on kinetic rate constant
- E - Arrhenius parameter, activation energy of reaction
The Arrhenius expression is:
$ k = A T^b \exp \left( \frac{E}{RT} \right) $
So, for example, a catalytic reaction where H2O (adsorbed onto a platinum surface) desorbs would look like this:
surface_reaction( "H2O(S) => H2O + PT(S)", [1.00000E+13, 0, 40300])
Surface Reactions with Coverage-Dependent Rates
The reaction rate may have some kind of... I dunno... coverage dependency, I guess?
I'm still working through this. This uses some kind of expression containing a, m, and e:
surface_reaction( "A(s) => B(s) + C", Arrhenius(A, b, E, coverage=['A(s)', surface_a, surface_m, surface_e])
Attempting to uncover how this is dealt with:
importKinetics::getCoverageDependence() rdata.cov vector contains coverage-related parameters/information rdata.cov.push_back(species_index) rdata.cov.push_back(a) rdata.cov.push_back(m) rdata.cov.push_back(e)
and then
InterfaceKinetics::addElementaryReaction
if r.cov.size > 3:
this rxn is dependent on coverage
register rxn
Surface Reactions with Sticking Equations
No idea how this works.
surface_reaction( "OH + PT(S) => OH(S)", stick(1.00000E+00, 0, 0))
Surface Reactions with Falloff
No idea.
Surface Reactions with Duplicate Reactions
surface_reaction( "O2 + 2 PT(S) => 2 O(S)", Arrhenius(1.80000E+21, -0.5, 0),
options = 'duplicate')