36 #ifndef EVALUTATION_PRODUCT_HPP 37 #define EVALUTATION_PRODUCT_HPP 39 #include <lifev/core/LifeV.hpp> 41 #include <lifev/eta/array/OperationSmallProduct.hpp> 43 #include <lifev/eta/expression/ExpressionProduct.hpp> 45 #include <lifev/core/fem/QuadratureRule.hpp> 50 namespace ExpressionAssembly
62 template <
typename EvaluationLType,
typename EvaluationRType>
63 class EvaluationProduct
71 typedef typename EvaluationLType::return_Type Lreturn_Type;
74 typedef typename EvaluationRType::return_Type Rreturn_Type;
101 EvaluationProduct (
const EvaluationProduct& eval)
102 : M_evaluationL (eval.M_evaluationL),
103 M_evaluationR (eval.M_evaluationR)
107 template <
typename L,
typename R>
108 explicit EvaluationProduct (
const ExpressionProduct<L, R>& expression)
109 : M_evaluationL (expression.left() ),
110 M_evaluationR (expression.right() )
114 ~EvaluationProduct() {}
123 void update (
const UInt& iElement)
125 M_evaluationL.update (iElement);
126 M_evaluationR.update (iElement);
130 static void display (std::ostream& out = std::cout )
132 EvaluationLType::display (out);
134 EvaluationRType::display (out);
144 template<
typename CFEType >
145 void setGlobalCFE (
const CFEType* globalCFE)
147 M_evaluationL.setGlobalCFE (globalCFE);
148 M_evaluationR.setGlobalCFE (globalCFE);
152 template<
typename CFEType >
153 void setTestCFE (
const CFEType* testCFE)
155 M_evaluationL.setTestCFE (testCFE);
156 M_evaluationR.setTestCFE (testCFE);
160 template<
typename CFEType >
161 void setSolutionCFE (
const CFEType* solutionCFE)
163 M_evaluationL.setSolutionCFE (solutionCFE);
164 M_evaluationR.setSolutionCFE (solutionCFE);
170 M_evaluationL.setQuadrature (qr);
171 M_evaluationR.setQuadrature (qr);
181 return_Type value_q (
const UInt& q)
const 183 return M_evaluationL.value_q (q) * M_evaluationR.value_q (q);
187 return_Type value_qi (
const UInt& q,
const UInt& i)
const 189 return M_evaluationL.value_qi (q, i) * M_evaluationR.value_qi (q, i);
193 return_Type value_qij (
const UInt& q,
const UInt& i,
const UInt& j)
const 195 return M_evaluationL.value_qij (q, i, j) * M_evaluationR.value_qij (q, i, j);
211 EvaluationLType M_evaluationL;
212 EvaluationRType M_evaluationR;
215 template<
typename EvaluationLType,
typename EvaluationRType>
216 const flag_Type EvaluationProduct<EvaluationLType, EvaluationRType>::S_globalUpdateFlag
217 = EvaluationLType::S_globalUpdateFlag | EvaluationRType::S_globalUpdateFlag;
219 template<
typename EvaluationLType,
typename EvaluationRType>
220 const flag_Type EvaluationProduct<EvaluationLType, EvaluationRType>::S_testUpdateFlag
221 = EvaluationLType::S_testUpdateFlag | EvaluationRType::S_testUpdateFlag;
223 template<
typename EvaluationLType,
typename EvaluationRType>
224 const flag_Type EvaluationProduct<EvaluationLType, EvaluationRType>::S_solutionUpdateFlag
225 = EvaluationLType::S_solutionUpdateFlag | EvaluationRType::S_solutionUpdateFlag;
uint32_type flag_Type
bit-flag with up to 32 different flags
void updateInverseJacobian(const UInt &iQuadPt)
class OperationSmallProduct Class containing information about the product operation between *Small c...
QuadratureRule - The basis class for storing and accessing quadrature rules.
uint32_type UInt
generic unsigned integer (used mainly for addressing)