47 std::vector<MeshLib::Element*>
const all_bhe_elements =
52 DBUG(
"-> found total {:d} soil elements and {:d} BHE elements",
54 all_bhe_elements.size());
58 if (opt_material_ids ==
nullptr)
60 OGS_FATAL(
"Not able to get material IDs! ");
62 auto const& material_ids = *opt_material_ids;
64 auto const& bhe_material_ids =
65 getUniqueMaterialIds(material_ids, all_bhe_elements);
66 DBUG(
"-> found {:d} BHE material groups", bhe_material_ids.size());
69 std::vector<std::vector<MeshLib::Element*>> bhe_elements;
70 bhe_elements.resize(bhe_material_ids.size());
71 for (
unsigned bhe_id = 0; bhe_id < bhe_material_ids.size(); bhe_id++)
73 const auto bhe_mat_id = bhe_material_ids[bhe_id];
74 std::vector<MeshLib::Element*>& vec_elements = bhe_elements[bhe_id];
75 copy_if(begin(all_bhe_elements), end(all_bhe_elements),
76 back_inserter(vec_elements),
78 {
return material_ids[e->
getID()] == bhe_mat_id; });
79 DBUG(
"-> found {:d} elements on the BHE_{:d}", vec_elements.size(),
84 std::vector<std::vector<MeshLib::Node*>> bhe_nodes;
85 bhe_nodes.resize(bhe_material_ids.size());
86 for (
unsigned bhe_id = 0; bhe_id < bhe_material_ids.size(); bhe_id++)
88 std::vector<MeshLib::Node*>& vec_nodes = bhe_nodes[bhe_id];
91 for (
unsigned i = 0; i < e->getNumberOfNodes(); i++)
93 vec_nodes.push_back(
const_cast<MeshLib::Node*
>(e->getNode(i)));
99 DBUG(
"-> found {:d} nodes on the BHE_{:d}", vec_nodes.size(), bhe_id);
102 return {bhe_material_ids, bhe_elements, bhe_nodes};