Merge pull request #20 from aarondotter/main

adding more quantities to the eos test, including derivatives
This commit is contained in:
2025-03-06 15:04:05 -05:00
committed by GitHub
2 changed files with 40 additions and 18 deletions

View File

@@ -13,6 +13,7 @@
#include <iomanip> #include <iomanip>
#include <sstream> #include <sstream>
#include <string> #include <string>
#include <format>
/** /**
* @brief 2D array template alias. * @brief 2D array template alias.
@@ -193,18 +194,24 @@ namespace helmholtz
friend std::ostream& operator<<(std::ostream& os, const helmholtz::EOS& eos) { friend std::ostream& operator<<(std::ostream& os, const helmholtz::EOS& eos) {
os << "EOS Data:\n" << std::setw(20) << std::left; os << "EOS Data:\n" << std::setw(20) << std::left;
os << " Electron Fraction: " << eos.ye << "\n"; os << " Electron Fraction: " << std::format("{0:24.16e}",eos.ye) << "\n";
os << " Electron Chemical Potential: " << eos.etaele << "\n"; os << " Electron Chemical Potential: " << std::format("{0:24.16e}",eos.etaele) << "\n";
os << " Electron Number Density: " << eos.xnefer << "\n"; os << " Electron Number Density: " << std::format("{0:24.16e}",eos.xnefer) << "\n";
os << " Total Pressure: " << eos.ptot << "\n"; os << " Total Pressure: " << std::format("{0:24.16e}",eos.ptot) << "\n";
os << " Gas Pressure: " << eos.pgas << "\n"; os << " dPres/dRho: " << std::format("{0:24.16e}",eos.dpresdd) << "\n";
os << " Radiation Pressure: " << eos.prad << "\n"; os << " dPres/dT: " << std::format("{0:24.16e}",eos.dpresdt) << "\n";
os << " Total Energy: " << eos.etot << "\n"; os << " Gas Pressure: " << std::format("{0:24.16e}",eos.pgas) << "\n";
os << " Gas Energy: " << eos.egas << "\n"; os << " Radiation Pressure: " << std::format("{0:24.16e}",eos.prad) << "\n";
os << " Radiation Energy: " << eos.erad << "\n"; os << " Total Energy: " << std::format("{0:24.16e}",eos.etot) << "\n";
os << " Total Entropy: " << eos.stot << "\n"; os << " dEner/dRho: " << std::format("{0:24.16e}",eos.denerdd) << "\n";
os << " Gas Entropy: " << eos.sgas << "\n"; os << " dEner/dT: " << std::format("{0:24.16e}",eos.denerdt) << "\n";
os << " Radiation Entropy: " << eos.srad; os << " Gas Energy: " << std::format("{0:24.16e}",eos.egas) << "\n";
os << " Radiation Energy: " << std::format("{0:24.16e}",eos.erad) << "\n";
os << " Total Entropy: " << std::format("{0:24.16e}",eos.stot) << "\n";
os << " dEntr/dRho: " << std::format("{0:24.16e}",eos.dentrdd) << "\n";
os << " dEntr/dT: " << std::format("{0:24.16e}",eos.dentrdt) << "\n";
os << " Gas Entropy: " << std::format("{0:24.16e}",eos.sgas) << "\n";
os << " Radiation Entropy: " << std::format("{0:24.16e}",eos.srad);
return os; return os;
} }
}; };
@@ -356,4 +363,4 @@ namespace helmholtz
} }
#endif // HELM_H #endif // HELM_H

View File

@@ -62,9 +62,24 @@ TEST_F(eosTest, get_helm_EOS) {
EOS eos = get_helm_EOS(eos1, table); EOS eos = get_helm_EOS(eos1, table);
// std::cout << eos << std::endl; // std::cout << eos << std::endl;
EXPECT_DOUBLE_EQ(eos.ye, 0.875); //Check composition info
EXPECT_DOUBLE_EQ(eos.etaele, 23.04334823102155); EXPECT_DOUBLE_EQ( eos.ye, 8.75e-01);
// TODO: Add more tests for more values
//Check E, P, S and derivatives of each wrt Rho and T
EXPECT_DOUBLE_EQ( eos.etaele, 2.3043348231021554e+01);
EXPECT_DOUBLE_EQ( eos.etot, 1.1586558190936826e+17);
EXPECT_DOUBLE_EQ(eos.denerdd, 6.1893000468285858e+10);
EXPECT_DOUBLE_EQ(eos.denerdt, 1.2129708972542575e+08);
EXPECT_DOUBLE_EQ( eos.ptot, 6.9610135220017030e+22);
EXPECT_DOUBLE_EQ(eos.dpresdd, 1.0296440482849070e+17);
EXPECT_DOUBLE_EQ(eos.dpresdt, 7.7171347517311625e+13);
EXPECT_DOUBLE_EQ( eos.stot, 6.0647461970567346e+08);
EXPECT_DOUBLE_EQ(eos.dentrdd,-7.7171347517311645e+01);
EXPECT_DOUBLE_EQ(eos.dentrdt, 1.2129708972542577e+00);
const double abs_err = 1.0e-12;
// Maxwell relations, should always be zero
EXPECT_NEAR( eos.dse, 0, abs_err);
EXPECT_NEAR( eos.dpe, 0, abs_err);
EXPECT_NEAR( eos.dsp, 0, abs_err);
} }