From 62780add97114990a3901900fc38d7c74daf6cd1 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Mon, 11 Feb 2019 11:26:37 +0100
Subject: [PATCH] Remove addRefFaceList from Connectivity

This information is to be provided by means of ConnectivityDescriptor.

Adding references lists (dynamically: using Connectivity) be needed at some
point, but in this early development phase, one needs to clearly separate stats,
and the chosen path is to build Connectivity from ConnecticityDescriptor.
---
 src/mesh/Connectivity.hpp |  6 ------
 src/mesh/GmshReader.cpp   | 32 ++++++++++++++------------------
 2 files changed, 14 insertions(+), 24 deletions(-)

diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp
index b2c7bfec7..fea77ee29 100644
--- a/src/mesh/Connectivity.hpp
+++ b/src/mesh/Connectivity.hpp
@@ -407,12 +407,6 @@ class Connectivity final
     return _lazzyBuildItemNumberInTheirChild(m_node_local_numbers_in_their_faces);
   }
 
-  [[deprecated("Use connectivity descriptor")]]
-  void addRefFaceList(const RefFaceList& ref_face_list)
-  {
-    m_ref_face_list.push_back(ref_face_list);
-  }
-
   size_t numberOfRefFaceList() const
   {
     return m_ref_face_list.size();
diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp
index bc7c9cdb3..0ff0f36ad 100644
--- a/src/mesh/GmshReader.cpp
+++ b/src/mesh/GmshReader.cpp
@@ -2099,21 +2099,14 @@ GmshReader::__proceedData()
               descriptor.node_owner_vector.end(),
               parallel::rank());
 
-    std::shared_ptr p_connectivity = std::make_shared<Connectivity3D>(descriptor);
-    Connectivity3D& connectivity = *p_connectivity;
     const auto& node_number_vector = descriptor.node_number_vector;
 
     using Face = ConnectivityFace<3>;
     const std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map
         = [&]  {
             std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map;
-            const auto& face_node_list = connectivity.faceToNodeMatrix();
-            for (FaceId l=0; l<connectivity.numberOfFaces(); ++l) {
-              const auto& node_list = face_node_list[l];
-              std::vector<unsigned int> node_vector(node_list.size());
-              for (size_t r=0; r<node_list.size(); ++r) {
-                node_vector[r] = node_list[r];
-              }
+            for (FaceId l=0; l<descriptor.face_to_node_vector.size(); ++l) {
+              const auto& node_vector = descriptor.face_to_node_vector[l];
               face_to_id_map[Face(node_vector, node_number_vector)] = l;
             }
             return face_to_id_map;
@@ -2199,15 +2192,19 @@ GmshReader::__proceedData()
         }
       }
     }
+
     for (const auto& ref_face_list : ref_faces_map) {
       Array<FaceId> face_list(ref_face_list.second.size());
       for (size_t j=0; j<ref_face_list.second.size(); ++j) {
         face_list[j]=ref_face_list.second[j];
       }
       const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_face_list.first);
-      connectivity.addRefFaceList(RefFaceList(physical_ref_id.refId(), face_list));
+      descriptor.addRefFaceList(RefFaceList(physical_ref_id.refId(), face_list));
     }
 
+    std::shared_ptr p_connectivity = std::make_shared<Connectivity3D>(descriptor);
+    Connectivity3D& connectivity = *p_connectivity;
+
     using MeshType = Mesh<Connectivity3D>;
     using Rd = TinyVector<3, double>;
 
@@ -2267,18 +2264,14 @@ GmshReader::__proceedData()
               descriptor.node_owner_vector.end(),
               parallel::rank());
 
-    std::shared_ptr p_connectivity = std::make_shared<Connectivity2D>(descriptor);
-    Connectivity2D& connectivity = *p_connectivity;
-
     using Face = ConnectivityFace<2>;
     const auto& node_number_vector = descriptor.node_number_vector;
     const std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map
         = [&]  {
             std::unordered_map<Face, FaceId, typename Face::Hash> face_to_id_map;
-            const auto& face_node_list = connectivity.faceToNodeMatrix();
-            for (FaceId l=0; l<connectivity.numberOfFaces(); ++l) {
-              const auto& node_list = face_node_list[l];
-              face_to_id_map[Face({node_list[0], node_list[1]}, node_number_vector)] = l;
+            for (FaceId l=0; l<descriptor.face_to_node_vector.size(); ++l) {
+              const auto& node_vector = descriptor.face_to_node_vector[l];
+              face_to_id_map[Face(node_vector, node_number_vector)] = l;
             }
             return face_to_id_map;
           } ();
@@ -2333,9 +2326,12 @@ GmshReader::__proceedData()
         face_list[j]=ref_face_list.second[j];
       }
       const PhysicalRefId& physical_ref_id = m_physical_ref_map.at(ref_face_list.first);
-      connectivity.addRefFaceList(RefFaceList(physical_ref_id.refId(), face_list));
+      descriptor.addRefFaceList(RefFaceList(physical_ref_id.refId(), face_list));
     }
 
+    std::shared_ptr p_connectivity = std::make_shared<Connectivity2D>(descriptor);
+    Connectivity2D& connectivity = *p_connectivity;
+
     std::map<unsigned int, std::vector<unsigned int>> ref_points_map;
     for (unsigned int r=0; r<__points.size(); ++r) {
       const unsigned int point_number = __points[r];
-- 
GitLab