From 0bb6c2b307c58c3ce9d9c546896fd01ebed033d1 Mon Sep 17 00:00:00 2001 From: Ian Bell <ian.bell@nist.gov> Date: Thu, 4 Nov 2021 17:06:23 -0400 Subject: [PATCH] Fix Ar01 once more --- src/sat_Z_accuracy.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/sat_Z_accuracy.cpp b/src/sat_Z_accuracy.cpp index 38e4094..12bf79c 100644 --- a/src/sat_Z_accuracy.cpp +++ b/src/sat_Z_accuracy.cpp @@ -93,7 +93,7 @@ auto with_teqp_and_boost(const Model &model, double T, double rho, const VECTOR // Pressure for each phase via teqp in double precision w/ autodiff using tdx = TDXDerivatives<decltype(model), double, VECTOR>; double Zteqp = 1.0 + tdx::get_Ar01(model, T, rho, z); - double Ar01teqp = 1.0 + tdx::get_Ar01(model, T, rho, z); + double Ar01teqp = tdx::get_Ar01(model, T, rho, z); // Calculation with ridiculous number of digits of precision (the approximation of ground truth) using my_float = boost::multiprecision::number<boost::multiprecision::cpp_bin_float<200>>; @@ -183,13 +183,16 @@ int do_one(const std::string &RPname, const std::string &teqpname) double Tr = -1, Dr = -1; REDXdll(&(z[0]), Tr, Dr); - int itau = 0, idelta = 3; double tau = Tr / o.T, deltaL = o.rhoLmol_L / Dr, Ar03LRP = -1; - PHIXdll(itau, idelta, tau, deltaL, &(z[0]), Ar03LRP); + double pV = -1; PRESSdll(o.T, o.rhoVmol_L, &(z[0]), pV); double RV = -1; RMIX2dll(&(z[0]), RV); double ZVRP = pV/(o.rhoVmol_L*RV*o.T); // Units cancel (factor of 1000 in pV and RV) + + int itau = 0, idelta = 3; double tau = Tr / o.T, deltaL = o.rhoLmol_L / Dr, Ar03LRP = -1; double deltaV = o.rhoVmol_L / Dr, Ar03VRP = -1; + PHIXdll(itau, idelta, tau, deltaL, &(z[0]), Ar03LRP); PHIXdll(itau, idelta, tau, deltaV, &(z[0]), Ar03VRP); + double Ar01LRP = -1, Ar01VRP = -1; idelta = 1; PHIXdll(itau, idelta, tau, deltaL, &(z[0]), Ar01LRP); @@ -199,20 +202,21 @@ int do_one(const std::string &RPname, const std::string &teqpname) for (double Q : { 0, 1 }) { double rho = (Q == 0) ? rhoL : rhoV; auto c = with_teqp_and_boost(model, T, rho, z, is_propane); + double Zratiominus1 = c.Zteqp / c.Zexact - 1, Ar01ratiominus1 = c.Ar01teqp / c.Ar01exact - 1; outputs.push_back({ {"T / K", T}, {"Q", Q}, {"rho / mol/m^3", rho}, {"Zteqp", c.Zteqp}, {"Zexact", c.Zexact}, - {"ratio-1", c.Zteqp / c.Zexact - 1}, + {"ratio-1", Zratiominus1}, {"ZRP", ((Q == 0) ? ZLRP : ZVRP)}, {"Ar03teqp", c.Ar03teqp}, {"Ar03exact", c.Ar03exact}, {"ratio03-1", c.Ar03teqp / c.Ar03exact - 1}, {"Ar01teqp", c.Ar01teqp}, {"Ar01exact", c.Ar01exact}, - {"ratio01-1", c.Ar01teqp / c.Ar01exact - 1}, + {"ratio01-1", Ar01ratiominus1}, {"Ar03RP", ((Q == 0) ? Ar03LRP : Ar03VRP)}, {"Ar01RP", ((Q == 0) ? Ar01LRP : Ar01VRP)}, }); -- GitLab