16fc05355SMatthew G. Knepley static char help[] = "Tests for creation of cohesive meshes by transforms\n\n"; 26fc05355SMatthew G. Knepley 36fc05355SMatthew G. Knepley #include <petscdmplex.h> 46fc05355SMatthew G. Knepley #include <petscsf.h> 56fc05355SMatthew G. Knepley 66fc05355SMatthew G. Knepley #include <petsc/private/dmpleximpl.h> 76fc05355SMatthew G. Knepley 86fc05355SMatthew G. Knepley PETSC_EXTERN char tri_2_cv[]; 96fc05355SMatthew G. Knepley char tri_2_cv[] = "\ 106fc05355SMatthew G. Knepley 2 4 6 3 1\n\ 116fc05355SMatthew G. Knepley 0 2 1\n\ 126fc05355SMatthew G. Knepley 1 2 3\n\ 136fc05355SMatthew G. Knepley 4 1 5\n\ 146fc05355SMatthew G. Knepley 4 0 1\n\ 156fc05355SMatthew G. Knepley -1.0 0.0 0.0 1\n\ 166fc05355SMatthew G. Knepley 0.0 1.0 0.0 -1\n\ 176fc05355SMatthew G. Knepley 0.0 -1.0 0.0 1\n\ 186fc05355SMatthew G. Knepley 1.0 0.0 0.0 -1\n\ 196fc05355SMatthew G. Knepley -2.0 1.0 0.0 1\n\ 206fc05355SMatthew G. Knepley -1.0 2.0 0.0 -1"; 216fc05355SMatthew G. Knepley 226fc05355SMatthew G. Knepley /* List of test meshes 236fc05355SMatthew G. Knepley 246fc05355SMatthew G. Knepley Test tri_0: triangle 256fc05355SMatthew G. Knepley 266fc05355SMatthew G. Knepley 4-10--5 8-16--7-14--4 276fc05355SMatthew G. Knepley |\ 1 | |\ \ 1 | 286fc05355SMatthew G. Knepley | \ | | \ \ | 296fc05355SMatthew G. Knepley 6 8 9 -> 9 12 2 11 13 306fc05355SMatthew G. Knepley | \ | | \ \ | 316fc05355SMatthew G. Knepley | 0 \| | 0 \ \| 326fc05355SMatthew G. Knepley 2--7--3 3-10--6-15--5 336fc05355SMatthew G. Knepley 346fc05355SMatthew G. Knepley Test tri_1: triangle, not tensor 356fc05355SMatthew G. Knepley 366fc05355SMatthew G. Knepley 4-10--5 8-10--7-16--4 376fc05355SMatthew G. Knepley |\ 1 | |\ \ 1 | 386fc05355SMatthew G. Knepley | \ | | \ \ | 396fc05355SMatthew G. Knepley 6 8 9 -> 11 14 2 13 15 406fc05355SMatthew G. Knepley | \ | | \ \ | 416fc05355SMatthew G. Knepley | 0 \| | 0 \ \| 426fc05355SMatthew G. Knepley 2--7--3 3-12--6--9--5 436fc05355SMatthew G. Knepley 446fc05355SMatthew G. Knepley Test tri_2: 4 triangles, non-oriented surface 456fc05355SMatthew G. Knepley 466fc05355SMatthew G. Knepley 9 476fc05355SMatthew G. Knepley / \ 486fc05355SMatthew G. Knepley / \ 496fc05355SMatthew G. Knepley 17 2 16 506fc05355SMatthew G. Knepley / \ 516fc05355SMatthew G. Knepley / \ 526fc05355SMatthew G. Knepley 8-----15----5 536fc05355SMatthew G. Knepley \ /|\ 546fc05355SMatthew G. Knepley \ / | \ 556fc05355SMatthew G. Knepley 18 3 12 | 14 566fc05355SMatthew G. Knepley \ / | \ 576fc05355SMatthew G. Knepley \ / | \ 586fc05355SMatthew G. Knepley 4 0 11 1 7 596fc05355SMatthew G. Knepley \ | / 606fc05355SMatthew G. Knepley \ | / 616fc05355SMatthew G. Knepley 10 | 13 626fc05355SMatthew G. Knepley \ | / 636fc05355SMatthew G. Knepley \|/ 646fc05355SMatthew G. Knepley 6 656fc05355SMatthew G. Knepley becomes 666fc05355SMatthew G. Knepley 8 676fc05355SMatthew G. Knepley / \ 686fc05355SMatthew G. Knepley / \ 696fc05355SMatthew G. Knepley / \ 706fc05355SMatthew G. Knepley 25 2 24 716fc05355SMatthew G. Knepley / \ 726fc05355SMatthew G. Knepley / \ 736fc05355SMatthew G. Knepley 13-----18------9 746fc05355SMatthew G. Knepley 28 | 5 26/ \ 756fc05355SMatthew G. Knepley 14----19----10 \ 766fc05355SMatthew G. Knepley \ /| |\ 776fc05355SMatthew G. Knepley \ / | | \ 786fc05355SMatthew G. Knepley 21 3 20 | | 23 796fc05355SMatthew G. Knepley \ / | | \ 806fc05355SMatthew G. Knepley \ / | | \ 816fc05355SMatthew G. Knepley 6 0 17 4 16 1 7 826fc05355SMatthew G. Knepley \ | | / 836fc05355SMatthew G. Knepley \ | | / 846fc05355SMatthew G. Knepley 15 | | 22 856fc05355SMatthew G. Knepley \ | | / 866fc05355SMatthew G. Knepley \| |/ 876fc05355SMatthew G. Knepley 12---11 886fc05355SMatthew G. Knepley 27 896fc05355SMatthew G. Knepley 906fc05355SMatthew G. Knepley Test tri_3: tri_2, in parallel 916fc05355SMatthew G. Knepley 926fc05355SMatthew G. Knepley 6 936fc05355SMatthew G. Knepley / \ 946fc05355SMatthew G. Knepley / \ 956fc05355SMatthew G. Knepley / \ 966fc05355SMatthew G. Knepley 12 1 11 976fc05355SMatthew G. Knepley / \ 986fc05355SMatthew G. Knepley / \ 996fc05355SMatthew G. Knepley 5-----10------2 1006fc05355SMatthew G. Knepley \ 1016fc05355SMatthew G. Knepley 5-----9-----3 2 1026fc05355SMatthew G. Knepley \ /| |\ 1036fc05355SMatthew G. Knepley \ / | | \ 1046fc05355SMatthew G. Knepley 10 1 8 | | 9 1056fc05355SMatthew G. Knepley \ / | | \ 1066fc05355SMatthew G. Knepley \ / | | \ 1076fc05355SMatthew G. Knepley 2 0 7 7 0 4 1086fc05355SMatthew G. Knepley \ | | / 1096fc05355SMatthew G. Knepley \ | | / 1106fc05355SMatthew G. Knepley 6 | | 8 1116fc05355SMatthew G. Knepley \ | | / 1126fc05355SMatthew G. Knepley \| |/ 1136fc05355SMatthew G. Knepley 4 3 1146fc05355SMatthew G. Knepley becomes 1156fc05355SMatthew G. Knepley 11 1166fc05355SMatthew G. Knepley / \ 1176fc05355SMatthew G. Knepley / \ 1186fc05355SMatthew G. Knepley / \ 1196fc05355SMatthew G. Knepley 19 1 18 1206fc05355SMatthew G. Knepley / \ 1216fc05355SMatthew G. Knepley / \ 1226fc05355SMatthew G. Knepley 8-----14------4 1236fc05355SMatthew G. Knepley 22 \ 3 | 1246fc05355SMatthew G. Knepley 9------15 |\ 1256fc05355SMatthew G. Knepley \ | \ 1266fc05355SMatthew G. Knepley 9------14-----5 \ 20 | 1276fc05355SMatthew G. Knepley 20\ 3 18/ \ \/ | 1286fc05355SMatthew G. Knepley 10----15-----6 | 5 | 1296fc05355SMatthew G. Knepley \ /| | | |\ 1306fc05355SMatthew G. Knepley \ / | | | | \ 1316fc05355SMatthew G. Knepley 17 1 16 | | | | 17 1326fc05355SMatthew G. Knepley \ / | 2 | | 2 | \ 1336fc05355SMatthew G. Knepley \ / | | | | \ 1346fc05355SMatthew G. Knepley 4 0 13 12 13 12 0 10 1356fc05355SMatthew G. Knepley \ | | | | / 1366fc05355SMatthew G. Knepley \ | | | | / 1376fc05355SMatthew G. Knepley 11 | | | | 16 1386fc05355SMatthew G. Knepley \ | | | | / 1396fc05355SMatthew G. Knepley \| | | |/ 1406fc05355SMatthew G. Knepley 8---7 7---6 1416fc05355SMatthew G. Knepley 19 21 1426fc05355SMatthew G. Knepley 1436fc05355SMatthew G. Knepley Test quad_0: quadrilateral 1446fc05355SMatthew G. Knepley 1456fc05355SMatthew G. Knepley 5-10--6-11--7 5-12-10-20--9-14--6 1466fc05355SMatthew G. Knepley | | | | | | | 1476fc05355SMatthew G. Knepley 12 0 13 1 14 --> 15 0 18 2 17 1 16 1486fc05355SMatthew G. Knepley | | | | | | | 1496fc05355SMatthew G. Knepley 2--8--3--9--4 3-11--8-19--7-13--4 1506fc05355SMatthew G. Knepley 1516fc05355SMatthew G. Knepley Test quad_1: quadrilateral, not tensor 1526fc05355SMatthew G. Knepley 1536fc05355SMatthew G. Knepley 5-10--6-11--7 5-14-10-12--9-16--6 1546fc05355SMatthew G. Knepley | | | | | | | 1556fc05355SMatthew G. Knepley 12 0 13 1 14 --> 17 0 20 2 19 1 18 1566fc05355SMatthew G. Knepley | | | | | | | 1576fc05355SMatthew G. Knepley 2--8--3--9--4 3-13--8-11--7-15--4 1586fc05355SMatthew G. Knepley 1596fc05355SMatthew G. Knepley Test quad_2: quadrilateral, 2 processes 1606fc05355SMatthew G. Knepley 1616fc05355SMatthew G. Knepley 3--6--4 3--6--4 3--9--7-14--6 5-14--4--9--7 1626fc05355SMatthew G. Knepley | | | | | | | | | | 1636fc05355SMatthew G. Knepley 7 0 8 7 0 8 --> 10 0 12 1 11 12 1 11 0 10 1646fc05355SMatthew G. Knepley | | | | | | | | | | 1656fc05355SMatthew G. Knepley 1--5--2 1--5--2 2--8--5-13--4 3-13--2--8--6 1666fc05355SMatthew G. Knepley 1676fc05355SMatthew G. Knepley Test quad_3: quadrilateral, 4 processes, non-oriented surface 1686fc05355SMatthew G. Knepley 1696fc05355SMatthew G. Knepley 3--6--4 3--6--4 3--9--7-14--6 5-14--4--9--7 1706fc05355SMatthew G. Knepley | | | | | | | | | | 1716fc05355SMatthew G. Knepley 7 0 8 7 0 8 10 0 12 1 11 12 1 11 0 10 1726fc05355SMatthew G. Knepley | | | | | | | | | | 1736fc05355SMatthew G. Knepley 1--5--2 1--5--2 2--8--5-13--4 3-13--2--8--6 1746fc05355SMatthew G. Knepley --> 1756fc05355SMatthew G. Knepley 3--6--4 3--6--4 3--9--7-14--6 5-14--4--9--7 1766fc05355SMatthew G. Knepley | | | | | | | | | | 1776fc05355SMatthew G. Knepley 7 0 8 7 0 8 10 0 12 1 11 12 1 11 0 10 1786fc05355SMatthew G. Knepley | | | | | | | | | | 1796fc05355SMatthew G. Knepley 1--5--2 1--5--2 2--8--5-13--4 3-13--2--8--6 1806fc05355SMatthew G. Knepley 1816fc05355SMatthew G. Knepley Test quad_4: embedded fault 1826fc05355SMatthew G. Knepley 1836fc05355SMatthew G. Knepley 14-24-15-25-16-26--17 1846fc05355SMatthew G. Knepley | | | | 1856fc05355SMatthew G. Knepley 28 3 30 4 32 5 34 1866fc05355SMatthew G. Knepley | | | | 1876fc05355SMatthew G. Knepley 10-21-11-22-12-23--13 1886fc05355SMatthew G. Knepley | | | | 1896fc05355SMatthew G. Knepley 27 0 29 1 31 2 33 1906fc05355SMatthew G. Knepley | | | | 1916fc05355SMatthew G. Knepley 6-18--7-19--8-20--9 1926fc05355SMatthew G. Knepley 1936fc05355SMatthew G. Knepley becomes 1946fc05355SMatthew G. Knepley 1956fc05355SMatthew G. Knepley 13-26-14-27-15-28--16 1966fc05355SMatthew G. Knepley | | | | 1976fc05355SMatthew G. Knepley 30 3 32 4 39 5 40 1986fc05355SMatthew G. Knepley | | | | 1996fc05355SMatthew G. Knepley 12-25-17-36-19-38--21 2006fc05355SMatthew G. Knepley | | | 2016fc05355SMatthew G. Knepley 41 6 42 7 43 2026fc05355SMatthew G. Knepley | | | 2036fc05355SMatthew G. Knepley 12-25-17-35-18-37--20 2046fc05355SMatthew G. Knepley | | | | 2056fc05355SMatthew G. Knepley 29 0 31 1 33 2 34 2066fc05355SMatthew G. Knepley | | | | 2076fc05355SMatthew G. Knepley 8-22--9-23-10-24--11 2086fc05355SMatthew G. Knepley 2096fc05355SMatthew G. Knepley Test quad_5: two faults 2106fc05355SMatthew G. Knepley 2116fc05355SMatthew G. Knepley 14-24-15-25-16-26--17 2126fc05355SMatthew G. Knepley | | | | 2136fc05355SMatthew G. Knepley 28 3 30 4 32 5 34 2146fc05355SMatthew G. Knepley | | | | 2156fc05355SMatthew G. Knepley 10-21-11-22-12-23--13 2166fc05355SMatthew G. Knepley | | | | 2176fc05355SMatthew G. Knepley 27 0 29 1 31 2 33 2186fc05355SMatthew G. Knepley | | | | 2196fc05355SMatthew G. Knepley 6-18--7-19--8-20--9 2206fc05355SMatthew G. Knepley 2216fc05355SMatthew G. Knepley becomes 2226fc05355SMatthew G. Knepley 2236fc05355SMatthew G. Knepley 12-26-13-27-14-28--15 2246fc05355SMatthew G. Knepley | | | | 2256fc05355SMatthew G. Knepley 37 4 31 3 33 5 40 2266fc05355SMatthew G. Knepley | | | | 2276fc05355SMatthew G. Knepley 17-36-18-25-19-39--21 2286fc05355SMatthew G. Knepley | | | | 2296fc05355SMatthew G. Knepley 43 6 44 41 7 42 2306fc05355SMatthew G. Knepley | | | | 2316fc05355SMatthew G. Knepley 16-35-18-25-19-38--20 2326fc05355SMatthew G. Knepley | | | | 2336fc05355SMatthew G. Knepley 29 0 30 1 32 2 34 2346fc05355SMatthew G. Knepley | | | | 2356fc05355SMatthew G. Knepley 8-22--9-23-10-24--11 2366fc05355SMatthew G. Knepley 2376fc05355SMatthew G. Knepley Test quad_6: T-junction 2386fc05355SMatthew G. Knepley 2396fc05355SMatthew G. Knepley 14-24-15-25-16-26--17 2406fc05355SMatthew G. Knepley | | | | 2416fc05355SMatthew G. Knepley 28 3 30 4 32 5 34 2426fc05355SMatthew G. Knepley | | | | 2436fc05355SMatthew G. Knepley 10-21-11-22-12-23--13 2446fc05355SMatthew G. Knepley | | | | 2456fc05355SMatthew G. Knepley 27 0 29 1 31 2 33 2466fc05355SMatthew G. Knepley | | | | 2476fc05355SMatthew G. Knepley 6-18--7-19--8-20--9 2486fc05355SMatthew G. Knepley 2496fc05355SMatthew G. Knepley becomes 2506fc05355SMatthew G. Knepley 2516fc05355SMatthew G. Knepley 13-26-14-27-15-28--16 2526fc05355SMatthew G. Knepley | | | | 2536fc05355SMatthew G. Knepley 30 3 32 4 39 5 40 2546fc05355SMatthew G. Knepley | | | | 2556fc05355SMatthew G. Knepley 12-25-17-36-19-38--21 2566fc05355SMatthew G. Knepley | | | 2576fc05355SMatthew G. Knepley 41 6 42 7 43 2586fc05355SMatthew G. Knepley | | | 2596fc05355SMatthew G. Knepley 12-25-17-35-18-37--20 2606fc05355SMatthew G. Knepley | | | | 2616fc05355SMatthew G. Knepley 29 0 31 1 33 2 34 2626fc05355SMatthew G. Knepley | | | | 2636fc05355SMatthew G. Knepley 8-22--9-23-10-24--11 2646fc05355SMatthew G. Knepley 2656fc05355SMatthew G. Knepley becomes 2666fc05355SMatthew G. Knepley 2676fc05355SMatthew G. Knepley 14-28-15-41-21-44--20-29-16 2686fc05355SMatthew G. Knepley | | | | | 2696fc05355SMatthew G. Knepley 31 3 33 5 43 8 42 4 40 2706fc05355SMatthew G. Knepley | | | | | 2716fc05355SMatthew G. Knepley 13-27-17-37-23-46--23-39-19 2726fc05355SMatthew G. Knepley | | | | 2736fc05355SMatthew G. Knepley 47 6 48 48 7 49 2746fc05355SMatthew G. Knepley | | | | 2756fc05355SMatthew G. Knepley 13-27-17-36-22-45--22-38-18 2766fc05355SMatthew G. Knepley | | | | | 2776fc05355SMatthew G. Knepley 30 0 32 1 34 34 2 35 2786fc05355SMatthew G. Knepley | | | | | 2796fc05355SMatthew G. Knepley 9-24-10-25-11-----11-26-12 2806fc05355SMatthew G. Knepley 281d926f305SMatthew G. Knepley Test tet_0: Two tets sharing a face 282d926f305SMatthew G. Knepley 283d926f305SMatthew G. Knepley cell 5 _______ cell 284d926f305SMatthew G. Knepley 0 / | \ \ 1 285d926f305SMatthew G. Knepley 19 | 16 20 286d926f305SMatthew G. Knepley / 15 \ \ 287d926f305SMatthew G. Knepley 2-17------4--22--6 288d926f305SMatthew G. Knepley \ | / / 289d926f305SMatthew G. Knepley 18 | 14 21 290d926f305SMatthew G. Knepley \ | / / 291d926f305SMatthew G. Knepley 3------- 292d926f305SMatthew G. Knepley 293d926f305SMatthew G. Knepley becomes 294d926f305SMatthew G. Knepley 295d926f305SMatthew G. Knepley cell 10 ___36____9______ cell 296d926f305SMatthew G. Knepley 0 / | \ |\ \ 1 297d926f305SMatthew G. Knepley 29 | 27 | 26 31 298d926f305SMatthew G. Knepley / 25 \ 24 \ \ 299d926f305SMatthew G. Knepley 3-28------8--35-----7--33--4 300d926f305SMatthew G. Knepley \ | / | / / 301d926f305SMatthew G. Knepley 30 | 23 | 22 32 302d926f305SMatthew G. Knepley \ | / |/ / 303d926f305SMatthew G. Knepley 6----34----5------ 304d926f305SMatthew G. Knepley cell 2 305d926f305SMatthew G. Knepley 306d926f305SMatthew G. Knepley Test tet_1: Two tets sharing a face in parallel 307d926f305SMatthew G. Knepley 308d926f305SMatthew G. Knepley cell 4 3______ cell 309d926f305SMatthew G. Knepley 0 / | \ |\ \ 0 310d926f305SMatthew G. Knepley 14 | 11 | 11 12 311d926f305SMatthew G. Knepley / 10 \ 10 \ \ 312d926f305SMatthew G. Knepley 1-12------3 | 2--14--4 313d926f305SMatthew G. Knepley \ | / | / / 314d926f305SMatthew G. Knepley 13 | 9 | 9 13 315d926f305SMatthew G. Knepley \ | / |/ / 316d926f305SMatthew G. Knepley 2 1------ 317d926f305SMatthew G. Knepley 318d926f305SMatthew G. Knepley becomes 319d926f305SMatthew G. Knepley cell 1 cell 1 320d926f305SMatthew G. Knepley cell 8---28---7 7---28---6______ cell 321d926f305SMatthew G. Knepley 0 / | \ |\ |\ |\ \ 0 322d926f305SMatthew G. Knepley 24 | 22 | 21 | 22 | 21 23 323d926f305SMatthew G. Knepley / 20 \ | \ | \ 19 \ \ 324d926f305SMatthew G. Knepley 2-23------6---27---5 20 5---27---4--25--8 325d926f305SMatthew G. Knepley \ | / 19 / | / | / / 326d926f305SMatthew G. Knepley 25 | 18 | 17 | 18 | 17 24 327d926f305SMatthew G. Knepley \ | / |/ |/ |/ / 328d926f305SMatthew G. Knepley 4---26---3 3---26---2------ 329d926f305SMatthew G. Knepley 330d926f305SMatthew G. Knepley Test hex_0: Two hexes sharing a face 331d926f305SMatthew G. Knepley 332d926f305SMatthew G. Knepley cell 11-----31-----12-----32------13 cell 333d926f305SMatthew G. Knepley 0 /| /| /| 1 334d926f305SMatthew G. Knepley 36 | 22 37| 24 38| 335d926f305SMatthew G. Knepley / | / | / | 336d926f305SMatthew G. Knepley 8-----29------9-----30------10 | 337d926f305SMatthew G. Knepley | | 18 | | 20 | | 338d926f305SMatthew G. Knepley | 42 | 43 | 44 339d926f305SMatthew G. Knepley |14 | |15 | |16 | 340d926f305SMatthew G. Knepley 39 | 17 40 | 19 41 | 341d926f305SMatthew G. Knepley | 5-----27--|---6-----28--|---7 342d926f305SMatthew G. Knepley | / | / | / 343d926f305SMatthew G. Knepley | 33 21 | 34 23 | 35 344d926f305SMatthew G. Knepley |/ |/ |/ 345d926f305SMatthew G. Knepley 2-----25------3-----26------4 346d926f305SMatthew G. Knepley 347d926f305SMatthew G. Knepley becomes 348d926f305SMatthew G. Knepley 349d926f305SMatthew G. Knepley cell 2 350d926f305SMatthew G. Knepley cell 9-----38-----18-----62------17----42------10 cell 351d926f305SMatthew G. Knepley 0 /| /| /| /| 1 352d926f305SMatthew G. Knepley 45 | 30 54| 32 53| 24 46| 353d926f305SMatthew G. Knepley / | / | / | / | 354d926f305SMatthew G. Knepley 7-----37-----16-----61------15--|-41------8 | 355d926f305SMatthew G. Knepley | | 28 | | | | 22 | | 356d926f305SMatthew G. Knepley | 49 | 58 | 57 | 50 357d926f305SMatthew G. Knepley |19 | |26 | |25 | |20 | 358d926f305SMatthew G. Knepley 47 | 27 56 | 55 | 21 48 | 359d926f305SMatthew G. Knepley | 5-----36--|--14-----60--|---13----40--|---6 360d926f305SMatthew G. Knepley | / | / | / | / 361d926f305SMatthew G. Knepley | 43 29 | 52 31 | 51 23 | 44 362d926f305SMatthew G. Knepley |/ |/ |/ |/ 363d926f305SMatthew G. Knepley 3-----35-----12-----59------11----39------4 364d926f305SMatthew G. Knepley 365d926f305SMatthew G. Knepley Test hex_1: Two hexes sharing a face, in parallel 366d926f305SMatthew G. Knepley 367d926f305SMatthew G. Knepley cell 7-----18------8 7-----18------8 cell 368d926f305SMatthew G. Knepley 0 /| /| /| /| 0 369d926f305SMatthew G. Knepley 21 | 14 22| 21| 14 22| 370d926f305SMatthew G. Knepley / | / | / | / | 371d926f305SMatthew G. Knepley 5-----17------6 | 5---|-17------6 | 372d926f305SMatthew G. Knepley | | 12 | | | | 12 | | 373d926f305SMatthew G. Knepley | 25 | 26 | 25 | 26 374d926f305SMatthew G. Knepley | 9 | |10 | | 9 | |10 | 375d926f305SMatthew G. Knepley 23 | 11 24 | 23 | 11 24 | 376d926f305SMatthew G. Knepley | 3-----16--|---4 | 3-----16--|---4 377d926f305SMatthew G. Knepley | / | / | / | / 378d926f305SMatthew G. Knepley | 19 13 | 20 | 19 13 | 20 379d926f305SMatthew G. Knepley |/ |/ |/ |/ 380d926f305SMatthew G. Knepley 1-----15------2 1-----15------2 381d926f305SMatthew G. Knepley 382d926f305SMatthew G. Knepley becomes 383d926f305SMatthew G. Knepley cell 1 cell 1 384d926f305SMatthew G. Knepley cell 5-----28-----13-----44-----12 9-----44-----8-----28------13 cell 385d926f305SMatthew G. Knepley 0 /| /| /| /| /| /| 0 386d926f305SMatthew G. Knepley 30 | 20 36| 22 35| 36| 22 35| 20 30| 387d926f305SMatthew G. Knepley / | / | / | / | / | / | 388d926f305SMatthew G. Knepley 4-----27-----11-----43-----10 | 7-----43-----6-----27------12 | 389d926f305SMatthew G. Knepley | | 18 | | | | | | | | 18 | | 390d926f305SMatthew G. Knepley | 32 | 40 | 39 | 40 | 39 | 32 391d926f305SMatthew G. Knepley |14 | |16 | | 15| |15 | |14 | |16 | 392d926f305SMatthew G. Knepley 31 | 17 38 | 37 | 38 | 37 | 17 31 | 393d926f305SMatthew G. Knepley | 3-----26--|---9-----42-|---8 | 5----42--|---4-----26--|---11 394d926f305SMatthew G. Knepley | / | / | / | / | / | / 395d926f305SMatthew G. Knepley | 29 19 | 34 21 | 33 | 34 21 | 33 19 | 29 396d926f305SMatthew G. Knepley |/ |/ |/ |/ |/ |/ 397d926f305SMatthew G. Knepley 2-----25------7-----41-----6 3-----41-----2-----25------10 398d926f305SMatthew G. Knepley 399d926f305SMatthew G. Knepley Test hex_2: hexahedra, 4 processes, non-oriented surface 400d926f305SMatthew G. Knepley 401d926f305SMatthew G. Knepley cell 0 cell 0 402d926f305SMatthew G. Knepley 7-----18------8 7-----18------8 403d926f305SMatthew G. Knepley /| /| /| /| 404d926f305SMatthew G. Knepley 21 | 14 22| 21 | 14 22| 405d926f305SMatthew G. Knepley / | / | / | / | 406d926f305SMatthew G. Knepley 5-----17------6 | 5-----17------6 | 407d926f305SMatthew G. Knepley | | 12 | | | | 12 | | 408d926f305SMatthew G. Knepley | 25 | 26 | 25 | 26 409d926f305SMatthew G. Knepley |9 | |10 | |9 | |10 | 410d926f305SMatthew G. Knepley 23 | 11 24 | 23 | 11 24 | 411d926f305SMatthew G. Knepley | 3-----16--|---4 | 3-----16--|---4 412d926f305SMatthew G. Knepley | / | / | / | / 413d926f305SMatthew G. Knepley | 19 13 | 20 | 19 13 | 20 414d926f305SMatthew G. Knepley |/ |/ |/ |/ 415d926f305SMatthew G. Knepley 1-----15------2 1-----15------2 416d926f305SMatthew G. Knepley 417d926f305SMatthew G. Knepley 7-----18------8 7-----18------8 418d926f305SMatthew G. Knepley /| /| /| /| 419d926f305SMatthew G. Knepley 21 | 14 22| 21 | 14 22| 420d926f305SMatthew G. Knepley / | / | / | / | 421d926f305SMatthew G. Knepley 5-----17------6 | 5-----17------6 | 422d926f305SMatthew G. Knepley | | 12 | | | | 12 | | 423d926f305SMatthew G. Knepley | 25 | 26 | 25 | 26 424d926f305SMatthew G. Knepley |9 | |10 | |9 | |10 | 425d926f305SMatthew G. Knepley 23 | 11 24 | 23 | 11 24 | 426d926f305SMatthew G. Knepley | 3-----16--|---4 | 3-----16--|---4 427d926f305SMatthew G. Knepley | / | / | / | / 428d926f305SMatthew G. Knepley | 19 13 | 20 | 19 13 | 20 429d926f305SMatthew G. Knepley |/ |/ |/ |/ 430d926f305SMatthew G. Knepley 1-----15------2 1-----15------2 431d926f305SMatthew G. Knepley cell 0 cell 0 432d926f305SMatthew G. Knepley 433d926f305SMatthew G. Knepley becomes 434d926f305SMatthew G. Knepley 435d926f305SMatthew G. Knepley cell 0 cell 1 cell 1 cell 0 436d926f305SMatthew G. Knepley 5-----28------13----44------12 9-----44------8-----28------13 437d926f305SMatthew G. Knepley /| /| /| /| /| /| 438d926f305SMatthew G. Knepley 30 | 20 36| 22 35| 36| 22 35 | 20 30| 439d926f305SMatthew G. Knepley / | / | / | / | / | / | 440d926f305SMatthew G. Knepley 4-----27------11----43------10 | 7-----43------6-----27------12 | 441d926f305SMatthew G. Knepley | | 18 | | | | | | | | 18 | | 442d926f305SMatthew G. Knepley | 32 | 40 | 39 | 40 | 39 | 32 443d926f305SMatthew G. Knepley |14 | |16 | |15 | |15 | |14 | |16 | 444d926f305SMatthew G. Knepley 31 | 17 38 | 37 | 38 | 37 | 17 31 | 445d926f305SMatthew G. Knepley | 3-----26--|---9-----42--|---8 | 5-----42--|---4-----26--|---11 446d926f305SMatthew G. Knepley | / | / | / | / | / | / 447d926f305SMatthew G. Knepley | 29 19 | 34 21 |33 | 34 21 | 33 19 | 29 448d926f305SMatthew G. Knepley |/ |/ |/ |/ |/ |/ 449d926f305SMatthew G. Knepley 2-----25------7-----41------6 3-----41------2-----25------10 450d926f305SMatthew G. Knepley 451d926f305SMatthew G. Knepley 5-----28------13----44------12 9-----44------8-----28------13 452d926f305SMatthew G. Knepley /| /| /| /| /| /| 453d926f305SMatthew G. Knepley 30 | 20 36| 22 35| 36| 22 35| 20 30| 454d926f305SMatthew G. Knepley / | / | / | / | / | / | 455d926f305SMatthew G. Knepley 4-----27------11----43------10 | 7-----43------6-----27------12 | 456d926f305SMatthew G. Knepley | | 18 | | | | | | | | 18 | | 457d926f305SMatthew G. Knepley | 32 | 40 | 39 | 40 | 39 | 32 458d926f305SMatthew G. Knepley |14 | |16 | |15 | |15 | |14 | |16 | 459d926f305SMatthew G. Knepley 31 | 17 38 | 37 | 38 | 37 | 17 31 | 460d926f305SMatthew G. Knepley | 3-----26--|---9-----42--|---8 | 5-----42--|---4-----26--|---11 461d926f305SMatthew G. Knepley | / | / | / | / | / | / 462d926f305SMatthew G. Knepley | 29 19 | 34 21 |33 | 34 21 | 33 19 | 29 463d926f305SMatthew G. Knepley |/ |/ |/ |/ |/ |/ 464d926f305SMatthew G. Knepley 2-----25------7-----41------6 3-----41------2-----25------10 465d926f305SMatthew G. Knepley cell 0 cell 1 cell 1 cell 0 466d926f305SMatthew G. Knepley 467d926f305SMatthew G. Knepley Test hex_3: T-junction 468d926f305SMatthew G. Knepley 469d926f305SMatthew G. Knepley 19-----52-----20-----53------21 470d926f305SMatthew G. Knepley /| /| /| 471d926f305SMatthew G. Knepley 60 | 38 61| 41 62| 472d926f305SMatthew G. Knepley / | / | / | 473d926f305SMatthew G. Knepley 16-----50-----17-----51------18 | 474d926f305SMatthew G. Knepley | | 33 | | 35 | | 475d926f305SMatthew G. Knepley | 70 | 72 | 74 476d926f305SMatthew G. Knepley |25 | |26 | |27 | 477d926f305SMatthew G. Knepley 64 | 32 66 | 34 68 | 478d926f305SMatthew G. Knepley | 13-----48--|--14-----49--|---15 479d926f305SMatthew G. Knepley | /| | /| | /| 480d926f305SMatthew G. Knepley |57 | 37 | 58| 40 | 59| 481d926f305SMatthew G. Knepley |/ | |/ | |/ | 482d926f305SMatthew G. Knepley 10-----46-----11-----47------12 | 483d926f305SMatthew G. Knepley | | 29 | | 31 | | 484d926f305SMatthew G. Knepley | 69 | 71 | 73 485d926f305SMatthew G. Knepley |22 | |23 | |24 | 486d926f305SMatthew G. Knepley 63 | 28 65 | 30 67 | 487d926f305SMatthew G. Knepley | 7-----44--|---8-----45--|---9 488d926f305SMatthew G. Knepley | / | / | / 489d926f305SMatthew G. Knepley | 54 36 | 55 39 | 56 490d926f305SMatthew G. Knepley |/ |/ |/ 491d926f305SMatthew G. Knepley 4-----42------5-----43------6 492d926f305SMatthew G. Knepley cell 0 cell 1 493d926f305SMatthew G. Knepley 494d926f305SMatthew G. Knepley becomes 495d926f305SMatthew G. Knepley 496d926f305SMatthew G. Knepley 15----102-----28---112----___27-----73------16 497d926f305SMatthew G. Knepley /| /| / / /| 498d926f305SMatthew G. Knepley 77 | 55 104| --- 103 46 78| 499d926f305SMatthew G. Knepley / | / | / / / | 500d926f305SMatthew G. Knepley 13----101-----26---111--/----25-----72------14 | 501d926f305SMatthew G. Knepley | | 54 | | 107 / 43 | | 502d926f305SMatthew G. Knepley | 81 | 108 / 51 / | 82 503d926f305SMatthew G. Knepley |40 | |52 | / 105 |41 | 504d926f305SMatthew G. Knepley 79 | 53 106 |/ / 42 80 | 505d926f305SMatthew G. Knepley | 21-----87--|--31---/-89------23-------/----/ 506d926f305SMatthew G. Knepley | /| | /| / /| / 507d926f305SMatthew G. Knepley |91 | 47 |109|-- 49 93| ----- 508d926f305SMatthew G. Knepley |/ | |/ /| / | / 509d926f305SMatthew G. Knepley 17-----83-----29-----85------19---- 510d926f305SMatthew G. Knepley | | | | | | 511d926f305SMatthew G. Knepley | 120 | 121 | 122 512d926f305SMatthew G. Knepley | | |26 | | | 513d926f305SMatthew G. Knepley 117 | 118 | 119 | 514d926f305SMatthew G. Knepley | 22-----88--|--32-----90--|---24 515d926f305SMatthew G. Knepley | /| | /| | /| 516d926f305SMatthew G. Knepley |92 | 48 |110| 50 | 94| 517d926f305SMatthew G. Knepley |/ | |/ | |/ | 518d926f305SMatthew G. Knepley 18-----84-----30-----86------20 | 519d926f305SMatthew G. Knepley | | 37 | | 39 | | 520d926f305SMatthew G. Knepley | 98 | 99 | 100 521d926f305SMatthew G. Knepley |33 | |34 | |35 | 522d926f305SMatthew G. Knepley 95 | 36 96 | 38 97 | 523d926f305SMatthew G. Knepley | 10-----70--|--11-----71--|---12 524d926f305SMatthew G. Knepley | / | / | / 525d926f305SMatthew G. Knepley | 74 44 | 75 45 | 76 526d926f305SMatthew G. Knepley |/ |/ |/ 527d926f305SMatthew G. Knepley 7-----68------8-----69------9 528d926f305SMatthew G. Knepley cell 0 cell 1 529d926f305SMatthew G. Knepley 530d926f305SMatthew G. Knepley Test hex_4: Two non-intersecting faults 531d926f305SMatthew G. Knepley 532d926f305SMatthew G. Knepley cell 4 cell 5 cell 6 cell 7 533d926f305SMatthew G. Knepley 33-----96-----34-----97-----35-----98-----36-----99------37 534d926f305SMatthew G. Knepley /| /| /| /| /| 535d926f305SMatthew G. Knepley 110| 66 111| 69 112| 72 113| 75 114| 536d926f305SMatthew G. Knepley / | / | / | / | / | 537d926f305SMatthew G. Knepley 28-----92-----29-----93-----30-----94-----31-----95------32 | 538d926f305SMatthew G. Knepley | | 57 | | 59 | | 61 | | 63 | | 539d926f305SMatthew G. Knepley | 126 | 128 | 130 | 132 | 134 540d926f305SMatthew G. Knepley |43 | |44 | |45 | |46 | |47 | 541d926f305SMatthew G. Knepley 116 | 56 118 | 58 120 | 60 122 | 62 124 | 542d926f305SMatthew G. Knepley | 23-----88--|--24-----89--|--25-----90--|--26-----91--|---27 543d926f305SMatthew G. Knepley | /| | /| | /| | /| | /| 544d926f305SMatthew G. Knepley |105| 65 |106| 68 |107| 71 |108| 74 |109| 545d926f305SMatthew G. Knepley |/ | |/ | |/ | |/ | |/ | 546d926f305SMatthew G. Knepley 18-----84-----19-----95-----20-----86-----21-----87------22 | 547d926f305SMatthew G. Knepley | | 49 | | 51 | | 53 | | 55 | | 548d926f305SMatthew G. Knepley | 125 | 127 | 129 | 131 | 133 549d926f305SMatthew G. Knepley |38 | |39 | |40 | |41 | |42 | 550d926f305SMatthew G. Knepley 115 | 48 117 | 50 119 | 52 121 | 54 123 | 551d926f305SMatthew G. Knepley | 13-----80--|--14-----81--|--15-----82--|--16-----83--|---17 552d926f305SMatthew G. Knepley | / | / | / | / | / 553d926f305SMatthew G. Knepley |100 64 |101 67 |102 70 |103 73 |104 554d926f305SMatthew G. Knepley |/ |/ |/ |/ |/ 555d926f305SMatthew G. Knepley 8-----76------9-----77-----10-----78-----11-----79------12 556d926f305SMatthew G. Knepley cell 0 cell 1 cell 2 cell 3 557d926f305SMatthew G. Knepley 558d926f305SMatthew G. Knepley becomes 559d926f305SMatthew G. Knepley 560d926f305SMatthew G. Knepley cell 4 cell 5 cell 7 cell 10 cell 6 561d926f305SMatthew G. Knepley 27-----114----28-----115----29-----159----46-----170----45------116----30 562d926f305SMatthew G. Knepley /| /| /| /| /| /| 563d926f305SMatthew G. Knepley 123| 71 124| 73 125| 87 162| 161| 78 126| 564d926f305SMatthew G. Knepley / | / | / | / | / | / | 565d926f305SMatthew G. Knepley 23-----111----24-----112----25-----158----44-----169----43-----113-----26 | 566d926f305SMatthew G. Knepley | | 65 | | 67 | | 86 | | | | 69 | | 567d926f305SMatthew G. Knepley | 134 | 135 | 137 | 166 | 165 | 140 568d926f305SMatthew G. Knepley |56 | |57 | |58 | |84 | |83 | |59 | 569d926f305SMatthew G. Knepley 127 | 64 128 | 66 130 | 85 164 | 163 | 68 133 | 570d926f305SMatthew G. Knepley | 35-----143-|--37-----151-|--40-----109-|--42-----168-|--42-----110-|---22 571d926f305SMatthew G. Knepley | /| | /| | /| | / | / | / 572d926f305SMatthew G. Knepley |145| 79 |147| 81 |153| 75 |160 |160 77 |122 573d926f305SMatthew G. Knepley |/ 173 |/ 174 |/ 176 |/ |/ |/ 574d926f305SMatthew G. Knepley 31-----141----33-----149----39-----107----41-----167----41-----108-----21 575d926f305SMatthew G. Knepley cell | | | | | cell 9 576d926f305SMatthew G. Knepley 8 | 36-----144-|--38-----152-|--40-----109----42-----110-----22 577d926f305SMatthew G. Knepley 171 /| 172 /| 175 /| /| /| 578d926f305SMatthew G. Knepley |146| 80 |148| 82 |153| 75 160| 77 122| 579d926f305SMatthew G. Knepley |/ | |/ | |/ | / | / | 580d926f305SMatthew G. Knepley 32-----142----34-----150----39-----107----41-----108-----21 | 581d926f305SMatthew G. Knepley | | 50 | | 52 | | 61 | | 63 | | 582d926f305SMatthew G. Knepley | 156 | 157 | 136 | 138 | 139 583d926f305SMatthew G. Knepley |47 | |48 | |53 | |54 | |55 | 584d926f305SMatthew G. Knepley 154 | 49 155 | 51 129 | 60 131 | 62 132 | 585d926f305SMatthew G. Knepley | 16-----103-|--17-----104-|--18-----105-|--19-----106-|---20 586d926f305SMatthew G. Knepley | / | / | / | / | / 587d926f305SMatthew G. Knepley |117 70 |118 72 |119 74 |120 76 |121 588d926f305SMatthew G. Knepley |/ |/ |/ |/ |/ 589d926f305SMatthew G. Knepley 11-----99-----12-----100----13-----101----14-----102-----15 590d926f305SMatthew G. Knepley cell 0 cell 1 cell 2 cell 3 591d926f305SMatthew G. Knepley 5926fc05355SMatthew G. Knepley */ 5936fc05355SMatthew G. Knepley 5946fc05355SMatthew G. Knepley typedef struct { 5956fc05355SMatthew G. Knepley PetscInt testNum; // The mesh to test 5966fc05355SMatthew G. Knepley } AppCtx; 5976fc05355SMatthew G. Knepley 5986fc05355SMatthew G. Knepley static PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options) 5996fc05355SMatthew G. Knepley { 6006fc05355SMatthew G. Knepley PetscFunctionBegin; 6016fc05355SMatthew G. Knepley options->testNum = 0; 6026fc05355SMatthew G. Knepley 6036fc05355SMatthew G. Knepley PetscOptionsBegin(comm, "", "Cohesive Meshing Options", "DMPLEX"); 6046fc05355SMatthew G. Knepley PetscCall(PetscOptionsBoundedInt("-test_num", "The particular mesh to test", "ex5.c", options->testNum, &options->testNum, NULL, 0)); 6056fc05355SMatthew G. Knepley PetscOptionsEnd(); 6066fc05355SMatthew G. Knepley PetscFunctionReturn(PETSC_SUCCESS); 6076fc05355SMatthew G. Knepley } 6086fc05355SMatthew G. Knepley 6096fc05355SMatthew G. Knepley static PetscErrorCode CreateQuadMesh1(MPI_Comm comm, AppCtx *user, DM *dm) 6106fc05355SMatthew G. Knepley { 6116fc05355SMatthew G. Knepley const PetscInt faces[2] = {1, 1}; 6126fc05355SMatthew G. Knepley PetscReal lower[2], upper[2]; 6136fc05355SMatthew G. Knepley DMLabel label; 6146fc05355SMatthew G. Knepley PetscMPIInt rank; 6156fc05355SMatthew G. Knepley void *get_tmp; 6166fc05355SMatthew G. Knepley PetscInt64 *cidx; 617*b8b5be36SMartin Diehl PetscMPIInt iflg; 6186fc05355SMatthew G. Knepley 6196fc05355SMatthew G. Knepley PetscFunctionBeginUser; 6206fc05355SMatthew G. Knepley PetscCallMPI(MPI_Comm_rank(comm, &rank)); 6216fc05355SMatthew G. Knepley // Create serial mesh 6226fc05355SMatthew G. Knepley lower[0] = (PetscReal)(rank % 2); 6236fc05355SMatthew G. Knepley lower[1] = (PetscReal)(rank / 2); 6246fc05355SMatthew G. Knepley upper[0] = (PetscReal)(rank % 2) + 1.; 6256fc05355SMatthew G. Knepley upper[1] = (PetscReal)(rank / 2) + 1.; 62642108689Sksagiyam PetscCall(DMPlexCreateBoxMesh(PETSC_COMM_SELF, 2, PETSC_FALSE, faces, lower, upper, NULL, PETSC_TRUE, 0, PETSC_TRUE, dm)); 6276fc05355SMatthew G. Knepley PetscCall(PetscObjectSetName((PetscObject)*dm, "box")); 6286fc05355SMatthew G. Knepley // Flip edges to make fault non-oriented 6296fc05355SMatthew G. Knepley switch (rank) { 6306fc05355SMatthew G. Knepley case 2: 6316fc05355SMatthew G. Knepley PetscCall(DMPlexOrientPoint(*dm, 8, -1)); 6326fc05355SMatthew G. Knepley break; 6336fc05355SMatthew G. Knepley case 3: 6346fc05355SMatthew G. Knepley PetscCall(DMPlexOrientPoint(*dm, 7, -1)); 6356fc05355SMatthew G. Knepley break; 6366fc05355SMatthew G. Knepley default: 6376fc05355SMatthew G. Knepley break; 6386fc05355SMatthew G. Knepley } 6396fc05355SMatthew G. Knepley // Need this so that all procs create the cell types 6406fc05355SMatthew G. Knepley PetscCall(DMPlexGetCellTypeLabel(*dm, &label)); 6416fc05355SMatthew G. Knepley // Replace comm in object (copied from PetscHeaderCreate/Destroy()) 6426fc05355SMatthew G. Knepley PetscCall(PetscCommDestroy(&(*dm)->hdr.comm)); 6436fc05355SMatthew G. Knepley PetscCall(PetscCommDuplicate(comm, &(*dm)->hdr.comm, &(*dm)->hdr.tag)); 644*b8b5be36SMartin Diehl PetscCallMPI(MPI_Comm_get_attr((*dm)->hdr.comm, Petsc_CreationIdx_keyval, &get_tmp, &iflg)); 645*b8b5be36SMartin Diehl PetscCheck(iflg, (*dm)->hdr.comm, PETSC_ERR_ARG_CORRUPT, "MPI_Comm does not have an object creation index"); 6466fc05355SMatthew G. Knepley cidx = (PetscInt64 *)get_tmp; 6476fc05355SMatthew G. Knepley (*dm)->hdr.cidx = (*cidx)++; 6486fc05355SMatthew G. Knepley // Create new pointSF 6496fc05355SMatthew G. Knepley { 6506fc05355SMatthew G. Knepley PetscSF sf; 6516fc05355SMatthew G. Knepley PetscInt *local = NULL; 6526fc05355SMatthew G. Knepley PetscSFNode *remote = NULL; 6536fc05355SMatthew G. Knepley PetscInt Nl; 6546fc05355SMatthew G. Knepley 6556fc05355SMatthew G. Knepley PetscCall(PetscSFCreate(comm, &sf)); 6566fc05355SMatthew G. Knepley switch (rank) { 6576fc05355SMatthew G. Knepley case 0: 6586fc05355SMatthew G. Knepley Nl = 5; 6596fc05355SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &local)); 6606fc05355SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &remote)); 6616fc05355SMatthew G. Knepley local[0] = 2; 6626fc05355SMatthew G. Knepley remote[0].index = 1; 6636fc05355SMatthew G. Knepley remote[0].rank = 1; 6646fc05355SMatthew G. Knepley local[1] = 3; 6656fc05355SMatthew G. Knepley remote[1].index = 1; 6666fc05355SMatthew G. Knepley remote[1].rank = 2; 6676fc05355SMatthew G. Knepley local[2] = 4; 6686fc05355SMatthew G. Knepley remote[2].index = 1; 6696fc05355SMatthew G. Knepley remote[2].rank = 3; 6706fc05355SMatthew G. Knepley local[3] = 6; 6716fc05355SMatthew G. Knepley remote[3].index = 5; 6726fc05355SMatthew G. Knepley remote[3].rank = 2; 6736fc05355SMatthew G. Knepley local[4] = 8; 6746fc05355SMatthew G. Knepley remote[4].index = 7; 6756fc05355SMatthew G. Knepley remote[4].rank = 1; 6766fc05355SMatthew G. Knepley break; 6776fc05355SMatthew G. Knepley case 1: 6786fc05355SMatthew G. Knepley Nl = 3; 6796fc05355SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &local)); 6806fc05355SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &remote)); 6816fc05355SMatthew G. Knepley local[0] = 3; 6826fc05355SMatthew G. Knepley remote[0].index = 1; 6836fc05355SMatthew G. Knepley remote[0].rank = 3; 6846fc05355SMatthew G. Knepley local[1] = 4; 6856fc05355SMatthew G. Knepley remote[1].index = 2; 6866fc05355SMatthew G. Knepley remote[1].rank = 3; 6876fc05355SMatthew G. Knepley local[2] = 6; 6886fc05355SMatthew G. Knepley remote[2].index = 5; 6896fc05355SMatthew G. Knepley remote[2].rank = 3; 6906fc05355SMatthew G. Knepley break; 6916fc05355SMatthew G. Knepley case 2: 6926fc05355SMatthew G. Knepley Nl = 3; 6936fc05355SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &local)); 6946fc05355SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &remote)); 6956fc05355SMatthew G. Knepley local[0] = 2; 6966fc05355SMatthew G. Knepley remote[0].index = 1; 6976fc05355SMatthew G. Knepley remote[0].rank = 3; 6986fc05355SMatthew G. Knepley local[1] = 4; 6996fc05355SMatthew G. Knepley remote[1].index = 3; 7006fc05355SMatthew G. Knepley remote[1].rank = 3; 7016fc05355SMatthew G. Knepley local[2] = 8; 7026fc05355SMatthew G. Knepley remote[2].index = 7; 7036fc05355SMatthew G. Knepley remote[2].rank = 3; 7046fc05355SMatthew G. Knepley break; 7056fc05355SMatthew G. Knepley case 3: 7066fc05355SMatthew G. Knepley Nl = 0; 7076fc05355SMatthew G. Knepley break; 7086fc05355SMatthew G. Knepley default: 7096fc05355SMatthew G. Knepley SETERRQ(comm, PETSC_ERR_SUP, "This example only supports 4 ranks"); 7106fc05355SMatthew G. Knepley } 7116fc05355SMatthew G. Knepley PetscCall(PetscSFSetGraph(sf, 9, Nl, local, PETSC_OWN_POINTER, remote, PETSC_OWN_POINTER)); 7126fc05355SMatthew G. Knepley PetscCall(DMSetPointSF(*dm, sf)); 7136fc05355SMatthew G. Knepley PetscCall(PetscSFDestroy(&sf)); 7146fc05355SMatthew G. Knepley } 7156fc05355SMatthew G. Knepley // Create fault label 7166fc05355SMatthew G. Knepley PetscCall(DMCreateLabel(*dm, "fault")); 7176fc05355SMatthew G. Knepley PetscCall(DMGetLabel(*dm, "fault", &label)); 7186fc05355SMatthew G. Knepley switch (rank) { 7196fc05355SMatthew G. Knepley case 0: 7206fc05355SMatthew G. Knepley case 2: 7216fc05355SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 8, 1)); 7226fc05355SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 2, 0)); 7236fc05355SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 4, 0)); 7246fc05355SMatthew G. Knepley break; 7256fc05355SMatthew G. Knepley case 1: 7266fc05355SMatthew G. Knepley case 3: 7276fc05355SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 7, 1)); 7286fc05355SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 1, 0)); 7296fc05355SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 3, 0)); 7306fc05355SMatthew G. Knepley break; 7316fc05355SMatthew G. Knepley default: 7326fc05355SMatthew G. Knepley break; 7336fc05355SMatthew G. Knepley } 7346fc05355SMatthew G. Knepley PetscCall(DMPlexOrientLabel(*dm, label)); 7356fc05355SMatthew G. Knepley PetscCall(DMPlexLabelCohesiveComplete(*dm, label, NULL, 1, PETSC_FALSE, PETSC_FALSE, NULL)); 7366fc05355SMatthew G. Knepley PetscCall(DMPlexDistributeSetDefault(*dm, PETSC_FALSE)); 7376fc05355SMatthew G. Knepley PetscFunctionReturn(PETSC_SUCCESS); 7386fc05355SMatthew G. Knepley } 7396fc05355SMatthew G. Knepley 740d926f305SMatthew G. Knepley static PetscErrorCode CreateHexMesh1(MPI_Comm comm, AppCtx *user, DM *dm) 741d926f305SMatthew G. Knepley { 742d926f305SMatthew G. Knepley const PetscInt faces[3] = {1, 1, 1}; 743d926f305SMatthew G. Knepley PetscReal lower[3], upper[3]; 744d926f305SMatthew G. Knepley DMLabel label; 745d926f305SMatthew G. Knepley PetscMPIInt rank; 746d926f305SMatthew G. Knepley void *get_tmp; 747d926f305SMatthew G. Knepley PetscInt64 *cidx; 748*b8b5be36SMartin Diehl PetscMPIInt iflg; 749d926f305SMatthew G. Knepley 750d926f305SMatthew G. Knepley PetscFunctionBeginUser; 751d926f305SMatthew G. Knepley PetscCallMPI(MPI_Comm_rank(comm, &rank)); 752d926f305SMatthew G. Knepley // Create serial mesh 753d926f305SMatthew G. Knepley lower[0] = (PetscReal)(rank % 2); 754d926f305SMatthew G. Knepley lower[1] = 0.; 755d926f305SMatthew G. Knepley lower[2] = (PetscReal)(rank / 2); 756d926f305SMatthew G. Knepley upper[0] = (PetscReal)(rank % 2) + 1.; 757d926f305SMatthew G. Knepley upper[1] = 1.; 758d926f305SMatthew G. Knepley upper[2] = (PetscReal)(rank / 2) + 1.; 75942108689Sksagiyam PetscCall(DMPlexCreateBoxMesh(PETSC_COMM_SELF, 3, PETSC_FALSE, faces, lower, upper, NULL, PETSC_TRUE, 0, PETSC_TRUE, dm)); 760d926f305SMatthew G. Knepley PetscCall(PetscObjectSetName((PetscObject)*dm, "box")); 761d926f305SMatthew G. Knepley // Flip edges to make fault non-oriented 762d926f305SMatthew G. Knepley switch (rank) { 763d926f305SMatthew G. Knepley case 2: 764d926f305SMatthew G. Knepley PetscCall(DMPlexOrientPoint(*dm, 10, -1)); 765d926f305SMatthew G. Knepley break; 766d926f305SMatthew G. Knepley case 3: 767d926f305SMatthew G. Knepley PetscCall(DMPlexOrientPoint(*dm, 9, -1)); 768d926f305SMatthew G. Knepley break; 769d926f305SMatthew G. Knepley default: 770d926f305SMatthew G. Knepley break; 771d926f305SMatthew G. Knepley } 772d926f305SMatthew G. Knepley // Need this so that all procs create the cell types 773d926f305SMatthew G. Knepley PetscCall(DMPlexGetCellTypeLabel(*dm, &label)); 774d926f305SMatthew G. Knepley // Replace comm in object (copied from PetscHeaderCreate/Destroy()) 775d926f305SMatthew G. Knepley PetscCall(PetscCommDestroy(&(*dm)->hdr.comm)); 776d926f305SMatthew G. Knepley PetscCall(PetscCommDuplicate(comm, &(*dm)->hdr.comm, &(*dm)->hdr.tag)); 777*b8b5be36SMartin Diehl PetscCallMPI(MPI_Comm_get_attr((*dm)->hdr.comm, Petsc_CreationIdx_keyval, &get_tmp, &iflg)); 778*b8b5be36SMartin Diehl PetscCheck(iflg, (*dm)->hdr.comm, PETSC_ERR_ARG_CORRUPT, "MPI_Comm does not have an object creation index"); 779d926f305SMatthew G. Knepley cidx = (PetscInt64 *)get_tmp; 780d926f305SMatthew G. Knepley (*dm)->hdr.cidx = (*cidx)++; 781d926f305SMatthew G. Knepley // Create new pointSF 782d926f305SMatthew G. Knepley { 783d926f305SMatthew G. Knepley PetscSF sf; 784d926f305SMatthew G. Knepley PetscInt *local = NULL; 785d926f305SMatthew G. Knepley PetscSFNode *remote = NULL; 786d926f305SMatthew G. Knepley PetscInt Nl; 787d926f305SMatthew G. Knepley 788d926f305SMatthew G. Knepley PetscCall(PetscSFCreate(comm, &sf)); 789d926f305SMatthew G. Knepley switch (rank) { 790d926f305SMatthew G. Knepley case 0: 791d926f305SMatthew G. Knepley Nl = 15; 792d926f305SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &local)); 793d926f305SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &remote)); 794d926f305SMatthew G. Knepley local[0] = 2; 795d926f305SMatthew G. Knepley remote[0].index = 1; 796d926f305SMatthew G. Knepley remote[0].rank = 1; 797d926f305SMatthew G. Knepley local[1] = 4; 798d926f305SMatthew G. Knepley remote[1].index = 3; 799d926f305SMatthew G. Knepley remote[1].rank = 1; 800d926f305SMatthew G. Knepley local[2] = 5; 801d926f305SMatthew G. Knepley remote[2].index = 1; 802d926f305SMatthew G. Knepley remote[2].rank = 2; 803d926f305SMatthew G. Knepley local[3] = 6; 804d926f305SMatthew G. Knepley remote[3].index = 1; 805d926f305SMatthew G. Knepley remote[3].rank = 3; 806d926f305SMatthew G. Knepley local[4] = 7; 807d926f305SMatthew G. Knepley remote[4].index = 3; 808d926f305SMatthew G. Knepley remote[4].rank = 2; 809d926f305SMatthew G. Knepley local[5] = 8; 810d926f305SMatthew G. Knepley remote[5].index = 3; 811d926f305SMatthew G. Knepley remote[5].rank = 3; 812d926f305SMatthew G. Knepley local[6] = 17; 813d926f305SMatthew G. Knepley remote[6].index = 15; 814d926f305SMatthew G. Knepley remote[6].rank = 2; 815d926f305SMatthew G. Knepley local[7] = 18; 816d926f305SMatthew G. Knepley remote[7].index = 16; 817d926f305SMatthew G. Knepley remote[7].rank = 2; 818d926f305SMatthew G. Knepley local[8] = 20; 819d926f305SMatthew G. Knepley remote[8].index = 19; 820d926f305SMatthew G. Knepley remote[8].rank = 1; 821d926f305SMatthew G. Knepley local[9] = 21; 822d926f305SMatthew G. Knepley remote[9].index = 19; 823d926f305SMatthew G. Knepley remote[9].rank = 2; 824d926f305SMatthew G. Knepley local[10] = 22; 825d926f305SMatthew G. Knepley remote[10].index = 19; 826d926f305SMatthew G. Knepley remote[10].rank = 3; 827d926f305SMatthew G. Knepley local[11] = 24; 828d926f305SMatthew G. Knepley remote[11].index = 23; 829d926f305SMatthew G. Knepley remote[11].rank = 1; 830d926f305SMatthew G. Knepley local[12] = 26; 831d926f305SMatthew G. Knepley remote[12].index = 25; 832d926f305SMatthew G. Knepley remote[12].rank = 1; 833d926f305SMatthew G. Knepley local[13] = 10; 834d926f305SMatthew G. Knepley remote[13].index = 9; 835d926f305SMatthew G. Knepley remote[13].rank = 1; 836d926f305SMatthew G. Knepley local[14] = 14; 837d926f305SMatthew G. Knepley remote[14].index = 13; 838d926f305SMatthew G. Knepley remote[14].rank = 2; 839d926f305SMatthew G. Knepley break; 840d926f305SMatthew G. Knepley case 1: 841d926f305SMatthew G. Knepley Nl = 9; 842d926f305SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &local)); 843d926f305SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &remote)); 844d926f305SMatthew G. Knepley local[0] = 5; 845d926f305SMatthew G. Knepley remote[0].index = 1; 846d926f305SMatthew G. Knepley remote[0].rank = 3; 847d926f305SMatthew G. Knepley local[1] = 6; 848d926f305SMatthew G. Knepley remote[1].index = 2; 849d926f305SMatthew G. Knepley remote[1].rank = 3; 850d926f305SMatthew G. Knepley local[2] = 7; 851d926f305SMatthew G. Knepley remote[2].index = 3; 852d926f305SMatthew G. Knepley remote[2].rank = 3; 853d926f305SMatthew G. Knepley local[3] = 8; 854d926f305SMatthew G. Knepley remote[3].index = 4; 855d926f305SMatthew G. Knepley remote[3].rank = 3; 856d926f305SMatthew G. Knepley local[4] = 17; 857d926f305SMatthew G. Knepley remote[4].index = 15; 858d926f305SMatthew G. Knepley remote[4].rank = 3; 859d926f305SMatthew G. Knepley local[5] = 18; 860d926f305SMatthew G. Knepley remote[5].index = 16; 861d926f305SMatthew G. Knepley remote[5].rank = 3; 862d926f305SMatthew G. Knepley local[6] = 21; 863d926f305SMatthew G. Knepley remote[6].index = 19; 864d926f305SMatthew G. Knepley remote[6].rank = 3; 865d926f305SMatthew G. Knepley local[7] = 22; 866d926f305SMatthew G. Knepley remote[7].index = 20; 867d926f305SMatthew G. Knepley remote[7].rank = 3; 868d926f305SMatthew G. Knepley local[8] = 14; 869d926f305SMatthew G. Knepley remote[8].index = 13; 870d926f305SMatthew G. Knepley remote[8].rank = 3; 871d926f305SMatthew G. Knepley break; 872d926f305SMatthew G. Knepley case 2: 873d926f305SMatthew G. Knepley Nl = 9; 874d926f305SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &local)); 875d926f305SMatthew G. Knepley PetscCall(PetscMalloc1(Nl, &remote)); 876d926f305SMatthew G. Knepley local[0] = 2; 877d926f305SMatthew G. Knepley remote[0].index = 1; 878d926f305SMatthew G. Knepley remote[0].rank = 3; 879d926f305SMatthew G. Knepley local[1] = 4; 880d926f305SMatthew G. Knepley remote[1].index = 3; 881d926f305SMatthew G. Knepley remote[1].rank = 3; 882d926f305SMatthew G. Knepley local[2] = 6; 883d926f305SMatthew G. Knepley remote[2].index = 5; 884d926f305SMatthew G. Knepley remote[2].rank = 3; 885d926f305SMatthew G. Knepley local[3] = 8; 886d926f305SMatthew G. Knepley remote[3].index = 7; 887d926f305SMatthew G. Knepley remote[3].rank = 3; 888d926f305SMatthew G. Knepley local[4] = 20; 889d926f305SMatthew G. Knepley remote[4].index = 19; 890d926f305SMatthew G. Knepley remote[4].rank = 3; 891d926f305SMatthew G. Knepley local[5] = 22; 892d926f305SMatthew G. Knepley remote[5].index = 21; 893d926f305SMatthew G. Knepley remote[5].rank = 3; 894d926f305SMatthew G. Knepley local[6] = 24; 895d926f305SMatthew G. Knepley remote[6].index = 23; 896d926f305SMatthew G. Knepley remote[6].rank = 3; 897d926f305SMatthew G. Knepley local[7] = 26; 898d926f305SMatthew G. Knepley remote[7].index = 25; 899d926f305SMatthew G. Knepley remote[7].rank = 3; 900d926f305SMatthew G. Knepley local[8] = 10; 901d926f305SMatthew G. Knepley remote[8].index = 9; 902d926f305SMatthew G. Knepley remote[8].rank = 3; 903d926f305SMatthew G. Knepley break; 904d926f305SMatthew G. Knepley case 3: 905d926f305SMatthew G. Knepley Nl = 0; 906d926f305SMatthew G. Knepley break; 907d926f305SMatthew G. Knepley default: 908d926f305SMatthew G. Knepley SETERRQ(comm, PETSC_ERR_SUP, "This example only supports 4 ranks"); 909d926f305SMatthew G. Knepley } 910d926f305SMatthew G. Knepley PetscCall(PetscSFSetGraph(sf, 27, Nl, local, PETSC_OWN_POINTER, remote, PETSC_OWN_POINTER)); 911d926f305SMatthew G. Knepley PetscCall(DMSetPointSF(*dm, sf)); 912d926f305SMatthew G. Knepley PetscCall(PetscSFDestroy(&sf)); 913d926f305SMatthew G. Knepley } 914d926f305SMatthew G. Knepley // Create fault label 915d926f305SMatthew G. Knepley PetscCall(DMCreateLabel(*dm, "fault")); 916d926f305SMatthew G. Knepley PetscCall(DMGetLabel(*dm, "fault", &label)); 917d926f305SMatthew G. Knepley switch (rank) { 918d926f305SMatthew G. Knepley case 0: 919d926f305SMatthew G. Knepley case 2: 920d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 10, 2)); 921d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 20, 1)); 922d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 22, 1)); 923d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 24, 1)); 924d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 26, 1)); 925d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 2, 0)); 926d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 4, 0)); 927d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 6, 0)); 928d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 8, 0)); 929d926f305SMatthew G. Knepley break; 930d926f305SMatthew G. Knepley case 1: 931d926f305SMatthew G. Knepley case 3: 932d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 9, 2)); 933d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 19, 1)); 934d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 21, 1)); 935d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 23, 1)); 936d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 25, 1)); 937d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 1, 0)); 938d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 3, 0)); 939d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 5, 0)); 940d926f305SMatthew G. Knepley PetscCall(DMLabelSetValue(label, 7, 0)); 941d926f305SMatthew G. Knepley break; 942d926f305SMatthew G. Knepley default: 943d926f305SMatthew G. Knepley break; 944d926f305SMatthew G. Knepley } 945d926f305SMatthew G. Knepley PetscCall(DMPlexOrientLabel(*dm, label)); 946d926f305SMatthew G. Knepley PetscCall(DMPlexLabelCohesiveComplete(*dm, label, NULL, 1, PETSC_FALSE, PETSC_FALSE, NULL)); 947d926f305SMatthew G. Knepley PetscCall(DMPlexDistributeSetDefault(*dm, PETSC_FALSE)); 948d926f305SMatthew G. Knepley PetscFunctionReturn(PETSC_SUCCESS); 949d926f305SMatthew G. Knepley } 950d926f305SMatthew G. Knepley 9516fc05355SMatthew G. Knepley static PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm) 9526fc05355SMatthew G. Knepley { 9536fc05355SMatthew G. Knepley PetscFunctionBegin; 954d926f305SMatthew G. Knepley switch (user->testNum) { 955d926f305SMatthew G. Knepley case 1: 9566fc05355SMatthew G. Knepley PetscCall(CreateQuadMesh1(comm, user, dm)); 957d926f305SMatthew G. Knepley break; 958d926f305SMatthew G. Knepley case 2: 959d926f305SMatthew G. Knepley PetscCall(CreateHexMesh1(comm, user, dm)); 960d926f305SMatthew G. Knepley break; 961d926f305SMatthew G. Knepley default: 9626fc05355SMatthew G. Knepley PetscCall(DMCreate(comm, dm)); 9636fc05355SMatthew G. Knepley PetscCall(DMSetType(*dm, DMPLEX)); 964d926f305SMatthew G. Knepley break; 9656fc05355SMatthew G. Knepley } 9666fc05355SMatthew G. Knepley PetscCall(DMSetFromOptions(*dm)); 9676fc05355SMatthew G. Knepley { 9686fc05355SMatthew G. Knepley const char *prefix; 9696fc05355SMatthew G. Knepley 9706fc05355SMatthew G. Knepley // We cannot redistribute with cohesive cells in the SF 9716fc05355SMatthew G. Knepley PetscCall(DMPlexDistributeSetDefault(*dm, PETSC_FALSE)); 9726fc05355SMatthew G. Knepley PetscCall(PetscObjectGetOptionsPrefix((PetscObject)*dm, &prefix)); 9736fc05355SMatthew G. Knepley PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, "f0_")); 9746fc05355SMatthew G. Knepley PetscCall(DMSetFromOptions(*dm)); 9756fc05355SMatthew G. Knepley PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, "f1_")); 9766fc05355SMatthew G. Knepley PetscCall(DMSetFromOptions(*dm)); 9776fc05355SMatthew G. Knepley PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, prefix)); 9786fc05355SMatthew G. Knepley } 9796fc05355SMatthew G. Knepley PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view")); 9806fc05355SMatthew G. Knepley PetscFunctionReturn(PETSC_SUCCESS); 9816fc05355SMatthew G. Knepley } 9826fc05355SMatthew G. Knepley 9836fc05355SMatthew G. Knepley int main(int argc, char **argv) 9846fc05355SMatthew G. Knepley { 9856fc05355SMatthew G. Knepley DM dm; 9866fc05355SMatthew G. Knepley AppCtx user; 9876fc05355SMatthew G. Knepley 9886fc05355SMatthew G. Knepley PetscFunctionBeginUser; 9896fc05355SMatthew G. Knepley PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 9906fc05355SMatthew G. Knepley PetscCall(ProcessOptions(PETSC_COMM_WORLD, &user)); 9916fc05355SMatthew G. Knepley PetscCall(CreateMesh(PETSC_COMM_WORLD, &user, &dm)); 9926fc05355SMatthew G. Knepley PetscCall(DMDestroy(&dm)); 9936fc05355SMatthew G. Knepley PetscCall(PetscFinalize()); 9946fc05355SMatthew G. Knepley return 0; 9956fc05355SMatthew G. Knepley } 9966fc05355SMatthew G. Knepley 9976fc05355SMatthew G. Knepley /*TEST 9986fc05355SMatthew G. Knepley 9996fc05355SMatthew G. Knepley testset: 10006fc05355SMatthew G. Knepley requires: triangle 10016fc05355SMatthew G. Knepley args: -dm_refine 1 -dm_plex_transform_type cohesive_extrude \ 10026fc05355SMatthew G. Knepley -dm_plex_transform_active fault \ 10036fc05355SMatthew G. Knepley -dm_view ::ascii_info_detail -coarse_dm_view ::ascii_info_detail 10046fc05355SMatthew G. Knepley 10056fc05355SMatthew G. Knepley test: 10066fc05355SMatthew G. Knepley suffix: tri_0 10076fc05355SMatthew G. Knepley args: -dm_plex_box_faces 1,1 -dm_plex_cohesive_label_fault 8 10086fc05355SMatthew G. Knepley test: 10096fc05355SMatthew G. Knepley suffix: tri_1 10106fc05355SMatthew G. Knepley args: -dm_plex_box_faces 1,1 -dm_plex_cohesive_label_fault 8 \ 10116fc05355SMatthew G. Knepley -dm_plex_transform_extrude_use_tensor 0 10126fc05355SMatthew G. Knepley test: 10136fc05355SMatthew G. Knepley suffix: tri_2 10146fc05355SMatthew G. Knepley args: -dm_plex_file_contents dat:tri_2_cv -dm_plex_cohesive_label_fault 11,15 10156fc05355SMatthew G. Knepley test: 10166fc05355SMatthew G. Knepley suffix: tri_3 10176fc05355SMatthew G. Knepley nsize: 2 10186fc05355SMatthew G. Knepley args: -dm_plex_file_contents dat:tri_2_cv -dm_plex_cohesive_label_fault 11,15 \ 10196fc05355SMatthew G. Knepley -petscpartitioner_type shell -petscpartitioner_shell_sizes 2,2 \ 10206fc05355SMatthew G. Knepley -petscpartitioner_shell_points 0,3,1,2 10216fc05355SMatthew G. Knepley 10226fc05355SMatthew G. Knepley testset: 10236fc05355SMatthew G. Knepley args: -dm_plex_simplex 0 -dm_plex_box_faces 2,1 \ 10246fc05355SMatthew G. Knepley -dm_refine 1 -dm_plex_transform_type cohesive_extrude \ 10256fc05355SMatthew G. Knepley -dm_plex_transform_active fault -dm_plex_cohesive_label_fault 13 \ 10266fc05355SMatthew G. Knepley -dm_view ::ascii_info_detail -coarse_dm_view ::ascii_info_detail 10276fc05355SMatthew G. Knepley 10286fc05355SMatthew G. Knepley test: 10296fc05355SMatthew G. Knepley suffix: quad_0 10306fc05355SMatthew G. Knepley test: 10316fc05355SMatthew G. Knepley suffix: quad_1 10326fc05355SMatthew G. Knepley args: -dm_plex_transform_extrude_use_tensor 0 10336fc05355SMatthew G. Knepley test: 10346fc05355SMatthew G. Knepley suffix: quad_2 10356fc05355SMatthew G. Knepley nsize: 2 10366fc05355SMatthew G. Knepley args: -petscpartitioner_type simple 10376fc05355SMatthew G. Knepley 10386fc05355SMatthew G. Knepley test: 10396fc05355SMatthew G. Knepley suffix: quad_3 10406fc05355SMatthew G. Knepley nsize: 4 10416fc05355SMatthew G. Knepley args: -test_num 1 \ 10426fc05355SMatthew G. Knepley -dm_refine 1 -dm_plex_transform_type cohesive_extrude \ 10436fc05355SMatthew G. Knepley -dm_plex_transform_active fault \ 10446fc05355SMatthew G. Knepley -dm_view ::ascii_info_detail -coarse_dm_view ::ascii_info_detail \ 10456fc05355SMatthew G. Knepley -orientation_view -orientation_view_synchronized 10466fc05355SMatthew G. Knepley 10476fc05355SMatthew G. Knepley test: 10486fc05355SMatthew G. Knepley suffix: quad_4 10496fc05355SMatthew G. Knepley args: -dm_plex_simplex 0 -dm_plex_box_faces 3,2 \ 10506fc05355SMatthew G. Knepley -dm_refine 1 -dm_plex_transform_type cohesive_extrude \ 10516fc05355SMatthew G. Knepley -dm_plex_transform_active fault -dm_plex_cohesive_label_fault 22,23 \ 10526fc05355SMatthew G. Knepley -dm_view ::ascii_info_detail -coarse_dm_view ::ascii_info_detail 10536fc05355SMatthew G. Knepley 10546fc05355SMatthew G. Knepley test: 10556fc05355SMatthew G. Knepley suffix: quad_5 10566fc05355SMatthew G. Knepley args: -dm_plex_simplex 0 -dm_plex_box_faces 3,2 \ 10576fc05355SMatthew G. Knepley -dm_plex_cohesive_label_fault0 21 \ 10586fc05355SMatthew G. Knepley -dm_plex_cohesive_label_fault1 23 \ 10596fc05355SMatthew G. Knepley -f0_dm_refine 1 -f0_dm_plex_transform_type cohesive_extrude \ 10606fc05355SMatthew G. Knepley -f0_dm_plex_transform_active fault0 -f0_coarse_dm_view ::ascii_info_detail \ 10616fc05355SMatthew G. Knepley -f1_dm_refine 1 -f1_dm_plex_transform_type cohesive_extrude \ 10626fc05355SMatthew G. Knepley -f1_dm_plex_transform_active fault1 -f1_coarse_dm_view ::ascii_info_detail \ 10636fc05355SMatthew G. Knepley -dm_view ::ascii_info_detail 10646fc05355SMatthew G. Knepley 10656fc05355SMatthew G. Knepley test: 10666fc05355SMatthew G. Knepley suffix: quad_6 10676fc05355SMatthew G. Knepley args: -dm_plex_simplex 0 -dm_plex_box_faces 3,2 \ 10686fc05355SMatthew G. Knepley -dm_plex_cohesive_label_fault0 22,23 \ 10696fc05355SMatthew G. Knepley -dm_plex_cohesive_label_fault1 32 \ 10706fc05355SMatthew G. Knepley -f0_dm_refine 1 -f0_dm_plex_transform_type cohesive_extrude \ 10716fc05355SMatthew G. Knepley -f0_dm_plex_transform_active fault0 -f0_coarse_dm_view ::ascii_info_detail \ 10726fc05355SMatthew G. Knepley -f1_dm_refine 1 -f1_dm_plex_transform_type cohesive_extrude \ 10736fc05355SMatthew G. Knepley -f1_dm_plex_transform_active fault1 -f1_coarse_dm_view ::ascii_info_detail \ 10746fc05355SMatthew G. Knepley -dm_view ::ascii_info_detail 10756fc05355SMatthew G. Knepley 10762b987297SMatthew G. Knepley test: 10772b987297SMatthew G. Knepley suffix: quad_6w 10782b987297SMatthew G. Knepley args: -dm_plex_simplex 0 -dm_plex_box_faces 3,2 \ 10792b987297SMatthew G. Knepley -dm_plex_cohesive_label_fault0 22,23 \ 10802b987297SMatthew G. Knepley -dm_plex_cohesive_label_fault1 32 \ 10812b987297SMatthew G. Knepley -f0_dm_refine 1 -f0_dm_plex_transform_type cohesive_extrude \ 10822b987297SMatthew G. Knepley -f0_dm_plex_transform_active fault0 -f0_coarse_dm_view ::ascii_info_detail \ 10832b987297SMatthew G. Knepley -f0_dm_plex_transform_cohesive_width 0.05 \ 10842b987297SMatthew G. Knepley -f1_dm_refine 1 -f1_dm_plex_transform_type cohesive_extrude \ 10852b987297SMatthew G. Knepley -f1_dm_plex_transform_active fault1 -f1_coarse_dm_view ::ascii_info_detail \ 10862b987297SMatthew G. Knepley -f1_dm_plex_transform_cohesive_width 0.05 \ 10872b987297SMatthew G. Knepley -dm_view ::ascii_info_detail 10882b987297SMatthew G. Knepley 1089d926f305SMatthew G. Knepley testset: 1090d926f305SMatthew G. Knepley args: -dm_plex_dim 3 -dm_plex_shape doublet \ 1091d926f305SMatthew G. Knepley -dm_refine 1 -dm_plex_transform_type cohesive_extrude \ 1092d926f305SMatthew G. Knepley -dm_plex_transform_active fault -dm_plex_cohesive_label_fault 7 \ 1093d926f305SMatthew G. Knepley -dm_view ::ascii_info_detail -coarse_dm_view ::ascii_info_detail 1094d926f305SMatthew G. Knepley 1095d926f305SMatthew G. Knepley test: 1096d926f305SMatthew G. Knepley suffix: tet_0 1097d926f305SMatthew G. Knepley test: 1098d926f305SMatthew G. Knepley suffix: tet_1 1099d926f305SMatthew G. Knepley nsize: 2 1100d926f305SMatthew G. Knepley args: -petscpartitioner_type simple 1101d926f305SMatthew G. Knepley 1102d926f305SMatthew G. Knepley testset: 1103d926f305SMatthew G. Knepley args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 2,1,1 -dm_plex_box_upper 2,1,1 \ 1104d926f305SMatthew G. Knepley -dm_refine 1 -dm_plex_transform_type cohesive_extrude \ 1105d926f305SMatthew G. Knepley -dm_plex_transform_active fault -dm_plex_cohesive_label_fault 15 \ 1106d926f305SMatthew G. Knepley -dm_view ::ascii_info_detail -coarse_dm_view ::ascii_info_detail 1107d926f305SMatthew G. Knepley 1108d926f305SMatthew G. Knepley test: 1109d926f305SMatthew G. Knepley suffix: hex_0 1110d926f305SMatthew G. Knepley test: 1111d926f305SMatthew G. Knepley suffix: hex_1 1112d926f305SMatthew G. Knepley nsize: 2 1113d926f305SMatthew G. Knepley args: -petscpartitioner_type simple 1114d926f305SMatthew G. Knepley 1115d926f305SMatthew G. Knepley test: 1116d926f305SMatthew G. Knepley suffix: hex_2 1117d926f305SMatthew G. Knepley nsize: 4 1118d926f305SMatthew G. Knepley args: -test_num 2 \ 1119d926f305SMatthew G. Knepley -dm_refine 1 -dm_plex_transform_type cohesive_extrude \ 1120d926f305SMatthew G. Knepley -dm_plex_transform_active fault \ 1121d926f305SMatthew G. Knepley -dm_view ::ascii_info_detail -coarse_dm_view ::ascii_info_detail \ 1122d926f305SMatthew G. Knepley -orientation_view -orientation_view_synchronized 1123d926f305SMatthew G. Knepley 1124d926f305SMatthew G. Knepley test: 1125d926f305SMatthew G. Knepley suffix: hex_3 1126d926f305SMatthew G. Knepley args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 2,1,2 -dm_plex_box_upper 2.,1.,2. \ 1127d926f305SMatthew G. Knepley -dm_plex_cohesive_label_fault0 37,40 \ 1128d926f305SMatthew G. Knepley -dm_plex_cohesive_label_fault1 26 \ 1129d926f305SMatthew G. Knepley -f0_dm_refine 1 -f0_dm_plex_transform_type cohesive_extrude \ 1130d926f305SMatthew G. Knepley -f0_dm_plex_transform_active fault0 -f0_coarse_dm_view ::ascii_info_detail \ 1131d926f305SMatthew G. Knepley -f1_dm_refine 1 -f1_dm_plex_transform_type cohesive_extrude \ 1132d926f305SMatthew G. Knepley -f1_dm_plex_transform_active fault1 -f1_coarse_dm_view ::ascii_info_detail \ 1133d926f305SMatthew G. Knepley -dm_view ::ascii_info_detail 1134d926f305SMatthew G. Knepley 1135d926f305SMatthew G. Knepley test: 1136d926f305SMatthew G. Knepley suffix: hex_4 1137d926f305SMatthew G. Knepley args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 4,1,2 -dm_plex_box_upper 4.,1.,2. \ 1138d926f305SMatthew G. Knepley -dm_plex_cohesive_label_fault0 65,68 \ 1139d926f305SMatthew G. Knepley -dm_plex_cohesive_label_fault1 46 \ 1140d926f305SMatthew G. Knepley -f0_dm_refine 1 -f0_dm_plex_transform_type cohesive_extrude \ 1141d926f305SMatthew G. Knepley -f0_dm_plex_transform_active fault0 -f0_coarse_dm_view ::ascii_info_detail \ 1142d926f305SMatthew G. Knepley -f1_dm_refine 1 -f1_dm_plex_transform_type cohesive_extrude \ 1143d926f305SMatthew G. Knepley -f1_dm_plex_transform_active fault1 -f1_coarse_dm_view ::ascii_info_detail \ 1144d926f305SMatthew G. Knepley -dm_view ::ascii_info_detail 1145d926f305SMatthew G. Knepley 11466fc05355SMatthew G. Knepley TEST*/ 1147