FiniteElementSpace.h file
Finite element space classes and infrastructure.
This file defines the FiniteElementSpace classes which represent discrete function spaces used in finite element approximations. The finite element space defines the polynomial degree, mesh association, DOF mapping, and conformity properties of the approximation.
Mathematical Foundation
A finite element space is defined by the triple :
- : Reference element geometry (triangle, tetrahedron, etc.)
- : Polynomial space ( , , etc.)
- : Set of degrees of freedom (nodal values, moments, etc.)
Conformity
Different conforming spaces for different problems:
- H¹-conforming: Continuous functions (standard Lagrange elements)
- H(div)-conforming: Normal component continuous (Raviart-Thomas, BDM)
- H(curl)-conforming: Tangential component continuous (Nédélec)
- L²-spaces: Discontinuous (DG methods)
DOF Management
The finite element space manages:
- Global DOF numbering: unique index for each basis function
- Local-to-global mapping: relates element DOFs to global DOFs
- Boundary DOFs: identification for boundary condition application
Usage Example
// Create P1 space (continuous piecewise linear) P1 Vh(mesh); std::cout << "DOFs: " << Vh.getGlobalSize() << std::endl; // Vector-valued space for elasticity P1 Wh(mesh, mesh.getSpaceDimension());
Namespaces
- namespace Rodin
- The Rodin library for Shape and Topology Optimization.
- namespace Rodin::Variational
- Module which provides the necessary tools for constructing variational problems.
Classes
- class Rodin::Variational::FiniteElementSpaceBase
- Base class for finite element spaces.
- struct Rodin::Variational::FiniteElementSpaceBase::LocalIndex
- Local degree of freedom indexing structure.
-
template<class Mesh, class Derived>class Rodin::Variational::FiniteElementSpace
- Represernts a finite element space.
-
template<class Derived>class Rodin::Variational::FiniteElementSpacePullbackBase
- Base class for mappings taking functions defined on physical elements to reference elements.
-
template<class Derived>class Rodin::Variational::FiniteElementSpacePushforwardBase
- Base class for inverse mappings taking functions defined on reference elements to physical elements.