From fa25e2630c512fb79c0a01a8b73cde9a6e259f4f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com>
Date: Tue, 11 Jan 2022 16:55:03 +0100
Subject: [PATCH] Fix dual connectivity in 1d

---
 src/mesh/Dual1DConnectivityBuilder.cpp   | 14 +++++---------
 tests/test_Dual1DConnectivityBuilder.cpp |  3 ++-
 2 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/src/mesh/Dual1DConnectivityBuilder.cpp b/src/mesh/Dual1DConnectivityBuilder.cpp
index 791837518..39dea9ddb 100644
--- a/src/mesh/Dual1DConnectivityBuilder.cpp
+++ b/src/mesh/Dual1DConnectivityBuilder.cpp
@@ -56,13 +56,7 @@ Dual1DConnectivityBuilder::_buildConnectivityDescriptor(const Connectivity<1>& p
     dual_descriptor.cell_number_vector[primal_node_id] = primal_node_number[primal_node_id];
   }
 
-  dual_descriptor.cell_type_vector.resize(dual_number_of_cells);
-
-  for (NodeId node_id = 0; node_id < primal_connectivity.numberOfNodes(); ++node_id) {
-    const size_t i_cell = node_id;
-
-    dual_descriptor.cell_type_vector[i_cell] = CellType::Line;
-  }
+  dual_descriptor.cell_type_vector = std::vector<CellType>(dual_number_of_cells, CellType::Line);
 
   dual_descriptor.cell_to_node_vector.resize(dual_number_of_cells);
 
@@ -81,8 +75,10 @@ Dual1DConnectivityBuilder::_buildConnectivityDescriptor(const Connectivity<1>& p
         dual_descriptor.cell_to_node_vector[i_dual_cell][1 - i_node_in_cell] =
           number_of_kept_nodes + primal_node_cell_list[0];
       } else {
-        dual_descriptor.cell_to_node_vector[i_dual_cell][0] = number_of_kept_nodes + primal_node_cell_list[0];
-        dual_descriptor.cell_to_node_vector[i_dual_cell][1] = number_of_kept_nodes + primal_node_cell_list[1];
+        const auto i0 = primal_node_local_number_in_their_cells(i_node, 0);
+
+        dual_descriptor.cell_to_node_vector[i_dual_cell][0] = number_of_kept_nodes + primal_node_cell_list[1 - i0];
+        dual_descriptor.cell_to_node_vector[i_dual_cell][1] = number_of_kept_nodes + primal_node_cell_list[i0];
       }
     }
   }
diff --git a/tests/test_Dual1DConnectivityBuilder.cpp b/tests/test_Dual1DConnectivityBuilder.cpp
index c3b4796c0..2b194a92b 100644
--- a/tests/test_Dual1DConnectivityBuilder.cpp
+++ b/tests/test_Dual1DConnectivityBuilder.cpp
@@ -19,8 +19,9 @@ get_item_ref_ids(const ConnectivityType& connectivity)
     os << ref_id_list.refId();
     ItemValue<size_t, item_type> item_tag{connectivity};
     item_tag.fill(0);
+    auto& list = ref_id_list.list();
     for (size_t i_item = 0; i_item < ref_id_list.list().size(); ++i_item) {
-      item_tag[ref_id_list.list()[i_item]] = 1;
+      item_tag[list[i_item]] = 1;
     }
 
     ref_id_set[os.str()] = sum(item_tag);
-- 
GitLab