6 #define _CRT_SECURE_NO_WARNINGS
17 static const double n[]={0,
34 static const double d[]={0,
51 static const double t[]={0.00,
68 static const double c[]={
75 static const double alpha[]={
76 0,0,0,0,0,0,0,0,0,0,
84 static const double beta[]={
85 0,0,0,0,0,0,0,0,0,0,
93 static const double GAMMA[]={
94 0,0,0,0,0,0,0,0,0,0,
102 static const double epsilon[]={
103 0,0,0,0,0,0,0,0,0,0,
112 static const double a0[]={0.0,
122 static const double b0[]={0.0,
154 params.molemass = 2.01588;
156 params.ptriple = 7.36205784168;
157 params.accentricfactor = -0.219;
166 EOSReference.assign(
"\"Fundamental Equations of State for Parahydrogen, Normal Hydrogen, and Orthohydrogen\""
167 "by J.W. Leachman and R.T. Jacobsen and S.G. Penoncello and E.W. Lemmon"
168 ", J. Phys. Chem. Ref. Data, Vol. 38, No. 3, 2009, pp 721-748");
171 name.assign(
"Hydrogen");
187 const double ti[]={0,1.0,1.5,2.0,2.85};
188 const double Ni[]={0,-4.89789,0.988558,0.349689,0.499356};
189 double summer=0,theta;
194 summer=summer+Ni[i]*pow(theta,ti[i]);
203 RHS = +1.093049*pow(theta,0.3)
204 +0.260558*pow(theta,0.9)
205 -0.543586*pow(theta,1.5)
206 +0.333107*pow(theta,3.2);
214 const double t[] = {0, 0.3525, 0.3565, 0.367, 0.3765, 0.39249999999999996, 1.3333333333333333};
215 const double N[] = {0, -426795.37901103671, 810857.2657358282, -721220.63750821573, 392092.37071915239, -54938.300252502217, 1.9072707235406241};
216 double summer=0,theta;
218 for (
int i=1; i<=6; i++)
220 summer += N[i]*pow(theta,t[i]);
227 double sumnum = 0, sumden = 0, sumresid = 0;
228 double A1[] = {-3.40976e-1, 4.58820e0, -1.45080e0, 3.26394e-1, 3.16939e-3, 1.90592e-4, -1.13900e-6};
229 double A2[] = {1.38497e2, -2.21878e1, 4.57151e0, 1.00000e0};
230 double B1[] = {0, 3.63081e-2, -2.07629e-2, 3.14810e-2, -1.43097e-2, 1.74980e-3};
231 double B2[] = {0, 1.83370e-3, -8.86716e-3, 1.58260e-2, -1.06283e-2, 2.80673e-3};
233 for (
int i = 0; i<= 6; i++){
234 sumnum += A1[i]*pow(T/
reduce.
T,i);
236 for (
int i = 0; i<= 3; i++){
237 sumden += A2[i]*pow(T/
reduce.
T,i);
240 double lambda_0 = sumnum/sumden;
242 for (
int i = 1; i<= 5; i++){
246 double lambda_r = sumresid;
250 return lambda_0+lambda_r+lambda_c;
255 double sigma = 0.297, e_k = 30.41;
259 double Tstar = T/e_k;
260 double a[] = {2.09630e-1, -4.55274e-1, 1.43602e-1, -3.35325e-2, 2.76981e-3};
261 double S_star = exp(a[0]+a[1]*log(Tstar)+a[2]*log(Tstar)*log(Tstar)+a[3]*pow(log(Tstar),3)+a[4]*pow(log(Tstar),4));
262 double lambda_0 = 0.021357*sqrt(
params.molemass*T)/(sigma*sigma*S_star);
265 double b[] = {-0.1870, 2.4871, 3.7151, -11.0972, 9.0965, -3.8292, 0.5166};
267 for (
int i = 0; i<= 6; i++){ sumBstar += b[i]/Tstar; }
268 double Bstar = sumBstar;
269 double N_A = 6.02214129e23;
270 double B = N_A*pow(sigma/1e9,3)*Bstar;
273 double c[] = {0, 6.43449673, 4.56334068e-2, 2.32797868e-1, 9.58326120e-1, 1.27941189e-1, 3.63576595e-1};
274 double Tr = T/
crit.
T;
275 double rhor = rho/90.5;
276 double lambda_r = c[1]*rhor*rhor*exp(c[2]*Tr+c[3]/Tr+(c[4]*rhor*rhor)/(c[5]+Tr)+c[6]*pow(rhor,6));
278 double rhobar = rho/
params.molemass*1000;
279 return (lambda_0*(1+B*rhobar)+lambda_r)/1e6;
285 return -1.4165*pow(1-T/
reduce.
T,0.63882)+0.746383*pow(1-T/
reduce.
T,0.659804)+0.675625*pow(1-T/
reduce.
T,0.619149);
290 double n [] = {0, -7.33375, 0.01, 2.60375, 4.66279, 0.68239, -1.47078, 0.135801, -1.05327, 0.328239, -0.0577833, 0.0449743, 0.0703464, -0.0401766, 0.11951};
291 double t [] = {0, 0.6855, 1, 1, 0.489, 0.774, 1.133, 1.386, 1.619, 1.162, 3.96, 5.276, 0.99, 6.791, 3.19};
292 double d [] = {0, 1, 4, 1, 1, 2, 2, 3, 1, 3, 2, 1, 3, 1, 1};
293 double c [] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0};
294 double a0 [] = {0, -1.4485891134, 1.884521239, 4.30256, 13.0289, -47.7365, 50.0013, -18.6261, 0.993973, 0.536078};
295 double b0 [] = {0, 0, 0, 15.14967511472, 25.0925982148, 29.4735563787, 35.4059141417, 40.724998482, 163.7925799988, 309.2173173842};
296 double alpha[] = {0,0,0,0,0,0,0,0,0,0,1.7437, 0.5516, 0.0634, 2.1341, 1.777};
297 double beta[] = {0,0,0,0,0,0,0,0,0,0,0.194, 0.2019, 0.0301, 0.2383, 0.3253};
298 double GAMMA[] = {0,0,0,0,0,0,0,0,0,0,0.8048, 1.5248, 0.6648, 0.6832, 1.493};
299 double epsilon[] = {0,0,0,0,0,0,0,0,0,0,1.5487, 0.1785, 1.28, 0.6319, 1.7104};
319 phi0list.push_back(phi0_Planck_Einstein_);
328 params.molemass = 2.01588;
331 params.accentricfactor = -0.219;
340 EOSReference.assign(
"\"Fundamental Equations of State for Parahydrogen, Normal Hydrogen, and Orthohydrogen\""
341 "by J.W. Leachman and R.T. Jacobsen and S.G. Penoncello and E.W. Lemmon"
342 ", J. Phys. Chem. Ref. Data, Vol. 38, No. 3, 2009, pp 721-748");
343 TransportReference.assign(
"Viscosity & Surface Tension: McCarty, R.D. and Weber, L.A., "
344 "\"Thermophysical properties of parahydrogen from the freezing liquid line to "
345 "5000 R for pressures to 10,000 psia,\" "
346 "Natl. Bur. Stand., Tech. Note 617, 1972.");
348 name.assign(
"ParaHydrogen");
349 aliases.push_back(
"Parahydrogen");
350 aliases.push_back(
"parahydrogen");
351 aliases.push_back(
"PARAHYDROGEN");
363 const double t[]={0, 0.132, 0.3605, 1.0, 1.5, 3.3333333333333335, 7.0};
364 const double N[]={0, -0.0031611083814973629, 0.01606103512717301, -5.0101011461385303, 1.3458439473996564, 0.82353198183584131, -0.57502774437436288};
365 double summer=0,theta;
367 for (
int i=1;i<=6;i++)
369 summer += N[i]*pow(theta,t[i]);
377 const double t[] = {0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.1666666666666667, 1.3333333333333333};
378 const double N[] = {0, 32.575128830119098, -105.60522773310021, 145.38945707541046, -93.098356183908166, 22.448904889155894};
379 double summer=0,theta;
381 for (
int i=1; i<=5; i++)
383 summer += N[i]*pow(theta,t[i]);
391 const double t[] = {0, 0.3525, 0.3565, 0.367, 0.3765, 0.39249999999999996, 1.3333333333333333};
392 const double N[] = {0, -426795.37901103671, 810857.2657358282, -721220.63750821573, 392092.37071915239, -54938.300252502217, 1.9072707235406241};
393 double summer=0,theta;
395 for (
int i=1; i<=6; i++)
397 summer += N[i]*pow(theta,t[i]);
404 double sumnum = 0, sumden = 0, sumresid = 0;
405 double A1[] = {-1.24500e0, 3.10212e2, -3.31004e2, 2.46016e2, -6.57810e1, 1.08260e1, -5.19659e-1, 1.43979e-2};
406 double A2[] = {1.42304e4, -1.93922e4, 1.58379e4, -4.81812e3, 7.28639e2, -3.57365e1, 1.00000e0};
407 double B1[] = {0, 2.65975e-2, -1.33826e-3, 1.30219e-2, -5.67678e-3, -9.23380e-5};
408 double B2[] = {0, -1.21727e-3, 3.66663e-3, 3.88715e-3, -9.21055e-3, 4.00723e-3};
410 for (
int i = 0; i<= 7; i++){
411 sumnum += A1[i]*pow(T/
reduce.
T,i);
413 for (
int i = 0; i<= 6; i++){
414 sumden += A2[i]*pow(T/
reduce.
T,i);
417 double lambda_0 = sumnum/sumden;
419 for (
int i = 1; i<= 5; i++){
423 double lambda_r = sumresid;
427 return lambda_0+lambda_r+lambda_c;
432 double A,B,eta_0,eta_E,e_k,sigma;
436 eta_0 = 8.5558 * (pow(T,1.5)/(T+19.55)) * ((T+650.39)/(T+1175.9));
441 A = (306.4636*rho - 3350.628*rho*rho+3868.092*rho*rho*rho)/(1.0-18.47830*rho+110.915*rho*rho+25.3542*rho*rho*rho);
443 B = 10.0 + 7.2*(pow(rho/0.07,6)-pow(rho/0.07,1.5))-17.63/exp(58.75*pow(rho/0.07,3));
446 eta_E = A * exp(B/T);
450 return (eta_0 + eta_E) / 1e7;
462 return 0.005314*pow(1-T/
reduce.
T,1.06);
467 double n [] = {0, -6.83148, 0.01, 2.11505, 4.38353, 0.211292, -1.00939, 0.142086, -0.87696, 0.804927, -0.710775, 0.0639688, 0.0710858, -0.087654, 0.647088};
468 double t [] = {0, 0.7333, 1, 1.1372, 0.5136, 0.5638, 1.6248, 1.829, 2.404, 2.105, 4.1, 7.658, 1.259, 7.589, 3.946};
469 double d [] = {0, 1, 4, 1, 1, 2, 2, 3, 1, 3, 2, 1, 3, 1, 1};
470 double l [] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0};
472 double alpha[] = {0,0,0,0,0,0,0,0,0,0,1.169, 0.894, 0.04, 2.072, 1.306};
473 double beta[] = {0,0,0,0,0,0,0,0,0,0,0.4555, 0.4046, 0.0869, 0.4415, 0.5743};
474 double gamma[] = {0,0,0,0,0,0,0,0,0,0,1.5444, 0.6627, 0.763, 0.6587, 1.4327};
475 double epsilon[] = {0,0,0,0,0,0,0,0,0,0,0.6366, 0.3876, 0.9437, 0.3976, 0.9626};
488 double a0 [] = {0, -1.4675442336, 1.8845068862, 2.54151, -2.3661, 1.00365, 1.22447};
489 double b0 [] = {0, 0, 0, 25.7676098736, 43.4677904877, 66.0445514750, 209.7531607465};
503 params.molemass = 2.01594;
505 params.ptriple = 7.5598823410394012;
506 params.accentricfactor = -0.219;
515 EOSReference.assign(
"\"Fundamental Equations of State for Parahydrogen, Normal Hydrogen, and Orthohydrogen\""
516 "by J.W. Leachman and R.T. Jacobsen and S.G. Penoncello and E.W. Lemmon"
517 ", J. Phys. Chem. Ref. Data, Vol. 38, No. 3, 2009, pp 721-748");
518 TransportReference.assign(
"Viscosity & Surface Tension: McCarty, R.D. and Weber, L.A., "
519 "\"Thermophysical properties of parahydrogen from the freezing liquid line to "
520 "5000 R for pressures to 10,000 psia,\" "
521 "Natl. Bur. Stand., Tech. Note 617, 1972.");
523 name.assign(
"OrthoHydrogen");
524 aliases.push_back(
"Orthohydrogen");
525 aliases.push_back(
"orthohydrogen");
526 aliases.push_back(
"ORTHOHYDROGEN");
535 const double ti[]={0, 0.3565, 0.381, 0.6666666666666666, 0.8333333333333334, 3.3333333333333335, 3.5};
536 const double Ni[]={0, 0.23308544489395641, -0.44331497371946116, 2.596446168645369, -6.3537033133836278, 6.8116055471042287, -5.9839832788614595};
537 double summer=0,theta;
542 summer=summer+Ni[i]*pow(theta,ti[i]);
549 const double ti[]={0,0.44474280444194492, 0.75146340805936485, 1.4887993676087643, 2.5830154027036798, 2.6777147409416382, 3.7537296061337075};
550 const double Ni[]={0,2.5493992312992853, -2.168729482271587, 1.1414905046089598, -0.45527343384150787, -0.48960090300149495, 0.4904521362247205};
557 summer+=Ni[i]*pow(theta,ti[i]);
564 const double ti[]={0,0.47329684677466771, 1.1913159863668648, 1.8991992477616062, 2.494090628975616, 3.6361782580222841, 24.83499518232826};
565 const double Ni[]={0,-2.8790193675821163, -0.32069213937243635, -1.6289408828391703, 3.4288996368340423, -1.5495479021680494, -303.61663521542357};
566 double summer=0,theta;
571 summer=summer+Ni[i]*pow(theta,ti[i]);
void ECSParams(double *e_k, double *sigma)
std::vector< phi_BC * > phirlist
struct FluidLimits limits
std::string name
A container to hold the cache for residual Helmholtz derivatives.
std::string TransportReference
A std::string that contains a reference for thermo properties for the fluid.
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...
struct CriticalStruct reduce
A pointer to the point that is used to reduce the T and rho for EOS.
double surface_tension_T(double)
virtual double viscosity_Trho(double, double)
double surface_tension_T(double)
virtual double conductivity_Trho(double, double)
virtual double viscosity_dilute(double T, double e_k, double sigma)
virtual double viscosity_Trho(double, double)
std::string EOSReference
The critical qd parameter for the Olchowy-Sengers cross-over term.
std::string REFPROPname
The name of the fluid.
std::string ECS_LENNARD_JONES
std::string SURFACE_TENSION
virtual double conductivity_Trho(double, double)
struct CriticalStruct crit
BibTeXKeysStruct BibTeXKeys
std::vector< phi_BC * > phi0list
A vector of instances of the phi_BC classes for the residual Helmholtz energy contribution.
This is the abstract base class upon which each residual Helmholtz energy class is built...