template<>
Rodin::Variational::P1<Complex, Geometry::Mesh<Context::Sequential>> class final

Real valued Lagrange finite element space.

Represents the finite element space composed of scalar valued continuous, piecewise linear functions:

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

This class is scalar valued, i.e. evaluations of the function are of Rodin::Complex type.

Base classes

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

Public types

template<>
class InverseMapping
Inverse mapping for the scalar/complex P1 space.
template<>
class Mapping
Mapping for the scalar/complex P1 space.
using RangeType = ScalarType
Range type of value.
using ContextType = Context::Sequential
Represents the Context of the P1 space.
using MeshType = Geometry::Mesh<ContextType>
Type of mesh on which the finite element space is built.
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 MeshType& 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.
template<class FunctionDerived>
auto getMapping(const std::pair<size_t, Index>& idx, const FunctionBase<FunctionDerived>& v) const -> auto
Returns the mapping of the function from the physical element to the reference element.
template<class CallableType>
auto getInverseMapping(const std::pair<size_t, Index>& idx, const CallableType& v) const -> auto
Returns the inverse mapping of the function from the physical element to the reference element.

Function documentation

template<>
size_t Rodin::Variational::P1<Complex, 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<Complex, 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 MeshType& Rodin::Variational::P1<Complex, 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<Complex, 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<Complex, 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.

template<> template<class FunctionDerived>
auto Rodin::Variational::P1<Complex, Geometry::Mesh<Context::Sequential>>::getMapping(const std::pair<size_t, Index>& idx, const FunctionBase<FunctionDerived>& v) const

Returns the mapping of the function from the physical element to the reference element.

Parameters
idx in Index of the element in the mesh
in Function defined on an element of the mesh

For all $ \tau \in \mathcal{T}_h $ in the mesh, the finite element space is generated by the bijective mapping:

\[ \psi_\tau : \mathbb{P}_1(\tau) \rightarrow \mathbb{P}_1(R) \]

taking a function $ v \in V(\tau) $ from the global element $ \tau $ element $ R $ .

template<> template<class CallableType>
auto Rodin::Variational::P1<Complex, Geometry::Mesh<Context::Sequential>>::getInverseMapping(const std::pair<size_t, Index>& idx, const CallableType& v) const

Returns the inverse mapping of the function from the physical element to the reference element.

Parameters
idx in Index of the element in the mesh.
in Callable type