Cantera  2.1.2
MultiPhaseEquil Class Reference

#include <MultiPhaseEquil.h>

Collaboration diagram for MultiPhaseEquil:
[legend]

## Public Member Functions

MultiPhaseEquil (MultiPhase *mix, bool start=true, int loglevel=0)
Construct a multiphase equilibrium manager for a multiphase mixture. More...

size_t constituent (size_t m)

void getStoichVector (size_t rxn, vector_fp &nu)

int iterations ()

doublereal equilibrate (int XY, doublereal err=1.0e-9, int maxsteps=1000, int loglevel=-99)

doublereal error ()

std::string reactionString (size_t j)
Return a string specifying the jth reaction. More...

void printInfo (int loglevel)

void setInitialMixMoles (int loglevel=0)

size_t componentIndex (size_t n)

void reportCSV (const std::string &reportFile)

double phaseMoles (size_t iph) const

## Protected Member Functions

void getComponents (const std::vector< size_t > &order)
This method finds a set of component species and a complete set of formation reactions for the non-components in terms of the components. More...

int setInitialMoles (int loglevel=0)
Estimate the initial mole numbers. More...

void computeN ()

doublereal stepComposition (int loglevel=0)
Take one step in composition, given the gradient of G at the starting point, and a vector of reaction steps dxi. More...

void unsort (vector_fp &x)
Re-arrange a vector of species properties in sorted form (components first) into unsorted, sequential form. More...

void step (doublereal omega, vector_fp &deltaN, int loglevel=0)

doublereal computeReactionSteps (vector_fp &dxi)
Compute the change in extent of reaction for each reaction. More...

void updateMixMoles ()

void finish ()
Clean up the composition. More...

double moles (size_t ns) const

double & moles (size_t ns)

int solutionSpecies (size_t n) const

bool isStoichPhase (size_t n) const

doublereal mu (size_t n) const

std::string speciesName (size_t n) const

size_t nFree () const
Number of degrees of freedom. More...

## Protected Attributes

size_t m_nel_mix

size_t m_nsp_mix

size_t m_np

size_t m_nel

size_t m_nsp

size_t m_eloc

int m_iter

MultiPhasem_mix

doublereal m_press

doublereal m_temp

std::vector< size_t > m_order

DenseMatrix m_N

DenseMatrix m_A

vector_fp m_work

vector_fp m_work2

vector_fp m_work3

vector_fp m_moles

vector_fp m_lastmoles

vector_fp m_dxi

vector_fp m_deltaG_RT

vector_fp m_mu

std::vector< bool > m_majorsp

std::vector< size_t > m_sortindex

vector_int m_lastsort

vector_int m_dsoln

vector_int m_incl_element

vector_int m_incl_species

std::vector< size_t > m_species

std::vector< size_t > m_element

std::vector< bool > m_solnrxn

bool m_force

## Detailed Description

Multiphase chemical equilibrium solver. Class MultiPhaseEquil is designed to be used to set a mixture containing one or more phases to a state of chemical equilibrium. It implements the VCS algorithm, described in Smith and Missen, "Chemical Reaction Equilibrium."

This class only handles chemical equilibrium at a specified temperature and pressure. To compute equilibrium holding other properties fixed, it is necessary to iterate on T and P in an "outer" loop, until the specified properties have the desired values. This is done, for example, in method equilibrate of class MultiPhase.

This class is primarily meant to be used internally by the equilibrate method of class MultiPhase, although there is no reason it cannot be used directly in application programs if desired.

Definition at line 29 of file MultiPhaseEquil.h.

## Constructor & Destructor Documentation

 MultiPhaseEquil ( MultiPhase * mix, bool start = true, int loglevel = 0 )

Construct a multiphase equilibrium manager for a multiphase mixture.

Parameters
 mix Pointer to a multiphase mixture object. start If true, the initial composition will be determined by a linear Gibbs minimization, otherwise the initial mixture composition will be used.

Definition at line 44 of file MultiPhaseEquil.cpp.

## Member Function Documentation

 string reactionString ( size_t j )

Return a string specifying the jth reaction.

Definition at line 554 of file MultiPhaseEquil.cpp.

References Cantera::coeffString(), and MultiPhase::speciesName().

 void getComponents ( const std::vector< size_t > & order )
protected

This method finds a set of component species and a complete set of formation reactions for the non-components in terms of the components.

In most cases, many different component sets are possible, and therefore neither the components returned by this method nor the formation reactions are unique. The algorithm used here is described in Smith and Missen, Chemical Reaction Equilibrium Analysis.

The component species are taken to be the first M species in array 'species' that have linearly-independent compositions.

Parameters
 order On entry, vector order should contain species index numbers in the order of decreasing desirability as a component. For example, if it is desired to choose the components from among the major species, this array might list species index numbers in decreasing order of mole fraction. If array 'species' does not have length = nSpecies(), then the species will be considered as candidates to be components in declaration order, beginning with the first phase added.

Definition at line 352 of file MultiPhaseEquil.cpp.

 int setInitialMoles ( int loglevel = 0 )
protected

Estimate the initial mole numbers.

This is done by running each reaction as far forward or backward as possible, subject to the constraint that all mole numbers remain non-negative. Reactions for which $$\Delta \mu^0$$ are positive are run in reverse, and ones for which it is negative are run in the forward direction. The end result is equivalent to solving the linear programming problem of minimizing the linear Gibbs function subject to the element and non- negativity constraints.

Definition at line 268 of file MultiPhaseEquil.cpp.

Referenced by MultiPhaseEquil::MultiPhaseEquil().

 doublereal stepComposition ( int loglevel = 0 )
protected

Take one step in composition, given the gradient of G at the starting point, and a vector of reaction steps dxi.

Definition at line 617 of file MultiPhaseEquil.cpp.

 void unsort ( vector_fp & x )
protected

Re-arrange a vector of species properties in sorted form (components first) into unsorted, sequential form.

Definition at line 503 of file MultiPhaseEquil.cpp.

Referenced by MultiPhaseEquil::MultiPhaseEquil(), and MultiPhaseEquil::stepComposition().

 doublereal computeReactionSteps ( vector_fp & dxi )
protected

Compute the change in extent of reaction for each reaction.

Definition at line 723 of file MultiPhaseEquil.cpp.

Referenced by MultiPhaseEquil::stepComposition().

 void finish ( )
protected

Clean up the composition.

The solution algorithm can leave some species in stoichiometric condensed phases with very small negative mole numbers. This method simply sets these to zero.

Definition at line 258 of file MultiPhaseEquil.cpp.

References DATA_PTR, and MultiPhase::setMoles().

 size_t nFree ( ) const
inlineprotected

Number of degrees of freedom.

Definition at line 167 of file MultiPhaseEquil.h.

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