76 cubPointViewType _cubPoints;
77 cubWeightViewType _cubWeights;
78 const subcvCoordViewType _subcvCoords;
79 const subcvSideNormalViewType _subcvSideNormals;
80 const mapViewType _sideMap;
82 KOKKOS_INLINE_FUNCTION
83 Functor( cubPointViewType cubPoints_,
84 cubWeightViewType cubWeights_,
85 subcvCoordViewType subcvCoords_,
86 subcvSideNormalViewType subcvSideNormals_,
87 mapViewType sideMap_ )
88 : _cubPoints(cubPoints_), _cubWeights(cubWeights_),
89 _subcvCoords(subcvCoords_), _subcvSideNormals(subcvSideNormals_), _sideMap(sideMap_) {}
91 KOKKOS_INLINE_FUNCTION
92 void operator()(
const ordinal_type cell)
const {
93 const ordinal_type numNodesPerCell = _cubPoints.extent(1);
94 const ordinal_type spaceDim = _cubPoints.extent(2);
96 const ordinal_type numNodesPerSide = _sideMap(0);
97 const ordinal_type numSubcvPoints = _subcvSideNormals.extent(2);
99 const ordinal_type sideDim = spaceDim - 1;
102 for (ordinal_type node=0;node<numNodesPerCell;++node) {
103 typename cubPointViewType::value_type val[3] = {};
104 for (ordinal_type j=0;j<numNodesPerSide;++j) {
105 for (ordinal_type i=0;i<spaceDim;++i)
106 val[i] += _subcvCoords(cell, node, _sideMap(j+1), i);
108 for (ordinal_type i=0;i<spaceDim;++i)
109 _cubPoints(cell, node, i) = (val[i]/numNodesPerSide);
113 for (ordinal_type node=0;node<numNodesPerCell;++node) {
114 for (ordinal_type i=0;i<spaceDim;++i) {
115 typename cubWeightViewType::value_type val = 0;
116 for (ordinal_type pt=0;pt<numSubcvPoints;++pt)
117 val += _subcvSideNormals(cell, node, pt, i)*pow(2,sideDim);
118 _cubWeights(cell, node, i) = val;