00001 /* Operators for the boundary element method 00002 */ 00003 00004 #ifndef bemOperator_hh 00005 #define bemOperator_hh 00006 00007 #ifdef __GUNG__ 00008 #pragma interface 00009 #endif 00010 00011 #include "basics/exceptions.hh" 00012 #include "operator/compositions.hh" 00013 #include "bem/space.hh" 00014 00015 namespace bem { 00016 00017 // ********************************************************************* D ** 00018 00023 template <class F = concepts::Real> 00024 class D : public concepts::Operator<F> { 00025 public: 00029 D(const concepts::Space<F>& spc); 00031 ~D() {delete[] val_;} 00032 00036 void operator()(const concepts::Function<F>& fncY, 00037 concepts::Function<F>& fncX); 00038 void operator()(const concepts::Vector<F>& fncY, 00039 concepts::Vector<F>& fncX); 00040 protected: 00042 std::ostream& info(std::ostream& os) const; 00043 00044 private: 00046 concepts::Real* val_; 00047 }; 00048 00049 // ******************************************************************* D_1 ** 00050 00056 template <class F = concepts::Real> 00057 class D_1 : public concepts::Operator<F> { 00058 public: 00062 D_1(const concepts::Space<F>& spc); 00064 ~D_1() {delete[] val_;} 00065 00069 void operator()(const concepts::Function<F>& fncY, 00070 concepts::Function<F>& fncX); 00071 void operator()(const concepts::Vector<F>& fncY, 00072 concepts::Vector<F>& fncX); 00073 protected: 00075 std::ostream& info(std::ostream& os) const; 00076 00077 private: 00079 concepts::Real* val_; 00080 }; 00081 00082 } // namespace bem 00083 00084 #endif // bemOperator_hh