From 7170ba6b8934f0ba5462490e33ff5da8f7f22bad Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Fri, 3 Jun 2022 19:44:05 -0400 Subject: [PATCH] Automatically skip consistency tests of unimplemented array methods --- test/data/consistency-cases.yaml | 33 ------------ test/thermo/consistency.cpp | 92 ++++++++++++++++++++++++-------- 2 files changed, 70 insertions(+), 55 deletions(-) diff --git a/test/data/consistency-cases.yaml b/test/data/consistency-cases.yaml index 2b52b074b81..84be771c442 100644 --- a/test/data/consistency-cases.yaml +++ b/test/data/consistency-cases.yaml @@ -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}} @@ -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}} @@ -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: @@ -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: @@ -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" @@ -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} @@ -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} @@ -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, @@ -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}} @@ -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" @@ -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" diff --git a/test/thermo/consistency.cpp b/test/thermo/consistency.cpp index 0f14e02536c..c4b1ed54101 100644 --- a/test/thermo/consistency.cpp +++ b/test/thermo/consistency.cpp @@ -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; } @@ -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; } @@ -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); } @@ -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; @@ -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 , @@ -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()); @@ -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);