51 template <
class Scalar, 
class ArrayPo
int, 
class ArrayWeight>
 
   53   TEUCHOS_TEST_FOR_EXCEPTION((degree < 0),
 
   55                      ">>> ERROR (CubaturePolylib): No cubature rule implemented for the desired polynomial degree.");
 
   58   poly_type_ = poly_type;
 
   65 template <
class Scalar, 
class ArrayPo
int, 
class ArrayWeight>
 
   67   return cubature_name_;
 
   72 template <
class Scalar, 
class ArrayPo
int, 
class ArrayWeight>
 
   79 template <
class Scalar, 
class ArrayPo
int, 
class ArrayWeight>
 
   84       np = (degree_+(int)2)/(int)2;
 
   86     case PL_GAUSS_RADAU_LEFT:
 
   87     case PL_GAUSS_RADAU_RIGHT:
 
   91         np = (degree_+(int)3)/(int)2;
 
   93     case PL_GAUSS_LOBATTO:
 
   94       np = (degree_+(int)4)/(int)2;
 
   97       TEUCHOS_TEST_FOR_EXCEPTION((1),
 
   98                          std::invalid_argument,
 
   99                          ">>> ERROR (CubaturePolylib): Unknown point type argument.");
 
  106 template <
class Scalar, 
class ArrayPo
int, 
class ArrayWeight>
 
  108   accuracy.assign(1, degree_);
 
  113 template <
class Scalar, 
class ArrayPo
int, 
class ArrayWeight>
 
  118 template <
class Scalar, 
class ArrayPo
int, 
class ArrayWeight>
 
  120   int numCubPoints = getNumPoints();
 
  121   int cellDim      = getDimension();
 
  123   TEUCHOS_TEST_FOR_EXCEPTION( ( ( (
int)cubPoints.size() < numCubPoints*cellDim ) || ( (
int)cubWeights.size() < numCubPoints ) ),
 
  125                       ">>> ERROR (CubatureDirect): Insufficient space allocated for cubature points or weights.");
 
  132   switch (poly_type_) {
 
  136     case PL_GAUSS_RADAU_LEFT:
 
  139     case PL_GAUSS_RADAU_RIGHT:
 
  142     case PL_GAUSS_LOBATTO:
 
  146       TEUCHOS_TEST_FOR_EXCEPTION((1),
 
  147                          std::invalid_argument,
 
  148                          ">>> ERROR (CubaturePolylib): Unknown point type argument.");
 
  152   for (
int pointId = 0; pointId < numCubPoints; pointId++) {
 
  153     for (
int dim = 0; dim < cellDim; dim++) {
 
  154       cubPoints(pointId,dim) = z[pointId];
 
  156     cubWeights(pointId) = w[pointId];
 
  160 template <
class Scalar, 
class ArrayPo
int, 
class ArrayWeight>
 
  162                                                                  ArrayWeight & cubWeights,
 
  163                                                                  ArrayPoint& cellCoords)
 const 
  165     TEUCHOS_TEST_FOR_EXCEPTION( (
true), std::logic_error,
 
  166                       ">>> ERROR (CubaturePolylib): Cubature defined in reference space calling method for physical space cubature.");
 
void getAccuracy(std::vector< int > &accuracy) const 
Returns max. degree of polynomials that are integrated exactly. The return vector has size 1...
static void zwgrjp(Scalar *z, Scalar *w, const int np, const Scalar alpha, const Scalar beta)
Gauss-Radau-Jacobi zeros and weights with end point at z=1. 
virtual int getDimension() const 
Returns dimension of integration domain. 
static void zwglj(Scalar *z, Scalar *w, const int np, const Scalar alpha, const Scalar beta)
Gauss-Lobatto-Jacobi zeros and weights with end point at z=-1,1. 
void getCubature(ArrayPoint &cubPoints, ArrayWeight &cubWeights) const 
Returns cubature points and weights (return arrays must be pre-sized/pre-allocated). 
static void zwgrjm(Scalar *z, Scalar *w, const int np, const Scalar alpha, const Scalar beta)
Gauss-Radau-Jacobi zeros and weights with end point at z=-1. 
int getNumPoints() const 
Returns the number of cubature points. 
Utilizes cubature (integration) rules contained in the library Polylib (Spencer Sherwin, Aeronautics, Imperial College London) within Intrepid. 
CubaturePolylib(int degree=0, EIntrepidPLPoly pt_type=PL_GAUSS, Scalar alpha=0.0, Scalar beta=0.0)
Constructor. 
const char * getName() const 
Returns cubature name. 
static void zwgj(Scalar *z, Scalar *w, const int np, const Scalar alpha, const Scalar beta)
Gauss-Jacobi zeros and weights.