diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp index 7c990dc5c45dad8ecf69a14247d1476c43905b7c..8c1dfb6646877de0dbe49e6a03981bb42751192f 100644 --- a/src/mesh/Connectivity.hpp +++ b/src/mesh/Connectivity.hpp @@ -550,17 +550,34 @@ class Connectivity final CSRGraph cellToCellGraph() const { std::vector<std::set<int>> cell_cells(this->numberOfCells()); - const auto& face_to_cell_matrix - = this->faceToCellMatrix(); - - for (FaceId l=0; l<this->numberOfFaces(); ++l) { - const auto& face_to_cell = face_to_cell_matrix[l]; - if (face_to_cell.size() == 2) { - const CellId cell_0 = face_to_cell[0]; - const CellId cell_1 = face_to_cell[1]; - - cell_cells[cell_0].insert(cell_1); - cell_cells[cell_1].insert(cell_0); + if constexpr (true) { + const auto& face_to_cell_matrix + = this->faceToCellMatrix(); + + for (FaceId l=0; l<this->numberOfFaces(); ++l) { + const auto& face_to_cell = face_to_cell_matrix[l]; + if (face_to_cell.size() > 1) { + const CellId cell_0 = face_to_cell[0]; + const CellId cell_1 = face_to_cell[1]; + + cell_cells[cell_0].insert(cell_1); + cell_cells[cell_1].insert(cell_0); + } + } + } else { + const auto& node_to_cell_matrix + = this->nodeToCellMatrix(); + + for (NodeId l=0; l<this->numberOfNodes(); ++l) { + const auto& node_to_cell = node_to_cell_matrix[l]; + for (size_t i_cell=0; i_cell<node_to_cell.size(); ++i_cell) { + const CellId cell_0 = node_to_cell[i_cell]; + for (size_t j_cell=0; j_cell<i_cell; ++j_cell) { + const CellId cell_1 = node_to_cell[j_cell]; + cell_cells[cell_0].insert(cell_1); + cell_cells[cell_1].insert(cell_0); + } + } } }