BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
belfem::mesh Namespace Reference

Namespaces

namespace  cohomology
namespace  normals
namespace  proto

Classes

class  Basis
class  BeltedTree
class  BfmFile
class  Block
class  Chain
 Formal sum of k-simplices (homology). More...
class  Cochain
 Cochain: a functional on chains (cohomology). More...
class  Cohomology
 Computes the cohomology groups H^k of a mesh complex. More...
class  CommTable
class  ConnectivityCalculator
 Computes element-to-element and node-to-node connectivity for finite element meshes. More...
class  ControlPoint
class  Curve
class  CurvedElementChecker
 this temporary class is created by mesh->flag_curved_elements(). More...
class  CurveFactory
class  CutData
 Per-cut topology and metadata. More...
class  CutFactory
 Main orchestrator for automatic cut generation on multiply-connected domains. More...
class  CutProcessor
 Converts thick cuts into the thin cuts the FEM assembly consumes. More...
class  CutProcessorManual
class  CutSet
class  Distributor
class  Edge
 Special Edge class for NEDELEC-Type elements. More...
class  EdgeCutter
class  EdgeFactory
class  Element
 Lagrange Element baseclass. More...
class  ElementFactory
class  ElementTemplate
 Lagrange Element templated against. More...
class  ExodusWriter
class  Face
class  FaceFactory
class  Facet
class  Field
class  GlobalVariable
class  GmshReader
class  Homology
 Computes the homology groups H_k of a mesh complex. More...
class  InterfaceProcessor
class  InterfaceSet
struct  Layer
 this is a supporting data type for the tape generation the mesh entities are passed over to the mesh and will be deleted by the mesh during destruction More...
class  Node
struct  OpNodeIndex
struct  OpSegmentIndex
class  Partitioner
class  Periodicity
 Stores matched periodic boundary entity pairs (nodes, edges, faces). More...
class  PeriodicityFactory
 Creates a Periodicity object by matching nodes on two periodic boundary planes. More...
class  Pipette
 the pipette is a class that measures the volume of an element More...
class  ProtoMesh
class  ReferenceElement
class  Segment
class  SideSet
class  SimplicialComplex
 Simplicial complex reduction engine underlying the homology and cohomology computation. More...
class  SourceExpander
class  ThinShell
 the thin shell class is a data container needed to link element masters and slaves to thin shell blocks More...
class  ThinShellFactory
class  Topology
 Analyzes and classifies mesh topology for finite element simulations. More...
class  Vertex
class  VtkWriter

Enumerations

enum class  InterfaceTreatment { TieWeight1 , Decouple }
enum class  CutAlgorithm {
  Pellikka = 0 , CCR = 1 , BeltedTree = 2 , PellikkaGeneralized = 3 ,
  UNDEFINED = 4
}

Functions

void compute_edge_lengths (const uint aDimension, Cell< mesh::Element * > &aElements, Vector< real > &aEdgeLength)
real compute_surface (Mesh *aMesh, const Vector< id_t > &aSideSetIDs)
void compute_surface_normals (Mesh *aMesh, const Vector< id_t > &aGroupIDs, const GroupType aGroupType, const bool aComputeInParallel)
real compute_volume (Mesh *aMesh, const id_t aBlockID)
real compute_volume (Mesh *aMesh, const Vector< id_t > &aBlockIDs)
real integrate_scalar_over_sidesets (Mesh *aMesh, const string &aFieldLabel, const Vector< id_t > &aSidesetIDs, const proc_t aMasterRank)
string to_string (CutAlgorithm aCutAlgorithm)
CutAlgorithm to_cut_algorithm (const string &aCutAlgorithm)
uint compute_facet_index (Facet *aFacet, Element *aElement, Cell< Node * > &aNodes)
template<typename T>
void collect_hanging_basis (Cell< T * > &aBasis, Cell< T * > &aHangingBasis)
bool check_facet_orientation (const Facet *aA, const Facet *aB)
 Checks whether two adjacent facets have consistent orientation.
void symrcm (Cell< Node * > &aNodes)
void read_node_tmatrix_from_hdf5 (Mesh *aMesh, const string &aFile)
void to_master_orientation (Facet *aFacet, Cell< Node * > &aSlaveOrientation, Cell< Node * > &aMasterOrientation)
void to_master_orientation (Face *aFace, Cell< Node * > &aSlaveOrientation, Cell< Node * > &aMasterOrientation)
void to_master_orientation (Facet *aFacet, Cell< Edge * > &aSlaveOrientation, Cell< Edge * > &aMasterOrientation)
void to_master_orientation (Face *aFace, Cell< Edge * > &aSlaveOrientation, Cell< Edge * > &aMasterOrientation)
void unflag_elements (Cell< Element * > &aElements)
void collect_node_coords (Element *aElement, Matrix< real > &aNodeCoords, const uint aNumberOfDimensions, const bool aCornerNodesOnly)
void collect_node_data (Element *aElement, const Vector< real > &aFieldOnMesh, Vector< real > &aNodalField, const bool aCornerNodesOnly)
real compute_surface_increment (const Matrix< real > &adNdXi, const Matrix< real > &aNodeCoords, const uint aNumSpatialDimensions)
unsigned int number_of_nodes (const enum ElementType aElementType)
unsigned int number_of_edges (const enum ElementType aElementType)
belfem::InterpolationOrder interpolation_order (const enum ElementType aElementType)
unsigned int interpolation_order_numeric (const enum ElementType aElementType)
belfem::GeometryType geometry_type (const enum ElementType aElementType)
int dimension (const enum GeometryType aGeometryType)
int dimension (const enum ElementType aElementType)
ElementType element_type_from_gmsh (const int aGmshNumber)
int gmsh_from_element_type (const ElementType aElementType)
ElementType linear_element_type (const ElementType aElementType)
unsigned int number_of_corner_nodes (const enum ElementType aElementType)
unsigned int number_of_facets (const enum ElementType aElementType)
unsigned int bottom_facet_index (const enum ElementType aElementType)
 Facet index of the "lower" face of a thin-shell element (the face whose outward normal points away from the shell on the bottom-layer side).
unsigned int top_facet_index (const enum ElementType aElementType)
 Facet index of the "upper" face of a thin-shell element (the face whose outward normal points away from the shell on the top-layer side).
unsigned int number_of_faces (const enum ElementType aElementType)
ElementType element_type_of_facet (const ElementType aElementType, const unsigned int aFacetIndex)
uint number_of_orientations (const ElementType aElementType, const uint aFacetNumber)
uint number_of_nedelec_dofs (const ElementType aElementType)
ElementType element_type_from_numnodes (const uint aDimension, const uint aNumNodes, const bool aAsThinshell)
void get_bottom_nodes (Element *aElement, Cell< Node * > &aNodes)
void get_top_nodes (Element *aElement, Cell< Node * > &aNodes)
void get_bottom_edges (Element *aElement, Cell< Edge * > &aEdges)
void get_top_edges (Element *aElement, Cell< Edge * > &aEdges)

Variables

struct belfem::mesh::OpNodeIndex opNodeIndex
struct belfem::mesh::OpSegmentIndex opSegmentIndex

Enumeration Type Documentation

◆ CutAlgorithm

enum class belfem::mesh::CutAlgorithm
strong
Enumerator
Pellikka 
CCR 
BeltedTree 
PellikkaGeneralized 
UNDEFINED 

◆ InterfaceTreatment

Enumerator
TieWeight1 
Decouple 

Function Documentation

◆ bottom_facet_index()

unsigned int belfem::mesh::bottom_facet_index ( const enum ElementType aElementType)

Facet index of the "lower" face of a thin-shell element (the face whose outward normal points away from the shell on the bottom-layer side).

Dispatches on geometry type: volume QUAD/PENTA/HEX types return the same slot as their thin-shell twin; errors for geometries without a thin-shell variant ( TRI, TET, PYRA, LINE, VERTEX ).

◆ check_facet_orientation()

bool belfem::mesh::check_facet_orientation ( const Facet * aA,
const Facet * aB )
inline

Checks whether two adjacent facets have consistent orientation.

In 3D, facets are polygons and adjacency means a shared edge: consistent outward normals traverse that edge in opposite directions:

Facet A: ... → P → Q → ...
Facet B: ... → Q → P → ...   (opposite → consistent)

If both traverse the shared edge in the same direction, the normals point in opposite directions (inverted).

For two-node facets ( 2D line segments ), two distinct facets share a single node, never an edge — consistency there means one traversal continues the other through the shared node:

Facet A: P → Q
Facet B: Q → R          (chain continues → consistent)

If both segments start, or both end, at the shared node, the normals are inverted. Coincident twins reduce to the 3D rule: reversed twin → consistent, identical twin → inverted. Nodes are compared via original() because the 2D facet-to-facet connectivity matches duplicates onto their originals.

Parameters
[in]aAfirst facet
[in]aBsecond facet (must share an edge, or in 2D a node, with aA)
Returns
true if normals are consistent, false if inverted

◆ collect_hanging_basis()

template<typename T>
void belfem::mesh::collect_hanging_basis ( Cell< T * > & aBasis,
Cell< T * > & aHangingBasis )

◆ collect_node_coords()

void belfem::mesh::collect_node_coords ( Element * aElement,
Matrix< real > & aNodeCoords,
const uint aNumberOfDimensions,
const bool aCornerNodesOnly )

◆ collect_node_data()

void belfem::mesh::collect_node_data ( Element * aElement,
const Vector< real > & aFieldOnMesh,
Vector< real > & aNodalField,
const bool aCornerNodesOnly )

◆ compute_edge_lengths()

void belfem::mesh::compute_edge_lengths ( const uint aDimension,
Cell< mesh::Element * > & aElements,
Vector< real > & aEdgeLength )

◆ compute_facet_index()

uint belfem::mesh::compute_facet_index ( Facet * aFacet,
Element * aElement,
Cell< Node * > & aNodes )

◆ compute_surface()

real belfem::mesh::compute_surface ( Mesh * aMesh,
const Vector< id_t > & aSideSetIDs )

◆ compute_surface_increment()

real belfem::mesh::compute_surface_increment ( const Matrix< real > & adNdXi,
const Matrix< real > & aNodeCoords,
const uint aNumSpatialDimensions )

◆ compute_surface_normals()

void belfem::mesh::compute_surface_normals ( Mesh * aMesh,
const Vector< id_t > & aGroupIDs,
const GroupType aGroupType,
const bool aComputeInParallel )

◆ compute_volume() [1/2]

real belfem::mesh::compute_volume ( Mesh * aMesh,
const id_t aBlockID )

◆ compute_volume() [2/2]

real belfem::mesh::compute_volume ( Mesh * aMesh,
const Vector< id_t > & aBlockIDs )

◆ dimension() [1/2]

int belfem::mesh::dimension ( const enum ElementType aElementType)

◆ dimension() [2/2]

int belfem::mesh::dimension ( const enum GeometryType aGeometryType)

◆ element_type_from_gmsh()

ElementType belfem::mesh::element_type_from_gmsh ( const int aGmshNumber)

◆ element_type_from_numnodes()

ElementType belfem::mesh::element_type_from_numnodes ( const uint aDimension,
const uint aNumNodes,
const bool aAsThinshell )

◆ element_type_of_facet()

ElementType belfem::mesh::element_type_of_facet ( const ElementType aElementType,
const unsigned int aFacetIndex )

◆ geometry_type()

GeometryType belfem::mesh::geometry_type ( const enum ElementType aElementType)

◆ get_bottom_edges()

void belfem::mesh::get_bottom_edges ( Element * aElement,
Cell< Edge * > & aEdges )

◆ get_bottom_nodes()

void belfem::mesh::get_bottom_nodes ( Element * aElement,
Cell< Node * > & aNodes )

◆ get_top_edges()

void belfem::mesh::get_top_edges ( Element * aElement,
Cell< Edge * > & aEdges )

◆ get_top_nodes()

void belfem::mesh::get_top_nodes ( Element * aElement,
Cell< Node * > & aNodes )

◆ gmsh_from_element_type()

int belfem::mesh::gmsh_from_element_type ( const ElementType aElementType)

◆ integrate_scalar_over_sidesets()

real belfem::mesh::integrate_scalar_over_sidesets ( Mesh * aMesh,
const string & aFieldLabel,
const Vector< id_t > & aSidesetIDs,
const proc_t aMasterRank )

◆ interpolation_order()

InterpolationOrder belfem::mesh::interpolation_order ( const enum ElementType aElementType)

◆ interpolation_order_numeric()

unsigned int belfem::mesh::interpolation_order_numeric ( const enum ElementType aElementType)

◆ linear_element_type()

ElementType belfem::mesh::linear_element_type ( const ElementType aElementType)

◆ number_of_corner_nodes()

unsigned int belfem::mesh::number_of_corner_nodes ( const enum ElementType aElementType)

◆ number_of_edges()

unsigned int belfem::mesh::number_of_edges ( const enum ElementType aElementType)

◆ number_of_faces()

unsigned int belfem::mesh::number_of_faces ( const enum ElementType aElementType)

◆ number_of_facets()

unsigned int belfem::mesh::number_of_facets ( const enum ElementType aElementType)

◆ number_of_nedelec_dofs()

uint belfem::mesh::number_of_nedelec_dofs ( const ElementType aElementType)

◆ number_of_nodes()

unsigned int belfem::mesh::number_of_nodes ( const enum ElementType aElementType)

◆ number_of_orientations()

uint belfem::mesh::number_of_orientations ( const ElementType aElementType,
const uint aFacetNumber )

◆ read_node_tmatrix_from_hdf5()

void belfem::mesh::read_node_tmatrix_from_hdf5 ( Mesh * aMesh,
const string & aFile )

◆ symrcm()

void belfem::mesh::symrcm ( Cell< Node * > & aNodes)

◆ to_cut_algorithm()

CutAlgorithm belfem::mesh::to_cut_algorithm ( const string & aCutAlgorithm)
inline

◆ to_master_orientation() [1/4]

void belfem::mesh::to_master_orientation ( Face * aFace,
Cell< Edge * > & aSlaveOrientation,
Cell< Edge * > & aMasterOrientation )

◆ to_master_orientation() [2/4]

void belfem::mesh::to_master_orientation ( Face * aFace,
Cell< Node * > & aSlaveOrientation,
Cell< Node * > & aMasterOrientation )

◆ to_master_orientation() [3/4]

void belfem::mesh::to_master_orientation ( Facet * aFacet,
Cell< Edge * > & aSlaveOrientation,
Cell< Edge * > & aMasterOrientation )

◆ to_master_orientation() [4/4]

void belfem::mesh::to_master_orientation ( Facet * aFacet,
Cell< Node * > & aSlaveOrientation,
Cell< Node * > & aMasterOrientation )

◆ to_string()

string belfem::mesh::to_string ( CutAlgorithm aCutAlgorithm)
inline

◆ top_facet_index()

unsigned int belfem::mesh::top_facet_index ( const enum ElementType aElementType)

Facet index of the "upper" face of a thin-shell element (the face whose outward normal points away from the shell on the top-layer side).

Dispatches on geometry type: volume QUAD/PENTA/HEX types return the same slot as their thin-shell twin; errors for geometries without a thin-shell variant ( TRI, TET, PYRA, LINE, VERTEX ).

◆ unflag_elements()

void belfem::mesh::unflag_elements ( Cell< Element * > & aElements)
inline

Variable Documentation

◆ opNodeIndex

struct belfem::mesh::OpNodeIndex belfem::mesh::opNodeIndex

◆ opSegmentIndex

struct belfem::mesh::OpSegmentIndex belfem::mesh::opSegmentIndex