cantera/ext/tpx/HFC134a.cpp
Harry Moffat bb2e6897d7 solaris warned about string literals being assigned to char *.
So, I changed it so that the species name is storred within the
object.
2006-03-03 23:21:06 +00:00

180 lines
5.1 KiB
C++
Executable file

// HFC134a
#include "HFC134a.h"
#include <math.h>
namespace tpx {
const double
M = 102.032,
Tmn = 170.0,
Tmx = 455.0,
Tc = 374.18,
Pc = 4056290.0,
Roc = 508.0,
R = 81.48885644;
const double a134[] = {
0.5586817e-1,
0.4982230,
0.2458698e-1,
0.8570145e-3,
0.4788584e-3,
-0.1800808e1,
0.2671641,
-0.4781652e-1,
0.1423987e-1,
0.3324062,
-0.7485907e-2,
0.1017263e-3,
-0.5184567,
-0.8692288e-1,
0.2057144,
-0.5000457e-2,
0.4603262e-3,
-0.3497836e-2,
0.6995038e-2,
-0.1452184e-1,
-0.1285458e-3
};
const double t134[] = {
-0.5, 0.0, 0.0, 0.0, 1.5, 1.5, 2.0, 2.0, 1.0, 3.0, 5.0,
1.0, 5.0, 5.0, 6.0, 10.0, 10.0, 10.0, 18.0, 22.0, 50.0
};
const int d134[] = {
2, 1, 3, 6, 6, 1, 1, 2, 5, 2, 2,
4, 1, 4, 1, 2, 4, 1, 5, 3, 10
};
const double b134[] = {
-1.019535,
9.047135,
-1.629789,
-9.723916,
-3.927170
};
double HFC134a::fp() {
double sum1 = 0.0, sum2 = 0.0, sum3 = 0.0,
sum4 = 0.0, sum5 = 0.0;
double tau = Tc/T;
double delta = Rho/Roc;
double phi0 = b134[0] + b134[1]*tau + b134[2]*log(tau)
+ log(delta) + b134[3]/sqrt(tau) + b134[4]*pow(tau,-0.75);
int i;
for (i = 0; i<8; i++)
sum1 += a134[i]*pow(tau,t134[i])*pow(delta,d134[i]);
for (i = 8; i<11; i++)
sum2 += a134[i]*pow(tau,t134[i])*pow(delta,d134[i]);
for (i = 11; i<17; i++)
sum3 += a134[i]*pow(tau,t134[i])*pow(delta,d134[i]);
for (i = 17; i<20; i++)
sum4 += a134[i]*pow(tau,t134[i])*pow(delta,d134[i]);
sum5 = a134[20]*pow(tau,t134[20])*pow(delta,d134[20]);
double phir = sum1 + exp(-delta)*sum2 + exp(-delta*delta)*sum3
+ exp(-delta*delta*delta)*sum4
+ exp(-delta*delta*delta*delta)*sum5;
return R*T*(phir + phi0);
}
double HFC134a::up() {
double sum1 = 0.0, sum2 = 0.0, sum3 = 0.0,
sum4 = 0.0, sum5 = 0.0;
double tau = Tc/T;
double delta = Rho/Roc;
double phi0t = b134[1]*tau + b134[2]
- 0.5*b134[3]*pow(tau,-0.5) - 0.75*b134[4]*pow(tau,-0.75);
int i;
for (i = 0; i<8; i++)
sum1 += a134[i]*t134[i]*pow(tau,t134[i])*pow(delta,d134[i]);
for (i = 8; i<11; i++)
sum2 += a134[i]*t134[i]*pow(tau,t134[i])*pow(delta,d134[i]);
for (i = 11; i<17; i++)
sum3 += a134[i]*t134[i]*pow(tau,t134[i])*pow(delta,d134[i]);
for (i = 17; i<20; i++)
sum4 += a134[i]*t134[i]*pow(tau,t134[i])*pow(delta,d134[i]);
sum5 = a134[20]*t134[20]*pow(tau,t134[20])*pow(delta,d134[20]);
double phirt = sum1 + exp(-delta)*sum2 + exp(-delta*delta)*sum3
+ exp(-delta*delta*delta)*sum4
+ exp(-delta*delta*delta*delta)*sum5;
return R*T*(phirt + phi0t) + m_energy_offset;
}
double HFC134a::Pp(){
double sum1 = 0.0, sum2 = 0.0, sum3 = 0.0,
sum4 = 0.0, sum5 = 0.0;
double tau = Tc/T;
double delta = Rho/Roc;
double phi0d = 1.0/delta;
int i;
for (i = 0; i<8; i++)
sum1 += a134[i]*pow(tau,t134[i])*d134[i]*pow(delta,d134[i]-1);
for (i = 8; i<11; i++)
sum2 += a134[i]*pow(tau,t134[i])*(d134[i] - delta)*pow(delta,d134[i]-1);
sum2 *= exp(-delta);
double dk = delta*delta;
for (i = 11; i<17; i++)
sum3 += a134[i]*pow(tau,t134[i])*(d134[i] - 2.0*dk)*pow(delta,d134[i]-1);
sum3 *= exp(-dk);
dk *= delta;
for (i = 17; i<20; i++)
sum4 += a134[i]*pow(tau,t134[i])*(d134[i] - 3.0*dk)*pow(delta,d134[i]-1);
sum4 *= exp(-dk);
dk *= delta;
sum5 = a134[20]*pow(tau,t134[20])*(d134[20] - 4.0*dk)*pow(delta,d134[20]-1);
sum5 *= exp(-dk);
double phird = sum1 + sum2 + sum3 + sum4 + sum5;
return R*T*delta*delta*Roc*(phird + phi0d);
}
double HFC134a::Psat(){
if ((T < Tmn) || (T > Tc)) set_Err(TempError);
double x1 = T/Tc;
double x2 = 1.0 - x1;
double f = -7.686556*x2 + 2.311791*pow(x2,1.5)
- 2.039554*x2*x2 - 3.583758*pow(x2,4);
return Pc*exp(f/x1);
}
/*
double HFC134a::dPsatdT(){
if ((T < Tmn) || (T > Tc)) set_Err(TempError);
double x1 = T/Tc;
double x2 = 1.0 - x1;
double f = -7.686556*x2 + 2.311791*pow(x2,1.5)
- 2.039554*x2*x2 - 3.583758*pow(x2,4);
double fp = -7.686556 + 1.5*2.311791*pow(x2,0.5)
- 2.0*2.039554*x2 - 4.0*3.583758*pow(x2,3);
return -Pc*exp(f/x1)*(fp/T + f/(x1*T));
}
*/
double HFC134a::ldens(){
if ((T < Tmn) || (T > Tc)) set_Err(TempError);
double x1 = T/Tc;
double x2 = 1.0 - x1;
return 518.2 + 884.13*pow(x2,1.0/3.0) + 485.84*pow(x2,2.0/3.0)
+ 193.29*pow(x2,10.0/3.0);
}
double HFC134a::Tcrit() {return 374.21;}
double HFC134a::Pcrit() {return 4059280.0;}
double HFC134a::Vcrit() {return 1.0/511.95;}
double HFC134a::Tmin() {return Tmn;}
double HFC134a::Tmax() {return Tmx;}
char * HFC134a::name() {
return (char *) m_name.c_str();
}
char * HFC134a::formula() {
return (char *) m_formula.c_str();
}
double HFC134a::MolWt() {return M;}
}