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
Benzene.cpp
Go to the documentation of this file.
1 #include "CoolProp.h"
2 #include <vector>
3 #include "CPExceptions.h"
4 #include "FluidClass.h"
5 #include "Benzene.h"
6 
8 {
9  double n[] = {0.0, 0.03513062, 2.229707, -3.100459, -0.5763224, 0.2504179, -0.7049091, -0.1393433, 0.8319673, -0.3310741, -0.02793578, 0.7087408, -0.3723906, -0.06267414, -0.86295};
10  double t[] = {0, 1, 0.3, 0.744, 1.174, 0.68, 2.5, 3.67, 1.26, 2.6, 0.95, 1, 2.47, 3.35, 0.75};
11  double d[] = {0, 4, 1, 1, 2, 3, 1, 3, 2, 2, 7, 1, 1, 3, 3};
12  double c[] = {0, 0, 0, 0, 0, 0, 2, 2, 1, 2, 1, 0, 0, 0, 0};
13  double eta[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.032, 1.423, 1.071, 14.35};
14  double beta[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.867, 1.766, 1.824, 297.5};
15  double gamma[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.118, 0.6392, 0.6536, 1.164};
16  double epsilon[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.7289, 0.9074, 0.7655, 0.8711};
17 
18  //Critical parameters
19  crit.rho = 3.902*78.1118; //[kg/m^3]
20  crit.p = PressureUnit(4894,UNIT_KPA); //[kPa]
21  crit.T = 562.02; //[K]
22  crit.v = 1/crit.rho;
23 
24  // Other fluid parameters
25  params.molemass = 78.1118;
26  params.Ttriple = 278.674;
27  params.accentricfactor = 0.21083697327001505;
28  params.R_u = 8.314472;
29  params.ptriple = 4.7837725790574392;
30 
31  // Limits of EOS
32  limits.Tmin = params.Ttriple;
33  limits.Tmax = 500.0;
34  limits.pmax = 100000.0;
35  limits.rhomax = 1000000.0*params.molemass;
36 
37  phirlist.push_back(new phir_power( n,d,t,c,1,10,15));
38  phirlist.push_back(new phir_gaussian( n,d,t, eta, epsilon, beta, gamma, 11,14,15));
39 
40  const double a0 = -0.6740687105, a1 = 2.5560188958, n0 = 2.94645;
41  phi0list.push_back(new phi0_lead(a0,a1));
42  phi0list.push_back(new phi0_logtau(n0));
43 
44  const double u0[] = {0, 4116/crit.T, 1511/crit.T, 630/crit.T};
45  const double v0[] = {0, 7.36374, 18.649, 4.01834};
46  std::vector<double> u0_v(u0,u0+sizeof(u0)/sizeof(double));
47  std::vector<double> v0_v(v0,v0+sizeof(v0)/sizeof(double));
48 
49  phi0list.push_back(new phi0_Planck_Einstein(v0_v,u0_v,1,3));
50 
51  EOSReference.assign("Monika Thol and Eric W. Lemmon and Roland Span, \"Equation of state for benzene for temperatures from the melting line up to 725 K with pressures up to 500 MPa\", High Temperatures-High Pressures, Vol. 41, pp. 81�97");
52  TransportReference.assign("");
53 
54  name.assign("Benzene");
55  aliases.push_back(std::string("benzene"));
56  aliases.push_back(std::string("BENZENE"));
57  REFPROPname.assign("BENZENE");
58 
59  BibTeXKeys.EOS = "Thol-HTHP-2012";
60  BibTeXKeys.ECS_LENNARD_JONES = "Poling-BOOK-2001";
61  BibTeXKeys.CONDUCTIVITY = "Assael-JPCRD-2012A";
62  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
63 }
64 double BenzeneClass::psat(double T)
65 {
66  // Maximum absolute error is 0.007155 % between 278.674001 K and 562.019990 K
67  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3,9};
68  const double Ni[]={0,-7.1461120764571957, 1.9957829398567826, -1.9350951186777388, -0.57944805848240821, -3.5619379943600871, -0.020339032269282332, 0.78993073753218157 };
69  double summer=0,theta;
70  int i;
71  theta=1-T/reduce.T;
72  for (i=1;i<=6;i++)
73  {
74  summer=summer+Ni[i]*pow(theta,ti[i]);
75  }
76  return reduce.p.Pa*exp(reduce.T/T*summer);
77 }
78 double BenzeneClass::rhosatL(double T)
79 {
80  // Maximum absolute error is 0.271091 % between 278.674001 K and 562.019990 K
81  const double ti[]={0,0.37662058801320508, 0.73750586561787868, 1.496536312566036, 2.719354797503057, 5.0887565894044391, 4.5762119437433926};
82  const double Ni[]={0,2.1287356475388064, -1.3313426148430443, 0.79624913133294628, -0.37980073421164662, 0.25973635751163832, 0.0031066997480834807};
83  double summer=0;
84  int i;
85  double theta;
86  theta=1-T/reduce.T;
87  for (i=1;i<=6;i++)
88  {
89  summer+=Ni[i]*pow(theta,ti[i]);
90  }
91  return reduce.rho*exp(summer);
92 }
93 double BenzeneClass::rhosatV(double T)
94 {
95  // Maximum absolute error is 0.212877 % between 278.674001 K and 562.019990 K
96  const double ti[]={0,0.4025245240893699, 1.2389222941368063, 1.7971910824209907, 1.9285664588450286, 2.9793432570646234, 2.6542255328369846};
97  const double Ni[]={0,-2.8057874888404788, -16.379051852677751, 218.63205995702904, -258.28890459277318, -81.624634476247607, 129.94924241369819};
98  double summer=0,theta;
99  int i;
100  theta=1.0-T/reduce.T;
101  for (i=1;i<=6;i++)
102  {
103  summer=summer+Ni[i]*pow(theta,ti[i]);
104  }
105  return reduce.rho*exp(crit.T/T*summer);
106 }
107 double BenzeneClass::conductivity_Trho(double T, double rho)
108 {
109  // Assael JPCRD 2012
110  double sumresid = 0;
111  double B1[] = {0, 2.82489e-2, -7.73415e-2, 7.14001e-2, -2.36798e-2, 3.00875e-3};
112  double B2[] = {0, -1.19268e-2, 8.33389e-2, -8.98176e-2, 3.63025e-2, -4.90052e-3};
113 
114  // in mW/m/K in paper, converted to W/m/K
115  double lambda_0 = (101.404-521.440*T/crit.T+868.266*pow(T/crit.T,2))/(1+9.714*T/crit.T+1.467*pow(T/crit.T,2))/1000; // [W/m/K]
116 
117  for (int i = 1; i <= 5; i++)
118  {
119  sumresid += (B1[i]+B2[i]*T/crit.T)*pow(rho/reduce.rho,i); // [W/m/K]
120  }
121  double lambda_r = sumresid;
122 
123  double lambda_c = this->conductivity_critical(T,rho,1/(6.2e-10)); //[W/m/K]
124 
125  return lambda_0+lambda_r+lambda_c;
126 }
BenzeneClass()
Definition: Benzene.cpp:7
std::vector< phi_BC * > phirlist
Definition: FluidClass.h:178
struct FluidLimits limits
Definition: FluidClass.h:219
std::string EOS
Definition: FluidClass.h:120
PressureUnit p
Definition: FluidClass.h:50
double psat(double)
Definition: Benzene.cpp:64
std::string name
A container to hold the cache for residual Helmholtz derivatives.
Definition: FluidClass.h:151
std::string TransportReference
A std::string that contains a reference for thermo properties for the fluid.
Definition: FluidClass.h:158
double Pa
Definition: Units.h:22
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
struct CriticalStruct reduce
A pointer to the point that is used to reduce the T and rho for EOS.
Definition: FluidClass.h:222
double Tmax
Definition: FluidClass.h:54
double conductivity_Trho(double T, double rho)
Definition: Benzene.cpp:107
std::string EOSReference
The critical qd parameter for the Olchowy-Sengers cross-over term.
Definition: FluidClass.h:157
std::string REFPROPname
The name of the fluid.
Definition: FluidClass.h:152
std::string ECS_LENNARD_JONES
Definition: FluidClass.h:124
std::string SURFACE_TENSION
Definition: FluidClass.h:126
double pmax
Definition: FluidClass.h:54
params
struct CriticalStruct crit
Definition: FluidClass.h:218
double rhosatL(double)
Definition: Benzene.cpp:78
BibTeXKeysStruct BibTeXKeys
Definition: FluidClass.h:175
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 Tmin
Definition: FluidClass.h:54
double rhomax
Definition: FluidClass.h:54
double rhosatV(double)
Definition: Benzene.cpp:93
std::string CONDUCTIVITY
Definition: FluidClass.h:123