20 #ifndef LIBMESH_NODE_ELEM_H 21 #define LIBMESH_NODE_ELEM_H 24 #include "libmesh/elem.h" 66 libmesh_assert_equal_to (i, 0);
73 virtual unsigned short dim ()
const override {
return 0; }
78 virtual unsigned int n_nodes()
const override {
return 1; }
83 virtual unsigned int n_sides()
const override {
return 0; }
88 virtual unsigned int n_vertices()
const override {
return 1; }
93 virtual unsigned int n_edges()
const override {
return 0; }
98 virtual unsigned int n_faces()
const override {
return 0; }
103 virtual unsigned int n_children()
const override {
return 1; }
115 { libmesh_error_msg(
"Calling NodeElem::key(side) does not make sense.");
return 0; }
122 { libmesh_error_msg(
"Calling NodeElem::low_order_key(side) does not make sense.");
return 0; }
128 unsigned int )
const override 129 { libmesh_error_msg(
"Calling NodeElem::local_side_node() does not make sense.");
return 0; }
135 unsigned int )
const override 136 { libmesh_error_msg(
"Calling NodeElem::local_edge_node() does not make sense.");
return 0; }
141 virtual std::unique_ptr<Elem>
side_ptr (
const unsigned int)
override 142 { libmesh_not_implemented();
return std::unique_ptr<Elem>(); }
144 virtual void side_ptr (std::unique_ptr<Elem> &,
const unsigned int)
override 145 { libmesh_not_implemented(); }
151 { libmesh_not_implemented();
return std::unique_ptr<Elem>(); }
153 virtual void build_side_ptr (std::unique_ptr<Elem> &,
const unsigned int)
override 154 { libmesh_not_implemented(); }
160 { libmesh_not_implemented();
return std::unique_ptr<Elem>(); }
165 virtual void build_edge_ptr (std::unique_ptr<Elem> &,
const unsigned int)
override 166 { libmesh_not_implemented(); }
171 virtual unsigned int n_sub_elem()
const override {
return 1; }
176 virtual bool is_vertex(
const unsigned int)
const override {
return true; }
181 virtual bool is_edge(
const unsigned int)
const override {
return false; }
182 virtual bool is_face(
const unsigned int)
const override {
return false; }
185 const unsigned int)
const override 186 { libmesh_not_implemented();
return false; }
189 const unsigned int)
const override 190 { libmesh_not_implemented();
return false; }
192 virtual std::vector<unsigned int>
nodes_on_side(
const unsigned int)
const override 194 libmesh_not_implemented();
198 virtual std::vector<unsigned int>
nodes_on_edge(
const unsigned int)
const override 200 libmesh_not_implemented();
204 virtual std::vector<unsigned int>
sides_on_edge(
const unsigned int)
const override 206 libmesh_not_implemented();
211 const unsigned int)
const override 212 { libmesh_not_implemented();
return false; }
215 const unsigned int)
const override 216 { libmesh_not_implemented();
return false; }
225 {
return this->
point(0); }
242 virtual bool is_linear ()
const override {
return true; }
256 std::vector<dof_id_type> & conn)
const override;
259 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 264 virtual bool infinite ()
const override {
return false; }
273 virtual void permute(
unsigned int)
override final { libmesh_error(); }
276 virtual bool is_flipped() const override final {
return false; }
280 libmesh_not_implemented();
315 #ifdef LIBMESH_ENABLE_AMR 321 const unsigned int j,
322 const unsigned int k)
const override 335 const unsigned int)
const 336 { libmesh_not_implemented();
return 0; }
340 #endif // LIBMESH_ENABLE_AMR 346 #endif // LIBMESH_NODE_ELEM_H static const Real _embedding_matrix[1][1][1]
Matrix that computes new nodal locations/solution values from current nodes/solution.
virtual unsigned int n_faces() const override
unsigned int side_children_matrix(const unsigned int, const unsigned int) const
Matrix that allows children to inherit boundary conditions.
virtual bool close_to_point(const Point &p, Real tol) const override
ElemType
Defines an enum for geometric element types.
virtual void build_edge_ptr(std::unique_ptr< Elem > &, const unsigned int) override
The Elem::build_edge_ptr() member makes no sense for nodes.
Order
defines an enum for polynomial orders.
virtual unsigned int n_vertices() const override
A Node is like a Point, but with more information.
virtual void side_ptr(std::unique_ptr< Elem > &, const unsigned int) override
Resets the loose element side, which may currently point to a different side than i or even a differe...
virtual Point master_point(const unsigned int libmesh_dbg_var(i)) const override
NodeElem & operator=(const NodeElem &)=delete
LIBMESH_ENABLE_TOPOLOGY_CACHES
virtual dof_id_type key() const
virtual bool is_node_on_edge(const unsigned int, const unsigned int) const override
virtual unsigned int local_edge_node(unsigned int, unsigned int) const override
NodeElems don't have edges, so they can't have nodes on edges.
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 build_side_ptr(std::unique_ptr< Elem > &, const unsigned int) override
Resets the loose element side, which may currently point to a different side than i or even a differe...
virtual dof_id_type low_order_key(const unsigned int) const override
virtual bool contains_point(const Point &p, Real tol) const override
virtual bool is_child_on_side(const unsigned int, const unsigned int) const override
virtual bool is_edge_on_side(const unsigned int, const unsigned int) const override
The libMesh namespace provides an interface to certain functionality in the library.
virtual unsigned int n_children() const override
virtual unsigned int n_sides() const override
void set_interior_parent(Elem *p)
Sets the pointer to the element's interior_parent.
virtual bool is_face(const unsigned int) const override
NodeElem(Elem *p=nullptr)
Constructor.
virtual bool infinite() const override
virtual Order default_order() const override
virtual std::unique_ptr< Elem > side_ptr(const unsigned int) override
The Elem::side_ptr() member makes no sense for nodes.
virtual bool has_affine_map() const override
virtual std::vector< unsigned int > nodes_on_edge(const unsigned int) const override
virtual ElemType side_type(const unsigned int) const override
virtual std::vector< unsigned int > sides_on_edge(const unsigned int) const override
virtual bool is_node_on_side(const unsigned int, const unsigned int) const override
virtual unsigned int n_permutations() const override final
No way to reorient a single node.
The BoundaryInfo class contains information relevant to boundary conditions including storing faces...
virtual bool is_flipped() const override final
virtual unsigned int local_side_node(unsigned int, unsigned int) const override
NodeElems don't have sides, so they can't have nodes on sides.
Node * _nodelinks_data[1]
Data for links to nodes.
virtual void connectivity(const unsigned int sc, const IOPackage iop, std::vector< dof_id_type > &conn) const override
virtual unsigned int n_nodes() const override
The NodeElem is a point element, generally used as a side of a 1D element.
virtual Real embedding_matrix(const unsigned int i, const unsigned int j, const unsigned int k) const override
Matrix used to create the elements children.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int, bool) override
The Elem::build_side_ptr() member makes no sense for nodes.
virtual Point quasicircumcenter() const override
virtual bool is_edge(const unsigned int) const override
NodeElem objects don't have faces or sides.
virtual unsigned int n_edges() const override
virtual unsigned short dim() const override
virtual dof_id_type key(const unsigned int) const override
virtual ElemType type() const override
virtual bool is_linear() const override
virtual ~NodeElem()=default
Elem * _elemlinks_data[1+(LIBMESH_DIM >0)]
Data for links to parent/neighbor/interior_parent elements.
virtual void permute(unsigned int) override final
Permutes the element (by swapping node and neighbor pointers) according to the specified index...
virtual void flip(BoundaryInfo *) override final
Flips the element (by swapping node and neighbor pointers) to have a mapping Jacobian of opposite sig...
A Point defines a location in LIBMESH_DIM dimensional Real space.
const Point & point(const unsigned int i) const
virtual std::vector< unsigned int > nodes_on_side(const unsigned int) const override
virtual std::unique_ptr< Elem > build_edge_ptr(const unsigned int) override
The Elem::build_edge_ptr() member makes no sense for nodes.
virtual unsigned int n_sub_elem() const override
virtual bool is_vertex(const unsigned int) const override
virtual bool has_invertible_map(Real) const override