DUNE-ACFEM (2.5.1)

Helper structures for expression templates which aid in forming an (optimized) result types. More...

Classes

struct  Dune::ACFem::ZeroExpression< ExpressionImpl >
 A tag structure which can be attached as base class to zero-expressions like the ZeroGridFunction, the ZeroModel, the ZeroFunctional. More...
 
struct  Dune::ACFem::NonZeroExpression< ExpressionImpl >
 Complementary to ZeroExpression for use in std::conditional, for example, otherwise unused. More...
 
struct  Dune::ACFem::OneExpression< ExpressionImpl >
 A tag structure which can be attached as base-class to expressions modelling a 1 (in a field, e.g., or the constant-one function) More...
 
struct  Dune::ACFem::DefaultExpressionTraits< ExpressionImpl >
 Default expressions traits. More...
 
struct  Dune::ACFem::ExpressionTraits< Expression >
 A traits class in order to collect properties of expressions. More...
 
struct  Dune::ACFem::ExpressionResult< UnOp, LeftOperand, RightOperand >
 Automatically deduce the type by applying the respective operation. More...
 
struct  Dune::ACFem::UnaryExpressionTraits< UnOp, Value >
 The default result type is void in order to trigger compilation errors. More...
 
struct  Dune::ACFem::BinaryExpressionTraits< BinOp, LeftValue, RightValue >
 The default result type is void in order to trigger compilation errors. More...
 

Functions

template<class Expression >
constexpr bool Dune::ACFem::isZero (Expression &&)
 Specialize to evaluate to true for zero expressions.
 

Detailed Description

Helper structures for expression templates which aid in forming an (optimized) result types.

While forming expression templates there are several challenges:

  • perform the usual no-op optimizations (-(-arg) == arg), avoid double wrapping into IdentityOperations). Optimize for no-ops resulting from adding zeros are multiplying with zeros (see ZeroExpression, ExpressionTraits).
  • deduce the point-wise return type, keeping sclar product and the like into account (see UnaryExpressionTraits, BinaryExpressionTraits)
  • provide means to make use of optimized operator-functions in the definition of expression templates for complicated compound-object expressions (see ModelExpression and ExpressionResult).
  • actually form those complicated-optimized expressions by simply calling the operator-functions, but in a consistent manner, see ExpressionResult.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 12, 23:30, 2024)