R23 viscosity

Signed-off-by: Ian Bell <ian.h.bell@gmail.com>
This commit is contained in:
Ian Bell
2014-05-22 23:13:56 +02:00
parent 809ec14df2
commit f29c329b8c
8 changed files with 56 additions and 6 deletions

View File

@@ -433,12 +433,13 @@ protected:
if (viscosity.HasMember("hardcoded")){
std::string target = cpjson::get_string(viscosity,"hardcoded");
if (!target.compare("Water")){
fluid.transport.hardcoded = CoolProp::TransportPropertyData::VISCOSITY_HARDCODED_WATER;
return;
fluid.transport.hardcoded = CoolProp::TransportPropertyData::VISCOSITY_HARDCODED_WATER; return;
}
else if (!target.compare("Helium")){
fluid.transport.hardcoded = CoolProp::TransportPropertyData::VISCOSITY_HARDCODED_HELIUM;
return;
fluid.transport.hardcoded = CoolProp::TransportPropertyData::VISCOSITY_HARDCODED_HELIUM; return;
}
else if (!target.compare("R23")){
fluid.transport.hardcoded = CoolProp::TransportPropertyData::VISCOSITY_HARDCODED_R23; return;
}
else{
throw ValueError();

View File

@@ -140,6 +140,8 @@ long double HelmholtzEOSMixtureBackend::calc_viscosity(void)
return TransportRoutines::viscosity_water_hardcoded(*this);
case CoolProp::TransportPropertyData::VISCOSITY_HARDCODED_HELIUM:
return TransportRoutines::viscosity_helium_hardcoded(*this);
case CoolProp::TransportPropertyData::VISCOSITY_HARDCODED_R23:
return TransportRoutines::viscosity_R23_hardcoded(*this);
default:
throw ValueError(format("hardcoded viscosity type [%d] is invalid for fluid %s", components[0]->transport.hardcoded, name().c_str()));
}

View File

@@ -382,4 +382,37 @@ long double TransportRoutines::viscosity_helium_hardcoded(HelmholtzEOSMixtureBac
}
}
long double TransportRoutines::viscosity_R23_hardcoded(HelmholtzEOSMixtureBackend &HEOS)
{
double C1 = 1.3163, //
C2 = 0.1832,
DeltaGstar = 771.23,
rhoL = 32.174,
rhocbar = 7.5114,
Tc = 299.2793,
DELTAeta_max = 3.967,
k = 1.380658e-23,
N_A = 6.022137e23, // 1/mol
pi = 3.141592654, //
Ru = 8.31451,
molar_mass = 70.014;
double a[] = {0.4425728, -0.5138403, 0.1547566, -0.02821844, 0.001578286};
double e_k = 243.91, sigma = 0.4278;
double Tstar = HEOS.T()/e_k;
double logTstar = log(Tstar);
double Omega = exp(a[0]+a[1]*logTstar+a[2]*pow(logTstar,2)+a[3]*pow(logTstar,3)+a[4]*pow(logTstar,4));
double eta_DG = 1.25*0.021357*sqrt(molar_mass*HEOS.T())/(sigma*sigma*Omega); // uPa-s
double rhobar = HEOS.rhomolar()/1000; // [mol/L]
double eta_L = C2*(rhoL*rhoL)/(rhoL-rhobar)*sqrt(HEOS.T())*exp(rhobar/(rhoL-rhobar)*DeltaGstar/(Ru*HEOS.T()));
double chi = rhobar - rhocbar;
double tau = HEOS.T() - Tc;
double DELTAeta_c = 4*DELTAeta_max/((exp(chi)+exp(-chi))*(exp(tau)+exp(-tau)));
return (pow((rhoL-rhobar)/rhoL,C1)*eta_DG+pow(rhobar/rhoL,C1)*eta_L+DELTAeta_c)/1e6;
}
}; /* namespace CoolProp */

View File

@@ -85,6 +85,7 @@ public:
static long double viscosity_water_hardcoded(HelmholtzEOSMixtureBackend &HEOS);
static long double viscosity_helium_hardcoded(HelmholtzEOSMixtureBackend &HEOS);
static long double viscosity_R23_hardcoded(HelmholtzEOSMixtureBackend &HEOS);
static long double viscosity_hydrogen_higher_order_hardcoded(HelmholtzEOSMixtureBackend &HEOS);

View File

@@ -174,9 +174,15 @@ vel("R507A", "T", 243.15, "Q", 1, "V", 9.83e-6, 1e-2),
vel("R507A", "T", 333.15, "Q", 0, "V", 74.37e-6, 1e-2),
vel("R507A", "T", 333.15, "Q", 1, "V", 19.35e-6, 1e-2),
// From Arp, NIST, 1998
vel("Helium", "T", 3.6, "P", 0.180e6, "V", 3.745e-6, 1e-2),
vel("Helium", "T", 50, "P", 0.180e6, "V", 6.376e-6, 1e-2),
vel("Helium", "T", 400, "P", 0.180e6, "V", 24.29e-6, 1e-2),
// From Shan, ASHRAE, 2000
vel("R23", "T", 180, "Dmolar", 21097, "V", 353.88e-6, 1e-4),
vel("R23", "T", 420, "Dmolar", 7564, "V", 39.459e-6, 1e-4),
vel("R23", "T", 370, "Dmolar", 32.62, "V", 18.213e-6, 1e-4),
};
class ViscosityValidationFixture