20 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 91 const unsigned int s)
const 93 libmesh_assert_less (s,
n_sides());
102 libmesh_assert_less(s,
n_sides());
107 const unsigned int e)
const 109 libmesh_assert_less (e,
n_edges());
121 unsigned int side_node)
const 126 libmesh_assert_less(side_node, 6);
136 libmesh_assert_less (i, this->
n_sides());
144 return libmesh_make_unique<Side<Tri6,InfPrism12>>(
this,i);
150 return libmesh_make_unique<Side<InfQuad6,InfPrism12>>(
this,i);
153 libmesh_error_msg(
"Invalid side i = " << i);
160 std::unique_ptr<Elem> face;
166 face = libmesh_make_unique<Tri6>();
174 face = libmesh_make_unique<InfQuad6>();
179 libmesh_error_msg(
"Invalid side i = " << i);
185 for (
unsigned n=0; n<face->n_nodes(); ++n)
186 face->set_node(n) = this->
node_ptr(InfPrism12::side_nodes_map[i][n]);
194 const unsigned int i)
196 libmesh_assert_less (i, this->
n_sides());
223 libmesh_error_msg(
"Invalid side i = " << i);
229 for (
auto n :
side->node_index_range())
230 side->set_node(n) = this->
node_ptr(InfPrism12::side_nodes_map[i][n]);
236 libmesh_assert_less (i, this->
n_edges());
239 return libmesh_make_unique<SideEdge<Edge3,InfPrism12>>(
this,i);
242 return libmesh_make_unique<SideEdge<InfEdge2,InfPrism12>>(
this,i);
248 std::vector<dof_id_type> & conn)
const 315 libmesh_error_msg(
"Invalid sc = " << sc);
320 libmesh_error_msg(
"Unsupported IO package " << iop);
329 const unsigned int v)
const 331 libmesh_assert_greater_equal (n, this->
n_vertices());
332 libmesh_assert_less (n, this->
n_nodes());
333 libmesh_assert_less (v, 2);
352 std::pair<unsigned short int, unsigned short int>
355 libmesh_assert_greater_equal (n, this->
n_vertices());
356 libmesh_assert_less (n, this->
n_nodes());
358 return std::pair<unsigned short int, unsigned short int>
383 #ifdef LIBMESH_ENABLE_AMR 390 { 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
391 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0},
392 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0},
393 { 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
394 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0},
395 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0},
396 { 0.375, -0.125, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0},
397 { 0.0, -0.125, -0.125, 0.0, 0.0, 0.0, 0.5, 0.25, 0.5, 0.0, 0.0, 0.0},
398 { 0.375, 0.0, -0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0, 0.0},
399 { 0.0, 0.0, 0.0, 0.375, -0.125, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0},
400 { 0.0, 0.0, 0.0, 0.0, -0.125, -0.125, 0.0, 0.0, 0.0, 0.5, 0.25, 0.5},
401 { 0.0, 0.0, 0.0, 0.375, 0.0, -0.125, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75}
407 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0},
408 { 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
409 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0},
410 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0},
411 { 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
412 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0},
413 { -0.125, 0.375, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0, 0.0, 0.0, 0.0},
414 { 0.0, 0.375, -0.125, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0, 0.0, 0.0},
415 { -0.125, 0.0, -0.125, 0.0, 0.0, 0.0, 0.5, 0.5, 0.25, 0.0, 0.0, 0.0},
416 { 0.0, 0.0, 0.0, -0.125, 0.375, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0},
417 { 0.0, 0.0, 0.0, 0.0, 0.375, -0.125, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0},
418 { 0.0, 0.0, 0.0, -0.125, 0.0, -0.125, 0.0, 0.0, 0.0, 0.5, 0.5, 0.25}
424 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0},
425 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0},
426 { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
427 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0},
428 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0},
429 { 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
430 { -0.125, -0.125, 0.0, 0.0, 0.0, 0.0, 0.25, 0.5, 0.5, 0.0, 0.0, 0.0},
431 { 0.0, -0.125, 0.375, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0, 0.0, 0.0},
432 { -0.125, 0.0, 0.375, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0, 0.0, 0.0},
433 { 0.0, 0.0, 0.0, -0.125, -0.125, 0.0, 0.0, 0.0, 0.0, 0.25, 0.5, 0.5},
434 { 0.0, 0.0, 0.0, 0.0, -0.125, 0.375, 0.0, 0.0, 0.0, 0.0, 0.75, 0.0},
435 { 0.0, 0.0, 0.0, -0.125, 0.0, 0.375, 0.0, 0.0, 0.0, 0.0, 0.0, 0.75}
441 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0},
442 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0},
443 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0},
444 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0},
445 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0},
446 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0},
447 { -0.125, 0.0, -0.125, 0.0, 0.0, 0.0, 0.5, 0.5, 0.25, 0.0, 0.0, 0.0},
448 { -0.125, -0.125, 0.0, 0.0, 0.0, 0.0, 0.25, 0.5, 0.5, 0.0, 0.0, 0.0},
449 { 0.0, -0.125, -0.125, 0.0, 0.0, 0.0, 0.5, 0.25, 0.5, 0.0, 0.0, 0.0},
450 { 0.0, 0.0, 0.0, -0.125, 0.0, -0.125, 0.0, 0.0, 0.0, 0.5, 0.5, 0.25},
451 { 0.0, 0.0, 0.0, -0.125, -0.125, 0.0, 0.0, 0.0, 0.0, 0.25, 0.5, 0.5},
452 { 0.0, 0.0, 0.0, 0.0, -0.125, -0.125, 0.0, 0.0, 0.0, 0.5, 0.25, 0.5}
464 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS static const int num_edges
virtual unsigned int n_vertices() const override final
virtual bool is_edge(const unsigned int i) const override
static const unsigned int edge_nodes_map[num_edges][nodes_per_edge]
static const float _embedding_matrix[num_children][num_nodes][num_nodes]
virtual unsigned short int second_order_adjacent_vertex(const unsigned int n, const unsigned int v) const override
virtual unsigned int n_edges() const override final
virtual unsigned int n_nodes() const override
virtual unsigned int n_sub_elem() const override
static const unsigned short int _second_order_adjacent_vertices[num_edges][2]
virtual void connectivity(const unsigned int sc, const IOPackage iop, std::vector< dof_id_type > &conn) const override
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i, bool proxy) override
virtual bool is_vertex(const unsigned int i) const override
static const int nodes_per_edge
virtual std::unique_ptr< Elem > build_edge_ptr(const unsigned int i) override
static const unsigned short int _second_order_vertex_child_index[num_nodes]
virtual Order default_order() const override
static const int num_children
static const unsigned short int _second_order_vertex_child_number[num_nodes]
virtual std::vector< unsigned int > nodes_on_side(const unsigned int s) const override
static const int num_sides
virtual bool is_node_on_edge(const unsigned int n, const unsigned int e) const override
subdomain_id_type subdomain_id() const
static const int nodes_per_side
virtual std::pair< unsigned short int, unsigned short int > second_order_child_vertex(const unsigned int n) const override
const Node * node_ptr(const unsigned int i) const
virtual unsigned int which_node_am_i(unsigned int side, unsigned int side_node) const override
static const int num_nodes
static const unsigned int side_nodes_map[num_sides][nodes_per_side]
virtual bool is_face(const unsigned int i) const override
virtual bool is_node_on_side(const unsigned int n, const unsigned int s) const override
virtual unsigned int n_sides() const override final
dof_id_type node_id(const unsigned int i) const
std::unique_ptr< Elem > side(const unsigned int i) const