00001 /* Functor class for sum factorization in 2D 00002 */ 00003 00004 #ifndef sumfact_hh 00005 #define sumfact_hh 00006 00007 #include "toolbox/array.hh" 00008 00009 namespace concepts { 00010 00011 // forward declarations 00012 template<typename T> 00013 class ElementMatrix; 00014 00015 } // namespace concepts 00016 00017 namespace hp2D { 00018 00019 using concepts::Real; 00020 00021 // forward declarations 00022 template<typename F> 00023 class ShapeFunction2D; 00024 00025 // ****************************************************** SumFactorization ** 00026 00034 template<typename F = Real> 00035 class SumFactorization { 00036 public: 00047 template<typename T> 00048 void operator()(concepts::ElementMatrix<F>& em, 00049 const concepts::Array<F>& jacobian, 00050 T* coeff, 00051 const ShapeFunction2D<Real>& u, 00052 const ShapeFunction2D<Real>& v, 00053 const Real factor = 1.0, 00054 const bool all = false); 00055 private: 00057 concepts::Array<F> sumfact_; 00058 }; 00059 00060 } // namespace hp2D 00061 00062 00063 #endif // sumfact_hh