doxygen updates for LatticeSolidPhase.

There is still a lot of work to be done for this object, including
validation examples.
This commit is contained in:
Harry Moffat 2010-07-18 21:21:38 +00:00
parent 60678fc856
commit 942fa9c2ec
4 changed files with 96 additions and 37 deletions

View file

@ -57,7 +57,7 @@ namespace Cantera {
}
constructPhaseFile(inputFile, id);
}
//====================================================================================================================
IdealSolidSolnPhase::IdealSolidSolnPhase(XML_Node& root, std::string id,
int formGC) :
ThermoPhase(),
@ -75,12 +75,12 @@ namespace Cantera {
}
constructPhaseXML(root, id);
}
//====================================================================================================================
IdealSolidSolnPhase::IdealSolidSolnPhase(const IdealSolidSolnPhase &b)
{
*this = b;
}
//====================================================================================================================
IdealSolidSolnPhase& IdealSolidSolnPhase::
operator=(const IdealSolidSolnPhase &b) {
@ -117,7 +117,7 @@ namespace Cantera {
IdealSolidSolnPhase *ii = new IdealSolidSolnPhase(*this);
return (ThermoPhase*) ii;
}
//====================================================================================================================
/**
* Equation of state flag. Returns the value cIdealGas, defined
* in mix_defs.h.

View file

@ -34,7 +34,6 @@ namespace Cantera {
// Base empty constructor
LatticeSolidPhase::LatticeSolidPhase() :
m_mm(0),
m_kk(0),
m_tlast(0.0),
m_press(-1.0),
m_molar_density(0.0),
@ -50,7 +49,6 @@ namespace Cantera {
*/
LatticeSolidPhase::LatticeSolidPhase(const LatticeSolidPhase &right) :
m_mm(0),
m_kk(0),
m_tlast(0.0),
m_press(-1.0),
m_molar_density(0.0),
@ -70,7 +68,6 @@ namespace Cantera {
if (&right != this) {
ThermoPhase::operator=(right);
m_mm = right.m_mm;
m_kk = right.m_kk;
m_tlast = right.m_tlast;
m_press = right.m_press;
m_molar_density = right.m_molar_density;
@ -180,7 +177,17 @@ namespace Cantera {
}
//====================================================================================================================
void LatticeSolidPhase::setMoleFractions(const doublereal* x) {
// Set the mole fractions to the specified values, and then
// normalize them so that they sum to 1.0 for each of the subphases
/*
*
* @param x Input vector of mole fractions. There is no restriction
* on the sum of the mole fraction vector. Internally,
* this object will pass portions of this vector to the sublattices which assume that the portions
* individually sum to one.
* Length is m_kk.
*/
void LatticeSolidPhase::setMoleFractions(const doublereal* const x) {
int nsp, strt = 0;
doublereal sum = 0.0;
for (int n = 0; n < m_nlattice; n++) {
@ -197,7 +204,14 @@ namespace Cantera {
State::setMoleFractions(DATA_PTR(m_x));
}
//====================================================================================================================
void LatticeSolidPhase::getMoleFractions(doublereal* x) const {
// Get the species mole fraction vector.
/*
* On output the mole fraction vector will sum to one for each of the subphases which make up this phase.
*
* @param x On return, x contains the mole fractions. Must have a
* length greater than or equal to the number of species.
*/
void LatticeSolidPhase::getMoleFractions(doublereal* const x) const {
int nsp, strt = 0;
State::getMoleFractions(x);
doublereal sum;
@ -249,6 +263,12 @@ namespace Cantera {
}
}
//====================================================================================================================
// Add in species from Slave phases
/*
* This hook is used for cSS_CONVENTION_SLAVE phases
*
* @param phaseNode XML_Node for the current phase
*/
void LatticeSolidPhase::installSlavePhases(Cantera::XML_Node* phaseNode)
{
int m, k;

View file

@ -37,10 +37,10 @@ namespace Cantera {
//! A phase that is comprised of an additive combination of other lattice phases
/*!
* This is the main way Cantera describes semiconductors and other solid phases.
* This Thermophase object calculates its properties as a sum over other LatticePhase objects. Each of the %LatticePhase
* This %ThermoPhase object calculates its properties as a sum over other LatticePhase objects. Each of the %LatticePhase
* objects is a ThermoPhase object by itself.
*
* The sum over the LatticePhase objects is carried out by weighting each LatticePhase object
* The sum over the %LatticePhase objects is carried out by weighting each %LatticePhase object
* value with the molarDensity of the LatticePhase. Then the resulting quantity is divided by
* the molar density of the total compound. The LatticeSolidPhase object therefore only contains a
* listing of the number of Lattice Phases
@ -237,18 +237,20 @@ namespace Cantera {
*
* @param x Input vector of mole fractions. There is no restriction
* on the sum of the mole fraction vector. Internally,
* this object will normalize this vector before
* storring its contents.
* this object will pass portions of this vector to the sublattices which assume that the portions
* individually sum to one.
* Length is m_kk.
*/
virtual void setMoleFractions(const doublereal *x);
virtual void setMoleFractions(const doublereal * const x);
//! Get the species mole fraction vector.
/*!
* On output the mole fraction vector will sum to one for each of the subphases which make up this phase.
*
* @param x On return, x contains the mole fractions. Must have a
* length greater than or equal to the number of species.
*/
virtual void getMoleFractions(doublereal *x) const;
virtual void getMoleFractions(doublereal * const x) const;
doublereal moleFraction(const int k) const {
return err("not implemented");
@ -262,9 +264,32 @@ namespace Cantera {
return err("not implemented");
}
virtual void setMassFractions(const doublereal *y) {
//! Set the mass fractions to the specified values, and then
//! normalize them so that they sum to 1.0.
/*!
* @param y Array of unnormalized mass fraction values (input).
* Must have a length greater than or equal to the number of species.
* Input vector of mass fractions. There is no restriction
* on the sum of the mass fraction vector. Internally,
* the State object will normalize this vector before
* storring its contents.
* Length is m_kk.
*/
virtual void setMassFractions(const doublereal * const y) {
err("not implemented");
}
//! 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.
*
* @param y Input vector of mass fractions.
* Length is m_kk.
*/
virtual void setMassFractions_NoNorm(const doublereal* const y) {
err("not implemented");
}
@ -296,6 +321,8 @@ namespace Cantera {
//! Add in species from Slave phases
/*!
* This hook is used for cSS_CONVENTION_SLAVE phases
*
* @param phaseNode XML_Node for the current phase
*/
virtual void installSlavePhases(Cantera::XML_Node* phaseNode);
@ -330,20 +357,35 @@ namespace Cantera {
doublereal err(std::string msg) const;
protected:
//! Number of elements
int m_mm;
int m_kk;
mutable doublereal m_tlast;
doublereal m_press;
doublereal m_molar_density;
//! Last temperature at which the reference thermo was calculated
mutable doublereal m_tlast;
int m_nlattice;
std::vector<LatticePhase*> m_lattice;
mutable vector_fp m_x;
//! Current value of the pressure
doublereal m_press;
//! Current value of the molar density
doublereal m_molar_density;
//! Number of sublattice phases
int m_nlattice;
//! Vector of sublattic ThermoPhase objects
std::vector<LatticePhase *> m_lattice;
//! Vector of mole fractions
/*!
* Note these mole fractions sum to one when summed over all phases.
* However, this is not what's passed down to the lower m_lattice objects.
*/
mutable vector_fp m_x;
private:
//! Update the reference thermodynamic functions
void _updateThermo() const;
};
}

View file

@ -163,14 +163,12 @@ namespace Cantera {
*/
doublereal massFraction(const int k) const;
/**
* Set the mass fractions to the specified values, and then
* normalize them so that they sum to 1.0.
* @param y Array of unnormalized mass fraction values (input).
* Must have a length greater than or equal to the number of
* species.
*
* @param y Input vector of mass fractions. There is no restriction
//! Set the mass fractions to the specified values, and then
//! normalize them so that they sum to 1.0.
/*!
* @param y Array of unnormalized mass fraction values (input).
* Must have a length greater than or equal to the number of species.
* Input vector of mass fractions. There is no restriction
* on the sum of the mass fraction vector. Internally,
* the State object will normalize this vector before
* storring its contents.
@ -178,12 +176,11 @@ namespace Cantera {
*/
virtual void setMassFractions(const doublereal* const y);
/**
* Set the mass fractions to the specified values without
* normalizing. This is useful when the normalization
//! 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.
* by a constraint equation as part of a larger set of equations.
*
* @param y Input vector of mass fractions.
* Length is m_kk.