444 const unsigned char *
const tetCases,
445 const size_t *numEdges,
446 const unsigned long long *
const scalars,
447 const triangulationType &triangulation) {
451 this->
printMsg(
"Writing Boundaries", 0, 0, this->threadNumber_,
454#ifdef TTK_ENABLE_OPENMP
455 std::vector<size_t> edgeStartIndex(this->threadNumber_ + 1);
457 edgeStartIndex[0] = 0;
460 for(
int t = 1; t <= this->threadNumber_; ++t) {
461 edgeStartIndex[t] = numEdges[t - 1] + edgeStartIndex[t - 1];
464 const size_t numTotalEdges = edgeStartIndex[this->threadNumber_];
466 const size_t numTotalEdges = numEdges[0];
469 output_points_.resize(6 * numTotalEdges);
470 output_cells_connectivity_.resize(2 * numTotalEdges);
471 output_cells_labels_.resize(numTotalEdges);
472 output_numberOfPoints_ = 2 * numTotalEdges;
473 output_numberOfCells_ = numTotalEdges;
475 const SimplexId numTets = triangulation.getNumberOfCells();
476 float *p = output_points_.data();
477 SimplexId *c = output_cells_connectivity_.data();
478 unsigned long long *m = output_cells_labels_.data();
480#ifdef TTK_ENABLE_OPENMP
481#pragma omp parallel num_threads(this->threadNumber_) firstprivate(p, c, m)
483 const int tid = omp_get_thread_num();
484 size_t numThreadIndex = edgeStartIndex[tid];
486 p += (numThreadIndex * 6);
487 c += (numThreadIndex * 2);
489 numThreadIndex = 2 * numThreadIndex;
491#pragma omp for schedule(static)
493 size_t numThreadIndex = 0;
495 for(
SimplexId tet = 0; tet < numTets; ++tet) {
502 std::array<SimplexId, 3> vertices{};
503 triangulation.getCellVertex(tet, 0, vertices[0]);
504 triangulation.getCellVertex(tet, 1, vertices[1]);
505 triangulation.getCellVertex(tet, 2, vertices[2]);
507 std::array<std::array<float, 3>, 3> vertPos{};
508 triangulation.getVertexPoint(
509 vertices[0], vertPos[0][0], vertPos[0][1], vertPos[0][2]);
510 triangulation.getVertexPoint(
511 vertices[1], vertPos[1][0], vertPos[1][1], vertPos[1][2]);
512 triangulation.getVertexPoint(
513 vertices[2], vertPos[2][0], vertPos[2][1], vertPos[2][2]);
515 const std::array<unsigned long long, 3> label
516 = {scalars[vertices[0]], scalars[vertices[1]], scalars[vertices[2]]};
519 std::array<std::array<float, 3>, 2> eC{};
520 mth::getCenter(vertPos[edgeVerts[0]], vertPos[edgeVerts[1]], eC[0]);
521 mth::getCenter(vertPos[edgeVerts[2]], vertPos[edgeVerts[3]], eC[1]);
524 const unsigned long long sparseID
525 =
mth::getHash(label[edgeVerts[0]], label[edgeVerts[1]]);
536 c[0] = numThreadIndex;
537 c[1] = numThreadIndex + 1;
545 std::array<std::array<float, 3>, 4> eC{};
552 const std::array<unsigned long long, 3> sparseID
577 c[0] = numThreadIndex + 0;
578 c[1] = numThreadIndex + 1;
579 c[2] = numThreadIndex + 2;
580 c[3] = numThreadIndex + 3;
581 c[4] = numThreadIndex + 4;
582 c[5] = numThreadIndex + 5;
592#ifdef TTK_ENABLE_OPENMP
597 "Wrote Boundaries", 1, localTimer.
getElapsedTime(), this->threadNumber_);
711 const unsigned char *
const tetCases,
712 const size_t *numEdges,
713 const unsigned long long *
const scalars,
714 const triangulationType &triangulation) {
718 this->
printMsg(
"Writing Boundaries", 0, 0, this->threadNumber_,
721 constexpr float diff = 0.02;
722 constexpr float d0 = 0.5 + diff;
723 constexpr float d1 = 0.5 - diff;
724 constexpr float dc = 2 * diff;
726#ifdef TTK_ENABLE_OPENMP
727 std::vector<size_t> edgeStartIndex(this->threadNumber_ + 1);
729 edgeStartIndex[0] = 0;
732 for(
int t = 1; t <= this->threadNumber_; ++t) {
733 edgeStartIndex[t] = numEdges[t - 1] + edgeStartIndex[t - 1];
736 size_t const numTotalEdges = edgeStartIndex[this->threadNumber_];
738 size_t numTotalEdges = numEdges[0];
741 output_points_.resize(6 * numTotalEdges);
742 output_cells_connectivity_.resize(2 * numTotalEdges);
743 output_cells_labels_.resize(numTotalEdges);
744 output_numberOfPoints_ = 2 * numTotalEdges;
745 output_numberOfCells_ = numTotalEdges;
747 float *p = output_points_.data();
748 SimplexId *c = output_cells_connectivity_.data();
749 unsigned long long *m = output_cells_labels_.data();
751 const SimplexId numTets = triangulation.getNumberOfCells();
753#ifdef TTK_ENABLE_OPENMP
754#pragma omp parallel num_threads(this->threadNumber_) firstprivate(p, c, m)
756 const int tid = omp_get_thread_num();
757 size_t numThreadIndex = edgeStartIndex[tid];
759 p += (numThreadIndex * 6);
760 c += (numThreadIndex * 2);
763 numThreadIndex = 2 * numThreadIndex;
765#pragma omp for schedule(static)
767 size_t numThreadIndex = 0;
769 for(
SimplexId tet = 0; tet < numTets; ++tet) {
776 std::array<SimplexId, 3> vertices{};
777 triangulation.getCellVertex(tet, 0, vertices[0]);
778 triangulation.getCellVertex(tet, 1, vertices[1]);
779 triangulation.getCellVertex(tet, 2, vertices[2]);
781 std::array<std::array<float, 3>, 3> vPos{};
782 triangulation.getVertexPoint(
783 vertices[0], vPos[0][0], vPos[0][1], vPos[0][2]);
784 triangulation.getVertexPoint(
785 vertices[1], vPos[1][0], vPos[1][1], vPos[1][2]);
786 triangulation.getVertexPoint(
787 vertices[2], vPos[2][0], vPos[2][1], vPos[2][2]);
789 const std::array<unsigned long long, 3> label
790 = {scalars[vertices[0]], scalars[vertices[1]], scalars[vertices[2]]};
793 std::array<float, 3> vert00{}, vert01{}, vert10{}, vert11{};
815 c[0] = numThreadIndex;
816 c[1] = numThreadIndex + 1;
817 c[2] = numThreadIndex + 2;
818 c[3] = numThreadIndex + 3;
822 m[0] = label[vIds[0]];
823 m[1] = label[vIds[1]];
827 std::array<float, 3> vert00{}, vert01{}, vert10{}, vert11{}, vert20{},
836 std::array<float, 3> triCenter{};
839 std::array<float, 3> triS0{}, triS1{}, triS2{};
885 c[0] = numThreadIndex + 0;
886 c[1] = numThreadIndex + 1;
887 c[2] = numThreadIndex + 2;
888 c[3] = numThreadIndex + 3;
890 c[4] = numThreadIndex + 4;
891 c[5] = numThreadIndex + 5;
892 c[6] = numThreadIndex + 6;
893 c[7] = numThreadIndex + 7;
895 c[8] = numThreadIndex + 8;
896 c[9] = numThreadIndex + 9;
897 c[10] = numThreadIndex + 10;
898 c[11] = numThreadIndex + 11;
900 numThreadIndex += 12;
911#ifdef TTK_ENABLE_OPENMP
916 "Wrote Boundaries", 1, localTimer.
getElapsedTime(), this->threadNumber_);
990 const unsigned char *
const tetCases,
991 const size_t *numTriangles,
992 const unsigned long long *
const scalars,
993 const triangulationType &triangulation) {
997 this->
printMsg(
"Writing separators", 0, 0, this->threadNumber_,
1000#ifdef TTK_ENABLE_OPENMP
1001 std::vector<size_t> triangleStartIndex(this->threadNumber_ + 1);
1003 triangleStartIndex[0] = 0;
1006 for(
int t = 1; t <= this->threadNumber_; ++t) {
1007 triangleStartIndex[t] = numTriangles[t - 1] + triangleStartIndex[t - 1];
1010 size_t const numTotalTriangles = triangleStartIndex[this->threadNumber_];
1012 size_t numTotalTriangles = numTriangles[0];
1015 output_points_.resize(9 * numTotalTriangles);
1016 output_cells_connectivity_.resize(3 * numTotalTriangles);
1017 output_cells_labels_.resize(numTotalTriangles);
1018 output_numberOfPoints_ = 3 * numTotalTriangles;
1019 output_numberOfCells_ = numTotalTriangles;
1021 float *p = output_points_.data();
1022 SimplexId *c = output_cells_connectivity_.data();
1023 unsigned long long *m = output_cells_labels_.data();
1025 const SimplexId numTets = triangulation.getNumberOfCells();
1027#ifdef TTK_ENABLE_OPENMP
1028#pragma omp parallel num_threads(this->threadNumber_) firstprivate(p, c, m)
1030 const int tid = omp_get_thread_num();
1031 size_t numThreadIndex = triangleStartIndex[tid];
1033 p += (numThreadIndex * 9);
1034 c += (numThreadIndex * 3);
1035 m += numThreadIndex;
1037 numThreadIndex = 3 * numThreadIndex;
1039#pragma omp for schedule(static)
1041 size_t numThreadIndex = 0;
1043 for(
SimplexId tet = 0; tet < numTets; ++tet) {
1051 std::array<SimplexId, 4> vertices{};
1052 triangulation.getCellVertex(tet, 0, vertices[0]);
1053 triangulation.getCellVertex(tet, 1, vertices[1]);
1054 triangulation.getCellVertex(tet, 2, vertices[2]);
1055 triangulation.getCellVertex(tet, 3, vertices[3]);
1057 const std::array<unsigned long long, 4> label
1058 = {scalars[vertices[0]], scalars[vertices[1]], scalars[vertices[2]],
1059 scalars[vertices[3]]};
1061 std::array<std::array<float, 3>, 4> vertPos{};
1062 triangulation.getVertexPoint(
1063 vertices[0], vertPos[0][0], vertPos[0][1], vertPos[0][2]);
1064 triangulation.getVertexPoint(
1065 vertices[1], vertPos[1][0], vertPos[1][1], vertPos[1][2]);
1066 triangulation.getVertexPoint(
1067 vertices[2], vertPos[2][0], vertPos[2][1], vertPos[2][2]);
1068 triangulation.getVertexPoint(
1069 vertices[3], vertPos[3][0], vertPos[3][1], vertPos[3][2]);
1071 std::array<std::array<float, 3>, 10> eC{};
1086 if(tetEdgeIndices[0] == 10) {
1087 std::array<float, 3> tetCenter{};
1089 vertPos[0], vertPos[1], vertPos[2], vertPos[3], tetCenter);
1092 unsigned long long const sparseMSIds[6] = {
1104 p[6] = tetCenter[0];
1105 p[7] = tetCenter[1];
1106 p[8] = tetCenter[2];
1113 p[15] = tetCenter[0];
1114 p[16] = tetCenter[1];
1115 p[17] = tetCenter[2];
1122 p[24] = tetCenter[0];
1123 p[25] = tetCenter[1];
1124 p[26] = tetCenter[2];
1131 p[33] = tetCenter[0];
1132 p[34] = tetCenter[1];
1133 p[35] = tetCenter[2];
1140 p[42] = tetCenter[0];
1141 p[43] = tetCenter[1];
1142 p[44] = tetCenter[2];
1149 p[51] = tetCenter[0];
1150 p[52] = tetCenter[1];
1151 p[53] = tetCenter[2];
1158 p[60] = tetCenter[0];
1159 p[61] = tetCenter[1];
1160 p[62] = tetCenter[2];
1167 p[69] = tetCenter[0];
1168 p[70] = tetCenter[1];
1169 p[71] = tetCenter[2];
1176 p[78] = tetCenter[0];
1177 p[79] = tetCenter[1];
1178 p[80] = tetCenter[2];
1185 p[87] = tetCenter[0];
1186 p[88] = tetCenter[1];
1187 p[89] = tetCenter[2];
1194 p[96] = tetCenter[0];
1195 p[97] = tetCenter[1];
1196 p[98] = tetCenter[2];
1203 p[105] = tetCenter[0];
1204 p[106] = tetCenter[1];
1205 p[107] = tetCenter[2];
1208 c[0] = numThreadIndex + 0;
1209 c[1] = numThreadIndex + 1;
1210 c[2] = numThreadIndex + 2;
1211 c[3] = numThreadIndex + 3;
1212 c[4] = numThreadIndex + 4;
1213 c[5] = numThreadIndex + 5;
1214 c[6] = numThreadIndex + 6;
1215 c[7] = numThreadIndex + 7;
1216 c[8] = numThreadIndex + 8;
1217 c[9] = numThreadIndex + 9;
1218 c[10] = numThreadIndex + 10;
1219 c[11] = numThreadIndex + 11;
1220 c[12] = numThreadIndex + 12;
1221 c[13] = numThreadIndex + 13;
1222 c[14] = numThreadIndex + 14;
1223 c[15] = numThreadIndex + 15;
1224 c[16] = numThreadIndex + 16;
1225 c[17] = numThreadIndex + 17;
1226 c[18] = numThreadIndex + 18;
1227 c[19] = numThreadIndex + 19;
1228 c[20] = numThreadIndex + 20;
1229 c[21] = numThreadIndex + 21;
1230 c[22] = numThreadIndex + 22;
1231 c[23] = numThreadIndex + 23;
1232 c[24] = numThreadIndex + 24;
1233 c[25] = numThreadIndex + 25;
1234 c[26] = numThreadIndex + 26;
1235 c[27] = numThreadIndex + 27;
1236 c[28] = numThreadIndex + 28;
1237 c[29] = numThreadIndex + 29;
1238 c[30] = numThreadIndex + 30;
1239 c[31] = numThreadIndex + 31;
1240 c[32] = numThreadIndex + 32;
1241 c[33] = numThreadIndex + 33;
1242 c[34] = numThreadIndex + 34;
1243 c[35] = numThreadIndex + 35;
1245 numThreadIndex += 36;
1247 m[0] = sparseMSIds[0];
1248 m[1] = sparseMSIds[0];
1249 m[2] = sparseMSIds[1];
1250 m[3] = sparseMSIds[1];
1251 m[4] = sparseMSIds[2];
1252 m[5] = sparseMSIds[2];
1253 m[6] = sparseMSIds[3];
1254 m[7] = sparseMSIds[3];
1255 m[8] = sparseMSIds[4];
1256 m[9] = sparseMSIds[4];
1257 m[10] = sparseMSIds[5];
1258 m[11] = sparseMSIds[5];
1264 for(
size_t t = 0; t < numTris; ++t) {
1266 p[0] = eC[tetEdgeIndices[(t * 3)]][0];
1267 p[1] = eC[tetEdgeIndices[(t * 3)]][1];
1268 p[2] = eC[tetEdgeIndices[(t * 3)]][2];
1269 p[3] = eC[tetEdgeIndices[(t * 3) + 1]][0];
1270 p[4] = eC[tetEdgeIndices[(t * 3) + 1]][1];
1271 p[5] = eC[tetEdgeIndices[(t * 3) + 1]][2];
1272 p[6] = eC[tetEdgeIndices[(t * 3) + 2]][0];
1273 p[7] = eC[tetEdgeIndices[(t * 3) + 2]][1];
1274 p[8] = eC[tetEdgeIndices[(t * 3) + 2]][2];
1277 c[0] = numThreadIndex + 0;
1278 c[1] = numThreadIndex + 1;
1279 c[2] = numThreadIndex + 2;
1281 numThreadIndex += 3;
1285 label[tetVertLabel[t * 2]], label[tetVertLabel[(t * 2) + 1]]);
1290#ifdef TTK_ENABLE_OPENMP
1295 "Wrote separators", 1, localTimer.
getElapsedTime(), this->threadNumber_);
1419 const unsigned char *
const tetCases,
1420 const size_t *numTriangles,
1421 const unsigned long long *
const scalars,
1422 const triangulationType &triangulation) {
1426 this->
printMsg(
"Writing detailed boundaries", 0, 0, this->threadNumber_,
1429 constexpr float diff = 0.02;
1430 constexpr float d0 = 0.5 + diff;
1431 constexpr float d1 = 0.5 - diff;
1432 constexpr float dc = diff * 2;
1434#ifdef TTK_ENABLE_OPENMP
1435 std::vector<size_t> triangleStartIndex(this->threadNumber_ + 1);
1437 triangleStartIndex[0] = 0;
1440 for(
int t = 1; t <= this->threadNumber_; ++t) {
1441 triangleStartIndex[t] = numTriangles[t - 1] + triangleStartIndex[t - 1];
1444 size_t const numTotalTriangles = triangleStartIndex[this->threadNumber_];
1446 size_t numTotalTriangles = numTriangles[0];
1449 output_points_.resize(9 * numTotalTriangles);
1450 output_cells_connectivity_.resize(3 * numTotalTriangles);
1451 output_cells_labels_.resize(numTotalTriangles);
1452 output_numberOfPoints_ = 3 * numTotalTriangles;
1453 output_numberOfCells_ = numTotalTriangles;
1455 float *p = output_points_.data();
1456 SimplexId *c = output_cells_connectivity_.data();
1457 unsigned long long *m = output_cells_labels_.data();
1459 const SimplexId numTets = triangulation.getNumberOfCells();
1461#ifdef TTK_ENABLE_OPENMP
1462#pragma omp parallel num_threads(this->threadNumber_) firstprivate(p, c, m)
1464 const int tid = omp_get_thread_num();
1465 size_t numThreadIndex = triangleStartIndex[tid];
1467 p += (numThreadIndex * 9);
1468 c += (numThreadIndex * 3);
1469 m += numThreadIndex;
1471 numThreadIndex = 3 * numThreadIndex;
1473#pragma omp for schedule(static)
1475 size_t numThreadIndex = 0;
1477 for(
SimplexId tet = 0; tet < numTets; ++tet) {
1482 std::array<SimplexId, 4> vertices{};
1483 triangulation.getCellVertex(tet, 0, vertices[0]);
1484 triangulation.getCellVertex(tet, 1, vertices[1]);
1485 triangulation.getCellVertex(tet, 2, vertices[2]);
1486 triangulation.getCellVertex(tet, 3, vertices[3]);
1488 const std::array<unsigned long long, 4> label
1489 = {scalars[vertices[0]], scalars[vertices[1]], scalars[vertices[2]],
1490 scalars[vertices[3]]};
1492 std::array<std::array<float, 3>, 4> vPos{};
1493 triangulation.getVertexPoint(
1494 vertices[0], vPos[0][0], vPos[0][1], vPos[0][2]);
1495 triangulation.getVertexPoint(
1496 vertices[1], vPos[1][0], vPos[1][1], vPos[1][2]);
1497 triangulation.getVertexPoint(
1498 vertices[2], vPos[2][0], vPos[2][1], vPos[2][2]);
1499 triangulation.getVertexPoint(
1500 vertices[3], vPos[3][0], vPos[3][1], vPos[3][2]);
1505 std::array<float, 3> vert00{}, vert01{}, vert02{}, vert10{}, vert11{},
1537 c[0] = numThreadIndex + 0;
1538 c[1] = numThreadIndex + 1;
1539 c[2] = numThreadIndex + 2;
1540 c[3] = numThreadIndex + 3;
1541 c[4] = numThreadIndex + 4;
1542 c[5] = numThreadIndex + 5;
1544 numThreadIndex += 6;
1546 m[0] = label[vIds[0]];
1547 m[1] = label[vIds[1]];
1551 std::array<float, 3> vert03{}, vert13{};
1577 c[0] = numThreadIndex + 0;
1578 c[1] = numThreadIndex + 1;
1579 c[2] = numThreadIndex + 2;
1580 c[3] = numThreadIndex + 3;
1581 c[4] = numThreadIndex + 4;
1582 c[5] = numThreadIndex + 5;
1584 numThreadIndex += 6;
1586 m[0] = label[vIds[0]];
1587 m[1] = label[vIds[1]];
1593 std::array<std::array<float, 3>, 4> triCenter{};
1599 std::array<std::array<float, 3>, 10> edgeCenters{};
1608 std::array<float, 3> edge00{}, edge01{}, edge02{}, edge03{}, tri00{},
1609 tri01{}, edge10{}, edge11{}, edge12{}, tri10{}, tri11{}, edge20{},
1610 edge21{}, edge22{}, tri20{}, tri21{};
1622 vPos[vIds[8]], edgeCenters[vIds[10]], dc, edge12);
1629 vPos[vIds[9]], edgeCenters[vIds[10]], dc, edge22);
1731 c[0] = numThreadIndex + 0;
1732 c[1] = numThreadIndex + 1;
1733 c[2] = numThreadIndex + 2;
1734 c[3] = numThreadIndex + 3;
1735 c[4] = numThreadIndex + 4;
1736 c[5] = numThreadIndex + 5;
1737 c[6] = numThreadIndex + 6;
1738 c[7] = numThreadIndex + 7;
1739 c[8] = numThreadIndex + 8;
1740 c[9] = numThreadIndex + 9;
1741 c[10] = numThreadIndex + 10;
1742 c[11] = numThreadIndex + 11;
1743 c[12] = numThreadIndex + 12;
1744 c[13] = numThreadIndex + 13;
1745 c[14] = numThreadIndex + 14;
1746 c[15] = numThreadIndex + 15;
1747 c[16] = numThreadIndex + 16;
1748 c[17] = numThreadIndex + 17;
1749 c[18] = numThreadIndex + 18;
1750 c[19] = numThreadIndex + 19;
1751 c[20] = numThreadIndex + 20;
1752 c[21] = numThreadIndex + 21;
1753 c[22] = numThreadIndex + 22;
1754 c[23] = numThreadIndex + 23;
1755 c[24] = numThreadIndex + 24;
1756 c[25] = numThreadIndex + 25;
1757 c[26] = numThreadIndex + 26;
1758 c[27] = numThreadIndex + 27;
1759 c[28] = numThreadIndex + 28;
1760 c[29] = numThreadIndex + 29;
1762 numThreadIndex += 30;
1764 m[0] = label[vIds[0]];
1765 m[1] = label[vIds[0]];
1766 m[2] = label[vIds[0]];
1767 m[3] = label[vIds[0]];
1768 m[4] = label[vIds[8]];
1769 m[5] = label[vIds[8]];
1770 m[6] = label[vIds[8]];
1771 m[7] = label[vIds[9]];
1772 m[8] = label[vIds[9]];
1773 m[9] = label[vIds[9]];
1777 std::array<float, 3> tetCenter{};
1781 std::array<std::array<float, 3>, 4> triCenter{};
1787 std::array<float, 3> vert00{}, vert01{}, vert02{}, vert0tet{},
1788 vert0t0{}, vert0t1{}, vert0t2{}, vert10{}, vert11{}, vert12{},
1789 vert1tet{}, vert1t0{}, vert1t1{}, vert1t2{}, vert20{}, vert21{},
1790 vert22{}, vert2tet{}, vert2t0{}, vert2t1{}, vert2t2{}, vert30{},
1791 vert31{}, vert32{}, vert3tet{}, vert3t0{}, vert3t1{}, vert3t2{};
1842 p[15] = vert0tet[0];
1843 p[16] = vert0tet[1];
1844 p[17] = vert0tet[2];
1851 p[24] = vert0tet[0];
1852 p[25] = vert0tet[1];
1853 p[26] = vert0tet[2];
1860 p[33] = vert0tet[0];
1861 p[34] = vert0tet[1];
1862 p[35] = vert0tet[2];
1869 p[42] = vert0tet[0];
1870 p[43] = vert0tet[1];
1871 p[44] = vert0tet[2];
1878 p[51] = vert0tet[0];
1879 p[52] = vert0tet[1];
1880 p[53] = vert0tet[2];
1889 p[60] = vert1tet[0];
1890 p[61] = vert1tet[1];
1891 p[62] = vert1tet[2];
1898 p[69] = vert1tet[0];
1899 p[70] = vert1tet[1];
1900 p[71] = vert1tet[2];
1907 p[78] = vert1tet[0];
1908 p[79] = vert1tet[1];
1909 p[80] = vert1tet[2];
1916 p[87] = vert1tet[0];
1917 p[88] = vert1tet[1];
1918 p[89] = vert1tet[2];
1925 p[96] = vert1tet[0];
1926 p[97] = vert1tet[1];
1927 p[98] = vert1tet[2];
1931 p[102] = vert1t1[0];
1932 p[103] = vert1t1[1];
1933 p[104] = vert1t1[2];
1934 p[105] = vert1tet[0];
1935 p[106] = vert1tet[1];
1936 p[107] = vert1tet[2];
1942 p[111] = vert2t0[0];
1943 p[112] = vert2t0[1];
1944 p[113] = vert2t0[2];
1945 p[114] = vert2tet[0];
1946 p[115] = vert2tet[1];
1947 p[116] = vert2tet[2];
1951 p[120] = vert2t1[0];
1952 p[121] = vert2t1[1];
1953 p[122] = vert2t1[2];
1954 p[123] = vert2tet[0];
1955 p[124] = vert2tet[1];
1956 p[125] = vert2tet[2];
1960 p[129] = vert2t0[0];
1961 p[130] = vert2t0[1];
1962 p[131] = vert2t0[2];
1963 p[132] = vert2tet[0];
1964 p[133] = vert2tet[1];
1965 p[134] = vert2tet[2];
1969 p[138] = vert2t2[0];
1970 p[139] = vert2t2[1];
1971 p[140] = vert2t2[2];
1972 p[141] = vert2tet[0];
1973 p[142] = vert2tet[1];
1974 p[143] = vert2tet[2];
1978 p[147] = vert2t2[0];
1979 p[148] = vert2t2[1];
1980 p[149] = vert2t2[2];
1981 p[150] = vert2tet[0];
1982 p[151] = vert2tet[1];
1983 p[152] = vert2tet[2];
1987 p[156] = vert2t1[0];
1988 p[157] = vert2t1[1];
1989 p[158] = vert2t1[2];
1990 p[159] = vert2tet[0];
1991 p[160] = vert2tet[1];
1992 p[161] = vert2tet[2];
1998 p[165] = vert3t0[0];
1999 p[166] = vert3t0[1];
2000 p[167] = vert3t0[2];
2001 p[168] = vert3tet[0];
2002 p[169] = vert3tet[1];
2003 p[170] = vert3tet[2];
2007 p[174] = vert3t1[0];
2008 p[175] = vert3t1[1];
2009 p[176] = vert3t1[2];
2010 p[177] = vert3tet[0];
2011 p[178] = vert3tet[1];
2012 p[179] = vert3tet[2];
2016 p[183] = vert3t0[0];
2017 p[184] = vert3t0[1];
2018 p[185] = vert3t0[2];
2019 p[186] = vert3tet[0];
2020 p[187] = vert3tet[1];
2021 p[188] = vert3tet[2];
2025 p[192] = vert3t2[0];
2026 p[193] = vert3t2[1];
2027 p[194] = vert3t2[2];
2028 p[195] = vert3tet[0];
2029 p[196] = vert3tet[1];
2030 p[197] = vert3tet[2];
2034 p[201] = vert3t2[0];
2035 p[202] = vert3t2[1];
2036 p[203] = vert3t2[2];
2037 p[204] = vert3tet[0];
2038 p[205] = vert3tet[1];
2039 p[206] = vert3tet[2];
2043 p[210] = vert3t1[0];
2044 p[211] = vert3t1[1];
2045 p[212] = vert3t1[2];
2046 p[213] = vert3tet[0];
2047 p[214] = vert3tet[1];
2048 p[215] = vert3tet[2];
2051 c[0] = numThreadIndex + 0;
2052 c[1] = numThreadIndex + 1;
2053 c[2] = numThreadIndex + 2;
2054 c[3] = numThreadIndex + 3;
2055 c[4] = numThreadIndex + 4;
2056 c[5] = numThreadIndex + 5;
2057 c[6] = numThreadIndex + 6;
2058 c[7] = numThreadIndex + 7;
2059 c[8] = numThreadIndex + 8;
2060 c[9] = numThreadIndex + 9;
2061 c[10] = numThreadIndex + 10;
2062 c[11] = numThreadIndex + 11;
2063 c[12] = numThreadIndex + 12;
2064 c[13] = numThreadIndex + 13;
2065 c[14] = numThreadIndex + 14;
2066 c[15] = numThreadIndex + 15;
2067 c[16] = numThreadIndex + 16;
2068 c[17] = numThreadIndex + 17;
2069 c[18] = numThreadIndex + 18;
2070 c[19] = numThreadIndex + 19;
2071 c[20] = numThreadIndex + 20;
2072 c[21] = numThreadIndex + 21;
2073 c[22] = numThreadIndex + 22;
2074 c[23] = numThreadIndex + 23;
2075 c[24] = numThreadIndex + 24;
2076 c[25] = numThreadIndex + 25;
2077 c[26] = numThreadIndex + 26;
2078 c[27] = numThreadIndex + 27;
2079 c[28] = numThreadIndex + 28;
2080 c[29] = numThreadIndex + 29;
2081 c[30] = numThreadIndex + 30;
2082 c[31] = numThreadIndex + 31;
2083 c[32] = numThreadIndex + 32;
2084 c[33] = numThreadIndex + 33;
2085 c[34] = numThreadIndex + 34;
2086 c[35] = numThreadIndex + 35;
2087 c[36] = numThreadIndex + 36;
2088 c[37] = numThreadIndex + 37;
2089 c[38] = numThreadIndex + 38;
2090 c[39] = numThreadIndex + 39;
2091 c[40] = numThreadIndex + 40;
2092 c[41] = numThreadIndex + 41;
2093 c[42] = numThreadIndex + 42;
2094 c[43] = numThreadIndex + 43;
2095 c[44] = numThreadIndex + 44;
2096 c[45] = numThreadIndex + 45;
2097 c[46] = numThreadIndex + 46;
2098 c[47] = numThreadIndex + 47;
2099 c[48] = numThreadIndex + 48;
2100 c[49] = numThreadIndex + 49;
2101 c[50] = numThreadIndex + 50;
2102 c[51] = numThreadIndex + 51;
2103 c[52] = numThreadIndex + 52;
2104 c[53] = numThreadIndex + 53;
2105 c[54] = numThreadIndex + 54;
2106 c[55] = numThreadIndex + 55;
2107 c[56] = numThreadIndex + 56;
2108 c[57] = numThreadIndex + 57;
2109 c[58] = numThreadIndex + 58;
2110 c[59] = numThreadIndex + 59;
2111 c[60] = numThreadIndex + 60;
2112 c[61] = numThreadIndex + 61;
2113 c[62] = numThreadIndex + 62;
2114 c[63] = numThreadIndex + 63;
2115 c[64] = numThreadIndex + 64;
2116 c[65] = numThreadIndex + 65;
2117 c[66] = numThreadIndex + 66;
2118 c[67] = numThreadIndex + 67;
2119 c[68] = numThreadIndex + 68;
2120 c[69] = numThreadIndex + 69;
2121 c[70] = numThreadIndex + 70;
2122 c[71] = numThreadIndex + 71;
2124 numThreadIndex += 72;
2153#ifdef TTK_ENABLE_OPENMP
2158 this->threadNumber_);