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