Cantera/Gases
From charlesreid1
Some scattered notes on Cantera gas objects.
Contents
Theory
One of the most important rules about phases is the Gibbs phase rule (http://en.wikipedia.org/wiki/Phase_rule). This rule states that the number of degrees of freedom that must be specified for a gas to have a fixed thermodynamic state is given by the formula:
where:
- F is the number of degrees of freedom,
- C is the number of components
- P is the number of phases
Note, however, that the Gibbs phase rule only applies to one particular gas state. If we're looking at two locations at either end of a geometry with non-uniform thermodynamic states, or if we're looking at differential volumes of gas and solid catalyst, the Gibbs phase rule only applies to each individual location separately, independently.
There is more information over at the Chemical Equilibrium page, which has some lecture notes.
Specifying Thermochemical State
The Basics
For a multicomponent mixture of gas containing N components, the thermochemical state of the gas can be specified by specifying N+1 thermodynamic variables.
The gas state can be specified using the set
method, which takes a couple of keywords for specifying which variable you wish to set. The following parameters are mass-specific, meaning they are specified per unit mass:
- Pressure
P
- Temperature
T
- Specific volume
V
- Mass density
Rho
- Mass fractions
Y
- Mole fractions
X
- Enthalpy
H
- Entropy
S
- Internal energy
U
(Note that if composition is not specified, it remains unchanged.)
These keywords can be used with the phase set
method,
from Cantera import * g = GRI30() g.set(X="H2:1.0, CO2:3.0", T=298.15, P=OneAtm) g.set(P=OneAtm, Rho=0.10)
Specifying Composition
Composition can be specified either as a string, or as an array. If a specified composition sums to greater than 1, the values for each species are normalized.
Specifying composition as a string is the "human method": it ensures the user can specify which species have which quantities, in an arbitrary order.
Specifying composition as an array is the "machine method": it ensures that scripts can pass composition information quickly and easily to gases, without having to translate back and forth between strings or lose information through string formatting.
Let's make a simple gas from an H2O2 oxidation mechanism:
In [11]: g = importPhase('h2o2.cti') In [12]: g.set(T=298.15,P=OneAtm) In [13]: g.nSpecies() Out[13]: 9 In [14]: g.speciesNames() Out[14]: ['H2', 'H', 'O', 'O2', 'OH', 'H2O', 'HO2', 'H2O2', 'AR']
String Specification
We can specify composition with a string. Using mole fractions first:
In [15]: g.set(X="H2:2.0, O2:1.0")
Using mass fractions:
In [16]: g.set(Y="H2:1.0, O2:8.0")
Vector Specification
Similarly, we can specify composition with a vector. First, we set up the problem by grabbing some information:
In [26]: iO2 = g.speciesIndex('O2') In [27]: iH2 = g.speciesIndex('H2') In [28]: nsp = g.nSpecies()
Now we can set our mole fractions:
In [29]: molefracs = zeros(nsp,); molefracs[iO2] = 1; molefracs[iH2] = 2 In [30]: g.set(X=molefracs)
Alternatively, we can set the mass fractions:
In [29]: massfracs = zeros(nsp,); massfracs[iO2] = 1.0; massfracs[iH2] = 8.0 In [30]: g.set(X=massfracs)
Code
Python Interface
The Python interface implements the set()
method as a standalone function, in the following file:
/path/to/cantera/interfaces/python/Cantera/set.py
The set()
method is a wrapper function to methods that individually set thermodynamic property, like setTemperature()
or setDensity()
, or methods that set pairs of properties, like setState_UV()
or setState_HP()
.
These methods, in turn, are defined in the Phase classes, which themselves utilize the C API to specify these thermodynamic properties.
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 |