added HFC134a

This commit is contained in:
Dave Goodwin 2005-01-14 13:41:37 +00:00
parent 1108c3ae11
commit a3b92eb61f
11 changed files with 163 additions and 115 deletions

View file

@ -20,3 +20,6 @@ def Hydrogen():
def Oxygen():
return importPhase('liquidvapor.cti','oxygen')
def HFC134a():
return importPhase('liquidvapor.cti','hfc134a')

View file

@ -71,15 +71,34 @@ namespace Cantera {
th.getChemPotentials(mu.begin());
doublereal rt = GasConstant * th.temperature();
int k;
if (th.nSpecies() > 1) {
sprintf(p, "\n X Y Chem. Pot. / RT \n");
s += p;
sprintf(p, " ------------- ------------ ------------\n");
s += p;
for (k = 0; k < kk; k++) {
sprintf(p, "%18s %12.6g %12.6g %12.6g\n",
th.speciesName(k).c_str(), x[k], y[k], mu[k]/rt);
if (show_thermo) {
sprintf(p, "\n X "
" Y Chem. Pot. / RT \n");
s += p;
sprintf(p, " ------------- "
"------------ ------------\n");
s += p;
for (k = 0; k < kk; k++) {
sprintf(p, "%18s %12.6g %12.6g %12.6g\n",
th.speciesName(k).c_str(), x[k], y[k], mu[k]/rt);
s += p;
}
}
else {
sprintf(p, "\n X"
"Y\n");
s += p;
sprintf(p, " -------------"
" ------------\n");
s += p;
for (k = 0; k < kk; k++) {
sprintf(p, "%18s %12.6g %12.6g\n",
th.speciesName(k).c_str(), x[k], y[k]);
s += p;
}
}
}
return s;
}

View file

@ -1,5 +1,3 @@
try:
from MixMaster import MixMaster
o = MixMaster()
except:
i = input("MixMaster failed to start!")
from MixMaster import MixMaster
o = MixMaster()

2
configure vendored
View file

@ -279,7 +279,7 @@ CXX=${CXX:=g++}
CC=${CC:=gcc}
# C++ compiler flags
CXXFLAGS=${CXXFLAGS:="-O2 -Wall"}
CXXFLAGS=${CXXFLAGS:="-O2 -g -Wall"}
# the C++ flags required for linking. Uncomment if additional flags
# need to be passed to the linker.

View file

@ -5,7 +5,7 @@
# package, which in turn take most of the equations of state from the
# compilation 'Thermodynamic Properties in SI', by W. C. Reynolds.
# the substance flag corresponds to the
liquid_vapor(name = "water",
elements = " O H ",
species = "H2O",
@ -41,6 +41,13 @@ liquid_vapor(name = "oxygen",
initial_state = state(temperature = 300.0,
pressure = OneAtm) )
liquid_vapor(name = "hfc134a",
elements = " C F H ",
species = "C2F4H2",
substance_flag = 5,
initial_state = state(temperature = 300.0,
pressure = OneAtm) )
#------------------------------------------------------------------
# Note that these species definitions are used ONLY to set the
@ -109,3 +116,15 @@ species(name = "H2",
)
)
# these thermo values result in h = 0, s = 0 for sat. liquid at 273.15
# K. This convention is not consistent with that followed elsewhere
# in Cantera, but data on the heat of formation of c2f4h2 was not
# found.
species(name = "C2F4H2",
atoms = " C:2 F:4 H:2 ",
thermo = const_cp(
t0 = 273.15,
h0 = 23083414.8686,
s0 = 167025.466
)
)

View file

@ -1,3 +1,4 @@
#define IEEE_8087
#define Arith_Kind_ASL 1
#define IEEE_MC68k
#define Arith_Kind_ASL 2
#define Double_Align
#define NANCHECK

View file

@ -3,16 +3,18 @@
#include "HFC134a.h"
#include <math.h>
const double
M = 102.032,
Tmn = 170.0,
Tmx = 455.0,
Tc = 374.18,
Pc = 4056290.0,
Roc = 508.0,
R = 81.48885644;
namespace tpx {
const double a134[] = {
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,
@ -34,77 +36,77 @@ const double a134[] = {
0.6995038e-2,
-0.1452184e-1,
-0.1285458e-3
};
};
const double t134[] = {
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
};
1.0, 5.0, 5.0, 6.0, 10.0, 10.0, 10.0, 18.0, 22.0, 50.0
};
const int d134[] = {
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[] = {
const double b134[] = {
-1.019535,
9.047135,
9.047135,
-1.629789,
-9.723916,
-3.927170
};
};
double HFC134a::fp() {
double HFC134a::fp() {
double sum1 = 0.0, sum2 = 0.0, sum3 = 0.0,
sum4 = 0.0, sum5 = 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);
+ 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]);
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]);
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]);
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;
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 HFC134a::up() {
double sum1 = 0.0, sum2 = 0.0, sum3 = 0.0,
sum4 = 0.0, sum5 = 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);
- 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]);
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]);
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]);
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);
}
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 HFC134a::Pp(){
double sum1 = 0.0, sum2 = 0.0, sum3 = 0.0,
sum4 = 0.0, sum5 = 0.0;
sum4 = 0.0, sum5 = 0.0;
double tau = Tc/T;
double delta = Rho/Roc;
@ -112,61 +114,63 @@ double HFC134a::Pp(){
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);
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 += 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 += 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;
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::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::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 "HFC-134a";}
char * HFC134a::formula() {return "C2F4H2";}
double HFC134a::MolWt() {return M;}
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 "HFC-134a";}
char * HFC134a::formula() {return "C2F4H2";}
double HFC134a::MolWt() {return M;}

View file

@ -3,14 +3,15 @@
#include "sub.h"
class HFC134a : public Substance{
public:
namespace tpx {
class HFC134a : public Substance{
public:
HFC134a(){}
~HFC134a(){}
~HFC134a(){}
double MolWt();
double Tcrit();
double Pcrit();
double Pcrit();
double Vcrit();
double Tmin();
double Tmax();
@ -21,11 +22,12 @@ public:
double fp();
double up();
double sp()
{ return (up() - fp())/T; }
{ return (up() - fp())/T + m_entropy_offset; }
double Psat();
// double dPsatdT();
private:
// double dPsatdT();
private:
double ldens();
};
}
#endif // ! HFC134_H

View file

@ -8,7 +8,7 @@ OBJDIR = .
CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT)
COBJS = Methane.o Nitrogen.o Oxygen.o Water.o Hydrogen.o RedlichKwong.o \
lk.o Sub.o utils.o
lk.o Sub.o utils.o HFC134a.o
FOBJS =

View file

@ -1,7 +1,7 @@
#ifndef TPX_SUBS_H
#define TPX_SUBS_H
// #include "HFC134a.h"
#include "HFC134a.h"
#include "Hydrogen.h"
#include "Methane.h"
#include "Nitrogen.h"

View file

@ -22,6 +22,8 @@ namespace tpx {
return new hydrogen;
else if (lcname == "oxygen")
return new oxygen;
else if (lcname == "hfc134a")
return new HFC134a;
else if (lcname == "rk")
return new RedlichKwong;
}
@ -37,8 +39,8 @@ namespace tpx {
return new hydrogen;
else if (isub == 4)
return new oxygen;
// else if (isub == 5)
// return new HFC134a;
else if (isub == 5)
return new HFC134a;
else if (isub == 6)
return new RedlichKwong;
else