51template <
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.");
65template <
class Scalar,
class ArrayPo
int,
class ArrayWeight>
72template <
class Scalar,
class ArrayPo
int,
class ArrayWeight>
79template <
class Scalar,
class ArrayPo
int,
class ArrayWeight>
86 case PL_GAUSS_RADAU_LEFT:
87 case PL_GAUSS_RADAU_RIGHT:
93 case PL_GAUSS_LOBATTO:
97 TEUCHOS_TEST_FOR_EXCEPTION((1),
98 std::invalid_argument,
99 ">>> ERROR (CubaturePolylib): Unknown point type argument.");
106template <
class Scalar,
class ArrayPo
int,
class ArrayWeight>
113template <
class Scalar,
class ArrayPo
int,
class ArrayWeight>
118template <
class Scalar,
class ArrayPo
int,
class ArrayWeight>
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.");
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];
160template <
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.");
172#if defined(Intrepid_SHOW_DEPRECATED_WARNINGS)
174#warning "The Intrepid package is deprecated"
Scalar beta_
Jacobi parameter beta.
int dimension_
Dimension of integration domain.
void getAccuracy(std::vector< int > &accuracy) const
Returns max. degree of polynomials that are integrated exactly. The return vector has size 1.
EIntrepidPLPoly poly_type_
Type of integration points.
CubaturePolylib(int degree=0, EIntrepidPLPoly pt_type=PL_GAUSS, Scalar alpha=0.0, Scalar beta=0.0)
Constructor.
int getNumPoints() const
Returns the number of cubature points.
const char * getName() const
Returns cubature name.
void getCubature(ArrayPoint &cubPoints, ArrayWeight &cubWeights) const
Returns cubature points and weights (return arrays must be pre-sized/pre-allocated).
static const char * cubature_name_
Cubature name.
Scalar alpha_
Jacobi parameter alpha.
virtual int getDimension() const
Returns dimension of integration domain.
int degree_
The degree of polynomials that are integrated exactly by this cubature rule.
Implementation of a templated lexicographical container for a multi-indexed scalar quantity....
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.
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.
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.
static void zwgj(Scalar *z, Scalar *w, const int np, const Scalar alpha, const Scalar beta)
Gauss-Jacobi zeros and weights.