18#if defined(ENABLE_CATCH)
20# include <catch2/catch_all.hpp>
34TEST_CASE(
"P+X supercritical-cold Nitrogen reliability (was failing)",
"[PXflash]") {
40 const State pt = GENERATE(State{86.35, 4.754e6}, State{90.20, 7.768e6});
48 const double s = ref->smolar();
49 const double rho = ref->rhomolar();
50 REQUIRE(std::isfinite(s));
51 REQUIRE(std::isfinite(rho));
55 CHECK(wrk->T() == Catch::Approx(pt.T).epsilon(1e-5));
56 CHECK(wrk->rhomolar() == Catch::Approx(rho).epsilon(1e-5));
64TEST_CASE(
"P+X single-phase round-trips (PH/PS/PU)",
"[PXflash]") {
72 const Case c = GENERATE(Case{
"Water", 600.0, 1.0e5,
"Water gas"},
73 Case{
"Water", 320.0, 5.0e6,
"Water liquid"},
74 Case{
"CarbonDioxide", 320.0, 1.0e7,
"CO2 supercrit"},
75 Case{
"R134a", 250.0, 3.0e5,
"R134a liquid"},
76 Case{
"R134a", 350.0, 2.0e5,
"R134a gas"});
77 CAPTURE(c.label, c.fluid, c.T, c.p);
83 const double h = ref->hmolar();
84 const double s = ref->smolar();
85 const double u = ref->umolar();
86 const double rho = ref->rhomolar();
87 REQUIRE(std::isfinite(h));
88 REQUIRE(std::isfinite(s));
89 REQUIRE(std::isfinite(u));
93 CHECK(wrk->T() == Catch::Approx(c.T).epsilon(1e-5));
94 CHECK(wrk->rhomolar() == Catch::Approx(rho).epsilon(1e-5));
98 CHECK(wrk->T() == Catch::Approx(c.T).epsilon(1e-5));
99 CHECK(wrk->rhomolar() == Catch::Approx(rho).epsilon(1e-5));
103 CHECK(wrk->T() == Catch::Approx(c.T).epsilon(1e-5));
104 CHECK(wrk->rhomolar() == Catch::Approx(rho).epsilon(1e-5));
124TEST_CASE(
"P+X high-pressure quantum-fluid reliability (was failing)",
"[PXflash]") {
137 GENERATE(Case{
"OrthoHydrogen", 90.86892307692308, 404007839.5225975}, Case{
"Deuterium", 79.32923076923078, 448875035.8934926},
138 Case{
"OrthoDeuterium", 79.32923076923078, 448875035.8934926}, Case{
"ParaDeuterium", 79.32923076923078, 448875035.8934926});
139 CAPTURE(c.fluid, c.T, c.p);
145 const double h = ref->hmolar();
146 const double s = ref->smolar();
147 const double u = ref->umolar();
148 const double rho = ref->rhomolar();
149 REQUIRE(std::isfinite(rho));
153 CHECK(wrk->T() == Catch::Approx(c.T).epsilon(1e-5));
154 CHECK(wrk->rhomolar() == Catch::Approx(rho).epsilon(1e-5));
158 CHECK(wrk->T() == Catch::Approx(c.T).epsilon(1e-5));
159 CHECK(wrk->rhomolar() == Catch::Approx(rho).epsilon(1e-5));
163 CHECK(wrk->T() == Catch::Approx(c.T).epsilon(1e-5));
164 CHECK(wrk->rhomolar() == Catch::Approx(rho).epsilon(1e-5));