00001 /* Bilinear form for arbitrary kernel with NO singularities. 00002 linear test/trial functions, 00003 all cases by Radon's fifth-degree formula 00004 */ 00005 00006 #ifndef bemIntArbKrnlGal001_hh 00007 #define bemIntArbKrnlGal001_hh 00008 00009 #ifdef __GNUG__ 00010 #pragma interface 00011 #endif 00012 00013 #include "bem/element.hh" 00014 00015 namespace bem { 00016 00017 // *************************************************** ArbKrnlGal001Traits ** 00018 00019 template <class F, class K> 00020 class ArbKrnlGal001Traits { 00021 public: 00022 static F eval(K& k, const concepts::Real3d& x, const concepts::Real3d& y) { 00023 return k(x, y); 00024 } 00025 }; 00026 00027 // ********************************************************* ArbKrnlGal001 ** 00028 00037 template <class F, class K> 00038 class ArbKrnlGal001 { 00039 public: 00040 typedef ArbKrnlGal001Traits<F,K> Traits; 00041 00042 // Constructor 00043 ArbKrnlGal001(K& k) : k_(k) {} 00044 00050 void operator()(const Linear3d000<F>& elmX, 00051 const Linear3d000<F>& elmY, F* em) const; 00052 private: 00053 K& k_; 00054 00055 static const concepts::Real N_; 00056 static const concepts::Real radonWght_[21]; 00057 }; 00058 00059 } // namespace bem 00060 00061 #endif // bemIntArbKrnlGal001_hh