Modeling Phases in Cantera

Here, we describe some of the most commonly-used phase models in Cantera.

Bulk, Three-Dimensional Phases

Ideal Gas Mixtures

Far and away, the most commonly-used phase model in Cantera is the ideal_gas() model. Many combustion and CVD simulations make use of reacting ideal gas mixtures. These can be defined using the ideal_gas() entry. The Cantera ideal gas model allows any number of species, and any number of reactions among them. It supports all of the options in the widely-used model described by Kee et al. [1], plus some additional options for species thermodynamic properties and reaction rate expressions.

An example of an ideal_gas() entry is shown below:

          elements='N O Ar',
          species='gri30: N2 O2 N O NO NO2 N2O AR',
                              pressure=(1.0, 'atm'),
                              mole_fractions='N2:0.78, O2:0.21, AR:0.01'))

This entry defines an ideal gas mixture that contains 8 species, the definitions of which are imported from dataset gri30 (file gri30.xml). All reactions defined in the file are to be included, transport properties are to be computed using the mixture-averaged rule, and the state of the gas is to be set initially to 500 K, 1 atm, and a composition that corresponds to air.

Transport Models

Two transport models are available for use with ideal gas mixtures. The first is a multicomponent transport model that is based on the model described by Dixon-Lewis [2] (see also Kee et al. [3]). The second is a model that uses the mixture-averaged rule. To select the multicomponent model, set the transport field to the string 'Multi', and to select the mixture-averaged model, set it to the string 'Mix':

          # ...
          transport="Multi", # use multicomponent formulation
          # ...

          # ...
          transport="Mix", # use mixture-averaged formulation
          # ...

Stoichiometric Solid

A stoichiometric_solid() is one that is modeled as having a precise, fixed composition, given by the composition of the one species present. A stoichiometric solid can be used to define a condensed phase that can participate in heterogeneous reactions. (Of course, there cannot be homogeneous reactions, since the composition is fixed.)

                     density=(2.2, 'g/cm3'),
                                         pressure=(1.0, 'atm')))

In the example above, the definition of the species 'C(gr)' must appear elsewhere in the input file.

Stoichiometric Liquid

A stoichiometric liquid differs from a stoichiometric solid in only one respect: the transport manager computes the viscosity as well as the thermal conductivity.


Cantera presently implements a simple model for an interface between phases that treats it as a two-dimensional ideal solution of interfacial species. There is a fixed site density \(n^0\), and each site may be occupied by one of several adsorbates, or may be empty. The chemical potential of each species is computed using the expression for an ideal solution:

\begin{equation*} \mu_k = \mu^0_k + \hat{R}T \log \theta_k, \end{equation*}

where \(\theta_k\) is the coverage of species \(k\) on the surface. The coverage is related to the surface concentration \(C_k\) by

\begin{equation*} \theta_k = \frac{C_k n_k}{n^0} , \end{equation*}

where \(n_k\) is the number of sites covered or blocked by species \(k\).

The entry type for this interface model is ideal_interface(). Additional interface models may be added to allow non-ideal, coverage-dependent properties.

Defining an interface is much like defining a phase. There are two new fields: phases and site_density. The phases field specifies the bulk phases that participate in the heterogeneous reactions. Although in most cases this string will list one or two phases, no limit is placed on the number. This is particularly useful in some electrochemical problems, where reactions take place near the triple-phase boundary where a gas, an electrolyte, and a metal all meet.

The site_density field is the number of adsorption sites per unit area.

Another new aspect is in the embedded state() entry in the initial_state field. When specifying the initial state of an interface, the state() entry has a field coverages, which can be assigned a string specifying the initial surface species coverages:

                elements='Si H',
                species='s* s-SiH3 s-H',
                phases='gas bulk-Si',
                site_density=(1.0e15, 'molec/cm2'),

The State Entry

The initial state of either a phase or an interface may be set using an embedded state() entry. Note that only one of (pressure, density) may be specified, and only one of (mole_fractions, mass_fractions, coverages).


[1] R. J. Kee, F. M. Rupley, and J. A. Miller. Chemkin-II: A Fortran chemical kinetics package for the analysis of gasphase chemical kinetics. Technical Report SAND89-8009, Sandia National Laboratories, 1989.
[2] G. Dixon-Lewis. Flame structure and flame reaction kinetics, II: Transport phenomena in multicomponent systems. Proc. Roy. Soc. A, 307:111—135, 1968.
[3] R. J. Kee, M. E. Coltrin, P. Glarborg, and H. Zhu. Chemically Reacting Flow: Theory and Practice. 2nd Ed. John Wiley and Sons, 2017.