CoolProp  4.2.5
An open-source fluid property and humid air property database
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IndustrialFluids.cpp
Go to the documentation of this file.
1 
2 
3 // **** WARNING ******
4 // **** WARNING ******
5 // **** WARNING ******
6 
7 // Do NOT modify this file. It is created by a script in the industrialfluidsbuilder folder within the source
8 
9 #include "CoolProp.h"
10 #include <vector>
11 #include "CPExceptions.h"
12 #include "FluidClass.h"
13 #include "IndustrialFluids.h"
14 #include "R134a.h"
15 
16 static const double d_nonpolar[] =
17 {
18 0,
19 1.0, //[1]
20 1.0, //[2]
21 1.0, //[3]
22 2.0, //[4]
23 3.0, //[5]
24 7.0, //[6]
25 2.0, //[7]
26 5.0, //[8]
27 1.0, //[9]
28 4.0, //[10]
29 3.0, //[11]
30 4.0, //[12]
31 };
32 
33 static const double t_nonpolar[] =
34 {
35 0,
36 0.25, //[1]
37 1.125, //[2]
38 1.5, //[3]
39 1.375, //[4]
40 0.25, //[5]
41 0.875, //[6]
42 0.625, //[7]
43 1.75, //[8]
44 3.625, //[9]
45 3.625, //[10]
46 14.5, //[11]
47 12.0, //[12]
48 };
49 
50 static const double c_nonpolar[] =
51 {
52 0,
53 0.0, //[1]
54 0.0, //[2]
55 0.0, //[3]
56 0.0, //[4]
57 0.0, //[5]
58 0.0, //[6]
59 1.0, //[7]
60 1.0, //[8]
61 2.0, //[9]
62 2.0, //[10]
63 3.0, //[11]
64 3.0, //[12]
65 };
66 
67 static const double d_polar[] =
68 {
69 0,
70 1.0, //[1]
71 1.0, //[2]
72 1.0, //[3]
73 3.0, //[4]
74 7.0, //[5]
75 1.0, //[6]
76 2.0, //[7]
77 5.0, //[8]
78 1.0, //[9]
79 1.0, //[10]
80 4.0, //[11]
81 2.0, //[12]
82 };
83 
84 static const double t_polar[] =
85 {
86 0,
87 0.25, //[1]
88 1.25, //[2]
89 1.5, //[3]
90 0.25, //[4]
91 0.875, //[5]
92 2.375, //[6]
93 2.0, //[7]
94 2.125, //[8]
95 3.5, //[9]
96 6.5, //[10]
97 4.75, //[11]
98 12.5, //[12]
99 };
100 
101 static const double c_polar[] =
102 {
103 0,
104 0.0, //[1]
105 0.0, //[2]
106 0.0, //[3]
107 0.0, //[4]
108 0.0, //[5]
109 1.0, //[6]
110 1.0, //[7]
111 1.0, //[8]
112 2.0, //[9]
113 2.0, //[10]
114 2.0, //[11]
115 3.0, //[12]
116 };
117 
119 {
120  const double n[]={0.0,0.905540000,-2.451500000,0.531490000,0.024173000,0.072156000,0.000188180,0.194050000,-0.043268000,-0.127780000,-0.027896000,-0.034154000,0.016329000};
121  const double u0[]={0.0,3089.0};
122  const double v0[]={0.0,1.0128};
123 
124  // Critical parameters
125  crit.rho = 303.909585;
126  crit.p = PressureUnit(3494.0, UNIT_KPA);
127  crit.T = 132.86;
128  crit.v = 1.0/crit.rho;
129 
130  // Other fluid parameters
131  params.molemass = 28.0101;
132  params.Ttriple = 68.16;
133  params.ptriple = 15.5395203075;
134  params.accentricfactor = 0.0497;
135  params.R_u = 8.314472;
136 
137  // Limits of EOS
138  limits.Tmin = 68.16;
139  limits.Tmax = 500.0;
140  limits.pmax = 100000.0;
141  limits.rhomax = 1000000.0*params.molemass;
142 
143  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
144  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
145  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
146  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
147  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
148  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
149 
150  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
151 
152  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
153  phirlist.push_back(phir_);
154 
155  phi_BC * phi0_lead_ = new phi0_lead(-3.3728318564,3.3683460039);
156  phi0list.push_back(phi0_lead_);
157 
158  phi_BC * phi0_logtau_ = new phi0_logtau(3.5-1);
159  phi0list.push_back(phi0_logtau_);
160 
161  phi_BC * phi0_power_ = new phi0_power(-2.2311e-07*pow(crit.T,1.5)/(1.5*(1.5+1)),-1.5);
162  phi0list.push_back(phi0_power_);
163  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
164  phi0list.push_back(phi0_Planck_Einstein_);
165 
166  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
167  TransportReference.assign("Using ECS");
168 
169  name.assign("CarbonMonoxide");
170  aliases.push_back(std::string("CO"));
171  aliases.push_back(std::string("CARBONMONOXIDE"));
172  REFPROPname.assign("CO");
173 
174  ECSReferenceFluid = "Propane";
175 
176  BibTeXKeys.EOS = "Lemmon-JCED-2006";
177  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
178  BibTeXKeys.ECS_LENNARD_JONES = "Poling-BOOK-2001";
179 }
180 
182 {
183  const double n[]={0.0,0.943740000,-2.534800000,0.590580000,-0.021488000,0.082083000,0.000246890,0.212260000,-0.041251000,-0.223330000,-0.050828000,-0.028333000,0.016983000};
184  const double u0[]={0.0,768.0,1363.0,3175.0,12829.0};
185  const double v0[]={0.0,2.1651,0.93456,1.0623,0.34269};
186 
187  // Critical parameters
188  crit.rho = 445.156491;
189  crit.p = PressureUnit(6370.0, UNIT_KPA);
190  crit.T = 378.77;
191  crit.v = 1.0/crit.rho;
192 
193  // Other fluid parameters
194  params.molemass = 60.0751;
195  params.Ttriple = 134.3;
196  params.ptriple = 0.0644440370601;
197  params.accentricfactor = 0.0978;
198  params.R_u = 8.314472;
199 
200  // Limits of EOS
201  limits.Tmin = 134.3;
202  limits.Tmax = 650.0;
203  limits.pmax = 50000.0;
204  limits.rhomax = 1000000.0*params.molemass;
205 
206  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
207  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
208  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
209  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
210  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
211  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
212 
213  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
214 
215  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
216  phirlist.push_back(phir_);
217 
218  phi_BC * phi0_lead_ = new phi0_lead(-3.6587449805,3.7349245016);
219  phi0list.push_back(phi0_lead_);
220 
221  phi_BC * phi0_logtau_ = new phi0_logtau(3.5-1);
222  phi0list.push_back(phi0_logtau_);
223 
224 
225  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
226  phi0list.push_back(phi0_Planck_Einstein_);
227 
228  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
229  TransportReference.assign("Using ECS");
230 
231  name.assign("CarbonylSulfide");
232  aliases.push_back(std::string("COS"));
233  aliases.push_back(std::string("CARBONYLSULFIDE"));
234  REFPROPname.assign("COS");
235 
236  BibTeXKeys.EOS = "Lemmon-JCED-2006";
237  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
238  BibTeXKeys.ECS_LENNARD_JONES = "Poling-BOOK-2001";
239 }
240 
242 {
243  const double n[]={0.0,1.046100000,-2.480700000,0.743720000,-0.525790000,0.153150000,0.000328650,0.841780000,0.055424000,-0.735550000,-0.185070000,-0.020775000,0.012335000};
244  const double u0[]={0.0,1193.0,2140.0,4763.0,10862.0};
245  const double v0[]={0.0,25.685,28.233,12.417,10.035};
246 
247  // Critical parameters
248  crit.rho = 233.3419552;
249  crit.p = PressureUnit(2103.0, UNIT_KPA);
250  crit.T = 617.7;
251  crit.v = 1.0/crit.rho;
252 
253  // Other fluid parameters
254  params.molemass = 142.28168;
255  params.Ttriple = 243.5;
256  params.ptriple = 0.00140434258288;
257  params.accentricfactor = 0.4884;
258  params.R_u = 8.314472;
259 
260  // Limits of EOS
261  limits.Tmin = 243.5;
262  limits.Tmax = 675.0;
263  limits.pmax = 800000.0;
264  limits.rhomax = 1000000.0*params.molemass;
265 
266  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
267  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
268  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
269  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
270  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
271  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
272 
273  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
274 
275  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
276  phirlist.push_back(phir_);
277 
278  phi_BC * phi0_lead_ = new phi0_lead(13.9361966549,-10.5265128286);
279  phi0list.push_back(phi0_lead_);
280 
281  phi_BC * phi0_logtau_ = new phi0_logtau(19.109-1);
282  phi0list.push_back(phi0_logtau_);
283 
284 
285  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
286  phi0list.push_back(phi0_Planck_Einstein_);
287 
288  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
289  TransportReference.assign("Using ECS");
290 
291  name.assign("n-Decane");
292  aliases.push_back("Decane");
293  aliases.push_back("decane");
294  aliases.push_back(std::string("DECANE"));
295  aliases.push_back(std::string("N-DECANE"));
296  REFPROPname.assign("decane");
297 
298  BibTeXKeys.EOS = "Lemmon-JCED-2006";
299  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
300  BibTeXKeys.ECS_LENNARD_JONES = "Huber-FPE-2004";
301  BibTeXKeys.VISCOSITY = "Huber-FPE-2004";
302  BibTeXKeys.CONDUCTIVITY = "Huber-FPE-2005";
303 }
304 void DecaneClass::ECSParams(double *e_k, double *sigma)
305 {
306  // From Huber 2004
307  *e_k = 490.510;
308  *sigma = 0.68600;
309 }
310 double DecaneClass::viscosity_Trho(double T, double rho)
311 {
312  // Rainwater-Friend for initial density dependence
313  double e_k, sigma;
314  this->ECSParams(&e_k,&sigma);
315  double Tstar = T/e_k;
316 
317  // Dilute gas
318  double eta_0 = 0.021357*sqrt(params.molemass*T)/(sigma*sigma*exp(0.343267-0.460514*log(Tstar))); // uPa-s
319 
320  // Initial density dependence from Rainwater-Friend
321  double b[] = {-19.572881, 219.73999, -1015.3226, 2471.01251, -3375.1717, 2491.6597, -787.26086, 14.085455, -0.34664158};
322  double Bstar = b[0]*pow(Tstar,-0.25*0)+b[1]*pow(Tstar,-0.25*1)+b[2]*pow(Tstar,-0.25*2)+b[3]*pow(Tstar,-0.25*3)+b[4]*pow(Tstar,-0.25*4)+b[5]*pow(Tstar,-0.25*5)+b[6]*pow(Tstar,-0.25*6)+b[7]*pow(Tstar,-2.5)+b[8]*pow(Tstar,-5.5);
323  double B = Bstar*0.60221415*sigma*sigma*sigma; // L/mol
324 
325  double e[4][3]; // init with zeros
326  e[2][1] = -0.402094e-1;
327  e[2][2] = 0.404435e-1;
328  e[3][1] = 0;
329  e[3][2] = -0.142063e-1;
330 
331  double c[] = {0, 0.453387, 2.55105, 1.71465, 0};
332 
333  double sumresid = 0;
334  double tau = T/crit.T, delta = rho/crit.rho;
335  for (int j = 2; j <= 3; j++)
336  {
337  for (int k = 1; k <= 2; k++)
338  {
339  sumresid += e[j][k]*pow(delta,j)/pow(tau,k);
340  }
341  }
342  double delta_0 = c[2] + c[3]*sqrt(tau) + c[4]*tau;
343  double eta_r = (sumresid + c[1]*(delta/(delta_0-delta)-delta/delta_0))*1000; // uPa-s
344 
345  double rhobar = rho/params.molemass; // [mol/L]
346  return (eta_0*(1+B*rhobar) + eta_r)/1e6;
347 }
348 double DecaneClass::conductivity_Trho(double T, double rho)
349 {
350  double lambda_0 = 1.05542680e-2 - 5.14530090e-2*(T/crit.T) + 1.18978971e-1*pow(T/crit.T,2) - 3.72442104e-2*pow(T/crit.T,3); // W/m/K
351 
352  double sumresid = 0;
353  double B1[] = {0, -2.94394112e-2, 4.99245356e-2, -1.42700394e-2, 1.50827597e-3};
354  double B2[] = {0, 1.50509474e-2, 0, -1.38857133e-2, 4.33326339e-3};
355 
356  for (int i = 1; i<= 4; i++){
357  sumresid += (B1[i]+B2[i]*(T/reduce.T))*pow(rho/reduce.rho,i);
358  }
359 
360  double lambda_r = sumresid; // [W/m/K]
361 
362  double lambda_c = this->conductivity_critical(T,rho,1.41115586e9); // [W/m/K]
363 
364  return lambda_0+lambda_r+lambda_c;
365 }
366 
368 {
369  const double n[]={0.0,0.876410000,-2.036700000,0.216340000,-0.050199000,0.066994000,0.000190760,0.202270000,-0.004534800,-0.222300000,-0.034714000,-0.014885000,0.007415400};
370  const double u0[]={0.0,1823.0,3965.0};
371  const double v0[]={0.0,1.1364,1.9721};
372 
373  // Critical parameters
374  crit.rho = 347.2841672;
375  crit.p = PressureUnit(9000.0, UNIT_KPA);
376  crit.T = 373.1;
377  crit.v = 1.0/crit.rho;
378 
379  // Other fluid parameters
380  params.molemass = 34.08088;
381  params.Ttriple = 187.7;
382  params.ptriple = 23.2604252601;
383  params.accentricfactor = 0.1005;
384  params.R_u = 8.314472;
385 
386  // Limits of EOS
387  limits.Tmin = 187.7;
388  limits.Tmax = 760.0;
389  limits.pmax = 170000.0;
390  limits.rhomax = 1000000.0*params.molemass;
391 
392  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
393  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
394  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
395  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
396  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
397  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
398 
399  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
400 
401  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
402  phirlist.push_back(phir_);
403 
404  phi_BC * phi0_lead_ = new phi0_lead(-4.0740770957,3.7632137341);
405  phi0list.push_back(phi0_lead_);
406 
407  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
408  phi0list.push_back(phi0_logtau_);
409 
410  phi_BC * phi0_power_ = new phi0_power(-1.4327e-06*pow(crit.T,1.5)/(1.5*(1.5+1)),-1.5);
411  phi0list.push_back(phi0_power_);
412  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
413  phi0list.push_back(phi0_Planck_Einstein_);
414 
415  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
416  TransportReference.assign("Using ECS");
417 
418  name.assign("HydrogenSulfide");
419  aliases.push_back(std::string("H2S"));
420  aliases.push_back(std::string("HYDROGENSULFIDE"));
421  REFPROPname.assign("H2S");
422 
423  ECSReferenceFluid = "Propane";
424 
425  BibTeXKeys.EOS = "Lemmon-JCED-2006";
426  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
427  BibTeXKeys.ECS_LENNARD_JONES = "QuinonesCisneros-JCED-2012";
428  BibTeXKeys.VISCOSITY = "QuinonesCisneros-JCED-2012";
429 }
430 void HydrogenSulfideClass::ECSParams(double *e_k, double *sigma)
431 {
432  *e_k = 355.8;
433  *sigma = 0.3565;
434 }
435 double HydrogenSulfideClass::viscosity_Trho(double T, double rho)
436 {
437 
438  // Dilute
439  double a[] = {0.53242, 0.93715, -0.69339, 1.16432, -0.84306, 0.20534};
440  double Sstar = 0;
441  for (int i = 0; i <= 5; i++) {Sstar += a[i]/pow(T/276.0,i); }
442  double eta_0 = 0.87721*sqrt(T)/Sstar; // uPa-s
443 
444  // Rainwater-Friend for initial density dependence
445  double e_k, sigma;
446  this->ECSParams(&e_k,&sigma);
447  double Tstar = T/e_k;
448  double rhobar = rho/params.molemass; // mol/L
449 
450  double b[] = {-19.572881, 219.73999, -1015.3226, 2471.01251, -3375.1717, 2491.6597, -787.26086, 14.085455, -0.34664158};
451  double Bstar = b[0]*pow(Tstar,-0.25*0)+b[1]*pow(Tstar,-0.25*1)+b[2]*pow(Tstar,-0.25*2)+b[3]*pow(Tstar,-0.25*3)+b[4]*pow(Tstar,-0.25*4)+b[5]*pow(Tstar,-0.25*5)+b[6]*pow(Tstar,-0.25*6)+b[7]*pow(Tstar,-2.5)+b[8]*pow(Tstar,-5.5);
452  double B = Bstar*0.60221415*sigma*sigma*sigma; // L/mol
453 
454  double eta_i = eta_0*B*rhobar; // uPa-s
455 
456  // Residual part
457  double psi1 = exp(crit.T/T);
458  double psi2 = exp(crit.T*crit.T/T/T);
459  double a0 = 68.9659e-6, b0 = 153.406e-6, A0 = 0.782380e-9, B0 = -9.75792e-9;
460  double a1 = -22.0494e-6, b1 = 8.45198e-6, A1 = -0.64717e-9, B1 = -3.19303e-9;
461  double a2 = -42.6126e-6, b2 = -113.967e-6, A2 = 1.39066e-9, B2 = 12.4263e-9;
462  double ka = (a0 + a1*psi1 + a2*psi2)*crit.T/T;
463  double kr = (b0 + b1*psi1 + b2*psi2)*crit.T/T;
464  double kaa = (A0 + A1*psi1 + A2*psi2)*crit.T/T;
465  double krr = (B0 + B1*psi1 + B2*psi2)*crit.T/T;
466 
467  double p = this->pressure_Trho(T,rho)/1e5; // Pa -> bar
468  double pr = T*this->dpdT_Trho(T,rho)/1e5; // Pa-> bar
469  double pa = p - pr;
470  double pid = rho * R() * T / 1e5; // Pa -> bar
471  double deltapr = pr - pid;
472 
473  double eta_f = (ka*pa + kr*deltapr + kaa*pa*pa + krr*pr*pr)*1000; //mPa-s --> uPa-s
474 
475  return (eta_0 + eta_i + eta_f)/1e6;
476 }
477 
479 {
480  const double n[]={0.0,1.096300000,-3.040200000,1.031700000,-0.154100000,0.115350000,0.000298090,0.395710000,-0.045881000,-0.358040000,-0.101070000,-0.035484000,0.018156000};
481  const double u0[]={0.0,442.0,1109.0,2069.0,4193.0};
482  const double v0[]={0.0,7.4056,9.5772,15.765,12.119};
483 
484  // Critical parameters
485  crit.rho = 235.99865938;
486  crit.p = PressureUnit(3378.0, UNIT_KPA);
487  crit.T = 460.35;
488  crit.v = 1.0/crit.rho;
489 
490  // Other fluid parameters
491  params.molemass = 72.14878;
492  params.Ttriple = 112.65;
493  params.ptriple = 8.93808446917e-08;
494  params.accentricfactor = 0.2274;
495  params.R_u = 8.314472;
496 
497  // Limits of EOS
498  limits.Tmin = 112.65;
499  limits.Tmax = 500.0;
500  limits.pmax = 1000000.0;
501  limits.rhomax = 1000000.0*params.molemass;
502 
503  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
504  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
505  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
506  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
507  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
508  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
509 
510  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
511 
512  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
513  phirlist.push_back(phir_);
514 
515  phi_BC * phi0_lead_ = new phi0_lead(2.5822330405,1.1609103419);
516  phi0list.push_back(phi0_lead_);
517 
518  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
519  phi0list.push_back(phi0_logtau_);
520 
521 
522  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
523  phi0list.push_back(phi0_Planck_Einstein_);
524 
525  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
526  TransportReference.assign("Using ECS");
527 
528  name.assign("Isopentane");
529  aliases.push_back(std::string("ipentane"));
530  aliases.push_back(std::string("R601a"));
531  aliases.push_back(std::string("ISOPENTANE"));
532  REFPROPname.assign("ipentane");
533 
534  BibTeXKeys.EOS = "Lemmon-JCED-2006";
535  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
536  BibTeXKeys.ECS_LENNARD_JONES = "Chichester-NIST-2008";
537 }
538 
540 {
541  const double n[]={0.0,1.113600000,-3.179200000,1.141100000,-0.104670000,0.117540000,0.000340580,0.295530000,-0.074765000,-0.314740000,-0.099401000,-0.039569000,0.023177000};
542  const double u0[]={0.0,710.0,1725.0,3280.0,7787.0};
543  const double v0[]={0.0,14.422,12.868,17.247,12.663};
544 
545  // Critical parameters
546  crit.rho = 235.9265106;
547  crit.p = PressureUnit(3196.0, UNIT_KPA);
548  crit.T = 433.74;
549  crit.v = 1.0/crit.rho;
550 
551  // Other fluid parameters
552  params.molemass = 72.14878;
553  params.Ttriple = 256.6;
554  params.ptriple = 35.400947327081248;
555  params.accentricfactor = 0.1961;
556  params.R_u = 8.314472;
557 
558  // Limits of EOS
559  limits.Tmin = 256.6;
560  limits.Tmax = 550.0;
561  limits.pmax = 200000.0;
562  limits.rhomax = 1000000.0*params.molemass;
563 
564  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
565  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
566  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
567  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
568  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
569  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
570 
571  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
572 
573  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
574  phirlist.push_back(phir_);
575 
576  phi_BC * phi0_lead_ = new phi0_lead(0.8702452614,1.6071746358);
577  phi0list.push_back(phi0_lead_);
578 
579  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
580  phi0list.push_back(phi0_logtau_);
581 
582 
583  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
584  phi0list.push_back(phi0_Planck_Einstein_);
585 
586  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
587  TransportReference.assign("Using ECS");
588 
589  name.assign("Neopentane");
590  aliases.push_back(std::string("neopentn"));
591  aliases.push_back(std::string("NEOPENTANE"));
592  REFPROPname.assign("neopentn");
593 
594  BibTeXKeys.EOS = "Lemmon-JCED-2006";
595  BibTeXKeys.ECS_LENNARD_JONES = "Chichester-NIST-2008";
596 }
597 
599 {
600  const double n[]={0.0,1.102700000,-2.969900000,1.029500000,-0.212380000,0.118970000,0.000277380,0.401030000,-0.034238000,-0.435840000,-0.116930000,-0.019262000,0.008078300};
601  const double u0[]={0.0,325.0,1150.0,2397.0,5893.0};
602  const double v0[]={0.0,7.9127,16.871,19.257,14.075};
603 
604  // Critical parameters
605  crit.rho = 233.9661024;
606  crit.p = PressureUnit(3040.0, UNIT_KPA);
607  crit.T = 497.7;
608  crit.v = 1.0/crit.rho;
609 
610  // Other fluid parameters
611  params.molemass = 86.17536;
612  params.Ttriple = 119.6;
613  params.ptriple = 7.67397444618e-09;
614  params.accentricfactor = 0.2797;
615  params.R_u = 8.314472;
616 
617  // Limits of EOS
618  limits.Tmin = 119.6;
619  limits.Tmax = 550.0;
620  limits.pmax = 1000000.0;
621  limits.rhomax = 1000000.0*params.molemass;
622 
623  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
624  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
625  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
626  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
627  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
628  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
629 
630  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
631 
632  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
633  phirlist.push_back(phir_);
634 
635  phi_BC * phi0_lead_ = new phi0_lead(6.9259123919,-0.3128629679);
636  phi0list.push_back(phi0_lead_);
637 
638  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
639  phi0list.push_back(phi0_logtau_);
640 
641  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
642  phi0list.push_back(phi0_Planck_Einstein_);
643 
644  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
645  TransportReference.assign("Using ECS");
646 
647  name.assign("Isohexane");
648  aliases.push_back(std::string("ihexane"));
649  aliases.push_back(std::string("ISOHEXANE"));
650  REFPROPname.assign("ihexane");
651 
652  BibTeXKeys.EOS = "Lemmon-JCED-2006";
653  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
654  BibTeXKeys.ECS_LENNARD_JONES = "Chichester-NIST-2008";
655 }
656 
658 {
659  const double n[]={0.0,0.835610000,-2.372500000,0.545670000,0.014361000,0.066502000,0.000193100,0.168180000,-0.033133000,-0.150080000,-0.022897000,-0.021454000,0.006939700};
660  const double u0[]={0.0,0};
661  const double v0[]={0.0,0};
662 
663  // Critical parameters
664  crit.rho = 909.2083;
665  crit.p = PressureUnit(5525.0, UNIT_KPA);
666  crit.T = 209.48;
667  crit.v = 1.0/crit.rho;
668 
669  // Other fluid parameters
670  params.molemass = 83.798;
671  params.Ttriple = 115.77;
672  params.ptriple = 73.5090071088;
673  params.accentricfactor = -0.00089;
674  params.R_u = 8.314472;
675 
676  // Limits of EOS
677  limits.Tmin = 115.77;
678  limits.Tmax = 750.0;
679  limits.pmax = 200000.0;
680  limits.rhomax = 1000000.0*params.molemass;
681 
682  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
683  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
684  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
685  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
686  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
687  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
688 
689  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
690 
691  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
692  phirlist.push_back(phir_);
693 
694  phi_BC * phi0_lead_ = new phi0_lead(-3.7506412806,3.7798018435);
695  phi0list.push_back(phi0_lead_);
696 
697  phi_BC * phi0_logtau_ = new phi0_logtau(2.5-1);
698  phi0list.push_back(phi0_logtau_);
699 
700  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
701  TransportReference.assign("Using ECS");
702 
703  name.assign("Krypton");
704  aliases.push_back(std::string("krypton"));
705  aliases.push_back(std::string("KRYPTON"));
706  REFPROPname.assign("krypton");
707 
708  BibTeXKeys.EOS = "Lemmon-JCED-2006";
709  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
710  BibTeXKeys.ECS_LENNARD_JONES = "Poling-BOOK-2001";
711 }
712 
714 {
715  const double n[]={0.0,1.115100000,-2.702000000,0.834160000,-0.388280000,0.137600000,0.000281850,0.620370000,0.015847000,-0.617260000,-0.150430000,-0.012982000,0.004432500};
716  const double u0[]={0.0,1221.0,2244.0,5008.0,11724.0};
717  const double v0[]={0.0,24.926,24.842,11.188,17.483};
718 
719  // Critical parameters
720  crit.rho = 232.141731;
721  crit.p = PressureUnit(2281.0, UNIT_KPA);
722  crit.T = 594.55;
723  crit.v = 1.0/crit.rho;
724 
725  // Other fluid parameters
726  params.molemass = 128.2551;
727  params.Ttriple = 219.7;
728  params.ptriple = 0.000444543592359;
729  params.accentricfactor = 0.4433;
730  params.R_u = 8.314472;
731 
732  // Limits of EOS
733  limits.Tmin = 219.7;
734  limits.Tmax = 600.0;
735  limits.pmax = 800000.0;
736  limits.rhomax = 1000000.0*params.molemass;
737 
738  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
739  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
740  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
741  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
742  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
743  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
744 
745  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
746 
747  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
748  phirlist.push_back(phir_);
749 
750  phi_BC * phi0_lead_ = new phi0_lead(10.7927224829,-8.2418318753);
751  phi0list.push_back(phi0_lead_);
752 
753  phi_BC * phi0_logtau_ = new phi0_logtau(17.349-1);
754  phi0list.push_back(phi0_logtau_);
755 
756 
757  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
758  phi0list.push_back(phi0_Planck_Einstein_);
759 
760  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
761  TransportReference.assign("Using ECS");
762 
763  name.assign("n-Nonane");
764  aliases.push_back(std::string("nonane"));
765  aliases.push_back(std::string("NONANE"));
766  aliases.push_back(std::string("N-NONANE"));
767  REFPROPname.assign("nonane");
768 
769  BibTeXKeys.EOS = "Lemmon-JCED-2006";
770  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
771  BibTeXKeys.ECS_LENNARD_JONES = "Huber-FPE-2004";
772  BibTeXKeys.VISCOSITY = "Huber-FPE-2004";
773  BibTeXKeys.CONDUCTIVITY = "Huber-FPE-2005";
774 }
775 void NonaneClass::ECSParams(double *e_k, double *sigma)
776 {
777  // From Huber 2004
778  *e_k = 472.127;
779  *sigma = 0.66383;
780 }
781 double NonaneClass::viscosity_Trho(double T, double rho)
782 {
783  // Rainwater-Friend for initial density dependence
784  double e_k, sigma;
785  this->ECSParams(&e_k,&sigma);
786  double Tstar = T/e_k;
787 
788  // Dilute gas
789  double eta_0 = 0.021357*sqrt(params.molemass*T)/(sigma*sigma*exp(0.340344-0.466455*log(Tstar))); // uPa-s
790 
791  // Initial density dependence from Rainwater-Friend
792  double b[] = {-19.572881, 219.73999, -1015.3226, 2471.01251, -3375.1717, 2491.6597, -787.26086, 14.085455, -0.34664158};
793  double Bstar = b[0]*pow(Tstar,-0.25*0)+b[1]*pow(Tstar,-0.25*1)+b[2]*pow(Tstar,-0.25*2)+b[3]*pow(Tstar,-0.25*3)+b[4]*pow(Tstar,-0.25*4)+b[5]*pow(Tstar,-0.25*5)+b[6]*pow(Tstar,-0.25*6)+b[7]*pow(Tstar,-2.5)+b[8]*pow(Tstar,-5.5);
794  double B = Bstar*0.60221415*sigma*sigma*sigma; // L/mol
795 
796  double e[4][3]; // init with zeros
797  e[2][1] = -0.314367e-1;
798  e[2][2] = 0.326258e-1;
799  e[3][1] = 0.639384e-2;
800  e[3][2] = -0.108922e-1;
801 
802  double c[] = {0, 0.192935, 2.66987, 1.32137, 0};
803 
804  double sumresid = 0;
805  double tau = T/crit.T, delta = rho/crit.rho;
806  for (int j = 2; j <= 3; j++)
807  {
808  for (int k = 1; k <= 2; k++)
809  {
810  sumresid += e[j][k]*pow(delta,j)/pow(tau,k);
811  }
812  }
813  double delta_0 = c[2] + c[3]*sqrt(tau) + c[4]*tau;
814  double eta_r = (sumresid + c[1]*(delta/(delta_0-delta)-delta/delta_0))*1000; // uPa-s
815 
816  double rhobar = rho/params.molemass; // [mol/L]
817  return (eta_0*(1+B*rhobar) + eta_r)/1e6;
818 }
819 double NonaneClass::conductivity_Trho(double T, double rho)
820 {
821  double lambda_0 = 8.7877e-3 - 4.1351e-2*(T/crit.T) + 1.0479e-1*pow(T/crit.T,2) - 3.2003e-2*pow(T/crit.T,3); // W/m/K
822 
823  double sumresid = 0;
824  double B1[] = {0, 4.90087596e-3, -8.07305471e-3, 5.57430614e-3, 0};
825  double B2[] = {0, 9.96486280e-3, 0 , 0, 0};
826 
827  for (int i = 1; i<= 4; i++){
828  sumresid += (B1[i]+B2[i]*(T/reduce.T))*pow(rho/reduce.rho,i);
829  }
830 
831  double lambda_r = sumresid; // [W/m/K]
832 
833  double lambda_c = this->conductivity_critical(T,rho,9.58722814e8); // [W/m/K]
834 
835  return lambda_0+lambda_r+lambda_c;
836 }
837 
839 {
840  const double n[]={0.0,0.964640000,-2.785500000,0.867120000,-0.188600000,0.118040000,0.000251810,0.571960000,-0.029287000,-0.433510000,-0.125400000,-0.028207000,0.014076000};
841  const double u0[]={0.0,190.0,797.0,1619.0,3072.0,7915.0};
842  const double v0[]={0.0,1.6994,8.0577,17.059,8.4567,8.6423};
843 
844  // Critical parameters
845  crit.rho = 291.98665298;
846  crit.p = PressureUnit(4126.0, UNIT_KPA);
847  crit.T = 591.75;
848  crit.v = 1.0/crit.rho;
849 
850  // Other fluid parameters
851  params.molemass = 92.13842;
852  params.Ttriple = 178.0;
853  params.ptriple = 3.94003300153e-05;
854  params.accentricfactor = 0.2657;
855  params.R_u = 8.314472;
856 
857  // Limits of EOS
858  limits.Tmin = 178.0;
859  limits.Tmax = 700.0;
860  limits.pmax = 500000.0;
861  limits.rhomax = 1000000.0*params.molemass;
862 
863  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
864  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
865  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
866  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
867  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
868  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
869 
870  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
871 
872  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
873  phirlist.push_back(phir_);
874 
875  phi_BC * phi0_lead_ = new phi0_lead(3.5241174832,1.1360823464);
876  phi0list.push_back(phi0_lead_);
877 
878  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
879  phi0list.push_back(phi0_logtau_);
880 
881  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
882  phi0list.push_back(phi0_Planck_Einstein_);
883 
884  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
885  TransportReference.assign("Using ECS");
886 
887  name.assign("Toluene");
888  aliases.push_back(std::string("toluene"));
889  aliases.push_back(std::string("TOLUENE"));
890  REFPROPname.assign("toluene");
891 
892  BibTeXKeys.EOS = "Lemmon-JCED-2006";
893  BibTeXKeys.VISCOSITY = "";
894  BibTeXKeys.CONDUCTIVITY = "ASSAEL-JPCRD-2012B";
895  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
896 }
897 double TolueneClass::conductivity_Trho(double T, double rho)
898 {
899  double sumresid = 0;
900  double B1[] = {0, -5.18530e-2, 1.33846e-1, -1.20446e-1, 5.30211e-2, -1.00604e-2, 6.33457e-4};
901  double B2[] = {0, 5.17449e-2, -1.21902e-1, 1.37748e-1, -7.32792e-2, 1.72914e-2, -1.38585e-3};
902 
903  double lambda_0 = (5.8808-6.1693e-2*T+3.4151e-4*T*T-3.0420e-7*T*T*T+1.2868e-10*T*T*T*T-2.1303e-14*T*T*T*T*T)/1000;
904 
905  for (int i = 1; i <= 6; i++)
906  {
907  sumresid += (B1[i]+B2[i]*T/crit.T)*pow(rho/crit.rho,i);
908  }
909  double lambda_r = sumresid;
910 
911  double lambda_c = this->conductivity_critical(T,rho,1/(6.2e-10)); //[W/m/K]
912 
913  return lambda_0 + lambda_r + lambda_c; //[W/m/K]
914 }
915 
917 {
918  const double n[]={0.0,0.831150000,-2.355300000,0.539040000,0.014382000,0.066309000,0.000196490,0.149960000,-0.035319000,-0.159290000,-0.027521000,-0.023305000,0.008694100};
919  const double u0[]={0.0,0};
920  const double v0[]={0.0,0};
921 
922  // Critical parameters
923  crit.rho = 1102.8612;
924  crit.p = PressureUnit(5842.0, UNIT_KPA);
925  crit.T = 289.733;
926  crit.v = 1.0/crit.rho;
927 
928  // Other fluid parameters
929  params.molemass = 131.293;
930  params.Ttriple = 161.4;
931  params.ptriple = 81.747799073227597;
932  params.accentricfactor = 0.00363;
933  params.R_u = 8.314472;
934 
935  // Limits of EOS
936  limits.Tmin = 161.4;
937  limits.Tmax = 750.0;
938  limits.pmax = 700000.0;
939  limits.rhomax = 1000000.0*params.molemass;
940 
941  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
942  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
943  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
944  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
945  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
946  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
947 
948  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
949 
950  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
951  phirlist.push_back(phir_);
952 
953  phi_BC * phi0_lead_ = new phi0_lead(-3.8227178129,3.8416395351);
954  phi0list.push_back(phi0_lead_);
955 
956  phi_BC * phi0_logtau_ = new phi0_logtau(2.5-1);
957  phi0list.push_back(phi0_logtau_);
958 
959  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
960  TransportReference.assign("Using ECS");
961 
962  name.assign("Xenon");
963  aliases.push_back(std::string("Xe"));
964  aliases.push_back(std::string("xenon"));
965  aliases.push_back(std::string("XENON"));
966  REFPROPname.assign("xenon");
967 
968  ECSReferenceFluid = "Propane";
969 
970  BibTeXKeys.EOS = "Lemmon-JCED-2006";
971  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
972  BibTeXKeys.ECS_LENNARD_JONES = "Poling-BOOK-2001";
973 
974 }
975 
977 {
978  const double n[]={0.0,1.163200000,-2.812300000,0.772020000,-0.143310000,0.102270000,0.000246290,0.308930000,-0.028499000,-0.303430000,-0.068793000,-0.027218000,0.010665000};
979  const double u0[]={0.0,190.0,622.0,1470.0};
980  const double v0[]={0.0,2.4818,7.0622,7.9951};
981 
982  // Critical parameters
983  crit.rho = 613.32452808;
984  crit.p = PressureUnit(3048.0, UNIT_KPA);
985  crit.T = 293.03;
986  crit.v = 1.0/crit.rho;
987 
988  // Other fluid parameters
989  params.molemass = 138.01182;
990  params.Ttriple = 173.1;
991  params.ptriple = 26.0855875793;
992  params.accentricfactor = 0.2566;
993  params.R_u = 8.314472;
994 
995  // Limits of EOS
996  limits.Tmin = 173.1;
997  limits.Tmax = 425.0;
998  limits.pmax = 50000.0;
999  limits.rhomax = 1000000.0*params.molemass;
1000 
1001  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
1002  std::vector<double> d_v(d_nonpolar,d_nonpolar+sizeof(d_nonpolar)/sizeof(double));
1003  std::vector<double> t_v(t_nonpolar,t_nonpolar+sizeof(t_nonpolar)/sizeof(double));
1004  std::vector<double> l_v(c_nonpolar,c_nonpolar+sizeof(c_nonpolar)/sizeof(double));
1005  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
1006  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
1007 
1008  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
1009 
1010  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
1011  phirlist.push_back(phir_);
1012 
1013  phi_BC * phi0_lead_ = new phi0_lead(-10.7088650331,8.9148979056);
1014  phi0list.push_back(phi0_lead_);
1015 
1016  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
1017  phi0list.push_back(phi0_logtau_);
1018 
1019 
1020  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
1021  phi0list.push_back(phi0_Planck_Einstein_);
1022 
1023  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
1024  TransportReference.assign("Using ECS");
1025 
1026  name.assign("R116");
1027 
1028  REFPROPname.assign("R116");
1029 
1030  BibTeXKeys.EOS = "Lemmon-JCED-2006";
1031  BibTeXKeys.ECS_FITS = "Huber-IECR-2003";
1032  BibTeXKeys.ECS_LENNARD_JONES = "Huber-IECR-2003";
1033  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
1034 }
1035 void R116Class::ECSParams(double *e_k, double *sigma)
1036 {
1037  *e_k = 226.16;
1038  *sigma = 0.5249;
1039 }
1040 double R116Class::ECS_f_int(double T)
1041 {
1042  return 0.00132+0*T;
1043 }
1044 double R116Class::ECS_psi_viscosity(double rhor)
1045 {
1046  return 1.21996-0.0647835*rhor+0*rhor*rhor;
1047 }
1049 {
1050  return 1.1804-0.0539975*rhor;
1051 }
1052 
1054 {
1055  const double n[]={0.0,0.90041000000,-2.12670000000,-0.08340900000,0.06568300000,0.00016527000,-0.03966300000,0.72085000000,0.00923180000,-0.17217000000,-0.14961000000,-0.07612400000,-0.01816600000};
1056  const double u0[]={0.0,310.0,3480.0,1576.0};
1057  const double v0[]={0.0,3.7072,7.0675,11.012};
1058 
1059  // Critical parameters
1060  crit.rho = 272.971958;
1061  crit.p = PressureUnit(4700.0, UNIT_KPA);
1062  crit.T = 508.1;
1063  crit.v = 1.0/crit.rho;
1064 
1065  // Other fluid parameters
1066  params.molemass = 58.07914;
1067  params.Ttriple = 178.5;
1068  params.ptriple = 0.00232681797023;
1069  params.accentricfactor = 0.3071;
1070  params.R_u = 8.314472;
1071 
1072  // Limits of EOS
1073  limits.Tmin = 178.5;
1074  limits.Tmax = 550.0;
1075  limits.pmax = 700000.0;
1076  limits.rhomax = 1000000.0*params.molemass;
1077 
1078  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
1079  std::vector<double> d_v(d_polar,d_polar+sizeof(d_polar)/sizeof(double));
1080  std::vector<double> t_v(t_polar,t_polar+sizeof(t_polar)/sizeof(double));
1081  std::vector<double> l_v(c_polar,c_polar+sizeof(c_polar)/sizeof(double));
1082  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
1083  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
1084 
1085  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
1086 
1087  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
1088  phirlist.push_back(phir_);
1089 
1090  phi_BC * phi0_lead_ = new phi0_lead(-9.4883659997,7.1422719708);
1091  phi0list.push_back(phi0_lead_);
1092 
1093  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
1094  phi0list.push_back(phi0_logtau_);
1095 
1096  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
1097  phi0list.push_back(phi0_Planck_Einstein_);
1098 
1099  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
1100  TransportReference.assign("Using ECS");
1101 
1102  name.assign("Acetone");
1103  aliases.push_back(std::string("acetone"));
1104  aliases.push_back(std::string("ACETONE"));
1105  REFPROPname.assign("acetone");
1106 
1107  BibTeXKeys.EOS = "Lemmon-JCED-2006";
1108  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
1109  BibTeXKeys.ECS_LENNARD_JONES = "Poling-BOOK-2001";
1110 }
1111 
1112 
1114 {
1115  const double n[]={0.0,0.88045000000,-2.42350000000,0.38237000000,0.06891700000,0.00020367000,0.13122000000,0.46032000000,-0.00369850000,-0.23263000000,-0.00042859000,-0.04281000000,-0.02303800000};
1116  const double u0[]={0.0,879.0,2372.0,5447.0};
1117  const double v0[]={0.0,2.1769,1.6145,0.48393};
1118 
1119  // Critical parameters
1120  crit.rho = 452.011456;
1121  crit.p = PressureUnit(7245.0, UNIT_KPA);
1122  crit.T = 309.52;
1123  crit.v = 1.0/crit.rho;
1124 
1125  // Other fluid parameters
1126  params.molemass = 44.0128;
1127  params.Ttriple = 182.33;
1128  params.ptriple = 87.837439225777985;
1129  params.accentricfactor = 0.1613;
1130  params.R_u = 8.314472;
1131 
1132  // Limits of EOS
1133  limits.Tmin = 182.33;
1134  limits.Tmax = 525.0;
1135  limits.pmax = 50000.0;
1136  limits.rhomax = 1000000.0*params.molemass;
1137 
1138  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
1139  std::vector<double> d_v(d_polar,d_polar+sizeof(d_polar)/sizeof(double));
1140  std::vector<double> t_v(t_polar,t_polar+sizeof(t_polar)/sizeof(double));
1141  std::vector<double> l_v(c_polar,c_polar+sizeof(c_polar)/sizeof(double));
1142  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
1143  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
1144 
1145  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
1146 
1147  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
1148  phirlist.push_back(phir_);
1149 
1150  phi_BC * phi0_lead_ = new phi0_lead(-4.4262736272,4.3120475243);
1151  phi0list.push_back(phi0_lead_);
1152 
1153  phi_BC * phi0_logtau_ = new phi0_logtau(3.5-1);
1154  phi0list.push_back(phi0_logtau_);
1155 
1156 
1157  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
1158  phi0list.push_back(phi0_Planck_Einstein_);
1159 
1160  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
1161  TransportReference.assign("Using ECS");
1162 
1163  name.assign("NitrousOxide");
1164  aliases.push_back(std::string("N2O"));
1165  aliases.push_back(std::string("NITROUSOXIDE"));
1166  REFPROPname.assign("N2O");
1167 
1168  ECSReferenceFluid = "Nitrogen";
1169 
1170  BibTeXKeys.EOS = "Lemmon-JCED-2006";
1171  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
1172  BibTeXKeys.ECS_LENNARD_JONES = "Poling-BOOK-2001";
1173 }
1174 
1175 
1177 {
1178  const double n[]={0.0,0.93061000000,-1.95280000000,-0.17467000000,0.06152400000,0.00017711000,0.21615000000,0.51353000000,0.01041900000,-0.25286000000,-0.05472000000,-0.05985600000,-0.01652300000};
1179  const double u0[]={0.0,775.0,1851.0};
1180  const double v0[]={0.0,1.0620,1.9401};
1181 
1182  // Critical parameters
1183  crit.rho = 525.002841;
1184  crit.p = PressureUnit(7884.0, UNIT_KPA);
1185  crit.T = 430.64;
1186  crit.v = 1.0/crit.rho;
1187 
1188  // Other fluid parameters
1189  params.molemass = 64.0638;
1190  params.Ttriple = 197.7;
1191  params.ptriple = 1.66036590338;
1192  params.accentricfactor = 0.2557;
1193  params.R_u = 8.314472;
1194 
1195  // Limits of EOS
1196  limits.Tmin = 197.7;
1197  limits.Tmax = 525.0;
1198  limits.pmax = 35000.0;
1199  limits.rhomax = 1000000.0*params.molemass;
1200 
1201  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
1202  std::vector<double> d_v(d_polar,d_polar+sizeof(d_polar)/sizeof(double));
1203  std::vector<double> t_v(t_polar,t_polar+sizeof(t_polar)/sizeof(double));
1204  std::vector<double> l_v(c_polar,c_polar+sizeof(c_polar)/sizeof(double));
1205  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
1206  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
1207 
1208  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
1209 
1210  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
1211  phirlist.push_back(phir_);
1212 
1213  phi_BC * phi0_lead_ = new phi0_lead(-4.5328346436,4.4777967379);
1214  phi0list.push_back(phi0_lead_);
1215 
1216  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
1217  phi0list.push_back(phi0_logtau_);
1218 
1219  phi_BC * phi0_power_ = new phi0_power(-7.2453e-05*pow(crit.T,1.0)/(1.0*(1.0+1)),-1.0);
1220  phi0list.push_back(phi0_power_);
1221  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
1222  phi0list.push_back(phi0_Planck_Einstein_);
1223 
1224  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
1225  TransportReference.assign("Using ECS");
1226 
1227  name.assign("SulfurDioxide");
1228  aliases.push_back(std::string("SO2"));
1229  aliases.push_back(std::string("SULFURDIOXIDE"));
1230  REFPROPname.assign("SO2");
1231 
1232  BibTeXKeys.EOS = "Lemmon-JCED-2006";
1233  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
1234  BibTeXKeys.ECS_LENNARD_JONES = "Poling-BOOK-2001";
1235 }
1236 
1237 
1239 {
1240  const double n[]={0.0,1.14690000000,-3.67990000000,1.34690000000,0.08332900000,0.00025137000,0.32720000000,0.46946000000,-0.02982900000,-0.31621000000,-0.02621900000,-0.07804300000,-0.02049800000};
1241  const double u0[]={0.0,502.0,1571.0,4603.0};
1242  const double v0[]={0.0,6.8978,7.8157,3.2039};
1243 
1244  // Critical parameters
1245  crit.rho = 458.55946002;
1246  crit.p = PressureUnit(4212.0,UNIT_KPA);
1247  crit.T = 477.5;
1248  crit.v = 1.0/crit.rho;
1249 
1250  // Other fluid parameters
1251  params.molemass = 116.94962;
1252  params.Ttriple = 169.68;
1253  params.ptriple = 0.00649365146247;
1254  params.accentricfactor = 0.2195;
1255  params.R_u = 8.314472;
1256 
1257  // Limits of EOS
1258  limits.Tmin = 169.68;
1259  limits.Tmax = 500.0;
1260  limits.pmax = 400000.0;
1261  limits.rhomax = 1000000.0*params.molemass;
1262 
1263  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
1264  std::vector<double> d_v(d_polar,d_polar+sizeof(d_polar)/sizeof(double));
1265  std::vector<double> t_v(t_polar,t_polar+sizeof(t_polar)/sizeof(double));
1266  std::vector<double> l_v(c_polar,c_polar+sizeof(c_polar)/sizeof(double));
1267  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
1268  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
1269 
1270  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
1271 
1272  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
1273  phirlist.push_back(phir_);
1274 
1275  phi_BC * phi0_lead_ = new phi0_lead(-15.5074814985,9.1871858933);
1276  phi0list.push_back(phi0_lead_);
1277 
1278  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
1279  phi0list.push_back(phi0_logtau_);
1280 
1281 
1282  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
1283  phi0list.push_back(phi0_Planck_Einstein_);
1284 
1285  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
1286  TransportReference.assign("Using ECS");
1287 
1288  name.assign("R141b");
1289  aliases.push_back(std::string("R141B"));
1290 
1291  REFPROPname.assign("R141b");
1292 
1293  ECSReferenceFluid = "Propane";
1294 
1295  BibTeXKeys.EOS = "Lemmon-JCED-2006";
1296  BibTeXKeys.ECS_FITS = "Huber-IECR-2003";
1297  BibTeXKeys.ECS_LENNARD_JONES = "Huber-IECR-2003";
1298  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
1299 }
1300 void R141bClass::ECSParams(double *e_k, double *sigma)
1301 {
1302  *e_k = 370.44;
1303  *sigma = 0.5493;
1304 }
1305 double R141bClass::ECS_f_int(double T)
1306 {
1307  return 0.000521722+0.00000292456*T;
1308 }
1310 {
1311  return 0.92135+0.041091*rhor+0*rhor*rhor;
1312 }
1314 {
1315  return 1.0867-0.0216469*rhor;
1316 }
1317 
1318 
1320 {
1321  const double n[]={0.0,1.00380000000,-2.76620000000,0.42921000000,0.08136300000,0.00024174000,0.48246000000,0.75542000000,-0.00743000000,-0.41460000000,-0.01655800000,-0.10644000000,-0.02170400000};
1322  const double u0[]={0.0,473.0,1256.0,2497.0,6840.0};
1323  const double v0[]={0.0,5.0385,6.8356,4.0591,2.8136};
1324 
1325  // Critical parameters
1326  crit.rho = 445.99694314;
1327  crit.p = PressureUnit(4055.0, UNIT_KPA);
1328  crit.T = 410.26;
1329  crit.v = 1.0/crit.rho;
1330 
1331  // Other fluid parameters
1332  params.molemass = 100.49503;
1333  params.Ttriple = 142.72;
1334  params.ptriple = 0.00363327066489;
1335  params.accentricfactor = 0.2321;
1336  params.R_u = 8.314472;
1337 
1338  // Limits of EOS
1339  limits.Tmin = 142.72;
1340  limits.Tmax = 470.0;
1341  limits.pmax = 60000.0;
1342  limits.rhomax = 1000000.0*params.molemass;
1343 
1344  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
1345  std::vector<double> d_v(d_polar,d_polar+sizeof(d_polar)/sizeof(double));
1346  std::vector<double> t_v(t_polar,t_polar+sizeof(t_polar)/sizeof(double));
1347  std::vector<double> l_v(c_polar,c_polar+sizeof(c_polar)/sizeof(double));
1348  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
1349  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
1350 
1351  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
1352 
1353  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
1354  phirlist.push_back(phir_);
1355 
1356  phi_BC * phi0_lead_ = new phi0_lead(-12.6016527149,8.3160183265);
1357  phi0list.push_back(phi0_lead_);
1358 
1359  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
1360  phi0list.push_back(phi0_logtau_);
1361 
1362 
1363  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
1364  phi0list.push_back(phi0_Planck_Einstein_);
1365 
1366  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
1367  TransportReference.assign("Using ECS");
1368 
1369  name.assign("R142b");
1370  aliases.push_back(std::string("R142B"));
1371 
1372  REFPROPname.assign("R142b");
1373 
1374  ECSReferenceFluid = "Propane";
1375 
1376  BibTeXKeys.EOS = "Lemmon-JCED-2006";
1377  BibTeXKeys.ECS_FITS = "Huber-IECR-2003";
1378  BibTeXKeys.ECS_LENNARD_JONES = "Huber-IECR-2003";
1379  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
1380 }
1381 void R142bClass::ECSParams(double *e_k, double *sigma)
1382 {
1383  *e_k = 278.2;
1384  *sigma = 0.5362;
1385 }
1386 double R142bClass::ECS_f_int(double T)
1387 {
1388  return 0.000940725+0.000000988196*T;
1389 }
1391 {
1392  return 0.9716+0.019181*rhor+0*rhor*rhor;
1393 }
1395 {
1396  return 1.0749-0.0177916*rhor;
1397 }
1398 
1399 
1401 {
1402  const double n[]={0.0,1.32700000000,-3.84330000000,0.92200000000,0.11360000000,0.00036195000,1.10010000000,1.18960000000,-0.02514700000,-0.65923000000,-0.02796900000,-0.18330000000,-0.02163000000};
1403  const double u0[]={0.0,326.0,595.0,1489.0};
1404  const double v0[]={0.0,7.2198,7.2692,11.599};
1405 
1406  // Critical parameters
1407  crit.rho = 627.9845622;
1408  crit.p = PressureUnit(2640.0, UNIT_KPA);
1409  crit.T = 345.02;
1410  crit.v = 1.0/crit.rho;
1411 
1412  // Other fluid parameters
1413  params.molemass = 188.01933;
1414  params.Ttriple = 125.45;
1415  params.ptriple = 0.00201898352904;
1416  params.accentricfactor = 0.3172;
1417  params.R_u = 8.314472;
1418 
1419  // Limits of EOS
1420  limits.Tmin = 125.45;
1421  limits.Tmax = 440.0;
1422  limits.pmax = 20000.0;
1423  limits.rhomax = 1000000.0*params.molemass;
1424 
1425  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
1426  std::vector<double> d_v(d_polar,d_polar+sizeof(d_polar)/sizeof(double));
1427  std::vector<double> t_v(t_polar,t_polar+sizeof(t_polar)/sizeof(double));
1428  std::vector<double> l_v(c_polar,c_polar+sizeof(c_polar)/sizeof(double));
1429  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
1430  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
1431 
1432  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
1433 
1434  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
1435  phirlist.push_back(phir_);
1436 
1437  phi_BC * phi0_lead_ = new phi0_lead(-15.6587335175,11.4531412796);
1438  phi0list.push_back(phi0_lead_);
1439 
1440  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
1441  phi0list.push_back(phi0_logtau_);
1442 
1443 
1444  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
1445  phi0list.push_back(phi0_Planck_Einstein_);
1446 
1447  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
1448  TransportReference.assign("Using ECS");
1449 
1450  name.assign("R218");
1451  REFPROPname.assign("R218");
1452 
1453  ECSReferenceFluid = "Propane";
1454 
1455  BibTeXKeys.EOS = "Lemmon-JCED-2006";
1456  BibTeXKeys.ECS_FITS = "Huber-IECR-2003";
1457  BibTeXKeys.ECS_LENNARD_JONES = "Huber-IECR-2003";
1458  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
1459 }
1460 
1461 void R218Class::ECSParams(double *e_k, double *sigma)
1462 {
1463  *e_k = 266.35;
1464  *sigma = 0.58;
1465 }
1466 double R218Class::ECS_f_int(double T)
1467 {
1468  return 0.000892659+0.00000114912*T;
1469 }
1470 double R218Class::ECS_psi_viscosity(double rhor)
1471 {
1472  return 1.10225-0.00550442*rhor+0*rhor*rhor;
1473 }
1475 {
1476  return 1.2877-0.0758811*rhor;
1477 }
1478 
1479 
1481 {
1482  const double n[]={0.0,1.2904,
1483  -3.2154,
1484  0.50693,
1485  0.093148,
1486  0.00027638,
1487  0.71458,
1488  0.87252,
1489  -0.015077,
1490  -0.40645,
1491  -0.11701,
1492  -0.13062,
1493  -0.022952};
1494  const double u0[]={0.0,222.0,1010.0,2450.0};
1495  const double v0[]={0.0,5.5728,10.385,12.554};
1496 
1497  // Critical parameters
1498  crit.rho = 516.084569;
1499  crit.p = PressureUnit(3651.0, UNIT_KPA);
1500  crit.T = 427.16;
1501  crit.v = 1.0/crit.rho;
1502 
1503  // Other fluid parameters
1504  params.molemass = 134.04794;
1505  params.Ttriple = 171.05;
1506  params.ptriple = 0.0125165917597;
1507  params.accentricfactor = 0.3776;
1508  params.R_u = 8.314472;
1509 
1510  // Limits of EOS
1511  limits.Tmin = 171.05;
1512  limits.Tmax = 440.0;
1513  limits.pmax = 200000.0;
1514  limits.rhomax = 1000000.0*params.molemass;
1515 
1516  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
1517  std::vector<double> d_v(d_polar,d_polar+sizeof(d_polar)/sizeof(double));
1518  std::vector<double> t_v(t_polar,t_polar+sizeof(t_polar)/sizeof(double));
1519  std::vector<double> l_v(c_polar,c_polar+sizeof(c_polar)/sizeof(double));
1520  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
1521  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
1522 
1523  for (unsigned int i=0; i < u0_v.size();i++) { u0_v[i]/=crit.T; }
1524 
1525  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
1526  phirlist.push_back(phir_);
1527 
1528  phi_BC * phi0_lead_ = new phi0_lead(-13.4283638514,9.87236538);
1529  phi0list.push_back(phi0_lead_);
1530 
1531  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
1532  phi0list.push_back(phi0_logtau_);
1533 
1534  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
1535  phi0list.push_back(phi0_Planck_Einstein_);
1536 
1537  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
1538  TransportReference.assign("Using ECS\n\nSurface Tension:\nJames W Schmidt, Ernesto Carrillo-Nava, Michael R Moldover \"Partially halogenated hydrocarbons CHFCl-CF3, CF3-CH3, CF3-CHF-CHF2, CF3-CH2-CF3, CHF2-CF2-CH2F, CF3-CH2-CHF2, CF3-O-CHF2: critical temperature, refractive indices, surface tension and estimates of liquid, vapor and critical densities\" Fluid Phase Equilibria, Volume 122, Issues 1�2, 31 July 1996, Pages 187�206 http://dx.doi.org/10.1016/0378-3812(96)03044-0");
1539 
1540  name.assign("R245fa");
1541  aliases.push_back("R245FA");
1542  REFPROPname.assign("R245fa");
1543 
1544  BibTeXKeys.EOS = "Lemmon-JCED-2006";
1545  BibTeXKeys.ECS_FITS = "Huber-IECR-2003";
1546  BibTeXKeys.ECS_LENNARD_JONES = "Huber-IECR-2003";
1547  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
1548 
1549 }
1550 //double R245faClass::viscosity_Trho(double T, double rho)
1551 //{
1552 // /*
1553 // Fitting of shape factor curves to R134a data. This method is employed because solving
1554 // for the shape factors is computationally very expensive and not very nice
1555 // convergence behavior is experienced. Thus we can use the ECS method,
1556 // but with about the execution time of a conventional viscosity correlation.
1557 //
1558 // This function code was automatically generated by the fit_shape_factor.py
1559 // script in the dev/ folder on Wednesday, 27. February 2013
1560 //
1561 // Mean absolute errors of shape factor prediction:
1562 // theta = 0.292256 %
1563 // phi = 2.72008 %
1564 // */
1565 //
1566 // double e_k, sigma, tau, delta, A1, A2, A3, A4, theta, Tc, Tc0, T0, rho0;
1567 // double DELTA, PSI_theta, psi, f, h, F_eta, M, M0, delta_omega, rho0bar;
1568 // double B1, B2, B3, B4, PSI_phi, Zc, Zc0, rhoc0, rhoc, log_tau, phi, rhobar;
1569 //
1570 // double c[] = {-0.2154409562088915, -0.9709822762884642, 158.5843595248966, -74.52983550684725, 73672.6309941645, 73.74421821646304, -73827.2063003716, 47.22333447114561, -0.9472042408595509, 0.4964305453767688, 2.397163632251555, 2.396439386998316};
1571 // double d[] = {1.11465305331564, 0.2066346831910978, -212.4889952190534, 257.5843857690007, 285.3352731323313, -257.5533921176973, -82.24255997887354, -82.22887164856553, 0.9772522047882048, 0.5746074769208611, 2.248907052144205, 2.674375937148288};
1572 //
1573 // tau = reduce.T/T;
1574 // delta = rho/reduce.rho;
1575 //
1576 // long iR134a = get_Fluid_index(std::string("R134a"));
1577 // Fluid* R134a = get_fluid(iR134a);
1578 // delta_omega = params.accentricfactor-R134a->params.accentricfactor;
1579 //
1580 // Zc = reduce.p/(reduce.rho*R()*reduce.T);
1581 // Zc0 = R134a->reduce.p/(R134a->reduce.rho*R134a->R()*R134a->reduce.T);
1582 // Tc = reduce.T;
1583 // Tc0 = R134a->reduce.T;
1584 // rhoc = reduce.rho;
1585 // rhoc0 = R134a->reduce.rho;
1586 // M = params.molemass;
1587 // M0 = R134a->params.molemass;
1588 //
1589 // rhobar = rho/M;
1590 //
1591 // if (rho > 40.858)
1592 // {
1593 // DELTA = pow(delta-1,2)+pow(tau-1,2);
1594 // log_tau = log(tau);
1595 //
1596 // A1 = c[0]-c[1]*log_tau;
1597 // A2 = c[2]-c[3]*log_tau;
1598 // A3 = c[4]-c[5]*log_tau;
1599 // A4 = c[6]-c[7]*pow(log_tau,2);
1600 // PSI_theta = c[8]*delta*exp(-c[9]*pow(DELTA,2));
1601 // theta = 1+(delta_omega)*(A1+A2*exp(-pow(delta,2))+A3*exp(-pow(delta,c[10]))+A4*exp(-pow(delta,c[11]))+PSI_theta);
1602 //
1603 // B1 = d[0]-d[1]*log_tau;
1604 // B2 = d[2]-d[3]*log_tau;
1605 // B3 = d[4]-d[5]*log_tau;
1606 // B4 = d[6]-d[7]*pow(log_tau,2);
1607 // PSI_phi = d[8]*delta*exp(-d[9]*pow(DELTA,2));
1608 // phi = Zc0/Zc*(1+(delta_omega)*(B1+B2*exp(-pow(delta,2))+B3*exp(-pow(delta,d[10]))+B4*exp(-pow(delta,d[11]))+PSI_phi));
1609 // }
1610 // else
1611 // {
1612 // theta = 1.0; phi = 1.0;
1613 // }
1614 // T0 = T*Tc0/theta/Tc;
1615 // h = M/M0*rhoc0/rhoc*phi;
1616 // rho0bar = rhobar*h;
1617 // rho0 = M0*rho0bar;
1618 //
1619 // psi = ECS_psi_viscosity(delta);
1620 // f = T/T0;
1621 // F_eta = sqrt(f)*pow(h,-2.0/3.0)*sqrt(M/M0);
1622 // ECSParams(&e_k,&sigma);
1623 // return viscosity_dilute(T,e_k,sigma) + R134a->viscosity_background(T0,rho0*psi)*F_eta;
1624 //}
1625 void R245faClass::ECSParams(double *e_k, double *sigma)
1626 {
1627  // From Huber (2003)
1628  *e_k = 329.72; *sigma = 0.5529;
1629 }
1630 double R245faClass::ECS_f_int(double T)
1631 {
1632  // From Huber (2003)
1633  return 1.64999e-3 - 3.28868e-7*T;
1634 }
1636 {
1637  // From Huber (2003)
1638  return 1.1529 - 4.41540e-2*rhor;
1639 }
1641 {
1642  // From Huber (2003)
1643  return 1.1627-0.0473491*rhor;
1644 }
1646 {
1647  // From Mulero, 2012, JPCRD
1648  return 0.073586*pow(1-T/reduce.T,1.0983)+0.0103*pow(1-T/reduce.T,0.60033)-0.02663*pow(1-T/reduce.T,0.72765);
1649 }
1650 
1652 {
1653  const double n[]={0.0,
1654  0.85316,
1655  -2.6366,
1656  0.69129,
1657  0.054681,
1658  0.00012796,
1659  -0.37093,
1660  0.33920,
1661  -0.0017413,
1662  -0.095417,
1663  -0.078852,
1664  -0.030729,
1665  -0.011497};
1666  const double u0[]={0.0,1841.0,4232.0};
1667  const double v0[]={0.0,5.6936,2.9351};
1668 
1669  // Critical parameters
1670  crit.rho = 316.506156;
1671  crit.p = PressureUnit(5897.0, UNIT_KPA);
1672  crit.T = 317.28;
1673  crit.v = 1.0/crit.rho;
1674 
1675  // Other fluid parameters
1676  params.molemass = 34.03292;
1677  params.Ttriple = 129.82;
1678  params.ptriple = 0.344246534824;
1679  params.accentricfactor = 0.2004;
1680  params.R_u = 8.314472;
1681 
1682  // Limits of EOS
1683  limits.Tmin = 129.82;
1684  limits.Tmax = 425.0;
1685  limits.pmax = 70000.0;
1686  limits.rhomax = 1000000.0*params.molemass;
1687 
1688  std::vector<double> n_v(n,n+sizeof(n)/sizeof(double));
1689  std::vector<double> d_v(d_polar,d_polar+sizeof(d_polar)/sizeof(double));
1690  std::vector<double> t_v(t_polar,t_polar+sizeof(t_polar)/sizeof(double));
1691  std::vector<double> l_v(c_polar,c_polar+sizeof(c_polar)/sizeof(double));
1692  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
1693  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
1694 
1695  for (unsigned int i=0;i<u0_v.size();i++) { u0_v[i]/=crit.T; }
1696 
1697  phi_BC * phir_ = new phir_power(n_v,d_v,t_v,l_v,1,12);
1698  phirlist.push_back(phir_);
1699 
1700  phi_BC * phi0_lead_ = new phi0_lead(-4.867644116,4.2527951258);
1701  phi0list.push_back(phi0_lead_);
1702 
1703  phi_BC * phi0_logtau_ = new phi0_logtau(4.0-1);
1704  phi0list.push_back(phi0_logtau_);
1705 
1706  phi_BC * phi0_power_ = new phi0_power(-0.00016937*pow(crit.T,1.0)/(1.0*(1.0+1)),-1.0);
1707  phi0list.push_back(phi0_power_);
1708  phi_BC * phi0_Planck_Einstein_ = new phi0_Planck_Einstein(v0_v,u0_v,1,v0_v.size()-1);
1709  phi0list.push_back(phi0_Planck_Einstein_);
1710 
1711  EOSReference.assign("Lemmon, E.W., and R. Span, \"Short Fundamental Equations of State for 20 Industrial Fluids,\", J. Chem. Eng. Data, 51:785-850, 2006.");
1712  TransportReference.assign("Using ECS");
1713 
1714  name.assign("R41");
1715 
1716  REFPROPname.assign("R41");
1717 
1718  BibTeXKeys.EOS = "Lemmon-JCED-2006";
1719  BibTeXKeys.ECS_LENNARD_JONES = "Chichester-NIST-2008";
1720  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
1721 }
1722 
1723 // --------------------
1724 // ANCILLARY EQUATIONS
1725 // --------------------
1726 // All of these ancillary equations were generated with the Python script in the dev folder
1727 // REFPROP saturation data (since it could go pretty much all the way (within 1 uK) to the critical point) was fit
1728 // Powell method used to guess the exponents, within the function ODRPack from scipy.odr used to find the coefficients
1729 // Works quite well
1730 
1731 double R141bClass::rhosatL(double T)
1732 {
1733  double THETA = 1-T/crit.T;
1734  return 509.965+1091.12*pow(THETA,0.439413)+185.865*pow(THETA,2.64809);
1735 }
1736 double IsohexaneClass::rhosatL(double T)
1737 {
1738  double THETA = 1-T/crit.T;
1739  return 238.626+578.165*pow(THETA,0.398393)+109.839*pow(THETA,2.87839);
1740 }
1741 double R245faClass::rhosatL(double T)
1742 {
1743 double theta = 1-T/reduce.T;
1744 double RHS,rho;
1745 
1746 // Max error is 0.941705 %
1747 RHS = +1.934009*pow(theta,0.333333)-1.048842*pow(theta,0.666667)+0.705519*pow(theta,1.333333)-0.564935*pow(theta,3.000000)+1.000168*pow(theta,6.166667);
1748 rho = exp(RHS)*reduce.rho;
1749 return rho;
1750 }
1751 
1752 double AcetoneClass::psat(double T)
1753 {
1754  // Maximum absolute error is 0.161624 % between 178.500001 K and 508.099999 K
1755  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
1756  const double Ni[]={0,-7.7420933491645938, 2.2551227728042176, -2.2097584451804844, -0.80807019454396622, -3.0130241547201058, 1.1288610270689932 };
1757  double summer=0,theta;
1758  int i;
1759  theta=1-T/reduce.T;
1760  for (i=1;i<=6;i++)
1761  {
1762  summer=summer+Ni[i]*pow(theta,ti[i]);
1763  }
1764  return reduce.p.Pa*exp(reduce.T/T*summer);
1765 }
1766 double AcetoneClass::rhosatL(double T)
1767 {
1768  // Maximum absolute error is 0.479021 % between 178.500001 K and 508.099999 K
1769  const double ti[]={0,0.26459772663939418, 1.4091452766461503, 1.4202544602432625, 11.775226488952327, 1.4009455029990348};
1770  const double Ni[]={0,1.2349786870374411, -3379.0389866312494, 1436.4764562223259, 0.16448509887442936, 1942.7394651540521};
1771  double summer=0;
1772  int i;
1773  double theta;
1774  theta=1-T/reduce.T;
1775  for (i=1;i<=5;i++)
1776  {
1777  summer+=Ni[i]*pow(theta,ti[i]);
1778  }
1779  return reduce.rho*exp(summer);
1780 }
1781 double AcetoneClass::rhosatV(double T)
1782 {
1783  // Maximum absolute error is 0.166474 % between 178.500001 K and 508.099999 K
1784  const double ti[]={0,0.32486954786675754, 1.1136505233132008, 1.397124100888042, 1.4206102336811905, 4.1261683284501736};
1785  const double Ni[]={0,-2.0054679941104143, -27.132764899927583, 304.9671207804098, -282.29487966244773, -4.08636533228474};
1786  double summer=0,theta;
1787  int i;
1788  theta=1.0-T/reduce.T;
1789  for (i=1;i<=5;i++)
1790  {
1791  summer=summer+Ni[i]*pow(theta,ti[i]);
1792  }
1793  return reduce.rho*exp(crit.T/T*summer);
1794 }
1795 
1796 double NitrousOxideClass::psat(double T)
1797 {
1798  // Maximum absolute error is 0.008121 % between 182.330001 K and 309.519999 K
1799  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
1800  const double Ni[]={0,-6.868769329455664, 2.044618171539057, -2.6329617846296989, 2.5383085882276508, -9.5683854957182639, 10.373557988632387 };
1801  double summer=0,theta;
1802  int i;
1803  theta=1-T/reduce.T;
1804  for (i=1;i<=6;i++)
1805  {
1806  summer=summer+Ni[i]*pow(theta,ti[i]);
1807  }
1808  return reduce.p.Pa*exp(reduce.T/T*summer);
1809 }
1811 {
1812  // Maximum absolute error is 1.073634 % between 182.330001 K and 309.519999 K
1813  const double ti[]={0,0.60557790700716319, 0.70939607919869829, 2.5963911853523869, 0.68042926228856082, 0.67155910920440876};
1814  const double Ni[]={0,389.77875979761046, -1767.6976331438359, 0.20467533761004733, 10361.905167320929, -8982.8239481801156};
1815  double summer=0;
1816  int i;
1817  double theta;
1818  theta=1-T/reduce.T;
1819  for (i=1;i<=5;i++)
1820  {
1821  summer+=Ni[i]*pow(theta,ti[i]);
1822  }
1823  return reduce.rho*exp(summer);
1824 }
1826 {
1827  // Maximum absolute error is 0.610881 % between 182.330001 K and 309.519999 K
1828  const double ti[]={0,0.39081966725676398, 1.1522466533120135, 2.3180840594503693, 2.6358258974386621, 8.1917571767482542};
1829  const double Ni[]={0,-2.7894545753779387, -3.4744736926456077, 9.951411057303936, -11.242955195846788, -9.9192629053042864};
1830  double summer=0,theta;
1831  int i;
1832  theta=1.0-T/reduce.T;
1833  for (i=1;i<=5;i++)
1834  {
1835  summer=summer+Ni[i]*pow(theta,ti[i]);
1836  }
1837  return reduce.rho*exp(crit.T/T*summer);
1838 }
1839 
1841 {
1842  // Maximum absolute error is 0.110395 % between 197.700001 K and 430.639999 K
1843  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
1844  const double Ni[]={0,-7.4278303501775333, 2.4740630627264735, -3.5299527654256115, 2.6573726552982837, -8.7531566071245539, 6.5589471788208602 };
1845  double summer=0,theta;
1846  int i;
1847  theta=1-T/reduce.T;
1848  for (i=1;i<=6;i++)
1849  {
1850  summer=summer+Ni[i]*pow(theta,ti[i]);
1851  }
1852  return reduce.p.Pa*exp(reduce.T/T*summer);
1853 }
1855 {
1856  // Maximum absolute error is 1.149548 % between 197.700001 K and 430.639999 K
1857  const double ti[]={0,0.70876204235579221, 0.7229678532566155, 0.83486766193741779, 0.73141949820423335, 1.6738565688812563};
1858  const double Ni[]={0,12156.409552558353, -37170.600921873636, -391.93020566978561, 25406.018688280838, 1.5016221145583379};
1859  double summer=0;
1860  int i;
1861  double theta;
1862  theta=1-T/reduce.T;
1863  for (i=1;i<=5;i++)
1864  {
1865  summer+=Ni[i]*pow(theta,ti[i]);
1866  }
1867  return reduce.rho*exp(summer);
1868 }
1870 {
1871  // Maximum absolute error is 0.772197 % between 197.700001 K and 430.639999 K
1872  const double ti[]={0,0.40597757408572105, 1.0078158710335801, 1.5968694256951719, 4.007078507058492, -0.16145660992043773};
1873  const double Ni[]={0,-3.0032294578395011, -2.4869182335281512, -0.13184442384899894, -4.7263242155221183, -0.00033424139516086214};
1874  double summer=0,theta;
1875  int i;
1876  theta=1.0-T/reduce.T;
1877  for (i=1;i<=5;i++)
1878  {
1879  summer=summer+Ni[i]*pow(theta,ti[i]);
1880  }
1881  return reduce.rho*exp(crit.T/T*summer);
1882 }
1883 
1884 double R141bClass::psat(double T)
1885 {
1886  // Maximum absolute error is 0.175974 % between 169.680001 K and 477.499999 K
1887  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
1888  const double Ni[]={0,-7.2204561290947709, 2.2758349671865776, -2.7502808754918209, 0.45527436710325281, -3.6366202389018829, 0.018941343442678414 };
1889  double summer=0,theta;
1890  int i;
1891  theta=1-T/reduce.T;
1892  for (i=1;i<=6;i++)
1893  {
1894  summer=summer+Ni[i]*pow(theta,ti[i]);
1895  }
1896  return reduce.p.Pa*exp(reduce.T/T*summer);
1897 }
1898 //double R141bClass::rhosatL(double T)
1899 //{
1900 // // Maximum absolute error is 100.000000 % between 169.680001 K and 477.499999 K
1901 // const double ti[]={0,0.2828129519231074, -0.25200521806435544, -0.72225671323569796, 3.1715066594344008, 3.3149603333488011};
1902 // const double Ni[]={0,1.30652890669813, 0.00055365778690386611, -8.3776570451762927e-05, -0.8565619843893828, 0.95359468578186291};
1903 // double summer=0;
1904 // int i;
1905 // double theta;
1906 // theta=1-T/reduce.T;
1907 // for (i=1;i<=5;i++)
1908 // {
1909 // summer+=Ni[i]*pow(theta,ti[i]);
1910 // }
1911 // return reduce.rho*exp(summer);
1912 //}
1913 double R141bClass::rhosatV(double T)
1914 {
1915  // Maximum absolute error is 0.284442 % between 169.680001 K and 477.499999 K
1916  const double ti[]={0,0.37287817354647435, 0.91276608962657058, 4.7497423008783093, 2.6894254703994478, 18.919444023057686};
1917  const double Ni[]={0,-2.6251044774898529, -2.4960108200116555, -3.9765002486540135, -1.4797257697369941, -13.683339624267827};
1918  double summer=0,theta;
1919  int i;
1920  theta=1.0-T/reduce.T;
1921  for (i=1;i<=5;i++)
1922  {
1923  summer=summer+Ni[i]*pow(theta,ti[i]);
1924  }
1925  return reduce.rho*exp(crit.T/T*summer);
1926 }
1927 
1928 double R142bClass::psat(double T)
1929 {
1930  // Maximum absolute error is 0.104651 % between 142.720001 K and 410.259999 K
1931  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
1932  const double Ni[]={0,-7.3079519349991271, 2.2608201769441369, -2.5771971051912246, 0.3158163336195175, -4.025672461018349, 1.4340055620931298 };
1933  double summer=0,theta;
1934  int i;
1935  theta=1-T/reduce.T;
1936  for (i=1;i<=6;i++)
1937  {
1938  summer=summer+Ni[i]*pow(theta,ti[i]);
1939  }
1940  return reduce.p.Pa*exp(reduce.T/T*summer);
1941 }
1942 double R142bClass::rhosatL(double T)
1943 {
1944  // Maximum absolute error is 0.806206 % between 142.720001 K and 410.259999 K
1945  const double ti[]={0,0.27967246985799865, 2.2595545100614993, 2.2688822238233723, 2.2789373329095373, 15.311342436654607};
1946  const double Ni[]={0,1.3105419105059686, 819.04365787414179, -1594.0402800866095, 775.09185686337332, 0.41293568648240681};
1947  double summer=0;
1948  int i;
1949  double theta;
1950  theta=1-T/reduce.T;
1951  for (i=1;i<=5;i++)
1952  {
1953  summer+=Ni[i]*pow(theta,ti[i]);
1954  }
1955  return reduce.rho*exp(summer);
1956 }
1957 double R142bClass::rhosatV(double T)
1958 {
1959  // Maximum absolute error is 0.361112 % between 142.720001 K and 410.259999 K
1960  const double ti[]={0,0.37340891699198825, 0.83800239688015932, 2.7771025614151861, 4.7454937920345799, 9.028952964225164};
1961  const double Ni[]={0,-2.4392795173014732, -2.6846161393904771, -1.6167477168461746, -3.8473658756292215, 0.93171399760554896};
1962  double summer=0,theta;
1963  int i;
1964  theta=1.0-T/reduce.T;
1965  for (i=1;i<=5;i++)
1966  {
1967  summer=summer+Ni[i]*pow(theta,ti[i]);
1968  }
1969  return reduce.rho*exp(crit.T/T*summer);
1970 }
1971 
1972 double R218Class::psat(double T)
1973 {
1974  // Maximum absolute error is 0.098033 % between 125.450001 K and 345.019999 K
1975  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
1976  const double Ni[]={0,-7.8102674790768001, 2.6559310101692217, -3.3120240937942338, -0.1760076204907364, -3.3661799062965576, 0.76921236609229326 };
1977  double summer=0,theta;
1978  int i;
1979  theta=1-T/reduce.T;
1980  for (i=1;i<=6;i++)
1981  {
1982  summer=summer+Ni[i]*pow(theta,ti[i]);
1983  }
1984  return reduce.p.Pa*exp(reduce.T/T*summer);
1985 }
1986 double R218Class::rhosatL(double T)
1987 {
1988  // Maximum absolute error is 1.122651 % between 125.450001 K and 345.019999 K
1989  const double ti[]={0,0.36912361663072235, 0.71091417114172772, 1.276402066765205, 2.1923155395132605, 2.874407938057681};
1990  const double Ni[]={0,2.1608111314789578, -1.4692977923406709, 0.94803741116228957, -0.70505497641399617, 0.47144925458636899};
1991  double summer=0;
1992  int i;
1993  double theta;
1994  theta=1-T/reduce.T;
1995  for (i=1;i<=5;i++)
1996  {
1997  summer+=Ni[i]*pow(theta,ti[i]);
1998  }
1999  return reduce.rho*exp(summer);
2000 }
2001 double R218Class::rhosatV(double T)
2002 {
2003  // Maximum absolute error is 0.066811 % between 125.450001 K and 345.019999 K
2004  const double ti[]={0,0.45990648911676563, 0.72073155438993686, 2.8543906505788574, 3.1271008410006345, 3.1486689815091231};
2005  const double Ni[]={0,-3.5237161790276961, -1.1802834239391882, -79.601787512253651, 1180.1487663875571, -1107.036693472731};
2006  double summer=0,theta;
2007  int i;
2008  theta=1.0-T/reduce.T;
2009  for (i=1;i<=5;i++)
2010  {
2011  summer=summer+Ni[i]*pow(theta,ti[i]);
2012  }
2013  return reduce.rho*exp(crit.T/T*summer);
2014 }
2015 
2016 double R245faClass::psat(double T)
2017 {
2018  // Maximum absolute error is 0.064905 % between 171.050001 K and 427.159999 K
2019  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2020  const double Ni[]={0,-7.8747833396154343, 2.1483917502708074, -3.0988907177869018, -0.75337618597081146, -3.6008657396087567, 0.51065419034037485 };
2021  double summer=0,theta;
2022  int i;
2023  theta=1-T/reduce.T;
2024  for (i=1;i<=6;i++)
2025  {
2026  summer=summer+Ni[i]*pow(theta,ti[i]);
2027  }
2028  return reduce.p.Pa*exp(reduce.T/T*summer);
2029 }
2030 
2031 double R245faClass::rhosatV(double T)
2032 {
2033  // Maximum absolute error is 0.236320 % between 171.050001 K and 427.159999 K
2034  const double ti[]={0,0.34115317949378737, 0.79355129238839972, 2.8038127551966383, 2.7353987486677047, 4.822133836311937};
2035  const double Ni[]={0,-2.0810252672377687, -3.4639909310829626, 1.9189382275384959, -5.1121366494430251, -4.0159777625303965};
2036  double summer=0,theta;
2037  int i;
2038  theta=1.0-T/reduce.T;
2039  for (i=1;i<=5;i++)
2040  {
2041  summer=summer+Ni[i]*pow(theta,ti[i]);
2042  }
2043  return reduce.rho*exp(crit.T/T*summer);
2044 }
2045 
2046 double R41Class::psat(double T)
2047 {
2048  // Maximum absolute error is 0.134323 % between 129.820001 K and 317.279999 K
2049  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2050  const double Ni[]={0,-7.1501947108542199, 1.7685510326093266, -0.91167320234282201, -1.5386487669225608, -0.93016709851120405, -0.1884522931161588 };
2051  double summer=0,theta;
2052  int i;
2053  theta=1-T/reduce.T;
2054  for (i=1;i<=6;i++)
2055  {
2056  summer=summer+Ni[i]*pow(theta,ti[i]);
2057  }
2058  return reduce.p.Pa*exp(reduce.T/T*summer);
2059 }
2060 double R41Class::rhosatL(double T)
2061 {
2062  // Maximum absolute error is 1.080025 % between 129.820001 K and 317.279999 K
2063  const double ti[]={0,0.34900292856984289, 0.62896434437355531, 1.1347417598669201, 1.9506054552664505, 2.8649776878900806};
2064  const double Ni[]={0,1.9328233782786501, -0.86609333320547166, 0.46954483433043431, -0.39626336460294198, 0.24164742846392567};
2065  double summer=0;
2066  int i;
2067  double theta;
2068  theta=1-T/reduce.T;
2069  for (i=1;i<=5;i++)
2070  {
2071  summer+=Ni[i]*pow(theta,ti[i]);
2072  }
2073  return reduce.rho*exp(summer);
2074 }
2075 double R41Class::rhosatV(double T)
2076 {
2077  // Maximum absolute error is 0.595603 % between 129.820001 K and 317.279999 K
2078  const double ti[]={0,0.42460168461232123, 1.0384822760759682, 3.4244642508329721, 5.7279055805230801, 2.533996044180983};
2079  const double Ni[]={0,-3.3953933375589633, -2.0551088914483819, -4.7134737225801491, -0.51245543874877442, 1.9051073656048443};
2080  double summer=0,theta;
2081  int i;
2082  theta=1.0-T/reduce.T;
2083  for (i=1;i<=5;i++)
2084  {
2085  summer=summer+Ni[i]*pow(theta,ti[i]);
2086  }
2087  return reduce.rho*exp(crit.T/T*summer);
2088 }
2089 
2091 {
2092  // Maximum absolute error is 0.106378 % between 68.160001 K and 132.859999 K
2093  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2094  const double Ni[]={0,-6.1148803182354188, 1.0194126886426906, 0.056580021372273664, -2.418806695158302, 2.035082448741151, -4.7228196982300803 };
2095  double summer=0,theta;
2096  int i;
2097  theta=1-T/reduce.T;
2098  for (i=1;i<=6;i++)
2099  {
2100  summer=summer+Ni[i]*pow(theta,ti[i]);
2101  }
2102  return reduce.p.Pa*exp(reduce.T/T*summer);
2103 }
2105 {
2106  // Maximum absolute error is 0.898555 % between 68.160001 K and 132.859999 K
2107  const double ti[]={0,0.29742254451341815, 1.0554099042533132, 1.489758454772462, 3.9719137526372501, 3.961448705224472};
2108  const double Ni[]={0,1.2676977992280518, 0.09697196291781153, -0.13852431420071057, 0.058524336717331704, 0.055612102409353124};
2109  double summer=0;
2110  int i;
2111  double theta;
2112  theta=1-T/reduce.T;
2113  for (i=1;i<=5;i++)
2114  {
2115  summer+=Ni[i]*pow(theta,ti[i]);
2116  }
2117  return reduce.rho*exp(summer);
2118 }
2120 {
2121  // Maximum absolute error is 0.369651 % between 68.160001 K and 132.859999 K
2122  const double ti[]={0,0.3854343522767737, 1.0104603372467613, 2.1283755916162046, 2.9193957820543872, 6.6868135430695865};
2123  const double Ni[]={0,-2.3723744833990232, -2.8592470973387676, 2.7678810236798252, -3.7675026842177273, -2.5221867301156755};
2124  double summer=0,theta;
2125  int i;
2126  theta=1.0-T/reduce.T;
2127  for (i=1;i<=5;i++)
2128  {
2129  summer=summer+Ni[i]*pow(theta,ti[i]);
2130  }
2131  return reduce.rho*exp(crit.T/T*summer);
2132 }
2133 
2135 {
2136  // Maximum absolute error is 0.083057 % between 134.300001 K and 378.769999 K
2137  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2138  const double Ni[]={0,-6.6144340815954452, 2.0534257788168455, -2.0722088131457848, 1.1149167490331107, -3.8513264261829465, 1.1808252156160568 };
2139  double summer=0,theta;
2140  int i;
2141  theta=1-T/reduce.T;
2142  for (i=1;i<=6;i++)
2143  {
2144  summer=summer+Ni[i]*pow(theta,ti[i]);
2145  }
2146  return reduce.p.Pa*exp(reduce.T/T*summer);
2147 }
2149 {
2150  // Maximum absolute error is 0.677071 % between 134.300001 K and 378.769999 K
2151  const double ti[]={0,0.39284393894021785, 0.38390015433790292, 2.2386517189152535, 2.2115659405613348, 27.119517181027163};
2152  const double Ni[]={0,-12.475292718905436, 13.76513349301672, 5.9184468000342676, -5.9019500519058772, 22.562403946162679};
2153  double summer=0;
2154  int i;
2155  double theta;
2156  theta=1-T/reduce.T;
2157  for (i=1;i<=5;i++)
2158  {
2159  summer+=Ni[i]*pow(theta,ti[i]);
2160  }
2161  return reduce.rho*exp(summer);
2162 }
2164 {
2165  // Maximum absolute error is 0.670265 % between 134.300001 K and 378.769999 K
2166  const double ti[]={0,0.4002371604431198, 1.0280542888849111, 4.7960989516998014, 2.1665471855290961, 2.6645774028673594};
2167  const double Ni[]={0,-2.8333597180190568, -2.2058837335661083, -2.8226141763428818, 1.6742917835056423, -2.2132884573899081};
2168  double summer=0,theta;
2169  int i;
2170  theta=1.0-T/reduce.T;
2171  for (i=1;i<=5;i++)
2172  {
2173  summer=summer+Ni[i]*pow(theta,ti[i]);
2174  }
2175  return reduce.rho*exp(crit.T/T*summer);
2176 }
2177 
2178 double DecaneClass::psat(double T)
2179 {
2180  // Maximum absolute error is 0.095897 % between 243.500001 K and 617.699999 K
2181  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2182  const double Ni[]={0,-8.6751621424501106, 2.8804901074112048, -3.9783693016893227, -0.78550488926699347, -5.4428041796076343, 3.0822748884469573 };
2183  double summer=0,theta;
2184  int i;
2185  theta=1-T/reduce.T;
2186  for (i=1;i<=6;i++)
2187  {
2188  summer=summer+Ni[i]*pow(theta,ti[i]);
2189  }
2190  return reduce.p.Pa*exp(reduce.T/T*summer);
2191 }
2192 double DecaneClass::rhosatL(double T)
2193 {
2194  // Maximum absolute error is 0.397401 % between 243.500001 K and 617.699999 K
2195  const double ti[]={0,0.39698081733802165, 0.99375746839456702, 1.3824414058838479, 2.0870109314455987, 4.0369621174956682};
2196  const double Ni[]={0,2.306748788146411, -3.2750228326598099, 3.2390179121827032, -1.0158340181331245, 0.22333903274150235};
2197  double summer=0;
2198  int i;
2199  double theta;
2200  theta=1-T/reduce.T;
2201  for (i=1;i<=5;i++)
2202  {
2203  summer+=Ni[i]*pow(theta,ti[i]);
2204  }
2205  return reduce.rho*exp(summer);
2206 }
2207 double DecaneClass::rhosatV(double T)
2208 {
2209  // Maximum absolute error is 0.192674 % between 243.500001 K and 617.699999 K
2210  const double ti[]={0,0.50769604931055112, 5.5518179080415102, 1.2630033323438727, 5.1843447790955253, 1.7840587243093533};
2211  const double Ni[]={0,-5.317247348628082, 26.915460654851557, 1.6082159690036035, -31.527804141299679, -4.4909283644660496};
2212  double summer=0,theta;
2213  int i;
2214  theta=1.0-T/reduce.T;
2215  for (i=1;i<=5;i++)
2216  {
2217  summer=summer+Ni[i]*pow(theta,ti[i]);
2218  }
2219  return reduce.rho*exp(crit.T/T*summer);
2220 }
2221 
2223 {
2224  // Maximum absolute error is 0.014061 % between 187.700001 K and 373.099999 K
2225  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2226  const double Ni[]={0,-6.5723352326794293, 1.896430781127326, -1.9355862944610984, 1.2531037764282309, -4.795728167798825, 2.787887611896148 };
2227  double summer=0,theta;
2228  int i;
2229  theta=1-T/reduce.T;
2230  for (i=1;i<=6;i++)
2231  {
2232  summer=summer+Ni[i]*pow(theta,ti[i]);
2233  }
2234  return reduce.p.Pa*exp(reduce.T/T*summer);
2235 }
2237 {
2238  // Maximum absolute error is 0.566702 % between 187.700001 K and 373.099999 K
2239  const double ti[]={0,0.79106386489177882, 0.88939381375621784, 1.0266714393290504, 0.91099311495488788, 1.0191641121567934};
2240  const double Ni[]={0,738.4889085778741, -12085.6445805242, 16689.69047856304, 14107.568427822798, -19448.779316224445};
2241  double summer=0;
2242  int i;
2243  double theta;
2244  theta=1-T/reduce.T;
2245  for (i=1;i<=5;i++)
2246  {
2247  summer+=Ni[i]*pow(theta,ti[i]);
2248  }
2249  return reduce.rho*exp(summer);
2250 }
2252 {
2253  // Maximum absolute error is 0.601824 % between 187.700001 K and 373.099999 K
2254  const double ti[]={0,0.53435963955142052, 1.0318813376408911, 1.0297572598900648, 1.0392102012903406, 4.3435423458517368};
2255  const double Ni[]={0,-5.7597583855079861, -23677.45852297284, 18468.602400239459, 5209.7832429802875, -3.4496094719154797};
2256  double summer=0,theta;
2257  int i;
2258  theta=1.0-T/reduce.T;
2259  for (i=1;i<=5;i++)
2260  {
2261  summer=summer+Ni[i]*pow(theta,ti[i]);
2262  }
2263  return reduce.rho*exp(crit.T/T*summer);
2264 }
2265 
2266 double IsopentaneClass::psat(double T)
2267 {
2268  // Maximum absolute error is 0.859211 % between 112.650001 K and 460.349999 K
2269  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2270  const double Ni[]={0,-7.1614631214691062, 1.6427675982493801, -1.0765148777064892, -2.4350359463228068, -0.00077830587755741939, -1.3607605842862582 };
2271  double summer=0,theta;
2272  int i;
2273  theta=1-T/reduce.T;
2274  for (i=1;i<=6;i++)
2275  {
2276  summer=summer+Ni[i]*pow(theta,ti[i]);
2277  }
2278  return reduce.p.Pa*exp(reduce.T/T*summer);
2279 }
2281 {
2282  // Maximum absolute error is 0.412680 % between 112.650001 K and 460.349999 K
2283  const double ti[]={0,0.2910137977462911, 2.0204585261825168, 4.1882444640378527, 3.0704844993207829, 9.097169407695036};
2284  const double Ni[]={0,1.3160559423567124, -0.24235357370003638, -0.2239827299027437, 0.45658057492355336, 0.10114204215110814};
2285  double summer=0;
2286  int i;
2287  double theta;
2288  theta=1-T/reduce.T;
2289  for (i=1;i<=5;i++)
2290  {
2291  summer+=Ni[i]*pow(theta,ti[i]);
2292  }
2293  return reduce.rho*exp(summer);
2294 }
2296 {
2297  // Maximum absolute error is 0.314179 % between 112.650001 K and 460.349999 K
2298  const double ti[]={0,0.31270615359363657, 0.74616825916589047, 13.438145185545892, 3.7712973823560603, 13.112073494833108};
2299  const double Ni[]={0,-1.6095085105632891, -3.5410442212702162, -2.4025730674501111, -4.4705198913818949, 0.70459696994457377};
2300  double summer=0,theta;
2301  int i;
2302  theta=1.0-T/reduce.T;
2303  for (i=1;i<=5;i++)
2304  {
2305  summer=summer+Ni[i]*pow(theta,ti[i]);
2306  }
2307  return reduce.rho*exp(crit.T/T*summer);
2308 }
2309 
2310 double NeopentaneClass::psat(double T)
2311 {
2312  // Maximum absolute error is 0.004526 % between 256.600001 K and 433.739999 K
2313  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2314  const double Ni[]={0,-7.027004544708106, 1.9793386200106815, -2.360943757602449, 1.1636391968268969, -6.9110737915478353, 6.6905802185479404 };
2315  double summer=0,theta;
2316  int i;
2317  theta=1-T/reduce.T;
2318  for (i=1;i<=6;i++)
2319  {
2320  summer=summer+Ni[i]*pow(theta,ti[i]);
2321  }
2322  return reduce.p.Pa*exp(reduce.T/T*summer);
2323 }
2325 {
2326  // Maximum absolute error is 0.308171 % between 256.600001 K and 433.739999 K
2327  const double ti[]={0,0.30715908929085167, 0.02408980306294933, 2.2951165419376474, 4.2880092045078628, 3.5718062728106448};
2328  const double Ni[]={0,1.3278912346796319, -7.1433703381307663e-07, -0.73279809856370448, -2.8725817580875623, 3.0804108412532227};
2329  double summer=0;
2330  int i;
2331  double theta;
2332  theta=1-T/reduce.T;
2333  for (i=1;i<=5;i++)
2334  {
2335  summer+=Ni[i]*pow(theta,ti[i]);
2336  }
2337  return reduce.rho*exp(summer);
2338 }
2340 {
2341  // Maximum absolute error is 0.331471 % between 256.600001 K and 433.739999 K
2342  const double ti[]={0,0.34885244286586209, 0.96026335525006201, 1.7026350507007288, 2.6663611861234626, 8.6409603088688787};
2343  const double Ni[]={0,-2.2227708856840378, -4.1741890159176576, 3.3061543791847985, -4.7204205710823963, -14.871952577080259};
2344  double summer=0,theta;
2345  int i;
2346  theta=1.0-T/reduce.T;
2347  for (i=1;i<=5;i++)
2348  {
2349  summer=summer+Ni[i]*pow(theta,ti[i]);
2350  }
2351  return reduce.rho*exp(crit.T/T*summer);
2352 }
2353 
2354 double IsohexaneClass::psat(double T)
2355 {
2356  // Maximum absolute error is 0.867155 % between 119.600001 K and 497.699999 K
2357  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2358  const double Ni[]={0,-7.3903287973234741, 1.5420871354898538, -0.84149185676025828, -3.6210436902930638, 0.99970651583741965, -1.9923902966792624 };
2359  double summer=0,theta;
2360  int i;
2361  theta=1-T/reduce.T;
2362  for (i=1;i<=6;i++)
2363  {
2364  summer=summer+Ni[i]*pow(theta,ti[i]);
2365  }
2366  return reduce.p.Pa*exp(reduce.T/T*summer);
2367 }
2368 double IsohexaneClass::rhosatV(double T)
2369 {
2370  // Maximum absolute error is 0.605575 % between 119.600001 K and 497.699999 K
2371  const double ti[]={0,0.47580852830565717, 0.80170994863058465, 4.1456753389418717, 2.0754191791227719, 22.863511521748787};
2372  const double Ni[]={0,-3.7956367210298922, -1.0172685447655876, -4.3120611056906561, -1.4909297795395249, -10.739883495485737};
2373  double summer=0,theta;
2374  int i;
2375  theta=1.0-T/reduce.T;
2376  for (i=1;i<=5;i++)
2377  {
2378  summer=summer+Ni[i]*pow(theta,ti[i]);
2379  }
2380  return reduce.rho*exp(crit.T/T*summer);
2381 }
2382 
2383 double KryptonClass::psat(double T)
2384 {
2385  // Maximum absolute error is 0.017436 % between 115.775001 K and 209.479999 K
2386  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2387  const double Ni[]={0,-5.9739950665662702, 1.3051794187375625, -0.31592680234061876, -1.0365678166366274, 0.63351382066291007, -2.8912024898026756 };
2388  double summer=0,theta;
2389  int i;
2390  theta=1-T/reduce.T;
2391  for (i=1;i<=6;i++)
2392  {
2393  summer=summer+Ni[i]*pow(theta,ti[i]);
2394  }
2395  return reduce.p.Pa*exp(reduce.T/T*summer);
2396 }
2397 double KryptonClass::rhosatL(double T)
2398 {
2399  // Maximum absolute error is 1.463881 % between 115.775001 K and 209.479999 K
2400  const double ti[]={0,0.36780895915580791, 0.70248203166996614, 1.172529422523406, 6.2635912317680793, 1.7846540318478548};
2401  const double Ni[]={0,1.9755226451868064, -1.3056130307532876, 0.8586443600865078, 0.12193064253237056, -0.30634286614817541};
2402  double summer=0;
2403  int i;
2404  double theta;
2405  theta=1-T/reduce.T;
2406  for (i=1;i<=5;i++)
2407  {
2408  summer+=Ni[i]*pow(theta,ti[i]);
2409  }
2410  return reduce.rho*exp(summer);
2411 }
2412 double KryptonClass::rhosatV(double T)
2413 {
2414  // Maximum absolute error is 0.283547 % between 115.775001 K and 209.479999 K
2415  const double ti[]={0,0.453854278772161, 1.6977667091236079, 2.0472835465021171, 2.0651987529414351, 7.5969412041939615};
2416  const double Ni[]={0,-3.1505671898070267, -18.65209521960794, 400.42457764318993, -383.96236538350985, -3.3751290883620086};
2417  double summer=0,theta;
2418  int i;
2419  theta=1.0-T/reduce.T;
2420  for (i=1;i<=5;i++)
2421  {
2422  summer=summer+Ni[i]*pow(theta,ti[i]);
2423  }
2424  return reduce.rho*exp(crit.T/T*summer);
2425 }
2426 
2427 double NonaneClass::psat(double T)
2428 {
2429  // Maximum absolute error is 0.087879 % between 219.700001 K and 594.549999 K
2430  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2431  const double Ni[]={0,-8.4747418596031192, 2.8227667935992362, -3.5458599565380906, -1.4242947475868946, -3.5254946604872481, 1.1334065831048079 };
2432  double summer=0,theta;
2433  int i;
2434  theta=1-T/reduce.T;
2435  for (i=1;i<=6;i++)
2436  {
2437  summer=summer+Ni[i]*pow(theta,ti[i]);
2438  }
2439  return reduce.p.Pa*exp(reduce.T/T*summer);
2440 }
2441 double NonaneClass::rhosatL(double T)
2442 {
2443  // Maximum absolute error is 0.867150 % between 219.700001 K and 594.549999 K
2444  const double ti[]={0,0.45434458789525356, 0.72748787625567024, 0.925063834736367, 1.3573478933523566, 3.0112206747240773};
2445  const double Ni[]={0,5.1572118610805857, -11.028370080657231, 8.9470309229999039, -1.8357217413258595, 0.20683170461251787};
2446  double summer=0;
2447  int i;
2448  double theta;
2449  theta=1-T/reduce.T;
2450  for (i=1;i<=5;i++)
2451  {
2452  summer+=Ni[i]*pow(theta,ti[i]);
2453  }
2454  return reduce.rho*exp(summer);
2455 }
2456 double NonaneClass::rhosatV(double T)
2457 {
2458  // Maximum absolute error is 0.312530 % between 219.700001 K and 594.549999 K
2459  const double ti[]={0,0.50655477629124324, 2.4876505608371025, 2.2041597822504291, 1.9430824560248301, 2.5830185280832492};
2460  const double Ni[]={0,-5.2194783202879194, 861.04350631411342, -342.56220842639533, 83.891172356485143, -610.13190227150676};
2461  double summer=0,theta;
2462  int i;
2463  theta=1.0-T/reduce.T;
2464  for (i=1;i<=5;i++)
2465  {
2466  summer=summer+Ni[i]*pow(theta,ti[i]);
2467  }
2468  return reduce.rho*exp(crit.T/T*summer);
2469 }
2470 
2471 double TolueneClass::psat(double T)
2472 {
2473  // Maximum absolute error is 0.187697 % between 178.000001 K and 591.749999 K
2474  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2475  const double Ni[]={0,-7.4184042521750229, 1.7705795922329421, -1.0620069658107303, -2.8961055438497469, -0.35601288602065423, -1.1203832074545026 };
2476  double summer=0,theta;
2477  int i;
2478  theta=1-T/reduce.T;
2479  for (i=1;i<=6;i++)
2480  {
2481  summer=summer+Ni[i]*pow(theta,ti[i]);
2482  }
2483  return reduce.p.Pa*exp(reduce.T/T*summer);
2484 }
2485 double TolueneClass::rhosatL(double T)
2486 {
2487  // Maximum absolute error is 0.659779 % between 178.000001 K and 591.749999 K
2488  const double ti[]={0,0.32703234036345474, 0.86030837877972832, 1.9855638765309758, 4.3159296915209184, 5.9759915024218611};
2489  const double Ni[]={0,1.585216471761786, -0.42546736843083033, 0.23353047360987148, -0.1034086810731789, 0.13104469387313702};
2490  double summer=0;
2491  int i;
2492  double theta;
2493  theta=1-T/reduce.T;
2494  for (i=1;i<=5;i++)
2495  {
2496  summer+=Ni[i]*pow(theta,ti[i]);
2497  }
2498  return reduce.rho*exp(summer);
2499 }
2500 double TolueneClass::rhosatV(double T)
2501 {
2502  // Maximum absolute error is 0.270124 % between 178.000001 K and 591.749999 K
2503  const double ti[]={0,0.26453133585430771, 0.59439611774229872, 3.2399544120904609, 5.3573873604955704, 13.640514113563155};
2504  const double Ni[]={0,-0.56008642910342632, -4.465640983522734, -3.7664413431830686, -1.9809221774094345, -0.062332971201866233};
2505  double summer=0,theta;
2506  int i;
2507  theta=1.0-T/reduce.T;
2508  for (i=1;i<=5;i++)
2509  {
2510  summer=summer+Ni[i]*pow(theta,ti[i]);
2511  }
2512  return reduce.rho*exp(crit.T/T*summer);
2513 }
2514 
2515 
2516 double XenonClass::psat(double T)
2517 {
2518  // Maximum absolute error is 0.007007 % between 161.405001 K and 289.732999 K
2519  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2520  const double Ni[]={0,-6.0179736298621336, 1.4531608028462166, -0.75746733733446314, -0.05721415196027424, -1.4372963787937452, -0.28767071914740688 };
2521  double summer=0,theta;
2522  int i;
2523  theta=1-T/reduce.T;
2524  for (i=1;i<=6;i++)
2525  {
2526  summer=summer+Ni[i]*pow(theta,ti[i]);
2527  }
2528  return reduce.p.Pa*exp(reduce.T/T*summer);
2529 }
2530 double XenonClass::rhosatL(double T)
2531 {
2532  // Maximum absolute error is 1.642288 % between 161.405001 K and 289.732999 K
2533  const double ti[]={0,0.31434776766743999, 0.67805601917916636, 5.8038130756111892, 2.3240256223897999, 3.0208547327754598};
2534  const double Ni[]={0,1.4226874845199544, -0.21979298723304491, 0.32922435816070406, 0.26160336954409047, -0.32636485566039475};
2535  double summer=0;
2536  int i;
2537  double theta;
2538  theta=1-T/reduce.T;
2539  for (i=1;i<=5;i++)
2540  {
2541  summer+=Ni[i]*pow(theta,ti[i]);
2542  }
2543  return reduce.rho*exp(summer);
2544 }
2545 double XenonClass::rhosatV(double T)
2546 {
2547  // Maximum absolute error is 0.384221 % between 161.405001 K and 289.732999 K
2548  const double ti[]={0,0.42456694647604343, 1.0929357777332234, 2.7453780242937951, 2.5165708451263624, 11.065026375451158};
2549  const double Ni[]={0,-2.8060599998539235, -2.0481529361896662, -9.9196250401113062, 9.0109861593982856, -19.388336288784551};
2550  double summer=0,theta;
2551  int i;
2552  theta=1.0-T/reduce.T;
2553  for (i=1;i<=5;i++)
2554  {
2555  summer=summer+Ni[i]*pow(theta,ti[i]);
2556  }
2557  return reduce.rho*exp(crit.T/T*summer);
2558 }
2559 
2560 double R116Class::psat(double T)
2561 {
2562  // Maximum absolute error is 0.005177 % between 173.100001 K and 293.029999 K
2563  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
2564  const double Ni[]={0,-7.3955589482937381, 2.1874345047641488, -2.6407260335629017, 0.83237779144881274, -6.480800530357623, 6.0527091022412938 };
2565  double summer=0,theta;
2566  int i;
2567  theta=1-T/reduce.T;
2568  for (i=1;i<=6;i++)
2569  {
2570  summer=summer+Ni[i]*pow(theta,ti[i]);
2571  }
2572  return reduce.p.Pa*exp(reduce.T/T*summer);
2573 }
2574 double R116Class::rhosatL(double T)
2575 {
2576  // Maximum absolute error is 0.976437 % between 173.100001 K and 293.029999 K
2577  const double ti[]={0,0.29011688981180672, 0.34284809214776468, 2.1525665789650317, 3.0547917391285706, 3.2820127321141621};
2578  const double Ni[]={0,1.5085971874674042, -0.19169905028904163, -0.1004169669731468, 0.068745519590789839, 0.10395251177877873};
2579  double summer=0;
2580  int i;
2581  double theta;
2582  theta=1-T/reduce.T;
2583  for (i=1;i<=5;i++)
2584  {
2585  summer+=Ni[i]*pow(theta,ti[i]);
2586  }
2587  return reduce.rho*exp(summer);
2588 }
2589 double R116Class::rhosatV(double T)
2590 {
2591  // Maximum absolute error is 0.309692 % between 173.100001 K and 293.029999 K
2592  const double ti[]={0,0.38604749962219331, 1.0088719781777016, 1.6277698849200228, 2.720738012316323, 6.8941744996057599};
2593  const double Ni[]={0,-2.6038986210545034, -4.0396795352002455, 2.7069117508619911, -4.2648317254667782, -5.93238493168551};
2594  double summer=0,theta;
2595  int i;
2596  theta=1.0-T/reduce.T;
2597  for (i=1;i<=5;i++)
2598  {
2599  summer=summer+Ni[i]*pow(theta,ti[i]);
2600  }
2601  return reduce.rho*exp(crit.T/T*summer);
2602 }
double ECS_chi_conductivity(double rhor)
double psat(double)
double ECS_psi_viscosity(double rhor)
double psat(double)
std::vector< phi_BC * > phirlist
Definition: FluidClass.h:178
double R()
Returns the mass-specific gas constant for the fluid in the desired units.
double rhosatV(double)
double ECS_psi_viscosity(double rhor)
double conductivity_Trho(double, double)
void ECSParams(double *e_k, double *sigma)
double rhosatL(double)
struct FluidLimits limits
Definition: FluidClass.h:219
std::string EOS
Definition: FluidClass.h:120
std::string VISCOSITY
Definition: FluidClass.h:122
double rhosatL(double)
double viscosity_Trho(double, double)
double rhosatL(double)
double psat(double)
PressureUnit p
Definition: FluidClass.h:50
std::string ECSReferenceFluid
A list of aliases of names for the Fluid, each element is a std::string instance. ...
Definition: FluidClass.h:154
double psat(double)
double psat(double)
std::string name
A container to hold the cache for residual Helmholtz derivatives.
Definition: FluidClass.h:151
double rhosatL(double)
double rhosatV(double)
double psat(double)
std::string TransportReference
A std::string that contains a reference for thermo properties for the fluid.
Definition: FluidClass.h:158
double rhosatV(double)
double ECS_psi_viscosity(double rhor)
double Pa
Definition: Units.h:22
double psat(double)
double rhosatL(double)
double rhosatV(double)
double rhosatV(double)
double pressure_Trho(double T, double rho)
Definition: FluidClass.cpp:449
void ECSParams(double *e_k, double *sigma)
double psat(double)
double ECS_chi_conductivity(double rhor)
double conductivity_critical(double T, double rho, double qd=2e9, double GAMMA=0.0496, double zeta0=1.94e-10)
std::vector< std::string > aliases
The REFPROP-compliant name if REFPROP-"name" is not a compatible fluid name. If not included...
Definition: FluidClass.h:153
double psat(double)
double rhosatV(double)
double rhosatV(double)
struct CriticalStruct reduce
A pointer to the point that is used to reduce the T and rho for EOS.
Definition: FluidClass.h:222
double rhosatL(double)
double rhosatL(double)
double Tmax
Definition: FluidClass.h:54
double rhosatL(double)
double rhosatV(double)
double ECS_chi_conductivity(double rhor)
double ECS_psi_viscosity(double rhor)
double psat(double)
double ECS_chi_conductivity(double rhor)
std::string ECS_FITS
Definition: FluidClass.h:125
double ECS_f_int(double T)
double rhosatL(double)
std::string EOSReference
The critical qd parameter for the Olchowy-Sengers cross-over term.
Definition: FluidClass.h:157
double rhosatL(double)
double rhosatV(double)
double conductivity_Trho(double, double)
std::string REFPROPname
The name of the fluid.
Definition: FluidClass.h:152
std::string ECS_LENNARD_JONES
Definition: FluidClass.h:124
double rhosatV(double)
double rhosatL(double)
std::string SURFACE_TENSION
Definition: FluidClass.h:126
double rhosatV(double)
double viscosity_Trho(double, double)
double psat(double)
void ECSParams(double *e_k, double *sigma)
double viscosity_Trho(double T, double rho)
double rhosatL(double)
double pmax
Definition: FluidClass.h:54
double rhosatV(double)
params
struct CriticalStruct crit
Definition: FluidClass.h:218
double ECS_chi_conductivity(double rhor)
double rhosatL(double)
double psat(double)
double rhosatV(double)
double psat(double)
BibTeXKeysStruct BibTeXKeys
Definition: FluidClass.h:175
double ECS_f_int(double T)
double rhosatV(double)
double psat(double)
double surface_tension_T(double T)
double rhosatL(double)
double ECS_psi_viscosity(double rhor)
void ECSParams(double *e_k, double *sigma)
double ECS_f_int(double T)
std::vector< phi_BC * > phi0list
A vector of instances of the phi_BC classes for the residual Helmholtz energy contribution.
Definition: FluidClass.h:179
double dpdT_Trho(double T, double rho)
Definition: FluidClass.cpp:521
void ECSParams(double *e_k, double *sigma)
void ECSParams(double *e_k, double *sigma)
double rhosatV(double)
void ECSParams(double *e_k, double *sigma)
This is the abstract base class upon which each residual Helmholtz energy class is built...
Definition: Helmholtz.h:24
void ECSParams(double *e_k, double *sigma)
double psat(double)
double ECS_f_int(double T)
double rhosatV(double)
double rhosatL(double)
double rhosatL(double)
double Tmin
Definition: FluidClass.h:54
double rhomax
Definition: FluidClass.h:54
double conductivity_Trho(double T, double rho)
std::string CONDUCTIVITY
Definition: FluidClass.h:123
double ECS_f_int(double T)