24 const auto &mesh = state.
mesh;
25 const auto &bases = state.
bases;
28 std::set<int> node_ids;
29 for (
int e = 0; e < mesh->n_elements(); e++)
31 const int body_id = mesh->get_body_id(e);
32 if (volume_selection == body_id)
34 for (
int i = 0; i < mesh->dimension() + 1; i++)
36 const int vid = mesh->element_vertex(e, i);
37 if (!mesh->is_boundary_vertex(vid))
48 const auto &mesh = state.
mesh;
49 const auto &bases = state.
bases;
52 std::set<int> node_ids;
55 const int e = lb.element_id();
56 for (
int i = 0; i < lb.size(); ++i)
58 const int primitive_global_id = lb.global_primitive_id(i);
59 const int boundary_id = mesh->get_boundary_id(primitive_global_id);
61 if (surface_selection == boundary_id)
62 for (
long n = 0; n < mesh->dimension(); ++n)
63 node_ids.insert(mesh->boundary_element_vertex(primitive_global_id, n));
72 const auto &mesh = state.
mesh;
73 const auto &bases = state.
bases;
76 std::set<int> excluded_node_ids;
77 std::set<int> all_node_ids;
80 const int e = lb.element_id();
81 for (
int i = 0; i < lb.size(); ++i)
83 const int primitive_global_id = lb.global_primitive_id(i);
84 const int boundary_id = mesh->get_boundary_id(primitive_global_id);
86 if (std::count(exclude_surface_selections.begin(), exclude_surface_selections.end(), boundary_id))
87 for (
long n = 0; n < mesh->dimension(); ++n)
88 excluded_node_ids.insert(mesh->boundary_element_vertex(primitive_global_id, n));
89 for (
long n = 0; n < mesh->dimension(); ++n)
90 all_node_ids.insert(mesh->boundary_element_vertex(primitive_global_id, n));
94 std::vector<int> node_ids;
95 std::set_difference(all_node_ids.begin(), all_node_ids.end(), excluded_node_ids.begin(), excluded_node_ids.end(), std::back_inserter(node_ids));