From 81a846fe7d85eb8dddb0d1327a5d6de6e1f40394 Mon Sep 17 00:00:00 2001 From: Nils Schween Date: Tue, 14 Mar 2023 13:43:51 +0100 Subject: [PATCH] test to check if collect_periodic_faces works with parallel::shared::triangulation in all dim --- ...llect_period_faces_parallel_shared_tria.cc | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 tests/grid/grid_tools_collect_period_faces_parallel_shared_tria.cc diff --git a/tests/grid/grid_tools_collect_period_faces_parallel_shared_tria.cc b/tests/grid/grid_tools_collect_period_faces_parallel_shared_tria.cc new file mode 100644 index 0000000000..626af3a889 --- /dev/null +++ b/tests/grid/grid_tools_collect_period_faces_parallel_shared_tria.cc @@ -0,0 +1,81 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2001 - 2023 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE.md at +// the top level directory of deal.II. +// +// --------------------------------------------------------------------- + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +using namespace dealii; +template +void test(MPI_Comm comm) { + deallog << "dim = " << dim << std::endl; + parallel::shared::Triangulation tria(comm); + + std::vector::cell_iterator>> + matched_pairs; + + unsigned int num_refinements = 1 << 4; + + if constexpr (dim == 1) { + Point p1{0.}; + Point p2{1.}; + std::vector repitions{num_refinements}; + GridGenerator::subdivided_hyper_rectangle(tria, repitions, p1, p2, true); + + // Collect periodic faces in the x-direction + GridTools::collect_periodic_faces(tria, 0, 1, 0, matched_pairs); + // Check the size of the matched_pairs vector + if (matched_pairs.size() != 1) { + // throw error + } + } else if constexpr (dim == 2) { + Point p1{0., 0.}; + Point p2{1., 1.}; + std::vector repitions{num_refinements, num_refinements}; + GridGenerator::subdivided_hyper_rectangle(tria, repitions, p1, p2, true); + + GridTools::collect_periodic_faces(tria, 0, 1, 0, matched_pairs); + if (matched_pairs.size() != 16) { + } + } else if constexpr (dim == 3) { + Point p1{0., 0., 0.}; + Point p2{1., 1., 1.}; + std::vector repitions{num_refinements, num_refinements, + num_refinements}; + GridGenerator::subdivided_hyper_rectangle(tria, repitions, p1, p2, true); + + GridTools::collect_periodic_faces(tria, 0, 1, 0, matched_pairs); + if (matched_pairs.size() != 256) { + } + } +} + +int main(int argc, char *argv[]) { + Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1); + // mpi_initlog(); + MPI_Comm comm = MPI_COMM_WORLD; + test<1>(comm); + test<2>(comm); + test<3>(comm); + + return 0; +} -- 2.39.5