DUNE-ACFEM (unstable)

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

Classes

struct  Dune::ACFem::IsProductOperation< T >
 Evaluate to std::true_type if the operation is product-like. More...
 
struct  Dune::ACFem::IsDistributiveOperation< Operation, SFINAE >
 True for expressions which can be moved inside or outside of sums. More...
 
struct  Dune::ACFem::IsVolatileOperation< PlaceholderOperation< Placeholder > >
 Placeholder expressions are volatile by design, unless overridden by a RuntimEqualExpression tag. More...
 
struct  Dune::ACFem::IsVolatileOperation< IndeterminateOperation< Id > >
 Indeterminates are also volatile by design. More...
 
struct  Dune::ACFem::IsDynamicOperation< T, SFINAE >
 Should be overloaded to std::true_type for operations which introduce runtime variable data into the expression as part of the operation. More...
 

Typedefs

template<class T >
using Dune::ACFem::IsProductExpression = IsProductOperation< Expressions::Operation< T > >
 std::true_type for product like expressions. More...
 

Functions

template<class F >
std::string Dune::ACFem::operationName (F &&f, const std::string &arg)
 Verbose print of an operation, helper function to produce noise.
 
template<class F >
std::string Dune::ACFem::operationName (F &&f, const std::string &left, const std::string &right)
 Verbose print of a binary operation, helper function to produce noise.
 
template<class F , class... Strings, std::enable_if_t<(sizeof...(Strings) > 2), int > = 0>
std::string Dune::ACFem::operationName (F &&f, Strings &&... strings)
 Verbose print of an n-ary operation.
 

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.

Typedef Documentation

◆ IsProductExpression

template<class T >
using Dune::ACFem::IsProductExpression = typedef IsProductOperation<Expressions::Operation<T> >

std::true_type for product like expressions.

Checks arity, expression-ness and the applied operation.

Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 3, 22:32, 2024)