19 #include "libmesh/side.h" 
   20 #include "libmesh/edge_edge3.h" 
   21 #include "libmesh/face_tri6.h" 
   22 #include "libmesh/enum_io_package.h" 
   23 #include "libmesh/enum_order.h" 
   46 #ifdef LIBMESH_ENABLE_AMR 
   53       { 1.0,   0.0,   0.0, 0.0, 0.0, 0.0}, 
 
   54       { 0.0,   0.0,   0.0, 1.0, 0.0, 0.0}, 
 
   55       { 0.0,   0.0,   0.0, 0.0, 0.0, 1.0}, 
 
   56       {.375, -.125,   0.0, .75, 0.0, 0.0}, 
 
   57       { 0.0, -.125, -.125, 0.5, .25, 0.5}, 
 
   58       {.375,   0.0, -.125, 0.0, 0.0, .75}  
 
   64       {  0.0,  0.0,   0.0, 1.0, 0.0, 0.0}, 
 
   65       {  0.0,  1.0,   0.0, 0.0, 0.0, 0.0}, 
 
   66       {  0.0,  0.0,   0.0, 0.0, 1.0, 0.0}, 
 
   67       {-.125, .375,   0.0, .75, 0.0, 0.0}, 
 
   68       {  0.0, .375, -.125, 0.0, .75, 0.0}, 
 
   69       {-.125,  0.0, -.125, 0.5, 0.5, .25}  
 
   75       {  0.0,   0.0,  0.0, 0.0, 0.0, 1.0}, 
 
   76       {  0.0,   0.0,  0.0, 0.0, 1.0, 0.0}, 
 
   77       {  0.0,   0.0,  1.0, 0.0, 0.0, 0.0}, 
 
   78       {-.125, -.125,  0.0, .25, 0.5, 0.5}, 
 
   79       {  0.0, -.125, .375, 0.0, .75, 0.0}, 
 
   80       {-.125,   0.0, .375, 0.0, 0.0, .75}  
 
   86       {  0.0,   0.0,   0.0, 1.0, 0.0, 0.0}, 
 
   87       {  0.0,   0.0,   0.0, 0.0, 1.0, 0.0}, 
 
   88       {  0.0,   0.0,   0.0, 0.0, 0.0, 1.0}, 
 
   89       {-.125,   0.0, -.125, 0.5, 0.5, .25}, 
 
   90       {-.125, -.125,   0.0, .25, 0.5, 0.5}, 
 
   91       {  0.0, -.125, -.125, 0.5, .25, 0.5}  
 
  122                            const unsigned int s)
 const 
  124   libmesh_assert_less (s, 
n_sides());
 
  130 std::vector<unsigned>
 
  133   libmesh_assert_less(s, 
n_sides());
 
  140   if (!this->
point(3).relative_fuzzy_equals
 
  143   if (!this->
point(4).relative_fuzzy_equals
 
  146   if (!this->
point(5).relative_fuzzy_equals
 
  164   libmesh_assert_less (s, this->
n_sides());
 
  184       libmesh_error_msg(
"Invalid side s = " << s);
 
  191                                    unsigned int side_node)
 const 
  193   libmesh_assert_less (side, this->
n_sides());
 
  204   libmesh_assert_less (i, this->
n_sides());
 
  207     return libmesh_make_unique<Side<Edge3,Tri6>>(
this,i);
 
  211       std::unique_ptr<Elem> edge = libmesh_make_unique<Edge3>();
 
  215       for (
auto n : edge->node_index_range())
 
  216         edge->set_node(n) = this->
node_ptr(Tri6::side_nodes_map[i][n]);
 
  225                            const unsigned int i)
 
  227   this->simple_build_side_ptr<Tri6>(side, i, 
EDGE3);
 
  234                         std::vector<dof_id_type> & conn)
 const 
  283             libmesh_error_msg(
"Invalid sf = " << sf);
 
  343       libmesh_error_msg(
"Unsupported IO package " << iop);
 
  360   for (
unsigned d=0; d<LIBMESH_DIM; ++d)
 
  363       for (
unsigned int p=1; p != 6; ++p)
 
  364         center += this->
point(p)(d);
 
  368       for (
unsigned int p=1; p != 6; ++p)
 
  371       pmin(d) = center - hd;
 
  372       pmax(d) = center + hd;
 
  399     a1 =  4*x0 + 4*x1 - 8*x3,
 
  400     b1 =  4*x0 - 4*x3 + 4*x4 - 4*x5, 
 
  401     c1 = -3*x0 - 1*x1 + 4*x3,
 
  402     b2 =  4*x0 + 4*x2 - 8*x5,
 
  403     c2 = -3*x0 - 1*x2 + 4*x5;
 
  408       b1.relative_fuzzy_equals(
Point(0,0,0)) &&
 
  409       b2.relative_fuzzy_equals(
Point(0,0,0)))
 
  413   const unsigned int N = 7;
 
  422   const static Real xi[N]  = {
Real(1)/3,  q1, q1,     1-2*q1, q2, q2,     1-2*q2};
 
  423   const static Real eta[N] = {
Real(1)/3,  q1, 1-2*q1, q1,     q2, 1-2*q2, q2};
 
  424   const static Real wts[N] = {
Real(9)/80, w1, w1,     w1,     w2, w2,     w2};
 
  427   for (
unsigned int q=0; q<N; ++q)
 
  428     vol += wts[q] * 
cross_norm(xi[q]*a1 + eta[q]*b1 + c1,
 
  429                                xi[q]*b1 + eta[q]*b2 + c2);
 
  430 #endif // LIBMESH_DIM > 1 
  438                                                        const unsigned int v)
 const 
  440   libmesh_assert_greater_equal (n, this->
n_vertices());
 
  441   libmesh_assert_less (n, this->
n_nodes());
 
  442   libmesh_assert_less (v, 2);
 
  457 std::pair<unsigned short int, unsigned short int>
 
  460   libmesh_assert_greater_equal (n, this->
n_vertices());
 
  461   libmesh_assert_less (n, this->
n_nodes());
 
  462   return std::pair<unsigned short int, unsigned short int>