Rodin::FormLanguage namespace

Module for writing high level abstract expressions.

The FormLanguage module provides the expression template infrastructure underlying Rodin's variational form language. It enables composing mathematical expressions that are lazily evaluated during assembly:

auto stiffness = Integral(Grad(u), Grad(v)); // expression, not yet evaluated
auto load = Integral(f, v);                   // another expression
Problem p(u, v);
p = stiffness - load + DirichletBC(u, Zero()); // combined expression

Classes

class Base
Base class for all objects in Rodin's FormLanguage system.
template<typename>
struct Debug
Template for debugging form language types.
template<class LHS, class RHS>
struct Division
Type trait for deducing the result type of division.
template<class LHS, class RHS>
struct Dot
Type trait for deducing the result type of dot product.
template<class T>
struct IsEigenObject
Type trait to check if a type is an Eigen object.
template<class T>
struct IsPlainObject
Type trait to identify Eigen plain object types.
template<class Derived>
struct IsPlainObject<Eigen::PlainObjectBase<Derived>>
Specialization for Eigen::PlainObjectBase types.
template<class T>
class List
Container for polymorphic form language objects.
template<class LHS, class RHS>
struct Minus
Type trait for deducing the result type of subtraction.
template<class LHS, class RHS>
struct Mult
Type trait for deducing the result type of multiplication.
template<class MatrixXpr>
struct RangeOf
Type trait to deduce the mathematical range type of an expression.
template<>
struct RangeOf<Boolean>
Range type for Boolean values.
template<>
struct RangeOf<Complex>
Range type for Complex values.
template<class Scalar, int Rows, int Options, int MaxRows, int MaxCols>
struct RangeOf<Eigen::Matrix<Scalar, Rows, 1, Options, MaxRows, MaxCols>>
Range type for Eigen column vectors.
template<class Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
struct RangeOf<Eigen::Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>>
Range type for Eigen matrices.
template<>
struct RangeOf<Integer>
Range type for Integer values.
template<>
struct RangeOf<Real>
Range type for Real values.
template<class Derived>
struct RangeOf<Variational::FunctionBase<Derived>>
Range type for FunctionBase.
template<class Derived, class FES, Variational::ShapeFunctionSpaceType Space>
struct RangeOf<Variational::ShapeFunctionBase<Derived, FES, Space>>
Range type for ShapeFunctionBase.
template<class T>
struct ResultOf
Type trait to deduce the result type of an expression.
template<class Derived>
struct ResultOf<Variational::FunctionBase<Derived>>
Specialization of ResultOf for FunctionBase.
template<class Derived, class FES, Variational::ShapeFunctionSpaceType Space>
struct ResultOf<Variational::ShapeFunctionBase<Derived, FES, Space>>
Specialization of ResultOf for ShapeFunctionBase.
template<class LHS, class RHS>
struct Sum
Type trait for deducing the result type of addition.
template<class ... Args>
struct Traits
Type traits for form language objects.
template<>
struct Traits<Boolean>
Traits specialization for Boolean type.
template<>
struct Traits<Complex>
Traits specialization for Complex type.
template<class Context>
struct Traits<Geometry::Mesh<Context>>
Traits specialization for Mesh types.
template<>
struct Traits<Integer>
Traits specialization for Integer type.
template<class FES>
struct Traits<PETSc::Variational::GridFunction<FES>>
Form-language traits specialization for PETSc grid functions.
template<class FES>
struct Traits<PETSc::Variational::TestFunction<FES>>
Form-language traits specialization for PETSc test functions.
template<class Solution, class FES>
struct Traits<PETSc::Variational::TrialFunction<Solution, FES>>
Form-language traits specialization for PETSc trial functions.
template<>
struct Traits<Real>
Traits specialization for Real type.
template<>
struct Traits<Solver::KSP>
Traits specialization for Solver::KSP (Rodin wrapper for PETSc KSP).
template<class LHS, class RHSDerived>
struct Traits<Variational::Potential<LHS, Variational::FunctionBase<RHSDerived>>>
Traits for Potential operator.
template<class LHS, class RHSDerived, class FES, Variational::ShapeFunctionSpaceType Space>
struct Traits<Variational::Potential<LHS, Variational::ShapeFunctionBase<Variational::ShapeFunction<RHSDerived, FES, Space>>>>
Traits for Potential.
template<>
struct Traits<::Mat>
Traits specialization for PETSc matrices.
template<>
struct Traits<::Vec>
Traits specialization for PETSc vectors.
template<class Operand>
struct UnaryMinus
Type trait for deducing the result type of unary negation.