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
RC318_R21_R114_R13_R14.cpp
Go to the documentation of this file.
1 #include "CoolProp.h"
2 #include <vector>
3 #include "CPExceptions.h"
4 #include "FluidClass.h"
6 
8 {
9  double n[] = {0, 1.09415573664603E+00, -2.68265247887176E+00, 1.73403070801418E+00, -1.63611253452478E+00, 3.04834511239559E-01, 1.02771559991302E-01, -2.32367914087730E-02, 1.66151971110653E-01, -2.50103944487447E-02, 9.35681090149423E-02, 4.31929196624930E-02, -1.33439867188959E-01, 2.55416683254970E-02, -1.04729119771286E+00, 1.38034128674154E+00, -3.33625770182218E-01, -5.10485822124397E-01, 1.81840742529488E+00, -1.38530904967474E+00, 1.04729119771286E+00, -1.38034128674154E+00, 3.33625770182218E-01};
10  double t[] = {0, 0, 1, 2, 3, 4, 0, 1, 2, 0, 1, 0, 1, 1, 3, 4, 5, 3, 4, 5, 3, 4, 5};
11  double d[] = {0, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 0, 0, 0, 2, 2, 2, 0, 0, 0};
12  double c[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2};
13  double g[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.99944, 0.99944, 0.99944, 0.99944, 0.99944, 0.99944};
14 
15  //Critical parameters
16  crit.rho = 3.09938*200.0312; //[kg/m^3]
17  crit.p = PressureUnit(2.7775e+006, UNIT_PA); //[Pa]
18  crit.T = 388.38; //[K]
19  crit.v = 1/crit.rho;
20 
21  // Other fluid parameters
22  params.molemass = 200.0312;
23  params.Ttriple = 233.35;
24  params.accentricfactor = 0.355345;
25  params.R_u = 8.31451;
26  params.ptriple = 19.461;
27 
28  // Limits of EOS
29  limits.Tmin = params.Ttriple;
30  limits.Tmax = 500.0;
31  limits.pmax = 100000.0;
32  limits.rhomax = 1000000.0*params.molemass;
33 
34  phirlist.push_back(new phir_power(n,d,t,c,1,16,23));
35  phirlist.push_back(new phir_exponential(n,d,t,c,g,17,22,23));
36 
37  phi0list.push_back(new phi0_lead(0,0));
38  phi0list.push_back(new phi0_logtau(-1));
39 
40  double R = params.R_u/params.molemass;
41  const double a0[] = {1.21e-1/R, 2.903e-3/R, -2.5327e-6/R, 7.7191e-10/R};
42  const double n0[] = {0, 1, 2, 3, 4};
43  std::vector<double> a0_v(a0,a0+sizeof(a0)/sizeof(double));
44  std::vector<double> n0_v(n0,n0+sizeof(n0)/sizeof(double));
45 
46  phi0list.push_back(new phi0_cp0_poly(a0_v,n0_v,crit.T,298.15,0,3));
47 
48  name.assign("RC318");
49  REFPROPname.assign("RC318");
50 
51  ECSReferenceFluid = "Propane";
52  ECS_qd = 1/(0.356085e-9);
53 
54  BibTeXKeys.EOS = "Platzer-BOOK-1990";
55  BibTeXKeys.CP0 = "Platzer-BOOK-1990";
56  BibTeXKeys.ECS_LENNARD_JONES = "Huber-IECR-2003";
57  BibTeXKeys.ECS_FITS = "Huber-IECR-2003";
58  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
59 }
60 double RC318Class::psat(double T)
61 {
62  // Max error is 0.00483960782838 % between 233.35 and 388.3799 K for RC318
63  const double t[]={0, 0.353, 0.3585, 0.38899999999999996, 0.39499999999999996, 0.39649999999999996, 1.0, 2.6666666666666665, 4.166666666666667};
64  const double N[]={0, -4692.4741793345729, 7715.2503820566762, -49464.460331933777, 188185.25751683454, -141744.53054929635, -5.7257304556280664, -1.8133107974678764, -3.2381748043228629};
65  double summer=0,theta;
66  theta=1-T/reduce.T;
67  for (int i=1; i<=8; i++)
68  {
69  summer += N[i]*pow(theta,t[i]);
70  }
71  return reduce.p.Pa*exp(reduce.T/T*summer);
72 }
73 
74 double RC318Class::rhosatL(double T)
75 {
76  // Maximum absolute error is 0.186636 % between 233.350001 K and 388.379990 K
77  const double t[] = {0, 0.6666666666666666, 0.8333333333333334, 1.0, 1.1666666666666667, 1.3333333333333333};
78  const double N[] = {0, 53.969051563565969, -197.00365240301335, 308.27001401289408, -229.95393573809568, 67.664593178058581};
79  double summer=0,theta;
80  theta=1-T/reduce.T;
81  for (int i=1; i<=5; i++)
82  {
83  summer += N[i]*pow(theta,t[i]);
84  }
85  return reduce.rho*(summer+1);
86 }
87 
88 double RC318Class::rhosatV(double T)
89 {
90  // Maximum absolute error is 0.235209 % between 233.350001 K and 388.379990 K
91  const double t[] = {0, 0.6666666666666666, 1.0, 1.1666666666666667, 1.3333333333333333, 1.6666666666666667};
92  const double N[] = {0, -30.078583058035335, 296.09241082699941, -657.70383115910977, 480.88414718079628, -98.797638989440159};
93  double summer=0,theta;
94  theta=1-T/reduce.T;
95  for (int i=1; i<=5; i++)
96  {
97  summer += N[i]*pow(theta,t[i]);
98  }
99  return reduce.rho*exp(reduce.T/T*summer);
100 }
101 
103 {
104  double n[] = {0, 5.04676623751950E-01, -7.32431416212257E-01, -8.68403860880684E-01, 1.46234705622829E-01, -2.80576335158724E-01, 8.64743657302055E-01, -2.70767234069002E+00, 3.30476391081085E+00, -2.10878239585469E-01, 4.49531450327333E-01, 1.20779813434928E-01, -2.77297954448155E-01, 3.05441292206290E-02, -4.43864848810647E+01, 9.26505601085111E+00, -5.51709104525115E-01, 1.21128809697908E+00, 1.67119476809363E-01, -5.04876793555323E-02, 4.43864848810647E+01, -9.26505601085111E+00, 5.51709104525115E-01};
105  double t[] = {0, 0, 1, 2, 3, 4, 0, 1, 2, 0, 1, 0, 1, 1, 3, 4, 5, 3, 4, 5, 3, 4, 5};
106  double d[] = {0, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 0, 0, 0, 2, 2, 2, 0, 0, 0};
107  double c[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2};
108  double g[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.07470252, 0.07470252, 0.07470252, 0.07470252, 0.07470252, 0.07470252};
109 
110  //Critical parameters
111  crit.rho = 5.1107656*102.9227; //[kg/m^3]
112  crit.p = PressureUnit(5181.2, UNIT_KPA); //[kPa]
113  crit.T = 451.48; //[K]
114  crit.v = 1/crit.rho;
115 
116  // Other fluid parameters
117  params.molemass = 102.9227;
118  params.Ttriple = 142.8;
119  params.accentricfactor = 0.2061;
120  params.R_u = 8.31451;
121  params.ptriple = 0.872834974943;
122 
123  // Limits of EOS
124  limits.Tmin = 200;
125  limits.Tmax = 500.0;
126  limits.pmax = 100000.0;
127  limits.rhomax = 1000000.0*params.molemass;
128 
129  phirlist.push_back(new phir_power(n,d,t,c,1,16,23));
130  phirlist.push_back(new phir_exponential(n,d,t,c,g,17,22,23));
131 
132  phi0list.push_back(new phi0_lead(0,0));
133  phi0list.push_back(new phi0_logtau(-1));
134 
135  double R = params.R_u/params.molemass;
136  const double a0[] = {2.376576e-1/R, 1.271433e-3/R, 3.241352e-7/R, -2.492428e-9/R, 1.717208e-12/R};
137  const double n0[] = {0, 1, 2, 3, 4};
138  std::vector<double> a0_v(a0,a0+sizeof(a0)/sizeof(double));
139  std::vector<double> n0_v(n0,n0+sizeof(n0)/sizeof(double));
140 
141  phi0list.push_back(new phi0_cp0_poly(a0_v,n0_v,crit.T,298.15,0,4));
142 
143  name.assign("R21");
144  REFPROPname.assign("R21");
145 
146  ECSReferenceFluid = "R134a";
147 
148  BibTeXKeys.EOS = "Platzer-BOOK-1990";
149  BibTeXKeys.CP0 = "Platzer-BOOK-1990";
150  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
151 }
152 double R21Class::psat(double T)
153 {
154  // Max error is 0.11324761496 % between 200.0 and 451.479999 K
155  const double t[]={0, 5.166666666666667, 0.5, 0.8333333333333334, 1.1666666666666667, 4.5, 15.5};
156  const double N[]={0, 10.622994048827298, 0.24340767266291899, -3.6806156929627569, -2.8391976402596844, -11.694192853896972, -105.73416753738717};
157  double summer=0,theta;
158  theta=1-T/reduce.T;
159  for (int i=1; i<=6; i++)
160  {
161  summer += N[i]*pow(theta,t[i]);
162  }
163  return reduce.p.Pa*exp(reduce.T/T*summer);
164 }
165 
166 double R21Class::rhosatL(double T)
167 {
168  // Maximum absolute error is 0.007797 % between 200.000001 K and 451.479990 K
169  const double t[] = {0, 0.16666666666666666, 0.3333333333333333, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0, 1.1666666666666667, 1.3333333333333333, 1.5, 1.8333333333333333, 2.1666666666666665};
170  const double N[] = {0, 8.1962989012252336, -126.69432982418643, 1052.8278007078461, -5339.195030700148, 17403.906139256076, -36983.75602624529, 50768.854983414814, -42575.104120024254, 17904.251888750605, -2429.6221450543758, 319.29162336471995};
171  double summer=0,theta;
172  theta=1-T/reduce.T;
173  for (int i=1; i<=11; i++)
174  {
175  summer += N[i]*pow(theta,t[i]);
176  }
177  return reduce.rho*(summer+1);
178 }
179 
180 double R21Class::rhosatV(double T)
181 {
182  // Maximum absolute error is 0.318686 % between 200.000001 K and 451.479990 K
183  const double t[] = {0, 0.16666666666666666, 0.3333333333333333, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0, 1.1666666666666667, 1.3333333333333333, 1.5, 1.8333333333333333, 2.1666666666666665};
184  const double N[] = {0, -11.965216242817384, 231.11620211923858, -2211.2434959327638, 12215.991323317601, -42096.616452521615, 93406.800295160952, -133237.72543166098, 115857.13120320938, -50458.426055336175, 7329.6177378866341, -1033.9002422581893};
185  double summer=0,theta;
186  theta=1-T/reduce.T;
187  for (int i=1; i<=11; i++)
188  {
189  summer += N[i]*pow(theta,t[i]);
190  }
191  return reduce.rho*exp(reduce.T/T*summer);
192 }
193 
195 {
196  double n[] = {0, 1.07938940032879E+00, -1.99243731009857E+00, -1.55135220175231E-01, -1.21465858429101E-01, -1.65038674558161E-02, -1.86916017480622E-01, 3.08074956770949E-01, 1.15861545567346E-01, 2.76358779813890E-02, 1.08043424159349E-01, 4.60684822539207E-02, -1.74822007470687E-01, 3.17531741331376E-02, -3.40776521025164E-01, 3.23001398918284E-01, -4.24950543505197E-02, -1.66940287525002E+00, 4.08693538568874E+00, -2.41739233911370E+00, 3.40776521025164E-01, -3.23001398918284E-01, 4.24950543505197E-02};
197  double t[] = {0, 0, 1, 2, 3, 4, 0, 1, 2, 0, 1, 0, 1, 1, 3, 4, 5, 3, 4, 5, 3, 4, 5};
198  double d[] = {0, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 0, 0, 0, 2, 2, 2, 0, 0, 0};
199  double c[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2};
200  double g[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.21104, 1.21104, 1.21104, 1.21104, 1.21104, 1.21104};
201 
202  //Critical parameters
203  crit.rho = 3.3932*170.921; //[kg/m^3]
204  crit.p = PressureUnit(3257.0, UNIT_KPA); //[kPa]
205  crit.T = 418.83; //[K]
206  crit.v = 1/crit.rho;
207 
208  // Other fluid parameters
209  params.molemass = 170.921;
210  params.Ttriple = 180.63;
211  params.accentricfactor = 0.2523;
212  params.R_u = 8.31451;
213  params.ptriple = 88.1623867625;
214 
215  // Limits of EOS
216  limits.Tmin = 273.15;
217  limits.Tmax = 500.0;
218  limits.pmax = 100000.0;
219  limits.rhomax = 1000000.0*params.molemass;
220 
221  phirlist.push_back(new phir_power(n,d,t,c,1,16,23));
222  phirlist.push_back(new phir_exponential(n,d,t,c,g,17,22,23));
223 
224  phi0list.push_back(new phi0_lead(0,0));
225  phi0list.push_back(new phi0_logtau(-1));
226 
227  double R = params.R_u/params.molemass;
228  const double a0[] = {9.765138e-2/R, 3.240861e-3/R, -5.895364e-6/R, 6.737929e-9/R, -3.546364e-12/R};
229  const double n0[] = {0, 1, 2, 3, 4};
230  std::vector<double> a0_v(a0,a0+sizeof(a0)/sizeof(double));
231  std::vector<double> n0_v(n0,n0+sizeof(n0)/sizeof(double));
232 
233  phi0list.push_back(new phi0_cp0_poly(a0_v,n0_v,crit.T,298.15,0,4));
234 
235  name.assign("R114");
236  REFPROPname.assign("R114");
237 
238  ECSReferenceFluid = "R134a";
239 
240  BibTeXKeys.EOS = "Platzer-BOOK-1990";
241  BibTeXKeys.CP0 = "Platzer-BOOK-1990";
242  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
243 }
244 double R114Class::psat(double T)
245 {
246  // Max error is 0.0126361637689 % between 273.15 and 418.829999 K
247  const double t[]={0, 0.07400000000000001, 0.39849999999999997, 1.0, 1.3333333333333333, 1.6666666666666667, 3.6666666666666665};
248  const double N[]={0, -0.0034645011523141735, 0.023157592718005465, -7.5688152387880105, 1.8469739464041124, -0.64855802507466331, -3.5293610438916647};
249  double summer=0,theta;
250  theta=1-T/reduce.T;
251  for (int i=1; i<=6; i++)
252  {
253  summer += N[i]*pow(theta,t[i]);
254  }
255  return reduce.p.Pa*exp(reduce.T/T*summer);
256 }
257 
258 double R114Class::rhosatL(double T)
259 {
260  // Maximum absolute error is 0.166287 % between 273.150001 K and 418.829990 K
261  const double t[] = {0, 0.16666666666666666, 0.3333333333333333, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0, 1.1666666666666667, 1.3333333333333333, 1.5};
262  const double N[] = {0, 8.0724210238996115, -96.761335399409077, 605.872851511985, -2291.2376321628576, 5509.0583210078776, -8366.137761880449, 7757.0256536890611, -4008.5271350615171, 885.72702898357159};
263  double summer=0,theta;
264  theta=1-T/reduce.T;
265  for (int i=1; i<=9; i++)
266  {
267  summer += N[i]*pow(theta,t[i]);
268  }
269  return reduce.rho*(summer+1);
270 }
271 
272 double R114Class::rhosatV(double T)
273 {
274  // Maximum absolute error is 0.069288 % between 273.150001 K and 418.829990 K
275  const double t[] = {0, 0.16666666666666666, 0.3333333333333333, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0, 1.1666666666666667, 1.3333333333333333, 1.8333333333333333};
276  const double N[] = {0, -9.6930811880906287, 117.96522621847706, -743.74723241355264, 2787.1929722048621, -6489.5985188809345, 9217.6641583192031, -7448.5109382036526, 2703.4677823598959, -143.67224624062317};
277  double summer=0,theta;
278  theta=1-T/reduce.T;
279  for (int i=1; i<=9; i++)
280  {
281  summer += N[i]*pow(theta,t[i]);
282  }
283  return reduce.rho*exp(reduce.T/T*summer);
284 }
285 
287 {
288  double n[] = {0, 7.61143010172E-01, -1.94465098795E+00, 9.40938700406E-01, -1.08107050239E+00, 1.17501564976E-01, 2.28305167217E-01, -4.03338888789E-01, 3.75585713420E-01, -6.17543677315E-02, 1.70326226881E-01, 5.36612457231E-02, -1.51603010301E-01, 2.52033265074E-02, -6.28346559920E-01, 7.92797111341E-01, -1.34038992692E-01, -3.99863840975E-02, 4.36410910529E-01, -4.48724904991E-01, 6.28346559920E-01, -7.92797111341E-01, 1.34038992692E-01};
289  double t[] = {0, 0, 1, 2, 3, 4, 0, 1, 2, 0, 1, 0, 1, 1, 3, 4, 5, 3, 4, 5, 3, 4, 5};
290  double d[] = {0, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 0, 0, 0, 2, 2, 2, 0, 0, 0};
291  double c[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2};
292  double g[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.98230055, 0.98230055, 0.98230055, 0.98230055, 0.98230055, 0.98230055};
293 
294  //Critical parameters
295  crit.rho = 5.58*104.459; //[kg/m^3]
296  crit.p = PressureUnit(3879.0, UNIT_KPA); //[kPa]
297  crit.T = 301.88; //[K]
298  crit.v = 1/crit.rho;
299 
300  // Other fluid parameters
301  params.molemass = 104.459;
302  params.Ttriple = 92;
303  params.accentricfactor = 0.174586327798;
304  params.R_u = 8.31451;
305  params.ptriple = 0.000907038339057;
306 
307  // Limits of EOS
308  limits.Tmin = 98.15;
309  limits.Tmax = 500.0;
310  limits.pmax = 100000.0;
311  limits.rhomax = 1000000.0*params.molemass;
312 
313  phirlist.push_back(new phir_power(n,d,t,c,1,16,23));
314  phirlist.push_back(new phir_exponential(n,d,t,c,g,17,22,23));
315 
316  phi0list.push_back(new phi0_lead(0,0));
317  phi0list.push_back(new phi0_logtau(-1));
318 
319  double R = params.R_u/params.molemass;
320  const double a0[] = {1.971309e-1/R, 1.438638e-3/R, 1.746775e-6/R, -6.830175e-9/R, 5.030396e-12/R};
321  const double n0[] = {0, 1, 2, 3, 4};
322  std::vector<double> a0_v(a0,a0+sizeof(a0)/sizeof(double));
323  std::vector<double> n0_v(n0,n0+sizeof(n0)/sizeof(double));
324 
325  phi0list.push_back(new phi0_cp0_poly(a0_v,n0_v,crit.T,298.15,0,4));
326 
327  name.assign("R13");
328  REFPROPname.assign("R13");
329 
330  ECSReferenceFluid = "Propane";
331  ECS_qd = 1/(0.349636e-9);
332 
333  BibTeXKeys.EOS = "Platzer-BOOK-1990";
334  BibTeXKeys.CP0 = "Platzer-BOOK-1990";
335  BibTeXKeys.ECS_LENNARD_JONES = "Huber-IECR-2003";
336  BibTeXKeys.ECS_FITS = "Huber-IECR-2003";
337  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
338 }
339 double R13Class::psat(double T)
340 {
341  // Max error is 0.282358377629 % between 98.15 and 301.879999 K
342  const double t[]={0, 0.383, 0.38999999999999996, 1.1666666666666667, 5.5, 0.3695, 23.333333333333332};
343  const double N[]={0, 577.42725600666131, -400.21572594632761, -4.9874139876628041, -4.222492303172193, -178.69585671516839, -1720.3585941933911};
344  double summer=0,theta;
345  theta=1-T/reduce.T;
346  for (int i=1; i<=6; i++)
347  {
348  summer += N[i]*pow(theta,t[i]);
349  }
350  return reduce.p.Pa*exp(reduce.T/T*summer);
351 }
352 
353 double R13Class::rhosatL(double T)
354 {
355  // Max error is 0.090396245488 % between 98.15 and 301.879999 K
356  const double t[] = {0, 0.113, 0.364, 0.3695, 0.3785, 1.3333333333333333, 6.666666666666667};
357  const double N[] = {0, 2.4784634077003043, -4743.997952071094, 7615.934031115753, -2872.7859164099727, 1.0823469621368702, 0.12626188722376672};
358  double summer=0,theta;
359  theta=1-T/reduce.T;
360 
361  for (int i=1; i<=6; i++)
362  {
363  summer += N[i]*pow(theta,t[i]);
364  }
365  return reduce.rho*(summer+1);
366 }
367 double R13Class::rhosatV(double T)
368 {
369  // Max error is 0.0235817860212 % between 98.15 and 301.8799 K
370  const double t[] = {0, 0.138, 0.14300000000000002, 0.38599999999999995, 0.38799999999999996, 0.38899999999999996, 0.39099999999999996, 0.39149999999999996, 4.0, 8.333333333333334, 21.5};
371  const double N[] = {0, -1287.2952626479841, 1471.130388287577, -3382739168.0344748, 26487996709.339836, -37021553643.047638, 36901846787.213554, -22985550874.574944, -3.2136791021238045, -3.0923712297543609, -891.46368816511585};
372  double summer=0,theta;
373  theta=1-T/reduce.T;
374 
375  for (int i=1; i<=10; i++)
376  {
377  summer += N[i]*pow(theta,t[i]);
378  }
379  return reduce.rho*exp(reduce.T/T*summer);
380 }
381 
382 
384 {
385  double n[] = {0, 1.03999039734947E+00, -2.45792025425590E+00, 7.99614558381524E-01, -7.49498955282594E-01, 1.52177772596398E-01, -2.93408332036298E-01, 7.17794503774445E-01, -4.26467444751902E-02, 2.26562749725952E-01, -3.91091694774020E-01, -2.57394805543082E-02, 5.54844886106659E-02, 6.10988262947185E-03, -3.34698748826510E-01, 5.86690904512625E-01, -1.47068929694523E-01, -1.90315426348019E-01, 7.16157134745809E-01, -7.03161905301754E-01, 3.34698748826510E-01, -5.86690904512625E-01, 1.47068929694523E-01};
386  double t[] = {0, 0, 1, 2, 3, 4, 0, 1, 2, 0, 1, 0, 1, 1, 3, 4, 5, 3, 4, 5, 3, 4, 5};
387  double d[] = {0, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 0, 0, 0, 2, 2, 2, 0, 0, 0};
388  double c[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2};
389  double g[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.99832625, 0.99832625, 0.99832625, 0.99832625, 0.99832625, 0.99832625};
390 
391  //Critical parameters
392  crit.rho = 7.1094194*88.0046; //[kg/m^3]
393  crit.p = PressureUnit(3750.0, UNIT_KPA); //[kPa]
394  crit.T = 227.51; //[K]
395  crit.v = 1/crit.rho;
396 
397  // Other fluid parameters
398  params.molemass = 88.0046;
399  params.Ttriple = 89.54;
400  params.accentricfactor = 0.1785;
401  params.R_u = 8.31451;
402  params.ptriple = 11.2943290448;
403 
404  // Limits of EOS
405  limits.Tmin = 120;
406  limits.Tmax = 500.0;
407  limits.pmax = 100000.0;
408  limits.rhomax = 1000000.0*params.molemass;
409 
410  phirlist.push_back(new phir_power(n,d,t,c,1,16,23));
411  phirlist.push_back(new phir_exponential(n,d,t,c,g,17,22,23));
412 
413  phi0list.push_back(new phi0_lead(0,0));
414  phi0list.push_back(new phi0_logtau(-1));
415 
416  double R = params.R_u/params.molemass;
417 
419  const double a0[] = {3.728374e-01/R, -8.368995e-04/R, 1.316909e-05/R, -2.839480e-08/R, 1.937061e-11/R};
420  const double n0[] = {0, 1, 2, 3, 4};
421  std::vector<double> a0_v(a0,a0+sizeof(a0)/sizeof(double));
422  std::vector<double> n0_v(n0,n0+sizeof(n0)/sizeof(double));
423 
424  phi0list.push_back(new phi0_cp0_poly(a0_v,n0_v,crit.T,298.15,0,4));
425 
426  name.assign("R14");
427  REFPROPname.assign("R14");
428 
429  ECSReferenceFluid = "Nitrogen";
430  ECS_qd = 1/(0.226566e-9);
431 
432  BibTeXKeys.EOS = "Platzer-BOOK-1990";
433  BibTeXKeys.CP0 = "Platzer-BOOK-1990";
434  BibTeXKeys.ECS_LENNARD_JONES = "Huber-IECR-2003";
435  BibTeXKeys.ECS_FITS = "Huber-IECR-2003";
436  BibTeXKeys.SURFACE_TENSION = "Mulero-JPCRD-2012";
437 }
438 double R14Class::psat(double T)
439 {
440  // Max error is 0.106188047838 % between 120.0 and 227.509999 K
441  const double t[]={0, 0.056, 0.362, 0.379, 0.381, 1.0, 4.166666666666667};
442  const double N[]={0, 0.022784802896396485, -47.710297004468607, 499.94408372159194, -452.62807116975046, -5.7182330867269302, -3.0735670244888449};
443  double summer=0,theta;
444  theta=1-T/reduce.T;
445  for (int i=1; i<=6; i++)
446  {
447  summer += N[i]*pow(theta,t[i]);
448  }
449  return reduce.p.Pa*exp(reduce.T/T*summer);
450 }
451 
452 double R14Class::rhosatL(double T)
453 {
454  // Max error is 0.442178557435 % between 120.0 and 227.5099 K
455 
456  const double t[] = {0, 0.069, 0.07600000000000001, 0.08, 0.082, 0.084, 0.136, 0.14800000000000002, 0.10900000000000001};
457  const double N[] = {0, 1602566566.7780583, -26938218495.184853, 133716790849.44449, -173718665668.18839, 65516872229.093124, 26998449.766706958, -7249677.4848860716, -199094251.66107807};
458  double summer=0,theta;
459  theta=1-T/reduce.T;
460  for (int i=1; i <= 8; i++)
461  {
462  summer += N[i]*pow(theta,t[i]);
463  }
464  return reduce.rho*(summer+1);
465 }
466 
467 double R14Class::rhosatV(double T)
468 {
469  // Maximum absolute error is 0.212298 % between 120.000001 K and 227.509990 K
470  const double t[] = {0, 0.16666666666666666, 0.3333333333333333, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0, 1.1666666666666667, 1.3333333333333333, 1.5, 1.8333333333333333, 2.1666666666666665, 2.5, 2.8333333333333335};
471  const double N[] = {0, -100.7345626697176, 3444.3434008630493, -42830.254541518494, 284713.72386460466, -1162645.1073034331, 3084508.6432672697, -5359062.6069945302, 5819407.3052222747, -3268017.232780416, 910857.58529407543, -364141.81135523558, 111002.63233300112, -17148.507705086071};
472  double summer=0,theta;
473  theta=1-T/reduce.T;
474  for (int i=1; i<=13; i++)
475  {
476  summer += N[i]*pow(theta,t[i]);
477  }
478  return reduce.rho*exp(reduce.T/T*summer);
479 }
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 psat(double)
struct FluidLimits limits
Definition: FluidClass.h:219
std::string EOS
Definition: FluidClass.h:120
double rhosatL(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
std::string name
A container to hold the cache for residual Helmholtz derivatives.
Definition: FluidClass.h:151
double rhosatL(double)
double psat(double)
double Pa
Definition: Units.h:22
std::string CP0
Definition: FluidClass.h:121
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 Tmax
Definition: FluidClass.h:54
std::string ECS_FITS
Definition: FluidClass.h:125
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 rhosatL(double)
double pmax
Definition: FluidClass.h:54
params
struct CriticalStruct crit
Definition: FluidClass.h:218
BibTeXKeysStruct BibTeXKeys
Definition: FluidClass.h:175
double rhosatL(double)
double rhosatV(double)
Term in the ideal-gas specific heat equation that is polynomial term.
Definition: Helmholtz.h:881
double psat(double)
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)
double rhosatV(double)
double rhosatV(double)
double rhosatL(double)
double psat(double)
double ECS_qd
A string that gives the name of the fluids that should be used for the ECS method for transport prope...
Definition: FluidClass.h:156
double Tmin
Definition: FluidClass.h:54
double psat(double)
double rhomax
Definition: FluidClass.h:54