From 2ee0f634ca63d8ea9064cbc5e58430230b55e9bc Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Wed, 22 Jul 2020 19:02:53 +0200 Subject: [PATCH] Begin to use item id to item id maps to build diamond mesh --- src/mesh/DiamondDualConnectivityBuilder.cpp | 32 +++++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/mesh/DiamondDualConnectivityBuilder.cpp b/src/mesh/DiamondDualConnectivityBuilder.cpp index 32c9a140b..666eda055 100644 --- a/src/mesh/DiamondDualConnectivityBuilder.cpp +++ b/src/mesh/DiamondDualConnectivityBuilder.cpp @@ -22,22 +22,38 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec const size_t primal_number_of_faces = primal_connectivity.numberOfFaces(); const size_t primal_number_of_cells = primal_connectivity.numberOfCells(); + const auto& primal_node_number = primal_connectivity.nodeNumber(); + const auto& primal_cell_number = primal_connectivity.cellNumber(); + const size_t diamond_number_of_nodes = primal_number_of_cells + primal_number_of_nodes; - diamond_descriptor.node_number_vector.resize(diamond_number_of_nodes); + { + m_primal_node_to_dual_node_map = NodeIdToNodeIdMap{primal_number_of_nodes}; - const auto& primal_node_number = primal_connectivity.nodeNumber(); + NodeId diamond_node_id = 0; + for (NodeId primal_node_id = 0; primal_node_id < primal_connectivity.numberOfNodes(); ++primal_node_id) { + m_primal_node_to_dual_node_map[primal_node_id] = std::make_pair(primal_node_id, diamond_node_id++); + } - for (NodeId primal_node_id = 0; primal_node_id < primal_connectivity.numberOfNodes(); ++primal_node_id) { - diamond_descriptor.node_number_vector[primal_node_id] = primal_node_number[primal_node_id]; + m_primal_cell_to_dual_node_map = CellIdToNodeIdMap{primal_number_of_cells}; + for (CellId primal_cell_id = 0; primal_cell_id < primal_connectivity.numberOfCells(); ++primal_cell_id) { + m_primal_cell_to_dual_node_map[primal_cell_id] = std::make_pair(primal_cell_id, diamond_node_id++); + } } - const auto& primal_cell_number = primal_connectivity.cellNumber(); + diamond_descriptor.node_number_vector.resize(diamond_number_of_nodes); + + for (size_t i = 0; i < m_primal_node_to_dual_node_map.size(); ++i) { + const auto [primal_node_id, diamond_dual_node_id] = m_primal_node_to_dual_node_map[i]; + + diamond_descriptor.node_number_vector[diamond_dual_node_id] = primal_node_number[primal_node_id]; + } const size_t cell_number_shift = max(primal_node_number) + 1; + for (size_t i = 0; i < m_primal_cell_to_dual_node_map.size(); ++i) { + const auto [primal_cell_id, diamond_dual_node_id] = m_primal_cell_to_dual_node_map[i]; - for (CellId primal_cell_id = 0; primal_cell_id < primal_number_of_cells; ++primal_cell_id) { - diamond_descriptor.node_number_vector[primal_number_of_nodes + primal_cell_id] = + diamond_descriptor.node_number_vector[diamond_dual_node_id] = primal_cell_number[primal_cell_id] + cell_number_shift; } @@ -166,8 +182,6 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor<1>(const Con const size_t diamond_number_of_nodes = 2 * primal_number_of_nodes - primal_number_of_cells; - diamond_descriptor.node_number_vector.resize(diamond_number_of_nodes); - const size_t diamond_number_of_cells = primal_number_of_faces; const size_t number_of_kept_nodes = 2 * (diamond_number_of_nodes - diamond_number_of_cells); -- GitLab