Rodin/Variational/FiniteElementSpace.h file

Finite element space classes and infrastructure.

This file defines the FiniteElementSpace classes which represent discrete function spaces $ V_h $ 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 $ V_h $ is defined by the triple $ (K, P, \Sigma) $ :

  • $ K $ : Reference element geometry (triangle, tetrahedron, etc.)
  • $ P $ : Polynomial space ( $ \mathbb{P}_k $ , $ \mathbb{Q}_k $ , etc.)
  • $ \Sigma $ : 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.