36 #ifndef EXPRESSION_OUTERPRODUCT_HPP 37 #define EXPRESSION_OUTERPRODUCT_HPP 39 #include <lifev/core/LifeV.hpp> 41 #include <lifev/eta/expression/ExpressionBase.hpp> 42 #include <lifev/eta/expression/ExpressionScalar.hpp> 43 #include <lifev/eta/expression/ExpressionVector.hpp> 44 #include <lifev/eta/expression/ExpressionMatrix.hpp> 49 namespace ExpressionAssembly
71 template <
typename LExpressionType,
typename RExpressionType>
72 class ExpressionOuterProduct :
public ExpressionBase< ExpressionOuterProduct<LExpressionType, RExpressionType> >
80 typedef ExpressionBase< ExpressionOuterProduct <LExpressionType, RExpressionType> > base_Type;
89 ExpressionOuterProduct (
const LExpressionType& l,
const RExpressionType& r)
90 : base_Type(), M_l (l), M_r (r) {}
93 ExpressionOuterProduct (
const ExpressionOuterProduct<LExpressionType, RExpressionType>& expression)
94 : base_Type(), M_l (expression.M_l), M_r (expression.M_r) {}
97 ~ExpressionOuterProduct() {}
106 static void display (std::ostream& out = std::cout)
108 LExpressionType::display (out);
109 out <<
" outerProduct ";
110 RExpressionType::display (out);
120 const LExpressionType& left()
const 126 const RExpressionType& right()
const 139 ExpressionOuterProduct();
172 template<
typename LExpressionType,
typename RExpressionType >
173 ExpressionOuterProduct<LExpressionType, RExpressionType>
176 return ExpressionOuterProduct<LExpressionType, RExpressionType> (l.cast(), r.cast() );
181 template<
typename RExpressionType ,
UInt Dim1 >
182 ExpressionOuterProduct<ExpressionVector<Dim1>, RExpressionType>
185 return ExpressionOuterProduct<ExpressionVector<Dim1>, RExpressionType> (ExpressionVector<Dim1> (l), r.cast() );
188 template<
typename LExpressionType,
UInt Dim1 >
189 ExpressionOuterProduct<LExpressionType, ExpressionVector<Dim1> >
192 return ExpressionOuterProduct<LExpressionType, ExpressionVector<Dim1> > (l.cast(), ExpressionVector<Dim1> (r) );
196 template<
UInt Dim1 >
197 ExpressionOuterProduct<ExpressionVector<Dim1>, ExpressionVector<Dim1> >
200 return ExpressionOuterProduct<ExpressionVector<Dim1>, ExpressionVector<Dim1> > (ExpressionVector<Dim1> (l), ExpressionVector<Dim1> (r) );
void updateInverseJacobian(const UInt &iQuadPt)
class ExpressionBase Base class (static polymorphism, CRTP sense) for all the expressions used in ass...
uint32_type UInt
generic unsigned integer (used mainly for addressing)