Skip to content
Snippets Groups Projects
Commit 2ee0f634 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Begin to use item id to item id maps to build diamond mesh

parent d8d7d0f6
No related branches found
No related tags found
1 merge request!42Feature/diamond dual mesh manager
...@@ -22,22 +22,38 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec ...@@ -22,22 +22,38 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec
const size_t primal_number_of_faces = primal_connectivity.numberOfFaces(); const size_t primal_number_of_faces = primal_connectivity.numberOfFaces();
const size_t primal_number_of_cells = primal_connectivity.numberOfCells(); const size_t primal_number_of_cells = primal_connectivity.numberOfCells();
const size_t diamond_number_of_nodes = primal_number_of_cells + primal_number_of_nodes; const auto& primal_node_number = primal_connectivity.nodeNumber();
const auto& primal_cell_number = primal_connectivity.cellNumber();
diamond_descriptor.node_number_vector.resize(diamond_number_of_nodes); const size_t diamond_number_of_nodes = primal_number_of_cells + primal_number_of_nodes;
const auto& primal_node_number = primal_connectivity.nodeNumber(); {
m_primal_node_to_dual_node_map = NodeIdToNodeIdMap{primal_number_of_nodes};
NodeId diamond_node_id = 0;
for (NodeId primal_node_id = 0; primal_node_id < primal_connectivity.numberOfNodes(); ++primal_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_node_to_dual_node_map[primal_node_id] = std::make_pair(primal_node_id, diamond_node_id++);
} }
const auto& primal_cell_number = primal_connectivity.cellNumber(); 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++);
}
}
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; 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[diamond_dual_node_id] =
diamond_descriptor.node_number_vector[primal_number_of_nodes + primal_cell_id] =
primal_cell_number[primal_cell_id] + cell_number_shift; primal_cell_number[primal_cell_id] + cell_number_shift;
} }
...@@ -166,8 +182,6 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor<1>(const Con ...@@ -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; 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 diamond_number_of_cells = primal_number_of_faces;
const size_t number_of_kept_nodes = 2 * (diamond_number_of_nodes - diamond_number_of_cells); const size_t number_of_kept_nodes = 2 * (diamond_number_of_nodes - diamond_number_of_cells);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment