27 const auto &mesh = state.
mesh;
29 std::set<int> node_ids;
30 for (
int e = 0; e < mesh->n_elements(); e++)
32 const int body_id = mesh->get_body_id(e);
33 if (volume_selection.size() == 0 || std::find(volume_selection.begin(), volume_selection.end(), body_id) != volume_selection.end())
35 for (
int i = 0; i < mesh->dimension() + 1; i++)
37 const int vid = mesh->element_vertex(e, i);
38 if (!mesh->is_boundary_vertex(vid))
49 const auto &mesh = state.
mesh;
50 const auto &bases = state.
bases;
53 std::set<int> node_ids;
56 const int e = lb.element_id();
57 for (
int i = 0; i < lb.size(); ++i)
59 const int primitive_global_id = lb.global_primitive_id(i);
60 const int boundary_id = mesh->get_boundary_id(primitive_global_id);
62 if (surface_selection.size() == 0 || std::find(surface_selection.begin(), surface_selection.end(), boundary_id) != surface_selection.end())
63 for (
long n = 0; n < mesh->dimension(); ++n)
64 node_ids.insert(mesh->boundary_element_vertex(primitive_global_id, n));
73 const auto &mesh = state.
mesh;
74 const auto &bases = state.
bases;
77 if (!mesh->is_simplicial())
80 std::set<int> excluded_node_ids;
81 std::set<int> all_node_ids;
84 const int e = lb.element_id();
85 for (
int i = 0; i < lb.size(); ++i)
87 const int primitive_global_id = lb.global_primitive_id(i);
88 const int boundary_id = mesh->get_boundary_id(primitive_global_id);
90 assert(mesh->is_simplex(e));
91 if (std::count(exclude_surface_selections.begin(), exclude_surface_selections.end(), boundary_id))
92 for (
long n = 0; n < mesh->dimension(); ++n)
93 excluded_node_ids.insert(mesh->boundary_element_vertex(primitive_global_id, n));
94 for (
long n = 0; n < mesh->dimension(); ++n)
95 all_node_ids.insert(mesh->boundary_element_vertex(primitive_global_id, n));
99 std::vector<int> node_ids;
100 std::set_difference(all_node_ids.begin(), all_node_ids.end(), excluded_node_ids.begin(), excluded_node_ids.end(), std::back_inserter(node_ids));