Rodin/Variational/ShapeFunction.h file

Base class for finite element shape functions and basis functions.

This file defines the ShapeFunctionBase and ShapeFunction classes, which provide the foundation for representing finite element basis functions in both trial and test spaces. These classes form the core of the finite element discretization in Rodin's variational framework.

Namespaces

namespace Rodin
The Rodin library for finite element methods and shape optimization.
namespace Rodin::FormLanguage
Typed expressions for constructing variational forms.
namespace Rodin::Variational
Finite element spaces, fields, and variational problems.

Classes

template<class Derived, class FES, Variational::ShapeFunctionSpaceType Space>
struct Rodin::FormLanguage::Traits<Variational::ShapeFunctionBase<Derived, FES, Space>>
Type traits for ShapeFunctionBase: exposes the derived type, the finite element space, the shape function space, the result type, the range type and the scalar type.
template<class Derived, class FES, Variational::ShapeFunctionSpaceType Space>
struct Rodin::FormLanguage::Traits<Variational::ShapeFunction<Derived, FES, Space>>
Type traits for ShapeFunction: exposes the derived type, the finite element space, the shape function space, the result type, the range type and the scalar type.
template<class T>
struct Rodin::FormLanguage::IsInterfaceShapeFunction
Detects shape expressions whose basis spans two incident cells.
template<class Derived, class FES, Variational::ShapeFunctionSpaceType Space>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::ShapeFunctionBase<Derived, FES, Space>>
Propagates two-cell support through a shape expression.
template<class Derived, class FES, Variational::ShapeFunctionSpaceType Space>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Average<Variational::ShapeFunctionBase<Derived, FES, Space>>>
Propagates two-cell support through a shape expression.
template<class Derived, class FES, Variational::ShapeFunctionSpaceType Space>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Jump<Variational::ShapeFunctionBase<Derived, FES, Space>>>
Propagates two-cell support through a shape expression.
template<class Operand>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Conjugate<Operand>>
Propagates the operand's support through a unary expression.
template<class Operand>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Transpose<Operand>>
Propagates the operand's support through a unary expression.
template<class Operand>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Trace<Operand>>
Propagates the operand's support through a unary expression.
template<class Operand>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::UnaryMinus<Operand>>
Propagates the operand's support through a unary expression.
template<class Operand>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Grad<Operand>>
Propagates the operand's support through a unary expression.
template<class Operand>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Div<Operand>>
Propagates the operand's support through a unary expression.
template<class Operand>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Jacobian<Operand>>
Propagates the operand's support through a unary expression.
template<class Operand>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Derivative<Operand>>
Propagates the operand's support through a unary expression.
template<class LHS, class RHS>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Sum<LHS, RHS>>
Detects two-cell support in either binary operand.
template<class LHS, class RHS>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Mult<LHS, RHS>>
Detects two-cell support in either binary operand.
template<class LHS, class RHS>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Division<LHS, RHS>>
Detects two-cell support in either binary operand.
template<class LHS, class RHS>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Dot<LHS, RHS>>
Detects two-cell support in either binary operand.
template<class Operand, class... Indices>
struct Rodin::FormLanguage::IsInterfaceShapeFunction<Variational::Component<Operand, Indices...>>
Propagates support through component selection.
template<class T>
struct Rodin::Variational::IsTrialFunction
Type trait to check if a type is a TrialFunction.
template<class Solution, class FES>
struct Rodin::Variational::IsTrialFunction<TrialFunction<Solution, FES>>
Specialization for TrialFunction types.
template<class T>
struct Rodin::Variational::IsTestFunction
Type trait to check if a type is a TestFunction.
template<class FES>
struct Rodin::Variational::IsTestFunction<TestFunction<FES>>
Specialization for TestFunction types.
template<class Derived, class FES = typename FormLanguage::Traits<Derived>::FESType, ShapeFunctionSpaceType SpaceType = FormLanguage::Traits<Derived>::SpaceType>
class Rodin::Variational::ShapeFunctionBase
Base class for shape function objects.