Changed the algorithm for calculation of reference state properties.
It will now calculate the reference state at an elevated pressure for elevated temperature for the real water equation of state. Core dumps were happening around the critical point without this change.
This commit is contained in:
parent
dfe6473b09
commit
103fd934a1
3 changed files with 28 additions and 5 deletions
|
|
@ -392,7 +392,7 @@ namespace Cantera {
|
|||
doublereal
|
||||
PDSS_HKFT::gibbs_RT_ref() const {
|
||||
doublereal m_psave = m_pres;
|
||||
m_pres = OneAtm;
|
||||
m_pres = m_waterSS->pref_safe(m_temp);
|
||||
doublereal ee = gibbs_RT();
|
||||
m_pres = m_psave;
|
||||
return ee;
|
||||
|
|
@ -401,7 +401,7 @@ namespace Cantera {
|
|||
doublereal
|
||||
PDSS_HKFT::enthalpy_RT_ref() const {
|
||||
doublereal m_psave = m_pres;
|
||||
m_pres = OneAtm;
|
||||
m_pres = m_waterSS->pref_safe(m_temp);
|
||||
doublereal hh = enthalpy_RT();
|
||||
m_pres = m_psave;
|
||||
return hh;
|
||||
|
|
@ -410,7 +410,7 @@ namespace Cantera {
|
|||
doublereal
|
||||
PDSS_HKFT::entropy_R_ref() const {
|
||||
doublereal m_psave = m_pres;
|
||||
m_pres = OneAtm;
|
||||
m_pres = m_waterSS->pref_safe(m_temp);
|
||||
doublereal ee = entropy_R();
|
||||
m_pres = m_psave;
|
||||
return ee;
|
||||
|
|
@ -419,7 +419,7 @@ namespace Cantera {
|
|||
doublereal
|
||||
PDSS_HKFT::cp_R_ref() const {
|
||||
doublereal m_psave = m_pres;
|
||||
m_pres = OneAtm;
|
||||
m_pres = m_waterSS->pref_safe(m_temp);
|
||||
doublereal ee = cp_R();
|
||||
m_pres = m_psave;
|
||||
return ee;
|
||||
|
|
@ -428,7 +428,7 @@ namespace Cantera {
|
|||
doublereal
|
||||
PDSS_HKFT::molarVolume_ref() const {
|
||||
doublereal m_psave = m_pres;
|
||||
m_pres = OneAtm;
|
||||
m_pres = m_waterSS->pref_safe(m_temp);
|
||||
doublereal ee = molarVolume();
|
||||
m_pres = m_psave;
|
||||
return ee;
|
||||
|
|
|
|||
|
|
@ -473,6 +473,18 @@ namespace Cantera {
|
|||
m_sub->setState_TR(m_temp, m_dens);
|
||||
}
|
||||
|
||||
doublereal PDSS_Water::pref_safe(doublereal temp) const {
|
||||
if (temp < m_sub->Tcrit()) {
|
||||
doublereal pp = m_sub->psat_est(temp);
|
||||
if (pp > OneAtm) {
|
||||
return pp;
|
||||
}
|
||||
} else {
|
||||
return m_sub->Pcrit();
|
||||
}
|
||||
return OneAtm;
|
||||
}
|
||||
|
||||
// saturation pressure
|
||||
doublereal PDSS_Water::satPressure(doublereal t){
|
||||
doublereal pp = m_sub->psat(t, WATER_LIQUID);
|
||||
|
|
|
|||
|
|
@ -234,6 +234,17 @@ namespace Cantera {
|
|||
* @{
|
||||
*/
|
||||
|
||||
//! Returns a reference pressure value that can be safely calculated by the
|
||||
//! underlying real equation of state for water
|
||||
/*!
|
||||
* Note, this function is needed because trying to calculate a one atm
|
||||
* value around the critical point will cause a crash
|
||||
*
|
||||
* @param temp Temperature (Kelvin)
|
||||
*/
|
||||
doublereal PDSS_Water::pref_safe(doublereal temp) const;
|
||||
|
||||
|
||||
//! Return the molar gibbs free energy divided by RT at reference pressure
|
||||
/*!
|
||||
* Returns the species reference state gibbs free energy divided by RT at the
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue