From d15bc96784c25f7a9d31ef72410b487585af95a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Thu, 10 Oct 2024 18:31:26 +0200 Subject: [PATCH] Few code clean-up --- src/mesh/Stencil.hpp | 34 +++++++++++++++++++++++-- src/mesh/StencilBuilder.cpp | 7 ++--- src/scheme/PolynomialReconstruction.cpp | 14 +++++----- tests/test_StencilBuilder.cpp | 8 +++--- 4 files changed, 47 insertions(+), 16 deletions(-) diff --git a/src/mesh/Stencil.hpp b/src/mesh/Stencil.hpp index 900c1b4d2..eb4864c7d 100644 --- a/src/mesh/Stencil.hpp +++ b/src/mesh/Stencil.hpp @@ -8,8 +8,38 @@ class Stencil { public: - using BoundaryDescriptorStencilList = - std::vector<std::pair<std::shared_ptr<const IBoundaryDescriptor>, ConnectivityMatrix>>; + class BoundaryDescriptorStencil + { + private: + std::shared_ptr<const IBoundaryDescriptor> m_iboundary_descriptor; + ConnectivityMatrix m_stencil; + + public: + const IBoundaryDescriptor& + boundaryDescriptor() const + { + return *m_iboundary_descriptor; + } + + const ConnectivityMatrix& + stencil() const + { + return m_stencil; + } + + BoundaryDescriptorStencil(const std::shared_ptr<const IBoundaryDescriptor>& iboundary_descriptor, + const ConnectivityMatrix& stencil) + : m_iboundary_descriptor{iboundary_descriptor}, m_stencil{stencil} + {} + + BoundaryDescriptorStencil(const BoundaryDescriptorStencil&) = default; + BoundaryDescriptorStencil(BoundaryDescriptorStencil&&) = default; + + BoundaryDescriptorStencil() = default; + ~BoundaryDescriptorStencil() = default; + }; + + using BoundaryDescriptorStencilList = std::vector<BoundaryDescriptorStencil>; private: ConnectivityMatrix m_stencil; diff --git a/src/mesh/StencilBuilder.cpp b/src/mesh/StencilBuilder.cpp index ddff37e0c..30e922ec2 100644 --- a/src/mesh/StencilBuilder.cpp +++ b/src/mesh/StencilBuilder.cpp @@ -318,9 +318,10 @@ StencilBuilder::_build(const ConnectivityType& connectivity, size_t i = 0; for (auto&& p_boundary_descriptor : symmetry_boundary_descriptor_list) { symmetry_boundary_stencil_list.emplace_back( - std::make_pair(p_boundary_descriptor, - ConnectivityMatrix{symmetry_row_map_list[i], - convert_to_array(symmetry_column_indices_vector[i])})); + Stencil::BoundaryDescriptorStencil{p_boundary_descriptor, + ConnectivityMatrix{symmetry_row_map_list[i], + convert_to_array( + symmetry_column_indices_vector[i])}}); ++i; } } diff --git a/src/scheme/PolynomialReconstruction.cpp b/src/scheme/PolynomialReconstruction.cpp index b0cacf9d9..7bcf3a5c6 100644 --- a/src/scheme/PolynomialReconstruction.cpp +++ b/src/scheme/PolynomialReconstruction.cpp @@ -785,7 +785,7 @@ PolynomialReconstruction::_build( auto stencil_cell_list = stencil[cell_id]; size_t stencil_size = stencil_cell_list.size(); for (size_t i = 0; i < m_descriptor.symmetryBoundaryDescriptorList().size(); ++i) { - auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i].second; + auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i].stencil(); stencil_size += ghost_stencil[cell_id].size(); } @@ -898,7 +898,7 @@ PolynomialReconstruction::_build( } for (size_t i_symmetry = 0; i_symmetry < stencil.symmetryBoundaryStencilList().size(); ++i_symmetry) { - auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].second; + auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].stencil(); auto ghost_cell_list = ghost_stencil[cell_j_id]; for (size_t i = 0; i < ghost_cell_list.size(); ++i, ++index) { const CellId cell_i_id = ghost_cell_list[i]; @@ -954,7 +954,7 @@ PolynomialReconstruction::_build( } for (size_t i_symmetry = 0; i_symmetry < stencil.symmetryBoundaryStencilList().size(); ++i_symmetry) { - auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].second; + auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].stencil(); auto ghost_cell_list = ghost_stencil[cell_j_id]; for (size_t i = 0; i < ghost_cell_list.size(); ++i, ++index) { const CellId cell_i_id = ghost_cell_list[i]; @@ -989,7 +989,7 @@ PolynomialReconstruction::_build( } } for (size_t i_symmetry = 0; i_symmetry < stencil.symmetryBoundaryStencilList().size(); ++i_symmetry) { - auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].second; + auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].stencil(); auto ghost_cell_list = ghost_stencil[cell_j_id]; const Rd& origin = symmetry_origin_list[i_symmetry]; @@ -1034,7 +1034,7 @@ PolynomialReconstruction::_build( } } for (size_t i_symmetry = 0; i_symmetry < stencil.symmetryBoundaryStencilList().size(); ++i_symmetry) { - auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].second; + auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].stencil(); auto ghost_cell_list = ghost_stencil[cell_j_id]; const Rd& origin = symmetry_origin_list[i_symmetry]; @@ -1079,7 +1079,7 @@ PolynomialReconstruction::_build( } } for (size_t i_symmetry = 0; i_symmetry < stencil.symmetryBoundaryStencilList().size(); ++i_symmetry) { - auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].second; + auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].stencil(); auto ghost_cell_list = ghost_stencil[cell_j_id]; const Rd& origin = symmetry_origin_list[i_symmetry]; @@ -1120,7 +1120,7 @@ PolynomialReconstruction::_build( } } for (size_t i_symmetry = 0; i_symmetry < stencil.symmetryBoundaryStencilList().size(); ++i_symmetry) { - auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].second; + auto& ghost_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry].stencil(); auto ghost_cell_list = ghost_stencil[cell_j_id]; const Rd& origin = symmetry_origin_list[i_symmetry]; diff --git a/tests/test_StencilBuilder.cpp b/tests/test_StencilBuilder.cpp index 0ef8d97ba..754a443a7 100644 --- a/tests/test_StencilBuilder.cpp +++ b/tests/test_StencilBuilder.cpp @@ -130,7 +130,7 @@ TEST_CASE("StencilBuilder", "[mesh]") is_empty &= (stencil[cell_id].size() == 0); for (size_t i_symmetry_stencil = 0; i_symmetry_stencil < stencil.symmetryBoundaryStencilList().size(); ++i_symmetry_stencil) { - is_empty &= (stencil.symmetryBoundaryStencilList()[i_symmetry_stencil].second[cell_id].size() == 0); + is_empty &= (stencil.symmetryBoundaryStencilList()[i_symmetry_stencil].stencil()[cell_id].size() == 0); } } } @@ -148,10 +148,10 @@ TEST_CASE("StencilBuilder", "[mesh]") for (size_t i_symmetry_stencil = 0; i_symmetry_stencil < stencil.symmetryBoundaryStencilList().size(); ++i_symmetry_stencil) { - auto p_boundary_descriptor = stencil.symmetryBoundaryStencilList()[i_symmetry_stencil].first; - const IBoundaryDescriptor& boundary_descriptor = *p_boundary_descriptor; + const IBoundaryDescriptor& boundary_descriptor = + stencil.symmetryBoundaryStencilList()[i_symmetry_stencil].boundaryDescriptor(); - auto boundary_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry_stencil].second; + auto boundary_stencil = stencil.symmetryBoundaryStencilList()[i_symmetry_stencil].stencil(); auto boundary_node_list = getMeshFlatNodeBoundary(mesh, boundary_descriptor); CellValue<bool> boundary_cell{mesh.connectivity()}; -- GitLab