107 Kokkos::DynRankView<cubWeightValueType,cubWeightProperties...> cubWeights,
108 const CubatureData cubData)
const {
109#ifdef HAVE_INTREPID2_DEBUG
111 INTREPID2_TEST_FOR_EXCEPTION( rank(cubPoints) != 2, std::invalid_argument,
112 ">>> ERROR (CubatureDirect): cubPoints must be rank 2." );
114 INTREPID2_TEST_FOR_EXCEPTION( rank(cubWeights) != 1, std::invalid_argument,
115 ">>> ERROR (CubatureDirect): cubPoints must be rank 1." );
117 INTREPID2_TEST_FOR_EXCEPTION(
static_cast<ordinal_type
>(cubPoints.extent(0)) < this->getNumPoints() ||
118 static_cast<ordinal_type
>(cubPoints.extent(1)) < this->getDimension(), std::out_of_range,
119 ">>> ERROR (CubatureDirect): Insufficient space allocated for cubature points.");
121 INTREPID2_TEST_FOR_EXCEPTION(
static_cast<ordinal_type
>(cubWeights.extent(0)) < this->getNumPoints(), std::out_of_range,
122 ">>> ERROR (CubatureDirect): Insufficient space allocated for cubature weights.");
125 typedef Kokkos::pair<ordinal_type,ordinal_type> range_type;
130 const auto src = Kokkos::subdynrankview(cubData.points_, pointRange, dimRange);
131 auto dst = Kokkos::subdynrankview(cubPoints, pointRange, dimRange);
133 Kokkos::deep_copy( dst, src );
136 const auto src = Kokkos::subdynrankview(cubData.weights_, pointRange);
137 auto dst = Kokkos::subdynrankview(cubWeights, pointRange);
139 Kokkos::deep_copy(dst ,src);