1019{
1020 auto DIM = LibUtilities::ShapeTypeDimMap[shapeType];
1021
1022 if (DIM == 1)
1023 {
1024 q_begin.resize(1);
1025 q_end.resize(1);
1026 LibUtilities::GetEffectiveQuadRange(bkeys[0].GetPointsKey(), q_begin[0],
1027 q_end[0]);
1028 return;
1029 }
1030 else if (DIM == 2)
1031 {
1032 q_begin.resize(2);
1033 q_end.resize(2);
1034 LibUtilities::GetEffectiveQuadRange(bkeys[0].GetPointsKey(), q_begin[0],
1035 q_end[0]);
1036 LibUtilities::GetEffectiveQuadRange(bkeys[1].GetPointsKey(), q_begin[1],
1037 q_end[1]);
1038 }
1039 else if (DIM == 3)
1040 {
1041 q_begin.resize(3);
1042 q_end.resize(3);
1043 LibUtilities::GetEffectiveQuadRange(bkeys[0].GetPointsKey(), q_begin[0],
1044 q_end[0]);
1045 LibUtilities::GetEffectiveQuadRange(bkeys[1].GetPointsKey(), q_begin[1],
1046 q_end[1]);
1047 LibUtilities::GetEffectiveQuadRange(bkeys[2].GetPointsKey(), q_begin[2],
1048 q_end[2]);
1049 }
1050
1051 switch (shapeType)
1052 {
1053 case LibUtilities::eTriangle:
1054 {
1055 switch (traceid)
1056 {
1057 case 0:
1058 {
1059
1060 q_begin[1] = 0;
1061 q_end[1] = 1;
1062 return;
1063 }
1064 case 1:
1065 {
1066
1067 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1068 q_end[0] = bkeys[0].GetNumPoints();
1069 return;
1070 }
1071 case 2:
1072 {
1073 q_begin[0] = 0;
1074 q_end[0] = 1;
1075 return;
1076 }
1077 default:
1078 {
1079 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1080 break;
1081 }
1082 }
1083 }
1084 break;
1085 case LibUtilities::eQuadrilateral:
1086 {
1087 switch (traceid)
1088 {
1089 case 0:
1090 {
1091 q_begin[1] = 0;
1092 q_end[1] = 1;
1093 return;
1094 }
1095 case 1:
1096 {
1097 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1098 q_end[0] = bkeys[0].GetNumPoints();
1099 return;
1100 }
1101 case 2:
1102 {
1103 q_begin[1] = bkeys[1].GetNumPoints() - 1;
1104 q_end[1] = bkeys[1].GetNumPoints();
1105 return;
1106 }
1107 case 3:
1108 {
1109 q_begin[0] = 0;
1110 q_end[0] = 1;
1111 return;
1112 }
1113 default:
1114 {
1115 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1116 break;
1117 }
1118 }
1119 }
1120 break;
1121 case LibUtilities::eHexahedron:
1122 {
1123 switch (traceid)
1124 {
1125 case 0:
1126 {
1127 q_begin[2] = 0;
1128 q_end[2] = 1;
1129 return;
1130 }
1131 case 1:
1132 {
1133 q_begin[1] = 0;
1134 q_end[1] = 1;
1135 return;
1136 }
1137 case 2:
1138 {
1139 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1140 q_end[0] = bkeys[0].GetNumPoints();
1141 return;
1142 }
1143 case 3:
1144 {
1145 q_begin[1] = bkeys[1].GetNumPoints() - 1;
1146 q_end[1] = bkeys[1].GetNumPoints();
1147 return;
1148 }
1149 case 4:
1150 {
1151 q_begin[0] = 0;
1152 q_end[0] = 1;
1153 return;
1154 }
1155 case 5:
1156 {
1157 q_begin[2] = bkeys[2].GetNumPoints() - 1;
1158 q_end[2] = bkeys[2].GetNumPoints();
1159 return;
1160 }
1161 default:
1162 {
1163 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1164 break;
1165 }
1166 }
1167 }
1168 break;
1169 case LibUtilities::eTetrahedron:
1170 {
1171 switch (traceid)
1172 {
1173 case 0:
1174 {
1175 q_begin[2] = 0;
1176 q_end[2] = 1;
1177 return;
1178 }
1179 case 1:
1180 {
1181 q_begin[1] = 0;
1182 q_end[1] = 1;
1183 return;
1184 }
1185 case 2:
1186 {
1187 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1188 q_end[0] = bkeys[0].GetNumPoints();
1189 return;
1190 }
1191 case 3:
1192 {
1193 q_begin[0] = 0;
1194 q_end[0] = 1;
1195 return;
1196 }
1197 default:
1198 {
1199 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1200 break;
1201 }
1202 }
1203 }
1204 break;
1205 case LibUtilities::ePrism:
1206 {
1207 switch (traceid)
1208 {
1209 case 0:
1210 {
1211 q_begin[2] = 0;
1212 q_end[2] = 1;
1213 return;
1214 }
1215 case 1:
1216 {
1217 q_begin[1] = 0;
1218 q_end[1] = 1;
1219 return;
1220 }
1221 case 2:
1222 {
1223 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1224 q_end[0] = bkeys[0].GetNumPoints();
1225 return;
1226 }
1227 case 3:
1228 {
1229 q_begin[1] = bkeys[1].GetNumPoints() - 1;
1230 q_end[1] = bkeys[1].GetNumPoints();
1231 return;
1232 }
1233 case 4:
1234 {
1235 q_begin[0] = 0;
1236 q_end[0] = 1;
1237 return;
1238 }
1239 default:
1240 {
1241 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1242 break;
1243 }
1244 }
1245 }
1246 break;
1247 case LibUtilities::ePyramid:
1248 {
1249 switch (traceid)
1250 {
1251 case 0:
1252 {
1253 q_begin[2] = 0;
1254 q_end[2] = 1;
1255 return;
1256 }
1257 case 1:
1258 {
1259 q_begin[1] = 0;
1260 q_end[1] = 1;
1261 return;
1262 }
1263 case 2:
1264 {
1265 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1266 q_end[0] = bkeys[0].GetNumPoints();
1267 return;
1268 }
1269 case 3:
1270 {
1271 q_begin[0] = bkeys[1].GetNumPoints() - 1;
1272 q_end[0] = bkeys[1].GetNumPoints();
1273 return;
1274 }
1275 case 4:
1276 {
1277 q_begin[1] = 0;
1278 q_end[1] = 1;
1279 return;
1280 }
1281 default:
1282 {
1283 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1284 break;
1285 }
1286 }
1287 }
1288 break;
1289 default:
1290 return;
1291 }
1292}
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...