diff --git a/tests/MeshDataBaseForTests.cpp b/tests/MeshDataBaseForTests.cpp index 1f2b485edcb7f7b3fadf35d845b59f23c1a03274..1615673d0ba28d7328ab5faef7830a774d5c75f4 100644 --- a/tests/MeshDataBaseForTests.cpp +++ b/tests/MeshDataBaseForTests.cpp @@ -1,11 +1,15 @@ #include <MeshDataBaseForTests.hpp> + #include <mesh/CartesianMeshBuilder.hpp> #include <mesh/Connectivity.hpp> #include <mesh/GmshReader.hpp> #include <mesh/MeshVariant.hpp> +#include <utils/GlobalVariableManager.hpp> #include <utils/Messenger.hpp> #include <utils/PugsAssert.hpp> +#include <NbGhostLayersTester.hpp> + #include <filesystem> #include <fstream> @@ -13,17 +17,22 @@ const MeshDataBaseForTests* MeshDataBaseForTests::m_instance = nullptr; MeshDataBaseForTests::MeshDataBaseForTests() { - m_cartesian_1d_mesh = CartesianMeshBuilder{TinyVector<1>{-1}, TinyVector<1>{3}, TinyVector<1, size_t>{23}}.mesh(); + for (size_t nb_ghost_layers = 1; nb_ghost_layers <= m_max_nb_ghost_layers; ++nb_ghost_layers) { + NbGhostLayersTester t{nb_ghost_layers}; - m_cartesian_2d_mesh = - CartesianMeshBuilder{TinyVector<2>{0, -1}, TinyVector<2>{3, 2}, TinyVector<2, size_t>{6, 7}}.mesh(); + m_cartesian_1d_mesh.push_back( + CartesianMeshBuilder{TinyVector<1>{-1}, TinyVector<1>{3}, TinyVector<1, size_t>{23}}.mesh()); - m_cartesian_3d_mesh = - CartesianMeshBuilder{TinyVector<3>{0, 1, 0}, TinyVector<3>{2, -1, 3}, TinyVector<3, size_t>{6, 7, 4}}.mesh(); + m_cartesian_2d_mesh.push_back( + CartesianMeshBuilder{TinyVector<2>{0, -1}, TinyVector<2>{3, 2}, TinyVector<2, size_t>{6, 7}}.mesh()); - m_unordered_1d_mesh = _buildUnordered1dMesh(); - m_hybrid_2d_mesh = _buildHybrid2dMesh(); - m_hybrid_3d_mesh = _buildHybrid3dMesh(); + m_cartesian_3d_mesh.push_back( + CartesianMeshBuilder{TinyVector<3>{0, 1, 0}, TinyVector<3>{2, -1, 3}, TinyVector<3, size_t>{6, 7, 4}}.mesh()); + + m_unordered_1d_mesh.push_back(_buildUnordered1dMesh()); + m_hybrid_2d_mesh.push_back(_buildHybrid2dMesh()); + m_hybrid_3d_mesh.push_back(_buildHybrid3dMesh()); + } } const MeshDataBaseForTests& @@ -50,37 +59,49 @@ MeshDataBaseForTests::destroy() std::shared_ptr<const MeshVariant> MeshDataBaseForTests::cartesian1DMesh() const { - return m_cartesian_1d_mesh; + const size_t nb_ghost_layers = GlobalVariableManager::instance().getNumberOfGhostLayers(); + Assert((nb_ghost_layers >= 1) and (nb_ghost_layers <= m_max_nb_ghost_layers)); + return m_cartesian_1d_mesh[nb_ghost_layers - 1]; } std::shared_ptr<const MeshVariant> MeshDataBaseForTests::cartesian2DMesh() const { - return m_cartesian_2d_mesh; + const size_t nb_ghost_layers = GlobalVariableManager::instance().getNumberOfGhostLayers(); + Assert((nb_ghost_layers >= 1) and (nb_ghost_layers <= m_max_nb_ghost_layers)); + return m_cartesian_2d_mesh[nb_ghost_layers - 1]; } std::shared_ptr<const MeshVariant> MeshDataBaseForTests::cartesian3DMesh() const { - return m_cartesian_3d_mesh; + const size_t nb_ghost_layers = GlobalVariableManager::instance().getNumberOfGhostLayers(); + Assert((nb_ghost_layers >= 1) and (nb_ghost_layers <= m_max_nb_ghost_layers)); + return m_cartesian_3d_mesh[nb_ghost_layers - 1]; } std::shared_ptr<const MeshVariant> MeshDataBaseForTests::unordered1DMesh() const { - return m_unordered_1d_mesh; + const size_t nb_ghost_layers = GlobalVariableManager::instance().getNumberOfGhostLayers(); + Assert((nb_ghost_layers >= 1) and (nb_ghost_layers <= m_max_nb_ghost_layers)); + return m_unordered_1d_mesh[nb_ghost_layers - 1]; } std::shared_ptr<const MeshVariant> MeshDataBaseForTests::hybrid2DMesh() const { - return m_hybrid_2d_mesh; + const size_t nb_ghost_layers = GlobalVariableManager::instance().getNumberOfGhostLayers(); + Assert((nb_ghost_layers >= 1) and (nb_ghost_layers <= m_max_nb_ghost_layers)); + return m_hybrid_2d_mesh[nb_ghost_layers - 1]; } std::shared_ptr<const MeshVariant> MeshDataBaseForTests::hybrid3DMesh() const { - return m_hybrid_3d_mesh; + const size_t nb_ghost_layers = GlobalVariableManager::instance().getNumberOfGhostLayers(); + Assert((nb_ghost_layers >= 1) and (nb_ghost_layers <= m_max_nb_ghost_layers)); + return m_hybrid_3d_mesh[nb_ghost_layers - 1]; } std::shared_ptr<const MeshVariant> diff --git a/tests/MeshDataBaseForTests.hpp b/tests/MeshDataBaseForTests.hpp index 2b092d544271fbd1b1d0488ed73c9c5a401d548b..f0ab29fa9a927c01f16f94925fba7eb750ffd591 100644 --- a/tests/MeshDataBaseForTests.hpp +++ b/tests/MeshDataBaseForTests.hpp @@ -4,6 +4,7 @@ #include <array> #include <memory> #include <string> +#include <vector> class MeshVariant; @@ -35,15 +36,17 @@ class MeshDataBaseForTests private: explicit MeshDataBaseForTests(); + constexpr static size_t m_max_nb_ghost_layers = 3; + static const MeshDataBaseForTests* m_instance; - std::shared_ptr<const MeshVariant> m_cartesian_1d_mesh; - std::shared_ptr<const MeshVariant> m_cartesian_2d_mesh; - std::shared_ptr<const MeshVariant> m_cartesian_3d_mesh; + std::vector<std::shared_ptr<const MeshVariant>> m_cartesian_1d_mesh; + std::vector<std::shared_ptr<const MeshVariant>> m_cartesian_2d_mesh; + std::vector<std::shared_ptr<const MeshVariant>> m_cartesian_3d_mesh; - std::shared_ptr<const MeshVariant> m_unordered_1d_mesh; - std::shared_ptr<const MeshVariant> m_hybrid_2d_mesh; - std::shared_ptr<const MeshVariant> m_hybrid_3d_mesh; + std::vector<std::shared_ptr<const MeshVariant>> m_unordered_1d_mesh; + std::vector<std::shared_ptr<const MeshVariant>> m_hybrid_2d_mesh; + std::vector<std::shared_ptr<const MeshVariant>> m_hybrid_3d_mesh; std::shared_ptr<const MeshVariant> _buildUnordered1dMesh(); std::shared_ptr<const MeshVariant> _buildHybrid2dMesh(); diff --git a/tests/test_PolynomialReconstruction_degree_2.cpp b/tests/test_PolynomialReconstruction_degree_2.cpp index 350a57426f4c70629e39edd3c2edb3754e350cec..dce627cabab012e398a271b88aafc5131e4338d5 100644 --- a/tests/test_PolynomialReconstruction_degree_2.cpp +++ b/tests/test_PolynomialReconstruction_degree_2.cpp @@ -14,12 +14,17 @@ #include <DiscreteFunctionDPkForTests.hpp> #include <MeshDataBaseForTests.hpp> +#include <NbGhostLayersTester.hpp> + // clazy:excludeall=non-pod-global-static TEST_CASE("PolynomialReconstruction_degree_2", "[scheme]") { constexpr size_t degree = 2; + constexpr size_t nb_ghost_layers = 2; + NbGhostLayersTester t{nb_ghost_layers}; + SECTION("without symmetries") { std::vector<PolynomialReconstructionDescriptor> descriptor_list = @@ -158,9 +163,7 @@ TEST_CASE("PolynomialReconstruction_degree_2", "[scheme]") -1.7 + 2.1 * x[0] - 0.7 * x[0] * x[0], // +1.4 - 0.6 * x[0] + 1.9 * x[0] * x[0]}; }, - [](const R1& x) -> R3 { - return R3{+1.6 + 0.7 * x[0], -2.1 + 1.2 * x[0], +1.1 - 0.3 * x[0]}; - }}; + [](const R1& x) -> R3 { return R3{+1.6 + 0.7 * x[0], -2.1 + 1.2 * x[0], +1.1 - 0.3 * x[0]}; }}; DiscreteFunctionP0Vector Vh = test_only::exact_projection(mesh, degree, vector_exact);