8 #ifndef Intrepid2_DataDimensionInfo_hpp
9 #define Intrepid2_DataDimensionInfo_hpp
26 DataVariationType variationType;
29 int blockPlusDiagonalLastNonDiagonal = -1;
33 KOKKOS_INLINE_FUNCTION
36 const int myNominalExtent = myData.logicalExtent;
37 #ifdef HAVE_INTREPID2_DEBUG
40 const DataVariationType & myVariation = myData.variationType;
41 const DataVariationType & otherVariation = otherData.variationType;
43 const int & myVariationModulus = myData.variationModulus;
44 const int & otherVariationModulus = otherData.variationModulus;
46 int myDataExtent = myData.dataExtent;
47 int otherDataExtent = otherData.dataExtent;
50 combinedDimensionInfo.logicalExtent = myNominalExtent;
55 switch (otherVariation)
60 case BLOCK_PLUS_DIAGONAL:
61 combinedDimensionInfo = otherData;
65 switch (otherVariation)
68 combinedDimensionInfo = myData;
71 if (myVariationModulus == otherVariationModulus)
75 combinedDimensionInfo.variationType = MODULAR;
76 combinedDimensionInfo.dataExtent = myDataExtent;
77 combinedDimensionInfo.variationModulus = myVariationModulus;
84 combinedDimensionInfo.variationType = GENERAL;
85 combinedDimensionInfo.dataExtent = myNominalExtent;
86 combinedDimensionInfo.variationModulus = myNominalExtent;
89 case BLOCK_PLUS_DIAGONAL:
90 combinedDimensionInfo.variationType = GENERAL;
91 combinedDimensionInfo.dataExtent = myNominalExtent;
92 combinedDimensionInfo.variationModulus = myNominalExtent;
96 combinedDimensionInfo = otherData;
100 case BLOCK_PLUS_DIAGONAL:
101 switch (otherVariation)
104 combinedDimensionInfo = myData;
107 combinedDimensionInfo.variationType = GENERAL;
108 combinedDimensionInfo.dataExtent = myNominalExtent;
109 combinedDimensionInfo.variationModulus = myNominalExtent;
113 combinedDimensionInfo = otherData;
115 case BLOCK_PLUS_DIAGONAL:
116 combinedDimensionInfo.variationType = GENERAL;
117 combinedDimensionInfo.dataExtent = max(myDataExtent,otherDataExtent);
118 combinedDimensionInfo.variationModulus = combinedDimensionInfo.dataExtent;
120 combinedDimensionInfo.blockPlusDiagonalLastNonDiagonal = min(myData.blockPlusDiagonalLastNonDiagonal, otherData.blockPlusDiagonalLastNonDiagonal);
124 switch (otherVariation)
129 case BLOCK_PLUS_DIAGONAL:
130 combinedDimensionInfo = myData;
133 return combinedDimensionInfo;
#define INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE(test, x, msg)
Struct expressing all variation information about a Data object in a single dimension, including its logical extent and storage extent.
Defines DataVariationType enum that specifies the types of variation possible within a Data object...