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::struct RangeOf<Variational::ShapeFunctionBase<Derived, FES, Space>>
ShapeFunctionSpaceType 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::struct ResultOf<Variational::ShapeFunctionBase<Derived, FES, Space>>
ShapeFunctionSpaceType 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::struct Traits<Variational::Potential<LHS, Variational::ShapeFunctionBase<Variational::ShapeFunction<RHSDerived, FES, Space>>>>
ShapeFunctionSpaceType 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.