From charlesreid1


Introduction: Cantera in Short

Part I: Cantera Core

Part II: Cantera for Python

Part III: Cantera for Reaction Engineering

Overview of Cantera

  • Capabilities
    • High level division of Cantera's capabilities
    • Zero-D, One-D, phase objects, numerics
  • Division of capabilities should roughly follow how Cantera source code is divided
    • Apps - utilities for converting between Chemkin and Cantera file formats, parsing input files, comparing output files, etc.
    • Base - more utilities for array storage, printing and logging, XML file parsing, Cantera errors/exceptions,
    • Clib - code for C API
    • Converters
    • Equil
    • Fortran - code for Fortran API
    • Kinetics - classes for getting/setting/calculating reaction network quantities (net production rate source terms, reaction rate parameters, etc.)
    • Matlab - code for Matlab API
    • Numerics - classes for solving ordinary differential equations, evaluating Jacobians, Newton methods, constructing and solving matrices, etc.
    • OneD - classes relating to one-dimensional simulations (domains, stacks, one-dimensional flame simulations, etc.)
    • Python - code for Python API
    • Spectra
    • Thermo
    • TPX
    • Transport
    • ZeroD - classes relating to zero-dimensional Reactors (Reactor, Wall, etc.)


  • Somewhere in our algorithm, looping over domain (or for the single reactor control volume), and we're saying, "update thermo and transport parameters" - focus on how this is being done, what classes its using, what capabilities are available
  • Phase objects
  • Single phase gas calculations
    • Temperature/power calculations
    • Basic Python numerics + simple Cantera gas stuff
    • Isenthalpic valve drops
    • Plain reactors: piston-cylinder problems
    • Cantera/Phase Equilibrium Solvers for determining gas equilibrium state (e.g., you set U, you get T)
  • Introductory CHEE type calculations
    • Solving simple matrix systems, using Cantera's MW/density/properties functionality


  • Discussion of kinetics


  • BSL
  • Heat transfer
    • Heat diffusivity
    • Heat transfer coefficients
  • General discussion: non-dimensional analysis, how it relates to Cantera
    • Prandtl matlab examples - comparing transport properties (Prandtl number) for mixture-averaged and multicomponent models

Reactor Design

Overview of Cantera Reactors


  • Description of generic Cantera reactors, canonical CHE reactor types

Practice: introduction to reactors

Cantera Reactors In-Depth


  • Heterogeneous vs. homogeneous
  • Transport effects in reactors
  • Fogler, Froment/Bischoff, Belfiore

Hacking Cantera Reactors

Focus on use of Python to extend the Reactor object itself, so that you don't have to redefine everything.

Simple "EnhancedReactor" that uses an inlet dictionary.

Simple "SurfaceReactor" that stores surface information.

(Illustrate test-driven development: write intuitive code to simulate the reactors, and design the class around that.)

Cantera Numerics

  • Cantera/Structure Structure of Cantera: "numerics" layer and "constitutive equations" layer
  • Ordinary differential equations
    • Cantera formulation, reactor equations
    • ODE as primary problem type being solved in Cantera
    • Cantera numerics, ODE solver sophistication
    • Have ALREADY shown, with a simple Fipy time integrator, that Sundials has a lot of sophistication... that sophistication is NECESSARY for kinetics/reaction equations
  • Surface coverage equations
    • Surface species treated as control volume properties
    • Packaged up into the Reactor's solution vector
    • The Green's Function hack that makes a boundary condition into part of the domain
  • Partial differential equations
    • Cantera solutions to one-dimensional systems
    • Assumptions being made for each problem type (axisymmetric, stagnation, etc.)
  • Assorted numerical topics
    • Newton's method
    • Linear algebra
    • Jacobians - Sandia report with definitions of Jacobians
  • Initial value problems
  • Boundary value problems
  • Advanced boundary conditions
  • Strategies for coupling Cantera with CFD
    • Cantera/Fipy PFR external numerical library for solving spatial boundary value problem
    • Interfacing with Chemkin-like programs (Fluent)
    • Constructing your own numerical ODE/PDE solver
    • Scipy: simple kinetic equation integration using Scipy
    • Fipy: simple diffusion problem, coupling with Cantera
    • Fipy: more complex reactor equation(s) and coupling with Cantera

Using Cantera with Python

  • Strategies for object-oriented Python, particularly as applied to physics problems
  • Strategies for combining Python-related libraries/modules/utilities with Cantera
    • matplotlib
    • numpy
    • itertools
    • pandas
  • Numerics (outside of Cantera)
  • Optimization
  • Creating bottled gases - ways of conveniently wrapping gas objects, without loading XML file every single time, to allow for quick creation of a gas
  • Object oriented reactor extension example - aidt? adiabatic flame temp?


  • Not going into too much depth
  • Optimizing kinetic parameters to fit data
  • Optimizing other variables to maximize reactor performance


Cantera for Engineers

Throughout the coverage of the core capabilities of Cantera, we've covered a lot of theoretical aspects of what Cantera does and how it works

Now would like to supplement with some illustrative engineering calculations that use these lower-level constitutive models for practical engineering design

Revisit structure of everything else, but show how you can use each feature to do practical engineering calculations

Start with gases only:

  • heat capacities, integration, evaluation of physical properties
  • creating gas mixtures
  • equilibrating gases
  • reaction rates, rate constants, molecular weights, what reacts into what, stoichiometric coefficients
  • all that bookkeeping stuff

Move on to non-reacting reactors:

  • piston-cylinder problems
  • heaters
  • coolers
  • etc.

Modeling piston-cylinder problems

Modeling heat duties

Equilibrium thermodynamics

  • the Delta-G problem from CHE phase equilibria, surface minimization, etc.

Reacting reactors

  • engineering calculations related to reacting reactors
  • wrapping the simple reactor calculations for actual engineering design calculations

Cantera/Adiabatic Flame Temperature Dilution - investigating the effect of dilution on adiabatic flame temperature with nitrogen and carbon dioxide

Separations/mass transfer unit ops

  • Distillation columns - series of reactors operating at steady state