19 #include "libmesh/libmesh_config.h"
21 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
24 #include "libmesh/cell_inf_prism6.h"
25 #include "libmesh/edge_edge2.h"
26 #include "libmesh/edge_inf_edge2.h"
27 #include "libmesh/fe_interface.h"
28 #include "libmesh/side.h"
29 #include "libmesh/face_inf_quad4.h"
30 #include "libmesh/face_tri3.h"
31 #include "libmesh/enum_io_package.h"
32 #include "libmesh/enum_order.h"
89 const unsigned int s)
const
91 libmesh_assert_less (s,
n_sides());
100 libmesh_assert_less(s,
n_sides());
101 auto trim = (s > 0) ? 0 : 1;
106 const unsigned int e)
const
108 libmesh_assert_less (e,
n_edges());
126 libmesh_assert_less (i, this->
n_sides());
134 return libmesh_make_unique<Side<Tri3,InfPrism6>>(
this,i);
140 return libmesh_make_unique<Side<InfQuad4,InfPrism6>>(
this,i);
143 libmesh_error_msg(
"Invalid side i = " << i);
150 std::unique_ptr<Elem> face;
156 face = libmesh_make_unique<Tri3>();
164 face = libmesh_make_unique<InfQuad4>();
169 libmesh_error_msg(
"Invalid side i = " << i);
175 for (
auto n : face->node_index_range())
176 face->set_node(n) = this->
node_ptr(InfPrism6::side_nodes_map[i][n]);
184 const unsigned int i)
192 libmesh_assert_less (i,
n_edges());
195 return libmesh_make_unique<SideEdge<Edge2,InfPrism6>>(
this,i);
198 return libmesh_make_unique<SideEdge<InfEdge2,InfPrism6>>(
this,i);
203 std::vector<dof_id_type> & conn)
const
226 libmesh_error_msg(
"Unsupported IO package " << iop);
234 #ifdef LIBMESH_ENABLE_AMR
241 { 1.0, 0.0, 0.0, 0.0, 0.0, 0.0},
242 { 0.5, 0.5, 0.0, 0.0, 0.0, 0.0},
243 { 0.5, 0.0, 0.5, 0.0, 0.0, 0.0},
244 { 0.0, 0.0, 0.0, 1.0, 0.0, 0.0},
245 { 0.0, 0.0, 0.0, 0.5, 0.5, 0.0},
246 { 0.0, 0.0, 0.0, 0.5, 0.0, 0.5}
252 { 0.5, 0.5, 0.0, 0.0, 0.0, 0.0},
253 { 0.0, 1.0, 0.0, 0.0, 0.0, 0.0},
254 { 0.0, 0.5, 0.5, 0.0, 0.0, 0.0},
255 { 0.0, 0.0, 0.0, 0.5, 0.5, 0.0},
256 { 0.0, 0.0, 0.0, 0.0, 1.0, 0.0},
257 { 0.0, 0.0, 0.0, 0.0, 0.5, 0.5}
263 { 0.5, 0.0, 0.5, 0.0, 0.0, 0.0},
264 { 0.0, 0.5, 0.5, 0.0, 0.0, 0.0},
265 { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0},
266 { 0.0, 0.0, 0.0, 0.5, 0.0, 0.5},
267 { 0.0, 0.0, 0.0, 0.0, 0.5, 0.5},
268 { 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}
274 { 0.5, 0.5, 0.0, 0.0, 0.0, 0.0},
275 { 0.0, 0.5, 0.5, 0.0, 0.0, 0.0},
276 { 0.5, 0.0, 0.5, 0.0, 0.0, 0.0},
277 { 0.0, 0.0, 0.0, 0.5, 0.5, 0.0},
278 { 0.0, 0.0, 0.0, 0.0, 0.5, 0.5},
279 { 0.0, 0.0, 0.0, 0.5, 0.0, 0.5}
289 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS