From charlesreid1

More information on how Cantera deals with surface coverage computation here: Cantera/Surface Coverage

This page is more about the computation of the reaction rate source terms for surface reactions.

Gas vs Surface Source Terms

In a gas-surface model, you use an ordinary differential equation to describe the evolution of the gas phase composition and the surface coverages.

When you are accounting for surface phase reactions, the surface reaction source terms end up on the RHS of ODEs dictating gas and surface composition.

Gas Source Terms from Surface Reactions

A surface reaction can either be a consumption reaction (adsorption of a gas species) or a generation reaction (desorption of a gas species). Summing over all generation and consumption of a gas species for all surface reactions yields the net production rate for that species.

The gas phase source terms are computed according to the formula:

Gas Source Terms Code

The gas phase source terms resulting from surface reactions are computed in Reactor::evalEqs()

Computation of surface production rates

Loop over each gas species to compute final source term

Surface Source Terms from Surface Reactions

A surface reaction can either consume or generate surface species. Summing over all generation and consumption of a particular surface species yields the net production rate for surface species.

The surface phase source terms are computed according to the formula:

Surface Phase Source Terms Code

The surface phase source terms resulting from surface reactions are computed in Reactor::evalEqs().

This calls InterfaceKinetics::getNetProductionRate()

This calls InterfaceKinetics::updateROP() and then calls ReactionStoichMgr::getNetProductionRates

Computation of surface production rates

Loop over each surface species to compute final source term

Source Terms Code

Surface phase is connected to gas phase:

g = importPhase('Example.cti', 'gas')
s = importInterface('Example.cti', 'surf', [g])

Production rates are for both gas and surface species:

shape( s.getNetProductionRates() ) == g.nSpecies() + s.nSpecies()