@@ -345,6 +345,56 @@ TEST_P(TestConsistency, dSdv_const_T_eq_dPdT_const_V) {
345
345
}
346
346
}
347
347
348
+ TEST_P (TestConsistency, betaT_eq_minus_dmv_dP_const_T_div_mv)
349
+ {
350
+ double betaT1;
351
+ try {
352
+ betaT1 = phase->isothermalCompressibility ();
353
+ } catch (NotImplementedError& err) {
354
+ GTEST_SKIP () << err.getMethod () << " threw NotImplementedError" ;
355
+ }
356
+
357
+ double T = phase->temperature ();
358
+ double P1 = phase->pressure ();
359
+ double mv1 = phase->molarVolume ();
360
+
361
+ double P2 = P1 * (1 + 1e-7 );
362
+ phase->setState_TP (T, P2);
363
+ double betaT2 = phase->isothermalCompressibility ();
364
+ double mv2 = phase->molarVolume ();
365
+
366
+ double betaT_mid = 0.5 * (betaT1 + betaT2);
367
+ double mv_mid = 0.5 * (mv1 + mv2);
368
+ double betaT_fd = -1 / mv_mid * (mv2 - mv1) / (P2 - P1);
369
+
370
+ EXPECT_NEAR (betaT_fd, betaT_mid, max ({rtol_fd * betaT_mid, rtol_fd * betaT_fd, atol }));
371
+ }
372
+
373
+ TEST_P (TestConsistency, alphaV_eq_dmv_dT_const_P_div_mv)
374
+ {
375
+ double alphaV1;
376
+ try {
377
+ alphaV1 = phase->thermalExpansionCoeff ();
378
+ } catch (NotImplementedError& err) {
379
+ GTEST_SKIP () << err.getMethod () << " threw NotImplementedError" ;
380
+ }
381
+
382
+ double P = phase->pressure ();
383
+ double T1 = phase->temperature ();
384
+ double mv1 = phase->molarVolume ();
385
+
386
+ double T2 = T1 * (1 + 1e-7 );
387
+ phase->setState_TP (T2, P);
388
+ double alphaV2 = phase->thermalExpansionCoeff ();
389
+ double mv2 = phase->molarVolume ();
390
+
391
+ double alphaV_mid = 0.5 * (alphaV1 + alphaV2);
392
+ double mv_mid = 0.5 * (mv1 + mv2);
393
+ double alphaV_fd = 1 / mv_mid * (mv2 - mv1) / (T2 - T1);
394
+
395
+ EXPECT_NEAR (alphaV_fd, alphaV_mid, max ({rtol_fd * alphaV_mid, rtol_fd * alphaV_fd, atol }));
396
+ }
397
+
348
398
// ---------- Tests for consistency of standard state properties ---------------
349
399
350
400
TEST_P (TestConsistency, hk0_eq_uk0_plus_p_vk0)
0 commit comments