[Thermo] Remove special case for aqueous phases in VPStandardStateTP

The flag 'm_useTmpRefStateStorage' used when one of the species was PDSS_Water
reduced functionality and provided no performance benefit.
This commit is contained in:
Ray Speth 2017-02-19 15:01:54 -05:00
parent 461b63e462
commit 3ea2a6caf3
2 changed files with 9 additions and 48 deletions

View file

@ -280,10 +280,6 @@ protected:
*/ */
std::vector<std::unique_ptr<PDSS>> m_PDSS_storage; std::vector<std::unique_ptr<PDSS>> m_PDSS_storage;
//! boolean indicating whether temporary reference state storage is used ->
//! default is true
bool m_useTmpRefStateStorage;
//! Vector containing the species reference enthalpies at T = m_tlast //! Vector containing the species reference enthalpies at T = m_tlast
//! and P = p_ref. //! and P = p_ref.
mutable vector_fp m_h0_RT; mutable vector_fp m_h0_RT;

View file

@ -26,8 +26,7 @@ namespace Cantera
VPStandardStateTP::VPStandardStateTP() : VPStandardStateTP::VPStandardStateTP() :
m_Pcurrent(OneAtm), m_Pcurrent(OneAtm),
m_Tlast_ss(-1.0), m_Tlast_ss(-1.0),
m_Plast_ss(-1.0), m_Plast_ss(-1.0)
m_useTmpRefStateStorage(true)
{ {
} }
@ -110,68 +109,38 @@ const vector_fp& VPStandardStateTP::getStandardVolumes() const
void VPStandardStateTP::getEnthalpy_RT_ref(doublereal* hrt) const void VPStandardStateTP::getEnthalpy_RT_ref(doublereal* hrt) const
{ {
updateStandardStateThermo(); updateStandardStateThermo();
if (m_useTmpRefStateStorage) { std::copy(m_h0_RT.begin(), m_h0_RT.end(), hrt);
std::copy(m_h0_RT.begin(), m_h0_RT.end(), hrt);
} else {
throw NotImplementedError("VPStandardStateTP::getEnthalpy_RT_ref");
}
} }
void VPStandardStateTP::getGibbs_RT_ref(doublereal* grt) const void VPStandardStateTP::getGibbs_RT_ref(doublereal* grt) const
{ {
updateStandardStateThermo(); updateStandardStateThermo();
if (m_useTmpRefStateStorage) { std::copy(m_g0_RT.begin(), m_g0_RT.end(), grt);
std::copy(m_g0_RT.begin(), m_g0_RT.end(), grt);
} else {
throw NotImplementedError("VPStandardStateTP::getGibbs_RT_ref");
}
} }
void VPStandardStateTP::getGibbs_ref(doublereal* g) const void VPStandardStateTP::getGibbs_ref(doublereal* g) const
{ {
updateStandardStateThermo(); updateStandardStateThermo();
if (m_useTmpRefStateStorage) { std::copy(m_g0_RT.begin(), m_g0_RT.end(), g);
std::copy(m_g0_RT.begin(), m_g0_RT.end(), g); scale(g, g+m_kk, g, RT());
scale(g, g+m_kk, g, RT());
} else {
for (size_t k = 0; k < m_kk; k++) {
PDSS* kPDSS = m_PDSS_storage[k].get();
kPDSS->setState_TP(m_tlast, m_Plast_ss);
double h0_RT = kPDSS->enthalpy_RT_ref();
double s0_R = kPDSS->entropy_R_ref();
g[k] = RT() * (h0_RT - s0_R);
}
}
} }
const vector_fp& VPStandardStateTP::Gibbs_RT_ref() const const vector_fp& VPStandardStateTP::Gibbs_RT_ref() const
{ {
updateStandardStateThermo(); updateStandardStateThermo();
if (m_useTmpRefStateStorage) { return m_g0_RT;
return m_g0_RT;
} else {
throw NotImplementedError("VPStandardStateTP::getGibbs_RT_ref");
}
} }
void VPStandardStateTP::getEntropy_R_ref(doublereal* sr) const void VPStandardStateTP::getEntropy_R_ref(doublereal* sr) const
{ {
updateStandardStateThermo(); updateStandardStateThermo();
if (m_useTmpRefStateStorage) { std::copy(m_s0_R.begin(), m_s0_R.end(), sr);
std::copy(m_s0_R.begin(), m_s0_R.end(), sr);
} else {
throw NotImplementedError("VPStandardStateTP::getEntropy_R_ref");
}
} }
void VPStandardStateTP::getCp_R_ref(doublereal* cpr) const void VPStandardStateTP::getCp_R_ref(doublereal* cpr) const
{ {
updateStandardStateThermo(); updateStandardStateThermo();
if (m_useTmpRefStateStorage) { std::copy(m_cp0_R.begin(), m_cp0_R.end(), cpr);
std::copy(m_cp0_R.begin(), m_cp0_R.end(), cpr);
} else {
throw NotImplementedError("VPStandardStateTP::getCp_R_ref");
}
} }
void VPStandardStateTP::getStandardVolumes_ref(doublereal* vol) const void VPStandardStateTP::getStandardVolumes_ref(doublereal* vol) const
@ -265,10 +234,6 @@ void VPStandardStateTP::installPDSS(size_t k, unique_ptr<PDSS>&& pdss)
m_spthermo.install_STIT(k, stit); m_spthermo.install_STIT(k, stit);
} }
if (dynamic_cast<PDSS_Water*>(pdss.get())) {
m_useTmpRefStateStorage = false;
}
if (m_PDSS_storage.size() < k+1) { if (m_PDSS_storage.size() < k+1) {
m_PDSS_storage.resize(k+1); m_PDSS_storage.resize(k+1);
} }
@ -298,7 +263,7 @@ void VPStandardStateTP::_updateStandardStateThermo() const
PDSS* kPDSS = m_PDSS_storage[k].get(); PDSS* kPDSS = m_PDSS_storage[k].get();
kPDSS->setState_TP(Tnow, m_Pcurrent); kPDSS->setState_TP(Tnow, m_Pcurrent);
// reference state thermo // reference state thermo
if (Tnow != m_tlast && m_useTmpRefStateStorage) { if (Tnow != m_tlast) {
m_h0_RT[k] = kPDSS->enthalpy_RT_ref(); m_h0_RT[k] = kPDSS->enthalpy_RT_ref();
m_s0_R[k] = kPDSS->entropy_R_ref(); m_s0_R[k] = kPDSS->entropy_R_ref();
m_g0_RT[k] = m_h0_RT[k] - m_s0_R[k]; m_g0_RT[k] = m_h0_RT[k] - m_s0_R[k];