20#ifndef LIBMESH_CELL_PRISM_H
21#define LIBMESH_CELL_PRISM_H
24#include "libmesh/cell.h"
64 libmesh_assert_less(i, this->
n_nodes());
81 virtual unsigned int n_nodes()
const override {
return 6; }
86 virtual unsigned int n_sides() const override final {
return 5; }
91 virtual unsigned int n_vertices() const override final {
return 6; }
96 virtual unsigned int n_edges() const override final {
return 9; }
101 virtual unsigned int n_faces() const override final {
return 5; }
106 virtual unsigned int n_children() const override final {
return 8; }
112 const unsigned int s)
const override final;
118 const unsigned int s)
const override final;
124 virtual unsigned int opposite_side(
const unsigned int s)
const override final;
149 unsigned int side_node)
const override;
155 unsigned int edge_node)
const override;
160 virtual std::unique_ptr<Elem>
side_ptr (
const unsigned int i)
override final;
165 virtual void side_ptr (std::unique_ptr<Elem> & side,
const unsigned int i)
override final;
167 virtual std::vector<unsigned int>
sides_on_edge(
const unsigned int e)
const override final;
174 virtual bool is_flipped() const override final;
The Cell is an abstract element type that lives in three dimensions.
This is the base class from which all geometric element types are derived.
void set_interior_parent(Elem *p)
Sets the pointer to the element's interior_parent.
virtual dof_id_type key(const unsigned int s) const =0
A Node is like a Point, but with more information.
A Point defines a location in LIBMESH_DIM dimensional Real space.
The Prism is an element in 3D with 5 sides.
virtual unsigned int n_vertices() const override final
static const unsigned int adjacent_edges_map[6][3]
This maps the Prism vertex to the (in this case) 3 edge ids adjacent to the node.
Prism & operator=(const Prism &)=delete
Prism(const Prism &)=delete
Prism(const unsigned int nn, Elem *p, Node **nodelinkdata)
Default prismatic element, takes number of nodes and parent.
virtual std::vector< unsigned int > edges_adjacent_to_node(const unsigned int n) const override
virtual bool is_flipped() const override final
virtual bool on_reference_element(const Point &p, const Real eps=TOLERANCE) const override final
virtual unsigned int n_edges() const override final
static const int num_children
virtual unsigned int n_sides() const override final
static const unsigned short int _second_order_vertex_child_number[18]
Vector that names a child sharing each second order node.
virtual Point master_point(const unsigned int i) const override final
static const unsigned int edge_sides_map[9][2]
This maps each edge to the sides that contain said edge.
virtual dof_id_type key() const
Don't hide Elem::key() defined in the base class.
virtual unsigned int local_side_node(unsigned int side, unsigned int side_node) const override
virtual unsigned int n_children() const override final
static const Real _master_points[21][3]
Master element node locations.
static const int num_edges
virtual bool is_edge_on_side(const unsigned int e, const unsigned int s) const override final
virtual unsigned int n_nodes() const override
virtual std::vector< unsigned int > sides_on_edge(const unsigned int e) const override final
static const int num_sides
Geometric constants for all Prisms.
virtual std::pair< Real, Real > qual_bounds(const ElemQuality q) const override
virtual std::unique_ptr< Elem > side_ptr(const unsigned int i) override final
virtual dof_id_type low_order_key(const unsigned int s) const override
virtual unsigned int n_faces() const override final
virtual bool is_child_on_side(const unsigned int c, const unsigned int s) const override final
Elem * _elemlinks_data[6+(LIBMESH_DIM >3)]
Data for links to parent/neighbor/interior_parent elements.
virtual unsigned int n_permutations() const override final
Two triangular sides, three orientations.
static const unsigned short int _second_order_adjacent_vertices[9][2]
Matrix that tells which vertices define the location of mid-side (or second-order) nodes.
virtual unsigned int local_edge_node(unsigned int edge, unsigned int edge_node) const override
static const unsigned short int _second_order_vertex_child_index[18]
Vector that names the child vertex index for each second order node.
virtual unsigned int opposite_side(const unsigned int s) const override final
The libMesh namespace provides an interface to certain functionality in the library.
ElemQuality
Defines an enum for element quality metrics.
static constexpr Real TOLERANCE
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real