[TPX] Move function implementations out of Sub.h

This commit is contained in:
Ray Speth 2016-10-19 13:50:29 -04:00
parent 6d5e28ec46
commit f6df8f31b3
2 changed files with 68 additions and 53 deletions

View file

@ -42,15 +42,7 @@ public:
virtual ~Substance() {}
void setStdState(double h0 = 0.0, double s0 = 0.0,
double t0 = 298.15, double p0 = 1.01325e5) {
Set(PropertyPair::TP, t0, p0);
double hh = h();
double ss = s();
double hoff = h0 - hh;
double soff = s0 - ss;
m_entropy_offset += soff;
m_energy_offset += hoff;
}
double t0 = 298.15, double p0 = 1.01325e5);
//! @name Information about a substance
//! @{
@ -129,54 +121,14 @@ public:
}
//! Specific heat at constant volume [J/kg/K]
virtual double cv() {
double Tsave = T, dt = 1.e-4*T;
double T1 = std::max(Tmin(), Tsave - dt);
double T2 = std::min(Tmax(), Tsave + dt);
set_T(T1);
double s1 = s();
set_T(T2);
double s2 = s();
set_T(Tsave);
return T*(s2 - s1)/(T2-T1);
}
virtual double cv();
//! Specific heat at constant pressure [J/kg/K]
virtual double cp() {
double Tsave = T, dt = 1.e-4*T;
double T1 = std::max(Tmin(), Tsave - dt);
double T2 = std::min(Tmax(), Tsave + dt);
double p0 = P();
Set(PropertyPair::TP, T1, p0);
double s1 = s();
Set(PropertyPair::TP, T2, p0);
double s2 = s();
Set(PropertyPair::TP, Tsave, p0);
return T*(s2 - s1)/(T2-T1);
}
virtual double cp();
virtual double thermalExpansionCoeff() {
double Tsave = T, dt = 1.e-4*T;
double T1 = std::max(Tmin(), Tsave - dt);
double T2 = std::min(Tmax(), Tsave + dt);
double p0 = P();
Set(PropertyPair::TP, T1, p0);
double v1 = v();
Set(PropertyPair::TP, T2, p0);
double v2 = v();
Set(PropertyPair::TP, Tsave, p0);
return (v2 - v1)/((v2 + v1)*(T2-T1));
}
virtual double thermalExpansionCoeff();
virtual double isothermalCompressibility() {
double Psave = P(), dp = 1.e-4*Psave;
Set(PropertyPair::TP, T, Psave - dp);
double v1 = v();
Set(PropertyPair::TP, T, Psave + dp);
double v2 = v();
Set(PropertyPair::TP, T, Psave);
return -(v2 - v1)/((v2 + v1)*dp);
}
virtual double isothermalCompressibility();
//! @}
//! @name Saturation Properties

View file

@ -34,6 +34,17 @@ Substance::Substance() :
{
}
void Substance::setStdState(double h0, double s0, double t0, double p0)
{
Set(PropertyPair::TP, t0, p0);
double hh = h();
double ss = s();
double hoff = h0 - hh;
double soff = s0 - ss;
m_entropy_offset += soff;
m_energy_offset += hoff;
}
double Substance::P()
{
return TwoPhase() ? Ps() : Pp();
@ -41,6 +52,58 @@ double Substance::P()
const double DeltaT = 0.000001;
double Substance::cv()
{
double Tsave = T, dt = 1.e-4*T;
double T1 = std::max(Tmin(), Tsave - dt);
double T2 = std::min(Tmax(), Tsave + dt);
set_T(T1);
double s1 = s();
set_T(T2);
double s2 = s();
set_T(Tsave);
return T*(s2 - s1)/(T2-T1);
}
double Substance::cp()
{
double Tsave = T, dt = 1.e-4*T;
double T1 = std::max(Tmin(), Tsave - dt);
double T2 = std::min(Tmax(), Tsave + dt);
double p0 = P();
Set(PropertyPair::TP, T1, p0);
double s1 = s();
Set(PropertyPair::TP, T2, p0);
double s2 = s();
Set(PropertyPair::TP, Tsave, p0);
return T*(s2 - s1)/(T2-T1);
}
double Substance::thermalExpansionCoeff()
{
double Tsave = T, dt = 1.e-4*T;
double T1 = std::max(Tmin(), Tsave - dt);
double T2 = std::min(Tmax(), Tsave + dt);
double p0 = P();
Set(PropertyPair::TP, T1, p0);
double v1 = v();
Set(PropertyPair::TP, T2, p0);
double v2 = v();
Set(PropertyPair::TP, Tsave, p0);
return (v2 - v1)/((v2 + v1)*(T2-T1));
}
double Substance::isothermalCompressibility()
{
double Psave = P(), dp = 1.e-4*Psave;
Set(PropertyPair::TP, T, Psave - dp);
double v1 = v();
Set(PropertyPair::TP, T, Psave + dp);
double v2 = v();
Set(PropertyPair::TP, T, Psave);
return -(v2 - v1)/((v2 + v1)*dp);
}
double Substance::dPsdT()
{
double tsave = T;