36 #ifndef EVALUTATION_EMULT_HPP 37 #define EVALUTATION_EMULT_HPP 40 #include <lifev/core/LifeV.hpp> 42 #include <lifev/eta/array/OperationSmallEmult.hpp> 44 #include <lifev/eta/expression/ExpressionEmult.hpp> 46 #include <lifev/core/fem/QuadratureRule.hpp> 51 namespace ExpressionAssembly
63 template <
typename EvaluationLType,
typename EvaluationRType>
73 typedef typename EvaluationLType::return_Type Lreturn_Type;
76 typedef typename EvaluationRType::return_Type Rreturn_Type;
103 EvaluationEmult (
const EvaluationEmult& eval)
104 : M_evaluationL (eval.M_evaluationL),
105 M_evaluationR (eval.M_evaluationR)
109 template<
typename ExpressionL,
typename ExpressionR>
110 explicit EvaluationEmult (
const ExpressionEmult<ExpressionL, ExpressionR>& expression)
111 : M_evaluationL (expression.left() ),
112 M_evaluationR (expression.right() )
126 void update (
const UInt& iElement)
128 M_evaluationL.update (iElement);
129 M_evaluationR.update (iElement);
133 static void display (std::ostream& out = std::cout)
135 EvaluationLType::display (out);
137 EvaluationRType::display (out);
147 template<
typename CFEType >
148 void setGlobalCFE (
const CFEType* globalCFE)
150 M_evaluationL.setGlobalCFE (globalCFE);
151 M_evaluationR.setGlobalCFE (globalCFE);
155 template<
typename CFEType >
156 void setTestCFE (
const CFEType* testCFE)
158 M_evaluationL.setTestCFE (testCFE);
159 M_evaluationR.setTestCFE (testCFE);
163 template<
typename CFEType >
164 void setSolutionCFE (
const CFEType* solutionCFE)
166 M_evaluationL.setSolutionCFE (solutionCFE);
167 M_evaluationR.setSolutionCFE (solutionCFE);
173 M_evaluationL.setQuadrature (qr);
174 M_evaluationR.setQuadrature (qr);
184 return_Type value_q (
const UInt& q)
const 186 return M_evaluationL.value_q (q).emult (M_evaluationR.value_q (q) );
190 return_Type value_qi (
const UInt& q,
const UInt& i)
const 192 return M_evaluationL.value_qi (q, i).emult (M_evaluationR.value_qi (q, i) );
196 return_Type value_qij (
const UInt& q,
const UInt& i,
const UInt& j)
const 198 return M_evaluationL.value_qij (q, i, j).emult (M_evaluationR.value_qij (q, i, j) );
214 EvaluationLType M_evaluationL;
215 EvaluationRType M_evaluationR;
219 template<
typename EvaluationLType,
typename EvaluationRType>
220 const flag_Type EvaluationEmult<EvaluationLType, EvaluationRType>::S_globalUpdateFlag
221 = EvaluationLType::S_globalUpdateFlag | EvaluationRType::S_globalUpdateFlag;
223 template<
typename EvaluationLType,
typename EvaluationRType>
224 const flag_Type EvaluationEmult<EvaluationLType, EvaluationRType>::S_testUpdateFlag
225 = EvaluationLType::S_testUpdateFlag | EvaluationRType::S_testUpdateFlag;
227 template<
typename EvaluationLType,
typename EvaluationRType>
228 const flag_Type EvaluationEmult<EvaluationLType, EvaluationRType>::S_solutionUpdateFlag
229 = EvaluationLType::S_solutionUpdateFlag | EvaluationRType::S_solutionUpdateFlag;
uint32_type flag_Type
bit-flag with up to 32 different flags
class OperationSmallEmult Class containing information about the element-wise multiplication product ...
void updateInverseJacobian(const UInt &iQuadPt)
QuadratureRule - The basis class for storing and accessing quadrature rules.
uint32_type UInt
generic unsigned integer (used mainly for addressing)