Make m_phi a regular member of WaterPropsIAPWS instead of a pointer
This commit is contained in:
parent
3c05e801a4
commit
ffc4ba07da
2 changed files with 32 additions and 45 deletions
|
|
@ -167,9 +167,6 @@ public:
|
|||
//! assignment constructor
|
||||
WaterPropsIAPWS& operator=(const WaterPropsIAPWS& right);
|
||||
|
||||
//! destructor
|
||||
~WaterPropsIAPWS();
|
||||
|
||||
//! Set the internal state of the object wrt temperature and density
|
||||
/*!
|
||||
* @param temperature temperature (kelvin)
|
||||
|
|
@ -446,7 +443,7 @@ private:
|
|||
doublereal& densGas, doublereal& pcorr);
|
||||
|
||||
//! pointer to the underlying object that does the calculations.
|
||||
WaterPropsIAPWSphi* m_phi;
|
||||
mutable WaterPropsIAPWSphi m_phi;
|
||||
|
||||
//! Dimensionless temperature
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -38,22 +38,18 @@ static const doublereal Rgas = 8.314371E3; // Joules kmol-1 K-1
|
|||
|
||||
// Base constructor
|
||||
WaterPropsIAPWS::WaterPropsIAPWS() :
|
||||
m_phi(0),
|
||||
tau(-1.0),
|
||||
delta(-1.0),
|
||||
iState(-30000)
|
||||
{
|
||||
m_phi = new WaterPropsIAPWSphi();
|
||||
}
|
||||
|
||||
WaterPropsIAPWS::WaterPropsIAPWS(const WaterPropsIAPWS& b) :
|
||||
m_phi(0),
|
||||
tau(b.tau),
|
||||
delta(b.delta),
|
||||
iState(b.iState)
|
||||
{
|
||||
m_phi = new WaterPropsIAPWSphi();
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
}
|
||||
|
||||
WaterPropsIAPWS& WaterPropsIAPWS::operator=(const WaterPropsIAPWS& b)
|
||||
|
|
@ -64,16 +60,10 @@ WaterPropsIAPWS& WaterPropsIAPWS::operator=(const WaterPropsIAPWS& b)
|
|||
tau = b.tau;
|
||||
delta = b.delta;
|
||||
iState = b.iState;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
return *this;
|
||||
}
|
||||
|
||||
WaterPropsIAPWS::~WaterPropsIAPWS()
|
||||
{
|
||||
delete m_phi;
|
||||
m_phi = 0;
|
||||
}
|
||||
|
||||
void WaterPropsIAPWS::calcDim(doublereal temperature, doublereal rho)
|
||||
{
|
||||
tau = T_c / temperature;
|
||||
|
|
@ -94,7 +84,7 @@ void WaterPropsIAPWS::calcDim(doublereal temperature, doublereal rho)
|
|||
|
||||
doublereal WaterPropsIAPWS::helmholtzFE() const
|
||||
{
|
||||
doublereal retn = m_phi->phi(tau, delta);
|
||||
doublereal retn = m_phi.phi(tau, delta);
|
||||
doublereal temperature = T_c/tau;
|
||||
doublereal RT = Rgas * temperature;
|
||||
return retn * RT;
|
||||
|
|
@ -102,7 +92,7 @@ doublereal WaterPropsIAPWS::helmholtzFE() const
|
|||
|
||||
doublereal WaterPropsIAPWS::pressure() const
|
||||
{
|
||||
doublereal retn = m_phi->pressureM_rhoRT(tau, delta);
|
||||
doublereal retn = m_phi.pressureM_rhoRT(tau, delta);
|
||||
doublereal rho = delta * Rho_c;
|
||||
doublereal temperature = T_c / tau;
|
||||
return retn * rho * Rgas * temperature/M_water;
|
||||
|
|
@ -144,7 +134,7 @@ doublereal WaterPropsIAPWS::density(doublereal temperature, doublereal pressure,
|
|||
doublereal p_red = pressure * M_water / (Rgas * temperature * Rho_c);
|
||||
deltaGuess = rhoguess / Rho_c;
|
||||
setState_TR(temperature, rhoguess);
|
||||
doublereal delta_retn = m_phi->dfind(p_red, tau, deltaGuess);
|
||||
doublereal delta_retn = m_phi.dfind(p_red, tau, deltaGuess);
|
||||
doublereal density_retn;
|
||||
if (delta_retn >0.0) {
|
||||
delta = delta_retn;
|
||||
|
|
@ -203,9 +193,9 @@ doublereal WaterPropsIAPWS::density_const(doublereal pressure,
|
|||
deltaGuess = rhoguess / Rho_c;
|
||||
|
||||
delta = deltaGuess;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
|
||||
doublereal delta_retn = m_phi->dfind(p_red, tau, deltaGuess);
|
||||
doublereal delta_retn = m_phi.dfind(p_red, tau, deltaGuess);
|
||||
doublereal density_retn;
|
||||
if (delta_retn > 0.0) {
|
||||
delta = delta_retn;
|
||||
|
|
@ -220,7 +210,7 @@ doublereal WaterPropsIAPWS::density_const(doublereal pressure,
|
|||
}
|
||||
|
||||
delta = deltaSave;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
return density_retn;
|
||||
}
|
||||
|
||||
|
|
@ -278,14 +268,14 @@ doublereal WaterPropsIAPWS::isothermalCompressibility() const
|
|||
|
||||
doublereal WaterPropsIAPWS::dpdrho() const
|
||||
{
|
||||
doublereal retn = m_phi->dimdpdrho(tau, delta);
|
||||
doublereal retn = m_phi.dimdpdrho(tau, delta);
|
||||
doublereal temperature = T_c/tau;
|
||||
return retn * Rgas * temperature / M_water;
|
||||
}
|
||||
|
||||
doublereal WaterPropsIAPWS::coeffPresExp() const
|
||||
{
|
||||
return m_phi->dimdpdT(tau, delta);
|
||||
return m_phi.dimdpdT(tau, delta);
|
||||
}
|
||||
|
||||
doublereal WaterPropsIAPWS::coeffThermExp() const
|
||||
|
|
@ -298,7 +288,7 @@ doublereal WaterPropsIAPWS::coeffThermExp() const
|
|||
|
||||
doublereal WaterPropsIAPWS::Gibbs() const
|
||||
{
|
||||
doublereal gRT = m_phi->gibbs_RT();
|
||||
doublereal gRT = m_phi.gibbs_RT();
|
||||
doublereal temperature = T_c/tau;
|
||||
return gRT * Rgas * temperature;
|
||||
}
|
||||
|
|
@ -313,7 +303,7 @@ void WaterPropsIAPWS::corr(doublereal temperature, doublereal pressure,
|
|||
temperature, pressure);
|
||||
}
|
||||
setState_TR(temperature, densLiq);
|
||||
doublereal gibbsLiqRT = m_phi->gibbs_RT();
|
||||
doublereal gibbsLiqRT = m_phi.gibbs_RT();
|
||||
|
||||
densGas = density(temperature, pressure, WATER_GAS, densGas);
|
||||
if (densGas <= 0.0) {
|
||||
|
|
@ -322,7 +312,7 @@ void WaterPropsIAPWS::corr(doublereal temperature, doublereal pressure,
|
|||
temperature, pressure);
|
||||
}
|
||||
setState_TR(temperature, densGas);
|
||||
doublereal gibbsGasRT = m_phi->gibbs_RT();
|
||||
doublereal gibbsGasRT = m_phi.gibbs_RT();
|
||||
|
||||
delGRT = gibbsLiqRT - gibbsGasRT;
|
||||
}
|
||||
|
|
@ -337,7 +327,7 @@ void WaterPropsIAPWS::corr1(doublereal temperature, doublereal pressure,
|
|||
temperature, pressure);
|
||||
}
|
||||
setState_TR(temperature, densLiq);
|
||||
doublereal prL = m_phi->phiR();
|
||||
doublereal prL = m_phi.phiR();
|
||||
|
||||
densGas = density(temperature, pressure, WATER_GAS, densGas);
|
||||
if (densGas <= 0.0) {
|
||||
|
|
@ -346,7 +336,7 @@ void WaterPropsIAPWS::corr1(doublereal temperature, doublereal pressure,
|
|||
temperature, pressure);
|
||||
}
|
||||
setState_TR(temperature, densGas);
|
||||
doublereal prG = m_phi->phiR();
|
||||
doublereal prG = m_phi.phiR();
|
||||
doublereal rhs = (prL - prG) + log(densLiq/densGas);
|
||||
rhs /= (1.0/densGas - 1.0/densLiq);
|
||||
pcorr = rhs * Rgas * temperature / M_water;
|
||||
|
|
@ -417,7 +407,7 @@ int WaterPropsIAPWS::phaseState(bool checkState) const
|
|||
doublereal deltaSave = delta;
|
||||
doublereal deltaDel = rhoDel / Rho_c;
|
||||
delta = deltaDel;
|
||||
m_phi->tdpolycalc(tau, deltaDel);
|
||||
m_phi.tdpolycalc(tau, deltaDel);
|
||||
|
||||
doublereal kappaDel = isothermalCompressibility();
|
||||
doublereal d2rhodp2 = (rhoDel * kappaDel - rho * kappa) / (rhoDel - rho);
|
||||
|
|
@ -427,7 +417,7 @@ int WaterPropsIAPWS::phaseState(bool checkState) const
|
|||
iState = WATER_UNSTABLEGAS;
|
||||
}
|
||||
delta = deltaSave;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -450,7 +440,7 @@ doublereal WaterPropsIAPWS::densSpinodalWater() const
|
|||
doublereal densSatLiq = density_const(p, WATER_LIQUID);
|
||||
doublereal dens_old = densSatLiq;
|
||||
delta = dens_old / Rho_c;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
doublereal dpdrho_old = dpdrho();
|
||||
if (dpdrho_old > 0.0) {
|
||||
rho_high = std::min(dens_old, rho_high);
|
||||
|
|
@ -459,7 +449,7 @@ doublereal WaterPropsIAPWS::densSpinodalWater() const
|
|||
}
|
||||
doublereal dens_new = densSatLiq* (1.0001);
|
||||
delta = dens_new / Rho_c;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
doublereal dpdrho_new = dpdrho();
|
||||
if (dpdrho_new > 0.0) {
|
||||
rho_high = std::min(dens_new, rho_high);
|
||||
|
|
@ -495,7 +485,7 @@ doublereal WaterPropsIAPWS::densSpinodalWater() const
|
|||
dens_new = dens_est;
|
||||
|
||||
delta = dens_new / Rho_c;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
dpdrho_new = dpdrho();
|
||||
if (dpdrho_new > 0.0) {
|
||||
rho_high = std::min(dens_new, rho_high);
|
||||
|
|
@ -518,7 +508,7 @@ doublereal WaterPropsIAPWS::densSpinodalWater() const
|
|||
}
|
||||
// Restore the original delta
|
||||
delta = delta_save;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
return dens_new;
|
||||
}
|
||||
|
||||
|
|
@ -538,7 +528,7 @@ doublereal WaterPropsIAPWS::densSpinodalSteam() const
|
|||
doublereal densSatGas = density_const(p, WATER_GAS);
|
||||
doublereal dens_old = densSatGas;
|
||||
delta = dens_old / Rho_c;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
doublereal dpdrho_old = dpdrho();
|
||||
if (dpdrho_old < 0.0) {
|
||||
rho_high = std::min(dens_old, rho_high);
|
||||
|
|
@ -547,7 +537,7 @@ doublereal WaterPropsIAPWS::densSpinodalSteam() const
|
|||
}
|
||||
doublereal dens_new = densSatGas * (0.99);
|
||||
delta = dens_new / Rho_c;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
doublereal dpdrho_new = dpdrho();
|
||||
if (dpdrho_new < 0.0) {
|
||||
rho_high = std::min(dens_new, rho_high);
|
||||
|
|
@ -582,7 +572,7 @@ doublereal WaterPropsIAPWS::densSpinodalSteam() const
|
|||
dpdrho_old = dpdrho_new;
|
||||
dens_new = dens_est;
|
||||
delta = dens_new / Rho_c;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
dpdrho_new = dpdrho();
|
||||
if (dpdrho_new < 0.0) {
|
||||
rho_high = std::min(dens_new, rho_high);
|
||||
|
|
@ -605,45 +595,45 @@ doublereal WaterPropsIAPWS::densSpinodalSteam() const
|
|||
}
|
||||
// Restore the original delta
|
||||
delta = delta_save;
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
return dens_new;
|
||||
}
|
||||
|
||||
void WaterPropsIAPWS::setState_TR(doublereal temperature, doublereal rho)
|
||||
{
|
||||
calcDim(temperature, rho);
|
||||
m_phi->tdpolycalc(tau, delta);
|
||||
m_phi.tdpolycalc(tau, delta);
|
||||
}
|
||||
|
||||
doublereal WaterPropsIAPWS::enthalpy() const
|
||||
{
|
||||
doublereal temperature = T_c/tau;
|
||||
doublereal hRT = m_phi->enthalpy_RT();
|
||||
doublereal hRT = m_phi.enthalpy_RT();
|
||||
return hRT * Rgas * temperature;
|
||||
}
|
||||
|
||||
doublereal WaterPropsIAPWS::intEnergy() const
|
||||
{
|
||||
doublereal temperature = T_c / tau;
|
||||
doublereal uRT = m_phi->intEnergy_RT();
|
||||
doublereal uRT = m_phi.intEnergy_RT();
|
||||
return uRT * Rgas * temperature;
|
||||
}
|
||||
|
||||
doublereal WaterPropsIAPWS::entropy() const
|
||||
{
|
||||
doublereal sR = m_phi->entropy_R();
|
||||
doublereal sR = m_phi.entropy_R();
|
||||
return sR * Rgas;
|
||||
}
|
||||
|
||||
doublereal WaterPropsIAPWS::cv() const
|
||||
{
|
||||
doublereal cvR = m_phi->cv_R();
|
||||
doublereal cvR = m_phi.cv_R();
|
||||
return cvR * Rgas;
|
||||
}
|
||||
|
||||
doublereal WaterPropsIAPWS::cp() const
|
||||
{
|
||||
doublereal cpR = m_phi->cp_R();
|
||||
doublereal cpR = m_phi.cp_R();
|
||||
return cpR * Rgas;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue