Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

bemInt/abscWght.hh
Go to the documentation of this file.
00001 /* Abscissas & weights for quadrature rules
00002  */
00003 
00004 #ifndef abscWght_hh
00005 #define abscWght_hh
00006 
00007 #include "bemInt/exceptns.hh"
00008 #include "geometry/topology.hh"
00009 
00010 namespace bem {
00011 
00012   using concepts::Real;
00013 
00014   extern const Real int_1_PI4;
00015 
00016   // ***************************************************************** match **
00017 
00024   uint match(const concepts::Triangle& triX, const concepts::Triangle& triY);
00025 
00026   // ****************************************************** GaussAbscWghtSym **
00027 
00031   class GaussAbscWghtSym {
00032     static const Real* const abswght_[8];
00033   public:
00034     inline const Real* const operator[](uint i) const;
00035   };
00036 
00037   inline const Real* const GaussAbscWghtSym::operator[](uint i) const {
00038     if (i >= 8)  throw conceptsException(NoOfIntegrationPointsToHigh());
00039     return abswght_[i];
00040   }
00041 
00042   // ********************************************************* GaussAbscWght **
00043 
00047   class GaussAbscWght {
00048     static const Real* const abswght_[25];
00049   public:
00050     inline const Real* const operator[](uint i) const;
00051   };
00052 
00053   inline const Real* const GaussAbscWght::operator[](uint i) const {
00054     if (i >= 25)  throw conceptsException(NoOfIntegrationPointsToHigh());
00055     return abswght_[i];
00056   }
00057 
00058   // ******************************************************** Stroud defines **
00059 
00060 #define MaxStroudAbsc 7
00061 
00062   // ******************************************************** StroudAbscWght **
00063 
00068   class StroudAbscWght {
00069     static const Real* const abswght_[MaxStroudAbsc];
00070   public:
00071     inline const Real* const operator[](uint i) const;
00072   };
00073 
00074   inline const Real* const StroudAbscWght::operator[](uint i) const {
00075     if (i >= MaxStroudAbsc)
00076       throw conceptsException(NoOfIntegrationPointsToHigh());
00077     return abswght_[i];
00078   }
00079 
00080   // **************************************************** StroudLinTrialWght **
00081 
00084   class StroudLinTrialWght {
00085     static const Real* const abswght_[MaxStroudAbsc];
00086   public:
00087     inline const Real* const operator[](uint i) const;
00088   };
00089 
00090   inline const Real* const StroudLinTrialWght::operator[](uint i) const {
00091     if (i >= MaxStroudAbsc)
00092       throw conceptsException(NoOfIntegrationPointsToHigh());
00093     return abswght_[i];
00094   }
00095 
00096 } // namespace bem
00097 
00098 #endif // abscWght_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)