266TEST(PorousFlowVanGenuchtenTest, caphys)
270 const std::vector<Real> no_ext_sats{1.1, 0.75, 0.2, 0.4, 0.6};
271 const std::vector<Real> expected_pcs{
272 0.0, 0.0, 0.7233512030263158, 0.18806139488299345, 0.06716785873826017};
273 for (
unsigned i = 0; i < no_ext_sats.size(); ++i)
275 EXPECT_NEAR(expected_pcs[i],
279 EXPECT_NEAR(expected_pcs[i],
291 EXPECT_NEAR(std::numeric_limits<Real>::max(),
294 EXPECT_NEAR(std::numeric_limits<Real>::max(),
299 EXPECT_NEAR(0.15229665668299805,
low_ext_exp.
S, 1.0E-5);
307 const std::vector<Real> sats{0.01, 0.1, 0.15, 0.2, 0.5, 0.63, 0.8, 0.99, 1.0};
308 std::vector<Real> pc;
309 pc = {31.385947046636815,
315 0.006681337544884095,
316 2.7847615834816514e-07,
318 for (
unsigned i = 0; i < sats.size(); ++i)
325 pc = {3.9304232526771696,
331 0.006681337544884095,
332 2.7847615834816514e-07,
334 for (
unsigned i = 0; i < sats.size(); ++i)
347 0.006681337544884095,
348 2.7847615834816514e-07,
350 for (
unsigned i = 0; i < sats.size(); ++i)
357 pc = {1.5, 1.5, 1.5, 0.7233512030263158, 0.11727884570711045, 0.05300654102157442, 0.0, 0.0, 0.0};
358 for (
unsigned i = 0; i < sats.size(); ++i)
366TEST(PorousFlowVanGenuchtenTest, sathys)
370 const std::vector<Real> expected_sats{1.0, 0.2, 0.4, 0.6};
371 const std::vector<Real> no_ext_pcs{
372 -1.1, 0.7233512030263158, 0.18806139488299345, 0.06716785873826017};
373 for (
unsigned i = 0; i < no_ext_pcs.size(); ++i)
375 EXPECT_NEAR(expected_sats[i],
379 EXPECT_NEAR(expected_sats[i],
393 std::vector<Real> sats{0.01, 0.1, 0.15, 0.2, 0.5, 0.63, 0.8, 0.99, 1.0};
394 std::vector<Real> pc;
395 pc = {31.385947046636815,
401 0.006681337544884095,
402 2.7847615834816514e-07,
404 for (
unsigned i = 0; i < sats.size(); ++i)
411 pc = {3.9304232526771696,
417 0.006681337544884095,
418 2.7847615834816514e-07,
420 for (
unsigned i = 0; i < sats.size(); ++i)
433 0.006681337544884095,
434 2.7847615834816514e-07,
436 for (
unsigned i = 0; i < sats.size(); ++i)
443 pc = {2.5, 1.5, 0.7233512030263158, 0.11727884570711045, 0.05300654102157442, 1E-10};
445 for (
unsigned i = 0; i < sats.size(); ++i)
453TEST(PorousFlowVanGenuchtenTest, dcaphys)
455 const Real
eps = 1.0E-9;
459 std::vector<Real> sats{1.1, 0.75, -1.0, 0.05};
460 for (
const auto & sat : sats)
470 sats = {0.2, 0.4, 0.6};
471 for (
const auto & sat : sats)
473 const Real fd = 0.5 *
486 sats = {0.01, 0.1, 0.15, 0.2, 0.5, 0.63, 0.8, 0.99, 1.0};
488 for (
const auto & sat : sats)
490 const Real fd = 0.5 *
503 for (
const auto & sat : sats)
505 const Real fd = 0.5 *
518 for (
const auto & sat : sats)
520 const Real fd = 0.5 *
533 sats = {0.01, 0.1, 0.15, 0.2, 0.5, 0.8, 0.99, 1.0};
534 for (
const auto & sat : sats)
536 const Real fd = 0.5 *
550TEST(PorousFlowVanGenuchtenTest, d2caphys)
552 const Real
eps = 1.0E-9;
556 std::vector<Real> sats{1.1, 0.75, -1.0, 0.05};
557 for (
const auto & sat : sats)
567 sats = {0.2, 0.4, 0.6};
568 for (
const auto & sat : sats)
584 sats = {0.01, 0.1, 0.15, 0.2, 0.5, 0.6, 0.7, 0.8, 0.99, 1.0};
586 for (
const auto & sat : sats)
588 const Real fd = 0.5 *
594 if (std::abs(fd) > 10)
607 for (
const auto & sat : sats)
609 const Real fd = 0.5 *
615 if (std::abs(fd) > 10)
628 for (
const auto & sat : sats)
630 const Real fd = 0.5 *
636 if (std::abs(fd) > 10)
649 sats = {0.01, 0.1, 0.15, 0.2, 0.5, 0.8, 0.99, 1.0};
650 for (
const auto & sat : sats)
652 const Real fd = 0.5 *
658 if (std::abs(fd) > 10)
892TEST(PorousFlowVanGenuchtenTest, relativePermeabilityHys)
897 0.1, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
901 0.2, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
903 EXPECT_NEAR(0.002847974503642625,
905 0.3, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
907 EXPECT_NEAR(0.002847974503642625,
909 0.3, 0.2, 0.0, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
911 EXPECT_NEAR(0.05828443549816974,
913 0.5, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
915 EXPECT_NEAR(0.10056243969693253,
917 0.55, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
919 EXPECT_NEAR(0.08943153676247108,
921 0.55, 0.2, 0.0, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
923 EXPECT_NEAR(0.3159149169921876,
925 0.8, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
927 EXPECT_NEAR(0.8011290515690178,
929 0.95, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
935 0.1, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
939 0.2, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
941 EXPECT_NEAR(0.005858393312913491,
943 0.3, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
945 EXPECT_NEAR(0.002847974503642625,
947 0.3, 0.2, 0.0, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
949 EXPECT_NEAR(0.1363562523627124,
951 0.55, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
955 0.7, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
957 EXPECT_NEAR(0.8011290515690178,
959 0.95, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
964TEST(PorousFlowVanGenuchtenTest, drelativePermeabilityHys)
970 0.1, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
973 0.3, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
975 0.3 +
eps, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
977 0.3, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
981 0.3, 0.2, 0.0, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
983 0.3 +
eps, 0.2, 0.0, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
985 0.3, 0.2, 0.0, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
989 0.55, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
991 0.55 +
eps, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
993 0.55, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
997 0.55, 0.2, 0.0, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
999 0.55 +
eps, 0.2, 0.0, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
1001 0.55, 0.2, 0.0, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
1005 0.8, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
1007 0.8 +
eps, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
1009 0.8, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
1013 0.95, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
1015 0.95 +
eps, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
1017 0.95, 0.2, 0.15, 0.25, 0.5, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
1023 0.1, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
1026 0.3, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
1028 0.3 +
eps, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
1030 0.3, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
1034 0.3, 0.2, 0.0, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
1036 0.3 +
eps, 0.2, 0.0, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
1038 0.3, 0.2, 0.0, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
1042 0.55, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
1044 0.55 +
eps, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
1046 0.55, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
1050 0.7, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
1052 0.7 +
eps, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
1054 0.7, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
1058 0.95, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2),
1060 0.95 +
eps, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2) -
1062 0.95, 0.2, 0.15, 0.25, 0.15, 0.9, 0.9, 0.3, 0.5, 0.45, 2.2)) /
1068TEST(PorousFlowVanGenuchtenTest, relativePermeabilityNWHys)
1071 EXPECT_NEAR(0.91875,
1073 0.1, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1077 0.1, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 1.0, -0.75),
1081 0.2, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1083 EXPECT_NEAR(0.6368139633459233,
1085 0.3, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1087 EXPECT_NEAR(0.6368139633459233,
1089 0.3, 0.2, 0.0, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1091 EXPECT_NEAR(0.33222054246699,
1093 0.5, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1095 EXPECT_NEAR(0.24397255389213568,
1097 0.55, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1099 EXPECT_NEAR(0.2691316236913443,
1101 0.55, 0.2, 0.0, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1103 EXPECT_NEAR(0.01509148277290631,
1105 0.85, 0.2, 0.05, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1109 0.85, 0.2, 0.18, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1113 EXPECT_NEAR(0.91875,
1115 0.1, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1119 0.1, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 1.0, -0.75),
1123 0.2, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1125 EXPECT_NEAR(0.5616820966427329,
1127 0.3, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1129 EXPECT_NEAR(0.6368139633459233,
1131 0.3, 0.2, 0.0, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1133 EXPECT_NEAR(0.11086138435665097,
1135 0.55, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1139 0.76, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1144TEST(PorousFlowVanGenuchtenTest, drelativePermeabilityNWHys)
1149 0.1, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1151 0.1 +
eps, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75) -
1153 0.1, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75)) /
1158 0.1, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 1.0, -0.75),
1161 0.3, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1163 0.3 +
eps, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75) -
1165 0.3, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75)) /
1169 0.3, 0.2, 0.0, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1171 0.3 +
eps, 0.2, 0.0, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75) -
1173 0.3, 0.2, 0.0, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75)) /
1177 0.45, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1179 0.45 +
eps, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75) -
1181 0.45, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75)) /
1185 0.55, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1187 0.55 +
eps, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75) -
1189 0.55, 0.2, 0.15, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75)) /
1193 0.55, 0.2, 0.0, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1195 0.55 +
eps, 0.2, 0.0, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75) -
1197 0.55, 0.2, 0.0, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75)) /
1201 0.85, 0.2, 0.05, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1203 0.85 +
eps, 0.2, 0.05, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75) -
1205 0.85, 0.2, 0.05, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75)) /
1210 0.85, 0.2, 0.18, 0.25, 0.5, 0.9, 0.3, 0.8, -0.75),
1215 0.1, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1217 0.1 +
eps, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75) -
1219 0.1, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75)) /
1224 0.1, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 1.0, -0.75),
1227 0.3, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1229 0.3 +
eps, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75) -
1231 0.3, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75)) /
1235 0.3, 0.2, 0.0, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1237 0.3 +
eps, 0.2, 0.0, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75) -
1239 0.3, 0.2, 0.0, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75)) /
1243 0.55, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),
1245 0.55 +
eps, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75) -
1247 0.55, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75)) /
1252 0.76, 0.2, 0.18, 0.25, 0.15, 0.9, 0.3, 0.8, -0.75),