140 Kokkos::DynRankView<cubWeightValueType,cubWeightProperties...> cubWeights,
141 const CubatureData cubData)
const {
142#ifdef HAVE_INTREPID2_DEBUG
144 INTREPID2_TEST_FOR_EXCEPTION( cubPoints.rank() != 2, std::invalid_argument,
145 ">>> ERROR (CubatureDirect): cubPoints must be rank 2." );
147 INTREPID2_TEST_FOR_EXCEPTION( cubWeights.rank() != 1, std::invalid_argument,
148 ">>> ERROR (CubatureDirect): cubPoints must be rank 1." );
150 INTREPID2_TEST_FOR_EXCEPTION(
static_cast<ordinal_type
>(cubPoints.extent(0)) < this->getNumPoints() ||
151 static_cast<ordinal_type
>(cubPoints.extent(1)) < this->getDimension(), std::out_of_range,
152 ">>> ERROR (CubatureDirect): Insufficient space allocated for cubature points.");
154 INTREPID2_TEST_FOR_EXCEPTION(
static_cast<ordinal_type
>(cubWeights.extent(0)) < this->getNumPoints(), std::out_of_range,
155 ">>> ERROR (CubatureDirect): Insufficient space allocated for cubature weights.");
158 typedef Kokkos::pair<ordinal_type,ordinal_type> range_type;
163 const auto src = Kokkos::subdynrankview(cubData.points_, pointRange, dimRange);
164 auto dst = Kokkos::subdynrankview(cubPoints, pointRange, dimRange);
166 Kokkos::deep_copy( dst, src );
169 const auto src = Kokkos::subdynrankview(cubData.weights_, pointRange);
170 auto dst = Kokkos::subdynrankview(cubWeights, pointRange);
172 Kokkos::deep_copy(dst ,src);