From charlesreid1

Line 84: Line 84:


=Numerics=
=Numerics=
[[Cantera/Fipy PFR]]


* Division of "numerics" layer and "constitutive equations" layer
* Division of "numerics" layer and "constitutive equations" layer

Revision as of 05:02, 13 January 2014

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.)

Kinetics

  • Discussion of kinetics
    • Separate from reactors themselves
    • Reaction rate source terms
    • Kinetic mechanisms
      • A very simple reaction
      • A very simple reaction network
      • A more complex reaction network
    • 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.)

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
  • Single phase
    • Mixtures
    • Equations of state
    • Equilibrium
    • Piston-cylinder systems
  • Multiphase
    • What thermodynamics is there for multiphase systems?
    • Heat transfer to-from surface

Transport

  • Follow BSL a bit on this one...
  • Heat transfer
    • Heat diffusivity
    • Heat transfer coefficients
  • Momentum transfer
    • Viscosity
  • 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

  • Description of generic Cantera reactors, canonical CHE reactor types
  • Cantera/Reactor Equations General Cantera reactor equations
  • Integral vs. differential reactors
  • Isothermal vs. non-isothermal reactors
  • Heterogeneous vs. homogeneous
  • Transport effects in reactors
  • Fogler, Froment/Bischoff, Belfiore

Numerics

Cantera/Fipy PFR

  • Division of "numerics" layer and "constitutive equations" layer
  • Topics
    • Newton's method
    • Linear algebra
    • Jacobians
    • ODEs
  • Zero-dimensional ordinary differential equations
    • Problem type
    • Problem solution techniques
  • One-dimensional ordinary differential equations
    • Simplification of a more complex problem (PDE) with assumptions like axisymmetric flow
  • Initial value problems
  • Boundary value problems
  • Advanced boundary conditions
  • Surface coverage equations
    • Surface species treated as control volume properties
    • Packaged up into the Reactor's solution vector
    • The hack that makes a boundary condition into part of the domain
  • Strategies for coupling Cantera with CFD
    • 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

Optimization

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

Mechanics

  • Debugging
    • Diving in
    • Picking apart
  • Hacking