BELFEM 0.9.3
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
belfem::mesh::Element Class Reference

Lagrange Element baseclass. More...

#include <cl_Element.hpp>

Inheritance diagram for belfem::mesh::Element:
[legend]
Collaboration diagram for belfem::mesh::Element:
[legend]

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
 Basis (const Basis &)=delete
Basis & operator= (const Basis &)=delete
 Basis (Basis &&)=delete
Basis & operator= (Basis &&)=delete
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)
 Stores borrowed pointers to the sources and copies the weights.
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)
bool holds_dof (const graph::Vertex *aDof) const
bool has_dof_container () const
 true while a container is allocated, whatever its count
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

Detailed Description

Lagrange Element baseclass.

Constructor & Destructor Documentation

◆ Element()

belfem::mesh::Element::Element ( const id_t aID)

◆ ~Element()

belfem::mesh::Element::~Element ( )
override

Member Function Documentation

◆ allocate_control_points_container()

virtual void belfem::mesh::Element::allocate_control_points_container ( const uint aSize)
inlinevirtual

◆ allocate_edge_container()

virtual void belfem::mesh::Element::allocate_edge_container ( )
inlinevirtual

◆ allocate_element_container()

void belfem::mesh::Element::allocate_element_container ( const uint aSize = 0)

◆ allocate_face_container()

virtual void belfem::mesh::Element::allocate_face_container ( )
inlinevirtual

◆ allocate_facet_container()

void belfem::mesh::Element::allocate_facet_container ( const uint aSize)

◆ allocate_neighbor_container()

void belfem::mesh::Element::allocate_neighbor_container ( )

◆ array_memory()

size_t belfem::mesh::Element::array_memory ( ) const
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

◆ block_id()

id_t belfem::mesh::Element::block_id ( ) const
inline

◆ control_point() [1/2]

ControlPoint * belfem::mesh::Element::control_point ( const uint aIndex)
inline

◆ control_point() [2/2]

ControlPoint * belfem::mesh::Element::control_point ( const uint aIndex) const
inline

◆ dimension()

uint belfem::mesh::Element::dimension ( ) const
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 >.

◆ edge() [1/2]

const Edge * belfem::mesh::Element::edge ( const uint aIndex) const
inlineoverridevirtual

◆ edge() [2/2]

Edge * belfem::mesh::Element::edge ( const uint aIndex)
inlineoverridevirtual

◆ edge_direction()

virtual bool belfem::mesh::Element::edge_direction ( const uint aEdgeIndex) const
inlinevirtual

◆ element()

Element * belfem::mesh::Element::element ( const uint aIndex)
inlineoverridevirtual

Reimplemented from belfem::mesh::Basis.

◆ entity_type()

EntityType belfem::mesh::Element::entity_type ( ) const
inlineoverridevirtual

returns a cell, needed for DOF handling

Reimplemented from belfem::mesh::Basis.

◆ face() [1/2]

const Face * belfem::mesh::Element::face ( const uint aIndex) const
inlineoverridevirtual

◆ face() [2/2]

Face * belfem::mesh::Element::face ( const uint aIndex)
inlineoverridevirtual

◆ facet()

Facet * belfem::mesh::Element::facet ( const uint aIndex)
inline

◆ flag_corner_nodes()

virtual void belfem::mesh::Element::flag_corner_nodes ( const uint8_t aIndex = 0)
inlinevirtual

flags nodes for linear representation only

Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.

◆ flag_edges()

virtual void belfem::mesh::Element::flag_edges ( )
inlinevirtual

◆ flag_faces()

virtual void belfem::mesh::Element::flag_faces ( )
inlinevirtual

◆ flag_nodes()

virtual void belfem::mesh::Element::flag_nodes ( const uint8_t aIndex = 0)
inlinevirtual

◆ geometry_tag()

uint belfem::mesh::Element::geometry_tag ( ) const
inline

◆ get_corner_nodes_of_facet()

virtual void belfem::mesh::Element::get_corner_nodes_of_facet ( const uint aFacetIndex,
Cell< Node * > & aNodes )
inlinevirtual

◆ get_edges_of_facet()

virtual void belfem::mesh::Element::get_edges_of_facet ( const uint aFacetIndex,
Cell< Edge * > & aEdges )
inlinevirtual

◆ get_nodes_of_edge()

◆ get_nodes_of_facet()

virtual void belfem::mesh::Element::get_nodes_of_facet ( const uint aFacetIndex,
Cell< Node * > & aNodes )
inlinevirtual

◆ has_edges()

virtual bool belfem::mesh::Element::has_edges ( ) const
inlinevirtual

◆ has_faces()

virtual bool belfem::mesh::Element::has_faces ( ) const
inlinevirtual

◆ increment_element_counter()

void belfem::mesh::Element::increment_element_counter ( )
inline

◆ insert_control_point()

virtual void belfem::mesh::Element::insert_control_point ( ControlPoint * aControlPoint,
const uint aIndex )
inlinevirtual

◆ insert_edge()

virtual void belfem::mesh::Element::insert_edge ( Edge * aEdge,
const uint aIndex )
inlinevirtual

◆ insert_element()

void belfem::mesh::Element::insert_element ( Element * aElement)

◆ insert_face()

virtual void belfem::mesh::Element::insert_face ( Face * aFace,
const uint aIndex )
inlinevirtual

◆ insert_facet()

void belfem::mesh::Element::insert_facet ( Facet * aFacet,
const uint aIndex )

◆ insert_neighbor()

void belfem::mesh::Element::insert_neighbor ( Element * aNeighbor,
const uint aIndex )

◆ insert_node()

virtual void belfem::mesh::Element::insert_node ( Node * aNode,
const uint aIndex )
inlinevirtual

◆ is_curved()

bool belfem::mesh::Element::is_curved ( ) const
inline

◆ is_thinshell()

◆ memory()

size_t belfem::mesh::Element::memory ( ) const
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 >.

◆ neighbor()

Element * belfem::mesh::Element::neighbor ( const uint aIndex)
inline

◆ node() [1/2]

const Node * belfem::mesh::Element::node ( const uint aIndex) const
inlineoverridevirtual

◆ node() [2/2]

Node * belfem::mesh::Element::node ( const uint aIndex)
inlineoverridevirtual

◆ node_of_edge()

virtual Node * belfem::mesh::Element::node_of_edge ( const uint aNodeIndex,
const uint aEdgeIndex )
inlinevirtual

◆ number_of_control_points()

uint belfem::mesh::Element::number_of_control_points ( ) const
inline

◆ number_of_corner_nodes()

virtual uint belfem::mesh::Element::number_of_corner_nodes ( ) const
inlinevirtual

◆ number_of_edges()

uint belfem::mesh::Element::number_of_edges ( ) const
inlineoverridevirtual

◆ number_of_elements()

uint belfem::mesh::Element::number_of_elements ( ) const
inlineoverridevirtual

Reimplemented from belfem::mesh::Basis.

◆ number_of_faces()

uint belfem::mesh::Element::number_of_faces ( ) const
inlineoverridevirtual

◆ number_of_facets()

virtual uint belfem::mesh::Element::number_of_facets ( ) const
inlinevirtual

◆ number_of_nodes()

uint belfem::mesh::Element::number_of_nodes ( ) const
inlineoverridevirtual

◆ physical_tag()

uint belfem::mesh::Element::physical_tag ( ) const
inline

◆ print()

void belfem::mesh::Element::print ( ) const
virtual

◆ reset_control_point_container()

void belfem::mesh::Element::reset_control_point_container ( )
inline

◆ reset_edge_container()

virtual void belfem::mesh::Element::reset_edge_container ( )
inlinevirtual

◆ reset_element_container()

void belfem::mesh::Element::reset_element_container ( )
overridevirtual

Reimplemented from belfem::graph::Vertex.

◆ reset_face_container()

virtual void belfem::mesh::Element::reset_face_container ( )
inlinevirtual

◆ set_block_id()

void belfem::mesh::Element::set_block_id ( const id_t aID)
inline

◆ set_curved_flag()

void belfem::mesh::Element::set_curved_flag ( )
inline

◆ set_edge_direction()

virtual void belfem::mesh::Element::set_edge_direction ( const uint aEdgeIndex,
const bool aIsPlus )
inlinevirtual

◆ set_geometry_tag()

void belfem::mesh::Element::set_geometry_tag ( const uint aTag)
inline

◆ set_physical_tag()

void belfem::mesh::Element::set_physical_tag ( const uint aTag)
inline

◆ type()

virtual ElementType belfem::mesh::Element::type ( ) const
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 >.

◆ unflag_corner_nodes()

virtual void belfem::mesh::Element::unflag_corner_nodes ( const uint8_t aIndex = 0)
inlinevirtual

flags nodes for linear representation only

Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.

◆ unflag_edges()

virtual void belfem::mesh::Element::unflag_edges ( )
inlinevirtual

◆ unflag_faces()

virtual void belfem::mesh::Element::unflag_faces ( )
inlinevirtual

◆ unflag_nodes()

virtual void belfem::mesh::Element::unflag_nodes ( const uint8_t aIndex = 0)
inlinevirtual

◆ unset_curved_flag()

void belfem::mesh::Element::unset_curved_flag ( )
inline

Member Data Documentation

◆ mControlPoints

ControlPoint** belfem::mesh::Element::mControlPoints = nullptr
protected

control points connected to this element, if any

◆ mCurvedFlag

bool belfem::mesh::Element::mCurvedFlag = true
protected

flag telling if this element is curved

◆ mElements

Element** belfem::mesh::Element::mElements = nullptr
protected

Elements connected to this element.

◆ mElementTags

uint16_t belfem::mesh::Element::mElementTags[2] = { 0, 0 }
protected

geometry group ID as set by gmsh physical group ID as set by gmsh

◆ mFacets

Facet** belfem::mesh::Element::mFacets = nullptr
protected

◆ mNeighbors

Element** belfem::mesh::Element::mNeighbors = nullptr
protected

unlike with the elements, the neighbors are in the order of the facets and may contain null pointers!

◆ mNumberOfControlPoints

uint8_t belfem::mesh::Element::mNumberOfControlPoints = 0
protected

number of control points connected to this element

◆ mNumberOfElements

uint16_t belfem::mesh::Element::mNumberOfElements = 0
protected

The documentation for this class was generated from the following files: