diff --git a/src/mesh/DiamondDualConnectivityBuilder.cpp b/src/mesh/DiamondDualConnectivityBuilder.cpp index 76adb60de4b047cd5d456662db96d10c6e1677e7..31d54be8997e9571958399f17c44dbcede1c35e4 100644 --- a/src/mesh/DiamondDualConnectivityBuilder.cpp +++ b/src/mesh/DiamondDualConnectivityBuilder.cpp @@ -44,19 +44,19 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec 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) { + parallel_for(m_primal_node_to_dual_node_map.size(), [&](size_t 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 < primal_number_of_cells; ++i) { + parallel_for(primal_number_of_cells, [&](size_t i) { const auto [primal_cell_id, diamond_dual_node_id] = m_primal_cell_to_dual_node_map[i]; diamond_descriptor.node_number_vector[diamond_dual_node_id] = primal_cell_number[primal_cell_id] + cell_number_shift; - } + }); { m_primal_face_to_dual_cell_map = FaceIdToCellIdMap{primal_number_of_faces}; @@ -68,10 +68,10 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec diamond_descriptor.cell_number_vector.resize(diamond_number_of_cells); const auto& primal_face_number = primal_connectivity.faceNumber(); - for (size_t i = 0; i < diamond_number_of_cells; ++i) { + parallel_for(diamond_number_of_cells, [&](size_t i) { const auto [primal_face_id, dual_cell_id] = m_primal_face_to_dual_cell_map[i]; diamond_descriptor.cell_number_vector[dual_cell_id] = primal_face_number[primal_face_id]; - } + }); if constexpr (Dimension == 3) { const size_t number_of_edges = diamond_descriptor.edge_to_node_vector.size(); @@ -88,9 +88,9 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec const auto& primal_face_to_cell_matrix = primal_connectivity.faceToCellMatrix(); - for (FaceId i_face = 0; i_face < primal_number_of_faces; ++i_face) { - const size_t i_cell = i_face; - const auto& primal_face_cell_list = primal_face_to_cell_matrix[i_face]; + parallel_for(primal_number_of_faces, [&](FaceId face_id) { + const size_t i_cell = face_id; + const auto& primal_face_cell_list = primal_face_to_cell_matrix[face_id]; if (primal_face_cell_list.size() == 1) { diamond_descriptor.cell_type_vector[i_cell] = CellType::Triangle; @@ -107,22 +107,22 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec diamond_descriptor.cell_type_vector[i_cell] = CellType::Diamond; } } - } + }); diamond_descriptor.cell_to_node_vector.resize(diamond_number_of_cells); const auto& primal_face_to_node_matrix = primal_connectivity.faceToNodeMatrix(); const auto& primal_face_local_number_in_their_cells = primal_connectivity.faceLocalNumbersInTheirCells(); const auto& cell_face_is_reversed = primal_connectivity.cellFaceIsReversed(); - for (FaceId i_face = 0; i_face < primal_number_of_faces; ++i_face) { - const size_t& i_diamond_cell = i_face; - const auto& primal_face_cell_list = primal_face_to_cell_matrix[i_face]; - const auto& primal_face_node_list = primal_face_to_node_matrix[i_face]; + parallel_for(primal_number_of_faces, [&](FaceId face_id) { + const size_t& i_diamond_cell = face_id; + const auto& primal_face_cell_list = primal_face_to_cell_matrix[face_id]; + const auto& primal_face_node_list = primal_face_to_node_matrix[face_id]; if (primal_face_cell_list.size() == 1) { diamond_descriptor.cell_to_node_vector[i_diamond_cell].resize(primal_face_node_list.size() + 1); const CellId cell_id = primal_face_cell_list[0]; - const auto i_face_in_cell = primal_face_local_number_in_their_cells(i_face, 0); + const auto i_face_in_cell = primal_face_local_number_in_their_cells(face_id, 0); for (size_t i_node = 0; i_node < primal_face_node_list.size(); ++i_node) { diamond_descriptor.cell_to_node_vector[i_diamond_cell][i_node] = primal_face_node_list[i_node]; @@ -149,7 +149,7 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec const CellId cell0_id = primal_face_cell_list[0]; const CellId cell1_id = primal_face_cell_list[1]; - const auto i_face_in_cell0 = primal_face_local_number_in_their_cells(i_face, 0); + const auto i_face_in_cell0 = primal_face_local_number_in_their_cells(face_id, 0); if constexpr (Dimension == 2) { Assert(primal_face_node_list.size() == 2); @@ -176,7 +176,7 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec } } } - } + }); } template <> @@ -368,7 +368,6 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityFrom(const IConnectivit face_array[i] = diamond_face_list[i]; } diamond_descriptor.addRefItemList(RefFaceList{primal_ref_face_list.refId(), face_array}); - std::cout << "stored " << primal_ref_face_list.refId() << '\n'; } } } @@ -420,7 +419,6 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityFrom(const IConnectivit edge_array[i] = diamond_edge_list[i]; } diamond_descriptor.addRefItemList(RefEdgeList{primal_ref_edge_list.refId(), edge_array}); - std::cout << "stored " << primal_ref_edge_list.refId() << '\n'; } } } @@ -508,40 +506,38 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityFrom(const IConnectivit m_connectivity = ConnectivityType::build(diamond_descriptor); - { - if constexpr (Dimension == 1) { - const auto& node_to_cell_matrix = primal_connectivity.nodeToCellMatrix(); - - NodeId dual_node_id = 0; - m_primal_node_to_dual_node_map = [&]() { - std::vector<std::pair<NodeId, NodeId>> primal_node_to_dual_node_vector; - for (NodeId primal_node_id = 0; primal_node_id < primal_connectivity.numberOfNodes(); ++primal_node_id) { - if (node_to_cell_matrix[primal_node_id].size() == 1) { - primal_node_to_dual_node_vector.push_back(std::make_pair(primal_node_id, dual_node_id++)); - } - } - return convert_to_array(primal_node_to_dual_node_vector); - }(); + if constexpr (Dimension == 1) { + const auto& node_to_cell_matrix = primal_connectivity.nodeToCellMatrix(); - m_primal_cell_to_dual_node_map = [&]() { - CellIdToNodeIdMap primal_cell_to_dual_node_map{primal_number_of_cells}; - for (CellId primal_cell_id = 0; primal_cell_id < primal_cell_to_dual_node_map.size(); ++primal_cell_id) { - primal_cell_to_dual_node_map[primal_cell_id] = std::make_pair(primal_cell_id, dual_node_id++); + NodeId dual_node_id = 0; + m_primal_node_to_dual_node_map = [&]() { + std::vector<std::pair<NodeId, NodeId>> primal_node_to_dual_node_vector; + for (NodeId primal_node_id = 0; primal_node_id < primal_connectivity.numberOfNodes(); ++primal_node_id) { + if (node_to_cell_matrix[primal_node_id].size() == 1) { + primal_node_to_dual_node_vector.push_back(std::make_pair(primal_node_id, dual_node_id++)); } - return primal_cell_to_dual_node_map; - }(); + } + return convert_to_array(primal_node_to_dual_node_vector); + }(); - m_primal_face_to_dual_cell_map = [&]() { - FaceIdToCellIdMap primal_face_to_dual_cell_map{primal_connectivity.numberOfFaces()}; - for (size_t id = 0; id < primal_face_to_dual_cell_map.size(); ++id) { - const CellId dual_cell_id = id; - const FaceId primal_face_id = id; + m_primal_cell_to_dual_node_map = [&]() { + CellIdToNodeIdMap primal_cell_to_dual_node_map{primal_number_of_cells}; + for (CellId primal_cell_id = 0; primal_cell_id < primal_cell_to_dual_node_map.size(); ++primal_cell_id) { + primal_cell_to_dual_node_map[primal_cell_id] = std::make_pair(primal_cell_id, dual_node_id++); + } + return primal_cell_to_dual_node_map; + }(); - primal_face_to_dual_cell_map[id] = std::make_pair(primal_face_id, dual_cell_id); - } - return primal_face_to_dual_cell_map; - }(); - } + m_primal_face_to_dual_cell_map = [&]() { + FaceIdToCellIdMap primal_face_to_dual_cell_map{primal_connectivity.numberOfFaces()}; + for (size_t id = 0; id < primal_face_to_dual_cell_map.size(); ++id) { + const CellId dual_cell_id = id; + const FaceId primal_face_id = id; + + primal_face_to_dual_cell_map[id] = std::make_pair(primal_face_id, dual_cell_id); + } + return primal_face_to_dual_cell_map; + }(); } m_mapper =