Class Phase is the base class for phases of matter, managing the species and elements in a phase, as well as the independent variables of temperature, mass density (compressible substances) or pressure (incompressible substances), species mass/mole fraction, and other generalized forces and intrinsic properties (such as electric potential) that define the thermodynamic state. More...
#include <Phase.h>
Class Phase is the base class for phases of matter, managing the species and elements in a phase, as well as the independent variables of temperature, mass density (compressible substances) or pressure (incompressible substances), species mass/mole fraction, and other generalized forces and intrinsic properties (such as electric potential) that define the thermodynamic state.
Class Phase provides information about the elements and species in a phase - names, index numbers (location in arrays), atomic or molecular weights, etc. The set of elements must include all those that compose the species, but may include additional elements.
It also stores an array of species molecular weights, which are used to convert between mole and mass representations of the composition. For efficiency in mass/mole conversion, the vector of mass fractions divided by molecular weight \( Y_k/M_k \) is also stored.
Class Phase is not usually used directly. Its primary use is as a base class for class ThermoPhase. It is not generally necessary to overloaded any of class Phase's methods, which handles both compressible and incompressible phases. For incompressible phases, the density is replaced by the pressure as the independent variable, and can no longer be set directly. In this case, the density needs to be calculated from a suitable equation of state, and assigned to the object using the assignDensity() method. This also applies for nearly-incompressible phases or phases which utilize standard states based on a T and P, in which case they need to overload these functions too.
Class Phase contains a number of utility functions that will set the state of the phase in its entirety, by first setting the composition, and then temperature and pressure. An example of this is the function Phase::setState_TPY(double t, double p, const double* y).
For bulk (3-dimensional) phases, the mass density has units of kg/m^3, and the molar density and concentrations have units of kmol/m^3, and the units listed in the methods of the Phase class assume a bulk phase. However, for surface (2-dimensional) phases have units of kg/m^2 and kmol/m^2, respectively. And for edge (1-dimensional) phases, these units kg/m and kmol/m.
Class Phase contains methods for saving and restoring the full internal state of a given phase. These are saveState() and restoreState(). These functions operate on a state vector, which by default uses the first two entries for temperature and density (compressible substances) or temperature and pressure (incompressible substances). If the substance is not pure in a thermodynamic sense (that is, it may contain multiple species), the state also contains nSpecies() entries that specify the composition by corresponding mass fractions. Default definitions can be overloaded by derived classes. For any phase, the native definition of its thermodynamic state is defined the method nativeState(), with the length of the state vector returned by by stateSize(). In addition, methods isPure() and isCompressible() provide information on the implementation of a Phase object.
A species name is referred to via speciesName(), which is unique within a given phase. Note that within multiphase mixtures (MultiPhase()), both a phase name/index as well as species name are required to access information about a species in a particular phase. For surfaces, the species names are unique among the phases.
Classes | |
struct | UndefElement |
Public Member Functions | |
Phase ()=default | |
Default constructor. | |
Phase (const Phase &)=delete | |
Phase & | operator= (const Phase &)=delete |
virtual bool | isPure () const |
Return whether phase represents a pure (single species) substance. | |
virtual bool | hasPhaseTransition () const |
Return whether phase represents a substance with phase transitions. | |
virtual bool | isCompressible () const |
Return whether phase represents a compressible substance. | |
virtual map< string, size_t > | nativeState () const |
Return a map of properties defining the native state of a substance. | |
string | nativeMode () const |
Return string acronym representing the native state of a Phase. | |
virtual vector< string > | fullStates () const |
Return a vector containing full states defining a phase. | |
virtual vector< string > | partialStates () const |
Return a vector of settable partial property sets within a phase. | |
virtual size_t | stateSize () const |
Return size of vector defining internal state of the phase. | |
void | saveState (vector< double > &state) const |
Save the current internal state of the phase. | |
virtual void | saveState (size_t lenstate, double *state) const |
Write to array 'state' the current internal state. | |
void | restoreState (const vector< double > &state) |
Restore a state saved on a previous call to saveState. | |
virtual void | restoreState (size_t lenstate, const double *state) |
Restore the state of the phase from a previously saved state vector. | |
double | molecularWeight (size_t k) const |
Molecular weight of species k . | |
void | getMolecularWeights (double *weights) const |
Copy the vector of molecular weights into array weights. | |
const vector< double > & | molecularWeights () const |
Return a const reference to the internal vector of molecular weights. | |
const vector< double > & | inverseMolecularWeights () const |
Return a const reference to the internal vector of molecular weights. | |
void | getCharges (double *charges) const |
Copy the vector of species charges into array charges. | |
virtual void | setMolesNoTruncate (const double *const N) |
Set the state of the object with moles in [kmol]. | |
double | elementalMassFraction (const size_t m) const |
Elemental mass fraction of element m. | |
double | elementalMoleFraction (const size_t m) const |
Elemental mole fraction of element m. | |
double | charge (size_t k) const |
Dimensionless electrical charge of a single molecule of species k The charge is normalized by the the magnitude of the electron charge. | |
double | chargeDensity () const |
Charge density [C/m^3]. | |
size_t | nDim () const |
Returns the number of spatial dimensions (1, 2, or 3) | |
void | setNDim (size_t ndim) |
Set the number of spatial dimensions (1, 2, or 3). | |
virtual bool | ready () const |
Returns a bool indicating whether the object is ready for use. | |
int | stateMFNumber () const |
Return the State Mole Fraction Number. | |
virtual void | invalidateCache () |
Invalidate any cached values which are normally updated only when a change in state is detected. | |
bool | caseSensitiveSpecies () const |
Returns true if case sensitive species names are enforced. | |
void | setCaseSensitiveSpecies (bool cflag=true) |
Set flag that determines whether case sensitive species are enforced in look-up operations, for example speciesIndex. | |
vector< double > | getCompositionFromMap (const Composition &comp) const |
Converts a Composition to a vector with entries for each species Species that are not specified are set to zero in the vector. | |
void | massFractionsToMoleFractions (const double *Y, double *X) const |
Converts a mixture composition from mole fractions to mass fractions. | |
void | moleFractionsToMassFractions (const double *X, double *Y) const |
Converts a mixture composition from mass fractions to mole fractions. | |
Name | |
Class Phase uses the string name to identify a phase. For phases instantiated from YAML input files, the name is the value of the corresponding key in the phase map. However, the name field may be changed to another value during the course of a calculation. For example, if duplicates of a phase object are instantiated and used in multiple places (such as a ReactorNet), they will have the same constitutive input, that is, the names of the phases will be the same. Note that this is not a problem for Cantera internally; however, a user may want to rename phase objects in order to clarify. | |
string | name () const |
Return the name of the phase. | |
void | setName (const string &nm) |
Sets the string name for the phase. | |
virtual string | type () const |
String indicating the thermodynamic model implemented. | |
Element and Species Information | |
string | elementName (size_t m) const |
Name of the element with index m. | |
size_t | elementIndex (const string &name) const |
Return the index of element named 'name'. | |
const vector< string > & | elementNames () const |
Return a read-only reference to the vector of element names. | |
double | atomicWeight (size_t m) const |
Atomic weight of element m. | |
double | entropyElement298 (size_t m) const |
Entropy of the element in its standard state at 298 K and 1 bar. | |
int | atomicNumber (size_t m) const |
Atomic number of element m. | |
int | elementType (size_t m) const |
Return the element constraint type Possible types include: | |
int | changeElementType (int m, int elem_type) |
Change the element type of the mth constraint Reassigns an element type. | |
const vector< double > & | atomicWeights () const |
Return a read-only reference to the vector of atomic weights. | |
size_t | nElements () const |
Number of elements. | |
void | checkElementIndex (size_t m) const |
Check that the specified element index is in range. | |
void | checkElementArraySize (size_t mm) const |
Check that an array size is at least nElements(). | |
double | nAtoms (size_t k, size_t m) const |
Number of atoms of element m in species k . | |
size_t | speciesIndex (const string &name) const |
Returns the index of a species named 'name' within the Phase object. | |
string | speciesName (size_t k) const |
Name of the species with index k. | |
const vector< string > & | speciesNames () const |
Return a const reference to the vector of species names. | |
size_t | nSpecies () const |
Returns the number of species in the phase. | |
void | checkSpeciesIndex (size_t k) const |
Check that the specified species index is in range. | |
void | checkSpeciesArraySize (size_t kk) const |
Check that an array size is at least nSpecies(). | |
Set Thermodynamic State | |
Set the internal thermodynamic state by setting the internally stored temperature, density and species composition. Note that the composition is always set first. Temperature and density are held constant if not explicitly set. | |
void | setMoleFractionsByName (const Composition &xMap) |
Set the species mole fractions by name. | |
void | setMoleFractionsByName (const string &x) |
Set the mole fractions of a group of species by name. | |
void | setMassFractionsByName (const Composition &yMap) |
Set the species mass fractions by name. | |
void | setMassFractionsByName (const string &x) |
Set the species mass fractions by name. | |
void | setState_TD (double t, double rho) |
Set the internally stored temperature (K) and density (kg/m^3) | |
Composition | |
Composition | getMoleFractionsByName (double threshold=0.0) const |
Get the mole fractions by name. | |
double | moleFraction (size_t k) const |
Return the mole fraction of a single species. | |
double | moleFraction (const string &name) const |
Return the mole fraction of a single species. | |
Composition | getMassFractionsByName (double threshold=0.0) const |
Get the mass fractions by name. | |
double | massFraction (size_t k) const |
Return the mass fraction of a single species. | |
double | massFraction (const string &name) const |
Return the mass fraction of a single species. | |
void | getMoleFractions (double *const x) const |
Get the species mole fraction vector. | |
virtual void | setMoleFractions (const double *const x) |
Set the mole fractions to the specified values. | |
virtual void | setMoleFractions_NoNorm (const double *const x) |
Set the mole fractions to the specified values without normalizing. | |
void | getMassFractions (double *const y) const |
Get the species mass fractions. | |
const double * | massFractions () const |
Return a const pointer to the mass fraction array. | |
virtual void | setMassFractions (const double *const y) |
Set the mass fractions to the specified values and normalize them. | |
virtual void | setMassFractions_NoNorm (const double *const y) |
Set the mass fractions to the specified values without normalizing. | |
virtual void | getConcentrations (double *const c) const |
Get the species concentrations (kmol/m^3). | |
virtual double | concentration (const size_t k) const |
Concentration of species k. | |
virtual void | setConcentrations (const double *const conc) |
Set the concentrations to the specified values within the phase. | |
virtual void | setConcentrationsNoNorm (const double *const conc) |
Set the concentrations without ignoring negative concentrations. | |
Thermodynamic Properties | |
double | temperature () const |
Temperature (K). | |
virtual double | electronTemperature () const |
Electron Temperature (K) | |
virtual double | pressure () const |
Return the thermodynamic pressure (Pa). | |
virtual double | density () const |
Density (kg/m^3). | |
virtual double | molarDensity () const |
Molar density (kmol/m^3). | |
virtual double | molarVolume () const |
Molar volume (m^3/kmol). | |
virtual void | setDensity (const double density_) |
Set the internally stored density (kg/m^3) of the phase. | |
virtual void | setPressure (double p) |
Set the internally stored pressure (Pa) at constant temperature and composition. | |
virtual void | setTemperature (double temp) |
Set the internally stored temperature of the phase (K). | |
virtual void | setElectronTemperature (double etemp) |
Set the internally stored electron temperature of the phase (K). | |
Mean Properties | |
double | mean_X (const double *const Q) const |
Evaluate the mole-fraction-weighted mean of an array Q. | |
double | mean_X (const vector< double > &Q) const |
Evaluate the mole-fraction-weighted mean of an array Q. | |
double | meanMolecularWeight () const |
The mean molecular weight. Units: (kg/kmol) | |
double | sum_xlogx () const |
Evaluate \( \sum_k X_k \ln X_k \). | |
Adding Elements and Species | |
These methods are used to add new elements or species. These are not usually called by user programs. Since species are checked to insure that they are only composed of declared elements, it is necessary to first add all elements before adding any species. | |
size_t | addElement (const string &symbol, double weight=-12345.0, int atomicNumber=0, double entropy298=ENTROPY298_UNKNOWN, int elem_type=CT_ELEM_TYPE_ABSPOS) |
Add an element. | |
virtual bool | addSpecies (shared_ptr< Species > spec) |
Add a Species to this Phase. | |
virtual void | modifySpecies (size_t k, shared_ptr< Species > spec) |
Modify the thermodynamic data associated with a species. | |
void | addSpeciesAlias (const string &name, const string &alias) |
Add a species alias (that is, a user-defined alternative species name). | |
void | addSpeciesLock () |
Lock species list to prevent addition of new species. | |
void | removeSpeciesLock () |
Decrement species lock counter. | |
virtual vector< string > | findIsomers (const Composition &compMap) const |
Return a vector with isomers names matching a given composition map. | |
virtual vector< string > | findIsomers (const string &comp) const |
Return a vector with isomers names matching a given composition string. | |
shared_ptr< Species > | species (const string &name) const |
Return the Species object for the named species. | |
shared_ptr< Species > | species (size_t k) const |
Return the Species object for species whose index is k. | |
void | ignoreUndefinedElements () |
Set behavior when adding a species containing undefined elements to just skip the species. | |
void | addUndefinedElements () |
Set behavior when adding a species containing undefined elements to add those elements to the phase. | |
void | throwUndefinedElements () |
Set the behavior when adding a species containing undefined elements to throw an exception. | |
Protected Member Functions | |
void | assertCompressible (const string &setter) const |
Ensure that phase is compressible. | |
void | assignDensity (const double density_) |
Set the internally stored constant density (kg/m^3) of the phase. | |
void | setMolecularWeight (const int k, const double mw) |
Set the molecular weight of a single species to a given value. | |
virtual void | compositionChanged () |
Apply changes to the state which are needed after the composition changes. | |
Protected Attributes | |
ValueCache | m_cache |
Cached for saved calculations within each ThermoPhase. | |
size_t | m_kk = 0 |
Number of species in the phase. | |
size_t | m_ndim = 3 |
Dimensionality of the phase. | |
vector< double > | m_speciesComp |
Atomic composition of the species. | |
vector< double > | m_speciesCharge |
Vector of species charges. length m_kk. | |
map< string, shared_ptr< Species > > | m_species |
Map of Species objects. | |
size_t | m_nSpeciesLocks = 0 |
Reference counter preventing species addition. | |
UndefElement::behavior | m_undefinedElementBehavior = UndefElement::add |
Flag determining behavior when adding species with an undefined element. | |
bool | m_caseSensitiveSpecies = false |
Flag determining whether case sensitive species names are enforced. | |
Private Member Functions | |
size_t | findSpeciesLower (const string &nameStr) const |
Find lowercase species name in m_speciesIndices when case sensitive species names are not enforced and a user specifies a non-canonical species name. | |
Private Attributes | |
string | m_name |
Name of the phase. | |
double | m_temp = 0.001 |
Temperature (K). This is an independent variable. | |
double | m_dens = 0.001 |
Density (kg m-3). | |
double | m_mmw = 0.0 |
mean molecular weight of the mixture (kg kmol-1) | |
vector< double > | m_ym |
m_ym[k] = mole fraction of species k divided by the mean molecular weight of mixture. | |
vector< double > | m_y |
Mass fractions of the species. | |
vector< double > | m_molwts |
species molecular weights (kg kmol-1) | |
vector< double > | m_rmolwts |
inverse of species molecular weights (kmol kg-1) | |
int | m_stateNum = -1 |
State Change variable. | |
vector< string > | m_speciesNames |
Vector of the species names. | |
map< string, size_t > | m_speciesIndices |
Map of species names to indices. | |
map< string, size_t > | m_speciesLower |
Map of lower-case species names to indices. | |
size_t | m_mm = 0 |
Number of elements. | |
vector< double > | m_atomicWeights |
element atomic weights (kg kmol-1) | |
vector< int > | m_atomicNumbers |
element atomic numbers | |
vector< string > | m_elementNames |
element names | |
vector< int > | m_elem_type |
Vector of element types. | |
vector< double > | m_entropy298 |
Entropy at 298.15 K and 1 bar of stable state pure elements (J kmol-1) | |
|
default |
Default constructor.
string name | ( | ) | const |
void setName | ( | const string & | nm | ) |
|
inlinevirtual |
String indicating the thermodynamic model implemented.
Usually corresponds to the name of the derived class, less any suffixes such as "Phase", TP", "VPSS", etc.
Reimplemented in BinarySolutionTabulatedThermo, CoverageDependentSurfPhase, DebyeHuckel, EdgePhase, HMWSoln, IdealGasPhase, IdealMolalSoln, IdealSolidSolnPhase, IdealSolnGasVPSS, LatticePhase, LatticeSolidPhase, MargulesVPSSTP, MetalPhase, MixtureFugacityTP, PengRobinson, PlasmaPhase, PureFluidPhase, RedlichKisterVPSSTP, RedlichKwongMFTP, SingleSpeciesTP, StoichSubstance, SurfPhase, ThermoPhase, and WaterSSTP.
string elementName | ( | size_t | m | ) | const |
size_t elementIndex | ( | const string & | name | ) | const |
const vector< string > & elementNames | ( | ) | const |
double atomicWeight | ( | size_t | m | ) | const |
double entropyElement298 | ( | size_t | m | ) | const |
int atomicNumber | ( | size_t | m | ) | const |
int elementType | ( | size_t | m | ) | const |
Return the element constraint type Possible types include:
CT_ELEM_TYPE_TURNEDOFF -1
CT_ELEM_TYPE_ABSPOS 0
CT_ELEM_TYPE_ELECTRONCHARGE 1
CT_ELEM_TYPE_CHARGENEUTRALITY 2
CT_ELEM_TYPE_LATTICERATIO 3
CT_ELEM_TYPE_KINETICFROZEN 4
CT_ELEM_TYPE_SURFACECONSTRAINT 5
CT_ELEM_TYPE_OTHERCONSTRAINT 6
The default is CT_ELEM_TYPE_ABSPOS
.
m | Element index |
int changeElementType | ( | int | m, |
int | elem_type | ||
) |
const vector< double > & atomicWeights | ( | ) | const |
void checkElementIndex | ( | size_t | m | ) | const |
Check that the specified element index is in range.
Throws an exception if m is greater than nElements()-1
void checkElementArraySize | ( | size_t | mm | ) | const |
Check that an array size is at least nElements().
Throws an exception if mm is less than nElements(). Used before calls which take an array pointer.
double nAtoms | ( | size_t | k, |
size_t | m | ||
) | const |
size_t speciesIndex | ( | const string & | name | ) | const |
Returns the index of a species named 'name' within the Phase object.
The first species in the phase will have an index 0, and the last one will have an index of nSpecies() - 1.
name | String name of the species. It may also be in the form phaseName:speciesName |
string speciesName | ( | size_t | k | ) | const |
const vector< string > & speciesNames | ( | ) | const |
|
inline |
void checkSpeciesIndex | ( | size_t | k | ) | const |
Check that the specified species index is in range.
Throws an exception if k is greater than nSpecies()-1
void checkSpeciesArraySize | ( | size_t | kk | ) | const |
Check that an array size is at least nSpecies().
Throws an exception if kk is less than nSpecies(). Used before calls which take an array pointer.
|
inlinevirtual |
Return whether phase represents a pure (single species) substance.
Reimplemented in PureFluidPhase, and SingleSpeciesTP.
|
inlinevirtual |
Return whether phase represents a substance with phase transitions.
Reimplemented in PureFluidPhase.
|
inlinevirtual |
Return whether phase represents a compressible substance.
Reimplemented in IdealSolidSolnPhase, LatticePhase, LatticeSolidPhase, MetalPhase, StoichSubstance, SurfPhase, and VPStandardStateTP.
|
virtual |
Return a map of properties defining the native state of a substance.
By default, entries include "T", "D", "Y" for a compressible substance and "T", "P", "Y" for an incompressible substance, with offsets 0, 1 and 2, respectively. Mass fractions "Y" are omitted for pure species. In all cases, offsets into the state vector are used by saveState() and restoreState().
Reimplemented in LatticePhase, and LatticeSolidPhase.
string nativeMode | ( | ) | const |
Return string acronym representing the native state of a Phase.
Examples: "TP", "TDY", "TPY".
|
virtual |
Return a vector containing full states defining a phase.
Full states list combinations of properties that allow for the specification of a thermodynamic state based on user input. Properties and states are represented by single letter acronyms, and combinations of letters, respectively (for example, "TDY", "TPX", "SVX"). Supported property acronyms are: "T": temperature "P": pressure "D": density "X": mole fractions "Y": mass fractions "T": temperature "U": specific internal energy "V": specific volume "H": specific enthalpy "S": specific entropy "Q": vapor fraction
Reimplemented in PureFluidPhase.
|
virtual |
Return a vector of settable partial property sets within a phase.
Partial states encompass all valid combinations of properties that allow for the specification of a state while ignoring species concentrations (such as "TD", "TP", "SV").
Reimplemented in PureFluidPhase.
|
virtual |
Return size of vector defining internal state of the phase.
Used by saveState() and restoreState().
void saveState | ( | vector< double > & | state | ) | const |
Save the current internal state of the phase.
Write to vector 'state' the current internal state.
state | output vector. Will be resized to stateSize(). |
|
virtual |
Write to array 'state' the current internal state.
lenstate | length of the state array. Must be >= stateSize() |
state | output vector. Must be of length stateSizes() or greater. |
void restoreState | ( | const vector< double > & | state | ) |
|
virtual |
void setMoleFractionsByName | ( | const Composition & | xMap | ) |
void setMoleFractionsByName | ( | const string & | x | ) |
void setMassFractionsByName | ( | const Composition & | yMap | ) |
void setMassFractionsByName | ( | const string & | x | ) |
void setState_TD | ( | double | t, |
double | rho | ||
) |
double molecularWeight | ( | size_t | k | ) | const |
void getMolecularWeights | ( | double * | weights | ) | const |
const vector< double > & molecularWeights | ( | ) | const |
const vector< double > & inverseMolecularWeights | ( | ) | const |
void getCharges | ( | double * | charges | ) | const |
Composition getMoleFractionsByName | ( | double | threshold = 0.0 | ) | const |
double moleFraction | ( | size_t | k | ) | const |
double moleFraction | ( | const string & | name | ) | const |
Composition getMassFractionsByName | ( | double | threshold = 0.0 | ) | const |
double massFraction | ( | size_t | k | ) | const |
double massFraction | ( | const string & | name | ) | const |
void getMoleFractions | ( | double *const | x | ) | const |
|
virtual |
Set the mole fractions to the specified values.
There is no restriction on the sum of the mole fraction vector. Internally, the Phase object will normalize this vector before storing its contents.
x | Array of unnormalized mole fraction values (input). Must have a length greater than or equal to the number of species, m_kk. |
Reimplemented in LatticeSolidPhase, and SingleSpeciesTP.
|
virtual |
Set the mole fractions to the specified values without normalizing.
This is useful when the normalization condition is being handled by some other means, for example by a constraint equation as part of a larger set of equations.
x | Input vector of mole fractions. Length is m_kk. |
void getMassFractions | ( | double *const | y | ) | const |
Get the species mass fractions.
[out] | y | Array of mass fractions, length nSpecies() |
|
inline |
|
virtual |
Set the mass fractions to the specified values and normalize them.
[in] | y | Array of unnormalized mass fraction values. Length must be greater than or equal to the number of species. The Phase object will normalize this vector before storing its contents. |
Reimplemented in LatticeSolidPhase, and SingleSpeciesTP.
|
virtual |
Set the mass fractions to the specified values without normalizing.
This is useful when the normalization condition is being handled by some other means, for example by a constraint equation as part of a larger set of equations.
y | Input vector of mass fractions. Length is m_kk. |
Reimplemented in LatticeSolidPhase.
|
virtual |
Get the species concentrations (kmol/m^3).
[out] | c | The vector of species concentrations. Units are kmol/m^3. The length of the vector must be greater than or equal to the number of species within the phase. |
Reimplemented in LatticeSolidPhase.
|
virtual |
Concentration of species k.
If k is outside the valid range, an exception will be thrown.
[in] | k | Index of the species within the phase. |
Reimplemented in LatticeSolidPhase.
|
virtual |
Set the concentrations to the specified values within the phase.
We set the concentrations here and therefore we set the overall density of the phase. We hold the temperature constant during this operation. Therefore, we have possibly changed the pressure of the phase by calling this routine.
[in] | conc | Array of concentrations in dimensional units. For bulk phases c[k] is the concentration of the kth species in kmol/m3. For surface phases, c[k] is the concentration in kmol/m2. The length of the vector is the number of species in the phase. |
Reimplemented in LatticeSolidPhase.
|
virtual |
|
virtual |
double elementalMassFraction | ( | const size_t | m | ) | const |
Elemental mass fraction of element m.
The elemental mass fraction \( Z_{\mathrm{mass},m} \) of element \( m \) is defined as
\[ Z_{\mathrm{mass},m} = \sum_k \frac{a_{m,k} M_m}{M_k} Y_k \]
with \( a_{m,k} \) being the number of atoms of element \( m \) in species \( k \), \( M_m \) the atomic weight of element \( m \), \( M_k \) the molecular weight of species \( k \), and \( Y_k \) the mass fraction of species \( k \).
[in] | m | Index of the element within the phase. If m is outside the valid range, an exception will be thrown. |
double elementalMoleFraction | ( | const size_t | m | ) | const |
Elemental mole fraction of element m.
The elemental mole fraction \( Z_{\mathrm{mole},m} \) of element \( m \) is the number of atoms of element m divided by the total number of atoms. It is defined as:
\[ Z_{\mathrm{mole},m} = \frac{\sum_k a_{m,k} X_k} {\sum_k \sum_j a_{j,k} X_k} \]
with \( a_{m,k} \) being the number of atoms of element \( m \) in species \( k \), \( \sum_j \) being a sum over all elements, and \( X_k \) being the mole fraction of species \( k \).
[in] | m | Index of the element within the phase. If m is outside the valid range, an exception will be thrown. |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinevirtual |
|
inlinevirtual |
Return the thermodynamic pressure (Pa).
This method must be overloaded in derived classes. Within Cantera, the independent variable is either density or pressure. If the state is defined by temperature, density, and mass fractions, this method should use these values to implement the mechanical equation of state \( P(T, \rho, Y_1, \dots, Y_K) \). Alternatively, it returns a stored value.
Reimplemented in IdealGasPhase, IdealSolidSolnPhase, LatticePhase, LatticeSolidPhase, MetalPhase, PengRobinson, PureFluidPhase, RedlichKwongMFTP, StoichSubstance, SurfPhase, VPStandardStateTP, and WaterSSTP.
|
inlinevirtual |
|
virtual |
|
virtual |
|
virtual |
Set the internally stored density (kg/m^3) of the phase.
Note the density of a phase is an independent variable.
[in] | density_ | density (kg/m^3). |
Reimplemented in WaterSSTP, and PureFluidPhase.
|
inlinevirtual |
Set the internally stored pressure (Pa) at constant temperature and composition.
This method must be reimplemented in derived classes, where it may involve the solution of a nonlinear equation. Within Cantera, the independent variable is either density or pressure. Therefore, this function may either solve for the density that will yield the desired input pressure or set an independent variable. The temperature and composition are held constant during this process.
p | input Pressure (Pa) |
Reimplemented in IdealGasPhase, IdealSolidSolnPhase, IdealSolnGasVPSS, LatticePhase, LatticeSolidPhase, MixtureFugacityTP, PureFluidPhase, StoichSubstance, SurfPhase, VPStandardStateTP, WaterSSTP, and MetalPhase.
|
inlinevirtual |
Set the internally stored temperature of the phase (K).
temp | Temperature in Kelvin |
Reimplemented in PureFluidPhase, MixtureFugacityTP, VPStandardStateTP, and WaterSSTP.
|
inlinevirtual |
Set the internally stored electron temperature of the phase (K).
etemp | Electron temperature in Kelvin |
Reimplemented in PlasmaPhase.
double mean_X | ( | const double *const | Q | ) | const |
double mean_X | ( | const vector< double > & | Q | ) | const |
|
inline |
double sum_xlogx | ( | ) | const |
size_t addElement | ( | const string & | symbol, |
double | weight = -12345.0 , |
||
int | atomicNumber = 0 , |
||
double | entropy298 = ENTROPY298_UNKNOWN , |
||
int | elem_type = CT_ELEM_TYPE_ABSPOS |
||
) |
Add an element.
symbol | Atomic symbol string. |
weight | Atomic mass in amu. |
atomicNumber | Atomic number of the element (unitless) |
entropy298 | Entropy of the element at 298 K and 1 bar in its most stable form. The default is the value ENTROPY298_UNKNOWN, which is interpreted as an unknown, and if used will cause Cantera to throw an error. |
elem_type | Specifies the type of the element constraint equation. This defaults to CT_ELEM_TYPE_ABSPOS, that is, an element. |
|
virtual |
Returns true
if the species was successfully added, or false
if the species was ignored.
Derived classes which need to size arrays according to the number of species should overload this method. The derived class implementation should call the base class method, and, if this returns true
(indicating that the species has been added), adjust their array sizes accordingly.
Reimplemented in VPStandardStateTP, BinarySolutionTabulatedThermo, CoverageDependentSurfPhase, DebyeHuckel, GibbsExcessVPSSTP, IdealGasPhase, IdealMolalSoln, IdealSolidSolnPhase, IdealSolnGasVPSS, LatticePhase, LatticeSolidPhase, MixtureFugacityTP, MolalityVPSSTP, PengRobinson, PlasmaPhase, RedlichKwongMFTP, SingleSpeciesTP, SurfPhase, ThermoPhase, and VPStandardStateTP.
|
virtual |
Modify the thermodynamic data associated with a species.
The species name, elemental composition, and type of thermo parameterization must be unchanged. If there are Kinetics objects that depend on this phase, Kinetics::invalidateCache() should be called on those objects after calling this function.
Reimplemented in ThermoPhase.
void addSpeciesAlias | ( | const string & | name, |
const string & | alias | ||
) |
|
inline |
Lock species list to prevent addition of new species.
Increments a reference counter used to track whether the Phase is being used by a Reactor, Domain1D, or MultiPhase object, which require the number of species to remain constant. Should be called in C++ by the object owning the reference.
void removeSpeciesLock | ( | ) |
|
virtual |
|
virtual |
shared_ptr< Species > species | ( | const string & | name | ) | const |
Return the Species object for the named species.
Changes to this object do not affect the ThermoPhase object until the modifySpecies function is called.
shared_ptr< Species > species | ( | size_t | k | ) | const |
Return the Species object for species whose index is k.
Changes to this object do not affect the ThermoPhase object until the modifySpecies function is called.
void ignoreUndefinedElements | ( | ) |
void addUndefinedElements | ( | ) |
void throwUndefinedElements | ( | ) |
|
virtual |
Returns a bool indicating whether the object is ready for use.
Reimplemented in BinarySolutionTabulatedThermo.
|
inline |
|
virtual |
Invalidate any cached values which are normally updated only when a change in state is detected.
Reimplemented in ThermoPhase, and VPStandardStateTP.
|
inline |
|
inline |
vector< double > getCompositionFromMap | ( | const Composition & | comp | ) | const |
void massFractionsToMoleFractions | ( | const double * | Y, |
double * | X | ||
) | const |
void moleFractionsToMassFractions | ( | const double * | X, |
double * | Y | ||
) | const |
|
inlineprotected |
|
protected |
|
protected |
Set the molecular weight of a single species to a given value.
Used by phases where the equation of state is defined for a specific value of the molecular weight which may not exactly correspond to the value computed from the chemical formula.
k | id of the species |
mw | Molecular Weight (kg kmol-1) |
|
protectedvirtual |
Apply changes to the state which are needed after the composition changes.
This function is called after any call to setMassFractions(), setMoleFractions(), or similar. For phases which need to execute a callback after any change to the composition, it should be done by overriding this function rather than overriding all of the composition- setting functions. Derived class implementations of compositionChanged() should call the parent class method as well.
Reimplemented in BinarySolutionTabulatedThermo, GibbsExcessVPSSTP, IdealSolidSolnPhase, LatticePhase, MixtureFugacityTP, and SurfPhase.
|
private |
|
mutableprotected |
Cached for saved calculations within each ThermoPhase.
For more information on how to use this, see examples within the source code and documentation for this within ValueCache class itself.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
private |
|
private |
|
private |
Density (kg m-3).
This is an independent variable except in the case of incompressible phases, where it has to be changed using the assignDensity() method. For compressible substances, the pressure is determined from this variable rather than other way round.
|
private |
|
mutableprivate |
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |