19 #include "libmesh/libmesh_config.h" 
   21 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 
   28 #include "libmesh/cell_inf_hex.h" 
   29 #include "libmesh/cell_inf_hex8.h" 
   30 #include "libmesh/face_quad4.h" 
   31 #include "libmesh/face_inf_quad4.h" 
   32 #include "libmesh/fe_type.h" 
   33 #include "libmesh/fe_interface.h" 
   34 #include "libmesh/inf_fe_map.h" 
   35 #include "libmesh/enum_elem_quality.h" 
   78   libmesh_assert_less (s, this->
n_sides());
 
   91                                      unsigned int side_node)
 const 
   93   libmesh_assert_less (side, this->
n_sides());
 
   94   libmesh_assert_less (side_node, 4);
 
  103   libmesh_assert_less (i, this->
n_sides());
 
  106   std::unique_ptr<Elem> face;
 
  124         face = libmesh_make_unique<Quad4>();
 
  134         face = libmesh_make_unique<InfQuad4>();
 
  139       libmesh_error_msg(
"Invalid side i = " << i);
 
  143   for (
auto n : face->node_index_range())
 
  152                        const unsigned int i)
 
  154   libmesh_assert_less (i, this->
n_sides());
 
  162         if (!side.get() || side->type() != 
QUAD4)
 
  176         if (!side.get() || side->type() != 
INFQUAD4)
 
  185       libmesh_error_msg(
"Invalid side i = " << i);
 
  191   for (
auto n : side->node_index_range())
 
  198                               const unsigned int s)
 const 
  201   libmesh_assert_less (s, this->
n_sides());
 
  203   return (s == 0 || c+1 == s || c == s%4);
 
  209                               const unsigned int s)
 const 
  211   libmesh_assert_less (e, this->
n_edges());
 
  212   libmesh_assert_less (s, this->
n_sides());
 
  244         const Real min = std::min(d02, d13);
 
  245         const Real max = std::max(d02, d13);
 
  247         libmesh_assert_not_equal_to (max, 0.0);
 
  272         std::vector<Real> edge_ratios(2);
 
  275         edge_ratios[8] = std::min(d01, d23) / std::max(d01, d23);
 
  276         edge_ratios[9] = std::min(d03, d12) / std::max(d03, d12);
 
  278         return *(std::min_element(edge_ratios.begin(), edge_ratios.end())) ;
 
  296         const Real sqrt3 = 1.73205080756888;
 
  303         const Real max_diag = std::max(d02, d13);
 
  305         libmesh_assert_not_equal_to ( max_diag, 0.0 );
 
  310         std::vector<Real> edges(4);
 
  311         edges[0]  = this->
length(0,1);
 
  312         edges[1]  = this->
length(1,2);
 
  313         edges[2]  = this->
length(2,3);
 
  314         edges[3]  = this->
length(0,3);
 
  316         const Real min_edge = *(std::min_element(edges.begin(), edges.end()));
 
  317         return sqrt3 * min_edge / max_diag ;
 
  334   libmesh_not_implemented();
 
  336   std::pair<Real, Real> bounds;
 
  424     99,99,99,99,99,99,99,99, 
 
  434     99,99,99,99,99,99,99,99, 
 
  462   const Real tmp_min_distance_sq = std::min(pt0_o.
norm_sq(),
 
  471   const Real min_distance_sq = tmp_min_distance_sq
 
  477   const Real conservative_p_dist_sq = 1.01 * (
Point(p - my_origin).
norm_sq());
 
  481   if (conservative_p_dist_sq < min_distance_sq)
 
  489   Point p_o(p - my_origin);
 
  490   pt0_o /= pt0_o.
norm();
 
  491   pt1_o /= pt1_o.
norm();
 
  492   pt2_o /= pt2_o.
norm();
 
  493   pt3_o /= pt3_o.
norm();
 
  500                         (pt1_o - pt3_o).
norm_sq())*1.01;
 
  502   if ((p_o - pt0_o).
norm_sq() > max_h ||
 
  503       (p_o - pt1_o).
norm_sq() > max_h ||
 
  504       (p_o - pt2_o).
norm_sq() > max_h ||
 
  505       (p_o - pt3_o).
norm_sq() > max_h )
 
  526 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS