template<>
Rodin::Variational::P1<Math::Vector<Real>, Geometry::Mesh<Context::Sequential>> class final

Vector valued Lagrange finite element space.

Represents the finite element space composed of $ d $ dimensional vector valued, continuous, piecewise linear functions:

\[ \mathbb{P}_1 (\mathcal{T}_h)^d = \{ v \in C^0(\mathcal{T}_h)^d \mid v|_{\tau} \in \mathbb{P}_1(\tau), \ \tau \in \mathcal{T}_h \} \ . \]

This class is vector valued, i.e. evaluations of the function are of Math::Vector<Real> type.

Base classes

template<class Derived>
class FiniteElementSpace<P1<Math::Vector<Real>, Geometry::Mesh<Context::Sequential>>>
Represernts a finite element space.

Public types

using RangeType = Math::Vector<ScalarType>
Range type of value.
using MeshType = Geometry::Mesh<Context::Sequential>
Type of mesh on which the finite element space is built.
using ContextType = Context::Sequential
Represents the Context of the P1 space.
using ElementType = P1Element<RangeType>
Type of finite element.
using Parent = FiniteElementSpace<P1<RangeType, MeshType>>
Parent class.

Public functions

auto getSize() const -> size_t override
Gets the total number of degrees of freedom.
auto getVectorDimension() const -> size_t override
Gets the dimension of the range space, i.e. the number of components of each basis function.
auto getMesh() const -> const Geometry::Mesh<ContextType>& override
Gets the constant reference to the mesh upon which the finite element space is built on.
auto getDOFs(size_t d, Index i) const -> const IndexArray& override
Gets a set of global degree of freedom indices associated to the polytope of dimension $ d $ and index $ i $ .
auto getGlobalIndex(const std::pair<size_t, Index>& idx, Index local) const -> Index override
Gets the global index for the local degree of freedom on the $ (d, i) $ -polytope.

Function documentation

template<>
size_t Rodin::Variational::P1<Math::Vector<Real>, Geometry::Mesh<Context::Sequential>>::getSize() const override

Gets the total number of degrees of freedom.

Returns Size of the finite element space

template<>
size_t Rodin::Variational::P1<Math::Vector<Real>, Geometry::Mesh<Context::Sequential>>::getVectorDimension() const override

Gets the dimension of the range space, i.e. the number of components of each basis function.

Returns Vector dimension of the finite element space.

template<>
const Geometry::Mesh<ContextType>& Rodin::Variational::P1<Math::Vector<Real>, Geometry::Mesh<Context::Sequential>>::getMesh() const override

Gets the constant reference to the mesh upon which the finite element space is built on.

Returns Constant reference to mesh

template<>
const IndexArray& Rodin::Variational::P1<Math::Vector<Real>, Geometry::Mesh<Context::Sequential>>::getDOFs(size_t d, Index i) const override

Gets a set of global degree of freedom indices associated to the polytope of dimension $ d $ and index $ i $ .

Returns Set of indices associated to the $ (d, i) $ -polytope.

template<>
Index Rodin::Variational::P1<Math::Vector<Real>, Geometry::Mesh<Context::Sequential>>::getGlobalIndex(const std::pair<size_t, Index>& idx, Index local) const override

Gets the global index for the local degree of freedom on the $ (d, i) $ -polytope.

Parameters
idx in Pair representing the $ (d, i) $ -polytope.
local in Local degree of freedom index.