Lagrange Element baseclass. More...
#include <cl_Element.hpp>
Public Member Functions | |
| Element (const id_t aID) | |
| ~Element () override | |
| void | set_geometry_tag (const uint aTag) |
| void | set_physical_tag (const uint aTag) |
| void | set_block_id (const id_t aID) |
| id_t | block_id () const |
| uint | geometry_tag () const |
| uint | physical_tag () const |
| virtual uint | dimension () const |
| void | set_curved_flag () |
| void | unset_curved_flag () |
| bool | is_curved () const |
| uint | number_of_nodes () const override |
| virtual uint | number_of_corner_nodes () const |
| virtual uint | number_of_facets () const |
| uint | number_of_faces () const override |
| uint | number_of_edges () const override |
| virtual bool | is_thinshell () const |
| uint | number_of_control_points () const |
| ControlPoint * | control_point (const uint aIndex) |
| ControlPoint * | control_point (const uint aIndex) const |
| virtual bool | has_edges () const |
| virtual bool | has_faces () const |
| virtual ElementType | type () const |
| Node * | node (const uint aIndex) override |
| const Node * | node (const uint aIndex) const override |
| Edge * | edge (const uint aIndex) override |
| const Edge * | edge (const uint aIndex) const override |
| Face * | face (const uint aIndex) override |
| const Face * | face (const uint aIndex) const override |
| virtual void | insert_node (Node *aNode, const uint aIndex) |
| virtual void | insert_edge (Edge *aEdge, const uint aIndex) |
| virtual void | insert_face (Face *aFace, const uint aIndex) |
| virtual void | insert_control_point (ControlPoint *aControlPoint, const uint aIndex) |
| virtual void | unflag_nodes (const uint8_t aIndex=0) |
| virtual void | flag_nodes (const uint8_t aIndex=0) |
| virtual void | flag_corner_nodes (const uint8_t aIndex=0) |
| flags nodes for linear representation only | |
| virtual void | unflag_corner_nodes (const uint8_t aIndex=0) |
| flags nodes for linear representation only | |
| virtual void | unflag_edges () |
| virtual void | flag_edges () |
| virtual void | unflag_faces () |
| virtual void | flag_faces () |
| virtual void | get_nodes_of_facet (const uint aFacetIndex, Cell< Node * > &aNodes) |
| virtual void | get_corner_nodes_of_facet (const uint aFacetIndex, Cell< Node * > &aNodes) |
| virtual void | get_edges_of_facet (const uint aFacetIndex, Cell< Edge * > &aEdges) |
| virtual void | get_nodes_of_edge (const uint aEdgeIndex, Cell< Node * > &aNodes) |
| virtual Node * | node_of_edge (const uint aNodeIndex, const uint aEdgeIndex) |
| virtual void | allocate_edge_container () |
| virtual void | allocate_face_container () |
| virtual void | allocate_control_points_container (const uint aSize) |
| void | reset_control_point_container () |
| virtual void | set_edge_direction (const uint aEdgeIndex, const bool aIsPlus) |
| virtual bool | edge_direction (const uint aEdgeIndex) const |
| virtual void | reset_edge_container () |
| virtual void | reset_face_container () |
| void | increment_element_counter () |
| void | allocate_element_container (const uint aSize=0) |
| void | allocate_facet_container (const uint aSize) |
| void | allocate_neighbor_container () |
| void | insert_neighbor (Element *aNeighbor, const uint aIndex) |
| void | insert_element (Element *aElement) |
| void | insert_facet (Facet *aFacet, const uint aIndex) |
| void | reset_element_container () override |
| Element * | element (const uint aIndex) override |
| Element * | neighbor (const uint aIndex) |
| Facet * | facet (const uint aIndex) |
| uint | number_of_elements () const override |
| EntityType | entity_type () const override |
| returns a cell, needed for DOF handling | |
| virtual void | print () const |
| virtual size_t | memory () const |
| Public Member Functions inherited from belfem::mesh::Basis | |
| Basis () | |
| ~Basis () override | |
| bool | is_hanging () const |
| uint | number_of_sources () const |
| Basis * | source (const uint aIndex) |
| const Basis * | source (const uint aIndex) const |
| Node * | source_node (const uint aIndex) |
| const Node * | source_node (const uint aIndex) const |
| real | weight (const uint aIndex) const |
| void | set_weight (const uint aIndex, const real aValue) |
| void | set_sources (Cell< Basis * > &aSources, const Vector< real > &aCoefficients) |
| void | set_sources (Cell< Basis * > &aSources, const Cell< real > &aCoefficients) |
| void | set_sources (Cell< Node * > &aSources, const Vector< real > &aCoefficients) |
| void | reset_source_container () |
| void | allocate_source_container (uint aNumSources) |
| void | add_source (Basis *aSource, const real aWeight=1.0) |
| void | flag_sources () |
| void | increment_dof_counter () |
| void | allocate_dof_container () |
| void | reset_dof_container () |
| void | insert_dof (graph::Vertex *aDof) |
| uint | number_of_dofs () const |
| graph::Vertex * | dof (const uint aIndex) |
| Public Member Functions inherited from belfem::graph::Vertex | |
| Vertex ()=default | |
| virtual | ~Vertex () |
| void | set_id (const id_t aID) |
| id_t | id () const |
| virtual void | set_index (const index_t aIndex) |
| virtual index_t | index () const |
| virtual void | set_owner (const proc_t aOwner) |
| virtual proc_t | owner () const |
| index_t | level () const |
| void | set_level (const index_t aLevel) |
| virtual void | flag (const uint8_t aIndex=0) |
| virtual void | unflag (const uint8_t aIndex=0) |
| virtual bool | is_flagged (const uint8_t aIndex=0) const |
| void | increment_vertex_counter () |
| void | init_vertex_container () |
| void | init_vertex_container (const uint aSize) |
| void | reset_vertex_container () |
| void | insert_vertex (Vertex *aVertex) |
| uint | number_of_vertices () const |
| virtual Vertex * | vertex (const uint aIndex) |
| virtual auto | vertex (const uint aIndex) const -> decltype(this) |
| virtual void | init_element_container () |
| void | sort_vertices () |
| sorts the vertices according to their index | |
| void | reverse_vertices () |
Protected Member Functions | |
| size_t | array_memory () const |
Protected Attributes | |
| bool | mCurvedFlag = true |
| flag telling if this element is curved | |
| uint16_t | mElementTags [2] = { 0, 0 } |
| uint16_t | mNumberOfElements = 0 |
| uint8_t | mNumberOfControlPoints = 0 |
| number of control points connected to this element | |
| Element ** | mElements = nullptr |
| Elements connected to this element. | |
| Element ** | mNeighbors = nullptr |
| Facet ** | mFacets = nullptr |
| ControlPoint ** | mControlPoints = nullptr |
| control points connected to this element, if any | |
| Protected Attributes inherited from belfem::graph::Vertex | |
| uint32_t | mVertexCounter = 0 |
| Vertex ** | mVertices = nullptr |
Lagrange Element baseclass.
| belfem::mesh::Element::Element | ( | const id_t | aID | ) |
|
override |
|
inlinevirtual |
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
| void belfem::mesh::Element::allocate_element_container | ( | const uint | aSize = 0 | ) |
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
| void belfem::mesh::Element::allocate_facet_container | ( | const uint | aSize | ) |
| void belfem::mesh::Element::allocate_neighbor_container | ( | ) |
|
inlineprotected |
bytes of the arrays Element and its bases own. Vertices, dofs, sources and elements are counted by their fill counter ( no capacity is stored; the two agree once the insert loops that follow each allocate_*() have run, which is the state memory() is asked in ). Control points store their capacity as the count; neighbors and facets are sized by the facet count
|
inline |
|
inline |
|
inline |
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, and belfem::mesh::ElementTemplate< N, C, E, T, F >.
Reimplemented from belfem::mesh::Basis.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
Reimplemented from belfem::mesh::Basis.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
Reimplemented from belfem::mesh::Basis.
|
inlineoverridevirtual |
returns a cell, needed for DOF handling
Reimplemented from belfem::mesh::Basis.
Reimplemented from belfem::mesh::Basis.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
Reimplemented from belfem::mesh::Basis.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
flags nodes for linear representation only
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inline |
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, and belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, and belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, and belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, and belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inline |
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
| void belfem::mesh::Element::insert_element | ( | Element * | aElement | ) |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inline |
|
inlinevirtual |
|
inlinevirtual |
bytes of this object and the arrays it owns; the concrete element overrides this with its own object size
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
Reimplemented from belfem::mesh::Basis.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
Reimplemented from belfem::mesh::Basis.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
|
inline |
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlineoverridevirtual |
Reimplemented from belfem::mesh::Basis.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlineoverridevirtual |
Reimplemented from belfem::mesh::Basis.
|
inlineoverridevirtual |
Reimplemented from belfem::mesh::Basis.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlineoverridevirtual |
Reimplemented from belfem::mesh::Basis.
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inline |
|
virtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inline |
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
overridevirtual |
Reimplemented from belfem::graph::Vertex.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inline |
|
inline |
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inline |
|
inline |
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, and belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
flags nodes for linear representation only
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inlinevirtual |
Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.
|
inline |
|
protected |
control points connected to this element, if any
|
protected |
flag telling if this element is curved
|
protected |
Elements connected to this element.
|
protected |
geometry group ID as set by gmsh physical group ID as set by gmsh
|
protected |
|
protected |
unlike with the elements, the neighbors are in the order of the facets and may contain null pointers!
|
protected |
number of control points connected to this element
|
protected |