Rodin::Variational namespace

Module which provides the necessary tools for constructing variational problems.

The Rodin::Variational module aids in the general construction of variational problems:

\[ \text{Find} \quad u \in U \quad \text{ s.t. } \quad \forall v \in V \quad a(u, v) = b(v) \ , \]

which then can be translated into linear algebra problems of the type:

\[ \mathbf{A} \mathbf{x} = \mathbf{b} \]

where $ \mathbf{A} $ represents the stiffness operator.

Namespaces

namespace F
Contains built-in functions.

Classes

template<class Operand>
class Abs
Represents the absolute value of a value.
template<class LHS, class RHS>
class AND
Represents the logical AND expression.
template<class LHSDerived, class RHSDerived>
class AND<BooleanFunctionBase<LHSDerived>, BooleanFunctionBase<RHSDerived>>
Logical AND operator between two instances of BooleanFunctionBase.
template<class TrialFES, class TestFES, class Operator>
class BilinearForm
Speciallization of BilinearForm for a matrix type.
template<class Operator>
class BilinearFormBase
Abstract base class for objects of type BilinearForm.
template<class Number, class Derived>
class BilinearFormIntegratorBase
Abstract base class for bilinear form integrators.
template<class T>
class BooleanFunction
template<class Derived>
class BooleanFunctionBase
Base class for objects representing boolean functions.
template<class Integrand>
class BoundaryIntegral
Represents expressions of the integral operator on the boundary of a domain.
template<class LHSDerived, class TrialFES, class RHSDerived, class TestFES>
class BoundaryIntegral<Dot<ShapeFunctionBase<LHSDerived, TrialFES, TrialSpace>, ShapeFunctionBase<RHSDerived, TestFES, TestSpace>>>
Integration of the dot product of a trial and test operators.
template<class NestedDerived, class FES>
class BoundaryIntegral<ShapeFunctionBase<NestedDerived, FES, TestSpace>>
Integration of a test operator.
class BoundaryNormal
Outward unit normal.
template<class ... Values>
class ComplexFunction
template<>
class ComplexFunction<Complex>
Represents a constant scalar function with type Complex.
template<class F>
class ComplexFunction<F>
Represents a scalar function given by an arbitrary scalar function.
template<class Derived>
class ComplexFunctionBase
Base class for scalar-valued functions defined on a mesh.
template<class OperandDerived>
class Component<FunctionBase<OperandDerived>, size_t>
Represents the component (or entry) of a vectorial FunctionBase instance.
template<class FES>
class Component<GridFunction<FES>>
Represents the component (or entry) of a vectorial GridFunction.
template<class OperandDerived, class FES, ShapeFunctionSpaceType Space>
class Component<ShapeFunctionBase<OperandDerived, FES, Space>>
Represents the component (or entry) of a vectorial ShapeFunction.
template<class LHS, class RHS>
class Composition
template<class Operand>
class Cos
Represents the cosine function.
template<class TrialFES, class TestFES>
class DenseProblem<TrialFES, TestFES, Math::Matrix<typename FormLanguage::Mult<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TestFES>::ScalarType>::Type>, Math::Vector<typename FormLanguage::Traits<TestFES>::ScalarType>>
General class to assemble linear systems with Math::Matrix and Math::Vector types in a serial context.
template<class Operand, class Value>
class DirichletBC
template<class FES, class ValueDerived>
class DirichletBC<TrialFunction<FES>, FunctionBase<ValueDerived>>
Represents a Dirichlet boundary condition on a ShapeFunction object.
template<class Scalar>
class DirichletBCBase
Abstract base class for a Dirichlet boundary condition.
template<class Operand>
class Div
Represents the divergence of a vector valued function.
template<class Scalar, class Mesh>
class Div<GridFunction<P1<Math::Vector<Scalar>, Mesh>>>
Divient of a P1 GridFunction.
template<class Operand, class Derived>
class DivBase
Base class for Div classes.
template<class FES, class Derived>
class DivBase<GridFunction<FES>, Derived>
Divergence of a P1 GridFunction.
template<class LHS, class RHS>
class Division
Represents the division operation.
template<class LHSDerived, class RHSDerived>
class Division<FunctionBase<LHSDerived>, FunctionBase<RHSDerived>>
Division of a FunctionBase by a FunctionBase.
template<class LHS, class RHS>
class Dot
Represents the dot product between two objects.
template<class LHSDerived, class RHSDerived, class FES, ShapeFunctionSpaceType Space>
class Dot<FunctionBase<LHSDerived>, ShapeFunctionBase<RHSDerived, FES, Space>>
Dot product between a FunctionBase and a ShapeFunctionBase.
template<class LHSDerived, class RHSDerived, class FES, ShapeFunctionSpaceType Space>
class Dot<ShapeFunctionBase<LHSDerived, FES, Space>, FunctionBase<RHSDerived>>
Dot product between a FunctionBase and a ShapeFunctionBase.
template<class LHSDerived, class TrialFES, class RHSDerived, class TestFES>
class Dot<ShapeFunctionBase<LHSDerived, TrialFES, TrialSpace>, ShapeFunctionBase<RHSDerived, TestFES, TestSpace>>
Represents the dot product of trial and test operators.
template<class LHS, class RHS>
class EQ
template<class LHSDerived, class RHSDerived>
class EQ<FunctionBase<LHSDerived>, FunctionBase<RHSDerived>>
Logical EQ operator between two instances of FunctionBase.
template<class Integrand>
class FaceIntegral
Represents expressions of the integral operator on the faces of a mesh.
template<class LHSDerived, class TrialFES, class RHSDerived, class TestFES>
class FaceIntegral<Dot<ShapeFunctionBase<LHSDerived, TrialFES, TrialSpace>, ShapeFunctionBase<RHSDerived, TestFES, TestSpace>>>
Integration of the dot product of a trial and test operators.
template<class NestedDerived, class FES>
class FaceIntegral<ShapeFunctionBase<NestedDerived, FES, TestSpace>>
Integration of a test operator.
class FaceNormal
Outward unit normal on a face.
template<class Derived>
class FiniteElementBase
Base class for finite elements.
template<class Derived>
class FiniteElementSpace
Represernts a finite element space.
class FiniteElementSpaceBase
Base class for finite element spaces.
template<class Derived>
class FiniteElementSpaceInverseMappingBase
Base class for inverse mappings taking functions defined on to reference elements.
template<class Derived>
class FiniteElementSpaceMappingBase
Base class for mappings taking functions defined on mesh elements to reference elements.
template<class Operand>
class Frobenius
Represents the Frobenius norm.
template<class Derived>
class FunctionBase
Base class for function objects which can be evaluated over a mesh.
template<class LHS, class RHS>
class GEQ
template<class Operand>
class Grad
Represents the gradient $ \nabla u $ of a scalar function $ u $ .
template<class Range, class Mesh>
class Grad<GridFunction<P0<Range, Mesh>>>
Gradient of a P0 GridFunction.
template<class Range, class Mesh>
class Grad<GridFunction<P1<Range, Mesh>>>
Gradient of a P1 GridFunction.
template<class NestedDerived, class Range, class Mesh, Variational::ShapeFunctionSpaceType SpaceType>
class Grad<ShapeFunction<NestedDerived, P0<Range, Mesh>, SpaceType>>
Gradient of a P0 ShapeFunction.
template<class NestedDerived, class Number, class Mesh, ShapeFunctionSpaceType SpaceType>
class Grad<ShapeFunction<NestedDerived, P1<Number, Mesh>, SpaceType>>
Gradient of a P1 ShapeFunction.
template<class Operand, class Derived>
class GradBase
Base class for Grad classes.
template<class FES, class Derived>
class GradBase<GridFunction<FES>, Derived>
Gradient of a P1 GridFunction.
template<class FES>
class GridFunction
Represents a grid function belonging to some finite element space.
template<class Number, class Mesh>
class GridFunction<P0<Number, Mesh>>
P0 GridFunction.
template<class Range, class Mesh>
class GridFunction<P1<Range, Mesh>>
P1 GridFunction.
template<class FES, class Derived>
class GridFunctionBase
Base class for grid function objects.
template<class LHS, class RHS>
class GT
class IdentityMatrix
Represents the identity matrix function.
template<class T>
class IntegerFunction
template<class Derived>
class IntegerFunctionBase
Base class for objects representing integer functions.
template<class Integrand>
class Integral
Represents mathematical expressions of the integral operator on a domain.
template<class LHSDerived, class TrialFES, class RHSDerived, class TestFES>
class Integral<Dot<ShapeFunctionBase<LHSDerived, TrialFES, TrialSpace>, ShapeFunctionBase<RHSDerived, TestFES, TestSpace>>>
Integration of the dot product of a trial and test operators.
template<class FES>
class Integral<GridFunction<FES>>
Integration of a GridFunction object.
template<class NestedDerived, class FES>
class Integral<ShapeFunctionBase<NestedDerived, FES, TestSpace>>
Integration of a test operator.
template<class Integrand>
class InterfaceIntegral
Represents expressions of the integral operator on the interface of a domain.
template<class LHSDerived, class TrialFES, class RHSDerived, class TestFES>
class InterfaceIntegral<Dot<ShapeFunctionBase<LHSDerived, TrialFES, TrialSpace>, ShapeFunctionBase<RHSDerived, TestFES, TestSpace>>>
Integration of the dot product of a trial and test operators.
template<class NestedDerived, class FES>
class InterfaceIntegral<ShapeFunctionBase<NestedDerived, FES, TestSpace>>
Integration of a test operator.
template<class Operand>
class Jacobian
Represents the Jacobian matrix of a type.
template<class Number, class Mesh>
class Jacobian<GridFunction<P1<Math::Vector<Number>, Mesh>>>
Jacobian of an P1 GridFunction object.
template<class ShapeFunctionDerived, class Number, class Mesh, ShapeFunctionSpaceType Space>
class Jacobian<ShapeFunction<ShapeFunctionDerived, P1<Math::Vector<Number>, Mesh>, Space>>
Jacobian of an P1 ShapeFunction object.
template<class Operand, class Derived>
class JacobianBase
Base class for Jacobian classes.
template<class FES, class Derived>
class JacobianBase<GridFunction<FES>, Derived>
Jacobian of a P1 GridFunction.
template<class Range, class Context>
class L2
Arbitrary order $ H^1(\mathcal{T}_h)^d \subset L^2 (\Omega) $ broken Sobolev space.
template<class StrictType>
class LazyEvaluator
Represents the lazy evaluation of a mesh function.
template<class LHS, class RHS>
class LEQ
template<class FES, class Vector>
class LinearForm
Represents a linear form on some finite element space.
template<class Vector>
class LinearFormBase
Base class for linear form objects.
template<class Number>
class LinearFormIntegratorBase
Base class for linear form integrators.
template<class LHS, class RHS>
class LT
template<class T>
class MatrixFunction
template<class Scalar, class Derived>
class MatrixFunctionBase
Base class for matrix-valued functions defined on a mesh.
template<class LHSDerived, class RHSDerived>
class Min<FunctionBase<LHSDerived>, FunctionBase<RHSDerived>>
Represents the minimum between two arguments.
template<class LHS, class RHS>
class Mult
Represents the multiplication operation.
template<class LHSDerived, class RHSDerived>
class Mult<FunctionBase<LHSDerived>, FunctionBase<RHSDerived>>
Multiplication of two FunctionBase instances.
template<class LHSDerived, class RHSDerived, class FES, ShapeFunctionSpaceType Space>
class Mult<FunctionBase<LHSDerived>, ShapeFunctionBase<RHSDerived, FES, Space>>
Left Multiplication of a ShapeFunctionBase by a FunctionBase.
template<class LHSDerived, class RHSDerived, class FES, ShapeFunctionSpaceType Space>
class Mult<ShapeFunctionBase<LHSDerived, FES, Space>, FunctionBase<RHSDerived>>
Right multiplication of a ShapeFunctionBase by a FunctionBase.
template<class LHS, class RHS>
class NEQ
template<class LHS, class RHS>
class OR
template<class LHSDerived, class RHSDerived>
class OR<BooleanFunctionBase<LHSDerived>, BooleanFunctionBase<RHSDerived>>
Logical OR operator between two instances of BooleanFunctionBase.
template<class Range, class Mesh>
class P0
Degree 0 Lagrange finite element space.
template<class Number>
class P0<Number, Geometry::Mesh<Context::Local>>
Real valued Lagrange finite element space.
template<class Range>
class P0Element
Degree 0 Lagrange element.
template<>
class P0Element<Real>
Degree 0 scalar Lagrange element.
template<class Range, class Mesh>
class P1
Degree 1 Lagrange finite element space.
template<>
class P1<Complex, Geometry::Mesh<Context::Local>>
Real valued Lagrange finite element space.
template<>
class P1<Math::Vector<Real>, Geometry::Mesh<Context::Local>>
Vector valued Lagrange finite element space.
template<>
class P1<Real, Geometry::Mesh<Context::Local>>
Real valued Lagrange finite element space.
template<class Range>
class P1Element
Degree 1 Lagrange element.
template<>
class P1Element<Math::Vector<Real>>
Degree 1 vector Lagrange element.
template<>
class P1Element<Real>
Degree 1 scalar Lagrange element.
template<class FES>
class PeriodicBC<TrialFunction<FES>, IndexMap<IndexSet>>
Represents a Peridodic boundary condition on a ShapeFunction object.
template<class Scalar>
class PeriodicBCBase
Abstract base class for a periodic boundary condition.
template<class LHS, class RHSDerived, class FES, ShapeFunctionSpaceType SpaceType>
class Potential<LHS, ShapeFunctionBase<ShapeFunction<RHSDerived, FES, SpaceType>, FES, SpaceType>>
template<class Base, class Exponent>
class Pow
Represents the power function.
template<class BaseDerived, class Number>
class Pow<FunctionBase<BaseDerived>, Number>
Represents the power function.
template<class ... Parameters>
class Problem
Represents a variational problem.
template<class TrialFES, class TestFES>
class Problem<TrialFES, TestFES, Math::SparseMatrix<typename FormLanguage::Mult<typename FormLanguage::Traits<TrialFES>::ScalarType, typename FormLanguage::Traits<TrialFES>::ScalarType> ::Type>, Math::Vector<typename FormLanguage::Traits<TestFES>::ScalarType>>
General class to assemble linear systems with Math::SparseMatrix and Math::Vector types in a sequential context.
template<class Operator, class Vector, class Scalar>
class ProblemBase
Base class for variational problem objects.
template<class Scalar>
class ProblemBodyBase
Represents the body of a variational problem.
template<class Integrand>
class QuadratureRule
template<class LHSDerived, class RHSDerived, class LHSRange, class RHSRange, class LHSMesh, class RHSMesh>
class QuadratureRule<Dot<ShapeFunctionBase<Grad<ShapeFunction<LHSDerived, P1<LHSRange, LHSMesh>, TrialSpace>>, P1<LHSRange, LHSMesh>, TrialSpace>, ShapeFunctionBase<Grad<ShapeFunction<RHSDerived, P1<RHSRange, RHSMesh>, TestSpace>>, P1<RHSRange, RHSMesh>, TestSpace>>>
Integration of the isotropic Dot product of two instances of the P1 Grad of ShapeFunction.
template<class LHSDerived, class RHSDerived, class LHSRange, class RHSRange, class LHSMesh, class RHSMesh>
class QuadratureRule<Dot<ShapeFunctionBase<Jacobian<ShapeFunction<LHSDerived, P1<LHSRange, LHSMesh>, TrialSpace>>, P1<LHSRange, LHSMesh>, TrialSpace>, ShapeFunctionBase<Jacobian<ShapeFunction<RHSDerived, P1<RHSRange, RHSMesh>, TestSpace>>, P1<RHSRange, RHSMesh>, TestSpace>>>
Integration of the isotropic Frobenius inner product two instances of the P1 Jacobian of ShapeFunction.
template<class LHSDerived, class TrialFES, class RHSDerived, class TestFES>
class QuadratureRule<Dot<ShapeFunctionBase<LHSDerived, TrialFES, TrialSpace>, ShapeFunctionBase<RHSDerived, TestFES, TestSpace>>>
Approximation of the integral of the the dot product between a trial shape function and a test shape function.
template<class CoefficientDerived, class LHSDerived, class RHSDerived, class LHSRange, class RHSRange, class LHSMesh, class RHSMesh>
class QuadratureRule<Dot<ShapeFunctionBase<Mult<FunctionBase<CoefficientDerived>, ShapeFunctionBase<Grad<ShapeFunction<LHSDerived, P1<LHSRange, LHSMesh>, TrialSpace>>, P1<LHSRange, LHSMesh>, TrialSpace>>, P1<LHSRange, LHSMesh>, TrialSpace>, ShapeFunctionBase<Grad<ShapeFunction<RHSDerived, P1<RHSRange, RHSMesh>, TestSpace>>, P1<RHSRange, RHSMesh>, TestSpace>>>
Integration of the anisotropic Dot product of two instances of the P1 Grad of ShapeFunction.
template<class CoefficientDerived, class LHSDerived, class RHSDerived, class LHSRange, class RHSRange, class LHSMesh, class RHSMesh>
class QuadratureRule<Dot<ShapeFunctionBase<Mult<FunctionBase<CoefficientDerived>, ShapeFunctionBase<Jacobian<ShapeFunction<LHSDerived, P1<LHSRange, LHSMesh>, TrialSpace>>, P1<LHSRange, LHSMesh>, TrialSpace>>, P1<LHSRange, LHSMesh>, TrialSpace>, ShapeFunctionBase<Jacobian<ShapeFunction<RHSDerived, P1<RHSRange, RHSMesh>, TestSpace>>, P1<RHSRange, RHSMesh>, TestSpace>>>
Integration of the anisotropic Frobenius inner product two instances of the P1 Jacobian of ShapeFunction.
template<class CoefficientDerived, class LHSDerived, class RHSDerived, class LHSRange, class RHSRange, class LHSMesh, class RHSMesh>
class QuadratureRule<Dot<ShapeFunctionBase<Mult<FunctionBase<CoefficientDerived>, ShapeFunctionBase<ShapeFunction<LHSDerived, P1<LHSRange, LHSMesh>, TrialSpace>, P1<LHSRange, LHSMesh>, TrialSpace>>, P1<LHSRange, LHSMesh>, TrialSpace>, ShapeFunctionBase<ShapeFunction<RHSDerived, P1<RHSRange, RHSMesh>, TestSpace>, P1<RHSRange, RHSMesh>, TestSpace>>>
Integration of the anisotropic Dot product of two instances of the P1 ShapeFunction.
template<class FunctionDerived>
class QuadratureRule<FunctionBase<FunctionDerived>>
Quadrature rule on polytope for any function defined on the mesh.
template<class FES>
class QuadratureRule<GridFunction<FES>>
Integration of a GridFunction object.
template<class LHSDerived, class RHSDerived, class Range, class Mesh>
class QuadratureRule<ShapeFunctionBase<Dot<FunctionBase<LHSDerived>, ShapeFunctionBase<ShapeFunction<RHSDerived, P1<Range, Mesh>, TestSpace>, P1<Range, Mesh>, TestSpace>>, P1<Range, Mesh>, TestSpace>>
Integration of the Dot product of some coefficient function and a P1 ShapeFunction.
template<class NestedDerived, class FES>
class QuadratureRule<ShapeFunctionBase<NestedDerived, FES, TestSpace>>
Approximation of the integral of a test shape function.
template<class NestedDerived, class Range, class Mesh>
class QuadratureRule<ShapeFunctionBase<ShapeFunction<NestedDerived, P1<Range, Mesh>, TestSpace>, P1<Range, Mesh>, TestSpace>>
Integration of a P1 ShapeFunction.
template<class ... Values>
class RealFunction
template<class F>
class RealFunction<F>
Represents a scalar function given by an arbitrary scalar function.
template<>
class RealFunction<Real>
Represents a constant scalar function with type Real.
template<class Derived>
class RealFunctionBase
Base class for real-valued functions defined on a mesh.
template<>
class ScalarFunction<Complex>
Represents a constant scalar function with type Complex.
template<class F>
class ScalarFunction<F>
Represents a scalar function given by an arbitrary scalar function.
template<>
class ScalarFunction<Real>
Represents a constant scalar function with type Real.
template<class Derived, class FES, ShapeFunctionSpaceType Space>
class ShapeFunction
ShapeFunction.
template<class Derived, class FES = typename FormLanguage::Traits<Derived>::FESType, ShapeFunctionSpaceType SpaceType = FormLanguage::Traits<Derived>::SpaceType>
class ShapeFunctionBase
Base class for shape function objects.
template<class LHS, class RHS>
class Sum
Represents the sum operation.
template<class Operand>
class Tan
Represents the tangent function.
template<class FESType>
class TestFunction
Represents a function which belongs to a test space.
template<class Operand>
class Trace
Represents the trace of a matrix function.
template<class NestedDerived>
class Trace<FunctionBase<NestedDerived>>
Trace of a FunctionBase instance.
template<>
class TraceOperator<FunctionBase>
Trace operator.
template<class Operand>
class Transpose
Represents the transpose matrix $ A^T $ of some matrix $ A $ .
template<class NestedDerived>
class Transpose<FunctionBase<NestedDerived>>
Transpose of a FunctionBase object.
template<class NestedDerived, class FES, ShapeFunctionSpaceType Space>
class Transpose<ShapeFunctionBase<NestedDerived, FES, Space>>
Transpose of a ShapeFunctionBase object.
template<class FESType>
class TrialFunction
Represents a function which belongs to a trial space.
template<class Operand>
class UnaryMinus
Represent the negation of an operand.
template<class ... Values>
class VectorFunction
template<class V, class ... Values>
class VectorFunction<V, Values...>
Represents a vector function which may be constructed from values which can be converted to objects of type RealFunction.
template<class Scalar, class Derived>
class VectorFunctionBase
Base class for vector-valued functions defined on a mesh.

Enums

enum class ShapeFunctionSpaceType { Trial, Test }
Enumeration class to indicate whether a derived instance of ShapeFunctionBase belongs to either a trial or test space.

Typedefs

template<class Scalar>
using EssentialBoundary = FormLanguage::List<DirichletBCBase<Scalar>>
Alias for a list of Dirichlet boundary conditions.
using RealP0Element = P0Element<Real>
Alias for P0Element<Real>
using ComplexP0Element = P0Element<Complex>
Alias for P0Element<Complex>
using VectorP0Element = P0Element<Math::Vector<Real>>
Alias for P0Element<Math::Vector<Real>>
using RealP1Element = P1Element<Real>
Alias for P1Element<Real>
using VectorP1Element = P1Element<Math::Vector<Real>>
Alias for P1Element<Math::Vector<Real>>
template<class Mesh>
using RealP1 = P1<Real, Mesh>
Alias for a scalar valued P1 finite element space.
template<class Mesh>
using VectorP1 = P1<Math::Vector<Real>, Mesh>
Alias for a vector valued P1 finite element space.
template<class Scalar>
using PeriodicBoundary = FormLanguage::List<PeriodicBCBase<Scalar>>
Alias for a list of peridodic boundary conditions.

Variables

static auto TrialSpace constexpr
Shorthand variable for ShapeFunctionSpaceType::Trial.
static auto TestSpace constexpr
Shorthand variable for ShapeFunctionSpaceType::Test.
template<class LHSDerived, class RHSDerived>
GEQ< FunctionBase< LHSDerived >, FunctionBase< RHSDerived > >
CTAD for GEQ.
template<class LHSDerived, class RHSDerived>
GT< FunctionBase< LHSDerived >, FunctionBase< RHSDerived > >
CTAD for GT.
template<class LHSDerived, class RHSDerived>
LT< FunctionBase< LHSDerived >, FunctionBase< RHSDerived > >
CTAD for LT.

Enum documentation

enum class Rodin::Variational::ShapeFunctionSpaceType

Enumeration class to indicate whether a derived instance of ShapeFunctionBase belongs to either a trial or test space.

Enumerators
Trial

Indicates that the shape function belongs to a trial space.

Test

Indicates that the shape function belongs to a test space.