diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp
index 51435e7294c7bb966ceb4b9dd6620bd27f2fab38..c411552b77ef9ec816beaf89e1892ca7b3ef5135 100644
--- a/src/mesh/GmshReader.cpp
+++ b/src/mesh/GmshReader.cpp
@@ -271,13 +271,41 @@ void GmshReader::_dispatch()
   std::vector<Array<int>> recv_number_of_node_per_cell_by_proc
       = dispatcher.exchange(number_of_node_per_cell);
 
+  const auto& cell_list_to_send_by_proc = dispatcher.cell_list_to_send_by_proc();
+  const NodeValue<const int>& node_number = mesh.connectivity().nodeNumber();
+
+
+  std::vector<Array<int>> cell_node_number_to_send_by_proc(parallel::size());
+  for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) {
+    std::vector<int> node_number_by_cell_vector;
+    for (size_t j=0; j<cell_list_to_send_by_proc[i_rank].size(); ++j) {
+      const CellId& cell_id = cell_list_to_send_by_proc[i_rank][j];
+      const auto& cell_node_list = cell_to_node_matrix[cell_id];
+      for (size_t r=0; r<cell_node_list.size(); ++r) {
+        const NodeId& node_id = cell_node_list[r];
+        node_number_by_cell_vector.push_back(node_number[node_id]);
+      }
+    }
+    cell_node_number_to_send_by_proc[i_rank] = convert_to_array(node_number_by_cell_vector);
+  }
+
+  std::vector<Array<int>> recv_cell_node_number_by_proc(parallel::size());
+  for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) {
+    recv_cell_node_number_by_proc[i_rank]
+        = Array<int>(Sum(recv_number_of_node_per_cell_by_proc[i_rank]));
+  }
+
+  parallel::exchange(cell_node_number_to_send_by_proc, recv_cell_node_number_by_proc);
+
   for (size_t i_rank=0; i_rank < parallel::size(); ++i_rank) {
     if (parallel::rank() == i_rank) {
       std::cout << "----- rank=" << i_rank << " -----\n";
       for (size_t j_rank=0; j_rank < parallel::size(); ++j_rank) {
         std::cout << "recv from " << j_rank << ':';
         for (size_t i=0; i<recv_cell_number_by_proc[j_rank].size(); ++i) {
-          std::cout << ' ' << recv_cell_number_by_proc[j_rank][i] << '[' << name(recv_cell_type_by_proc[j_rank][i])<< ':' << recv_number_of_node_per_cell_by_proc[j_rank][i] << "] ";
+          std::cout << ' ' << recv_cell_number_by_proc[j_rank][i]
+                    << '[' << name(recv_cell_type_by_proc[j_rank][i])
+                    << ':' << recv_number_of_node_per_cell_by_proc[j_rank][i] << "] ";
         }
         std::cout << '\n' << std::flush;
       }