Water viscosity hardcoded implemented; Fixed reference for CO2 - need to double check all transport references

Signed-off-by: Ian Bell <ian.h.bell@gmail.com>
This commit is contained in:
Ian Bell
2014-05-26 23:25:33 +02:00
parent 7a862f1a77
commit f3f41cbcbc
7 changed files with 113 additions and 23 deletions

View File

@@ -608,6 +608,16 @@ protected:
/// Parse the thermal conductivity data
void parse_thermal_conductivity(rapidjson::Value &conductivity, CoolPropFluid & fluid)
{
if (conductivity.HasMember("hardcoded")){
std::string target = cpjson::get_string(conductivity, "hardcoded");
if (!target.compare("Water")){
fluid.transport.hardcoded_conductivity = CoolProp::TransportPropertyData::CONDUCTIVITY_HARDCODED_WATER; return;
}
else{
throw ValueError(format("hardcoded residual conductivity term [%s] is not understood for fluid %s",target.c_str(), fluid.name.c_str()));
}
}
// Load the BibTeX key
fluid.transport.BibTeX_conductivity = cpjson::get_string(conductivity,"BibTeX");

View File

@@ -220,7 +220,7 @@ long double HelmholtzEOSMixtureBackend::calc_conductivity(void)
switch(components[0]->transport.hardcoded_conductivity)
{
case CoolProp::TransportPropertyData::CONDUCTIVITY_HARDCODED_WATER:
return TransportRoutines::viscosity_water_hardcoded(*this);
return TransportRoutines::conductivity_hardcoded_water(*this);
default:
throw ValueError(format("hardcoded viscosity type [%d] is invalid for fluid %s", components[0]->transport.hardcoded_conductivity, name().c_str()));
}

View File

@@ -571,9 +571,9 @@ long double TransportRoutines::conductivity_critical_hardcoded_R123(HelmholtzEOS
long double TransportRoutines::conductivity_dilute_hardcoded_CO2(HelmholtzEOSMixtureBackend &HEOS){
double e_k=251.196,Tstar;
double b[]={0.4226159,0.6280115,-0.5387661,0.6735941,0,0,-0.4362677,0.2255388};
double c[]={0,2.387869e-2,4.350794,-10.33404,7.981590,-1.940558};
double e_k = 251.196, Tstar;
double b[] = {0.4226159, 0.6280115, -0.5387661, 0.6735941, 0, 0, -0.4362677, 0.2255388};
double c[] = {0, 2.387869e-2, 4.350794, -10.33404, 7.981590, -1.940558};
//Vesovic Eq. 31 [no units]
double summer = 0;
@@ -624,5 +624,64 @@ long double TransportRoutines::conductivity_dilute_eta0_and_poly(HelmholtzEOSMix
}
}
long double TransportRoutines::conductivity_hardcoded_water(HelmholtzEOSMixtureBackend &HEOS){
double L[5][6] = {{1.60397357,-0.646013523,0.111443906,0.102997357,-0.0504123634,0.00609859258},
{2.33771842,-2.78843778,1.53616167,-0.463045512,0.0832827019,-0.00719201245},
{2.19650529,-4.54580785,3.55777244,-1.40944978,0.275418278,-0.0205938816},
{-1.21051378,1.60812989,-0.621178141,0.0716373224,0,0},
{-2.7203370,4.57586331,-3.18369245,1.1168348,-0.19268305,0.012913842}};
double lambdabar_0,lambdabar_1,lambdabar_2,rhobar,Tbar,sum,R_Water;
double Tstar=647.096,rhostar=322,pstar=22064000,lambdastar=1e-3,mustar=1e-6;
double tau,xi;
int i,j;
Tbar = HEOS.T()/Tstar;
rhobar = HEOS.keyed_output(CoolProp::iDmass)/rhostar;
// Dilute gas contribution
lambdabar_0 = sqrt(Tbar)/(2.443221e-3+1.323095e-2/Tbar+6.770357e-3/pow(Tbar,2)-3.454586e-3/pow(Tbar,3)+4.096266e-4/pow(Tbar,4));
sum=0;
for (i=0;i<=4;i++){
for (j=0;j<=5;j++){
sum+=L[i][j]*powInt(1.0/Tbar-1.0,i)*powInt(rhobar-1,j);
}
}
// Finite density contribution
lambdabar_1=exp(rhobar*sum);
double nu=0.630,GAMMA =177.8514,gamma=1.239,xi_0=0.13,Lambda_0=0.06,Tr_bar=1.5,tau_ref = Tr_bar*Tstar/HEOS.T(),
qd_bar=1/0.4,pi=3.141592654, delta = HEOS.delta(), R=461.51805;//J/kg/K
tau=1/Tbar;
double drhodp = 1/(R*HEOS.T()*(1+2*rhobar*HEOS.dalphar_dDelta()+rhobar*rhobar*HEOS.d2alphar_dDelta2()));
double drhobar_dpbar = pstar/rhostar*drhodp;
double drhodp_Trbar = 1/(R*Tr_bar*Tstar*(1+2*rhobar*HEOS.calc_alphar_deriv_nocache(0,1,HEOS.mole_fractions,1/Tr_bar,delta)+delta*delta*HEOS.calc_alphar_deriv_nocache(0,2,HEOS.mole_fractions,1/Tr_bar,delta)));
double drhobar_dpbar_Trbar = pstar/rhostar*drhodp_Trbar;
double cp = HEOS.cpmolar(); // [J/mol/K]
double cv = HEOS.cvmolar(); // [J/mol/K]
double cpbar = cp/8.31447215; //[-]
double mubar = HEOS.viscosity()/mustar;
double DELTAchibar_T = rhobar*(drhobar_dpbar-drhobar_dpbar_Trbar*Tr_bar/Tbar);
if (DELTAchibar_T<0)
xi = 0;
else
xi = xi_0*pow(DELTAchibar_T/Lambda_0,nu/gamma);
double y = qd_bar*xi;
double Z;
double kappa = cp/cv;
if (y < 1.2e-7)
Z = 0;
else
Z = 2/(pi*y)*(((1-1/kappa)*atan(y)+y/kappa)-(1-exp(-1/(1/y+y*y/3/rhobar/rhobar))));
lambdabar_2 = GAMMA*rhobar*cpbar*Tbar/mubar*Z;
return (lambdabar_0*lambdabar_1+lambdabar_2)*lambdastar;
}
}; /* namespace CoolProp */

View File

@@ -166,6 +166,9 @@ public:
static long double conductivity_dilute_eta0_and_poly(HelmholtzEOSMixtureBackend &HEOS);
static long double conductivity_residual_polynomial_and_exponential(HelmholtzEOSMixtureBackend &HEOS);
static long double conductivity_hardcoded_water(HelmholtzEOSMixtureBackend &HEOS);
}; /* class TransportRoutines */
}; /* namespace CoolProp */

View File

@@ -129,17 +129,17 @@ vel("R152A", "T", 384, "Dmass", 504.51, "V", 43.29e-6, 5e-3),
vel("R152A", "T", 384, "Dmass", 239.35, "V", 21.01e-6, 10e-3),
// Huber, JPCRD, 2008 and IAPWS
vel("Water", "T", 298.15, "Dmass", 998, "V", 889.735100e-6, 1e-3),
vel("Water", "T", 298.15, "Dmass", 1200, "V", 1437.649467e-6, 1e-3),
vel("Water", "T", 373.15, "Dmass", 1000, "V", 307.883622e-6, 1e-3),
vel("Water", "T", 433.15, "Dmass", 1, "V", 14.538324e-6, 1e-3),
vel("Water", "T", 433.15, "Dmass", 1000, "V", 217.685358e-6, 1e-3),
vel("Water", "T", 873.15, "Dmass", 1, "V", 32.619287e-6, 1e-3),
vel("Water", "T", 873.15, "Dmass", 100, "V", 35.802262e-6, 1e-3),
vel("Water", "T", 873.15, "Dmass", 600, "V", 77.430195e-6, 1e-3),
vel("Water", "T", 1173.15, "Dmass", 1, "V", 44.217245e-6, 1e-3),
vel("Water", "T", 1173.15, "Dmass", 100, "V", 47.640433e-6, 1e-3),
vel("Water", "T", 1173.15, "Dmass", 400, "V", 64.154608e-6, 1e-3),
vel("Water", "T", 298.15, "Dmass", 998, "V", 889.735100e-6, 1e-8),
vel("Water", "T", 298.15, "Dmass", 1200, "V", 1437.649467e-6, 1e-8),
vel("Water", "T", 373.15, "Dmass", 1000, "V", 307.883622e-6, 1e-8),
vel("Water", "T", 433.15, "Dmass", 1, "V", 14.538324e-6, 1e-8),
vel("Water", "T", 433.15, "Dmass", 1000, "V", 217.685358e-6, 1e-8),
vel("Water", "T", 873.15, "Dmass", 1, "V", 32.619287e-6, 1e-8),
vel("Water", "T", 873.15, "Dmass", 100, "V", 35.802262e-6, 1e-8),
vel("Water", "T", 873.15, "Dmass", 600, "V", 77.430195e-6, 1e-8),
vel("Water", "T", 1173.15, "Dmass", 1, "V", 44.217245e-6, 1e-8),
vel("Water", "T", 1173.15, "Dmass", 100, "V", 47.640433e-6, 1e-8),
vel("Water", "T", 1173.15, "Dmass", 400, "V", 64.154608e-6, 1e-8),
// Quinones-Cisneros, JPCRD, 2012
vel("SF6", "T", 300, "Dmass", 1e-14, "V", 15.2887e-6, 1e-4),
@@ -346,13 +346,13 @@ vel("R123", "T", 430, "Dmass", 996.35, "L", 45.62e-3, 1e-3),
vel("R123", "T", 430, "Dmass", 166.9, "L", 21.03e-3, 1e-3),
// From Vesovic, JPCRD, 1990
vel("CO2", "T", 220, "Dmass", 2.440, "L", 10.90e-3, 1e-2),
vel("CO2", "T", 300, "Dmass", 1.773, "L", 16.77e-3, 1e-2),
vel("CO2", "T", 800, "Dmass", 0.662, "L", 56.65e-3, 1e-2),
vel("CO2", "T", 304, "Dmass", 254.3205, "L", 42.52e-3, 1e-2),
vel("CO2", "T", 220, "Dmass", 1194.86, "L", 187.50e-3, 1e-2),
vel("CO2", "T", 300, "Dmass", 1029.27, "L", 137.61e-3, 1e-2),
vel("CO2", "T", 800, "Dmass", 407.828, "L", 78.47e-3, 1e-2),
vel("CO2", "T", 220, "Dmass", 2.440, "L", 10.90e-3, 1e-4),
vel("CO2", "T", 300, "Dmass", 1.773, "L", 16.77e-3, 1e-4),
vel("CO2", "T", 800, "Dmass", 0.662, "L", 56.65e-3, 1e-4),
vel("CO2", "T", 304, "Dmass", 254.3205, "L", 42.52e-3, 1e-4),
vel("CO2", "T", 220, "Dmass", 1194.86, "L", 187.50e-3, 1e-4),
vel("CO2", "T", 300, "Dmass", 1029.27, "L", 137.61e-3, 1e-4),
vel("CO2", "T", 800, "Dmass", 407.828, "L", 78.47e-3, 1e-4),
// From Friend, JPCRD, 1991
vel("Ethane", "T", 100, "Dmass", 1e-13, "L", 3.46e-3, 1e-2),
@@ -385,6 +385,20 @@ vel("Air", "T", 100, "Dmolar", 28000, "L", 119.221e-3, 1e-4),
vel("Air", "T", 200, "Dmolar", 10000, "L", 35.3185e-3, 1e-4),
vel("Air", "T", 300, "Dmolar", 5000, "L", 32.6062e-3, 1e-4),
vel("Air", "T", 132.64, "Dmolar", 10400, "L", 75.6231e-3, 1e-4),
// Huber, JPCRD, 2012
vel("Water", "T", 298.15, "Dmass", 1e-14, "L", 18.4341883e-3, 1e-6),
vel("Water", "T", 298.15, "Dmass", 998, "L", 607.712868e-3, 1e-6),
vel("Water", "T", 298.15, "Dmass", 1200, "L", 799.038144e-3, 1e-6),
vel("Water", "T", 873.15, "Dmass", 1e-14, "L", 79.1034659e-3, 1e-6),
vel("Water", "T", 647.35, "Dmass", 1, "L", 51.9298924e-3, 1e-6),
vel("Water", "T", 647.35, "Dmass", 122, "L", 130.922885e-3, 1e-6),
vel("Water", "T", 647.35, "Dmass", 222, "L", 367.787459e-3, 1e-6),
vel("Water", "T", 647.35, "Dmass", 272, "L", 757.959776e-3, 1e-6),
vel("Water", "T", 647.35, "Dmass", 322, "L", 1443.75556e-3, 1e-6),
vel("Water", "T", 647.35, "Dmass", 372, "L", 650.319402e-3, 1e-6),
vel("Water", "T", 647.35, "Dmass", 422, "L", 448.883487e-3, 1e-6),
vel("Water", "T", 647.35, "Dmass", 750, "L", 600.961346e-3, 1e-6),
};
TEST_CASE_METHOD(TransportValidationFixture, "Compare thermal conductivities against published data", "[conductivity]")