33 std::vector<MeshLib::Node*> vec_new_nodes =
35 std::vector<MeshLib::Element*> vec_new_eles =
38 auto const material_ids = materialIDs(mesh);
39 assert(material_ids !=
nullptr);
40 int const max_matID = material_ids ? ranges::max(*material_ids) : 0;
42 auto const edgeLengths = minMaxEdgeLength(mesh.
getElements());
43 double const min_edge = edgeLengths.first;
45 std::vector<int> new_mat_ids;
46 const std::size_t n_ply(ply_vec.
size());
48 for (std::size_t k(0); k < n_ply; k++)
50 auto const*
const ply = ply_vec.
getVector()[k];
55 auto& vec_nodes_on_ply = mshNodesAlongPoly.
getNodeIDs();
56 if (vec_nodes_on_ply.empty())
60 INFO(
"No nodes found on polyline {:s}", ply_name);
65 for (std::size_t i = 0; i < vec_nodes_on_ply.size() - 1; i++)
67 std::array<MeshLib::Node*, 2> element_nodes;
68 element_nodes[0] = vec_new_nodes[vec_nodes_on_ply[i]];
69 element_nodes[1] = vec_new_nodes[vec_nodes_on_ply[i + 1]];
70 vec_new_eles.push_back(
72 new_mat_ids.push_back(max_matID + k + 1);
77 const std::string name = mesh.
getName() +
"_with_lines";
79 std::make_unique<MeshLib::Mesh>(name, vec_new_nodes, vec_new_eles,
81 auto new_material_ids =
82 new_mesh->getProperties().createNewPropertyVector<
int>(
84 if (!new_material_ids)
86 OGS_FATAL(
"Could not create MaterialIDs cell vector in new mesh.");
90 material_ids ? ranges::any_view<int const>(*material_ids)
93 new_material_ids->assign(ranges::views::common(
94 ranges::views::concat(initial_values, new_mat_ids)));