143 TEUCHOS_TEST_FOR_EXCEPTION( ( ( (
int)cubPoints.size() < numCubPoints*cubDim ) || ( (
int)cubWeights.size() < numCubPoints ) ),
147 unsigned numCubs = cubatures_.size();
148 std::vector<unsigned> numLocPoints(numCubs);
149 std::vector<unsigned> locDim(numCubs);
150 std::vector< FieldContainer<Scalar> > points(numCubs);
151 std::vector< FieldContainer<Scalar> > weights(numCubs);
154 for (
unsigned i=0; i<numCubs; i++) {
156 numLocPoints[i] = cubatures_[i]->getNumPoints();
157 locDim[i] = cubatures_[i]->getDimension();
158 points[i].resize(numLocPoints[i], locDim[i]);
159 weights[i].resize(numLocPoints[i]);
162 cubatures_[i]->getCubature(cubPoints, cubWeights);
163 for (
unsigned pt=0; pt<numLocPoints[i]; pt++) {
164 for (
unsigned d=0; d<locDim[i]; d++) {
165 points[i](pt,d) = cubPoints(pt,d);
166 weights[i](pt) = cubWeights(pt);
173 for (
int i=0; i<numCubPoints; i++) {
174 cubWeights(i) = (Scalar)1.0;
178 int globDimCounter = 0;
180 for (
unsigned i=0; i<numCubs; i++) {
182 for (
int j=0; j<numCubPoints; j++) {
184 int itmp = (j % (numCubPoints/shift))*shift + (j / (numCubPoints/shift));
185 for (
unsigned k=0; k<locDim[i]; k++) {
186 cubPoints(itmp , globDimCounter+k) = points[i](j % numLocPoints[i], k);
188 cubWeights( itmp ) *= weights[i](j % numLocPoints[i]);
191 shift *= numLocPoints[i];
192 globDimCounter += locDim[i];
197template<
class Scalar,
class ArrayPo
int,
class ArrayWeight>
199 ArrayWeight& cubWeights,
200 ArrayPoint& cellCoords)
const
202 TEUCHOS_TEST_FOR_EXCEPTION( (
true), std::logic_error,
203 ">>> ERROR (CubatureTensor): Cubature defined in reference space calling method for physical space cubature.");
207template <
class Scalar,
class ArrayPo
int,
class ArrayWeight>
209 unsigned numCubs = cubatures_.size();
210 int numCubPoints = 1;
211 for (
unsigned i=0; i<numCubs; i++) {
212 numCubPoints *= cubatures_[i]->getNumPoints();
218template <
class Scalar,
class ArrayPo
int,
class ArrayWeight>
225template <
class Scalar,
class ArrayPo
int,
class ArrayWeight>