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
ProcessOptions(MPI_Comm comm,AppCtx * options)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
CreateQuadMesh1(MPI_Comm comm,AppCtx * user,DM * dm)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
CreateHexMesh1(MPI_Comm comm,AppCtx * user,DM * dm)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
CreateMesh(MPI_Comm comm,AppCtx * user,DM * dm)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
main(int argc,char ** argv)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