From charlesreid1

How Cantera Treats Catalysis

Cantera's Catalysis Concepts

Cantera has a couple of conceptual pieces that compose its treatment of catalysis.

First of all, Cantera treats surface reactions as occurring at the surface ONLY. This means that there are no volumetric reaction rates for heterogeneous reactions, only surface-specific reaction rates.

Site Density

The number of reaction sites per unit surface area is specified in the surface reaction XML file. This quantity is denoted the site density.

The surface reaction sites can be characterized as surface "species." For example, a catalyst may have a mechanism that involves abstraction of oxygen or hydroxyl species onto the surface, resulting in three surface species:

  • M
  • M-O
  • M-OH

These surface species then participate in surface reactions, just as gas species participate in gas reactions. Therefore, just as ordinary differential equations for gas species must be integrated in time, so too must ODEs for surface species be integrated in time.


To characterize the amounts of surface species, Cantera uses a quantity called a coverage. Using the example species given above (M, MO, MOH), the coverage of species M represents the fraction of all surface sites that are M surface sites (as opposed to MO or MOH surface sites).

Like the site density, the initial surface species coverages are specified in the surface reaction XML file.

In order to track surface species, differential equations describing the surface species coverages are integrated in time. These coverages can then be multiplied by the site density to yield a site density for each surface species (which is basically like "moles" of surface species).

The number of "moles" of solid species A is the product of the surface coverage (i.e., the "mole fraction") and the site density (i.e., the "total moles"):

N_{A} = \theta_{A} \varrho

where N_{A} is the total "moles" of solid species A, \theta_{A} is the coverage of species A, and \varrho is the site density of the solid.

More details, as well as information about particular classes or blocks of code where surface coverage is dealt with in Cantera, are given at the Cantera/Surface Coverage page.

Catalysis in the Cantera Source Code

In the Cantera source code, surface phases are carefully managed in a way that separates the reactors, which use the reacting surfaces to compute heterogeneous reaction source terms, from the surface phase itself. This is mainly to ensure memory is handled properly.

The SurfPhase class stores information about a given surface; the Kinetics class stores information about the kinetics and reaction network associated with a given surface.

The Wall class wraps the SurfPhase class and the Kinetics class, keeping track of which side of the wall is associated with which kinetic mechanism or surface phase.

The Reactor class is then able to interface with the Wall class, avoiding issues with trying to manage the memory of the SurfPhase or Kinetics classes itself. The Wall class, in turn, provides extra functionality for interfacing with reactors (such as storing information about which side of a wall is associated with which kinetic mechanism).

See the Cantera/Surface Coverage page for more info/details.