12#ifndef BELFEM_MESH_ELEMENT_HPP
13#define BELFEM_MESH_ELEMENT_HPP
131 "invalid call of base class function number_of_nodes() from Element %lu",
132 (
long unsigned int ) this->
id() );
143 "invalid call of base class function number_of_corner_nodes() from Element %lu",
144 (
long unsigned int ) this->
id() );
155 "invalid call of base class function number_of_facets() from Element %lu",
156 (
long unsigned int ) this->
id() );
167 "invalid call of base class function number_of_faces() from Element %lu",
168 (
long unsigned int ) this->
id() );
179 "invalid call of base class function number_of_edges() from Element %lu",
180 (
long unsigned int ) this->
id() );
222 "invalid call of base class function has_edges() from Element %lu",
223 (
long unsigned int ) this->
id() );
234 "invalid call of base class function has_faces() from Element %lu",
235 (
long unsigned int ) this->
id() );
246 "invalid call of base class function type() from Element %lu",
247 (
long unsigned int ) this->
id() );
257 "invalid call of base class function node() from Element %lu",
258 (
long unsigned int ) this->
id() );
269 "invalid call of base class function const node() from Element %lu",
270 (
long unsigned int ) this->
id() );
281 "invalid call of base class function edge() from Element %lu",
282 (
long unsigned int ) this->
id() );
293 "invalid call of base class function const edge() from Element %lu",
294 (
long unsigned int ) this->
id() );
305 "invalid call of base class function face() from Element %lu",
306 (
long unsigned int ) this->
id() );
317 "invalid call of base class function const face() from Element %lu",
318 (
long unsigned int ) this->
id() );
330 "invalid call of base class function insert_node() from Element %lu",
331 (
long unsigned int ) this->
id() );
340 "invalid call of base class function insert_edge() from Element %lu",
341 (
long unsigned int ) this->
id() );
350 "invalid call of base class function insert_face() from Element %lu",
351 (
long unsigned int ) this->
id() );
368 "invalid call of base class function unflag_nodes() from Element %lu",
369 (
long unsigned int ) this->
id() );
378 "invalid call of base class function flag_nodes() from Element %lu",
379 (
long unsigned int ) this->
id() );
391 "invalid call of base class function flag_corner_nodes() from Element %lu",
392 (
long unsigned int ) this->
id() );
404 "invalid call of base class function unflag_corner_nodes() from Element %lu",
405 (
long unsigned int ) this->
id() );
414 "invalid call of base class function unflag_edges() from Element %lu",
415 (
long unsigned int ) this->
id() );
424 "invalid call of base class function flag_edges() from Element %lu",
425 (
long unsigned int ) this->
id() );
434 "invalid call of base class function unflag_faces() from Element %lu",
435 (
long unsigned int ) this->
id() );
444 "invalid call of base class function flag_faces() from Element %lu",
445 (
long unsigned int ) this->
id() );
454 "invalid call of base class function get_nodes_of_facet() from Element %lu",
455 (
long unsigned int ) this->
id() );
464 "invalid call of base class function get_corner_nodes_of_facet() from Element %lu",
465 (
long unsigned int ) this->
id() );
474 "invalid call of base class function get_edges_of_facet() from Element %lu",
475 (
long unsigned int ) this->
id() );
485 "invalid call of base class function get_nodes_of_edge() from Element %lu",
486 (
long unsigned int ) this->
id() );
495 "invalid call of base class function get_node_of_edge() from Element %lu",
496 (
long unsigned int ) this->
id() );
506 "invalid call of base class function allocate_edge_container() from Element %lu",
507 (
long unsigned int ) this->
id() );
516 "invalid call of base class function allocate_face_container() from Element %lu",
517 (
long unsigned int ) this->
id() );
526 "control points already allocated" );
530 "control point count of element %lu overflows its counter width ( %u requested )",
531 (
long unsigned int ) this->
id(), (
unsigned int ) aSize );
537 for (
uint i = 0; i < aSize; ++i )
562 "invalid call of base class function set_edge_direction() from Element %lu",
563 (
long unsigned int ) this->
id() );
573 "invalid call of base class function edge_direction() from Element %lu",
574 (
long unsigned int ) this->
id() );
585 "invalid call of base class function reset_edge_container() from Element %lu",
586 (
long unsigned int ) this->
id() );
595 "invalid call of base class function reset_face_container() from Element %lu",
596 (
long unsigned int ) this->
id() );
703 BELFEM_ASSERT( aID < std::numeric_limits<uint16_t>::max(),
"Buffer overflow for geometry tag, aka block id" );
712 BELFEM_ASSERT( aTag < std::numeric_limits<uint16_t>::max(),
"Buffer overflow for geometry tag, aka block id" );
721 BELFEM_ASSERT( aTag < std::numeric_limits<uint16_t>::max(),
"Buffer overflow for physical id" );
754 BELFEM_ERROR(
false,
"invalid call to Element::dimension()" );
#define BELFEM_ERROR(aCheck,...)
Definition assert.hpp:264
#define BELFEM_ASSERT(aCheck,...)
Definition assert.hpp:244
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
Graph node with an adjacency list; the vertex type the graph algorithms operate on.
Definition cl_Graph_Vertex.hpp:32
uint number_of_vertices() const
Definition cl_Graph_Vertex.hpp:321
uint number_of_dofs() const
Definition cl_Mesh_Basis.hpp:303
uint number_of_sources() const
Definition cl_Mesh_Basis.hpp:240
Basis()
Definition cl_Mesh_Basis.cpp:21
Definition cl_ControlPoint.hpp:27
Special Edge class for NEDELEC-Type elements.
Definition cl_Edge.hpp:30
Lagrange Element baseclass.
Definition cl_Element.hpp:35
void set_physical_tag(const uint aTag)
Definition cl_Element.hpp:719
virtual void flag_faces()
Definition cl_Element.hpp:441
Element * element(const uint aIndex) override
Definition cl_Element.hpp:786
ControlPoint * control_point(const uint aIndex) const
Definition cl_Element.hpp:210
virtual void insert_control_point(ControlPoint *aControlPoint, const uint aIndex)
Definition cl_Element.hpp:357
uint16_t mNumberOfElements
Definition cl_Element.hpp:47
void insert_facet(Facet *aFacet, const uint aIndex)
Definition cl_Element.cpp:156
virtual bool edge_direction(const uint aEdgeIndex) const
Definition cl_Element.hpp:570
uint number_of_edges() const override
Definition cl_Element.hpp:176
void unset_curved_flag()
Definition cl_Element.hpp:769
ControlPoint * control_point(const uint aIndex)
Definition cl_Element.hpp:201
virtual bool is_thinshell() const
Definition cl_Element.hpp:188
Face * face(const uint aIndex) override
Definition cl_Element.hpp:302
uint number_of_nodes() const override
Definition cl_Element.hpp:128
virtual ElementType type() const
Definition cl_Element.hpp:243
void set_curved_flag()
Definition cl_Element.hpp:761
const Edge * edge(const uint aIndex) const override
Definition cl_Element.hpp:290
Facet * facet(const uint aIndex)
Definition cl_Element.hpp:794
bool is_curved() const
Definition cl_Element.hpp:777
virtual void get_edges_of_facet(const uint aFacetIndex, Cell< Edge * > &aEdges)
Definition cl_Element.hpp:471
virtual void flag_nodes(const uint8_t aIndex=0)
Definition cl_Element.hpp:375
id_t block_id() const
Definition cl_Element.hpp:728
uint geometry_tag() const
Definition cl_Element.hpp:736
void allocate_element_container(const uint aSize=0)
Definition cl_Element.cpp:59
void reset_control_point_container()
Definition cl_Element.hpp:547
virtual void insert_edge(Edge *aEdge, const uint aIndex)
Definition cl_Element.hpp:337
ControlPoint ** mControlPoints
control points connected to this element, if any
Definition cl_Element.hpp:63
virtual void get_nodes_of_edge(const uint aEdgeIndex, Cell< Node * > &aNodes)
Definition cl_Element.hpp:482
virtual void insert_node(Node *aNode, const uint aIndex)
Definition cl_Element.hpp:327
virtual void allocate_edge_container()
Definition cl_Element.hpp:503
void increment_element_counter()
Definition cl_Element.cpp:51
Element ** mNeighbors
Definition cl_Element.hpp:57
size_t array_memory() const
Definition cl_Element.hpp:826
Element * neighbor(const uint aIndex)
Definition cl_Element.hpp:818
void set_geometry_tag(const uint aTag)
Definition cl_Element.hpp:710
virtual void unflag_edges()
Definition cl_Element.hpp:411
virtual void unflag_nodes(const uint8_t aIndex=0)
Definition cl_Element.hpp:365
virtual uint number_of_facets() const
Definition cl_Element.hpp:152
virtual void get_corner_nodes_of_facet(const uint aFacetIndex, Cell< Node * > &aNodes)
Definition cl_Element.hpp:461
virtual void flag_edges()
Definition cl_Element.hpp:421
virtual void allocate_control_points_container(const uint aSize)
Definition cl_Element.hpp:523
const Node * node(const uint aIndex) const override
Definition cl_Element.hpp:266
uint number_of_elements() const override
Definition cl_Element.hpp:802
uint number_of_faces() const override
Definition cl_Element.hpp:164
virtual void unflag_faces()
Definition cl_Element.hpp:431
void reset_element_container() override
Definition cl_Element.cpp:164
uint number_of_control_points() const
Definition cl_Element.hpp:193
virtual void unflag_corner_nodes(const uint8_t aIndex=0)
flags nodes for linear representation only
Definition cl_Element.hpp:401
uint8_t mNumberOfControlPoints
number of control points connected to this element
Definition cl_Element.hpp:50
virtual size_t memory() const
Definition cl_Element.hpp:855
void allocate_neighbor_container()
Definition cl_Element.cpp:119
void insert_element(Element *aElement)
Definition cl_Element.cpp:148
EntityType entity_type() const override
returns a cell, needed for DOF handling
Definition cl_Element.hpp:810
Edge * edge(const uint aIndex) override
Definition cl_Element.hpp:278
virtual uint number_of_corner_nodes() const
Definition cl_Element.hpp:140
Element ** mElements
Elements connected to this element.
Definition cl_Element.hpp:53
uint16_t mElementTags[2]
Definition cl_Element.hpp:45
virtual void reset_face_container()
Definition cl_Element.hpp:592
virtual void set_edge_direction(const uint aEdgeIndex, const bool aIsPlus)
Definition cl_Element.hpp:559
Element(const id_t aID)
Definition cl_Element.cpp:21
virtual void allocate_face_container()
Definition cl_Element.hpp:513
Facet ** mFacets
Definition cl_Element.hpp:60
virtual void insert_face(Face *aFace, const uint aIndex)
Definition cl_Element.hpp:347
virtual bool has_edges() const
Definition cl_Element.hpp:219
virtual void flag_corner_nodes(const uint8_t aIndex=0)
flags nodes for linear representation only
Definition cl_Element.hpp:388
void insert_neighbor(Element *aNeighbor, const uint aIndex)
Definition cl_Element.cpp:140
virtual Node * node_of_edge(const uint aNodeIndex, const uint aEdgeIndex)
Definition cl_Element.hpp:492
Node * node(const uint aIndex) override
Definition cl_Element.hpp:254
void set_block_id(const id_t aID)
Definition cl_Element.hpp:701
bool mCurvedFlag
flag telling if this element is curved
Definition cl_Element.hpp:41
virtual void print() const
Definition cl_Element.cpp:177
virtual uint dimension() const
Definition cl_Element.hpp:752
virtual void get_nodes_of_facet(const uint aFacetIndex, Cell< Node * > &aNodes)
Definition cl_Element.hpp:451
const Face * face(const uint aIndex) const override
Definition cl_Element.hpp:314
virtual void reset_edge_container()
Definition cl_Element.hpp:582
virtual bool has_faces() const
Definition cl_Element.hpp:231
void allocate_facet_container(const uint aSize)
Definition cl_Element.cpp:91
uint physical_tag() const
Definition cl_Element.hpp:744
Definition cl_Face.hpp:29
Definition cl_Facet.hpp:24
Definition cl_Node.hpp:30
Definition cl_EF_EdgeFunction.hpp:17
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
unsigned int id_t
Definition typedefs.hpp:41
ElementType
Element types.
Definition Mesh_Enums.hpp:27
@ UNDEFINED
Definition Mesh_Enums.hpp:64
T max(const Vector< T > &aVector)
Definition fn_AR_max.hpp:24
EntityType
Definition Mesh_Enums.hpp:116
@ CELL
Definition Mesh_Enums.hpp:120
EntityType entity_type(const string &aFieldLabel)
guesses the type of the entity based on the passed field
Definition fn_entity_type.cpp:21
double real
Definition typedefs.hpp:36
#define BELFEM_UINT_MAX
Definition typedefs.hpp:80