DUNE-ACFEM (2.5.1)

Avoid tempararies in the usual way by Expression templates for anything which behaves slightly like a vector of field elements. More...

Classes

class  Dune::ACFem::VectorExpression< ExpressionImp >
 Tag structure, flag all these as ExpressionTemplates. More...
 
class  Dune::ACFem::BinaryVectorExpression< BinOp, Vector1, Vector2 >
 Binary vector expressions. More...
 
class  Dune::ACFem::UnaryVectorExpression< Op, Vector >
 Unary vector expressions. More...
 
class  Dune::ACFem::BinaryVectorExpression< SMultiplyOperation, Scalar, Vector >
 Special case for S-multiplication. More...
 
class  Dune::ACFem::UnaryVectorExpression< IdentityOperation, Vector >
 This is the only allowed starting point for vector-expressions: here we allow vectors to be wrapped inside the Identity-operation in order to be valid ExpressionTemplates for further operation. More...
 
class  Dune::ACFem::UnaryVectorExpression< IdentityOperation, FieldMatrix< Field, rows, cols > >
 Wrap a FieldMatrix into an IdentityOperation. More...
 

Functions

template<class Expr1 , class Expr2 >
static BinaryVectorExpression< PlusOperation, Expr1, Expr2 > Dune::ACFem::operator+ (const VectorExpression< Expr1 > &e1, const VectorExpression< Expr2 > &e2)
 Expr + Expr.
 
template<class Expr1 , class Expr2 >
static BinaryVectorExpression< MinusOperation, Expr1, Expr2 > Dune::ACFem::operator- (const VectorExpression< Expr1 > &e1, const VectorExpression< Expr2 > &e2)
 Expr - Expr.
 
template<class Expr1 , class Expr2 >
static InnerProductHelper< Expr1, Expr2 >::ResultType Dune::ACFem::operator* (const VectorExpression< Expr1 > &e1, const VectorExpression< Expr2 > &e2)
 Inner-product support. More...
 
template<class Expr >
static BinaryVectorExpression< SMultiplyOperation, typename Expr::FieldType, Expr > Dune::ACFem::operator* (const typename Expr::FieldType &s, const VectorExpression< Expr > &e)
 s * Expr.
 
template<class Expr >
static auto Dune::ACFem::operator* (const VectorExpression< Expr > &e, const typename Expr::FieldType &s) -> decltype(s *e)
 Expr * s.
 
template<class Expr >
static BinaryVectorExpression< SMultiplyOperation, typename Expr::FieldType, Expr > Dune::ACFem::operator* (const FieldVector< typename Expr::FieldType, 1 > &s, const VectorExpression< Expr > &e)
 s * e, specialize for scalar FieldVector case
 
template<class Expr >
static BinaryVectorExpression< SMultiplyOperation, typename Expr::FieldType, Expr > Dune::ACFem::operator* (const VectorExpression< Expr > &e, const FieldVector< typename Expr::FieldType, 1 > &s)
 e * s, specialize for scalar FieldVector case
 
template<class Expr >
static UnaryVectorExpression< MinusOperation, Expr > Dune::ACFem::operator- (const VectorExpression< Expr > &arg)
 -Expr
 
template<class Vector >
static UnaryVectorExpression< IdentityOperation, Vector > Dune::ACFem::asExpr (const Vector &arg)
 Catch all starting point.
 
template<class Field , int rows, int cols>
static UnaryVectorExpression< IdentityOperation, FieldMatrix< Field, rows, cols > > Dune::ACFem::asExpr (const FieldMatrix< Field, rows, cols > &arg)
 Special case for FieldMatrix.
 
template<class Op , class Expr >
static UnaryVectorExpression< Op, Expr > Dune::ACFem::asExpr (const UnaryVectorExpression< Op, Expr > &arg)
 Expr are expressions. More...
 
template<class Op , class Expr1 , class Expr2 >
static BinaryVectorExpression< Op, Expr1, Expr2 > Dune::ACFem::asExpr (const BinaryVectorExpression< Op, Expr1, Expr2 > &arg)
 Expr are expressions. More...
 
template<class Vector , class Op , class Expr1 , class Expr2 >
static Vector & Dune::ACFem::operator+= (Vector &v, const BinaryVectorExpression< Op, Expr1, Expr2 > &e)
 Add-assignment to result vector.
 
template<class Vector , class Op , class Expr >
static Vector & Dune::ACFem::operator+= (Vector &v, const UnaryVectorExpression< Op, Expr > &e)
 Add-assignment to result vector.
 
template<class Vector , class Op , class Expr1 , class Expr2 >
static Vector & Dune::ACFem::operator-= (Vector &v, const BinaryVectorExpression< Op, Expr1, Expr2 > &e)
 Minus-assignment to result vector.
 
template<class Vector , class Op , class Expr >
static Vector & Dune::ACFem::operator-= (Vector &v, const UnaryVectorExpression< Op, Expr > &e)
 Minus-assignment to result vector.
 

Detailed Description

Avoid tempararies in the usual way by Expression templates for anything which behaves slightly like a vector of field elements.

BIG FAT NOTE: do not use this ATM, it is just flaky.

Function Documentation

◆ asExpr() [1/2]

template<class Op , class Expr1 , class Expr2 >
static BinaryVectorExpression< Op, Expr1, Expr2 > Dune::ACFem::asExpr ( const BinaryVectorExpression< Op, Expr1, Expr2 > &  arg)
inlinestatic

Expr are expressions.

We have to explicitly specialize for UnaryVectorExpression and BindaryVectorExpression because of the catch-all template for all vectors.

References Dune::ACFem::ExpressionTemplate< ExpressionImp >::expression().

◆ asExpr() [2/2]

template<class Op , class Expr >
static UnaryVectorExpression< Op, Expr > Dune::ACFem::asExpr ( const UnaryVectorExpression< Op, Expr > &  arg)
inlinestatic

Expr are expressions.

We have to explicitly specialize for UnaryVectorExpression and BindaryVectorExpression because of the catch-all template for all vectors.

References Dune::ACFem::ExpressionTemplate< ExpressionImp >::expression().

◆ operator*()

template<class Expr1 , class Expr2 >
static InnerProductHelper< Expr1, Expr2 >::ResultType Dune::ACFem::operator* ( const VectorExpression< Expr1 > &  e1,
const VectorExpression< Expr2 > &  e2 
)
inlinestatic

Inner-product support.

This is always only the inner-most inner product. Applied to a FieldMatrix this yields the inner product of the rows, applied to a vector of field-matrices this will yield a vector of vectors of inner products. Applied to a vector of vectors this will yield a vector with scalar entries, consisting of the inner products of the inner blocks.

References Dune::ACFem::ExpressionTemplate< ExpressionImp >::expression().

Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 12, 23:30, 2024)