15 namespace PropertyPair
18 TV = 12, HP = 34, SP = 54, PV = 42, TP = 14, UV = 62, ST = 51,
19 SV = 52, UP = 64, VH = 23, TH = 13, SH = 53, PX = 47, TX = 17,
20 VT = -12, PH = -34, PS = -54, VP = -42, PT = -14, VU = -62, TS = -51,
21 VS = -52, PU = -64, HV = -23, HT = -13, HS = -53, XP = -47, XT = -17
25 const int Pgiven = 0, Tgiven = 1;
27 namespace propertyFlag
29 enum type { H, S, U, V, P, T };
32 const double Undef = 999.1234;
44 void setStdState(
double h0 = 0.0,
double s0 = 0.0,
45 double t0 = 298.15,
double p0 = 1.01325e5);
51 virtual double MolWt()=0;
54 virtual double Tcrit()=0;
57 virtual double Pcrit()=0;
60 virtual double Vcrit()=0;
63 virtual double Tmin()=0;
66 virtual double Tmax()=0;
70 return m_name.c_str();
75 return m_formula.c_str();
95 return prop(propertyFlag::V);
100 return prop(propertyFlag::U);
105 return prop(propertyFlag::H);
110 return prop(propertyFlag::S);
129 virtual double thermalExpansionCoeff();
131 virtual double isothermalCompressibility();
140 virtual double dPsdT();
143 double Tsat(
double p);
155 virtual double Pp()=0;
159 return up() + Pp()/Rho;
164 return hp() - T*
sp();
167 double prop(propertyFlag::type ijob);
170 void set_TPp(
double t0,
double p0);
175 void Set(PropertyPair::type XY,
double x0,
double y0);
179 double Tslast, Rhf, Rhv;
181 double m_energy_offset;
182 double m_entropy_offset;
184 std::string m_formula;
186 virtual double ldens()=0;
189 virtual double Psat()=0;
192 virtual double up()=0;
195 virtual double sp()=0;
197 virtual int ideal() {
207 int Lever(
int itp,
double sat,
double val, propertyFlag::type ifunc);
213 void set_Rho(
double r0);
214 void set_T(
double t0);
215 void set_v(
double v0);
216 void BracketSlope(
double p);
217 double vprop(propertyFlag::type ijob);
218 void set_xy(propertyFlag::type if1, propertyFlag::type if2,
220 double atx,
double aty,
double rtx,
double rty);
226 double v_here, P_here;