Skip to content

Commit

Permalink
Fixing CarbonDioxide
Browse files Browse the repository at this point in the history
  • Loading branch information
andrsd committed Aug 10, 2024
1 parent 64085f4 commit ca4919a
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 92 deletions.
4 changes: 2 additions & 2 deletions include/fprops/carbon_dioxide.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ class CarbonDioxide : public Helmholtz {
ResidualGaussian<double> gauss;
ResidualNonAnalytic<double> noan;

LennardJones<double> eta_0;
CollisionIntegral<double> eta_0;
ModifiedBatshinskiHildebrand<double> eta_r;
ModifiedBatshinskiHildebrand<double> lambda_r;
PolynomialAndExponential<double> lambda_r;
};

} // namespace fprops
65 changes: 34 additions & 31 deletions src/carbon_dioxide.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,34 +55,42 @@ CarbonDioxide::CarbonDioxide() :
{ 10, 10, 12.5 },
{ 275, 275, 275 }),

eta_0(0.15178953643112786,
MOLAR_MASS,
eta_0(1.5178953643112785e-07,
0.0440098,
251.196,
1.,
{ 0.235156, -0.491266, 0.05211155, 0.05347906, -0.01537102 }),
eta_r({ 1.9036541208525784,
15.7384720473354,
0.14207809578440784,
0.0679058431241662,
-0.030732988514867565 },
{ 0, 0, 3, 0, 1 },
1e-09,
{ 0.235156, -0.491266, 0.05211155, 0.05347906, -0.01537102 },
{ 0, 1, 2, 3, 4 }),
eta_r({ 1.9036541208525784e-06,
1.57384720473354e-05,
1.4207809578440784e-07,
6.79058431241662e-08,
-3.0732988514867565e-08 },
{ 1, 2, 6, 8, 8 },
{ 0, 0, 3, 0, 1 },
{ 0, 0, 0, 0, 0 },
{ 1, 1, 1, 1, 0 }),
lambda_r({ 37.0597124660408,
0.7696647124242399,
7.5538113451464,
-32.416436589336,
78.894098855904,
17.7830586854928,
107.44756315137599,
318.39746259479995,
-0.82691726160072,
2.0846013855224798e-02 },
{ 1, 1, 1, 1, 0 },
{ 0 },
{ 1 },
{ 0 },
{ 1 },
{ 0 },
{ 1 },
{ 0 }),
lambda_r({ 0.0370597124660408,
0.0007696647124242399,
0.0075538113451464,
-0.032416436589336,
0.078894098855904,
0.0177830586854928,
0.10744756315137599,
0.31839746259479995,
-0.00082691726160072,
2.0846013855224798e-05 },
{ 0.0, 0.0, -1.5, 0.0, -1.0, -1.5, -1.5, -1.5, -3.5, -5.5 },
{ 1.0, 5.0, 1.0, 1.0, 2.0, 0.0, 5.0, 9.0, 0.0, 0.0 },
{ 0, 0, 0, 2, 2, 2, 2, 2, 2, 2 },
{ 0, 0, 0, 5, 5, 5, 5, 5, 5, 5 })
{ 0, 0, 0, 5, 5, 5, 5, 5, 5, 5 },
{ 0, 0, 0, 2, 2, 2, 2, 2, 2, 2 })
{
}

Expand Down Expand Up @@ -175,21 +183,16 @@ CarbonDioxide::mu_from_rho_T(double rho, double T) const
{
const double d = delta(rho);
const double t = tau(T);

double eta = this->eta_0.value(T) + this->eta_r.value(d, t);
// [Pa-s]
return eta * 1.0e-6;
return this->eta_0.value(T) + this->eta_r.value(d, t);
}

double
CarbonDioxide::k_from_rho_T(double rho, double T) const
{
const double d = delta(rho);
const double t = tau(T);

double lambda = this->lambda_r.value(d, t);
// [W/(m-K)]
return lambda * 1.0e-3;
// FIXME: add critical part
return this->lambda_r.value(t, d);
}

} // namespace fprops
108 changes: 49 additions & 59 deletions test/src/carbon_dioxide_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,106 +5,96 @@ using namespace fprops;

namespace {

double p = 1e6;
double T = 280;
double rho = 20.19930913628047;
double v = 1. / rho;
double h = 480394.6994348873;
double u = 430888.0557544915;
double s = 2225.7418424216157;
double c = 252.3265654013213;
double cv = 670.919849374081;
double cp = 925.1800875340849;
double mu = 1.4126691599927136e-5;
double k = 0.01587080098501899;

// T = 280 K, p = 1 MPa
State gold1 = { 430888.05580697849,
0.049506644012416195,
20.199309000812121,
1e6,
280,
1.4150532169060509e-05,
925.17988930107481,
670.91985675762839,
2225.7418437948568,
0.015727797767537487,
480394.69981939468,
252.32654137014907 };
State gold1 = { u, v, rho, p, T, mu, cp, cv, s, k, h, c };

} // namespace

TEST(CarbonDioxide, rho_T)
{
CarbonDioxide fp;

double rho = 20.199309000812121;
double T = 280;
auto state = fp.rho_T(rho, T);

EXPECT_DOUBLE_EQ(state.rho, gold1.rho);
EXPECT_DOUBLE_EQ(state.T, gold1.T);
EXPECT_DOUBLE_EQ(state.p, gold1.p);
EXPECT_NEAR(state.p, gold1.p, 1e-2);
EXPECT_DOUBLE_EQ(state.u, gold1.u);
EXPECT_DOUBLE_EQ(state.cv, gold1.cv);
EXPECT_DOUBLE_EQ(state.cp, gold1.cp);
EXPECT_DOUBLE_EQ(state.mu, gold1.mu);
EXPECT_DOUBLE_EQ(state.k, gold1.k);
EXPECT_NEAR(state.cv, gold1.cv, 1e-5);
EXPECT_NEAR(state.cp, gold1.cp, 2e-3);
EXPECT_NEAR(state.mu, gold1.mu, 1e-7);
EXPECT_NEAR(state.k, gold1.k, 3e-4);
EXPECT_DOUBLE_EQ(state.v, gold1.v);
EXPECT_DOUBLE_EQ(state.s, gold1.s);
EXPECT_DOUBLE_EQ(state.h, gold1.h);
EXPECT_DOUBLE_EQ(state.w, gold1.w);
EXPECT_NEAR(state.h, gold1.h, 5e-3);
EXPECT_NEAR(state.w, gold1.w, 1e-4);
}

TEST(CarbonDioxide, rho_p)
{
CarbonDioxide fp;

double rho = 20.199309000812121;
double p = 1e6;
auto state = fp.rho_p(rho, p);

EXPECT_DOUBLE_EQ(state.rho, gold1.rho);
EXPECT_DOUBLE_EQ(state.T, gold1.T);
EXPECT_DOUBLE_EQ(state.p, gold1.p);
EXPECT_DOUBLE_EQ(state.u, gold1.u);
EXPECT_DOUBLE_EQ(state.cv, gold1.cv);
EXPECT_DOUBLE_EQ(state.cp, gold1.cp);
EXPECT_DOUBLE_EQ(state.mu, gold1.mu);
EXPECT_DOUBLE_EQ(state.k, gold1.k);
EXPECT_NEAR(state.T, gold1.T, 1e-5);
EXPECT_NEAR(state.p, gold1.p, 1e-9);
EXPECT_NEAR(state.u, gold1.u, 2e-3);
EXPECT_NEAR(state.cv, gold1.cv, 1e-5);
EXPECT_NEAR(state.cp, gold1.cp, 2e-3);
EXPECT_NEAR(state.mu, gold1.mu, 1e-7);
EXPECT_NEAR(state.k, gold1.k, 3e-4);
EXPECT_DOUBLE_EQ(state.v, gold1.v);
EXPECT_DOUBLE_EQ(state.s, gold1.s);
EXPECT_DOUBLE_EQ(state.h, gold1.h);
EXPECT_DOUBLE_EQ(state.w, gold1.w);
EXPECT_NEAR(state.s, gold1.s, 5e-6);
EXPECT_NEAR(state.h, gold1.h, 5e-3);
EXPECT_NEAR(state.w, gold1.w, 1e-4);
}

TEST(CarbonDioxide, p_T)
{
CarbonDioxide fp;

double T = 280;
double p = 1e6;
auto state = fp.p_T(p, T);

EXPECT_DOUBLE_EQ(state.rho, gold1.rho);
EXPECT_NEAR(state.rho, gold1.rho, 2e-7);
EXPECT_DOUBLE_EQ(state.T, gold1.T);
EXPECT_DOUBLE_EQ(state.p, gold1.p);
EXPECT_DOUBLE_EQ(state.u, gold1.u);
EXPECT_DOUBLE_EQ(state.cv, gold1.cv);
EXPECT_DOUBLE_EQ(state.cp, gold1.cp);
EXPECT_DOUBLE_EQ(state.mu, gold1.mu);
EXPECT_DOUBLE_EQ(state.k, gold1.k);
EXPECT_DOUBLE_EQ(state.v, gold1.v);
EXPECT_DOUBLE_EQ(state.s, gold1.s);
EXPECT_DOUBLE_EQ(state.h, gold1.h);
EXPECT_DOUBLE_EQ(state.w, gold1.w);
EXPECT_NEAR(state.p, gold1.p, 1e-2);
EXPECT_NEAR(state.u, gold1.u, 1e-4);
EXPECT_NEAR(state.cv, gold1.cv, 1e-5);
EXPECT_NEAR(state.cp, gold1.cp, 2e-3);
EXPECT_NEAR(state.mu, gold1.mu, 1e-7);
EXPECT_NEAR(state.k, gold1.k, 3e-4);
EXPECT_NEAR(state.v, gold1.v, 1e-9);
EXPECT_NEAR(state.s, gold1.s, 2e-6);
EXPECT_NEAR(state.h, gold1.h, 5e-3);
EXPECT_NEAR(state.w, gold1.w, 1e-4);
}

TEST(CarbonDioxide, v_u)
{
CarbonDioxide fp;

double v = 0.049506644012416195;
double u = 430888.05580697849;
auto state = fp.v_u(v, u);

EXPECT_DOUBLE_EQ(state.rho, gold1.rho);
EXPECT_DOUBLE_EQ(state.T, gold1.T);
EXPECT_DOUBLE_EQ(state.p, gold1.p);
EXPECT_NEAR(state.p, gold1.p, 1e-2);
EXPECT_DOUBLE_EQ(state.u, gold1.u);
EXPECT_DOUBLE_EQ(state.cv, gold1.cv);
EXPECT_DOUBLE_EQ(state.cp, gold1.cp);
EXPECT_DOUBLE_EQ(state.mu, gold1.mu);
EXPECT_DOUBLE_EQ(state.k, gold1.k);
EXPECT_NEAR(state.cv, gold1.cv, 1e-5);
EXPECT_NEAR(state.cp, gold1.cp, 2e-3);
EXPECT_NEAR(state.mu, gold1.mu, 1e-7);
EXPECT_NEAR(state.k, gold1.k, 3e-4);
EXPECT_DOUBLE_EQ(state.v, gold1.v);
EXPECT_DOUBLE_EQ(state.s, gold1.s);
EXPECT_DOUBLE_EQ(state.h, gold1.h);
EXPECT_DOUBLE_EQ(state.w, gold1.w);
EXPECT_NEAR(state.h, gold1.h, 5e-3);
EXPECT_NEAR(state.w, gold1.w, 1e-4);
}

0 comments on commit ca4919a

Please sign in to comment.