Rodin/Variational/P1/P1Element.h file

P1 (piecewise linear) finite element implementation.

This file provides the P1Element class template for continuous piecewise linear finite elements. P1 elements have:

  • One DOF per vertex
  • Linear basis functions: $ \phi_i(x_j) = \delta_{ij} $ (Lagrange property)
  • Constant gradient per element: $ \nabla \phi_i|_K = \text{const} $

P1 elements are the most common finite elements, providing first-order convergence ( $ O(h) $ for L² norm, $ O(h^2) $ for energy norm) and forming the foundation for many FEM applications.

Namespaces

namespace Rodin
The Rodin library for Shape and Topology Optimization.
namespace Rodin::FormLanguage
Module for writing high level abstract expressions.
namespace Rodin::Variational
Module which provides the necessary tools for constructing variational problems.

Classes

template<class Scalar>
class Rodin::Variational::P1Element
Degree 1 Lagrange element.
class Rodin::Variational::P1Element::LinearForm
Represents a linear form of a P1 scalar element.
class Rodin::Variational::P1Element::BasisFunction
Represents a piecewise linear basis function of a P1 scalar element.
template<size_t Order>
class Rodin::Variational::P1Element::BasisFunction::DerivativeFunction
Represents a partial derivative of a P1 basis function.
class Rodin::Variational::P1Element::BasisFunction::GradientFunction
Represents the gradient of a P1 basis function.
template<class Scalar>
class Rodin::Variational::P1Element<Math::Vector<Scalar>>
Continuous piecewise linear (degree 1) vector Lagrange element.
template<size_t Order>
class Rodin::Variational::P1Element<Math::Vector<Scalar>>::BasisFunction::DerivativeFunction
Represents a derivative function of a P1 vector element.