20 #include "libmesh/libmesh_config.h"    21 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS    24 #include "libmesh/face_inf_quad.h"    25 #include "libmesh/edge_edge2.h"    26 #include "libmesh/edge_inf_edge2.h"    27 #include "libmesh/face_inf_quad4.h"    28 #include "libmesh/enum_elem_quality.h"    63   libmesh_assert_less (s, this->
n_sides());
    75   libmesh_assert_less (s, this->
n_sides());
    86                                       unsigned int side_node)
 const    88   libmesh_assert_less (side, this->
n_sides());
    89   libmesh_assert_less (side_node, 2);
    97                                       unsigned int edge_node)
 const   106   libmesh_assert_less (i, this->
n_sides());
   109   std::unique_ptr<Elem> edge;
   115         edge = std::make_unique<Edge2>();
   122         edge = std::make_unique<InfEdge2>();
   127       libmesh_error_msg(
"Invalid side i = " << i);
   131   for (
auto n : edge->node_index_range())
   140                         const unsigned int i)
   142   libmesh_assert_less (i, this->
n_sides());
   149         if (!side.get() || side->type() != 
EDGE2)
   161         if (!side.get() || side->type() != 
INFEDGE2)
   170       libmesh_error_msg(
"Invalid side i = " << i);
   176   for (
auto n : side->node_index_range())
   182                                const unsigned int s)
 const   185   libmesh_assert_less (s, this->
n_sides());
   187   return (s == 0 || s == c+1);
   207 std::vector<unsigned int>
   210   libmesh_assert_less(n, this->
n_nodes());
   216       auto trim = (n < 2) ? 0 : 1;
   236   std::pair<Real, Real> bounds;
   273       bounds.second = 135.;
   300       libMesh::out << 
"Warning: Invalid quality measure chosen." << std::endl;
   311                                    const Real eps)
 const   313   const Real & xi = p(0);
   314   const Real & eta = p(1);
   317   return ((xi  >= -1.-eps) &&
   329 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 
virtual std::pair< Real, Real > qual_bounds(const ElemQuality q) const override
virtual std::vector< unsigned int > edges_adjacent_to_node(const unsigned int n) const override
virtual unsigned int local_side_node(unsigned int side, unsigned int side_node) const override
virtual bool on_reference_element(const Point &p, const Real eps=TOLERANCE) const override final
virtual dof_id_type key() const
static const unsigned int side_nodes_map[num_sides][nodes_per_side]
This maps the  node of the  side to element node numbers. 
static const Real _master_points[6][3]
Master element node locations. 
virtual bool is_vertex(const unsigned int i) const override final
We number vertices first. 
static const int num_sides
Geometric constants for all InfQuads. 
The libMesh namespace provides an interface to certain functionality in the library. 
virtual bool is_child_on_side(const unsigned int c, const unsigned int s) const override final
virtual unsigned int n_nodes() const =0
static const unsigned int adjacent_sides_map[4][2]
This maps the  node to the one or two side id(s) adjacent to the node. 
ElemQuality
Defines an enum for element quality metrics. 
virtual Real quality(const ElemQuality q) const override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
subdomain_id_type subdomain_id() const
virtual unsigned int n_sides() const override final
virtual bool is_flipped() const override final
virtual Real quality(const ElemQuality q) const
virtual unsigned int n_children() const override final
virtual dof_id_type low_order_key(const unsigned int s) const override
static dof_id_type compute_key(dof_id_type n0)
static const int num_children
virtual unsigned int local_edge_node(unsigned int edge, unsigned int edge_node) const override
Calls local_side_node(edge, edge_node). 
A Point defines a location in LIBMESH_DIM dimensional Real space. 
dof_id_type node_id(const unsigned int i) const
const Point & point(const unsigned int i) const
virtual std::unique_ptr< Elem > side_ptr(const unsigned int i) override final