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