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
Propylene.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 "Propylene.h"
6 
8 {
9  double n[] = {0.0, 4.341002E-02, 1.136592E+00, -8.528611E-01, 5.216669E-01, -1.382953E+00, 1.214347E-01, -5.984662E-01, -1.391883E+00, -1.008434E+00, 1.961249E-01, -3.606930E-01, -2.407175E-03, 7.432121E-01, 1.475162E-01, -2.503391E-02, -2.734409E-01, 6.378889E-03, 1.502940E-02, -3.162971E-02, -4.107194E-02, -1.190241E+00};
10  double t[] = {0, 1.0, 0.205, 0.56, 0.676, 1.0, 0.5, 1.0, 1.94, 2.0, 1.0, 2.66, 0.83, 1.6, 2.5, 3.0, 2.5, 2.72, 4.0, 4.0, 1.0, 4.0};
11  double d[] = {0, 4., 1., 1., 2., 2., 3., 1., 1., 3., 2., 2., 8., 1., 1., 2., 3., 3., 2., 1., 2., 3.};
12  double c[] = {0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2};
13  double eta[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.07, 0.66, 1.2, 1.12, 1.47, 1.93, 3.3, 15.4, 6.0};
14  double beta[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.77, 0.83, 0.607, 0.4, 0.66, 0.07, 3.1, 387.0, 41.0};
15  double gamma[] = {0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.21, 1.08, 0.83, 0.56, 1.22, 1.81, 1.54, 1.12, 1.4};
16  double epsilon[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.78, 0.82, 1.94, 0.69, 1.96, 1.3, 0.38, 0.91, 0.7};
17 
18  //Critical parameters
19  crit.rho = 5.457*42.07974; //[kg/m^3]
20  crit.p = PressureUnit(4555.0, UNIT_KPA); //[kPa]
21  crit.T = 364.211; //[K]
22  crit.v = 1/crit.rho;
23 
24  // Other fluid parameters
25  params.molemass = 42.07974;
26  params.Ttriple = 87.953;
27  params.accentricfactor = 0.146;
28  params.R_u = 8.314472;
29  params.ptriple = 7.5e-7;
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,12,22));
38  phirlist.push_back(new phir_gaussian( n,d,t, eta, epsilon, beta, gamma, 13,21,22));
39 
40  const double n5 = 4.9916462, n6 = -0.1709449, n0 = 4;
41  phi0list.push_back(new phi0_lead(n5,n6));
42  phi0list.push_back(new phi0_logtau(n0-1));
43 
44  const double u0[] = {0, 324/crit.T, 973/crit.T, 1932/crit.T, 4317/crit.T};
45  const double v0[] = {0, 1.544, 4.013, 8.923, 6.020};
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,4));
50 
51  EOSReference.assign("Lemmon, E.W., Overhoff, U., McLinden, M.O., Wagner, W. to be submitted to J. Phys. Chem. Ref. Data, 2010. Coefficients from REFPROP with permission");
52  TransportReference.assign("Using ECS in fully predictive mode. Lennard-Jones parameters from Chichester NISTIR 6650\n\nSurface Tension: Mulero \"Recommended Correlations for the Surface Tension of Common Fluids\", 2012");
53 
54  name.assign("Propylene");
55  aliases.push_back(std::string("propylene"));
56  aliases.push_back(std::string("PROPYLENE"));
57  REFPROPname.assign("PROPYLEN");
58 
59  ECSReferenceFluid = "Propane";
60 
61  BibTeXKeys.EOS = "Lemmon-PROPYLENE-2013";
62  BibTeXKeys.ECS_LENNARD_JONES = "Huber-IECR-2003";
63  BibTeXKeys.ECS_FITS = "Huber-IECR-2003";
64  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
65 }
66 
67 double PropyleneClass::psat(double T)
68 {
69  // Maximum absolute error is 0.396942 % between 87.953001 K and 364.210990 K
70  const double ti[]={0,1.0,1.5,2.3,3.6,5.2,7.3};
71  const double Ni[]={0,-6.6958563845941557, 1.4311880756878577, -0.8392648926700903, -1.404370123028005, -1.29441159795851, -0.26643717806886891 };
72  double summer=0,theta;
73  int i;
74  theta=1-T/reduce.T;
75  for (i=1;i<=6;i++)
76  {
77  summer=summer+Ni[i]*pow(theta,ti[i]);
78  }
79  return reduce.p.Pa*exp(reduce.T/T*summer);
80 }
81 double PropyleneClass::rhosatL(double T)
82 {
83  // Maximum absolute error is 0.411874 % between 87.953001 K and 364.210990 K
84  const double ti[]={0,0.30707507732809863, 1.6023345456599933, 1.7791635211003165, 2.0465240028604148, 5.1411742782570071};
85  const double Ni[]={0,1.3786786344106812, -2.9774720934333989, 4.5456795310163045, -1.6615812178019818, 0.069846888007405475};
86  double summer=0;
87  int i;
88  double theta;
89  theta=1-T/reduce.T;
90  for (i=1;i<=5;i++)
91  {
92  summer+=Ni[i]*pow(theta,ti[i]);
93  }
94  return reduce.rho*exp(summer);
95 }
96 double PropyleneClass::rhosatV(double T)
97 {
98  // Maximum absolute error is 1.016248 % between 87.953001 K and 364.210990 K
99  const double ti[]={0,0.16707532108933132, 0.77455491593780279, 0.37832972634970236, 3.6472145456693612, 4.8837368709837277};
100  const double Ni[]={0,-0.18885062045276654, -2.9307286022811478, -1.7316143840826113, -2.3756819694192388, -1.6778871008288518};
101  double summer=0,theta;
102  int i;
103  theta=1.0-T/reduce.T;
104  for (i=1;i<=5;i++)
105  {
106  summer=summer+Ni[i]*pow(theta,ti[i]);
107  }
108  return reduce.rho*exp(crit.T/T*summer);
109 }
111 {
112  // Mulero 2012
113  return 0.05268*pow(1-T/crit.T,1.186);
114 }
double surface_tension_T(double T)
Definition: Propylene.cpp:110
double rhosatL(double)
Definition: Propylene.cpp:81
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
std::string ECSReferenceFluid
A list of aliases of names for the Fluid, each element is a std::string instance. ...
Definition: FluidClass.h:154
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
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
std::string ECS_FITS
Definition: FluidClass.h:125
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
BibTeXKeysStruct BibTeXKeys
Definition: FluidClass.h:175
double psat(double)
Definition: Propylene.cpp:67
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 rhosatV(double)
Definition: Propylene.cpp:96
double Tmin
Definition: FluidClass.h:54
double rhomax
Definition: FluidClass.h:54