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
R407C.cpp
Go to the documentation of this file.
1 /*
2 Properties for R407C.
3 by Ian Bell (ihb2@cornell.edu)
4 
5 Pseudo-pure fluid thermo props from
6 "Pseudo-pure fluid Equations of State for the Refrigerant Blends R410A, R407C, R507C and R407C"
7 by E.W. Lemmon, Int. J. Thermophys. v. 24, n4, 2003
8 
9 */
10 
11 #if defined(_MSC_VER)
12 #define _CRTDBG_MAP_ALLOC
13 #define _CRT_SECURE_NO_WARNINGS
14 #include <stdlib.h>
15 #include <crtdbg.h>
16 #else
17 #include <stdlib.h>
18 #endif
19 
20 #include "math.h"
21 #include "stdio.h"
22 #include <string.h>
23 #include "CoolProp.h"
24 #include "FluidClass.h"
25 #include "R407C.h"
26 
28 {
29  static double a[]={
30  2.13194, //[0]
31  8.05008, //[1]
32  -14.3914, //[2]
33  1.4245, //[3]
34  3.9419, //[4]
35  3.1209 //[5]
36  };
37 
38  static double b[]={
39  0, //[0]
40  0, //[1]
41  -0.4, //[2]
42  2.40437, //[3]
43  5.25122, //[4]
44  13.3632 //[5]
45  };
46 
47  static double N[]={
48  0.0, //[0]
49  1.0588, //[1]
50  -1.12018, //[2]
51  0.629064, //[3]
52  -0.351953, //[4]
53  0.00455978, //[5]
54  -1.75725, //[6]
55  -1.12009, //[7]
56  0.0277353, //[8]
57  0.898881, //[9]
58  -1.17591, //[10]
59  0.0818591, //[11]
60  -0.0794097, //[12]
61  -0.0000104047, //[13]
62  0.233779, //[14]
63  -0.291790, //[15]
64  0.0154776, //[16]
65  -0.0314579, //[17]
66  -0.00442552, //[18]
67  -0.0101254, //[19]
68  0.00915953, //[20]
69  -0.003615 //[21]
70  };
71 
72  static double t[]={
73  0.0, //[0]
74  0.241, //[1]
75  0.69, //[2]
76  2.58, //[3]
77  1.15, //[4]
78  0.248, //[5]
79  2.15, //[6]
80  2.43, //[7]
81  5.3, //[8]
82  0.76, //[9]
83  1.48, //[10]
84  0.24, //[11]
85  2.86, //[12]
86  8.0, //[13]
87  3.3, //[14]
88  4.7, //[15]
89  0.45, //[16]
90  8.4, //[17]
91  16.2, //[18]
92  26.0, //[19]
93  16.0, //[20]
94  8.7 //[21]
95  };
96 
97  static double d[]={
98  0, //[0]
99  1, //[1]
100  1, //[2]
101  1, //[3]
102  2, //[4]
103  5, //[5]
104  1, //[6]
105  2, //[7]
106  2, //[8]
107  3, //[9]
108  3, //[10]
109  5, //[11]
110  5, //[12]
111  5, //[13]
112  1, //[14]
113  1, //[15]
114  4, //[16]
115  4, //[17]
116  2, //[18]
117  4, //[19]
118  5, //[20]
119  6 //[21]
120  };
121 
122  static double l[]={
123  0, //[0]
124  0, //[1]
125  0, //[2]
126  0, //[3]
127  0, //[4]
128  0, //[5]
129  1, //[6]
130  1, //[7]
131  1, //[8]
132  1, //[9]
133  1, //[10]
134  1, //[11]
135  1, //[12]
136  1, //[13]
137  2, //[14]
138  2, //[15]
139  2, //[16]
140  2, //[17]
141  3, //[18]
142  3, //[19]
143  3, //[20]
144  3 //[21]
145  };
146 
147  phirlist.push_back(new phir_power(N,d,t,l,1,21,22));
148 
149  /*
150  sum=log(delta)-log(tau)+a[0]+a[1]*tau+a[2]*pow(tau,b[2]);
151  for(k=3;k<=5;k++)
152  {
153  sum+=a[k]*log(1.0-exp(-b[k]*tau));
154  }
155  */
156  phi0list.push_back(new phi0_lead(a[0],a[1]));
157  phi0list.push_back(new phi0_logtau(-1.0));
158  phi0list.push_back(new phi0_power(a[2],b[2]));
159  phi0list.push_back(new phi0_Planck_Einstein(a,b,3,5,6));
160 
161  // Critical parameters (max condensing temperature)
162  crit.rho = 453.43094;
163  crit.p = PressureUnit(4631.7,UNIT_KPA);
164  crit.T = 359.345;
165  crit.v = 1.0/crit.rho;
166 
167  // Other fluid parameters
168  params.molemass = 86.2036;
169  params.Ttriple = 200.0;
170  params.ptriple = 11.3123436377;
171  params.accentricfactor = 0.363;
172  params.R_u = 8.314472;
173  isPure = false;
174 
175  // Limits of EOS
176  limits.Tmin = params.Ttriple;
177  limits.Tmax = 500.0;
178  limits.pmax = 50000.0;
179  limits.rhomax = 17.04*params.molemass;
180 
181  EOSReference.assign("E.W. Lemmon, \"Pseudo-pure fluid Equations of State for the Refrigerant Blends R410A, R404A, R507C and R407C\""
182  ",Int. J. Thermophys. v. 24, n4, 2003");
183  TransportReference.assign("Viscosity: V. Geller, \"Viscosity of Mixed Refrigerants R404A,R407C,"
184  "R410A, and R507A\", 2000 Purdue Refrigeration conferences\n\n"
185  "Thermal Conductivity: V.Z. Geller, B.Z. Nemzer, and U.V. Cheremnykh \"Thermal Conductivity "
186  "of the Refrigerant mixtures R404A,R407C,R410A, and R507A\" "
187  "Int. J. Thermophysics, v. 22, n 4 2001\n\n"
188  "Surface Tension: R. Heide, \"The surface tension of HFC refrigerants and mixtures\", Int J. Refrig. Vol. 20, No. 7, pp. 496-503, 1997");
189 
190  name.assign("R407C");
191  aliases.push_back("R407c");
192 
193  BibTeXKeys.EOS = "Lemmon-IJT-2003";
194  BibTeXKeys.VISCOSITY = "Geller-PURDUE-2000";
195  BibTeXKeys.CONDUCTIVITY = "Geller-IJT-2001";
196  BibTeXKeys.SURFACE_TENSION = "Heide-IJR-1997";
197 }
198 
199 double R407CClass::psatL(double T)
200 {
201  //Bubble point of R407C
202  double sum=0,theta;
203  int k;
204  static const double Nbp[]={
205  0.0, //[0]
206  0.48722, //[1]
207  -6.6959, //[2]
208  -1.4165, //[3]
209  -2.5109 //[4]
210  };
211 
212  static const double tbp[]={
213  0.0, //[0]
214  0.54, //[1]
215  0.925, //[2]
216  2.7, //[3]
217  4.7 //[4]
218  };
219 
220  theta=1-T/crit.T;
221 
222  for (k=1;k<=4;k++)
223  {
224  sum+=Nbp[k]*pow(theta,tbp[k]);
225  }
226  return reduce.p.Pa*exp(reduce.T/T*sum);
227 }
228 
229 double R407CClass::psatV(double T)
230 {
231  //Dew point of R407C
232  double sum=0,theta;
233  int k;
234  static const double Ndp[]={
235  0.0, //[0]
236  -0.086077, //[1]
237  -6.6364, //[2]
238  -2.4648, //[3]
239  -3.4776 //[4]
240  };
241 
242  static const double tdp[]={
243  0.0, //[0]
244  0.4, //[1]
245  0.965, //[2]
246  3.1, //[3]
247  5.0 //[4]
248  };
249  theta=1-T/crit.T;
250 
251  for (k=1;k<=4;k++)
252  {
253  sum+=Ndp[k]*pow(theta,tdp[k]);
254  }
255  return reduce.p.Pa*exp(reduce.T/T*sum);
256 }
257 
258 double R407CClass::rhosatV(double T)
259 {
260  double summer = 0, theta = 1-T/reduce.T;
261  // Max error is 0.019852053576 % between 200.0 and 359.3449 K
262  const double t[] = {0, 0.352, 0.096, 0.3555, 0.357, 0.358, 1.3333333333333333, 3.5, 7.5};
263  const double N[] = {0, -179729.84916615338, 0.10946690748177662, 1453310.3859794352, -2554835.880001666, 1281252.1234214078, -8.1237911813327504, -25.223828823832683, -77.955885979137349};
264  for (int i=1; i<=8; i++)
265  {
266  summer += N[i]*pow(theta,t[i]);
267  }
268  return reduce.rho*exp(summer);
269 }
270 
271 double R407CClass::rhosatL(double T)
272 {
273  double theta;
274  theta=1-T/359.345;
275  return exp(5.544589249+1.764403419125e+00*pow(theta,0.12337)+0.544950396285*theta-0.784102758738*theta*theta+0.741332715649*theta*theta*theta);
276 }
277 
278 double R407CClass::viscosity_Trho(double T, double rho)
279 {
280  // Properties taken from "Viscosity of Mixed
281  // Refrigerants R407C,R407C,R410A, and R507A"
282  // by Vladimir Geller,
283  // 2000 Purdue Refrigeration conferences
284 
285  // inputs in T [K], and p [kPa]
286  // output in Pa-s
287 
288  double eta_microPa_s;
289 
290  //Set constants required
291  double a_0=-1.507e0,a_1=4.894e-2,a_2=-9.305e-6,b_1=-3.038e-3,b_2=2.927e-4,
292  b_3=-9.559e-7,b_4=1.739e-9,b_5=-1.455e-12,b_6=4.756e-16;
293 
294  eta_microPa_s=a_0+a_1*T+a_2*T*T+b_1*rho+b_2*rho*rho+b_3*rho*rho*rho+b_4*rho*rho*rho*rho+b_5*rho*rho*rho*rho*rho+b_6*rho*rho*rho*rho*rho*rho;
295  return eta_microPa_s/1e6;
296 }
297 
298 double R407CClass::conductivity_Trho(double T, double rho)
299 {
300  // Properties taken from "Thermal Conductivity
301  // of the Refrigerant mixtures R407C,R407C,R410A, and R507A"
302  // by V.Z. Geller, B.Z. Nemzer, and U.V. Cheremnykh
303  // Int. J. Thermophysics, v. 22, n 4 2001
304 
305  // inputs in T [K], and p [kPa] or rho [kg/m^3]
306  // output in W/m-K
307 
308  //Set constants required
309  double a_0=-9.628e0,a_1=7.638e-2,b_1=2.715e-2,b_2=4.963e-5,b_3=-4.912e-8,b_4=2.884e-11;
310 
311  return (a_0+a_1*T+b_1*rho+b_2*rho*rho+b_3*rho*rho*rho+b_4*rho*rho*rho*rho)/1.e3; // from mW/m-K to W/m-K
312 }
314 {
315  return 0.0583286*pow(1-T/reduce.T,1.237);
316 }
std::vector< phi_BC * > phirlist
Definition: FluidClass.h:178
double surface_tension_T(double T)
Definition: R407C.cpp:313
struct FluidLimits limits
Definition: FluidClass.h:219
std::string EOS
Definition: FluidClass.h:120
virtual double conductivity_Trho(double, double)
Definition: R407C.cpp:298
std::string VISCOSITY
Definition: FluidClass.h:122
PressureUnit p
Definition: FluidClass.h:50
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
R407CClass()
Definition: R407C.cpp:27
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 EOSReference
The critical qd parameter for the Olchowy-Sengers cross-over term.
Definition: FluidClass.h:157
bool isPure
A std::string that contains a reference for the transport properties of the fluid.
Definition: FluidClass.h:159
std::string SURFACE_TENSION
Definition: FluidClass.h:126
double psatL(double)
Definition: R407C.cpp:199
double pmax
Definition: FluidClass.h:54
params
struct CriticalStruct crit
Definition: FluidClass.h:218
double rhosatV(double)
Definition: R407C.cpp:258
BibTeXKeysStruct BibTeXKeys
Definition: FluidClass.h:175
double psatV(double)
Definition: R407C.cpp:229
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 rhosatL(double)
Definition: R407C.cpp:271
double Tmin
Definition: FluidClass.h:54
double rhomax
Definition: FluidClass.h:54
std::string CONDUCTIVITY
Definition: FluidClass.h:123
virtual double viscosity_Trho(double, double)
Definition: R407C.cpp:278