Cantera Outline
From charlesreid1
Contents
Outline
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.)
Thermodynamics
- 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
- Cantera/Gases - information about gas phase objects in Cantera
- Cantera/Surfaces - information about surface phase objects in Cantera
- 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
Kinetics
- Discussion of kinetics
- Cantera/Reaction Rate Source Terms
Reaction rate source terms, separate from reactors
- Cantera/Reaction Rate Source Terms
- Cantera/Kinetic Mechanisms
Kinetic mechanisms- Theory of chemical reactions
- Definitions of quantities involved in chemical reactions
- Theoretical information needed (by Cantera) to define reaction mechanisms
- Cantera/CTI Files Specification of reaction kinetics in CTI files (useful info here: http://www.et.byu.edu/~tom/classes/641/Cantera/InputFile/definingphases.pdf)
- Cantera/CTI Files/Phases Specification of phases
- Cantera/CTI Files/Species Specification of species
- Cantera/CTI Files/Reactions Specification of reactions
- Specification of reaction kinetics in XML files
- Cantera/Kinetic Mechanisms
- Cantera kinetics examples
- Cantera/Simple Reaction
A very simple reaction - Cantera/Simple Reaction Network A very simple reaction network
- Cantera/Complex Reaction Network A more complex reaction network
- Cantera/Simple Reaction
- Single phase kinetics
- Source code abstraction
- Examples of obtaining reaction rates
- Graphene - how to really USE this information
- Multiphase surface kinetics
- Cantera/Surface Coverage
Surface coverage, site density, formulation of approach - Source code abstraction - Walls vs. SurfPhase vs. (etc.)
- Cantera/Surface Coverage
- Cantera kinetics examples
Transport
- BSL
- Mass transfer
- Cantera/Diffusion
Mixture vs. multicomponent diffusion - Cantera/Diffusion Coefficients - Diffusion coefficient models
- Mass transfer coefficients
- Cantera/Diffusion
- Heat transfer
- Heat diffusivity
- Heat transfer coefficients
- Momentum transfer
- 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
Theory:
- Description of generic Cantera reactors, canonical CHE reactor types
Practice: introduction to reactors
- Cantera/Reactors - general information about reactors, how to create them, how to turn energy equation on/off, really brief "how it works"
- Cantera/Batch Reactors
- Cantera/Stirred Tank Reactors
- Cantera/Plug Flow Reactors - how to create them - good opportunity to demonstrate object-oriented programming, by creating a class that is a PFR.
Cantera Reactors In-Depth
Theory:
- Cantera/Reactor Equations
General Cantera reactor equations - Cantera/Integral and Differential Reactors
Integral vs. differential reactors - Cantera/Isothermal and Nonisothermal Reactors
Isothermal vs. non-isothermal reactors
- 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
- Cantera/Fipy PFR
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
- Cantera/Composition Helper Functions - defining helper functions to wrap Cantera
- Object oriented reactor extension example - aidt? adiabatic flame temp?
Optimization
- Not going into too much depth
- Optimizing kinetic parameters to fit data
- Optimizing other variables to maximize reactor performance
Mechanics
- Cantera/Debugging Cantera
Debugging Cantera - Cantera/Debugging Cantera from Python
Debugging Cantera from Python
- Cantera/Extending_C_API
Hacking, extending C API
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
Flags
Cantera all pages on the wiki related to the Cantera combustion microkinetics and thermodynamics (a.k.a. "thermochemistry") software.
Cantera · Cantera Outline · Category:Cantera
Outline of Cantera topics: Cantera Outline · Cantera Outline/Brief Understanding Cantera's Structure: Cantera Structure Cantera from Matlab: Using_Cantera#Matlab Cantera from Python: Using_Cantera#Python Cantera from C++: Using_Cantera#C++ Cantera + Fipy (PDE Solver): Fipy and Cantera/Diffusion 1D Cantera Gas Objects: Cantera/Gases Cantera 1D Domains, Stacks: Cantera_One-D_Domains · Cantera_Stacks Cantera Gas Mixing: Cantera_Gas_Mixing
Topics in Combustion: Diffusion: Cantera/Diffusion · Cantera/Diffusion Coefficients Sensitivity Analysis: Cantera/Sensitivity Analysis Analysis of the Jacobian Matrix in Cantera: Jacobian_in_Cantera Chemical Equilibrium: Chemical_Equilibrium Kinetic Mechanisms: Cantera/Kinetic_Mechanisms Reactor Equations: Cantera/Reactor_Equations Differential vs. Integral Reactors: Cantera/Integral_and_Differential_Reactors Effect of Dilution on Adiabatic Flame Temperature: Cantera/Adiabatic_Flame_Temperature_Dilution
Topics in Catalysis: Cantera for Catalysis: Cantera_for_Catalysis Steps for Modeling 0D Multiphase Reactor: Cantera_Multiphase_Zero-D Reaction Rate Source Terms: Cantera/Reaction_Rate_Source_Terms Surface coverage: Cantera/Surface_Coverage Surface reactions: Cantera/Surface_Reactions
Cantera Input Files: Chemkin file format: Chemkin CTI files: Cantera/CTI_Files · Cantera/CTI_Files/Phases · Cantera/CTI_Files/Species · Cantera/CTI_Files/Reactions
Hacking Cantera: Pantera (monkey patches and convenience functions for Cantera): Pantera Extending Cantera's C API: Cantera/Extending_C_API Extending Cantera with Python Classes: Cantera/Adding Python Class Debugging Cantera: Cantera/Debugging_Cantera Debugging Cantera from Python: Cantera/Debugging_Cantera_from_Python Gas Mixing Functions: Cantera_Gas_Mixing Residence Time Reactor (new Cantera class): Cantera/ResidenceTimeReactor
Resources: Cantera Resources: Cantera Resources Cantera Lecture Notes: Cantera_Lecture
Category:Cantera · Category:Combustion Category:C++ · Category:Python Flags · Template:CanteraFlag · e |
Installing Cantera notes on the wiki related to installing the Cantera thermochemistry software library.
Cantera Installation: Mac OS X 10.5 (Leopard): Installing_Cantera#Leopard Mac OS X 10.6 (Snow Leopard): Installing_Cantera#Snow_Leopard · Cantera2 Config Mac OS X 10.7 (Lion): Installing_Cantera#Lion Mac OS X 10.8 (Mountain Lion): Installing_Cantera#Mountain_Lion Ubuntu 12.04 (Precise Pangolin): Installing_Cantera#Ubuntu Windows XP: Installing_Cantera#Windows_XP Windows 7: Installing_Cantera#Windows_7
Cantera Preconfig: In old versions of Cantera, a preconfig file was used to specify library locations and options. Mac OS X 10.5 (Leopard) preconfig: Cantera_Preconfig/Leopard_Preconfig Mac OS X 10.6 (Snow Leopard) preconfig: Cantera_Preconfig/Snow_Leopard_Preconfig Mac OS X 10.8 (Mountain Lion) preconfig: Cantera_Config/MountainLion_SconsConfig Ubuntu 12.04 (Precise Pangolin) preconfig: Cantera_Config/Ubuntu1204_SconsConfig Flags · Template:InstallingCanteraFlag · e |