diff --git a/test/common/geometry/CMakeLists.txt b/test/common/geometry/CMakeLists.txt index d31f1ee8bf6a87c0d61720249b47890c90ee4bd0..90a842d59af9ba98dc4ecc13f2698cf1aa7ffa7c 100644 --- a/test/common/geometry/CMakeLists.txt +++ b/test/common/geometry/CMakeLists.txt @@ -7,6 +7,7 @@ dumux_add_test(SOURCES test_1d2d_intersection.cc LABELS unit) dumux_add_test(SOURCES test_2d2d_intersection.cc LABELS unit) dumux_add_test(SOURCES test_2d3d_intersection.cc LABELS unit) dumux_add_test(SOURCES test_graham_convex_hull.cc LABELS unit) +dumux_add_test(SOURCES test_intersectingentity_cartesiangrid.cc LABELS unit) dune_symlink_to_source_files(FILES ball.msh) dumux_add_test(SOURCES test_intersectionentityset.cc diff --git a/test/common/geometry/test_intersectingentity_cartesiangrid.cc b/test/common/geometry/test_intersectingentity_cartesiangrid.cc new file mode 100644 index 0000000000000000000000000000000000000000..dd7dacc0d9f774577f472f3459da3293f139f7e6 --- /dev/null +++ b/test/common/geometry/test_intersectingentity_cartesiangrid.cc @@ -0,0 +1,44 @@ +#include <config.h> + +#include <dune/common/parallel/mpihelper.hh> +#include <dune/common/fvector.hh> +#include <dune/common/exceptions.hh> +#include <dune/grid/yaspgrid.hh> + +#include <dumux/common/geometry/boundingboxtree.hh> +#include <dumux/common/geometry/intersectingentities.hh> + +template<int dimworld> +void testIntersectingEntityCartesianGrid() +{ + static constexpr int dim = dimworld; + using Yasp = Dune::YaspGrid<dim, Dune::EquidistantOffsetCoordinates<double, dimworld>>; + std::array<int, dim> cells; cells.fill(30); + Dune::FieldVector<double, dimworld> lowerLeft(1.1), upperRight(2.2); + Yasp yasp(lowerLeft, upperRight, cells); + + for (const auto& element : elements(yasp.leafGridView())) + { + const auto center = element.geometry().center(); + // test intersectsPointBoundingBox + if (!Dumux::intersectsPointBoundingBox(center, lowerLeft, upperRight)) + DUNE_THROW(Dune::Exception, "Element center not in grid bounding box!"); + + // test intersectingEntityCartesianGrid + const auto isIndex = Dumux::intersectingEntityCartesianGrid(center, lowerLeft, upperRight, cells); + const auto gridIndex = yasp.leafGridView().indexSet().index(element); + if (isIndex != gridIndex) + DUNE_THROW(Dune::Exception, "Wrong element index: intersection: " << isIndex + << ", grid index set: " << gridIndex); + } +} + +int main(int argc, char* argv[]) +{ + Dune::MPIHelper::instance(argc, argv); + testIntersectingEntityCartesianGrid<1>(); + testIntersectingEntityCartesianGrid<2>(); + testIntersectingEntityCartesianGrid<3>(); + + return 0; +}