1127{
1128 auto DIM = LibUtilities::ShapeTypeDimMap[shapeType];
1129
1130 if (DIM == 1)
1131 {
1132 q_begin.resize(1);
1133 q_end.resize(1);
1134 LibUtilities::PointsKey::GetEffectiveQuadRange(bkeys[0].GetPointsKey(),
1135 q_begin[0], q_end[0]);
1136 return;
1137 }
1138 else if (DIM == 2)
1139 {
1140 q_begin.resize(2);
1141 q_end.resize(2);
1142 LibUtilities::PointsKey::GetEffectiveQuadRange(bkeys[0].GetPointsKey(),
1143 q_begin[0], q_end[0]);
1144 LibUtilities::PointsKey::GetEffectiveQuadRange(bkeys[1].GetPointsKey(),
1145 q_begin[1], q_end[1]);
1146 }
1147 else if (DIM == 3)
1148 {
1149 q_begin.resize(3);
1150 q_end.resize(3);
1151 LibUtilities::PointsKey::GetEffectiveQuadRange(bkeys[0].GetPointsKey(),
1152 q_begin[0], q_end[0]);
1153 LibUtilities::PointsKey::GetEffectiveQuadRange(bkeys[1].GetPointsKey(),
1154 q_begin[1], q_end[1]);
1155 LibUtilities::PointsKey::GetEffectiveQuadRange(bkeys[2].GetPointsKey(),
1156 q_begin[2], q_end[2]);
1157 }
1158
1159 switch (shapeType)
1160 {
1161 case LibUtilities::eTriangle:
1162 {
1163 switch (traceid)
1164 {
1165 case 0:
1166 {
1167
1168 q_begin[1] = 0;
1169 q_end[1] = 1;
1170 return;
1171 }
1172 case 1:
1173 {
1174
1175 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1176 q_end[0] = bkeys[0].GetNumPoints();
1177 return;
1178 }
1179 case 2:
1180 {
1181 q_begin[0] = 0;
1182 q_end[0] = 1;
1183 return;
1184 }
1185 default:
1186 {
1187 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1188 break;
1189 }
1190 }
1191 }
1192 break;
1193 case LibUtilities::eQuadrilateral:
1194 {
1195 switch (traceid)
1196 {
1197 case 0:
1198 {
1199 q_begin[1] = 0;
1200 q_end[1] = 1;
1201 return;
1202 }
1203 case 1:
1204 {
1205 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1206 q_end[0] = bkeys[0].GetNumPoints();
1207 return;
1208 }
1209 case 2:
1210 {
1211 q_begin[1] = bkeys[1].GetNumPoints() - 1;
1212 q_end[1] = bkeys[1].GetNumPoints();
1213 return;
1214 }
1215 case 3:
1216 {
1217 q_begin[0] = 0;
1218 q_end[0] = 1;
1219 return;
1220 }
1221 default:
1222 {
1223 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1224 break;
1225 }
1226 }
1227 }
1228 break;
1229 case LibUtilities::eHexahedron:
1230 {
1231 switch (traceid)
1232 {
1233 case 0:
1234 {
1235 q_begin[2] = 0;
1236 q_end[2] = 1;
1237 return;
1238 }
1239 case 1:
1240 {
1241 q_begin[1] = 0;
1242 q_end[1] = 1;
1243 return;
1244 }
1245 case 2:
1246 {
1247 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1248 q_end[0] = bkeys[0].GetNumPoints();
1249 return;
1250 }
1251 case 3:
1252 {
1253 q_begin[1] = bkeys[1].GetNumPoints() - 1;
1254 q_end[1] = bkeys[1].GetNumPoints();
1255 return;
1256 }
1257 case 4:
1258 {
1259 q_begin[0] = 0;
1260 q_end[0] = 1;
1261 return;
1262 }
1263 case 5:
1264 {
1265 q_begin[2] = bkeys[2].GetNumPoints() - 1;
1266 q_end[2] = bkeys[2].GetNumPoints();
1267 return;
1268 }
1269 default:
1270 {
1271 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1272 break;
1273 }
1274 }
1275 }
1276 break;
1277 case LibUtilities::eTetrahedron:
1278 {
1279 switch (traceid)
1280 {
1281 case 0:
1282 {
1283 q_begin[2] = 0;
1284 q_end[2] = 1;
1285 return;
1286 }
1287 case 1:
1288 {
1289 q_begin[1] = 0;
1290 q_end[1] = 1;
1291 return;
1292 }
1293 case 2:
1294 {
1295 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1296 q_end[0] = bkeys[0].GetNumPoints();
1297 return;
1298 }
1299 case 3:
1300 {
1301 q_begin[0] = 0;
1302 q_end[0] = 1;
1303 return;
1304 }
1305 default:
1306 {
1307 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1308 break;
1309 }
1310 }
1311 }
1312 break;
1313 case LibUtilities::ePrism:
1314 {
1315 switch (traceid)
1316 {
1317 case 0:
1318 {
1319 q_begin[2] = 0;
1320 q_end[2] = 1;
1321 return;
1322 }
1323 case 1:
1324 {
1325 q_begin[1] = 0;
1326 q_end[1] = 1;
1327 return;
1328 }
1329 case 2:
1330 {
1331 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1332 q_end[0] = bkeys[0].GetNumPoints();
1333 return;
1334 }
1335 case 3:
1336 {
1337 q_begin[1] = bkeys[1].GetNumPoints() - 1;
1338 q_end[1] = bkeys[1].GetNumPoints();
1339 return;
1340 }
1341 case 4:
1342 {
1343 q_begin[0] = 0;
1344 q_end[0] = 1;
1345 return;
1346 }
1347 default:
1348 {
1349 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1350 break;
1351 }
1352 }
1353 }
1354 break;
1355 case LibUtilities::ePyramid:
1356 {
1357 switch (traceid)
1358 {
1359 case 0:
1360 {
1361 q_begin[2] = 0;
1362 q_end[2] = 1;
1363 return;
1364 }
1365 case 1:
1366 {
1367 q_begin[1] = 0;
1368 q_end[1] = 1;
1369 return;
1370 }
1371 case 2:
1372 {
1373 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1374 q_end[0] = bkeys[0].GetNumPoints();
1375 return;
1376 }
1377 case 3:
1378 {
1379 q_begin[0] = bkeys[1].GetNumPoints() - 1;
1380 q_end[0] = bkeys[1].GetNumPoints();
1381 return;
1382 }
1383 case 4:
1384 {
1385 q_begin[1] = 0;
1386 q_end[1] = 1;
1387 return;
1388 }
1389 default:
1390 {
1391 NEKERROR(ErrorUtil::efatal,
"Invalid trace id");
1392 break;
1393 }
1394 }
1395 }
1396 break;
1397 default:
1398 return;
1399 }
1400}
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...