From 0c9640f2081a1537cc881071c0a63c930c807c1d Mon Sep 17 00:00:00 2001 From: Timo Koch <timo.koch@iws.uni-stuttgart.de> Date: Tue, 31 Mar 2020 10:54:09 +0200 Subject: [PATCH] [test] Integrate efftoabs test into brooks-corey and vangenuchten tests --- .../fluidmatrixinteractions/2p/CMakeLists.txt | 5 -- .../2p/test_material_2p_brookscorey.cc | 9 ++-- .../2p/test_material_2p_efftoabslaw.cc | 46 ------------------- .../2p/test_material_2p_vangenuchten.cc | 9 ++-- .../2p/testmateriallawfunctions.hh | 26 ++++++----- 5 files changed, 26 insertions(+), 69 deletions(-) delete mode 100644 test/material/fluidmatrixinteractions/2p/test_material_2p_efftoabslaw.cc diff --git a/test/material/fluidmatrixinteractions/2p/CMakeLists.txt b/test/material/fluidmatrixinteractions/2p/CMakeLists.txt index 5322dc918b..ce1b775409 100644 --- a/test/material/fluidmatrixinteractions/2p/CMakeLists.txt +++ b/test/material/fluidmatrixinteractions/2p/CMakeLists.txt @@ -23,8 +23,3 @@ dumux_add_test(SOURCES test_material_2p_brookscorey.cc --files ${CMAKE_SOURCE_DIR}/test/references/test_pcsw_brookscorey.dat ${CMAKE_CURRENT_BINARY_DIR}/test_pcsw_brookscorey.dat --command "${CMAKE_CURRENT_BINARY_DIR}/test_material_2p_brookscorey") - -dumux_add_test(SOURCES test_material_2p_efftoabslaw.cc - LABELS unit material - COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - CMD_ARGS --command "${CMAKE_CURRENT_BINARY_DIR}/test_material_2p_efftoabslaw") diff --git a/test/material/fluidmatrixinteractions/2p/test_material_2p_brookscorey.cc b/test/material/fluidmatrixinteractions/2p/test_material_2p_brookscorey.cc index 1ab7cb0a30..4a58d6037c 100644 --- a/test/material/fluidmatrixinteractions/2p/test_material_2p_brookscorey.cc +++ b/test/material/fluidmatrixinteractions/2p/test_material_2p_brookscorey.cc @@ -34,8 +34,10 @@ int main(int argc, char** argv) try { using namespace Dumux; - using BCReg = EffToAbsLaw<RegularizedBrooksCorey<double>>; - using BC = EffToAbsLaw<BrooksCorey<double>, BCReg::Params>; + using BCRegEff = RegularizedBrooksCorey<double>; + using BCEff = BrooksCorey<double>; + using BCReg = EffToAbsLaw<BCRegEff>; + using BC = EffToAbsLaw<BCEff, BCReg::Params>; // set some parameters BCReg::Params params; @@ -51,7 +53,8 @@ int main(int argc, char** argv) try const auto sw = Dumux::linspace(0.0, 1.0, 100); const auto swNonReg = Dumux::linspace(BCReg::sweToSw_(params, params.thresholdSw()), BCReg::sweToSw_(params, 1.0), 100); - Test::runTest<BC, BCReg>("brookscorey", params, sw, swNonReg); + Test::runMaterialLawTest<BC, BCReg>("brookscorey", params, sw, swNonReg); + Test::runEffToAbsTest<BCRegEff, BCReg>("brookscorey-efftoabs", params, sw); return 0; } diff --git a/test/material/fluidmatrixinteractions/2p/test_material_2p_efftoabslaw.cc b/test/material/fluidmatrixinteractions/2p/test_material_2p_efftoabslaw.cc deleted file mode 100644 index a0dfe36b94..0000000000 --- a/test/material/fluidmatrixinteractions/2p/test_material_2p_efftoabslaw.cc +++ /dev/null @@ -1,46 +0,0 @@ -#include <config.h> - -#include <dune/common/float_cmp.hh> - -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> -#include <dumux/material/fluidmatrixinteractions/2p/vangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/vangenuchtenparams.hh> - -#include <dumux/io/container.hh> -#include "testmateriallawfunctions.hh" - - -int main(int argc, char** argv) try -{ - using namespace Dumux; - - using VGEff = VanGenuchten<double>; - using VGAbs = EffToAbsLaw<VanGenuchten<double>>; - - - // set some parameters - VGEff::Params effParams; - VGAbs::Params absParams; - absParams.setVgAlpha(6.66e-5); - absParams.setVgn(3.652); - absParams.setVgl(0.5); - absParams.setSwr(0.1); - absParams.setSnr(0.1); - - effParams.setVgAlpha(6.66e-5); - effParams.setVgn(3.652); - effParams.setVgl(0.5); - - const auto sw = Dumux::linspace(0.0, 1.0, 100); - - Test::runEffToAbsTest<VGEff, VGAbs>("efftoabs", effParams, absParams, sw); - - - return 0; -} -// error handler -catch (const Dune::Exception& e) -{ - std::cerr << "Test failed with exception: " << e << std::endl; - return 1; -} diff --git a/test/material/fluidmatrixinteractions/2p/test_material_2p_vangenuchten.cc b/test/material/fluidmatrixinteractions/2p/test_material_2p_vangenuchten.cc index 68f48216a6..3d3fae4512 100644 --- a/test/material/fluidmatrixinteractions/2p/test_material_2p_vangenuchten.cc +++ b/test/material/fluidmatrixinteractions/2p/test_material_2p_vangenuchten.cc @@ -31,8 +31,10 @@ int main(int argc, char** argv) try { using namespace Dumux; - using VGReg = EffToAbsLaw<RegularizedVanGenuchten<double>>; - using VG = EffToAbsLaw<VanGenuchten<double>, VGReg::Params>; + using VGRegEff = RegularizedVanGenuchten<double>; + using VGEff = VanGenuchten<double>; + using VGReg = EffToAbsLaw<VGRegEff>; + using VG = EffToAbsLaw<VGEff, VGReg::Params>; // set some parameters VGReg::Params params; @@ -52,7 +54,8 @@ int main(int argc, char** argv) try const auto sw = Dumux::linspace(0.0, 1.0, 100); const auto swNonReg = Dumux::linspace(VGReg::sweToSw_(params, params.pcLowSw()), VGReg::sweToSw_(params, params.pcHighSw()), 100); - Test::runTest<VG, VGReg>("vangenuchten", params, sw, swNonReg); + Test::runMaterialLawTest<VG, VGReg>("vangenuchten", params, sw, swNonReg); + Test::runEffToAbsTest<VGRegEff, VGReg>("vangenuchten-efftoabs", params, sw); return 0; } diff --git a/test/material/fluidmatrixinteractions/2p/testmateriallawfunctions.hh b/test/material/fluidmatrixinteractions/2p/testmateriallawfunctions.hh index c9cadca74e..79bb27d60f 100644 --- a/test/material/fluidmatrixinteractions/2p/testmateriallawfunctions.hh +++ b/test/material/fluidmatrixinteractions/2p/testmateriallawfunctions.hh @@ -75,10 +75,9 @@ void testValueEqualRange(std::string_view testName, template<class Law, class RegLaw> -void runTest(const std::string& name, const typename RegLaw::Params& params, - const std::vector<typename Law::Scalar>& sw, - const std::vector<typename Law::Scalar>& swNonReg - ) +void runMaterialLawTest(const std::string& name, const typename RegLaw::Params& params, + const std::vector<typename Law::Scalar>& sw, + const std::vector<typename Law::Scalar>& swNonReg) { const auto pc = [&](){ auto pc = sw; for (int i = 0; i < sw.size(); ++i) @@ -102,17 +101,20 @@ void runTest(const std::string& name, const typename RegLaw::Params& params, template<class EffLaw, class AbsLaw> -void runEffToAbsTest(const std::string& name, const typename EffLaw::Params& effParams, const typename AbsLaw::Params& absParams, - const std::vector<typename EffLaw::Scalar>& sw) +void runEffToAbsTest(const std::string& name, const typename AbsLaw::Params& params, + const std::vector<typename AbsLaw::Scalar>& sw) { - testValueEqualRange("Checking 1.0 == Abs::swToSwe(1-snr)", sw, [](auto sw){ return 1.0; }, [&](auto sw) { return AbsLaw::swToSwe(absParams, 1-absParams.snr()); }); - testValueEqualRange("Checking 0.0 == Abs::swToSwe(snr)", sw, [](auto sw){ return 0.0; }, [&](auto sw) { return AbsLaw::swToSwe(absParams, absParams.snr()); }); - testValueEqualRange("Checking 1.0 == Abs::snToSne(1-swr)", sw, [](auto sw){ return 1.0; }, [&](auto sw) { return AbsLaw::snToSne(absParams, 1-absParams.swr()); }); - testValueEqualRange("Checking 0.0 == Abs::snToSne(swr)", sw, [](auto sw){ return 0.0; }, [&](auto sw) { return AbsLaw::snToSne(absParams, absParams.swr()); }); + testValueEqualRange("Checking 1.0 == Abs::swToSwe(1-snr)", sw, [](auto sw){ return 1.0; }, [&](auto sw) { return AbsLaw::swToSwe(params, 1-params.snr()); }); + testValueEqualRange("Checking 0.0 == Abs::swToSwe(snr)", sw, [](auto sw){ return 0.0; }, [&](auto sw) { return AbsLaw::swToSwe(params, params.snr()); }); + testValueEqualRange("Checking 1.0 == Abs::snToSne(1-swr)", sw, [](auto sw){ return 1.0; }, [&](auto sw) { return AbsLaw::snToSne(params, 1-params.swr()); }); + testValueEqualRange("Checking 0.0 == Abs::snToSne(swr)", sw, [](auto sw){ return 0.0; }, [&](auto sw) { return AbsLaw::snToSne(params, params.swr()); }); - testValueEqualRange("Checking Abs::pc(1-snr) == Eff::pc(1.0)", sw, [&](auto pc){ return AbsLaw::pc(absParams, 1-absParams.snr()); }, [&](auto pc) { return EffLaw::pc(effParams, 1.0); }); - testValueEqualRange("Checking Abs::endPointPc == Eff::pc(1.0)", sw, [&](auto pc){ return AbsLaw::endPointPc(absParams); }, [&](auto pc) { return EffLaw::pc(absParams, 1.0); }); + testValueEqualRange("Checking sn == sneToSn(snToSne(sn))", sw, [](auto sn){ return sn; }, [&](auto sn) { return AbsLaw::sneToSn(params, AbsLaw::snToSne(params, sn)); }); + testValueEqualRange("Checking sw == sweToSw(swToSwe(sw))", sw, [](auto sw){ return sw; }, [&](auto sw) { return AbsLaw::sweToSw(params, AbsLaw::swToSwe(params, sw)); }); + + testValueEqualRange("Checking Abs::pc(1-snr) == Eff::pc(1.0)", sw, [&](auto pc){ return AbsLaw::pc(params, 1-params.snr()); }, [&](auto pc) { return EffLaw::pc(params, 1.0); }); + testValueEqualRange("Checking Abs::endPointPc == Eff::pc(1.0)", sw, [&](auto pc){ return AbsLaw::endPointPc(params); }, [&](auto pc) { return EffLaw::pc(params, 1.0); }); } } // end namespace Dumux -- GitLab