49 #ifndef __INTREPID2_CUBATURE_TENSOR_PYR_DEF_HPP__
50 #define __INTREPID2_CUBATURE_TENSOR_PYR_DEF_HPP__
54 template<
typename SpT,
typename PT,
typename WT>
55 template<
typename cubPointValueType,
class ...cubPointProperties,
56 typename cubWeightValueType,
class ...cubWeightProperties>
58 CubatureTensorPyr<SpT,PT,WT>::
59 getCubatureImpl( Kokkos::DynRankView<cubPointValueType, cubPointProperties...> cubPoints,
60 Kokkos::DynRankView<cubWeightValueType,cubWeightProperties...> cubWeights )
const {
61 #ifdef HAVE_INTREPID2_DEBUG
63 INTREPID2_TEST_FOR_EXCEPTION( static_cast<ordinal_type>(cubPoints.extent(0)) < this->getNumPoints() ||
64 static_cast<ordinal_type
>(cubPoints.extent(1)) < this->getDimension() ||
65 static_cast<ordinal_type
>(cubWeights.extent(0)) < this->getNumPoints(), std::out_of_range,
66 ">>> ERROR (CubatureTensor): Insufficient space allocated for cubature points or weights.");
68 CubatureTensor<SpT,PT,WT>::getCubatureImpl( cubPoints, cubWeights );
70 typedef Kokkos::DynRankView<cubPointValueType, cubPointProperties...> cubPointViewType;
71 typedef Kokkos::DynRankView<cubWeightValueType,cubWeightProperties...> cubWeightViewType;
72 typedef typename ExecSpace<typename cubPointViewType::execution_space,SpT>::ExecSpaceType ExecSpaceType;
74 const auto loopSize = this->getNumPoints();
75 Kokkos::RangePolicy<ExecSpaceType,Kokkos::Schedule<Kokkos::Static> > policy(0, loopSize);
77 typedef Functor<cubPointViewType, cubWeightViewType> FunctorType;
78 Kokkos::parallel_for( policy, FunctorType(cubPoints, cubWeights) );