Go to the documentation of this file.
20 #include "libmesh/side.h"
21 #include "libmesh/cell_pyramid5.h"
22 #include "libmesh/edge_edge2.h"
23 #include "libmesh/face_tri3.h"
24 #include "libmesh/face_quad4.h"
25 #include "libmesh/enum_io_package.h"
26 #include "libmesh/enum_order.h"
85 const unsigned int s)
const
87 libmesh_assert_less (s,
n_sides());
96 libmesh_assert_less(s,
n_sides());
97 auto trim = (s == 4) ? 0 : 1;
102 const unsigned int e)
const
104 libmesh_assert_less (e,
n_edges());
131 libmesh_assert_less (i, this->
n_sides());
141 return libmesh_make_unique<Side<Tri3,Pyramid5>>(
this,i);
144 return libmesh_make_unique<Side<Quad4,Pyramid5>>(
this,i);
147 libmesh_error_msg(
"Invalid side i = " << i);
154 std::unique_ptr<Elem> face;
163 face = libmesh_make_unique<Tri3>();
168 face = libmesh_make_unique<Quad4>();
172 libmesh_error_msg(
"Invalid side i = " << i);
178 for (
auto n : face->node_index_range())
179 face->set_node(n) = this->
node_ptr(Pyramid5::side_nodes_map[i][n]);
188 const unsigned int i)
197 libmesh_assert_less (i, this->
n_edges());
199 return libmesh_make_unique<SideEdge<Edge2,Pyramid5>>(
this,i);
206 std::vector<dof_id_type> & conn)
const
240 libmesh_error_msg(
"Unsupported IO package " << iop);
virtual std::unique_ptr< Elem > build_edge_ptr(const unsigned int i) override
Builds a EDGE2 built coincident with edge i.
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i, bool proxy=true) override
Builds a QUAD4 or TRI3 built coincident with face i.
static const int num_sides
virtual Real volume() const override
Specialization for computing the volume of a pyramid.
IOPackage
libMesh interfaces with several different software packages for the purposes of creating,...
static const int num_edges
Defines a Cartesian bounding box by the two corner extremum.
The libMesh namespace provides an interface to certain functionality in the library.
static const unsigned int edge_nodes_map[num_edges][nodes_per_edge]
This maps the node of the edge to element node numbers.
IterBase * end
Also have a polymorphic pointer to the end object, this prevents iterating past the end.
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 int num_nodes
Geometric constants for Pyramid5.
virtual bool is_edge(const unsigned int i) const override
T triple_product(const TypeVector< T > &a, const TypeVector< T > &b, const TypeVector< T > &c)
virtual unsigned int n_edges() const override
Node ** _nodes
Pointers to the nodes we are connected to.
virtual std::unique_ptr< Elem > side_ptr(const unsigned int i) override
const Point & point(const unsigned int i) const
static const int nodes_per_side
virtual bool has_affine_map() const override
static const int nodes_per_edge
virtual bool is_vertex(const unsigned int i) const override
A Point defines a location in LIBMESH_DIM dimensional Real space.
virtual bool is_node_on_side(const unsigned int n, const unsigned int s) const override
virtual unsigned int n_sides() const override
virtual BoundingBox loose_bounding_box() const
virtual bool is_node_on_edge(const unsigned int n, const unsigned int e) const override
virtual std::vector< unsigned int > nodes_on_side(const unsigned int s) const override
virtual unsigned int n_sub_elem() const override
virtual BoundingBox loose_bounding_box() const override
Builds a bounding box out of the nodal positions.
subdomain_id_type subdomain_id() const
static const int num_children
virtual bool is_face(const unsigned int i) const override
virtual void connectivity(const unsigned int sc, const IOPackage iop, std::vector< dof_id_type > &conn) const override
dof_id_type node_id(const unsigned int i) const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Node * node_ptr(const unsigned int i) const
virtual Order default_order() const override