template<class Scalar>
Rodin::Variational::P1Element class

Degree 1 Lagrange element.

Template parameters
Scalar Type of scalar range (e.g., Real, Complex)

Continuous piecewise linear (degree 1) scalar Lagrange element.

SpecializationDescription
P1Element<Scalar>Scalar-valued continuous piecewise linear element.
P1Element<SpatialVector<Scalar>>Vector-valued continuous piecewise linear element.

The P1Element provides a first-order finite element with:

  • DOF count: One per vertex ( $ n_v $ total)
  • Basis functions: Linear functions satisfying $ \phi_i(x_j) = \delta_{ij} $
  • Gradient: Constant on each element, $ \nabla \phi_i|_K = \text{const} $
  • Continuity: Global C⁰ continuity across element interfaces

P1 elements provide first-order convergence and are the standard choice for elliptic PDEs like Poisson's equation $ -\Delta u = f $ .

Base classes

template<class Derived>
class FiniteElementBase<P1Element<Scalar>>
Base class for finite elements.

Public types

class BasisFunction
Represents a piecewise linear basis function of a P1 scalar element.
class LinearForm
Represents a linear form of a P1 scalar element.
using Parent = FiniteElementBase<P1Element<Scalar>>
Parent class.
using ScalarType = Scalar
Scalar value type.
using RangeType = ScalarType
Type of range.

Constructors, destructors, conversion operators

P1Element(Geometry::Polytope::Type geometry) constexpr
Constructs the P1Element from the given arguments.
P1Element(const P1Element& other) constexpr
Copy constructor.
P1Element(P1Element&& other) constexpr
Move constructor.

Public functions

auto operator=(const P1Element& other) -> P1Element& constexpr
Copy assignment.
auto operator=(P1Element&& other) -> P1Element& constexpr
Move assignment.
auto getCount() const -> size_t constexpr
Gets the number of degrees of freedom in the finite element.
auto getNode(size_t i) const -> const Math::SpatialPoint& constexpr
Gets the node of a local degree of freedom.
auto getLinearForm(size_t i) const -> const LinearForm&
Gets the degree-of-freedom functional of a local degree of freedom.
auto getBasis(size_t i) const -> const BasisFunction&
Gets the basis function of a local degree of freedom.
auto getOrder() const -> size_t
Returns the polynomial order.
template<class Archive>
void serialize(Archive& ar, const unsigned int)
Serializes the object through a Boost archive.

Function documentation

template<class Scalar>
size_t Rodin::Variational::P1Element<Scalar>::getCount() const constexpr

Gets the number of degrees of freedom in the finite element.

Returns Number of degrees of freedom