20 #ifndef LIBMESH_FACE_C0POLYHEDRON_H 21 #define LIBMESH_FACE_C0POLYHEDRON_H 24 #include "libmesh/libmesh_common.h" 25 #include "libmesh/cell_polyhedron.h" 26 #include "libmesh/enum_order.h" 67 C0Polyhedron (
const std::vector<std::shared_ptr<Polygon>> & sides,
68 std::unique_ptr<Node> & mid_elem_node,
98 virtual unsigned int n_vertices() const override final;
110 virtual bool is_vertex(
const unsigned int i)
const override;
115 virtual bool is_edge(
const unsigned int i)
const override;
120 virtual bool is_face(
const unsigned int i)
const override;
127 const unsigned int s)
const override;
129 virtual std::vector<unsigned int>
nodes_on_side(
const unsigned int s)
const override;
131 virtual std::vector<unsigned int>
nodes_on_edge(
const unsigned int e)
const override;
138 const unsigned int e)
const override;
161 std::vector<dof_id_type> & conn)
const override;
166 virtual std::pair<unsigned short int, unsigned short int>
206 void add_tet(
int n1,
int n2,
int n3,
int n4);
208 #ifdef LIBMESH_ENABLE_AMR 215 const unsigned int )
const override 216 { libmesh_not_implemented();
return 0; }
218 #endif // LIBMESH_ENABLE_AMR 229 #endif // LIBMESH_FACE_C0POLYHEDRON_H ElemType
Defines an enum for geometric element types.
virtual bool is_node_on_edge(const unsigned int n, const unsigned int e) const override
Order
defines an enum for polynomial orders.
virtual unsigned int n_vertices() const override final
ElemType side_type(const unsigned int s) const override final
The Polyhedron is an element in 3D with an arbitrary number of polygonal faces.
virtual dof_id_type key() const
virtual std::vector< unsigned int > edges_adjacent_to_node(const unsigned int n) const override
IOPackage
libMesh interfaces with several different software packages for the purposes of creating, reading, and writing mesh files.
This is the base class from which all geometric element types are derived.
virtual void retriangulate() override final
Create a triangulation (tetrahedralization) based on the current sides' triangulations.
C0Polyhedron(const std::vector< std::shared_ptr< Polygon >> &sides, std::unique_ptr< Node > &mid_elem_node, Elem *p=nullptr)
Constructor.
C0Polyhedron & operator=(const C0Polyhedron &)=delete
The libMesh namespace provides an interface to certain functionality in the library.
virtual Point true_centroid() const override
An optimized method for calculating the centroid of a C0Polyhedron.
Point side_vertex_average_normal(const unsigned int s) const override final
virtual unsigned int n_sub_elem() const override
virtual Real volume() const override
An optimized method for calculating the area of a C0Polyhedron.
virtual bool is_vertex(const unsigned int i) const override
unsigned int n_subelements() const
bool _has_mid_elem_node
Whether we have a mid element node.
virtual bool has_affine_map() const override
virtual Real embedding_matrix(const unsigned int, const unsigned int, const unsigned int) const override
Matrix used to create the elements children.
virtual bool is_node_on_side(const unsigned int n, const unsigned int s) const override
virtual std::vector< unsigned int > nodes_on_side(const unsigned int s) const override
virtual ElemType type() const override final
std::unique_ptr< Elem > disconnected_clone() const override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual bool is_face(const unsigned int i) const override
virtual std::array< int, 4 > subelement_sides_to_poly_sides(unsigned int i) const
void add_tet(int n1, int n2, int n3, int n4)
Add to our triangulation (tetrahedralization).
The C0Polyhedron is an element in 3D with an arbitrary (but fixed) number of polygonal first-order (C...
virtual bool is_edge(const unsigned int i) const override
virtual void connectivity(const unsigned int sf, const IOPackage iop, std::vector< dof_id_type > &conn) const override
virtual Order default_order() const override
virtual std::vector< unsigned int > nodes_on_edge(const unsigned int e) const override
A Point defines a location in LIBMESH_DIM dimensional Real space.
virtual std::pair< unsigned short int, unsigned short int > second_order_child_vertex(const unsigned int n) const override
Element refinement is not implemented for polyhedra.