Cantera/CTI Files/Phases
From Charles Martin Reid
Main Cantera page on CTI files: Cantera/CTI Files
Contents |
Theory of Phases
One of the most important rules about phases is the Gibbs phase rule (http://en.wikipedia.org/wiki/Phase_rule). This rule states that the number of degrees of freedom that must be specified for a gas to have a fixed thermodynamic state is given by the formula:
where:
- F is the number of degrees of freedom,
- C is the number of components
- P is the number of phases
Note, however, that the Gibbs phase rule only applies to one particular gas state. If we're looking at two locations at either end of a geometry with non-uniform thermodynamic states, or if we're looking at differential volumes of gas and solid catalyst, the Gibbs phase rule only applies to each individual location separately, independently.
There is more information over at the Chemical Equilibrium page, which has some lecture notes.
Phase Specification
Each phase that is used in a problem must be specified in the input file.
Multiple types of phases have multiple types of input file entries.
Any phase must specify the following information:
- Phase type
- Phase name
- Elements in phase
- Species in phase
- Reactions in phase
- Kinetics model in phase
- Transport model in phase
- Initial state of phase
- Phase options
Generally phases are specified according to the following schema:
phase_type( name = [...], elements = [...], species = [...], reactions = [...], transport = [...], initial_state = [...], options = [...] )
Specifying Phase Properties
Phase Type
The valid phase types for a CTI file are each defined as classes in the file ctml_writer.py
. Each object uses a more generic phase object as a base class. The valid phase types are:
- ideal_gas - an ideal gas mixture
- stoichiometric_solid - A solid compound or pure element. Stoichiometric solid phases contain exactly one species, which always has unit activity. The solid is assumed to have constant density. Therefore the rates of reactions involving these phases do not contain any concentration terms for the (one) species in the phase, since the concentration is always the same.
- stoichiometric_liquid - An incompressible stoichiometric liquid. Currently, there is no distinction between stoichiometric liquids and solids.
- metal - A metal.
- semiconductor - A semiconductor.
- incompressible_solid - An incompressible solid.
- lattice - (no description)
- lattice_solid - A solid crystal consisting of one or more sublattices.
- liquid_vapor - fluid with a complete liquid/vapor equation of state. This entry type selects one of a set of predefined fluids with built-in liquid/vapor equations of state. The substance_flag parameter selects the fluid. See purefluids.py for the usage of this entry type.
- redlich_kwong - A fluid with a complete liquid/vapor equation of state. This entry type selects one of a set of predefined fluids with built-in liquid/vapor equations of state. The substance_flag parameter selects the fluid. See purefluids.py for the usage of this entry type.
- ideal_interface - A chemically-reacting ideal surface solution of multiple species.
- edge - A 1D boundary between two surface phases.
Phase Name
The name of a phase
Examples
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') )
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') )
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') )