20 #include "libmesh/libmesh_config.h"
22 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
25 #include "libmesh/face_inf_quad6.h"
26 #include "libmesh/edge_edge3.h"
27 #include "libmesh/side.h"
28 #include "libmesh/edge_inf_edge2.h"
29 #include "libmesh/enum_io_package.h"
30 #include "libmesh/enum_order.h"
76 const unsigned int s)
const
78 libmesh_assert_less (s,
n_sides());
87 libmesh_assert_less(s,
n_sides());
88 auto trim = (s == 0) ? 0 : 1;
92 #ifdef LIBMESH_ENABLE_AMR
99 { 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 },
100 { 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 },
101 { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0 },
102 { 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 },
103 { 0.375, -0.125, 0.0, 0.0, 0.75, 0.0 },
104 { 0.0, 0.0, 0.375, -0.125, 0.0, 0.75 }
110 { 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 },
111 { 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 },
112 { 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 },
113 { 0.0, 0.0, 0.0, 1.0, 0.0, 0.0 },
114 { -0.125, 0.375, 0.0, 0.0, 0.75, 0.0 },
115 { 0.0, 0.0, -0.125, 0.375, 0.0, 0.75 }
133 libmesh_assert_less (s, this->
n_sides());
147 libmesh_error_msg(
"Invalid side s = " << s);
154 unsigned int side_node)
const
156 libmesh_assert_less (side, this->
n_sides());
174 return libmesh_make_unique<Side<Edge3,InfQuad6>>(
this,i);
178 return libmesh_make_unique<Side<InfEdge2,InfQuad6>>(
this,i);
181 libmesh_error_msg(
"Invalid side i = " << i);
188 std::unique_ptr<Elem> edge;
194 edge = libmesh_make_unique<Edge3>();
202 edge = libmesh_make_unique<InfEdge2>();
207 libmesh_error_msg(
"Invalid side i = " << i);
213 for (
auto n : edge->node_index_range())
214 edge->set_node(n) = this->
node_ptr(InfQuad6::side_nodes_map[i][n]);
223 const unsigned int i)
225 libmesh_assert_less (i, this->
n_sides());
233 if (!side.get() || side->type() !=
EDGE3)
245 if (!side.get() || side->type() !=
INFEDGE2)
254 libmesh_error_msg(
"Invalid side i = " << i);
260 for (
auto n : side->node_index_range())
261 side->set_node(n) = this->
node_ptr(InfQuad6::side_nodes_map[i][n]);
268 std::vector<dof_id_type> & conn)
const
300 libmesh_error_msg(
"Invalid sf = " << sf);
305 libmesh_error_msg(
"Unsupported IO package " << iop);
313 const unsigned int v)
const
315 libmesh_assert_greater_equal (n, this->
n_vertices());
316 libmesh_assert_less (n, this->
n_nodes());
317 libmesh_assert_less (v, 2);
331 std::pair<unsigned short int, unsigned short int>
334 libmesh_assert_greater_equal (n, this->
n_vertices());
335 libmesh_assert_less (n, this->
n_nodes());
337 return std::pair<unsigned short int, unsigned short int>
346 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS