Python Interface With Units#
This interface allows users to specify physical units associated with quantities.
To do so, this interface leverages the pint
library to provide consistent unit conversion. Several examples of this interface can
be found in the samples/python
folder in the
root of the repository.
Examples that use this interface are suffixed with _units
.
The overall goal is to provide a compatible implementation of the cantera.Solution
and
cantera.PureFluid
interfaces. Please see those pages for further documentation of the
available properties.
Solution with Units#
- class cantera.with_units.Solution(infile='', name='', *, yaml=None)#
Bases:
object
This implementation of
Solution
operates with units by using thepint
library to convert between unit systems. All properties are assigned units in the standard MKS system that Cantera uses, substituting kmol instead of mol. Each property is an instance of thepint.Quantity
class.Similarly, properties must be instances of
pint.Quantity
classes when they are used for assignment to set the state. The properties may have any units, so long as the dimensions for the quantity are consistent. For example, temperatures can be provided in K, degC, degF, or degR; conversion will be done internally to Cantera’s consistent unit system.See the pint documentation for more information about using pint’s
Quantity
classes.Note: This class is experimental. It only implements methods from
ThermoPhase
. Methods from other classes are not yet supported. If you are interested in contributing to this feature, please chime in on our enhancements issue: Cantera/enhancements#174.A class for chemically-reacting solutions. Instances can be created to represent any type of solution – a mixture of gases, a liquid solution, or a solid solution, for example.
Class
Solution
derives from classesThermoPhase
,Kinetics
, andTransport
. It defines no methods of its own, and is provided so that a single object can be used to compute thermodynamic, kinetic, and transport properties of a solution.To skip initialization of the Transport object, pass the keyword argument
transport_model=None
to theSolution
constructor.The most common way to instantiate
Solution
objects is by using a phase definition, species and reactions defined in an input file:gas = ct.Solution('gri30.yaml')
If an input file defines multiple phases, the corresponding key in the
phases
map can be used to specify the desired phase via thename
keyword argument of the constructor:gas = ct.Solution('diamond.yaml', name='gas') diamond = ct.Solution('diamond.yaml', name='diamond')
The name of the
Solution
object defaults to the phase identifier specified in the input file. Upon initialization of aSolution
object, a custom name can assigned via:gas.name = 'my_custom_name'
Solution
objects can also be constructed usingSpecies
andReaction
objects which can themselves either be imported from input files or defined directly in Python:spec = ct.Species.list_from_file("gri30.yaml") spec_gas = ct.Solution(thermo='ideal-gas', species=spec) rxns = ct.Reaction.list_from_file("gri30.yaml", spec_gas) gas = ct.Solution(thermo='ideal-gas', kinetics='gas', species=spec, reactions=rxns, name='my_custom_name')
where the
thermo
andkinetics
keyword arguments are strings specifying the thermodynamic and kinetics model, respectively, andspecies
andreactions
keyword arguments are lists ofSpecies
andReaction
objects, respectively. Note that importing the reactions from a YAML input file requires aKinetics
object containing the species, as shown.Types of underlying models that form the composite
Solution
object are queried using thethermo_model
,kinetics_model
andtransport_model
attributes; further, thecomposite
attribute is a shorthand returning a tuple containing the types of the three constitutive models.For non-trivial uses cases of this functionality, see the examples extract_submechanism.py mechanism_reduction.py.
In addition,
Solution
objects can be constructed by passing the text of the YAML phase definition in directly, using theyaml
keyword argument:yaml_def = ''' phases: - name: gas thermo: ideal-gas kinetics: gas elements: [O, H, Ar] species: - gri30.yaml/species: all reactions: - gri30.yaml/reactions: declared-species skip-undeclared-elements: true skip-undeclared-third-bodies: true state: {T: 300, P: 1 atm} ''' gas = ct.Solution(yaml=yaml_def)
PureFluid Phases With Units#
The following convenience classes are available to create PureFluid
objects with the indicated equation of state:
- class cantera.with_units.CarbonDioxide#
Bases:
Create a
PureFluid
object using the equation of state for carbon dioxide.The object returned by this method implements an accurate equation of state for carbon dioxide that can be used in the liquid, vapor, saturated liquid/vapor, and supercritical regions of the phase diagram. The equation of state is taken from
W. C. Reynolds, Thermodynamic Properties in SI: graphs, tables, and computational equations for forty substances. Stanford: Stanford University, 1979. Print.
For more details, see classes PureFluidPhase and tpx::CarbonDioxide in the Cantera C++ source code documentation.
- class cantera.with_units.Heptane#
Bases:
Create a
PureFluid
object using the equation of state for heptane.The object returned by this method implements an accurate equation of state for n-heptane that can be used in the liquid, vapor, saturated liquid/vapor, and supercritical regions of the phase diagram. The equation of state is taken from
W. C. Reynolds, Thermodynamic Properties in SI: graphs, tables, and computational equations for forty substances. Stanford: Stanford University, 1979. Print.
For more details, see classes PureFluidPhase and tpx::Heptane in the Cantera C++ source code documentation.
- class cantera.with_units.Hfc134a#
Bases:
Create a
PureFluid
object using the equation of state for HFC-134a.The object returned by this method implements an accurate equation of state for refrigerant HFC134a (R134a) that can be used in the liquid, vapor, saturated liquid/vapor, and supercritical regions of the phase diagram. Implements the equation of state given in:
R. Tillner-Roth, H. D. Baehr. An International Standard Formulation for The Thermodynamic Properties of 1,1,1,2-Tetrafluoroethane (HFC-134a) for Temperatures From 170 K to 455 K and Pressures up to 70 MPa. J. Phys. Chem. Ref. Data, Vol. 23, No. 5, 1994. pp. 657–729. http://dx.doi.org/10.1063/1.555958
For more details, see classes PureFluidPhase and tpx::HFC134a in the Cantera C++ source code documentation.
- class cantera.with_units.Hydrogen#
Bases:
Create a
PureFluid
object using the equation of state for hydrogen.The object returned by this method implements an accurate equation of state for hydrogen that can be used in the liquid, vapor, saturated liquid/vapor, and supercritical regions of the phase diagram. The equation of state is taken from
W. C. Reynolds, Thermodynamic Properties in SI: graphs, tables, and computational equations for forty substances Stanford: Stanford University, 1979. Print.
For more details, see classes PureFluidPhase and tpx::hydrogen in the Cantera C++ source code documentation.
- class cantera.with_units.Methane#
Bases:
Create a
PureFluid
object using the equation of state for methane.The object returned by this method implements an accurate equation of state for methane that can be used in the liquid, vapor, saturated liquid/vapor, and supercritical regions of the phase diagram. The equation of state is taken from
W. C. Reynolds, Thermodynamic Properties in SI: graphs, tables, and computational equations for forty substances Stanford: Stanford University, 1979. Print.
For more details, see classes PureFluidPhase and tpx::methane in the Cantera C++ source code documentation.
- class cantera.with_units.Nitrogen#
Bases:
Create a
PureFluid
object using the equation of state for nitrogen.The object returned by this method implements an accurate equation of state for nitrogen that can be used in the liquid, vapor, saturated liquid/vapor, and supercritical regions of the phase diagram. The equation of state is taken from
W. C. Reynolds, Thermodynamic Properties in SI: graphs, tables, and computational equations for forty substances Stanford: Stanford University, 1979. Print.
For more details, see classes PureFluidPhase and tpx::nitrogen in the Cantera C++ source code documentation.
- class cantera.with_units.Oxygen#
Bases:
Create a
PureFluid
object using the equation of state for oxygen.The object returned by this method implements an accurate equation of state for oxygen that can be used in the liquid, vapor, saturated liquid/vapor, and supercritical regions of the phase diagram. The equation of state is taken from
W. C. Reynolds, Thermodynamic Properties in SI: graphs, tables, and computational equations for forty substances Stanford: Stanford University, 1979. Print.
For more details, see classes PureFluidPhase and tpx::oxygen in the Cantera C++ source code documentation.
- class cantera.with_units.Water(backend='Reynolds')#
Bases:
Create a
PureFluid
object using the equation of state for water and theWaterTransport
class for viscosity and thermal conductivity.The object returned by this method implements an accurate equation of state for water, where implementations are selected using the
backend
switch.For the
Reynolds
backend, the equation of state is taken fromW. C. Reynolds, Thermodynamic Properties in SI: graphs, tables, and computational equations for forty substances. Stanford: Stanford University, 1979. Print.
which can be used in the liquid, vapor, saturated liquid/vapor, and supercritical regions of the phase diagram.
The
IAPWS95
backend implements an IAPWS (International Association for the Properties of Water and Steam) formulation for thermodynamic properties taken fromW. Wagner, A. Pruss, The IAPWS Formulation 1995 for the Thermodynamic Properties of Ordinary Water Substance for General and Scientific Use, J. Phys. Chem. Ref. Dat, 31, 387, 2002.
which currently only implements liquid and supercritical regions.
In both cases, formulas for transport are taken from
J. V. Sengers, J. T. R. Watson, Improved International Formulations for the Viscosity and Thermal Conductivity of Water Substance, J. Phys. Chem. Ref. Data, 15, 1291, 1986.
For more details, see classes PureFluidPhase, tpx::water, WaterSSTP and WaterTransport in the Cantera C++ source code documentation.
The full documentation for the PureFluid
class and its properties is here:
- class cantera.with_units.PureFluid(infile, name='', *, yaml=None, **kwargs)#
Bases:
object
This implementation of
PureFluid
operates with units by using thepint
library to convert between unit systems. All properties are assigned units in the standard MKS system that Cantera uses, substituting kmol instead of mol. Each property is an instance of thepint.Quantity
class.Similarly, properties must be instances of
pint.Quantity
classes when they are used for assignment to set the state. The properties may have any units, so long as the dimensions for the quantity are consistent. For example, temperatures can be provided in K, degC, degF, or degR; conversion will be done internally to Cantera’s consistent unit system.See the pint documentation for more information about using pint’s
Quantity
classes.A pure substance that can be a gas, a liquid, a mixed gas-liquid fluid, or a fluid beyond its critical point.