27 std::vector<MeshLib::Node*> vec_new_nodes =
29 std::vector<MeshLib::Element*> vec_new_eles =
32 auto const material_ids = materialIDs(mesh);
33 assert(material_ids !=
nullptr);
34 int const max_matID = material_ids ? ranges::max(*material_ids) : 0;
36 auto const edgeLengths = minMaxEdgeLength(mesh.
getElements());
37 double const min_edge = edgeLengths.first;
39 std::vector<int> new_mat_ids;
40 const std::size_t n_ply(ply_vec.
size());
42 for (std::size_t k(0); k < n_ply; k++)
44 auto const*
const ply = ply_vec.
getVector()[k];
49 auto& vec_nodes_on_ply = mshNodesAlongPoly.
getNodeIDs();
50 if (vec_nodes_on_ply.empty())
54 INFO(
"No nodes found on polyline {:s}", ply_name);
59 for (std::size_t i = 0; i < vec_nodes_on_ply.size() - 1; i++)
61 std::array<MeshLib::Node*, 2> element_nodes;
62 element_nodes[0] = vec_new_nodes[vec_nodes_on_ply[i]];
63 element_nodes[1] = vec_new_nodes[vec_nodes_on_ply[i + 1]];
64 vec_new_eles.push_back(
66 new_mat_ids.push_back(max_matID + k + 1);
71 const std::string name = mesh.
getName() +
"_with_lines";
73 std::make_unique<MeshLib::Mesh>(name, vec_new_nodes, vec_new_eles,
75 auto new_material_ids =
76 new_mesh->getProperties().createNewPropertyVector<
int>(
78 if (!new_material_ids)
80 OGS_FATAL(
"Could not create MaterialIDs cell vector in new mesh.");
84 material_ids ? ranges::any_view<int const>(*material_ids)
87 new_material_ids->assign(ranges::views::common(
88 ranges::views::concat(initial_values, new_mat_ids)));