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