Cantera  2.0
Phase Class Reference

Base class for phases of matter. More...

#include <Phase.h>

Inheritance diagram for Phase:
[legend]
Collaboration diagram for Phase:
[legend]

## Public Member Functions

Phase ()
Default constructor.

virtual ~Phase ()
Destructor.

Phase (const Phase &right)
Copy Constructor.

Phaseoperator= (const Phase &right)
Assignment operator.

XML_Nodexml ()
Returns a reference to the XML_Node stored for the phase.

void saveState (vector_fp &state) const
Save the current internal state of the phase Write to vector 'state' the current internal state.

void saveState (size_t lenstate, doublereal *state) const
Write to array 'state' the current internal state.

void restoreState (const vector_fp &state)
Restore a state saved on a previous call to saveState.

void restoreState (size_t lenstate, const doublereal *state)
Restore the state of the phase from a previously saved state vector.

doublereal molecularWeight (size_t k) const
Molecular weight of species k.

doublereal molarMass (size_t k) const
Return the Molar mass of species k Alternate name for molecular weight.

void getMolecularWeights (vector_fp &weights) const
Copy the vector of molecular weights into vector weights.

void getMolecularWeights (int iwt, doublereal *weights) const
Copy the vector of molecular weights into array weights.

void getMolecularWeights (doublereal *weights) const
Copy the vector of molecular weights into array weights.

const vector_fpmolecularWeights () const
Return a const reference to the internal vector of molecular weights.

doublereal size (size_t k) const
This routine returns the size of species k.

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

doublereal 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 void freezeSpecies ()

bool speciesFrozen ()
True if freezeSpecies has been called.

int stateMFNumber () const
Return the State Mole Fraction Number.

void stateMFChangeCalc (bool forceChange=false)
Every time the mole fractions have changed, this routine will increment the stateMFNumber.

Name and ID

Class Phase contains two strings that identify a phase. The ID is the value of the ID attribute of the XML phase node that is used to initialize a phase when it is read. The name field is also initialized to the value of the ID attribute of the XML phase node.

However, the name field may be changed to another value during the course of a calculation. For example, if a phase is located in two places, but has the same constitutive input, the ids of the two phases will be the same, but the names of the two phases may be different.

It is an error to have two phases in a single problem with the same name or the same id (or the name from one phase being the same as the id of another phase). Thus, it is expected that there is a 1-1 correspondence between names and unique phases within a Cantera problem.

std::string id () const
Return the string id for the phase.

void setID (std::string id)
Set the string id for the phase.

std::string name () const
Return the name of the phase.

void setName (std::string nm)
Sets the string name for the phase.

Element and Species Information
std::string elementName (size_t m) const
Name of the element with index m.

size_t elementIndex (std::string name) const
Return the index of element named 'name'.

const std::vector< std::string > & elementNames () const
Return a read-only reference to the vector of element names.

doublereal atomicWeight (size_t m) const
Atomic weight of element m.

doublereal 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_fpatomicWeights () 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 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().

doublereal nAtoms (size_t k, size_t m) const
Number of atoms of element m in species k.

void getAtoms (size_t k, double *atomArray) const
Get a vector containing the atomic composition of species k.

size_t speciesIndex (std::string name) const
Returns the index of a species named 'name' within the Phase object.

std::string speciesName (size_t k) const
Name of the species with index k.

std::string speciesSPName (int k) const
Returns the expanded species name of a species, including the phase name This is guaranteed to be unique within a Cantera problem.

const std::vector< std::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 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().

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 (compositionMap &xMap)
Set the species mole fractions by name.

void setMoleFractionsByName (const std::string &x)
Set the mole fractions of a group of species by name.

void setMassFractionsByName (compositionMap &yMap)
Set the species mass fractions by name.

void setMassFractionsByName (const std::string &x)
Set the species mass fractions by name.

void setState_TRX (doublereal t, doublereal dens, const doublereal *x)
Set the internally stored temperature (K), density, and mole fractions.

void setState_TRX (doublereal t, doublereal dens, compositionMap &x)
Set the internally stored temperature (K), density, and mole fractions.

void setState_TRY (doublereal t, doublereal dens, const doublereal *y)
Set the internally stored temperature (K), density, and mass fractions.

void setState_TRY (doublereal t, doublereal dens, compositionMap &y)
Set the internally stored temperature (K), density, and mass fractions.

void setState_TNX (doublereal t, doublereal n, const doublereal *x)
Set the internally stored temperature (K), molar density (kmol/m^3), and mole fractions.

void setState_TR (doublereal t, doublereal rho)
Set the internally stored temperature (K) and density (kg/m^3)

void setState_TX (doublereal t, doublereal *x)
Set the internally stored temperature (K) and mole fractions.

void setState_TY (doublereal t, doublereal *y)
Set the internally stored temperature (K) and mass fractions.

void setState_RX (doublereal rho, doublereal *x)
Set the density (kg/m^3) and mole fractions.

void setState_RY (doublereal rho, doublereal *y)
Set the density (kg/m^3) and mass fractions.

Composition
void getMoleFractionsByName (compositionMap &x) const
Get the mole fractions by name.

doublereal moleFraction (size_t k) const
Return the mole fraction of a single species.

doublereal moleFraction (std::string name) const
Return the mole fraction of a single species.

doublereal massFraction (size_t k) const
Return the mass fraction of a single species.

doublereal massFraction (std::string name) const
Return the mass fraction of a single species.

void getMoleFractions (doublereal *const x) const
Get the species mole fraction vector.

virtual void setMoleFractions (const doublereal *const x)
Set the mole fractions to the specified values There is no restriction on the sum of the mole fraction vector.

virtual void setMoleFractions_NoNorm (const doublereal *const x)
Set the mole fractions to the specified values without normalizing.

void getMassFractions (doublereal *const y) const
Get the species mass fractions.

const doublereal * massFractions () const
Return a const pointer to the mass fraction array.

virtual void setMassFractions (const doublereal *const y)
Set the mass fractions to the specified values and normalize them.

virtual void setMassFractions_NoNorm (const doublereal *const y)
Set the mass fractions to the specified values without normalizing.

void getConcentrations (doublereal *const c) const
Get the species concentrations (kmol/m^3).

doublereal concentration (const size_t k) const
Concentration of species k.

virtual void setConcentrations (const doublereal *const conc)
Set the concentrations to the specified values within the phase.

const doublereal * moleFractdivMMW () const
Returns a const pointer to the start of the moleFraction/MW array.

Thermodynamic Properties
doublereal temperature () const
Temperature (K).

virtual doublereal density () const
Density (kg/m^3).

doublereal molarDensity () const
Molar density (kmol/m^3).

doublereal molarVolume () const
Molar volume (m^3/kmol).

virtual void setDensity (const doublereal density)
Set the internally stored density (kg/m^3) of the phase Note the density of a phase is an independent variable.

virtual void setMolarDensity (const doublereal molarDensity)
Set the internally stored molar density (kmol/m^3) of the phase.

virtual void setTemperature (const doublereal temp)
Set the internally stored temperature of the phase (K).

Mean Properties
doublereal mean_X (const doublereal *const Q) const
Evaluate the mole-fraction-weighted mean of an array Q.

doublereal mean_Y (const doublereal *const Q) const
Evaluate the mass-fraction-weighted mean of an array Q.

doublereal meanMolecularWeight () const
The mean molecular weight. Units: (kg/kmol)

doublereal sum_xlogx () const
Evaluate $$\sum_k X_k \log X_k$$.

doublereal sum_xlogQ (doublereal *const Q) const
Evaluate $$\sum_k X_k \log Q_k$$.

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.

void addElement (const std::string &symbol, doublereal weight=-12345.0)

Add an element from an XML specification.

void addUniqueElement (const std::string &symbol, doublereal weight=-12345.0, int atomicNumber=0, doublereal entropy298=ENTROPY298_UNKNOWN, int elem_type=CT_ELEM_TYPE_ABSPOS)
Add an element, checking for uniqueness The uniqueness is checked by comparing the string symbol.

Add an element, checking for uniqueness The uniqueness is checked by comparing the string symbol.

Add all elements referenced in an XML_Node tree.

void freezeElements ()

bool elementsFrozen ()
True if freezeElements has been called.

size_t addUniqueElementAfterFreeze (const std::string &symbol, doublereal weight, int atomicNumber, doublereal entropy298=ENTROPY298_UNKNOWN, int elem_type=CT_ELEM_TYPE_ABSPOS)
Add an element after elements have been frozen, checking for uniqueness The uniqueness is checked by comparing the string symbol.

void addSpecies (const std::string &name, const doublereal *comp, doublereal charge=0.0, doublereal size=1.0)

void addUniqueSpecies (const std::string &name, const doublereal *comp, doublereal charge=0.0, doublereal size=1.0)
Add a species to the phase, checking for uniqueness of the name This routine checks for uniqueness of the string name.

## Protected Member Functions

void init (const vector_fp &mw)

void setMolecularWeight (const int k, const double mw)
Set the molecular weight of a single species to a given value.

## Protected Attributes

size_t m_kk
Number of species in the phase.

size_t m_ndim
Dimensionality of the phase.

vector_fp m_speciesComp
Atomic composition of the species.

vector_fp m_speciesSize
Vector of species sizes.

vector_fp m_speciesCharge
Vector of species charges. length m_kk.

## Private Attributes

XML_Nodem_xml
XML node containing the XML info for this phase.

std::string m_id
ID of the phase.

std::string m_name
Name of the phase.

doublereal m_temp
Temperature (K). This is an independent variable.

doublereal m_dens
Density (kg m-3).

doublereal m_mmw
mean molecular weight of the mixture (kg kmol-1)

vector_fp m_ym
m_ym[k] = mole fraction of species k divided by the mean molecular weight of mixture.

vector_fp m_y
species mass fractions

vector_fp m_molwts
species molecular weights (kg kmol-1)

vector_fp m_rmolwts
inverse of species molecular weights (kmol kg-1)

int m_stateNum
State Change variable.

bool m_speciesFrozen
Boolean indicating whether the number of species has been frozen.

bool m_elementsFrozen
If this is true, then no elements may be added to the object.

std::vector< std::string > m_speciesNames
Vector of the species names.

size_t m_mm
Number of elements.

vector_fp m_atomicWeights
element atomic weights (kg kmol-1)

vector_int m_atomicNumbers
element atomic numbers

std::vector< std::string > m_elementNames
element names

vector_int m_elem_type
Vector of element types.

vector_fp m_entropy298
Entropy at 298.15 K and 1 bar of stable state pure elements (J kmol-1)

## Detailed Description

Base class for phases of matter.

Class Phase manages the species and elements in a phase, as well as the independent variables of temperature, mass density, and species mass/mole fraction 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, with the exception of incompressible phases. In that case, the density must be replaced by the pressure as the independent variable and functions such as setMassFraction within class Phase must actually now calculate the density (at constant T and P) instead of leaving it alone as befits an independent variable. 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, then the temperature and then the density. An example of this is the function Phase::setState_TRY(double t, double dens, const double* y).

Class Phase contains method for saving and restoring the full internal states of each phase. These are saveState() and restoreState(). These functions operate on a state vector, which is in general of length (2 + nSpecies()). The first two entries of the state vector are temperature and density.

A species name may be referred to via three methods:

• "speciesName"
• "PhaseId:speciesName"
• "phaseName:speciesName"

The first two methods of naming may not yield a unique species within complicated assemblies of Cantera Phases.

Todo:
Make the concept of saving state vectors more general, so that it can handle other cases where there are additional internal state variables, such as the voltage, a potential energy, or a strain field.

Definition at line 98 of file Phase.h.

## Constructor & Destructor Documentation

 Phase ( )

Default constructor.

Definition at line 18 of file Phase.cpp.

 ~Phase ( )
virtual

Destructor.

Definition at line 107 of file Phase.cpp.

References Phase::m_xml.

 Phase ( const Phase & right )

Copy Constructor.

Parameters
 right Reference to the class to be used in the copy

Definition at line 35 of file Phase.cpp.

References Phase::operator=().

## Member Function Documentation

 Phase & operator= ( const Phase & right )

Assignment operator.

Parameters
 right Reference to the class to be used in the copy

Definition at line 54 of file Phase.cpp.

Referenced by Phase::Phase().

 XML_Node & xml ( )

Returns a reference to the XML_Node stored for the phase.

The XML_Node for the phase contains all of the input data used to set up the model for the phase, during its initialization.

Definition at line 125 of file Phase.cpp.

References Phase::m_xml.

 std::string id ( ) const

Return the string id for the phase.

Definition at line 130 of file Phase.cpp.

References Phase::m_id.

 void setID ( std::string id )

Set the string id for the phase.

Parameters
 id String id of the phase

Definition at line 135 of file Phase.cpp.

References Phase::id(), and Phase::m_id.

Referenced by FixedChemPotSSTP::FixedChemPotSSTP(), and Cantera::importPhase().

 std::string name ( ) const

Return the name of the phase.

Definition at line 140 of file Phase.cpp.

References Phase::m_name.

 void setName ( std::string nm )

Sets the string name for the phase.

Parameters
 nm String name of the phase

Definition at line 145 of file Phase.cpp.

References Phase::m_name.

Referenced by FixedChemPotSSTP::FixedChemPotSSTP(), and Cantera::importPhase().

 string elementName ( size_t m ) const

Name of the element with index m.

Parameters
 m Element index.

Definition at line 169 of file Phase.cpp.

References Phase::checkElementIndex(), and Phase::m_elementNames.

 size_t elementIndex ( std::string name ) const

Return the index of element named 'name'.

The index is an integer assigned to each element in the order it was added. Returns npos if the specified element is not found.

Parameters
 name Name of the element

Definition at line 175 of file Phase.cpp.

References Phase::m_elementNames, Phase::m_mm, and Cantera::npos.

 const vector< string > & elementNames ( ) const

Return a read-only reference to the vector of element names.

Definition at line 185 of file Phase.cpp.

References Phase::m_elementNames.

 doublereal atomicWeight ( size_t m ) const

Atomic weight of element m.

Parameters
 m Element index

Definition at line 190 of file Phase.cpp.

References Phase::m_atomicWeights.

 doublereal entropyElement298 ( size_t m ) const

Entropy of the element in its standard state at 298 K and 1 bar.

Parameters
 m Element index

Definition at line 195 of file Phase.cpp.

References AssertThrowMsg, AssertTrace, ENTROPY298_UNKNOWN, Phase::m_entropy298, and Phase::m_mm.

Referenced by LatticeSolidPhase::installSlavePhases(), Cantera::LookupGe(), and PDSS_HKFT::LookupGe().

 int atomicNumber ( size_t m ) const

Atomic number of element m.

Parameters
 m Element index

Definition at line 209 of file Phase.cpp.

References Phase::m_atomicNumbers.

 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.

Parameters
 m Element index
Returns
Returns the element type

Definition at line 214 of file Phase.cpp.

References Phase::m_elem_type.

Referenced by LatticeSolidPhase::installSlavePhases(), and vcs_VolPhase::transferElementsFM().

 int changeElementType ( int m, int elem_type )

Change the element type of the mth constraint Reassigns an element type.

Parameters
 m Element index elem_type New elem type to be assigned
Returns
Returns the old element type

Definition at line 219 of file Phase.cpp.

References Phase::m_elem_type.

 const vector_fp & atomicWeights ( ) const

Return a read-only reference to the vector of atomic weights.

Definition at line 204 of file Phase.cpp.

References Phase::m_atomicWeights.

Referenced by LatticeSolidPhase::installSlavePhases().

 size_t nElements ( ) 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.

Definition at line 155 of file Phase.cpp.

References Phase::m_mm.

Referenced by Phase::elementName(), and Phase::nAtoms().

 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.

Definition at line 162 of file Phase.cpp.

References Phase::m_mm.

 doublereal nAtoms ( size_t k, size_t m ) const

Number of atoms of element m in species k.

Parameters
 k species index m element index

Definition at line 226 of file Phase.cpp.

 void getAtoms ( size_t k, double * atomArray ) const

Get a vector containing the atomic composition of species k.

Parameters
 k species index atomArray vector containing the atomic number in the species. Length: m_mm

Definition at line 233 of file Phase.cpp.

References Phase::m_mm, and Phase::m_speciesComp.

Referenced by LatticeSolidPhase::installSlavePhases().

 size_t speciesIndex ( std::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.

Parameters
 name String name of the species. It may also be in the form phaseName:speciesName
Returns
The index of the species. If the name is not found, the value npos is returned.

Definition at line 240 of file Phase.cpp.

 std::string speciesSPName ( int k ) const

Returns the expanded species name of a species, including the phase name This is guaranteed to be unique within a Cantera problem.

Parameters
 k Species index within the phase
Returns
The "phaseName:speciesName" string

Definition at line 282 of file Phase.cpp.

References Phase::m_name, and Phase::speciesName().

 const vector< string > & speciesNames ( ) const

Return a const reference to the vector of species names.

Definition at line 263 of file Phase.cpp.

References Phase::m_speciesNames.

 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.

Definition at line 268 of file Phase.cpp.

References Phase::m_kk.

 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.

Definition at line 275 of file Phase.cpp.

References Phase::m_kk.

 void saveState ( vector_fp & state ) const

Save the current internal state of the phase Write to vector 'state' the current internal state.

Parameters
 state output vector. Will be resized to nSpecies() + 2.

Definition at line 288 of file Phase.cpp.

References Phase::nSpecies().

 void saveState ( size_t lenstate, doublereal * state ) const

Write to array 'state' the current internal state.

Parameters
 lenstate length of the state array. Must be >= nSpecies()+2 state output vector. Must be of length nSpecies() + 2 or greater.

Definition at line 293 of file Phase.cpp.

References Phase::density(), Phase::getMassFractions(), and Phase::temperature().

 void restoreState ( const vector_fp & state )

Restore a state saved on a previous call to saveState.

Parameters
 state State vector containing the previously saved state.

Definition at line 300 of file Phase.cpp.

 void restoreState ( size_t lenstate, const doublereal * state )

Restore the state of the phase from a previously saved state vector.

Parameters
 lenstate Length of the state vector state Vector of state conditions.

Definition at line 305 of file Phase.cpp.

 void setMoleFractionsByName ( compositionMap & xMap )

Set the species mole fractions by name.

@param xMap map from species names to mole fraction values.


Species not listed by name in xMap are set to zero.

Definition at line 362 of file Phase.cpp.

References Phase::nSpecies(), Phase::setMoleFractions(), and Phase::speciesName().

 void setMoleFractionsByName ( const std::string & x )

Set the mole fractions of a group of species by name.

Species which are not listed by name in the composition map are set to zero.

Parameters
 x string x in the form of a composition map

Definition at line 376 of file Phase.cpp.

 void setMassFractionsByName ( compositionMap & yMap )

Set the species mass fractions by name.

@param yMap map from species names to mass fraction values.


Species not listed by name in yMap are set to zero.

Definition at line 416 of file Phase.cpp.

References Phase::nSpecies(), Phase::setMassFractions(), and Phase::speciesName().

 void setMassFractionsByName ( const std::string & x )

Set the species mass fractions by name.

Species not listed by name in x are set to zero.

Parameters
 x String containing a composition map

Definition at line 430 of file Phase.cpp.

 void setState_TRX ( doublereal t, doublereal dens, const doublereal * x )

Set the internally stored temperature (K), density, and mole fractions.

Parameters
 t Temperature in kelvin dens Density (kg/m^3) x vector of species mole fractions, length m_kk

Definition at line 441 of file Phase.cpp.

References Phase::setDensity(), Phase::setMoleFractions(), and Phase::setTemperature().

 void setState_TRX ( doublereal t, doublereal dens, compositionMap & x )

Set the internally stored temperature (K), density, and mole fractions.

Parameters
 t Temperature in kelvin dens Density (kg/m^3) x Composition Map containing the mole fractions. Species not included in the map are assumed to have a zero mole fraction.

Definition at line 455 of file Phase.cpp.

 void setState_TRY ( doublereal t, doublereal dens, const doublereal * y )

Set the internally stored temperature (K), density, and mass fractions.

Parameters
 t Temperature in kelvin dens Density (kg/m^3) y vector of species mass fractions, length m_kk

Definition at line 462 of file Phase.cpp.

References Phase::setDensity(), Phase::setMassFractions(), and Phase::setTemperature().

 void setState_TRY ( doublereal t, doublereal dens, compositionMap & y )

Set the internally stored temperature (K), density, and mass fractions.

Parameters
 t Temperature in kelvin dens Density (kg/m^3) y Composition Map containing the mass fractions. Species not included in the map are assumed to have a zero mass fraction.

Definition at line 469 of file Phase.cpp.

 void setState_TNX ( doublereal t, doublereal n, const doublereal * x )

Set the internally stored temperature (K), molar density (kmol/m^3), and mole fractions.

Parameters
 t Temperature in kelvin n molar density (kmol/m^3) x vector of species mole fractions, length m_kk

Definition at line 448 of file Phase.cpp.

 void setState_TR ( doublereal t, doublereal rho )

Set the internally stored temperature (K) and density (kg/m^3)

Parameters
 t Temperature in kelvin rho Density (kg/m^3)

Definition at line 476 of file Phase.cpp.

References Phase::setDensity(), and Phase::setTemperature().

 void setState_TX ( doublereal t, doublereal * x )

Set the internally stored temperature (K) and mole fractions.

Parameters
 t Temperature in kelvin x vector of species mole fractions, length m_kk

Definition at line 482 of file Phase.cpp.

References Phase::setMoleFractions(), and Phase::setTemperature().

 void setState_TY ( doublereal t, doublereal * y )

Set the internally stored temperature (K) and mass fractions.

Parameters
 t Temperature in kelvin y vector of species mass fractions, length m_kk

Definition at line 488 of file Phase.cpp.

References Phase::setMassFractions(), and Phase::setTemperature().

 void setState_RX ( doublereal rho, doublereal * x )

Set the density (kg/m^3) and mole fractions.

Parameters
 rho Density (kg/m^3) x vector of species mole fractions, length m_kk

Definition at line 494 of file Phase.cpp.

References Phase::setDensity(), and Phase::setMoleFractions().

 void setState_RY ( doublereal rho, doublereal * y )

Set the density (kg/m^3) and mass fractions.

Parameters
 rho Density (kg/m^3) y vector of species mass fractions, length m_kk

Definition at line 500 of file Phase.cpp.

References Phase::setDensity(), and Phase::setMassFractions().

 doublereal molecularWeight ( size_t k ) const

Molecular weight of species k.

Parameters
 k index of species k
Returns
Returns the molecular weight of species k.

Definition at line 506 of file Phase.cpp.

References Phase::checkSpeciesIndex(), and Phase::m_molwts.

 doublereal molarMass ( size_t k ) const
inline

Return the Molar mass of species k Alternate name for molecular weight.

@param k  index for species
@return   Return the molar mass of species k kg/kmol.

Deprecated:

Definition at line 388 of file Phase.h.

References Phase::molecularWeight().

 void getMolecularWeights ( vector_fp & weights ) const

Copy the vector of molecular weights into vector weights.

Parameters
 weights Output vector of molecular weights (kg/kmol)

Definition at line 512 of file Phase.cpp.

References Phase::molecularWeights().

 void getMolecularWeights ( int iwt, doublereal * weights ) const

Copy the vector of molecular weights into array weights.

@param iwt      Unused.
@param weights  Output array of molecular weights (kg/kmol)

Deprecated:

Definition at line 521 of file Phase.cpp.

References Phase::molecularWeights().

 void getMolecularWeights ( doublereal * weights ) const

Copy the vector of molecular weights into array weights.

Parameters
 weights Output array of molecular weights (kg/kmol)

Definition at line 527 of file Phase.cpp.

References Phase::molecularWeights().

 const vector_fp & molecularWeights ( ) const

Return a const reference to the internal vector of molecular weights.

units = kg / kmol

Definition at line 533 of file Phase.cpp.

References Phase::m_molwts.

 doublereal size ( size_t k ) const
inline

This routine returns the size of species k.

Parameters
 k index of the species
Returns
The size of the species. Units are meters.

Definition at line 413 of file Phase.h.

References Phase::m_speciesSize.

 void getMoleFractionsByName ( compositionMap & x ) const

Get the mole fractions by name.

Parameters
 [out] x composition map containing the species mole fractions.

Definition at line 538 of file Phase.cpp.

References Phase::moleFraction(), Phase::nSpecies(), and Phase::speciesName().

 doublereal moleFraction ( std::string name ) const

Return the mole fraction of a single species.

Parameters
 name String name of the species
Returns
Mole fraction of the species

Definition at line 558 of file Phase.cpp.

References Phase::moleFraction(), Cantera::npos, and Phase::speciesIndex().

 doublereal massFraction ( size_t k ) const

Return the mass fraction of a single species.

Parameters
 k species index
Returns
Mass fraction of the species

Definition at line 573 of file Phase.cpp.

References Phase::checkSpeciesIndex(), and Phase::m_y.

 doublereal massFraction ( std::string name ) const

Return the mass fraction of a single species.

Parameters
 name String name of the species
Returns
Mass Fraction of the species

Definition at line 579 of file Phase.cpp.

References Phase::massFractions(), Cantera::npos, and Phase::speciesIndex().

 void setMoleFractions ( const doublereal *const x )
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.

Parameters
 x Array of unnormalized mole fraction values (input). Must have a length greater than or equal to the number of species, m_kk.

Definition at line 317 of file Phase.cpp.

 void setMoleFractions_NoNorm ( const doublereal *const x )
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.

Parameters
 x Input vector of mole fractions. Length is m_kk.

Reimplemented in IonsFromNeutralVPSSTP, GibbsExcessVPSSTP, LatticePhase, MixtureFugacityTP, IdealSolidSolnPhase, and RedlichKwongMFTP.

Definition at line 350 of file Phase.cpp.

 void getMassFractions ( doublereal *const y ) const

Get the species mass fractions.

Parameters
 [out] y Array of mass fractions, length nSpecies()

Definition at line 589 of file Phase.cpp.

References Phase::m_y.

 const doublereal* massFractions ( ) const
inline

Return a const pointer to the mass fraction array.

Definition at line 469 of file Phase.h.

References Phase::m_y.

 void setMassFractions ( const doublereal *const y )
virtual

Set the mass fractions to the specified values and normalize them.

@param[in] y Array of unnormalized mass fraction values. Length


must be greater than or equal to the number of species. The Ptate object will normalize this vector before storing its contents.

Definition at line 387 of file Phase.cpp.

 void setMassFractions_NoNorm ( const doublereal *const y )
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.

Parameters
 y Input vector of mass fractions. Length is m_kk.

Definition at line 403 of file Phase.cpp.

 void getConcentrations ( doublereal *const c ) const

Get the species concentrations (kmol/m^3).

@param[out] c Array of species concentrations Length must be


greater than or equal to the number of species.

Definition at line 600 of file Phase.cpp.

References Phase::m_dens, Phase::m_ym, and Cantera::scale().

 doublereal concentration ( const size_t k ) const

Concentration of species k.

If k is outside the valid range, an exception will be thrown.

Parameters
 k Index of species

Definition at line 594 of file Phase.cpp.

References Phase::checkSpeciesIndex(), Phase::m_dens, Phase::m_rmolwts, and Phase::m_y.

 void setConcentrations ( const doublereal *const conc )
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.

Parameters
 [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 numberof species in the phase.

Definition at line 605 of file Phase.cpp.

 const doublereal * moleFractdivMMW ( ) const

Returns a const pointer to the start of the moleFraction/MW array.

This array is the array of mole fractions, each divided by the mean molecular weight.

Definition at line 568 of file Phase.cpp.

References Phase::m_ym.

 doublereal charge ( size_t k ) const
 doublereal chargeDensity ( ) const

Charge density [C/m^3].

Definition at line 647 of file Phase.cpp.

References Phase::charge(), Phase::moleFraction(), and Phase::nSpecies().

 size_t nDim ( ) const
inline

Returns the number of spatial dimensions (1, 2, or 3)

Definition at line 523 of file Phase.h.

References Phase::m_ndim.

 void setNDim ( size_t ndim )
inline

Set the number of spatial dimensions (1, 2, or 3).

The number of spatial dimensions is used for vector involving directions.

Parameters
 ndim Input number of dimensions.

Definition at line 530 of file Phase.h.

References Phase::m_ndim.

 doublereal molarVolume ( ) const

Molar volume (m^3/kmol).

Returns
The molar volume of the phase

Definition at line 637 of file Phase.cpp.

References Phase::molarDensity().

 virtual void setDensity ( const doublereal density )
inlinevirtual
 void setMolarDensity ( const doublereal molarDensity )
virtual

Set the internally stored molar density (kmol/m^3) of the phase.

Parameters
 [in] molarDensity Input molar density (kmol/m^3).

Reimplemented in HMWSoln, DebyeHuckel, IdealSolidSolnPhase, and IdealMolalSoln.

Definition at line 632 of file Phase.cpp.

References Phase::m_dens, and Phase::meanMolecularWeight().

Referenced by LatticePhase::calcDensity(), LatticePhase::setParameters(), and Phase::setState_TNX().

 virtual void setTemperature ( const doublereal temp )
inlinevirtual
 doublereal mean_X ( const doublereal *const Q ) const

Evaluate the mole-fraction-weighted mean of an array Q.

$\sum_k X_k Q_k.$

Q should contain pure-species molar property values.

Parameters
 [in] Q Array of length m_kk that is to be averaged.
Returns
mole-fraction-weighted mean of Q

Definition at line 658 of file Phase.cpp.

References Phase::m_mmw, and Phase::m_ym.

 doublereal mean_Y ( const doublereal *const Q ) const

Evaluate the mass-fraction-weighted mean of an array Q.

$\sum_k Y_k Q_k$

Parameters
 [in] Q Array of species property values in mass units.
Returns
The mass-fraction-weighted mean of Q.

Definition at line 663 of file Phase.cpp.

References Cantera::dot(), and Phase::m_y.

 doublereal sum_xlogx ( ) const

Evaluate $$\sum_k X_k \log X_k$$.

Returns
The indicated sum. Dimensionless.

Definition at line 668 of file Phase.cpp.

References Phase::m_mmw, Phase::m_ym, and Cantera::sum_xlogx().

 doublereal sum_xlogQ ( doublereal *const Q ) const

Evaluate $$\sum_k X_k \log Q_k$$.

Parameters
 Q Vector of length m_kk to take the log average of
Returns
The indicated sum.

Definition at line 673 of file Phase.cpp.

References Phase::m_mmw, Phase::m_ym, and Cantera::sum_xlogQ().

 void addElement ( const std::string & symbol, doublereal weight = -12345.0 )

Parameters
 symbol Atomic symbol std::string. weight Atomic mass in amu.

Definition at line 678 of file Phase.cpp.

 void addElement ( const XML_Node & e )

Add an element from an XML specification.

Parameters
 e Reference to the XML_Node where the element is described.

Definition at line 701 of file Phase.cpp.

 void addUniqueElement ( const std::string & symbol, doublereal weight = -12345.0, int atomicNumber = 0, doublereal entropy298 = ENTROPY298_UNKNOWN, int elem_type = CT_ELEM_TYPE_ABSPOS )

Add an element, checking for uniqueness The uniqueness is checked by comparing the string symbol.

If not unique, nothing is done.

Parameters
 symbol String symbol of the element weight Atomic weight of the element (kg kmol-1). 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, i.e., an element.

Definition at line 708 of file Phase.cpp.

 void addUniqueElement ( const XML_Node & e )

Add an element, checking for uniqueness The uniqueness is checked by comparing the string symbol.

If not unique, nothing is done.

Parameters
 e Reference to the XML_Node where the element is described.

Definition at line 755 of file Phase.cpp.

 void addElementsFromXML ( const XML_Node & phase )

Add all elements referenced in an XML_Node tree.

Parameters
 phase Reference to the root XML_Node of a phase

Definition at line 780 of file Phase.cpp.

Referenced by Cantera::importPhase().

 void freezeElements ( )

Definition at line 831 of file Phase.cpp.

References Phase::m_elementsFrozen.

Referenced by FixedChemPotSSTP::FixedChemPotSSTP().

 bool elementsFrozen ( )

True if freezeElements has been called.

Definition at line 836 of file Phase.cpp.

References Phase::m_elementsFrozen.

 size_t addUniqueElementAfterFreeze ( const std::string & symbol, doublereal weight, int atomicNumber, doublereal entropy298 = ENTROPY298_UNKNOWN, int elem_type = CT_ELEM_TYPE_ABSPOS )

Add an element after elements have been frozen, checking for uniqueness The uniqueness is checked by comparing the string symbol.

If not unique, nothing is done.

Parameters
 symbol String symbol of the element weight Atomic weight of the element (kg kmol-1). 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 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, i.e., an element.

Definition at line 841 of file Phase.cpp.

Referenced by LatticeSolidPhase::installSlavePhases().

 void addUniqueSpecies ( const std::string & name, const doublereal * comp, doublereal charge = 0.0, doublereal size = 1.0 )

Add a species to the phase, checking for uniqueness of the name This routine checks for uniqueness of the string name.

It only adds the species if it is unique.

Parameters
 name String name of the species comp Array containing the elemental composition of the species. charge Charge of the species. Defaults to zero. size Size of the species (meters). Defaults to 1 meter.

Definition at line 919 of file Phase.cpp.

 void freezeSpecies ( )
virtual

Prepare to use them for calculation of mixture properties.

Definition at line 952 of file Phase.cpp.

References Phase::init(), Phase::m_speciesFrozen, and Phase::molecularWeights().

Referenced by FixedChemPotSSTP::FixedChemPotSSTP(), and Cantera::importPhase().

 bool speciesFrozen ( )
inline

True if freezeSpecies has been called.

Definition at line 694 of file Phase.h.

References Phase::m_speciesFrozen.

 int stateMFNumber ( ) const
inline

Return the State Mole Fraction Number.

Definition at line 701 of file Phase.h.

References Phase::m_stateNum.

Referenced by SimpleTransport::update_C(), and LiquidTransport::update_C().

 void stateMFChangeCalc ( bool forceChange = false )
inline

Every time the mole fractions have changed, this routine will increment the stateMFNumber.

@param forceChange If this is true then the stateMFNumber always


changes. This defaults to false.

Deprecated:

Definition at line 115 of file Phase.cpp.

References Phase::m_stateNum.

 void init ( const vector_fp & mw )
protected

Initialize. Make a local copy of the vector of molecular weights, and resize the composition arrays to the appropriate size.

Parameters
 mw Vector of molecular weights of the species.

Definition at line 958 of file Phase.cpp.

Referenced by Phase::freezeSpecies().

 void setMolecularWeight ( const int k, const double mw )
inlineprotected

Set the molecular weight of a single species to a given value.

Parameters
 k id of the species mw Molecular Weight (kg kmol-1)

Definition at line 722 of file Phase.h.

References Phase::m_molwts, and Phase::m_rmolwts.

## Member Data Documentation

 size_t m_ndim
protected

Dimensionality of the phase.

Volumetric phases have dimensionality 3 and surface phases have dimensionality 2.

Definition at line 731 of file Phase.h.

Referenced by Phase::nDim(), Phase::operator=(), and Phase::setNDim().

 vector_fp m_speciesComp
protected

Atomic composition of the species.

The number of atoms of element i in species k is equal to m_speciesComp[k * m_mm + i] The length of this vector is equal to m_kk * m_mm

Definition at line 736 of file Phase.h.

 vector_fp m_speciesSize
protected

Vector of species sizes.

length m_kk. Used in some equations of state which employ the constant partial molar volume approximation.

Definition at line 740 of file Phase.h.

 XML_Node* m_xml
private

XML node containing the XML info for this phase.

Definition at line 745 of file Phase.h.

Referenced by Phase::operator=(), Phase::xml(), and Phase::~Phase().

 std::string m_id
private

ID of the phase.

This is the value of the ID attribute of the XML phase node. The field will stay that way even if the name is changed.

Definition at line 749 of file Phase.h.

Referenced by Phase::id(), Phase::operator=(), Phase::setID(), and Phase::speciesIndex().

 std::string m_name
private

Name of the phase.

Initially, this is the value of the ID attribute of the XML phase node. It may be changed to another value during the course of a calculation.

Definition at line 754 of file Phase.h.

 doublereal m_temp
private

Temperature (K). This is an independent variable.

Definition at line 756 of file Phase.h.

Referenced by Phase::operator=(), Phase::setTemperature(), and Phase::temperature().

 doublereal m_dens
private

Density (kg m-3).

This is an independent variable except in the incompressible degenerate case. Thus, the pressure is determined from this variable rather than other way round.

Definition at line 761 of file Phase.h.

 doublereal m_mmw
private

mean molecular weight of the mixture (kg kmol-1)

Definition at line 763 of file Phase.h.

 vector_fp m_ym
mutableprivate

m_ym[k] = mole fraction of species k divided by the mean molecular weight of mixture.

Definition at line 767 of file Phase.h.

 vector_fp m_y
mutableprivate

species mass fractions

Definition at line 769 of file Phase.h.

 vector_fp m_molwts
private

species molecular weights (kg kmol-1)

Definition at line 771 of file Phase.h.

 vector_fp m_rmolwts
private

inverse of species molecular weights (kmol kg-1)

Definition at line 773 of file Phase.h.

 int m_stateNum
private

State Change variable.

Whenever the mole fraction vector changes, this int is incremented.

Deprecated:

Definition at line 778 of file Phase.h.

Referenced by Phase::operator=(), Phase::stateMFChangeCalc(), and Phase::stateMFNumber().

 bool m_speciesFrozen
private

Boolean indicating whether the number of species has been frozen.

During the construction of the phase, this is false. After construction of the the phase, this is true.

Definition at line 783 of file Phase.h.

Referenced by Phase::freezeSpecies(), Phase::operator=(), and Phase::speciesFrozen().

 bool m_elementsFrozen
private

If this is true, then no elements may be added to the object.

Definition at line 786 of file Phase.h.

 std::vector m_speciesNames
private

Vector of the species names.

Definition at line 789 of file Phase.h.

 size_t m_mm
private

Number of elements.

Definition at line 791 of file Phase.h.

 vector_fp m_atomicWeights
private

element atomic weights (kg kmol-1)

Definition at line 792 of file Phase.h.

 vector_int m_atomicNumbers
private

element atomic numbers

Definition at line 793 of file Phase.h.

Referenced by Phase::addUniqueElement(), Phase::atomicNumber(), and Phase::operator=().

 std::vector m_elementNames
private

element names

Definition at line 794 of file Phase.h.

 vector_int m_elem_type
private

Vector of element types.

Definition at line 795 of file Phase.h.

 vector_fp m_entropy298
private

Entropy at 298.15 K and 1 bar of stable state pure elements (J kmol-1)

Definition at line 798 of file Phase.h.

Referenced by Phase::addUniqueElement(), Phase::entropyElement298(), and Phase::operator=().

The documentation for this class was generated from the following files: