From cde9f4b7f5dc6717f8e07726110ab65b3a1806d6 Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <github@naumov.de> Date: Thu, 31 May 2018 23:12:57 +0200 Subject: [PATCH] [T] NL/MaL; Update for removed MeshSubsets. --- .../MathLib/TestGaussLegendreIntegration.cpp | 6 ++-- Tests/NumLib/LocalToGlobalIndexMap.cpp | 30 +++++++--------- .../LocalToGlobalIndexMapMultiComponent.cpp | 24 ++++++------- Tests/NumLib/TestComponentNorms.cpp | 6 ++-- Tests/NumLib/TestExtrapolation.cpp | 4 +-- Tests/NumLib/TestMeshComponentMap.cpp | 35 ++++++++----------- Tests/NumLib/TestSerialLinearSolver.cpp | 10 +++--- Tests/NumLib/TestSparsityPattern.cpp | 24 +++++-------- 8 files changed, 59 insertions(+), 80 deletions(-) diff --git a/Tests/MathLib/TestGaussLegendreIntegration.cpp b/Tests/MathLib/TestGaussLegendreIntegration.cpp index bdf53ed9cc2..b72b9faf1dd 100644 --- a/Tests/MathLib/TestGaussLegendreIntegration.cpp +++ b/Tests/MathLib/TestGaussLegendreIntegration.cpp @@ -17,7 +17,7 @@ #include "MeshLib/Elements/Element.h" #include "MeshLib/IO/VtkIO/VtuInterface.h" -#include "MeshLib/MeshSubsets.h" +#include "MeshLib/MeshSubset.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" #include "NumLib/Fem/ShapeMatrixPolicy.h" @@ -123,8 +123,8 @@ public: : _integration_order(integration_order), _mesh_subset_all_nodes(mesh, &mesh.getNodes()) { - std::vector<MeshLib::MeshSubsets> all_mesh_subsets; - all_mesh_subsets.emplace_back(&_mesh_subset_all_nodes); + std::vector<MeshLib::MeshSubset> all_mesh_subsets{ + _mesh_subset_all_nodes}; _dof_table = std::make_unique<NumLib::LocalToGlobalIndexMap>( std::move(all_mesh_subsets), NumLib::ComponentOrder::BY_COMPONENT); diff --git a/Tests/NumLib/LocalToGlobalIndexMap.cpp b/Tests/NumLib/LocalToGlobalIndexMap.cpp index bfb05d6169b..7decd74106d 100644 --- a/Tests/NumLib/LocalToGlobalIndexMap.cpp +++ b/Tests/NumLib/LocalToGlobalIndexMap.cpp @@ -15,10 +15,9 @@ #include "NumLib/DOF/LocalToGlobalIndexMap.h" #include "MeshLib/MeshGenerators/MeshGenerator.h" -#include "MeshLib/MeshSearch/NodeSearch.h" -#include "MeshLib/MeshSubsets.h" #include "MeshLib/Mesh.h" - +#include "MeshLib/MeshSearch/NodeSearch.h" +#include "MeshLib/MeshSubset.h" class NumLibLocalToGlobalIndexMapTest : public ::testing::Test { @@ -31,8 +30,8 @@ public: std::make_unique<MeshLib::MeshSubset>(*mesh, &mesh->getNodes()); // Add two components both based on the same nodesSubset. - components.emplace_back(nodesSubset.get()); - components.emplace_back(nodesSubset.get()); + components.emplace_back(*nodesSubset); + components.emplace_back(*nodesSubset); } protected: @@ -43,7 +42,7 @@ protected: //data component 0 and 1 are assigned to all nodes in the mesh static int const comp0_id = 0; static int const comp1_id = 1; - std::vector<MeshLib::MeshSubsets> components; + std::vector<MeshLib::MeshSubset> components; std::unique_ptr<NumLib::LocalToGlobalIndexMap const> dof_map; }; @@ -102,9 +101,8 @@ TEST_F(NumLibLocalToGlobalIndexMapTest, DISABLED_SubsetByComponent) // Find unique node ids of the selected elements for testing. std::vector<MeshLib::Node*> selected_nodes = MeshLib::getUniqueNodes(some_elements); - auto const selected_subset = std::unique_ptr<MeshLib::MeshSubset const>{ - nodesSubset->getIntersectionByNodes(selected_nodes)}; - MeshLib::MeshSubsets selected_component{selected_subset.get()}; + auto selected_component = + nodesSubset->getIntersectionByNodes(selected_nodes); auto dof_map_subset = std::unique_ptr<NumLib::LocalToGlobalIndexMap>{ dof_map->deriveBoundaryConstrainedMap(1, // variable id @@ -124,7 +122,7 @@ TEST_F(NumLibLocalToGlobalIndexMapTest, DISABLED_MultipleVariablesMultipleCompon #endif { // test 2 variables (1st variable with 1 component, 2nd variable with 2 components) - components.emplace_back(nodesSubset.get()); + components.emplace_back(*nodesSubset); std::vector<int> vec_var_n_components{1, 2}; @@ -153,7 +151,7 @@ TEST_F(NumLibLocalToGlobalIndexMapTest, DISABLED_MultipleVariablesMultipleCompon #endif { // test 2 variables (1st variable with 2 component, 2nd variable with 1 components) - components.emplace_back(nodesSubset.get()); + components.emplace_back(*nodesSubset); std::vector<int> vec_var_n_components{2, 1}; @@ -186,9 +184,8 @@ TEST_F(NumLibLocalToGlobalIndexMapTest, DISABLED_MultipleVariablesMultipleCompon // - 1st variable with 2 components for all nodes, elements // - 2nd variable with 1 component for nodes of element id 1 std::vector<MeshLib::Node*> var2_nodes{const_cast<MeshLib::Node*>(mesh->getNode(1)), const_cast<MeshLib::Node*>(mesh->getNode(2))}; - auto var2_subset = - std::make_unique<MeshLib::MeshSubset>(*mesh, &var2_nodes); - components.emplace_back(var2_subset.get()); + MeshLib::MeshSubset var2_subset{*mesh, &var2_nodes}; + components.emplace_back(var2_subset); std::vector<int> vec_var_n_components{2, 1}; std::vector<std::vector<MeshLib::Element*>const*> vec_var_elements; @@ -239,9 +236,8 @@ TEST_F(NumLibLocalToGlobalIndexMapTest, DISABLED_MultipleVariablesMultipleCompon // - 1st variable with 2 components for all nodes, elements // - 2nd variable with 1 component for 1st node of element id 1 std::vector<MeshLib::Node*> var2_nodes{const_cast<MeshLib::Node*>(mesh->getNode(1))}; - auto var2_subset = - std::make_unique<MeshLib::MeshSubset>(*mesh, &var2_nodes); - components.emplace_back(var2_subset.get()); + MeshLib::MeshSubset var2_subset = {*mesh, &var2_nodes}; + components.emplace_back(var2_subset); std::vector<int> vec_var_n_components{2, 1}; std::vector<std::vector<MeshLib::Element*>const*> vec_var_elements; diff --git a/Tests/NumLib/LocalToGlobalIndexMapMultiComponent.cpp b/Tests/NumLib/LocalToGlobalIndexMapMultiComponent.cpp index 7f2425a6ef4..329385f6b83 100644 --- a/Tests/NumLib/LocalToGlobalIndexMapMultiComponent.cpp +++ b/Tests/NumLib/LocalToGlobalIndexMapMultiComponent.cpp @@ -10,15 +10,15 @@ #include <memory> -#include "NumLib/DOF/LocalToGlobalIndexMap.h" +#include "GeoLib/GEOObjects.h" +#include "GeoLib/Polyline.h" #include "MeshLib/Elements/Element.h" #include "MeshLib/Location.h" #include "MeshLib/Mesh.h" -#include "MeshLib/MeshSubsets.h" #include "MeshLib/MeshGenerators/MeshGenerator.h" #include "MeshLib/MeshSearch/NodeSearch.h" -#include "GeoLib/Polyline.h" -#include "GeoLib/GEOObjects.h" +#include "MeshLib/MeshSubset.h" +#include "NumLib/DOF/LocalToGlobalIndexMap.h" #include "MeshGeoToolsLib/MeshNodeSearcher.h" #include "MeshGeoToolsLib/BoundaryElementsSearcher.h" @@ -69,7 +69,7 @@ public: std::vector<MeL::Node*> nodes = MeL::getUniqueNodes(boundary_elements); - mesh_items_boundary.reset( + mesh_items_boundary = std::make_unique<MeshLib::MeshSubset>( mesh_items_all_nodes->getIntersectionByNodes(nodes)); } @@ -85,16 +85,16 @@ public: { assert(selected_component < static_cast<int>(num_components)); - std::vector<MeshLib::MeshSubsets> components; + std::vector<MeshLib::MeshSubset> components; for (int i = 0; i < num_components; ++i) { - components.emplace_back(mesh_items_all_nodes.get()); + components.emplace_back(*mesh_items_all_nodes); } std::vector<int> vec_var_n_components(1, num_components); dof_map = std::make_unique<NL::LocalToGlobalIndexMap>( std::move(components), vec_var_n_components, order); - MeL::MeshSubsets components_boundary{mesh_items_boundary.get()}; + MeL::MeshSubset components_boundary{*mesh_items_boundary}; dof_map_boundary.reset(dof_map->deriveBoundaryConstrainedMap( 0, // variable id @@ -110,16 +110,16 @@ public: { assert(static_cast<int>(selected_components.size()) <= num_components); - std::vector<MeshLib::MeshSubsets> components; + std::vector<MeshLib::MeshSubset> components; for (int i = 0; i < num_components; ++i) { - components.emplace_back(mesh_items_all_nodes.get()); + components.emplace_back(*mesh_items_all_nodes); } std::vector<int> vec_var_n_components(1, num_components); dof_map = std::make_unique<NL::LocalToGlobalIndexMap>( std::move(components), vec_var_n_components, order); - MeL::MeshSubsets components_boundary{mesh_items_boundary.get()}; + MeL::MeshSubset components_boundary{*mesh_items_boundary}; dof_map_boundary.reset(dof_map->deriveBoundaryConstrainedMap( 0, // variable id @@ -141,7 +141,7 @@ public: compute_global_index); std::unique_ptr<const MeshLib::Mesh> mesh; - std::unique_ptr<const MeL::MeshSubset> mesh_items_all_nodes; + std::unique_ptr<MeL::MeshSubset const> mesh_items_all_nodes; GeoLib::GEOObjects geo_objs; diff --git a/Tests/NumLib/TestComponentNorms.cpp b/Tests/NumLib/TestComponentNorms.cpp index 1b0d503bf8b..22d81a46dd8 100644 --- a/Tests/NumLib/TestComponentNorms.cpp +++ b/Tests/NumLib/TestComponentNorms.cpp @@ -27,12 +27,12 @@ #include "NumLib/DOF/DOFTableUtil.h" #include "Tests/VectorUtils.h" -static std::vector<MeshLib::MeshSubsets> createMeshSubsets( +static std::vector<MeshLib::MeshSubset> createMeshSubsets( MeshLib::MeshSubset const& mesh_subset, unsigned const num_components) { - std::vector<MeshLib::MeshSubsets> mesh_subsets; + std::vector<MeshLib::MeshSubset> mesh_subsets; for (unsigned i=0; i<num_components; ++i) - mesh_subsets.emplace_back(&mesh_subset); + mesh_subsets.emplace_back(mesh_subset); return mesh_subsets; } diff --git a/Tests/NumLib/TestExtrapolation.cpp b/Tests/NumLib/TestExtrapolation.cpp index 3bbe169279b..84cca7bdcbb 100644 --- a/Tests/NumLib/TestExtrapolation.cpp +++ b/Tests/NumLib/TestExtrapolation.cpp @@ -151,8 +151,8 @@ public: : _integration_order(integration_order), _mesh_subset_all_nodes(mesh, &mesh.getNodes()) { - std::vector<MeshLib::MeshSubsets> all_mesh_subsets; - all_mesh_subsets.emplace_back(&_mesh_subset_all_nodes); + std::vector<MeshLib::MeshSubset> all_mesh_subsets{ + _mesh_subset_all_nodes}; _dof_table = std::make_unique<NumLib::LocalToGlobalIndexMap>( std::move(all_mesh_subsets), NumLib::ComponentOrder::BY_COMPONENT); diff --git a/Tests/NumLib/TestMeshComponentMap.cpp b/Tests/NumLib/TestMeshComponentMap.cpp index 7a98654aaae..68ca592e4b7 100644 --- a/Tests/NumLib/TestMeshComponentMap.cpp +++ b/Tests/NumLib/TestMeshComponentMap.cpp @@ -17,7 +17,7 @@ #include "NumLib/DOF/MeshComponentMap.h" #include "MeshLib/MeshGenerators/MeshGenerator.h" -#include "MeshLib/MeshSubsets.h" +#include "MeshLib/MeshSubset.h" class NumLibMeshComponentMapTest : public ::testing::Test { @@ -27,32 +27,29 @@ class NumLibMeshComponentMapTest : public ::testing::Test using MeshComponentMap = NumLib::MeshComponentMap; public: - NumLibMeshComponentMapTest() - : mesh(nullptr), nodesSubset(nullptr), cmap(nullptr) - { - mesh = MeshLib::MeshGenerator::generateLineMesh(1.0, mesh_size); - nodesSubset = new MeshLib::MeshSubset(*mesh, &mesh->getNodes()); - - // Add two components both based on the same nodesSubset. - components.emplace_back(nodesSubset); - components.emplace_back(nodesSubset); + NumLibMeshComponentMapTest() : mesh(nullptr), cmap(nullptr) + { + mesh = MeshLib::MeshGenerator::generateLineMesh(1.0, mesh_size); + MeshLib::MeshSubset nodesSubset{*mesh, &mesh->getNodes()}; + + // Add two components both based on the same nodesSubset. + components.emplace_back(nodesSubset); + components.emplace_back(nodesSubset); } ~NumLibMeshComponentMapTest() override { delete cmap; - delete nodesSubset; delete mesh; } static std::size_t const mesh_size = 9; MeshLib::Mesh const* mesh; - MeshLib::MeshSubset const* nodesSubset; //data component 0 and 1 are assigned to all nodes in the mesh static std::size_t const comp0_id = 0; static std::size_t const comp1_id = 1; - std::vector<MeshLib::MeshSubsets> components; + std::vector<MeshLib::MeshSubset> components; MeshComponentMap const* cmap; // @@ -157,8 +154,7 @@ TEST_F(NumLibMeshComponentMapTest, DISABLED_SubsetOfNodesByComponent) for (std::size_t id : ids) some_nodes.push_back(const_cast<MeshLib::Node*>(mesh->getNode(id))); - MeshLib::MeshSubset const some_nodes_mesh_subset(*mesh, &some_nodes); - MeshLib::MeshSubsets const selected_component{&some_nodes_mesh_subset}; + MeshLib::MeshSubset const selected_component(*mesh, &some_nodes); int const selected_component_id = 1; @@ -193,8 +189,7 @@ TEST_F(NumLibMeshComponentMapTest, DISABLED_SubsetOfNodesByLocation) for (std::size_t id : ids) some_nodes.push_back(const_cast<MeshLib::Node*>(mesh->getNode(id))); - MeshLib::MeshSubset const some_nodes_mesh_subset(*mesh, &some_nodes); - MeshLib::MeshSubsets const selected_component{&some_nodes_mesh_subset}; + MeshLib::MeshSubset const selected_component(*mesh, &some_nodes); int const selected_component_id = 1; @@ -229,8 +224,7 @@ TEST_F(NumLibMeshComponentMapTest, DISABLED_MulticomponentVariable) for (std::size_t id : ids) some_nodes.push_back(const_cast<MeshLib::Node*>(mesh->getNode(id))); - MeshLib::MeshSubset const some_nodes_mesh_subset(*mesh, &some_nodes); - MeshLib::MeshSubsets const selected_component{&some_nodes_mesh_subset}; + MeshLib::MeshSubset const selected_component(*mesh, &some_nodes); // Subset the original cmap. std::vector<int> const selected_component_ids = {0, 1}; @@ -267,8 +261,7 @@ TEST_F(NumLibMeshComponentMapTest, for (std::size_t id : ids) some_nodes.push_back(const_cast<MeshLib::Node*>(mesh->getNode(id))); - MeshLib::MeshSubset const some_nodes_mesh_subset(*mesh, &some_nodes); - MeshLib::MeshSubsets const selected_component{&some_nodes_mesh_subset}; + MeshLib::MeshSubset const selected_component(*mesh, &some_nodes); // Subset the original cmap. std::vector<int> const selected_component_ids = {1}; diff --git a/Tests/NumLib/TestSerialLinearSolver.cpp b/Tests/NumLib/TestSerialLinearSolver.cpp index 55380e67902..1758498ff03 100644 --- a/Tests/NumLib/TestSerialLinearSolver.cpp +++ b/Tests/NumLib/TestSerialLinearSolver.cpp @@ -26,8 +26,8 @@ #include "MeshLib/Elements/Element.h" #include "MeshLib/Elements/Quad.h" #include "MeshLib/Location.h" -#include "MeshLib/MeshSubsets.h" #include "MeshLib/Mesh.h" +#include "MeshLib/MeshSubset.h" #include "MeshLib/Node.h" #include "NumLib/NumericsConfig.h" @@ -45,17 +45,15 @@ TEST(NumLibSerialLinearSolver, Steady2DdiffusionQuadElem) //-------------------------------------------------------------------------- // Prepare mesh items where data are assigned //-------------------------------------------------------------------------- - const MeshLib::MeshSubset mesh_items_all_nodes(*ex1.msh, - &ex1.msh->getNodes()); + MeshLib::MeshSubset const mesh_items_all_nodes{*ex1.msh, + &ex1.msh->getNodes()}; //-------------------------------------------------------------------------- // Allocate a coefficient matrix, RHS and solution vectors //-------------------------------------------------------------------------- // define a mesh item composition in a vector - std::vector<MeshLib::MeshSubsets> vec_comp_dis; - vec_comp_dis.emplace_back(&mesh_items_all_nodes); NumLib::LocalToGlobalIndexMap local_to_global_index_map( - std::move(vec_comp_dis), NumLib::ComponentOrder::BY_COMPONENT); + {mesh_items_all_nodes}, NumLib::ComponentOrder::BY_COMPONENT); //-------------------------------------------------------------------------- // Construct a linear system diff --git a/Tests/NumLib/TestSparsityPattern.cpp b/Tests/NumLib/TestSparsityPattern.cpp index b436afd78cb..0f241743c16 100644 --- a/Tests/NumLib/TestSparsityPattern.cpp +++ b/Tests/NumLib/TestSparsityPattern.cpp @@ -26,11 +26,9 @@ TEST(NumLib_SparsityPattern, DISABLED_SingleComponentLinearMesh) { std::unique_ptr<MeshLib::Mesh> mesh( MeshLib::MeshGenerator::generateLineMesh(3u, 1.)); - auto nodesSubset = - std::make_unique<MeshLib::MeshSubset const>(*mesh, &mesh->getNodes()); + MeshLib::MeshSubset nodesSubset{*mesh, &mesh->getNodes()}; - std::vector<MeshLib::MeshSubsets> components; - components.emplace_back(nodesSubset.get()); + std::vector<MeshLib::MeshSubset> components{nodesSubset}; NumLib::LocalToGlobalIndexMap dof_map( std::move(components), NumLib::ComponentOrder::BY_COMPONENT); @@ -55,11 +53,9 @@ TEST(NumLib_SparsityPattern, DISABLED_SingleComponentQuadraticMesh) MeshLib::MeshGenerator::generateLineMesh(3u, 1.)); std::unique_ptr<MeshLib::Mesh> mesh( MeshLib::createQuadraticOrderMesh(*linear_mesh)); - auto nodesSubset = - std::make_unique<MeshLib::MeshSubset const>(*mesh, &mesh->getNodes()); + MeshLib::MeshSubset nodesSubset{*mesh, &mesh->getNodes()}; - std::vector<MeshLib::MeshSubsets> components; - components.emplace_back(nodesSubset.get()); + std::vector<MeshLib::MeshSubset> components{nodesSubset}; NumLib::LocalToGlobalIndexMap dof_map( std::move(components), NumLib::ComponentOrder::BY_COMPONENT); @@ -85,12 +81,9 @@ TEST(NumLib_SparsityPattern, DISABLED_MultipleComponentsLinearMesh) { std::unique_ptr<MeshLib::Mesh> mesh( MeshLib::MeshGenerator::generateLineMesh(3u, 1.)); - auto nodesSubset = - std::make_unique<MeshLib::MeshSubset const>(*mesh, &mesh->getNodes()); + MeshLib::MeshSubset nodesSubset{*mesh, &mesh->getNodes()}; - std::vector<MeshLib::MeshSubsets> components; - components.emplace_back(nodesSubset.get()); - components.emplace_back(nodesSubset.get()); + std::vector<MeshLib::MeshSubset> components{nodesSubset, nodesSubset}; NumLib::LocalToGlobalIndexMap dof_map( std::move(components), NumLib::ComponentOrder::BY_COMPONENT); @@ -124,9 +117,8 @@ TEST(NumLib_SparsityPattern, DISABLED_MultipleComponentsLinearQuadraticMesh) auto allNodesSubset = std::make_unique<MeshLib::MeshSubset const>(*mesh, &mesh->getNodes()); - std::vector<MeshLib::MeshSubsets> components; - components.emplace_back(baseNodesSubset.get()); - components.emplace_back(allNodesSubset.get()); + std::vector<MeshLib::MeshSubset> components{*baseNodesSubset, + *allNodesSubset}; NumLib::LocalToGlobalIndexMap dof_map( std::move(components), NumLib::ComponentOrder::BY_COMPONENT); -- GitLab