00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00035 #ifndef INTREPID_CUBATURE_POLYLIB_HPP
00036 #define INTREPID_CUBATURE_POLYLIB_HPP
00037
00038 #include "Intrepid_ConfigDefs.hpp"
00039 #include "Intrepid_Cubature.hpp"
00040 #include "Intrepid_Polylib.hpp"
00041 #include "Teuchos_TestForException.hpp"
00042
00043
00044 namespace Intrepid {
00045
00059 template<class Scalar, class ArrayType = FieldContainer<Scalar> >
00060 class CubaturePolylib : public Intrepid::Cubature<Scalar,ArrayType> {
00061 private:
00062
00066 int degree_;
00067
00070 int dimension_;
00071
00074 EIntrepidPLPoly poly_type_;
00075
00078 Scalar alpha_;
00079
00082 Scalar beta_;
00083
00086 static const char *cubature_name_;
00087
00088
00089 public:
00090
00091 ~CubaturePolylib() {}
00092
00098 CubaturePolylib(int degree = 0, EIntrepidPLPoly pt_type = PL_GAUSS, Scalar alpha = 0.0, Scalar beta = 0.0);
00099
00100
00107 void getCubature(ArrayType & cubPoints,
00108 ArrayType & cubWeights) const;
00109
00112 int getNumPoints() const;
00113
00116 virtual int getDimension() const;
00117
00121 void getAccuracy(std::vector<int> & accuracy) const;
00122
00125 const char* getName() const;
00126
00127 };
00128
00129 }
00130
00131
00132 #include <Intrepid_CubaturePolylibDef.hpp>
00133
00134 #endif