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_TENSOR_HPP
00036 #define INTREPID_CUBATURE_TENSOR_HPP
00037
00038 #include "Intrepid_ConfigDefs.hpp"
00039 #include "Intrepid_Cubature.hpp"
00040 #include "Intrepid_CubatureDirect.hpp"
00041 #include "Teuchos_TestForException.hpp"
00042
00043
00044 namespace Intrepid {
00045
00049 template<class Scalar, class ArrayType = FieldContainer<Scalar> >
00050 class CubatureTensor : public Intrepid::Cubature<Scalar,ArrayType> {
00051 private:
00052
00056 std::vector<int> degree_;
00057
00060 int dimension_;
00061
00064 std::vector< Teuchos::RCP<Cubature<Scalar,ArrayType> > > cubatures_;
00065
00066 public:
00067
00068 ~CubatureTensor() {}
00069
00075 CubatureTensor( std::vector< Teuchos::RCP<Cubature<Scalar,ArrayType> > > cubatures);
00076
00082 CubatureTensor(Teuchos::RCP<CubatureDirect<Scalar,ArrayType> > cubature1,
00083 Teuchos::RCP<CubatureDirect<Scalar,ArrayType> > cubature2);
00084
00091 CubatureTensor(Teuchos::RCP<CubatureDirect<Scalar,ArrayType> > cubature1,
00092 Teuchos::RCP<CubatureDirect<Scalar,ArrayType> > cubature2,
00093 Teuchos::RCP<CubatureDirect<Scalar,ArrayType> > cubature3);
00094
00100 CubatureTensor(Teuchos::RCP<CubatureDirect<Scalar,ArrayType> > cubature, int n);
00101
00108 virtual void getCubature(ArrayType & cubPoints,
00109 ArrayType & cubWeights) const;
00110
00113 virtual int getNumPoints() const;
00114
00117 virtual int getDimension() const;
00118
00122 virtual void getAccuracy(std::vector<int> & degree) const;
00123
00124 };
00125
00126
00127 }
00128
00129
00130
00131 #include <Intrepid_CubatureTensorDef.hpp>
00132
00133 #endif