From 5e247bf07d47675c61b60d5c5b42f871170a653a Mon Sep 17 00:00:00 2001 From: Simon Praetorius <simon.praetorius@tu-dresden.de> Date: Mon, 22 Oct 2018 22:52:29 -0400 Subject: [PATCH] added integrate tests --- src/amdis/gridfunctions/Integrate.hpp | 2 +- test/CMakeLists.txt | 4 +++ test/IntegrateTest.cpp | 48 +++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 test/IntegrateTest.cpp diff --git a/src/amdis/gridfunctions/Integrate.hpp b/src/amdis/gridfunctions/Integrate.hpp index c84833e2..a433f4c3 100644 --- a/src/amdis/gridfunctions/Integrate.hpp +++ b/src/amdis/gridfunctions/Integrate.hpp @@ -61,7 +61,7 @@ namespace AMDiS return 0.0; #else return Dune::Hybrid::ifElse(bool_<expr_has_order>, - [&](auto) { return Impl::integrateImpl(std::forward<decltype(gridFct)>(gridFct), gridView, makeQuad); }, + [&](auto) { return Impl::integrateImpl(gridFct, gridView, makeQuad); }, [ ](auto) { return 0.0; }); #endif } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a18847f2..35cf6057 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -24,6 +24,10 @@ dune_add_test(SOURCES FiniteElementTypeTest.cpp dune_add_test(SOURCES FilesystemTest.cpp LINK_LIBRARIES amdis) +dune_add_test(SOURCES IntegrateTest.cpp + LINK_LIBRARIES amdis + CMD_ARGS "${CMAKE_SOURCE_DIR}/examples/init/ellipt.dat.2d") + dune_add_test(SOURCES MarkerTest.cpp LINK_LIBRARIES amdis CMD_ARGS "${CMAKE_SOURCE_DIR}/examples/init/marker.dat.2d") diff --git a/test/IntegrateTest.cpp b/test/IntegrateTest.cpp new file mode 100644 index 00000000..a94c26f5 --- /dev/null +++ b/test/IntegrateTest.cpp @@ -0,0 +1,48 @@ +// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- +// vi: set et ts=4 sw=2 sts=2: + +#include <iostream> + +#include <dune/geometry/type.hh> + +#include <amdis/AMDiS.hpp> +#include <amdis/ProblemStat.hpp> +#include <amdis/Operators.hpp> +#include <amdis/common/Literals.hpp> +#include <amdis/common/FieldMatVec.hpp> +#include <amdis/gridfunctions/Integrate.hpp> + +#include "Tests.hpp" + +using namespace AMDiS; + +using ElliptParam = YaspGridBasis<2, 2>; +using ElliptProblem = ProblemStat<ElliptParam>; + +int main(int argc, char** argv) +{ + AMDiS::init(argc, argv); + + ElliptProblem prob("ellipt"); + prob.initialize(INIT_ALL); + + auto u = prob.getSolution(0); + auto gv = u.basis().gridView(); + + u << 1.0; + auto i1 = integrate(1.0, gv); + auto i2 = integrate(u, gv); + auto i3 = integrate([](auto const& x) { return 1.0; }, gv, 0); + + AMDIS_TEST(i1 == 1.0); + AMDIS_TEST(i2 == 1.0); + AMDIS_TEST(i3 == 1.0); + + auto quad = Dune::QuadratureRules<double,2>::rule(Dune::GeometryTypes::quadrilateral, 0); + auto i4 = integrate([](auto const& x) { return 1.0; }, gv, quad); + + AMDIS_TEST(i4 == 1.0); + + AMDiS::finalize(); + return 0; +} -- GitLab