Go to the documentation of this file.
20 #ifndef LIBMESH_FACE_INF_QUAD_H
21 #define LIBMESH_FACE_INF_QUAD_H
23 #include "libmesh/libmesh_config.h"
25 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
28 #include "libmesh/elem.h"
66 Node ** nodelinkdata) :
86 libmesh_assert_less(i, this->
n_nodes());
95 virtual unsigned short dim() const override final {
return 2; }
102 virtual unsigned int n_sides() const override final {
return 3; }
107 virtual unsigned int n_vertices() const override final {
return 4; }
113 virtual unsigned int n_edges() const override final {
return 3; }
118 virtual unsigned int n_faces() const override final {
return 0; }
123 virtual unsigned int n_children() const override final {
return 2; }
130 override final {
return (i > 2 && i < 4); }
136 const unsigned int s)
const override final;
154 unsigned int side_node)
const override;
159 virtual std::unique_ptr<Elem>
side_ptr (
const unsigned int i)
override final;
164 virtual void side_ptr (std::unique_ptr<Elem> & side,
const unsigned int i)
override final;
169 virtual std::unique_ptr<Elem>
build_edge_ptr (
const unsigned int i)
override final
176 const unsigned int s)
const override final
196 virtual bool infinite () const override final {
return true; }
223 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
225 #endif // LIBMESH_FACE_INF_QUAD_H
virtual unsigned int which_node_am_i(unsigned int side, unsigned int side_node) const override
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i, bool proxy=true)=0
virtual unsigned int n_sides() const override final
void set_interior_parent(Elem *p)
Sets the pointer to the element's interior_parent.
virtual unsigned int n_nodes() const =0
virtual std::unique_ptr< Elem > build_edge_ptr(const unsigned int i) override final
build_edge_ptr() and build_side_ptr() are identical in 2D.
virtual unsigned int n_faces() const override final
The libMesh namespace provides an interface to certain functionality in the library.
Elem * _elemlinks_data[4+(LIBMESH_DIM >2)]
Data for links to parent/neighbor/interior_parent elements.
The InfQuad is an abstract element type that lives in two dimensions.
const Point & point(const unsigned int i) const
virtual bool is_child_on_side(const unsigned int c, const unsigned int s) const override final
InfQuad & operator=(const InfQuad &)=delete
virtual Point origin() const override final
virtual bool is_mid_infinite_edge_node(const unsigned int i) const override final
A Point defines a location in LIBMESH_DIM dimensional Real space.
virtual dof_id_type key() const
virtual std::pair< Real, Real > qual_bounds(const ElemQuality q) const override
A Node is like a Point, but with more information.
virtual Real quality(const ElemQuality q) const override
virtual bool is_edge_on_side(const unsigned int e, const unsigned int s) const override final
is_edge_on_side is trivial in 2D.
static const Real _master_points[6][3]
Master element node locations.
virtual unsigned int n_children() const override final
ElemQuality
Defines an enum for element quality metrics.
virtual unsigned short dim() const override final
This is the base class from which all geometric element types are derived.
virtual Point master_point(const unsigned int i) const override final
virtual unsigned int n_vertices() const override final
virtual std::unique_ptr< Elem > side_ptr(const unsigned int i) override final
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual bool infinite() const override final
InfQuad(const unsigned int nn, Elem *p, Node **nodelinkdata)
Constructor.
virtual ~InfQuad()=default
virtual unsigned int n_edges() const override final