00001 /* Abscissa & weights for cases of common panel, edge and vertex 00002 hypersingular, linear test/trial functions 00003 */ 00004 00005 #ifndef linearHYP_aw_hh 00006 #define linearHYP_aw_hh 00007 00008 #include "bemInt/exceptns.hh" 00009 #include "basics/typedefs.hh" 00010 00011 namespace bem { 00012 00013 using concepts::Real; 00014 00015 // ************************************************** LinearHYPAbscWghtPnl ** 00016 00020 class LinearHYPAbscWghtPnl { 00021 static const Real* const abswght_[5]; 00022 public: 00023 inline const Real* const operator[](uint i) const; 00024 }; 00025 00026 inline const Real* const LinearHYPAbscWghtPnl::operator[](uint i) const { 00027 if (i >= 5) throw conceptsException(NoOfIntegrationPointsToHigh()); 00028 return abswght_[i]; 00029 } 00030 00031 // ************************************************** LinearHYPAbscWghtEdg ** 00032 00036 class LinearHYPAbscWghtEdg { 00037 static const Real* const abswght_[5]; 00038 public: 00039 inline const Real* const operator[](uint i) const; 00040 }; 00041 00042 inline const Real* const LinearHYPAbscWghtEdg::operator[](uint i) const { 00043 if (i >= 5) throw conceptsException(NoOfIntegrationPointsToHigh()); 00044 return abswght_[i]; 00045 } 00046 00047 // ************************************************** LinearHYPAbscWghtVtx ** 00048 00052 class LinearHYPAbscWghtVtx { 00053 static const Real* const abswght_[5]; 00054 public: 00055 inline const Real* const operator[](uint i) const; 00056 }; 00057 00058 inline const Real* const LinearHYPAbscWghtVtx::operator[](uint i) const { 00059 if (i >= 5) throw conceptsException(NoOfIntegrationPointsToHigh()); 00060 return abswght_[i]; 00061 } 00062 00063 } // namespace 00064 00065 #endif // linearHYP_aw_hh