From charlesreid1

Line 156: Line 156:
* Numerics (outside of Cantera)
* Numerics (outside of Cantera)
* Optimization
* 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
* [[Cantera/Composition Helper Functions]] - defining helper functions to wrap Cantera

Revision as of 11:37, 31 March 2014

Outline

Introduction: Cantera in Short

Part I: Cantera in Depth

Part II: Cantera with Python

Part III: Cantera for Engineers


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
  • 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

Transport

  • 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

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?

Optimization

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

Mechanics


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

Separations/mass transfer unit ops

  • Distillation columns - series of reactors operating at steady state