36 #ifndef EVALUTATION_ADDITION_HPP 37 #define EVALUTATION_ADDITION_HPP 40 #include <lifev/core/LifeV.hpp> 42 #include <lifev/eta/array/OperationSmallAddition.hpp> 44 #include <lifev/eta/expression/ExpressionAddition.hpp> 46 #include <lifev/core/fem/QuadratureRule.hpp> 52 namespace ExpressionAssembly
64 template <
typename EvaluationLType,
typename EvaluationRType>
65 class EvaluationAddition
73 typedef typename EvaluationLType::return_Type Lreturn_Type;
76 typedef typename EvaluationRType::return_Type Rreturn_Type;
103 EvaluationAddition (
const EvaluationAddition& eval)
104 : M_evaluationL (eval.M_evaluationL),
105 M_evaluationR (eval.M_evaluationR)
109 template<
typename ExpressionL,
typename ExpressionR>
110 explicit EvaluationAddition (
const ExpressionAddition<ExpressionL, ExpressionR>& expression)
111 : M_evaluationL (expression.left() ),
112 M_evaluationR (expression.right() )
116 ~EvaluationAddition() {}
125 void update (
const UInt& iElement)
127 M_evaluationL.update (iElement);
128 M_evaluationR.update (iElement);
132 static void display (std::ostream& out = std::cout)
134 EvaluationLType::display (out);
136 EvaluationRType::display (out);
146 template<
typename CFEType >
147 void setGlobalCFE (
const CFEType* globalCFE)
149 M_evaluationL.setGlobalCFE (globalCFE);
150 M_evaluationR.setGlobalCFE (globalCFE);
154 template<
typename CFEType >
155 void setTestCFE (
const CFEType* testCFE)
157 M_evaluationL.setTestCFE (testCFE);
158 M_evaluationR.setTestCFE (testCFE);
162 template<
typename CFEType >
163 void setSolutionCFE (
const CFEType* solutionCFE)
165 M_evaluationL.setSolutionCFE (solutionCFE);
166 M_evaluationR.setSolutionCFE (solutionCFE);
172 M_evaluationL.setQuadrature (qr);
173 M_evaluationR.setQuadrature (qr);
183 return_Type value_q (
const UInt& q)
const 185 return M_evaluationL.value_q (q) + M_evaluationR.value_q (q);
189 return_Type value_qi (
const UInt& q,
const UInt& i)
const 191 return M_evaluationL.value_qi (q, i) + M_evaluationR.value_qi (q, i);
195 return_Type value_qij (
const UInt& q,
const UInt& i,
const UInt& j)
const 197 return M_evaluationL.value_qij (q, i, j) + M_evaluationR.value_qij (q, i, j);
208 EvaluationAddition();
213 EvaluationLType M_evaluationL;
214 EvaluationRType M_evaluationR;
218 template<
typename EvaluationLType,
typename EvaluationRType>
219 const flag_Type EvaluationAddition<EvaluationLType, EvaluationRType>::S_globalUpdateFlag
220 = EvaluationLType::S_globalUpdateFlag | EvaluationRType::S_globalUpdateFlag;
222 template<
typename EvaluationLType,
typename EvaluationRType>
223 const flag_Type EvaluationAddition<EvaluationLType, EvaluationRType>::S_testUpdateFlag
224 = EvaluationLType::S_testUpdateFlag | EvaluationRType::S_testUpdateFlag;
226 template<
typename EvaluationLType,
typename EvaluationRType>
227 const flag_Type EvaluationAddition<EvaluationLType, EvaluationRType>::S_solutionUpdateFlag
228 = EvaluationLType::S_solutionUpdateFlag | EvaluationRType::S_solutionUpdateFlag;
uint32_type flag_Type
bit-flag with up to 32 different flags
void updateInverseJacobian(const UInt &iQuadPt)
class OperationSmallAddition Class containing information about the addition operation between the *S...
QuadratureRule - The basis class for storing and accessing quadrature rules.
uint32_type UInt
generic unsigned integer (used mainly for addressing)