37 #ifndef EVALUTATION_DIVISION_HPP 38 #define EVALUTATION_DIVISION_HPP 40 #include <lifev/core/LifeV.hpp> 42 #include <lifev/eta/array/OperationSmallDivision.hpp> 44 #include <lifev/eta/expression/ExpressionDivision.hpp> 46 #include <lifev/core/fem/QuadratureRule.hpp> 51 namespace ExpressionAssembly
63 template <
typename EvaluationLType,
typename EvaluationRType>
64 class EvaluationDivision
72 typedef typename EvaluationLType::return_Type Lreturn_Type;
75 typedef typename EvaluationRType::return_Type Rreturn_Type;
102 EvaluationDivision (
const EvaluationDivision& eval)
103 : M_evaluationL (eval.M_evaluationL),
104 M_evaluationR (eval.M_evaluationR)
108 template <
typename L,
typename R>
109 explicit EvaluationDivision (
const ExpressionDivision<L, R>& expression)
110 : M_evaluationL (expression.left() ),
111 M_evaluationR (expression.right() )
115 ~EvaluationDivision() {}
124 void update (
const UInt& iElement)
126 M_evaluationL.update (iElement);
127 M_evaluationR.update (iElement);
131 static void display ( std::ostream& out = std::cout)
133 EvaluationLType::display (out);
135 EvaluationRType::display (out);
145 template<
typename CFEType >
146 void setGlobalCFE (
const CFEType* globalCFE)
148 M_evaluationL.setGlobalCFE (globalCFE);
149 M_evaluationR.setGlobalCFE (globalCFE);
153 template<
typename CFEType >
154 void setTestCFE (
const CFEType* testCFE)
156 M_evaluationL.setTestCFE (testCFE);
157 M_evaluationR.setTestCFE (testCFE);
161 template<
typename CFEType >
162 void setSolutionCFE (
const CFEType* solutionCFE)
164 M_evaluationL.setSolutionCFE (solutionCFE);
165 M_evaluationR.setSolutionCFE (solutionCFE);
171 M_evaluationL.setQuadrature (qr);
172 M_evaluationR.setQuadrature (qr);
182 return_Type value_q (
const UInt& q)
const 184 return M_evaluationL.value_q (q) / M_evaluationR.value_q (q);
188 return_Type value_qi (
const UInt& q,
const UInt& i)
const 190 return M_evaluationL.value_qi (q, i) / M_evaluationR.value_qi (q, i);
194 return_Type value_qij (
const UInt& q,
const UInt& i,
const UInt& j)
const 196 return M_evaluationL.value_qij (q, i, j) / M_evaluationR.value_qij (q, i, j);
207 EvaluationDivision();
212 EvaluationLType M_evaluationL;
213 EvaluationRType M_evaluationR;
217 template<
typename EvaluationLType,
typename EvaluationRType>
218 const flag_Type EvaluationDivision<EvaluationLType, EvaluationRType>::S_globalUpdateFlag
219 = EvaluationLType::S_globalUpdateFlag | EvaluationRType::S_globalUpdateFlag;
221 template<
typename EvaluationLType,
typename EvaluationRType>
222 const flag_Type EvaluationDivision<EvaluationLType, EvaluationRType>::S_testUpdateFlag
223 = EvaluationLType::S_testUpdateFlag | EvaluationRType::S_testUpdateFlag;
225 template<
typename EvaluationLType,
typename EvaluationRType>
226 const flag_Type EvaluationDivision<EvaluationLType, EvaluationRType>::S_solutionUpdateFlag
227 = EvaluationLType::S_solutionUpdateFlag | EvaluationRType::S_solutionUpdateFlag;
uint32_type flag_Type
bit-flag with up to 32 different flags
void updateInverseJacobian(const UInt &iQuadPt)
QuadratureRule - The basis class for storing and accessing quadrature rules.
class OperationSmallDivision Class containing information about the division operation between *Small...
uint32_type UInt
generic unsigned integer (used mainly for addressing)