47 #ifndef __INTREPID2_PROJECTIONSTRUCT_HPP__
48 #define __INTREPID2_PROJECTIONSTRUCT_HPP__
50 #include "Intrepid2_ConfigDefs.hpp"
57 namespace Experimental {
79 template<
typename SpT,
typename ValueType>
83 typedef Kokkos::pair<ordinal_type,ordinal_type> range_type;
84 typedef typename Kokkos::Impl::is_space<SpT>::host_mirror_space::execution_space host_space_type;
85 typedef Kokkos::DynRankView<ValueType,host_space_type> view_type;
86 typedef std::array<std::array<range_type, 12>,4> range_tag;
87 typedef std::array<std::array<view_type, 12>,4> view_tag;
88 typedef std::array<std::array<unsigned, 12>,4> key_tag;
93 return numBasisEvalPoints;
99 return numBasisDerivEvalPoints;
105 return numTargetEvalPoints;
111 return numTargetDerivEvalPoints;
121 return basisCubPoints[subCellDim][subCellId].extent(0);
131 return basisDerivCubPoints[subCellDim][subCellId].extent(0);
141 return targetCubPoints[subCellDim][subCellId].extent(0);
151 return targetDerivCubPoints[subCellDim][subCellId].extent(0);
167 return basisCubPoints[subCellDim][subCellId];
183 return basisDerivCubPoints[subCellDim][subCellId];
199 return targetCubPoints[subCellDim][subCellId];
215 return targetDerivCubPoints[subCellDim][subCellId];
230 return basisCubWeights[subCellDim][subCellId];
245 return basisDerivCubWeights[subCellDim][subCellId];
260 return targetCubWeights[subCellDim][subCellId];
275 return targetDerivCubWeights[subCellDim][subCellId];
285 return basisPointsRange[subCellDim][subCellId];
295 return basisDerivPointsRange[subCellDim][subCellId];
305 return targetPointsRange[subCellDim][subCellId];
315 return targetDerivPointsRange[subCellDim][subCellId];
324 unsigned getTopologyKey(
const ordinal_type subCellDim,
const ordinal_type subCellId) {
325 return subCellTopologyKey[subCellDim][subCellId];
332 template<
typename BasisPtrType>
334 const ordinal_type targetCubDegree);
341 template<
typename BasisPtrType>
343 const ordinal_type targetCubDegree,
344 const ordinal_type targetGradCubDegre);
351 template<
typename BasisPtrType>
353 const ordinal_type targetCubDegree,
354 const ordinal_type targetCurlCubDegre);
361 template<
typename BasisPtrType>
363 const ordinal_type targetCubDegree,
364 const ordinal_type targetDivCubDegre);
370 template<
typename BasisPtrType>
372 const ordinal_type targetCubDegree);
374 key_tag subCellTopologyKey;
375 range_tag basisPointsRange;
376 range_tag basisDerivPointsRange;
377 range_tag targetPointsRange;
378 range_tag targetDerivPointsRange;
379 view_tag basisCubPoints;
380 view_tag basisCubWeights;
381 view_tag basisDerivCubPoints;
382 view_tag basisDerivCubWeights;
383 view_tag targetCubPoints;
384 view_tag targetCubWeights;
385 view_tag targetDerivCubPoints;
386 view_tag targetDerivCubWeights;
387 ordinal_type numBasisEvalPoints;
388 ordinal_type numBasisDerivEvalPoints;
389 ordinal_type numTargetEvalPoints;
390 ordinal_type numTargetDerivEvalPoints;