diff --git a/test/material/fluidmatrixinteractions/2p/CMakeLists.txt b/test/material/fluidmatrixinteractions/2p/CMakeLists.txt index 2d9abe86dba83f333f77ebc915b8394801aba009..ce1b775409a6d89fdc118b996e88852f3fbd6c82 100644 --- a/test/material/fluidmatrixinteractions/2p/CMakeLists.txt +++ b/test/material/fluidmatrixinteractions/2p/CMakeLists.txt @@ -7,3 +7,19 @@ dumux_add_test(SOURCES test_thermalconductivity.cc ${CMAKE_SOURCE_DIR}/test/references/thermalconductivityjohansen-reference.dat ${CMAKE_CURRENT_BINARY_DIR}/johansen_lambda_eff.dat --command "${CMAKE_CURRENT_BINARY_DIR}/test_thermalconductivity") + +dumux_add_test(SOURCES test_material_2p_vangenuchten.cc + LABELS unit material + COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py + CMD_ARGS --script fuzzyData --delimiter " " + --files ${CMAKE_SOURCE_DIR}/test/references/test_pcsw_vangenuchten.dat + ${CMAKE_CURRENT_BINARY_DIR}/test_pcsw_vangenuchten.dat + --command "${CMAKE_CURRENT_BINARY_DIR}/test_material_2p_vangenuchten") + +dumux_add_test(SOURCES test_material_2p_brookscorey.cc + LABELS unit material + COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py + CMD_ARGS --script fuzzyData --delimiter " " + --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") diff --git a/test/material/fluidmatrixinteractions/2p/test_material_2p_brookscorey.cc b/test/material/fluidmatrixinteractions/2p/test_material_2p_brookscorey.cc new file mode 100644 index 0000000000000000000000000000000000000000..ac91436af8a045af9eae91c3ed776b12d2ecd324 --- /dev/null +++ b/test/material/fluidmatrixinteractions/2p/test_material_2p_brookscorey.cc @@ -0,0 +1,66 @@ +#include <config.h> + +#include <dune/common/float_cmp.hh> + +#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> +#include <dumux/material/fluidmatrixinteractions/2p/brookscorey.hh> +#include <dumux/material/fluidmatrixinteractions/2p/brookscoreyparams.hh> +#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> +#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscoreyparams.hh> + +#include <dumux/io/container.hh> +#include "testmateriallawfunctions.hh" + +namespace Dumux::Test { + +// test if endPointPc() is the same as evaluation at sw=1 +template<class Law> +void checkEndPointPc(const typename Law::Params& params) +{ + const auto pcSat = Law::pc(params, Law::sweToSw(params, 1.0)); + const auto endPointPc = Law::endPointPc(params); + const auto entryPressure = params.pe(); + static constexpr double eps = 1e-10; + + if (Dune::FloatCmp::ne(pcSat, endPointPc, eps)) + DUNE_THROW(Dune::Exception, "pc(sw=1) != endPointPc(): " << pcSat << " != " << endPointPc); + if (Dune::FloatCmp::ne(pcSat, entryPressure, eps)) + DUNE_THROW(Dune::Exception, "pc(sw=1) != entryPressure: " << pcSat << " != " << entryPressure); +} + +} // end namespace Dumux + +int main(int argc, char** argv) try +{ + using namespace Dumux; + + using BCRegEff = RegularizedBrooksCorey<double>; + using BCEff = BrooksCorey<double>; + using BCReg = EffToAbsLaw<BCRegEff>; + using BC = EffToAbsLaw<BCEff, BCReg::Params>; + + // set some parameters + BCReg::Params params; + params.setPe(1e4); + params.setLambda(2.0); + params.setSwr(0.1); + params.setSnr(0.1); + params.setThresholdSw(0.01); + + Test::checkEndPointPc<BC>(params); + Test::checkEndPointPc<BCReg>(params); + + 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::runMaterialLawTest<BC, BCReg>("brookscorey", params, sw, swNonReg); + Test::runEffToAbsTest<BCRegEff, BCReg>("brookscorey-efftoabs", params, 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 new file mode 100644 index 0000000000000000000000000000000000000000..d932bc576f0cbf32f1b6361150d202d0eee6c721 --- /dev/null +++ b/test/material/fluidmatrixinteractions/2p/test_material_2p_vangenuchten.cc @@ -0,0 +1,67 @@ +#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/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> +#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchtenparams.hh> + +#include <dumux/io/container.hh> +#include "testmateriallawfunctions.hh" + +namespace Dumux::Test { + +// test if endPointPc() is the same as evaluation at sw=1 +template<class Law> +void checkEndPointPc(const typename Law::Params& params) +{ + const auto pcSat = Law::pc(params, Law::sweToSw(params, 1.0)); + const auto endPointPc = Law::endPointPc(params); + static constexpr double eps = 1e-10; + + if (Dune::FloatCmp::ne(pcSat, endPointPc, eps)) + DUNE_THROW(Dune::Exception, "pc(sw=1) != endPointPc(): " << pcSat << " != " << endPointPc); +} + +} // end namespace Dumux + +int main(int argc, char** argv) try +{ + using namespace Dumux; + + using VGRegEff = RegularizedVanGenuchten<double>; + using VGEff = VanGenuchten<double>; + using VGReg = EffToAbsLaw<VGRegEff>; + using VG = EffToAbsLaw<VGEff, VGReg::Params>; + + // set some parameters + VGReg::Params params; + params.setVgAlpha(6.66e-5); + params.setVgn(3.652); + params.setVgl(0.5); + params.setSwr(0.1); + params.setSnr(0.1); + params.setPcLowSw(0.01); + params.setPcHighSw(0.99); + params.setKrnLowSw(0.1); + params.setKrwHighSw(0.9); + + Test::checkEndPointPc<VG>(params); + Test::checkEndPointPc<VGReg>(params); + + 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::runMaterialLawTest<VG, VGReg>("vangenuchten", params, sw, swNonReg); + Test::runEffToAbsTest<VGRegEff, VGReg>("vangenuchten-efftoabs", params, 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 new file mode 100644 index 0000000000000000000000000000000000000000..79bb27d60f1e6404fdf44b1c61ee2740a3079344 --- /dev/null +++ b/test/material/fluidmatrixinteractions/2p/testmateriallawfunctions.hh @@ -0,0 +1,122 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \ingroup MaterialTests + * \brief Test for the 2p van Genuchten material law + */ + +#ifndef DUMUX_TEST_MATERIALLAW_FUNCTIONS_HH +#define DUMUX_TEST_MATERIALLAW_FUNCTIONS_HH + +#include <dune/common/float_cmp.hh> + +#include <dumux/common/math.hh> +#include <dumux/common/numericdifferentiation.hh> + +namespace Dumux::Test { + +template<class F, class D> +void testDerivatives(std::string_view derivName, + const std::vector<double>& values, + const F& f, const D& deriv) +{ + static constexpr double eps = 1.0e-1; + static constexpr double numEps = 1e-8; + for (auto val : values) + { + double analyticDeriv = deriv(val); + + double numericDeriv = 0.0; + Dumux::NumericDifferentiation::partialDerivative(f, val, + numericDeriv, f(val), numEps, 0 /*central differences*/); + + if (Dune::FloatCmp::ne(analyticDeriv, numericDeriv, eps)) + DUNE_THROW(Dune::Exception, "Analytic derivative for " << derivName + << " doesn't match numerical derivative: " + << std::setprecision(10) << analyticDeriv << " != " << numericDeriv + << " evaluated at " << val); + } +} + +template<class F, class G> +void testValueEqualRange(std::string_view testName, + const std::vector<double>& values, + const F& f, const G& g) +{ + static constexpr double eps = 1e-7; + for (auto val : values) + { + const auto a = f(val); + const auto b = g(val); + + if (Dune::FloatCmp::ne(a, b, eps)) + DUNE_THROW(Dune::Exception, "Test: " << testName << ": Function values do not match: " + << a << " != " << b << " evaluated at " << val << "\n"); + + } +} + + +template<class Law, class RegLaw> +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) + pc[i] = RegLaw::pc(params, sw[i]); + return pc; + }(); + + testDerivatives("dpc_dsw", sw, [&](auto sw){ return RegLaw::pc(params, sw); }, [&](auto sw){ return RegLaw::dpc_dsw(params, sw); }); + testDerivatives("dkrw_dsw", sw, [&](auto sw){ return RegLaw::krw(params, sw); }, [&](auto sw){ return RegLaw::dkrw_dsw(params, sw); }); + testDerivatives("dkrn_dsw", sw, [&](auto sw){ return RegLaw::krn(params, sw); }, [&](auto sw){ return RegLaw::dkrn_dsw(params, sw); }); + testDerivatives("dsw_dpc", pc, [&](auto pc){ return RegLaw::sw(params, pc); }, [&](auto pc){ return RegLaw::dsw_dpc(params, pc); }); + testValueEqualRange("Checking sw == sw(pc(sw))", sw, [](auto sw){ return sw; }, [&](auto sw) { return RegLaw::sw(params, RegLaw::pc(params, sw)); }); + testValueEqualRange("Checking 1.0 == dsw_dpc*dpc_dsw^-1", sw, [](auto sw){ return 1.0; }, [&](auto sw) { return RegLaw::dpc_dsw(params, sw)*RegLaw::dsw_dpc(params, RegLaw::pc(params, sw)); }); + + // check that regularized and unregularized are the same in the region without regularization + testValueEqualRange("Checking NoReg::pc == Reg::pc", swNonReg, [&](auto sw){ return RegLaw::pc(params, sw); }, [&](auto sw) { return Law::pc(params, sw); }); + + // test pc-sw curve against some precomputed values + writeContainerToFile(pc, "test_pcsw_" + name + ".dat", 100); +} + + +template<class EffLaw, class AbsLaw> +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(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 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 + +#endif diff --git a/test/references/test_pcsw_brookscorey.dat b/test/references/test_pcsw_brookscorey.dat new file mode 100644 index 0000000000000000000000000000000000000000..d8e8d2872f58f3e86909b6da376f9bb17ebab6b9 --- /dev/null +++ b/test/references/test_pcsw_brookscorey.dat @@ -0,0 +1,100 @@ +7.7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+05 +7.1186868686868681106716394424438476562500000000000000000000000000000000000000000000000000000000000000e+05 +6.4873737373737362213432788848876953125000000000000000000000000000000000000000000000000000000000000000e+05 +5.8560606060606054961681365966796875000000000000000000000000000000000000000000000000000000000000000000e+05 +5.2247474747474741889163851737976074218750000000000000000000000000000000000000000000000000000000000000e+05 +4.5934343434343428816646337509155273437500000000000000000000000000000000000000000000000000000000000000e+05 +3.9621212121212127385661005973815917968750000000000000000000000000000000000000000000000000000000000000e+05 +3.3308080808080802671611309051513671875000000000000000000000000000000000000000000000000000000000000000e+05 +2.6994949494949495419859886169433593750000000000000000000000000000000000000000000000000000000000000000e+05 +2.0681818181818185257725417613983154296875000000000000000000000000000000000000000000000000000000000000e+05 +1.4368686868686863454058766365051269531250000000000000000000000000000000000000000000000000000000000000e+05 +8.4852813742385696968995034694671630859375000000000000000000000000000000000000000000000000000000000000e+04 +6.1411957886299074743874371051788330078125000000000000000000000000000000000000000000000000000000000000e+04 +5.0545412350453909311909228563308715820312500000000000000000000000000000000000000000000000000000000000e+04 +4.3951192441993764077778905630111694335937500000000000000000000000000000000000000000000000000000000000e+04 +3.9407374645751122443471103906631469726562500000000000000000000000000000000000000000000000000000000000e+04 +3.6032771968552529870066791772842407226562500000000000000000000000000000000000000000000000000000000000e+04 +3.3398996358370990492403507232666015625000000000000000000000000000000000000000000000000000000000000000e+04 +3.1269438398822865565307438373565673828125000000000000000000000000000000000000000000000000000000000000e+04 +2.9501350313666498550446704030036926269531250000000000000000000000000000000000000000000000000000000000e+04 +2.8002828711428137467009946703910827636718750000000000000000000000000000000000000000000000000000000000e+04 +2.6711673731039645645068958401679992675781250000000000000000000000000000000000000000000000000000000000e+04 +2.5584085962673252652166411280632019042968750000000000000000000000000000000000000000000000000000000000e+04 +2.4588211660707569535588845610618591308593750000000000000000000000000000000000000000000000000000000000e+04 +2.3700255856415864400332793593406677246093750000000000000000000000000000000000000000000000000000000000e+04 +2.2902037273095993441529572010040283203125000000000000000000000000000000000000000000000000000000000000e+04 +2.2179392819428339862497523427009582519531250000000000000000000000000000000000000000000000000000000000e+04 +2.1521103473958813992794603109359741210937500000000000000000000000000000000000000000000000000000000000e+04 +2.0918151466453255125088617205619812011718750000000000000000000000000000000000000000000000000000000000e+04 +2.0363194392429551953682675957679748535156250000000000000000000000000000000000000000000000000000000000e+04 +1.9850185156473191455006599426269531250000000000000000000000000000000000000000000000000000000000000000e+04 +1.9374092242914681264664977788925170898437500000000000000000000000000000000000000000000000000000000000e+04 +1.8930690444988580566132441163063049316406250000000000000000000000000000000000000000000000000000000000e+04 +1.8516401995451029506511986255645751953125000000000000000000000000000000000000000000000000000000000000e+04 +1.8128174353590900864219292998313903808593750000000000000000000000000000000000000000000000000000000000e+04 +1.7763385054813668830320239067077636718750000000000000000000000000000000000000000000000000000000000000e+04 +1.7419766814227707072859629988670349121093750000000000000000000000000000000000000000000000000000000000e+04 +1.7095347978594207233982160687446594238281250000000000000000000000000000000000000000000000000000000000e+04 +1.6788404742792841716436669230461120605468750000000000000000000000000000000000000000000000000000000000e+04 +1.6497422479090731940232217311859130859375000000000000000000000000000000000000000000000000000000000000e+04 +1.6221064194066915661096572875976562500000000000000000000000000000000000000000000000000000000000000000e+04 +1.5958144610863189882365986704826354980468750000000000000000000000000000000000000000000000000000000000e+04 +1.5707608728339806475560180842876434326171875000000000000000000000000000000000000000000000000000000000e+04 +1.5468513971008949738461524248123168945312500000000000000000000000000000000000000000000000000000000000e+04 +1.5240015240022861689794808626174926757812500000000000000000000000000000000000000000000000000000000000e+04 +1.5021352323976214393042027950286865234375000000000000000000000000000000000000000000000000000000000000e+04 +1.4811839241547673736931756138801574707031250000000000000000000000000000000000000000000000000000000000e+04 +1.4610855175135608078562654554843902587890625000000000000000000000000000000000000000000000000000000000e+04 +1.4417836722200438089203089475631713867187500000000000000000000000000000000000000000000000000000000000e+04 +1.4232271243797780698514543473720550537109375000000000000000000000000000000000000000000000000000000000e+04 +1.4053691131299459811998531222343444824218750000000000000000000000000000000000000000000000000000000000e+04 +1.3881668845171579960151575505733489990234375000000000000000000000000000000000000000000000000000000000e+04 +1.3715812605873190477723255753517150878906250000000000000000000000000000000000000000000000000000000000e+04 +1.3555762637935782549902796745300292968750000000000000000000000000000000000000000000000000000000000000e+04 +1.3401187885209797968855127692222595214843750000000000000000000000000000000000000000000000000000000000e+04 +1.3251783128981584013672545552253723144531250000000000000000000000000000000000000000000000000000000000e+04 +1.3107266451838055218104273080825805664062500000000000000000000000000000000000000000000000000000000000e+04 +1.2967376999302448894013650715351104736328125000000000000000000000000000000000000000000000000000000000e+04 +1.2831872998785667732590809464454650878906250000000000000000000000000000000000000000000000000000000000e+04 +1.2700530001609864484635181725025177001953125000000000000000000000000000000000000000000000000000000000e+04 +1.2573139319013742351671680808067321777343750000000000000000000000000000000000000000000000000000000000e+04 +1.2449506627340209888643585145473480224609375000000000000000000000000000000000000000000000000000000000e+04 +1.2329450721194856669171713292598724365234375000000000000000000000000000000000000000000000000000000000e+04 +1.2212802396374116142396815121173858642578125000000000000000000000000000000000000000000000000000000000e+04 +1.2099403446897487810929305851459503173828125000000000000000000000000000000000000000000000000000000000e+04 +1.1989105762620321911526843905448913574218750000000000000000000000000000000000000000000000000000000000e+04 +1.1881770515720090770628303289413452148437500000000000000000000000000000000000000000000000000000000000e+04 +1.1777267425893653125967830419540405273437500000000000000000000000000000000000000000000000000000000000e+04 +1.1675474095420704543357715010643005371093750000000000000000000000000000000000000000000000000000000000e+04 +1.1576275406375920283608138561248779296875000000000000000000000000000000000000000000000000000000000000e+04 +1.1479562973239544589887373149394989013671875000000000000000000000000000000000000000000000000000000000e+04 +1.1385234644988229774753563106060028076171875000000000000000000000000000000000000000000000000000000000e+04 +1.1293194051465598022332414984703063964843750000000000000000000000000000000000000000000000000000000000e+04 +1.1203350189452788981725461781024932861328125000000000000000000000000000000000000000000000000000000000e+04 +1.1115617044397089557605795562267303466796875000000000000000000000000000000000000000000000000000000000e+04 +1.1029913244224324444076046347618103027343750000000000000000000000000000000000000000000000000000000000e+04 +1.0946161742067848535953089594841003417968750000000000000000000000000000000000000000000000000000000000e+04 +1.0864289525102223706198856234550476074218750000000000000000000000000000000000000000000000000000000000e+04 +1.0784227346980664151487872004508972167968750000000000000000000000000000000000000000000000000000000000e+04 +1.0705909481647646316559985280036926269531250000000000000000000000000000000000000000000000000000000000e+04 +1.0629273496537474784418009221553802490234375000000000000000000000000000000000000000000000000000000000e+04 +1.0554260043380167189752683043479919433593750000000000000000000000000000000000000000000000000000000000e+04 +1.0480812665021674547460861504077911376953125000000000000000000000000000000000000000000000000000000000e+04 +1.0408877616829495309502817690372467041015625000000000000000000000000000000000000000000000000000000000e+04 +1.0338403701399816782213747501373291015625000000000000000000000000000000000000000000000000000000000000e+04 +1.0269342115411071063135750591754913330078125000000000000000000000000000000000000000000000000000000000e+04 +1.0201646307582894223742187023162841796875000000000000000000000000000000000000000000000000000000000000e+04 +1.0135271846801166248042136430740356445312500000000000000000000000000000000000000000000000000000000000e+04 +1.0070176299560269399080425500869750976562500000000000000000000000000000000000000000000000000000000000e+04 +1.0006319115954480366781353950500488281250000000000000000000000000000000000000000000000000000000000000e+04 +9.9431818181818180164555087685585021972656250000000000000000000000000000000000000000000000000000000000e+03 +9.8800505050505053077358752489089965820312500000000000000000000000000000000000000000000000000000000000e+03 +9.8169191919191907800268381834030151367187500000000000000000000000000000000000000000000000000000000000e+03 +9.7537878787878780713072046637535095214843750000000000000000000000000000000000000000000000000000000000e+03 +9.6906565656565653625875711441040039062500000000000000000000000000000000000000000000000000000000000000e+03 +9.6275252525252526538679376244544982910156250000000000000000000000000000000000000000000000000000000000e+03 +9.5643939393939399451483041048049926757812500000000000000000000000000000000000000000000000000000000000e+03 +9.5012626262626254174392670392990112304687500000000000000000000000000000000000000000000000000000000000e+03 +9.4381313131313127087196335196495056152343750000000000000000000000000000000000000000000000000000000000e+03 +9.3750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+03 diff --git a/test/references/test_pcsw_vangenuchten.dat b/test/references/test_pcsw_vangenuchten.dat new file mode 100644 index 0000000000000000000000000000000000000000..7379b19c724f9971806de18dd02b27ee320d17b4 --- /dev/null +++ b/test/references/test_pcsw_vangenuchten.dat @@ -0,0 +1,100 @@ +5.1970481100562302162870764732360839843750000000000000000000000000000000000000000000000000000000000000e+05 +4.7906694760963413864374160766601562500000000000000000000000000000000000000000000000000000000000000000e+05 +4.3842908421364525565877556800842285156250000000000000000000000000000000000000000000000000000000000000e+05 +3.9779122081765643088147044181823730468750000000000000000000000000000000000000000000000000000000000000e+05 +3.5715335742166754789650440216064453125000000000000000000000000000000000000000000000000000000000000000e+05 +3.1651549402567866491153836250305175781250000000000000000000000000000000000000000000000000000000000000e+05 +2.7587763062968989834189414978027343750000000000000000000000000000000000000000000000000000000000000000e+05 +2.3523976723370098625309765338897705078125000000000000000000000000000000000000000000000000000000000000e+05 +1.9460190383771213237196207046508789062500000000000000000000000000000000000000000000000000000000000000e+05 +1.5396404044172330759465694427490234375000000000000000000000000000000000000000000000000000000000000000e+05 +1.1332617704573439550586044788360595703125000000000000000000000000000000000000000000000000000000000000e+05 +7.5257129827769254916347563266754150390625000000000000000000000000000000000000000000000000000000000000e+04 +5.8908786364871477417182177305221557617187500000000000000000000000000000000000000000000000000000000000e+04 +5.0795624440500541822984814643859863281250000000000000000000000000000000000000000000000000000000000000e+04 +4.5644426169926569855306297540664672851562500000000000000000000000000000000000000000000000000000000000e+04 +4.1968673286320561601314693689346313476562500000000000000000000000000000000000000000000000000000000000e+04 +3.9158178424276818986982107162475585937500000000000000000000000000000000000000000000000000000000000000e+04 +3.6908400797575231990776956081390380859375000000000000000000000000000000000000000000000000000000000000e+04 +3.5047494767885298642795532941818237304687500000000000000000000000000000000000000000000000000000000000e+04 +3.3469887425013963365927338600158691406250000000000000000000000000000000000000000000000000000000000000e+04 +3.2106528424065170838730409741401672363281250000000000000000000000000000000000000000000000000000000000e+04 +3.0910026291437847248744219541549682617187500000000000000000000000000000000000000000000000000000000000e+04 +2.9846586121847511094529181718826293945312500000000000000000000000000000000000000000000000000000000000e+04 +2.8891346063433509698370471596717834472656250000000000000000000000000000000000000000000000000000000000e+04 +2.8025536416530510905431583523750305175781250000000000000000000000000000000000000000000000000000000000e+04 +2.7234673598064568068366497755050659179687500000000000000000000000000000000000000000000000000000000000e+04 +2.6507370159869740746216848492622375488281250000000000000000000000000000000000000000000000000000000000e+04 +2.5834526454111262864898890256881713867187500000000000000000000000000000000000000000000000000000000000e+04 +2.5208766922134112974163144826889038085937500000000000000000000000000000000000000000000000000000000000e+04 +2.4624037867532919335644692182540893554687500000000000000000000000000000000000000000000000000000000000e+04 +2.4075314610940527927596122026443481445312500000000000000000000000000000000000000000000000000000000000e+04 +2.3558384435967967874603345990180969238281250000000000000000000000000000000000000000000000000000000000e+04 +2.3069683121136331465095281600952148437500000000000000000000000000000000000000000000000000000000000000e+04 +2.2606170047871190035948529839515686035156250000000000000000000000000000000000000000000000000000000000e+04 +2.2165231533376365405274555087089538574218750000000000000000000000000000000000000000000000000000000000e+04 +2.1744605120024498319253325462341308593750000000000000000000000000000000000000000000000000000000000000e+04 +2.1342319633395320124691352248191833496093750000000000000000000000000000000000000000000000000000000000e+04 +2.0956647250431266002124175429344177246093750000000000000000000000000000000000000000000000000000000000e+04 +2.0586064817272024811245501041412353515625000000000000000000000000000000000000000000000000000000000000e+04 +2.0229222363744222093373537063598632812500000000000000000000000000000000000000000000000000000000000000e+04 +1.9884917269779376510996371507644653320312500000000000000000000000000000000000000000000000000000000000e+04 +1.9552072908887799712829291820526123046875000000000000000000000000000000000000000000000000000000000000e+04 +1.9229720866080831910949200391769409179687500000000000000000000000000000000000000000000000000000000000e+04 +1.8916986030221694818465039134025573730468750000000000000000000000000000000000000000000000000000000000e+04 +1.8613074013028097397182136774063110351562500000000000000000000000000000000000000000000000000000000000e+04 +1.8317260462407473823986947536468505859375000000000000000000000000000000000000000000000000000000000000e+04 +1.8028881926099533302476629614830017089843750000000000000000000000000000000000000000000000000000000000e+04 +1.7747327989632354729110375046730041503906250000000000000000000000000000000000000000000000000000000000e+04 +1.7472034465367814846104010939598083496093750000000000000000000000000000000000000000000000000000000000e+04 +1.7202477450573256646748632192611694335937500000000000000000000000000000000000000000000000000000000000e+04 +1.6938168104702614073175936937332153320312500000000000000000000000000000000000000000000000000000000000e+04 +1.6678648021396453259512782096862792968750000000000000000000000000000000000000000000000000000000000000e+04 +1.6423485090604550350690260529518127441406250000000000000000000000000000000000000000000000000000000000e+04 +1.6172269761804804147686809301376342773437500000000000000000000000000000000000000000000000000000000000e+04 +1.5924611631362911793985404074192047119140625000000000000000000000000000000000000000000000000000000000e+04 +1.5680136286253708021831698715686798095703125000000000000000000000000000000000000000000000000000000000e+04 +1.5438482343079098427551798522472381591796875000000000000000000000000000000000000000000000000000000000e+04 +1.5199298625859302774188108742237091064453125000000000000000000000000000000000000000000000000000000000e+04 +1.4962241428608087517204694449901580810546875000000000000000000000000000000000000000000000000000000000e+04 +1.4726971809279457374941557645797729492187500000000000000000000000000000000000000000000000000000000000e+04 +1.4493152860222813615109771490097045898437500000000000000000000000000000000000000000000000000000000000e+04 +1.4260446896607058079098351299762725830078125000000000000000000000000000000000000000000000000000000000e+04 +1.4028512498013938966323621571063995361328125000000000000000000000000000000000000000000000000000000000e+04 +1.3797001328998401731951162219047546386718750000000000000000000000000000000000000000000000000000000000e+04 +1.3565554651041484248708002269268035888671875000000000000000000000000000000000000000000000000000000000e+04 +1.3333799419776218201150186359882354736328125000000000000000000000000000000000000000000000000000000000e+04 +1.3101343835913005023030564188957214355468750000000000000000000000000000000000000000000000000000000000e+04 +1.2867772183412798767676576972007751464843750000000000000000000000000000000000000000000000000000000000e+04 +1.2632638740481856075348332524299621582031250000000000000000000000000000000000000000000000000000000000e+04 +1.2395460482465867244172841310501098632812500000000000000000000000000000000000000000000000000000000000e+04 +1.2155708202575220639118924736976623535156250000000000000000000000000000000000000000000000000000000000e+04 +1.1912795544193222667672671377658843994140625000000000000000000000000000000000000000000000000000000000e+04 +1.1666065248086211795452982187271118164062500000000000000000000000000000000000000000000000000000000000e+04 +1.1414771638695478031877428293228149414062500000000000000000000000000000000000000000000000000000000000e+04 +1.1158057956463577284011989831924438476562500000000000000000000000000000000000000000000000000000000000e+04 +1.0894926505671035556588321924209594726562500000000000000000000000000000000000000000000000000000000000e+04 +1.0624198588844017649535089731216430664062500000000000000000000000000000000000000000000000000000000000e+04 +1.0344459590600821684347465634346008300781250000000000000000000000000000000000000000000000000000000000e+04 +1.0053981899268188499263487756252288818359375000000000000000000000000000000000000000000000000000000000e+04 +9.7506137401109826896572485566139221191406250000000000000000000000000000000000000000000000000000000000e+03 +9.4316136849494723719544708728790283203125000000000000000000000000000000000000000000000000000000000000e+03 +9.0933948692882713658036664128303527832031250000000000000000000000000000000000000000000000000000000000e+03 +8.7311113070180672366404905915260314941406250000000000000000000000000000000000000000000000000000000000e+03 +8.3379502078379900922300294041633605957031250000000000000000000000000000000000000000000000000000000000e+03 +7.9038316694309032754972577095031738281250000000000000000000000000000000000000000000000000000000000000e+03 +7.4127824018750598042970523238182067871093750000000000000000000000000000000000000000000000000000000000e+03 +6.8368814145648402700317092239856719970703125000000000000000000000000000000000000000000000000000000000e+03 +6.1191904218508307167212478816509246826171875000000000000000000000000000000000000000000000000000000000e+03 +5.1047390461028435311163775622844696044921875000000000000000000000000000000000000000000000000000000000e+03 +1.0844026630833759554661810398101806640625000000000000000000000000000000000000000000000000000000000000e+03 +-1.0590063526482001179829239845275878906250000000000000000000000000000000000000000000000000000000000000e+04 +-2.2356800778128486854257062077522277832031250000000000000000000000000000000000000000000000000000000000e+04 +-3.4123538029775176255498081445693969726562500000000000000000000000000000000000000000000000000000000000e+04 +-4.5890275281421658291947096586227416992187500000000000000000000000000000000000000000000000000000000000e+04 +-5.7657012533068351331166923046112060546875000000000000000000000000000000000000000000000000000000000000e+04 +-6.9423749784714833367615938186645507812500000000000000000000000000000000000000000000000000000000000000e+04 +-8.1190487036361315404064953327178955078125000000000000000000000000000000000000000000000000000000000000e+04 +-9.2957224288008015719242393970489501953125000000000000000000000000000000000000000000000000000000000000e+04 +-1.0472396153965449775569140911102294921875000000000000000000000000000000000000000000000000000000000000e+05 +-1.1649069879130097979214042425155639648437500000000000000000000000000000000000000000000000000000000000e+05