From 26ea8a8e658bd8608f43e2c5ee96fac50407db88 Mon Sep 17 00:00:00 2001 From: tkurz <theresa.kurz@iws.uni-stuttgart.de> Date: Wed, 25 Mar 2020 15:39:23 +0100 Subject: [PATCH] [test] Add test for effToAbsLaw --- .../fluidmatrixinteractions/2p/CMakeLists.txt | 5 ++ .../2p/test_material_2p_efftoabslaw.cc | 46 +++++++++++++++++++ .../2p/testmateriallawfunctions.hh | 15 ++++++ 3 files changed, 66 insertions(+) create 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 ce1b775409..5322dc918b 100644 --- a/test/material/fluidmatrixinteractions/2p/CMakeLists.txt +++ b/test/material/fluidmatrixinteractions/2p/CMakeLists.txt @@ -23,3 +23,8 @@ 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_efftoabslaw.cc b/test/material/fluidmatrixinteractions/2p/test_material_2p_efftoabslaw.cc new file mode 100644 index 0000000000..a0dfe36b94 --- /dev/null +++ b/test/material/fluidmatrixinteractions/2p/test_material_2p_efftoabslaw.cc @@ -0,0 +1,46 @@ +#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/testmateriallawfunctions.hh b/test/material/fluidmatrixinteractions/2p/testmateriallawfunctions.hh index da71bebadc..f5f52d0922 100644 --- a/test/material/fluidmatrixinteractions/2p/testmateriallawfunctions.hh +++ b/test/material/fluidmatrixinteractions/2p/testmateriallawfunctions.hh @@ -99,6 +99,21 @@ void runTest(const std::string& name, const typename RegLaw::Params& params, writeContainerToFile(pc, "test_pcsw_" + name + ".dat", 100); } + +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) + +{ + 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 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); }); +} + } // end namespace Dumux #endif -- GitLab