43 cubPointViewType _cubPoints;
44 cubWeightViewType _cubWeights;
45 const subcvCoordViewType _subcvCoords;
46 const subcvSideNormalViewType _subcvSideNormals;
47 const mapViewType _sideMap;
49 KOKKOS_INLINE_FUNCTION
50 Functor( cubPointViewType cubPoints_,
51 cubWeightViewType cubWeights_,
52 subcvCoordViewType subcvCoords_,
53 subcvSideNormalViewType subcvSideNormals_,
54 mapViewType sideMap_ )
55 : _cubPoints(cubPoints_), _cubWeights(cubWeights_),
56 _subcvCoords(subcvCoords_), _subcvSideNormals(subcvSideNormals_), _sideMap(sideMap_) {}
58 KOKKOS_INLINE_FUNCTION
59 void operator()(
const ordinal_type cell)
const {
60 const ordinal_type numNodesPerCell = _cubPoints.extent(1);
61 const ordinal_type spaceDim = _cubPoints.extent(2);
63 const ordinal_type numNodesPerSide = _sideMap(0);
64 const ordinal_type numSubcvPoints = _subcvSideNormals.extent(2);
66 const ordinal_type sideDim = spaceDim - 1;
69 for (ordinal_type node=0;node<numNodesPerCell;++node) {
70 typename cubPointViewType::value_type val[3] = {};
71 for (ordinal_type j=0;j<numNodesPerSide;++j) {
72 for (ordinal_type i=0;i<spaceDim;++i)
73 val[i] += _subcvCoords(cell, node, _sideMap(j+1), i);
75 for (ordinal_type i=0;i<spaceDim;++i)
76 _cubPoints(cell, node, i) = (val[i]/numNodesPerSide);
80 for (ordinal_type node=0;node<numNodesPerCell;++node) {
81 for (ordinal_type i=0;i<spaceDim;++i) {
82 typename cubWeightViewType::value_type val = 0;
83 for (ordinal_type pt=0;pt<numSubcvPoints;++pt)
84 val += _subcvSideNormals(cell, node, pt, i)*pow(2,sideDim);
85 _cubWeights(cell, node, i) = val;