20 #ifndef LIBMESH_CELL_PYRAMID_H 21 #define LIBMESH_CELL_PYRAMID_H 24 #include "libmesh/cell.h" 68 libmesh_assert_less(i, this->
n_nodes());
78 virtual unsigned int n_nodes()
const override {
return 5; }
83 virtual unsigned int n_sides()
const override {
return 5; }
88 virtual unsigned int n_vertices()
const override {
return 5; }
93 virtual unsigned int n_edges()
const override {
return 8; }
98 virtual unsigned int n_faces()
const override {
return 5; }
103 virtual unsigned int n_children()
const override {
return 10; }
110 const unsigned int s)
const override;
116 const unsigned int s)
const override;
141 unsigned int side_node)
const override;
147 unsigned int edge_node)
const override;
152 virtual std::unique_ptr<Elem>
side_ptr (
const unsigned int i)
override;
157 virtual void side_ptr (std::unique_ptr<Elem> & side,
const unsigned int i)
override;
159 virtual std::vector<unsigned int>
sides_on_edge(
const unsigned int e)
const override final;
178 virtual bool is_singular_node(
unsigned int node_idx)
const override final {
return (node_idx == 4); }
185 virtual bool is_flipped() const override final;
204 #ifdef LIBMESH_ENABLE_AMR 210 const unsigned int)
const 211 { libmesh_not_implemented();
return 0; }
219 #endif // LIBMESH_CELL_PYRAMID_H The Pyramid is an element in 3D with 5 sides.
A Node is like a Point, but with more information.
virtual dof_id_type key() const
static constexpr Real TOLERANCE
virtual bool is_flipped() const override final
unsigned int side_children_matrix(const unsigned int, const unsigned int) const
Matrix that allows children to inherit boundary conditions.
This is the base class from which all geometric element types are derived.
virtual unsigned int n_sides() const override
The libMesh namespace provides an interface to certain functionality in the library.
virtual unsigned int n_permutations() const override final
One quad side, four orientations.
virtual std::vector< unsigned int > sides_on_edge(const unsigned int e) const override final
virtual unsigned int n_vertices() const override
void set_interior_parent(Elem *p)
Sets the pointer to the element's interior_parent.
virtual std::unique_ptr< Elem > side_ptr(const unsigned int i) override
virtual bool is_singular_node(unsigned int node_idx) const override final
virtual unsigned int local_side_node(unsigned int side, unsigned int side_node) const override
virtual bool is_edge_on_side(const unsigned int e, const unsigned int s) const override
virtual unsigned int local_edge_node(unsigned int edge, unsigned int edge_node) const override
Pyramid & operator=(const Pyramid &)=delete
virtual bool is_child_on_side(const unsigned int c, const unsigned int s) const override
The Cell is an abstract element type that lives in three dimensions.
virtual unsigned int n_children() const override
virtual ~Pyramid()=default
Elem * _elemlinks_data[6+(LIBMESH_DIM >3)]
Data for links to parent/neighbor/interior_parent elements.
unsigned int local_singular_node(const Point &p, const Real tol=TOLERANCE *TOLERANCE) const override final
virtual unsigned int n_nodes() const override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual unsigned int n_edges() const override
Pyramid(const unsigned int nn, Elem *p, Node **nodelinkdata)
Default pyramid, one quad face, four triangular faces, takes number of nodes and parent.
static const Real _master_points[14][3]
Master element node locations.
virtual Point master_point(const unsigned int i) const override
virtual unsigned int n_faces() const override
A Point defines a location in LIBMESH_DIM dimensional Real space.
virtual dof_id_type low_order_key(const unsigned int s) const override
static const unsigned int edge_sides_map[8][2]
This maps each edge to the sides that contain said edge.