Skip to content

Commit

Permalink
Automatically skip consistency tests of unimplemented array methods
Browse files Browse the repository at this point in the history
  • Loading branch information
speth committed Jun 3, 2022
1 parent bf44fe6 commit 7170ba6
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 55 deletions.
33 changes: 0 additions & 33 deletions test/data/consistency-cases.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ ideal-gas-h2o2:
redlich-kwong:
setup:
file: co2_RK_example.yaml
known-failures:
cp_eq_sum_cpk_Xk: getPartialMolarCp not implemented
states:
- {T: 300, P: 101325, X: {CO2: 0.7, CH4: 0.2, H2O: 0.1}}
- {T: 320, P: 200 bar, X: {CO2: 0.3, CH4: 0.5, H2O: 0.2}}
Expand All @@ -20,8 +18,6 @@ redlich-kwong:
peng-robinson:
setup:
file: co2_PR_example.yaml
known-failures:
cp_eq_sum_cpk_Xk: getPartialMolarCp not implemented
states:
- {T: 300, P: 101325, X: {CO2: 0.7, CH4: 0.2, H2O: 0.1}}
- {T: 320, P: 200 bar, X: {CO2: 0.3, CH4: 0.5, H2O: 0.2}}
Expand Down Expand Up @@ -49,8 +45,6 @@ ideal-condensed-1:
file: thermo-models.yaml
phase: IdealSolidSolnPhase
known-failures:
hk_eq_uk_plus_P_times_vk: getPartialMolarIntEnergies is not implemented
u_eq_sum_uk_Xk: getPartialMolarIntEnergies is not implemented
g_eq_h_minus_Ts: "Inconsistent result when P != 1 atm. See GitHub Issue #1301"
g_eq_sum_gk_Xk: "Inconsistent result when P != 1 atm. See GitHub Issue #1301"
states:
Expand All @@ -64,8 +58,6 @@ ideal-condensed-2:
file: thermo-models.yaml
phase: IdealSolidSolnPhase2
known-failures:
hk_eq_uk_plus_P_times_vk: getPartialMolarIntEnergies is not implemented
u_eq_sum_uk_Xk: getPartialMolarIntEnergies is not implemented
g_eq_h_minus_Ts: "Inconsistent result when P != 1 atm. See GitHub Issue #1301"
g_eq_sum_gk_Xk: "Inconsistent result when P != 1 atm. See GitHub Issue #1301"
states:
Expand All @@ -78,8 +70,6 @@ binary-solution-tabulated:
file: BinarySolutionTabulatedThermo.yaml
phase: anode
known-failures:
hk_eq_uk_plus_P_times_vk: getPartialMolarIntEnergies is not implemented
u_eq_sum_uk_Xk: getPartialMolarIntEnergies is not implemented
g_eq_h_minus_Ts: "Inconsistent results when P != 1 atm. See GitHub Issue #1301"
g_eq_sum_gk_Xk: "Inconsistent results when P != 1 atm. See GitHub Issue #1301"
v_eq_sum_vk_Xk: "Inconsistent results. See GitHub Issue #1302"
Expand All @@ -99,14 +89,6 @@ electron-cloud:
setup:
file: thermo-models.yaml
phase: Metal
known-failures:
hk_eq_uk_plus_P_times_vk: partialMolarIntEnergies is not implemented
gk_eq_hk_minus_T_times_sk: partialMolarEntropies is not implemented
.+_eq_sum_.+k_Xk: partialMolar IntEnergies/Entropies/Volumes not implemented
gk0_eq_hk0_minus_T_sk0: getGibbs_RT is not implemented
standard_gibbs_nondim: getGibbs_RT is not implemented
hk0_eq_uk0_plus_p_vk0: getIntEnergy_RT is not implemented
cpk0_eq_dhk0dT: getCp_R is not implemented
states:
- {T: 300, P: 1 atm}
- {T: 400, P: 1 atm}
Expand All @@ -122,8 +104,6 @@ nitrogen-purefluid:
known-failures:
cv_eq_.+/3: cv not defined in two-phase region
cp_eq_sum_cpk_Xk: cp is inf in the two-phase region
hk0_eq_uk0_plus_p_vk0: getIntEnergy_RT is not implemented
cpk0_eq_dhk0dT: getCp_R is not implemented
states:
- {T: 300, P: 1 atm}
- {T: 70, P: 1 atm}
Expand All @@ -150,8 +130,6 @@ debye-huckel-dilute:
phase: debye-huckel-dilute
known-failures: &debye-huckel-failures
cv_eq_.+: cv not implemented
u_eq_sum_uk_Xk: partialMolarIntEnergies not implemented
hk_eq_uk_plus_P_times_vk: partialMolarIntEnergies not implemented
states: &debye-huckel-states
- {T: 300, P: 1 atm,
molalities: {Na+: 9.3549, Cl-: 9.3549, H+: 1.05e-08, OH-: 1.3765e-06,
Expand Down Expand Up @@ -199,8 +177,6 @@ margules:
setup:
file: LiKCl_liquid.yaml
known-failures:
hk_eq_uk_plus_P_times_vk: getPartialMolarIntEnergies is not implemented
u_eq_sum_uk_Xk: getPartialMolarIntEnergies is not implemented
cv_eq.+: "Implementation of cv is incorrect. See GitHub Issue #1308"
states:
- {T: 900, P: 1 atm, X: {KCl(L): 0.2, LiCl(L): 0.8}}
Expand All @@ -212,9 +188,6 @@ lattice:
file: thermo-models.yaml
phase: Li7Si3-interstitial
known-failures:
hk0_eq_uk0_plus_p_vk0: getIntEnergy_RT is not implemented
u_eq_sum_uk_Xk: getPartialMolarIntEnergies is not implemented
hk_eq_uk_plus_P_times_vk: getPartialMolarIntEnergies is not implemented
_sum_.+_Xk: "Implementation is wrong. See GitHub Issue #1309"
gk_eq_hk_minus_T_times_sk: "Implementation is wrong. See GitHub Issue #1309"
standard_gibbs_nondim: "Implementation is wrong. See GitHub Issue #1309"
Expand All @@ -228,12 +201,6 @@ compound-lattice:
file: thermo-models.yaml
phase: Li7Si3_and_interstitials
known-failures:
hk_eq_uk_plus_P_times_vk: getPartialMolarIntEnergies is not implemented
u_eq_sum_uk_Xk: getPartialMolarIntEnergies is not implemented
hk0_eq_uk0_plus_p_vk0: getEnthalpy_RT is not implemented
cpk0_eq_dhk0dT: getEnthalpy_RT is not implemented
gk0_eq_hk0_minus_T_sk0: getEnthalpy_RT is not implemented
standard_gibbs_nondim: getGibbs_RT is not implemented
_sum_.+_Xk: "LatticePhase implementation is wrong. See GitHub Issue #1309"
h_eq_u_plus_Pv: "Implementation is inconsistent. See GitHub Issue #1310"
gk_eq_hk_minus_T_times_sk: "Implementation is inconsistent. See GitHub Issue #1310"
Expand Down
92 changes: 70 additions & 22 deletions test/thermo/consistency.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,13 @@ TEST_P(TestConsistency, g_eq_h_minus_Ts) {
TEST_P(TestConsistency, hk_eq_uk_plus_P_times_vk)
{
vector_fp hk(nsp), uk(nsp), vk(nsp);
phase->getPartialMolarEnthalpies(hk.data());
phase->getPartialMolarIntEnergies(uk.data());
phase->getPartialMolarVolumes(vk.data());
try {
phase->getPartialMolarEnthalpies(hk.data());
phase->getPartialMolarIntEnergies(uk.data());
phase->getPartialMolarVolumes(vk.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
for (size_t k = 0; k < nsp; k++) {
EXPECT_NEAR(hk[k], uk[k] + p * vk[k], atol) << "k = " << k;
}
Expand All @@ -111,9 +115,13 @@ TEST_P(TestConsistency, hk_eq_uk_plus_P_times_vk)
TEST_P(TestConsistency, gk_eq_hk_minus_T_times_sk)
{
vector_fp gk(nsp), hk(nsp), sk(nsp);
phase->getChemPotentials(gk.data());
phase->getPartialMolarEnthalpies(hk.data());
phase->getPartialMolarEntropies(sk.data());
try {
phase->getChemPotentials(gk.data());
phase->getPartialMolarEnthalpies(hk.data());
phase->getPartialMolarEntropies(sk.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
for (size_t k = 0; k < nsp; k++) {
EXPECT_NEAR(gk[k], hk[k] - T * sk[k], atol) << "k = " << k;
}
Expand All @@ -122,42 +130,66 @@ TEST_P(TestConsistency, gk_eq_hk_minus_T_times_sk)
TEST_P(TestConsistency, h_eq_sum_hk_Xk)
{
vector_fp hk(nsp);
phase->getPartialMolarEnthalpies(hk.data());
try {
phase->getPartialMolarEnthalpies(hk.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
EXPECT_NEAR(phase->enthalpy_mole(), phase->mean_X(hk), atol);
}

TEST_P(TestConsistency, u_eq_sum_uk_Xk)
{
vector_fp uk(nsp);
phase->getPartialMolarIntEnergies(uk.data());
try {
phase->getPartialMolarIntEnergies(uk.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
EXPECT_NEAR(phase->intEnergy_mole(), phase->mean_X(uk), atol);
}

TEST_P(TestConsistency, g_eq_sum_gk_Xk)
{
vector_fp gk(nsp);
phase->getChemPotentials(gk.data());
try {
phase->getChemPotentials(gk.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
EXPECT_NEAR(phase->gibbs_mole(), phase->mean_X(gk), atol);
}

TEST_P(TestConsistency, s_eq_sum_sk_Xk)
{
vector_fp sk(nsp);
phase->getPartialMolarEntropies(sk.data());
try {
phase->getPartialMolarEntropies(sk.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
EXPECT_NEAR(phase->entropy_mole(), phase->mean_X(sk), atol);
}

TEST_P(TestConsistency, v_eq_sum_vk_Xk)
{
vector_fp vk(nsp);
phase->getPartialMolarVolumes(vk.data());
try {
phase->getPartialMolarVolumes(vk.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
EXPECT_NEAR(phase->molarVolume(), phase->mean_X(vk), atol_v);
}

TEST_P(TestConsistency, cp_eq_sum_cpk_Xk)
{
vector_fp cpk(nsp);
phase->getPartialMolarCp(cpk.data());
try {
phase->getPartialMolarCp(cpk.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
EXPECT_NEAR(phase->cp_mole(), phase->mean_X(cpk), atol);
}

Expand Down Expand Up @@ -228,9 +260,13 @@ TEST_P(TestConsistency, cv_eq_dsdT_const_v_times_T)
TEST_P(TestConsistency, hk0_eq_uk0_plus_p_vk0)
{
vector_fp h0(nsp), u0(nsp), v0(nsp);
phase->getEnthalpy_RT(h0.data());
phase->getIntEnergy_RT(u0.data());
phase->getStandardVolumes(v0.data());
try {
phase->getEnthalpy_RT(h0.data());
phase->getIntEnergy_RT(u0.data());
phase->getStandardVolumes(v0.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
double RT = phase->RT();
for (size_t k = 0; k < nsp; k++) {
EXPECT_NEAR(h0[k] * RT, u0[k] * RT + p * v0[k], atol) << "k = " << k;
Expand All @@ -240,9 +276,13 @@ TEST_P(TestConsistency, hk0_eq_uk0_plus_p_vk0)
TEST_P(TestConsistency, gk0_eq_hk0_minus_T_sk0)
{
vector_fp g0(nsp), h0(nsp), s0(nsp);
phase->getEnthalpy_RT(h0.data());
phase->getGibbs_RT(g0.data());
phase->getEntropy_R(s0.data());
try {
phase->getEnthalpy_RT(h0.data());
phase->getGibbs_RT(g0.data());
phase->getEntropy_R(s0.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
double RT = phase->RT();
for (size_t k = 0; k < nsp; k++) {
EXPECT_NEAR(g0[k] * RT ,
Expand All @@ -253,8 +293,12 @@ TEST_P(TestConsistency, gk0_eq_hk0_minus_T_sk0)
TEST_P(TestConsistency, cpk0_eq_dhk0dT)
{
vector_fp h1(nsp), h2(nsp), cp1(nsp), cp2(nsp);
phase->getEnthalpy_RT(h1.data());
phase->getCp_R(cp1.data());
try {
phase->getEnthalpy_RT(h1.data());
phase->getCp_R(cp1.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
double T1 = phase->temperature();
double dT = 1e-5 * phase->temperature();
phase->setState_TP(T1 + dT, phase->pressure());
Expand All @@ -271,8 +315,12 @@ TEST_P(TestConsistency, cpk0_eq_dhk0dT)
TEST_P(TestConsistency, standard_gibbs_nondim)
{
vector_fp g0_RT(nsp), mu0(nsp);
phase->getGibbs_RT(g0_RT.data());
phase->getStandardChemPotentials(mu0.data());
try {
phase->getGibbs_RT(g0_RT.data());
phase->getStandardChemPotentials(mu0.data());
} catch (NotImplementedError& err) {
GTEST_SKIP() << err.getMethod() << " threw NotImplementedError";
}
double RT = phase->RT();
for (size_t k = 0; k < nsp; k++) {
EXPECT_NEAR(g0_RT[k] * RT , mu0[k], atol);
Expand Down

0 comments on commit 7170ba6

Please sign in to comment.