Rodin/Math/Traits.h file

Type traits for the Math module and form language.

This file defines type traits used by the form language to determine properties of mathematical types, including scalar types and result types of operations. These traits enable compile-time type deduction for variational formulations.

Namespaces

namespace Rodin
The Rodin library for finite element methods and shape optimization.
namespace Rodin::FormLanguage
Namespace Rodin::FormLanguage.

Classes

template<class T>
struct Rodin::FormLanguage::IsEigenObject
Type trait to check if a type is an Eigen object.
template<class T, class = void>
struct Rodin::FormLanguage::ColsAtCompileTime
Compile-time column count of a type; -1 when unavailable.
template<class T>
struct Rodin::FormLanguage::ColsAtCompileTime<T, std::void_t<decltype(std::decay_t<T>::ColsAtCompileTime)>>
Compile-time column count for Eigen-like types exposing ColsAtCompileTime.
template<>
struct Rodin::FormLanguage::Traits<Boolean>
Traits specialization for Boolean type.
template<>
struct Rodin::FormLanguage::Traits<Integer>
Traits specialization for Integer type.
template<>
struct Rodin::FormLanguage::Traits<Real>
Traits specialization for Real type.
template<>
struct Rodin::FormLanguage::Traits<Complex>
Traits specialization for Complex type.
template<class T>
struct Rodin::FormLanguage::IsSpatialVector
Type trait: whether T is a Math::SpatialVector.
template<class Scalar>
struct Rodin::FormLanguage::IsSpatialVector<Math::SpatialVector<Scalar>>
Type trait specialization for Math::SpatialVector.
template<class T>
struct Rodin::FormLanguage::IsSpatialMatrix
Type trait: whether T is a Math::SpatialMatrix.
template<class Scalar>
struct Rodin::FormLanguage::IsSpatialMatrix<Math::SpatialMatrix<Scalar>>
Type trait specialization for Math::SpatialMatrix.
template<class T>
struct Rodin::FormLanguage::IsVectorRange
Type trait: whether T has vector range (a spatial vector or a single-column Eigen object).
template<class T>
struct Rodin::FormLanguage::IsMatrixRange
Type trait: whether T has matrix range (a spatial matrix or a multi-column Eigen object).
template<class T>
struct Rodin::FormLanguage::RangeKindOf
Deduces the RangeKind of a type T.
template<class LHS, class RHS>
struct Rodin::FormLanguage::Sum
Type trait for deducing the result type of addition.
template<class LHS, class RHS>
struct Rodin::FormLanguage::Minus
Type trait for deducing the result type of subtraction.
template<class Operand>
struct Rodin::FormLanguage::UnaryMinus
Type trait for deducing the result type of unary negation.
template<class LHS, class RHS>
struct Rodin::FormLanguage::Mult
Type trait for deducing the result type of multiplication.
template<class LHS, class RHS>
struct Rodin::FormLanguage::Division
Type trait for deducing the result type of division.
template<class LHS, class RHS>
struct Rodin::FormLanguage::Dot
Type trait for deducing the result type of dot product.