24 m_constMolarVolume(-1.0)
33 size_t spindex,
const std::string& inputFile,
const std::string&
id) :
36 m_constMolarVolume(-1.0)
49 m_constMolarVolume(-1.0)
58 m_constMolarVolume(-1.0)
86 const XML_Node& phaseNode,
bool spInstalled)
92 throw CanteraError(
"PDSS_SSVol::constructPDSSXML",
"spInstalled false not handled");
98 "no standardState Node for species " + speciesNode.
name());
100 std::string model = ss->
attrib(
"model");
101 if (model ==
"constant_incompressible" || model ==
"constant") {
104 }
else if (model ==
"temperature_polynomial") {
109 " Didn't get 4 density polynomial numbers for species " + speciesNode.
name());
111 }
else if (model ==
"density_temperature_polynomial") {
116 " Didn't get 4 density polynomial numbers for species " + speciesNode.
name());
120 "standardState model for species isn't constant_incompressible: " + speciesNode.
name());
125 const std::string& inputFile,
const std::string&
id)
127 if (inputFile.size() == 0) {
129 "input file is null");
132 ifstream fin(path.c_str());
134 throw CanteraError(
"PDSS_SSVol::initThermo",
"could not open "
135 +path+
" for reading.");
147 "ERROR: Can not find phase named " +
148 id +
" in file named " + inputFile);
153 &(fxml_phase->
root()));
258 d2VdT2_ = 2.0 * TCoeff_[2] + 6.0 * m_temp * TCoeff_[3];
262 doublereal dens2 = dens * dens;
264 doublereal d2densdT2 = 2.0 * TCoeff_[2] + 6.0 * m_temp * TCoeff_[3];
266 d2VdT2_ = 2.0 *
m_mw / (dens2 * dens) * ddensdT * ddensdT -
m_mw / dens2 * d2densdT2;
268 throw CanteraError(
"PDSS_SSVol::calcMolarVolume",
"unimplemented");
276 if (fabs(deltaP) < 1.0E-10) {
298 if (fabs(deltaP) < 1.0E-10) {
322 if (fabs(rhoStored - rho) / (rhoStored + rho) > 1.0E-4) {
324 "Inconsistent supplied rho");
XML_Node * findByAttr(const std::string &attr, const std::string &val, int depth=100000) const
This routine carries out a recursive search for an XML node based on an attribute of each XML node...
PDSS_SSVol & operator=(const PDSS_SSVol &b)
Assignment operator.
doublereal molecularWeight(size_t k) const
Molecular weight of species k.
virtual doublereal molarVolume() const
Return the molar volume at standard state.
virtual doublereal enthalpy_RT() const
Return the standard state molar enthalpy divided by RT.
CTML ("Cantera Markup Language") is the variant of XML that Cantera uses to store data...
XML_Node * findXMLPhase(XML_Node *root, const std::string &idtarget)
Search an XML_Node tree for a named phase XML_Node.
virtual doublereal satPressure(doublereal t)
saturation pressure
SpeciesThermo * m_spthermo
Pointer to the species thermodynamic property manager.
virtual doublereal cv_mole() const
Return the molar const volume heat capacity in units of J kmol-1 K-1.
void constructPDSSXML(VPStandardStateTP *vptp_ptr, size_t spindex, const XML_Node &speciesNode, const XML_Node &phaseNode, bool spInstalled)
Initialization of a PDSS object using an XML tree.
std::string attrib(const std::string &attr) const
Function returns the value of an attribute.
doublereal * m_cpss_R_ptr
Standard state heat capacity divided by R.
virtual void initThermoXML(const XML_Node &phaseNode, const std::string &id)
Initialization routine for the PDSS object based on the phaseNode.
doublereal * m_h0_RT_ptr
Reference state enthalpy divided by RT.
void calcMolarVolume() const
Does the internal calculation of the volume.
virtual doublereal gibbs_RT() const
Return the molar Gibbs free energy divided by RT.
virtual doublereal maxTemp(size_t k=npos) const =0
Maximum temperature.
virtual void update_one(size_t k, doublereal T, doublereal *cp_R, doublereal *h_RT, doublereal *s_R) const
Like update(), but only updates the single species k.
doublereal m_pres
State of the system - pressure.
virtual void setTemperature(doublereal temp)
Set the internal temperature.
virtual void initThermoXML(const XML_Node &phaseNode, const std::string &id)
Initialization routine for the PDSS object based on the phaseNode.
Class XML_Node is a tree-based representation of the contents of an XML file.
This approximation is for a constant volume.
size_t m_spindex
Species index in the ThermoPhase corresponding to this species.
virtual doublereal intEnergy_mole() const
Return the molar internal Energy in units of J kmol-1.
doublereal * m_gss_RT_ptr
Standard state Gibbs free energy divided by RT.
PDSS_enumType m_pdssType
Enumerated type describing the type of the PDSS object.
XML_Node & child(const size_t n) const
Return a changeable reference to the n'th child of the current node.
doublereal * m_sss_R_ptr
Standard state entropy divided by R.
virtual void setPressure(doublereal pres)
Sets the pressure in the object.
virtual doublereal cp_R_ref() const
Return the molar heat capacity divided by R at reference pressure.
const XML_Node * findByName(const std::string &nm, int depth=100000) const
This routine carries out a recursive search for an XML node based on the name of the node...
virtual doublereal enthalpy_RT_ref() const
Return the molar enthalpy divided by RT at reference pressure.
virtual void initThermo()
Initialization routine for all of the shallow pointers.
virtual doublereal gibbs_RT_ref() const
Return the molar Gibbs free energy divided by RT at reference pressure.
doublereal d2VdT2_
2nd derivative of the volume wrt temperature
SSVolume_Model_enumType volumeModel_
Enumerated data type describing the type of volume model used to calculate the standard state volume ...
doublereal m_constMolarVolume
Value of the constant molar volume for the species.
std::string name() const
Returns the name of the XML node.
Declarations for the class PDSS_SSVol (pressure dependent standard state) which handles calculations ...
This approximation is for a species with a quadratic polynomial in temperature.
virtual doublereal molarVolume_ref() const
Return the molar volume at reference pressure.
virtual void setState_TP(doublereal temp, doublereal pres)
Set the internal temperature and pressure.
virtual doublereal refPressure(size_t k=npos) const =0
The reference-state pressure for species k.
doublereal * m_s0_R_ptr
Reference state entropy divided by R.
Base class for exceptions thrown by Cantera classes.
This is a filter class for ThermoPhase that implements some prepatory steps for efficiently handling ...
vector_fp TCoeff_
coefficients for the temperature representation
doublereal dVdT_
Derivative of the volume wrt temperature.
doublereal m_maxTemp
Maximum temperature.
doublereal m_minTemp
Minimum temperature.
Class for pressure dependent standard states that uses a standard state volume model of some sort...
doublereal * m_hss_RT_ptr
Standard state enthalpy divided by RT.
virtual doublereal minTemp(size_t k=npos) const =0
Minimum temperature.
virtual void initThermo()
Initialization routine for all of the shallow pointers.
virtual doublereal density() const
Return the standard state density at standard state.
virtual doublereal cp_R() const
Return the molar const pressure heat capacity divided by RT.
virtual doublereal cp_mole() const
Return the molar const pressure heat capacity in units of J kmol-1 K-1.
Header file for a derived class of ThermoPhase that handles variable pressure standard state methods ...
virtual doublereal entropy_R_ref() const
Return the molar entropy divided by R at reference pressure.
Virtual base class for a species with a pressure dependent standard state.
virtual PDSS * duplMyselfAsPDSS() const
Duplication routine for objects which inherit from PDSS.
size_t getFloatArray(const XML_Node &node, std::vector< doublereal > &v, const bool convert, const std::string &unitsString, const std::string &nodeName)
This function reads the current node or a child node of the current node with the default name...
virtual doublereal entropy_R() const
Return the standard state entropy divided by RT.
VPStandardStateTP * m_tp
ThermoPhase which this species belongs to.
const doublereal GasConstant
Universal Gas Constant. [J/kmol/K].
doublereal m_temp
Current temperature used by the PDSS object.
PDSS & operator=(const PDSS &b)
Assignment operator.
doublereal getFloat(const XML_Node &parent, const std::string &name, const std::string &type)
Get a floating-point value from a child element.
doublereal * m_g0_RT_ptr
Reference state Gibbs free energy divided by RT.
doublereal * m_cp0_R_ptr
Reference state heat capacity divided by R.
virtual SpeciesThermo & speciesThermo(int k=-1)
Return a changeable reference to the calculation manager for species reference-state thermodynamic pr...
PDSS_SSVol(VPStandardStateTP *tp, size_t spindex)
Constructor.
virtual void setState_TR(doublereal temp, doublereal rho)
Set the internal temperature and density.
This approximation is for a species where the density is expressed as a quadratic polynomial in tempe...
doublereal * m_Vss_ptr
Standard State molar volume (m3 kg-1)
doublereal * m_V0_ptr
Reference state molar volume (m3 kg-1)
void constructPDSSFile(VPStandardStateTP *vptp_ptr, size_t spindex, const std::string &inputFile, const std::string &id)
Initialization of a PDSS object using an input XML file.
XML_Node & root() const
Return the root of the current XML_Node tree.
void build(std::istream &f)
Main routine to create an tree-like representation of an XML file.
std::string speciesName(size_t k) const
Name of the species with index k.
XML_Node * get_XML_NameID(const std::string &nameTarget, const std::string &file_ID, XML_Node *root)
This routine will locate an XML node in either the input XML tree or in another input file specified ...
doublereal m_p0
Reference state pressure of the species.
doublereal m_mw
Molecular Weight of the species.