49 #ifndef __INTREPID2_CUBATURE_TENSOR_PYR_HPP__
50 #define __INTREPID2_CUBATURE_TENSOR_PYR_HPP__
59 template<
typename ExecSpaceType = void,
60 typename pointValueType = double,
61 typename weightValueType =
double>
63 :
public CubatureTensor<ExecSpaceType,pointValueType,weightValueType> {
66 template<
typename cubPointViewType,
67 typename cubWeightViewType>
69 cubPointViewType _cubPoints;
70 cubWeightViewType _cubWeights;
72 KOKKOS_INLINE_FUNCTION
73 Functor( cubPointViewType cubPoints_,
74 cubWeightViewType cubWeights_)
75 : _cubPoints(cubPoints_), _cubWeights(cubWeights_) {}
77 KOKKOS_INLINE_FUNCTION
78 void operator()(
const ordinal_type i)
const {
79 const auto tmp = 0.5*(1.0 - _cubPoints(i,2));
80 _cubPoints(i,0) *= tmp;
81 _cubPoints(i,1) *= tmp;
82 _cubPoints(i,2) = 1.0 - tmp;
84 _cubWeights(i) /= 8.0;
89 template<
typename cubPointValueType,
class ...cubPointProperties,
90 typename cubWeightValueType,
class ...cubWeightProperties>
92 getCubatureImpl( Kokkos::DynRankView<cubPointValueType, cubPointProperties...> cubPoints,
93 Kokkos::DynRankView<cubWeightValueType,cubWeightProperties...> cubWeights )
const;
95 typedef typename Cubature<ExecSpaceType,pointValueType,weightValueType>::pointViewType pointViewType;
96 typedef typename Cubature<ExecSpaceType,pointValueType,weightValueType>::weightViewType weightViewType;
103 weightViewType cubWeights )
const {
104 getCubatureImpl( cubPoints,
109 :
CubatureTensor<ExecSpaceType,pointValueType,weightValueType>() {}
111 CubatureTensorPyr(
const CubatureTensorPyr &b)
112 : CubatureTensor<ExecSpaceType,pointValueType,weightValueType>(b) {}
114 template<
typename CubatureLineType>
115 CubatureTensorPyr(
const CubatureLineType line )
116 : CubatureTensor<ExecSpaceType,pointValueType,weightValueType>(line, line, line) {}
118 template<
typename CubatureLineType0,
119 typename CubatureLineType1,
120 typename CubatureLineType2>
121 CubatureTensorPyr(
const CubatureLineType0 line0,
122 const CubatureLineType1 line1,
123 const CubatureLineType2 line2 )
124 : CubatureTensor<ExecSpaceType,pointValueType,weightValueType>(line0, line1, line2) {}
Defines tensor-product cubature (integration) rules in Intrepid.
Defines tensor-product cubature (integration) rules in Intrepid.
Definition file for the Intrepid2::CubatureTensorPyr class.
Header file for the Intrepid2::CubatureTensor class.
virtual void getCubature(pointViewType cubPoints, weightViewType cubWeights) const
Returns cubature points and weights (return arrays must be pre-sized/pre-allocated).