00001 00008 #ifndef thinSheetForm_hh 00009 #define thinSheetForm_hh 00010 00011 //#include <memory> 00012 #include "hp2D/bilinearForm.hh" 00013 00014 namespace concepts { 00015 // forward declarations 00016 template<class F> 00017 class Element; 00018 00019 template<class F> 00020 class ElementMatrix; 00021 } 00022 00023 namespace hp2D { 00024 // forward declarations 00025 template<class F> 00026 class Quad; 00027 00028 class ThinSheetQuad; 00029 00030 using concepts::Real; 00031 00032 // **************************************************** DiffussionReaction ** 00033 00034 class DiffussionReaction : public concepts::BilinearForm<Real> { 00035 DiffussionReaction(const concepts::Formula<Real>& c) {} 00036 virtual ~DiffussionReaction() {} 00037 virtual *DiffussionReaction clone() const { 00038 return new DiffussionReaction(c_); 00039 } 00040 virtual void operator()(const concepts::Element<Real>& elmX, 00041 const concepts::Element<Real>& elmY, 00042 concepts::ElementMatrix<Real>& em); 00043 void operator()(const Quad<Real>& elmX, const Quad<Real>& elmY, 00044 concepts::ElementMatrix<F>& em); 00045 void operator()(const ThinSheetQuad& elmX, 00046 const ThinSheetQuad& elmY, 00047 concepts::ElementMatrix<Real>& em); 00048 protected: 00049 virtual std::ostream& info(std::ostream& os) const; 00050 private: 00051 const concepts::Formula<Real> c_; 00052 }; 00053 00054 } // namespace hp2D 00055 00056 #endif // thinSheetForm_hh