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]
|
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]
|
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*()
|
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().