Fixed errors in the startups of PDSS_Water and WaterSSTP that had
recently crept in. Started getting rid of property evalulations that also set the state. This is not consistent with the rest of Cantera.
This commit is contained in:
parent
8fd2fe4ada
commit
43ec6ff871
5 changed files with 34 additions and 91 deletions
|
|
@ -242,9 +242,8 @@ namespace Cantera {
|
|||
doublereal presLow = 1.0E-2;
|
||||
doublereal oneBar = 1.0E5;
|
||||
doublereal dens = 1.0E-9;
|
||||
doublereal dd = m_sub->density(T, presLow, WATER_GAS, dens);
|
||||
setTemperature(T);
|
||||
m_dens = dd;
|
||||
m_dens = m_sub->density(T, presLow, WATER_GAS, dens);
|
||||
m_pres = presLow;
|
||||
SW_Offset = 0.0;
|
||||
doublereal s = entropy_mole();
|
||||
s -= GasConstant * log(oneBar/presLow);
|
||||
|
|
@ -260,17 +259,15 @@ namespace Cantera {
|
|||
EW_Offset = -241.826E6 - h;
|
||||
}
|
||||
h = enthalpy_mole();
|
||||
|
||||
//printf("h = %g\n", h);
|
||||
|
||||
|
||||
/*
|
||||
* Set the initial state of the system to 298.15 K and
|
||||
* 1 bar.
|
||||
*/
|
||||
setTemperature(298.15);
|
||||
doublereal rho0 = m_sub->density(298.15, OneAtm, WATER_LIQUID);
|
||||
m_dens = rho0;
|
||||
m_dens = m_sub->density(298.15, OneAtm, WATER_LIQUID);
|
||||
m_pres = OneAtm;
|
||||
}
|
||||
|
||||
void PDSS_Water::initThermo() {
|
||||
|
|
@ -282,27 +279,20 @@ namespace Cantera {
|
|||
PDSS::initThermoXML(phaseNode, id);
|
||||
}
|
||||
|
||||
doublereal PDSS_Water::
|
||||
enthalpy_mole() const {
|
||||
doublereal T = m_temp;
|
||||
doublereal dens = m_dens;
|
||||
doublereal h = m_sub->enthalpy(T, dens);
|
||||
doublereal PDSS_Water::enthalpy_mole() const {
|
||||
doublereal h = m_sub->enthalpy();
|
||||
return (h + EW_Offset);
|
||||
}
|
||||
|
||||
doublereal PDSS_Water::
|
||||
intEnergy_mole() const {
|
||||
doublereal T = m_dens;
|
||||
doublereal dens = m_temp;
|
||||
doublereal u = m_sub->intEnergy(T, dens);
|
||||
doublereal u = m_sub->intEnergy();
|
||||
return (u + EW_Offset);
|
||||
}
|
||||
|
||||
doublereal PDSS_Water::
|
||||
entropy_mole() const {
|
||||
doublereal T = m_temp;
|
||||
doublereal dens = m_dens;
|
||||
doublereal s = m_sub->entropy(T, dens);
|
||||
doublereal s = m_sub->entropy();
|
||||
return (s + SW_Offset);
|
||||
}
|
||||
|
||||
|
|
@ -344,8 +334,8 @@ namespace Cantera {
|
|||
doublereal
|
||||
PDSS_Water::gibbs_RT_ref() const {
|
||||
doublereal T = m_temp;
|
||||
doublereal dens0 = m_sub->density(T, m_p0);
|
||||
doublereal h = m_sub->enthalpy(T, dens0);
|
||||
m_sub->density(T, m_p0);
|
||||
doublereal h = m_sub->enthalpy();
|
||||
m_sub->setState_TR(m_temp, m_dens);
|
||||
return ((h + EW_Offset - SW_Offset*T)/(T * GasConstant));
|
||||
}
|
||||
|
|
@ -354,8 +344,8 @@ namespace Cantera {
|
|||
doublereal
|
||||
PDSS_Water::enthalpy_RT_ref() const {
|
||||
doublereal T = m_temp;
|
||||
doublereal dens0 = m_sub->density(T, m_p0);
|
||||
doublereal h = m_sub->enthalpy(T, dens0);
|
||||
m_sub->density(T, m_p0);
|
||||
doublereal h = m_sub->enthalpy();
|
||||
m_sub->setState_TR(m_temp, m_dens);
|
||||
return ((h + EW_Offset)/(T * GasConstant));
|
||||
}
|
||||
|
|
@ -363,8 +353,8 @@ namespace Cantera {
|
|||
doublereal PDSS_Water::
|
||||
entropy_R_ref() const {
|
||||
doublereal T = m_temp;
|
||||
doublereal dens0 = m_sub->density(T, m_p0);
|
||||
doublereal s = m_sub->entropy(T, dens0);
|
||||
m_sub->density(T, m_p0);
|
||||
doublereal s = m_sub->entropy();
|
||||
m_sub->setState_TR(m_temp, m_dens);
|
||||
return ((s + SW_Offset)/GasConstant);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -396,14 +396,7 @@ void WaterPropsIAPWS::setState_TR(double temperature, double rho) {
|
|||
* Calculate the enthalpy in mks units of
|
||||
* J kmol-1 K-1.
|
||||
*/
|
||||
double WaterPropsIAPWS::
|
||||
enthalpy(double temperature, double rho) {
|
||||
setState_TR(temperature, rho);
|
||||
double hRT = m_phi->enthalpy_RT();
|
||||
return (hRT * Rgas * temperature);
|
||||
}
|
||||
double WaterPropsIAPWS::
|
||||
enthalpy() const {
|
||||
double WaterPropsIAPWS::enthalpy() const {
|
||||
double temperature = T_c/tau;
|
||||
double hRT = m_phi->enthalpy_RT();
|
||||
return (hRT * Rgas * temperature);
|
||||
|
|
@ -414,30 +407,12 @@ enthalpy() const {
|
|||
* Calculate the internal Energy in mks units of
|
||||
* J kmol-1 K-1.
|
||||
*/
|
||||
double WaterPropsIAPWS::
|
||||
intEnergy(double temperature, double rho) {
|
||||
setState_TR(temperature, rho);
|
||||
double uRT = m_phi->intEnergy_RT();
|
||||
return (uRT * Rgas * temperature);
|
||||
}
|
||||
double WaterPropsIAPWS::
|
||||
intEnergy() const{
|
||||
double WaterPropsIAPWS::intEnergy() const{
|
||||
double temperature = T_c / tau;
|
||||
double uRT = m_phi->intEnergy_RT();
|
||||
return (uRT * Rgas * temperature);
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the enthalpy in mks units of
|
||||
* J kmol-1 K-1.
|
||||
*/
|
||||
double WaterPropsIAPWS::
|
||||
entropy(double temperature, double rho) {
|
||||
setState_TR(temperature, rho);
|
||||
double sR = m_phi->entropy_R();
|
||||
return (sR * Rgas);
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the enthalpy in mks units of
|
||||
* J kmol-1 K-1.
|
||||
|
|
|
|||
|
|
@ -188,40 +188,16 @@ public:
|
|||
//! using the last temperature and density
|
||||
double Gibbs() const;
|
||||
|
||||
//! Calculate the enthalpy in mks units of J kmol-1
|
||||
/*!
|
||||
* @param temperature temperature (kelvin)
|
||||
* @param rho density (kg m-3)
|
||||
*/
|
||||
double enthalpy(double temperature, double rho);
|
||||
|
||||
//! Calculate the enthalpy in mks units of J kmol-1
|
||||
//! using the last temperature and density
|
||||
double enthalpy() const;
|
||||
|
||||
//! Calculate the internal energy in mks units of J kmol-1
|
||||
/*!
|
||||
* @param temperature temperature (kelvin)
|
||||
* @param rho density (kg m-3)
|
||||
*/
|
||||
double intEnergy(double temperature, double rho);
|
||||
|
||||
//! Calculate the internal energy in mks units of J kmol-1
|
||||
//! at the last internal energy
|
||||
double intEnergy() const;
|
||||
|
||||
//! Calculate the entropy in mks units of J kmol-1 K-1
|
||||
/*!
|
||||
* @param temperature temperature (kelvin)
|
||||
* @param rho density (kg m-3)
|
||||
*/
|
||||
double entropy(double temperature, double rho);
|
||||
|
||||
//! Calculate the entropy in mks units of J kmol-1 K-1
|
||||
//! at the last temperature and density
|
||||
double entropy() const;
|
||||
|
||||
|
||||
|
||||
//! Calculate the constant volume heat capacity in mks units of J kmol-1 K-1
|
||||
/*!
|
||||
* @param temperature temperature (kelvin)
|
||||
|
|
|
|||
|
|
@ -233,13 +233,14 @@ namespace Cantera {
|
|||
* Set the baseline
|
||||
*/
|
||||
doublereal T = 298.15;
|
||||
State::setDensity(7.0E-8);
|
||||
State::setTemperature(T);
|
||||
|
||||
doublereal presLow = 1.0E-2;
|
||||
doublereal oneBar = 1.0E5;
|
||||
doublereal dens = density();
|
||||
doublereal dd = m_sub->density(T, presLow, WATER_GAS, dens);
|
||||
setTemperature(T);
|
||||
doublereal dd = m_sub->density(T, presLow, WATER_GAS, 7.0E-8);
|
||||
setDensity(dd);
|
||||
setTemperature(T);
|
||||
SW_Offset = 0.0;
|
||||
doublereal s = entropy_mole();
|
||||
s -= GasConstant * log(oneBar/presLow);
|
||||
|
|
@ -291,8 +292,7 @@ namespace Cantera {
|
|||
*/
|
||||
void WaterSSTP::getEnthalpy_RT(doublereal* hrt) const {
|
||||
double T = temperature();
|
||||
double dens = density();
|
||||
doublereal h = m_sub->enthalpy(T, dens);
|
||||
doublereal h = m_sub->enthalpy();
|
||||
*hrt = (h + EW_Offset)/(GasConstant*T);
|
||||
}
|
||||
|
||||
|
|
@ -301,9 +301,7 @@ namespace Cantera {
|
|||
* J kmol-1
|
||||
*/
|
||||
void WaterSSTP::getIntEnergy_RT(doublereal *ubar) const {
|
||||
double T = temperature();
|
||||
double dens = density();
|
||||
doublereal u = m_sub->intEnergy(T, dens);
|
||||
doublereal u = m_sub->intEnergy();
|
||||
*ubar = (u + EW_Offset)/GasConstant;
|
||||
}
|
||||
|
||||
|
|
@ -311,9 +309,7 @@ namespace Cantera {
|
|||
* Calculate the dimensionless entropy
|
||||
*/
|
||||
void WaterSSTP::getEntropy_R(doublereal* sr) const {
|
||||
double T = temperature();
|
||||
double dens = density();
|
||||
doublereal s = m_sub->entropy(T, dens);
|
||||
doublereal s = m_sub->entropy();
|
||||
sr[0] = (s + SW_Offset) / GasConstant;
|
||||
}
|
||||
|
||||
|
|
@ -380,7 +376,7 @@ namespace Cantera {
|
|||
if (dd <= 0.0) {
|
||||
throw CanteraError("setPressure", "error");
|
||||
}
|
||||
doublereal h = m_sub->enthalpy(T, dd);
|
||||
doublereal h = m_sub->enthalpy();
|
||||
*hrt = (h + EW_Offset) / (GasConstant * T);
|
||||
dd = m_sub->density(T, p, waterState, dens);
|
||||
}
|
||||
|
|
@ -429,7 +425,7 @@ namespace Cantera {
|
|||
}
|
||||
m_sub->setState_TR(T, dd);
|
||||
|
||||
doublereal s = m_sub->entropy(T, dd);
|
||||
doublereal s = m_sub->entropy();
|
||||
*sr = (s + SW_Offset)/ (GasConstant);
|
||||
dd = m_sub->density(T, p, waterState, dens);
|
||||
|
||||
|
|
@ -539,7 +535,6 @@ namespace Cantera {
|
|||
// critical density
|
||||
doublereal WaterSSTP::critDensity() const { return m_sub->Rhocrit(); }
|
||||
|
||||
|
||||
|
||||
void WaterSSTP::setTemperature(double temp) {
|
||||
State::setTemperature(temp);
|
||||
|
|
@ -547,7 +542,11 @@ namespace Cantera {
|
|||
m_sub->setState_TR(temp, dd);
|
||||
}
|
||||
|
||||
|
||||
void WaterSSTP::setDensity(double dens) {
|
||||
State::setDensity(dens);
|
||||
doublereal temp = temperature();
|
||||
m_sub->setState_TR(temp, dens);
|
||||
}
|
||||
|
||||
// saturation pressure
|
||||
doublereal WaterSSTP::satPressure(doublereal t) const {
|
||||
|
|
|
|||
|
|
@ -386,7 +386,10 @@ namespace Cantera {
|
|||
*/
|
||||
virtual doublereal vaporFraction() const;
|
||||
|
||||
|
||||
virtual void setTemperature(double temp);
|
||||
|
||||
virtual void setDensity(double dens);
|
||||
|
||||
void constructPhase();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue