84{
86 std::vector<Point> points = {
91 };
92
93
94 {
95 auto mesh = std::make_unique<libMesh::SerialMesh>(comm);
96 std::vector<Node *> node_ptrs;
97
98 for (unsigned int i = 0; i < points.size(); ++i)
100
101 std::vector<std::tuple<unsigned int, unsigned int, unsigned int>> open_faces = {
102 {0, 1, 2}, {0, 1, 3}, {1, 2, 3}};
103 for (const auto & [id1, id2, id3] : open_faces)
104 {
105 auto tri =
new Tri3();
106 tri->set_node(0) = node_ptrs[id1];
107 tri->set_node(1) = node_ptrs[id2];
108 tri->set_node(2) = node_ptrs[id3];
110 }
111
113
114 std::vector<const Elem *> raw_ptrs;
115 for (
const auto * el :
mesh->active_local_element_ptr_range())
116 raw_ptrs.push_back(el);
117
119 }
120
121
122 {
123 auto mesh = std::make_unique<libMesh::SerialMesh>(comm);
124 std::vector<Node *> node_ptrs;
125
126 for (unsigned int i = 0; i < points.size(); ++i)
128
129 std::vector<std::tuple<unsigned int, unsigned int, unsigned int>> closed_faces = {
130 {0, 1, 2}, {0, 1, 3}, {1, 2, 3}, {0, 2, 3}};
131 for (const auto & [id1, id2, id3] : closed_faces)
132 {
133 auto tri =
new Tri3();
134 tri->set_node(0) = node_ptrs[id1];
135 tri->set_node(1) = node_ptrs[id2];
136 tri->set_node(2) = node_ptrs[id3];
138 }
139
141
142 std::vector<const Elem *> raw_ptrs;
143 for (
const auto * el :
mesh->active_local_element_ptr_range())
144 raw_ptrs.push_back(el);
145
147 }
148}
void prepare_for_use(const bool skip_renumber_nodes_and_elements, const bool skip_find_neighbors)
virtual Node * add_point(const Point &p, const dof_id_type id=DofObject::invalid_id, const processor_id_type proc_id=DofObject::invalid_processor_id)=0
virtual Elem * add_elem(Elem *e)=0
bool checkWatertightnessFromRawElems(const std::vector< const Elem * > &bd_elements)