Actual source code: ex1.c
petsc-3.12.5 2020-03-29
1: static char help[] = "Tests various DMPlex routines to construct, refine and distribute a mesh.\n\n";
3: #include <petscdmplex.h>
5: typedef enum {BOX, CYLINDER} DomainShape;
6: enum {STAGE_LOAD, STAGE_DISTRIBUTE, STAGE_REFINE, STAGE_OVERLAP};
8: typedef struct {
9: DM dm; /* REQUIRED in order to use SNES evaluation functions */
10: PetscInt debug; /* The debugging level */
11: PetscLogEvent createMeshEvent;
12: PetscLogStage stages[4];
13: /* Domain and mesh definition */
14: PetscInt dim; /* The topological mesh dimension */
15: PetscBool interpolate; /* Generate intermediate mesh elements */
16: PetscReal refinementLimit; /* The largest allowable cell volume */
17: PetscBool cellSimplex; /* Use simplices or hexes */
18: PetscBool cellWedge; /* Use wedges */
19: PetscBool simplex2tensor; /* Refine simplicials in hexes */
20: DomainShape domainShape; /* Shape of the region to be meshed */
21: PetscInt *domainBoxSizes; /* Sizes of the box mesh */
22: PetscReal *domainBoxL,*domainBoxU; /* Lower left, upper right corner of the box mesh */
23: DMBoundaryType periodicity[3]; /* The domain periodicity */
24: char filename[PETSC_MAX_PATH_LEN]; /* Import mesh from file */
25: char bdfilename[PETSC_MAX_PATH_LEN]; /* Import mesh boundary from file */
26: char extfilename[PETSC_MAX_PATH_LEN]; /* Import 2D mesh to be extruded from file */
27: PetscBool testPartition; /* Use a fixed partitioning for testing */
28: PetscInt overlap; /* The cell overlap to use during partitioning */
29: PetscBool testShape; /* Test the cell shape quality */
30: PetscReal extrude_thickness; /* Thickness of extrusion */
31: PetscInt extrude_layers; /* Layers to be extruded */
32: PetscBool testp4est[2];
33: PetscBool redistribute;
34: PetscBool final_ref; /* Run refinement at the end */
35: PetscBool final_diagnostics; /* Run diagnostics on the final mesh */
36: } AppCtx;
38: PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
39: {
40: const char *dShapes[2] = {"box", "cylinder"};
41: PetscInt shape, bd, n;
42: static PetscInt domainBoxSizes[3] = {1,1,1};
43: static PetscReal domainBoxL[3] = {0.,0.,0.};
44: static PetscReal domainBoxU[3] = {1.,1.,1.};
45: PetscBool flg;
46: PetscErrorCode ierr;
49: options->debug = 0;
50: options->dim = 2;
51: options->interpolate = PETSC_FALSE;
52: options->refinementLimit = 0.0;
53: options->cellSimplex = PETSC_TRUE;
54: options->cellWedge = PETSC_FALSE;
55: options->domainShape = BOX;
56: options->domainBoxSizes = NULL;
57: options->domainBoxL = NULL;
58: options->domainBoxU = NULL;
59: options->periodicity[0] = DM_BOUNDARY_NONE;
60: options->periodicity[1] = DM_BOUNDARY_NONE;
61: options->periodicity[2] = DM_BOUNDARY_NONE;
62: options->filename[0] = '\0';
63: options->bdfilename[0] = '\0';
64: options->extfilename[0] = '\0';
65: options->testPartition = PETSC_FALSE;
66: options->overlap = 0;
67: options->testShape = PETSC_FALSE;
68: options->simplex2tensor = PETSC_FALSE;
69: options->extrude_layers = 2;
70: options->extrude_thickness = 0.1;
71: options->testp4est[0] = PETSC_FALSE;
72: options->testp4est[1] = PETSC_FALSE;
73: options->redistribute = PETSC_FALSE;
74: options->final_ref = PETSC_FALSE;
75: options->final_diagnostics = PETSC_TRUE;
77: PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");
78: PetscOptionsBoundedInt("-debug", "The debugging level", "ex1.c", options->debug, &options->debug, NULL,0);
79: PetscOptionsRangeInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, NULL,1,3);
80: PetscOptionsBool("-interpolate", "Generate intermediate mesh elements", "ex1.c", options->interpolate, &options->interpolate, NULL);
81: PetscOptionsReal("-refinement_limit", "The largest allowable cell volume", "ex1.c", options->refinementLimit, &options->refinementLimit, NULL);
82: PetscOptionsBool("-cell_simplex", "Use simplices if true, otherwise hexes", "ex1.c", options->cellSimplex, &options->cellSimplex, NULL);
83: PetscOptionsBool("-cell_wedge", "Use wedges if true", "ex1.c", options->cellWedge, &options->cellWedge, NULL);
84: PetscOptionsBool("-simplex2tensor", "Refine simplicial cells in tensor product cells", "ex1.c", options->simplex2tensor, &options->simplex2tensor, NULL);
85: if (options->simplex2tensor) options->interpolate = PETSC_TRUE;
86: shape = options->domainShape;
87: PetscOptionsEList("-domain_shape","The shape of the domain","ex1.c", dShapes, 2, dShapes[options->domainShape], &shape, NULL);
88: options->domainShape = (DomainShape) shape;
89: PetscOptionsIntArray("-domain_box_sizes","The sizes of the box domain","ex1.c", domainBoxSizes, (n=3,&n), &flg);
90: if (flg) { options->domainShape = BOX; options->domainBoxSizes = domainBoxSizes;}
91: PetscOptionsRealArray("-domain_box_ll","Coordinates of the lower left corner of the box domain","ex1.c", domainBoxL, (n=3,&n), &flg);
92: if (flg) { options->domainBoxL = domainBoxL;}
93: PetscOptionsRealArray("-domain_box_ur","Coordinates of the upper right corner of the box domain","ex1.c", domainBoxU, (n=3,&n), &flg);
94: if (flg) { options->domainBoxU = domainBoxU;}
95: bd = options->periodicity[0];
96: PetscOptionsEList("-x_periodicity", "The x-boundary periodicity", "ex1.c", DMBoundaryTypes, 5, DMBoundaryTypes[options->periodicity[0]], &bd, NULL);
97: options->periodicity[0] = (DMBoundaryType) bd;
98: bd = options->periodicity[1];
99: PetscOptionsEList("-y_periodicity", "The y-boundary periodicity", "ex1.c", DMBoundaryTypes, 5, DMBoundaryTypes[options->periodicity[1]], &bd, NULL);
100: options->periodicity[1] = (DMBoundaryType) bd;
101: bd = options->periodicity[2];
102: PetscOptionsEList("-z_periodicity", "The z-boundary periodicity", "ex1.c", DMBoundaryTypes, 5, DMBoundaryTypes[options->periodicity[2]], &bd, NULL);
103: options->periodicity[2] = (DMBoundaryType) bd;
104: PetscOptionsString("-filename", "The mesh file", "ex1.c", options->filename, options->filename, PETSC_MAX_PATH_LEN, NULL);
105: PetscOptionsString("-bd_filename", "The mesh boundary file", "ex1.c", options->bdfilename, options->bdfilename, PETSC_MAX_PATH_LEN, NULL);
106: PetscOptionsString("-ext_filename", "The 2D mesh file to be extruded", "ex1.c", options->extfilename, options->extfilename, PETSC_MAX_PATH_LEN, NULL);
107: PetscOptionsBoundedInt("-ext_layers", "The number of layers to extrude", "ex1.c", options->extrude_layers, &options->extrude_layers, NULL,0);
108: PetscOptionsReal("-ext_thickness", "The thickness of the layer to be extruded", "ex1.c", options->extrude_thickness, &options->extrude_thickness, NULL);
109: PetscOptionsBool("-test_partition", "Use a fixed partition for testing", "ex1.c", options->testPartition, &options->testPartition, NULL);
110: PetscOptionsBoundedInt("-overlap", "The cell overlap for partitioning", "ex1.c", options->overlap, &options->overlap, NULL,0);
111: PetscOptionsBool("-test_shape", "Report cell shape qualities (Jacobian condition numbers)", "ex1.c", options->testShape, &options->testShape, NULL);
112: PetscOptionsBool("-test_p4est_seq", "Test p4est with sequential base DM", "ex1.c", options->testp4est[0], &options->testp4est[0], NULL);
113: PetscOptionsBool("-test_p4est_par", "Test p4est with parallel base DM", "ex1.c", options->testp4est[1], &options->testp4est[1], NULL);
114: PetscOptionsBool("-test_redistribute", "Test redistribution", "ex1.c", options->redistribute, &options->redistribute, NULL);
115: PetscOptionsBool("-final_ref", "Run uniform refinement on the final mesh", "ex1.c", options->final_ref, &options->final_ref, NULL);
116: PetscOptionsBool("-final_diagnostics", "Run diagnostics on the final mesh", "ex1.c", options->final_diagnostics, &options->final_diagnostics, NULL);
117: PetscOptionsEnd();
119: PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent);
120: PetscLogStageRegister("MeshLoad", &options->stages[STAGE_LOAD]);
121: PetscLogStageRegister("MeshDistribute", &options->stages[STAGE_DISTRIBUTE]);
122: PetscLogStageRegister("MeshRefine", &options->stages[STAGE_REFINE]);
123: PetscLogStageRegister("MeshOverlap", &options->stages[STAGE_OVERLAP]);
124: return(0);
125: }
127: PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm)
128: {
129: PetscInt dim = user->dim;
130: PetscBool interpolate = user->interpolate;
131: PetscReal refinementLimit = user->refinementLimit;
132: PetscBool cellSimplex = user->cellSimplex;
133: PetscBool cellWedge = user->cellWedge;
134: PetscBool simplex2tensor = user->simplex2tensor;
135: const char *filename = user->filename;
136: const char *bdfilename = user->bdfilename;
137: const char *extfilename = user->extfilename;
138: PetscBool testp4est_seq = user->testp4est[0];
139: PetscBool testp4est_par = user->testp4est[1];
140: PetscInt triSizes_n2[2] = {4, 4};
141: PetscInt triPoints_n2[8] = {3, 5, 6, 7, 0, 1, 2, 4};
142: PetscInt triSizes_n8[8] = {1, 1, 1, 1, 1, 1, 1, 1};
143: PetscInt triPoints_n8[8] = {0, 1, 2, 3, 4, 5, 6, 7};
144: PetscInt quadSizes[2] = {2, 2};
145: PetscInt quadPoints[4] = {2, 3, 0, 1};
146: PetscInt gmshSizes_n3[3] = {14, 14, 14};
147: PetscInt gmshPoints_n3[42] = {1, 2, 4, 5, 9, 10, 11, 15, 16, 20, 21, 27, 28, 29,
148: 3, 8, 12, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
149: 0, 6, 7, 13, 14, 17, 18, 19, 22, 23, 24, 25, 26, 41};
150: PetscInt fluentSizes_n3[3] = {50, 50, 50};
151: PetscInt fluentPoints_n3[150] = { 5, 6, 7, 8, 12, 14, 16, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 50, 51, 80, 81, 89,
152: 91, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 121, 122, 124, 125, 126, 127, 128, 129, 131, 133, 143, 144, 145, 147,
153: 1, 3, 4, 9, 10, 17, 18, 19, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 47, 61, 71, 72, 73, 74,
154: 75, 76, 77, 78, 79, 86, 87, 88, 90, 92, 113, 115, 116, 117, 118, 119, 120, 123, 138, 140, 141, 142, 146, 148, 149,
155: 0, 2, 11, 13, 15, 20, 21, 22, 23, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67,
156: 68, 69, 70, 82, 83, 84, 85, 102, 103, 105, 106, 107, 108, 109, 110, 111, 112, 114, 130, 132, 134, 135, 136, 137, 139};
157: size_t len, bdlen, extlen;
158: PetscMPIInt rank, size;
162: PetscLogEventBegin(user->createMeshEvent,0,0,0,0);
163: MPI_Comm_rank(comm, &rank);
164: MPI_Comm_size(comm, &size);
165: PetscStrlen(filename, &len);
166: PetscStrlen(bdfilename, &bdlen);
167: PetscStrlen(extfilename, &extlen);
168: PetscLogStagePush(user->stages[STAGE_LOAD]);
169: if (len) {
170: DMPlexCreateFromFile(comm, filename, interpolate, dm);
171: } else if (bdlen) {
172: DM boundary;
174: DMPlexCreateFromFile(comm, bdfilename, interpolate, &boundary);
175: DMPlexGenerate(boundary, NULL, interpolate, dm);
176: DMDestroy(&boundary);
177: } else if (extlen) {
178: DM edm;
180: DMPlexCreateFromFile(comm, extfilename, interpolate, &edm);
181: DMPlexExtrude(edm, user->extrude_layers, user->extrude_thickness, PETSC_TRUE, interpolate, dm);
182: DMDestroy(&edm);
183: } else {
184: switch (user->domainShape) {
185: case BOX:
186: if (cellWedge) {
187: if (dim != 3) SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Dimension must be 3 for a wedge mesh, not %D", dim);
188: DMPlexCreateWedgeBoxMesh(comm, user->domainBoxSizes, user->domainBoxL, user->domainBoxU, user->periodicity, PETSC_FALSE, interpolate, dm);
189: } else {
190: DMPlexCreateBoxMesh(comm, dim, cellSimplex, user->domainBoxSizes, user->domainBoxL, user->domainBoxU, user->periodicity, interpolate, dm);
191: }
192: break;
193: case CYLINDER:
194: if (cellSimplex) SETERRQ(comm, PETSC_ERR_ARG_WRONG, "Cannot mesh a cylinder with simplices");
195: if (dim != 3) SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Dimension must be 3 for a cylinder mesh, not %D", dim);
196: if (cellWedge) {
197: DMPlexCreateWedgeCylinderMesh(comm, 6, interpolate, dm);
198: } else {
199: DMPlexCreateHexCylinderMesh(comm, 3, user->periodicity[2], dm);
200: }
201: break;
202: default: SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Unknown domain shape %D", user->domainShape);
203: }
204: }
205: DMLocalizeCoordinates(*dm); /* needed for periodic */
206: DMViewFromOptions(*dm,NULL,"-init_dm_view");
207: DMGetDimension(*dm,&dim);
209: if (testp4est_seq) {
210: #if defined(PETSC_HAVE_P4EST)
211: DM dmConv = NULL;
213: DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
214: DMPlexRefineSimplexToTensor(*dm, &dmConv);
215: if (dmConv) {
216: DMDestroy(dm);
217: *dm = dmConv;
218: }
219: user->cellSimplex = PETSC_FALSE;
221: DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);
222: if (dmConv) {
223: PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_1_");
224: DMSetFromOptions(dmConv);
225: DMDestroy(dm);
226: *dm = dmConv;
227: }
228: PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_1_");
229: DMSetUp(*dm);
230: DMViewFromOptions(*dm, NULL, "-dm_view");
231: DMConvert(*dm,DMPLEX,&dmConv);
232: if (dmConv) {
233: PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_2_");
234: DMSetFromOptions(dmConv);
235: DMDestroy(dm);
236: *dm = dmConv;
237: }
238: PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_2_");
239: DMViewFromOptions(*dm, NULL, "-dm_view");
240: PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);
241: #else
242: SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
243: #endif
244: }
246: PetscLogStagePop();
247: if (!testp4est_seq) {
248: DM refinedMesh = NULL;
249: DM distributedMesh = NULL;
251: if (user->testPartition) {
252: const PetscInt *sizes = NULL;
253: const PetscInt *points = NULL;
254: PetscPartitioner part;
256: if (!rank) {
257: if (dim == 2 && cellSimplex && size == 2) {
258: sizes = triSizes_n2; points = triPoints_n2;
259: } else if (dim == 2 && cellSimplex && size == 8) {
260: sizes = triSizes_n8; points = triPoints_n8;
261: } else if (dim == 2 && !cellSimplex && size == 2) {
262: sizes = quadSizes; points = quadPoints;
263: } else if (dim == 2 && size == 3) {
264: PetscInt Nc;
266: DMPlexGetHeightStratum(*dm, 0, NULL, &Nc);
267: if (Nc == 42) { /* Gmsh 3 & 4 */
268: sizes = gmshSizes_n3; points = gmshPoints_n3;
269: } else if (Nc == 150) { /* Fluent 1 */
270: sizes = fluentSizes_n3; points = fluentPoints_n3;
271: } else if (Nc == 42) { /* Med 1 */
272: } else if (Nc == 161) { /* Med 3 */
273: }
274: }
275: }
276: DMPlexGetPartitioner(*dm, &part);
277: PetscPartitionerSetType(part, PETSCPARTITIONERSHELL);
278: PetscPartitionerShellSetPartition(part, size, sizes, points);
279: } else {
280: PetscPartitioner part;
282: DMPlexGetPartitioner(*dm,&part);
283: PetscPartitionerSetFromOptions(part);
284: }
285: /* Distribute mesh over processes */
286: PetscLogStagePush(user->stages[STAGE_DISTRIBUTE]);
287: DMViewFromOptions(*dm, NULL, "-dm_pre_dist_view");
288: DMPlexDistribute(*dm, 0, NULL, &distributedMesh);
289: if (distributedMesh) {
290: DMDestroy(dm);
291: *dm = distributedMesh;
292: }
293: PetscLogStagePop();
294: DMViewFromOptions(*dm, NULL, "-distributed_dm_view");
295: /* Refine mesh using a volume constraint */
296: PetscLogStagePush(user->stages[STAGE_REFINE]);
297: DMPlexSetRefinementUniform(*dm, PETSC_FALSE);
298: DMPlexSetRefinementLimit(*dm, refinementLimit);
299: DMRefine(*dm, comm, &refinedMesh);
300: if (refinedMesh) {
301: DMDestroy(dm);
302: *dm = refinedMesh;
303: }
304: PetscLogStagePop();
305: }
306: PetscLogStagePush(user->stages[STAGE_REFINE]);
307: DMSetFromOptions(*dm);
308: PetscLogStagePop();
310: if (testp4est_par) {
311: #if defined(PETSC_HAVE_P4EST)
312: DM dmConv = NULL;
314: DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
315: DMPlexRefineSimplexToTensor(*dm, &dmConv);
316: if (dmConv) {
317: DMDestroy(dm);
318: *dm = dmConv;
319: }
320: user->cellSimplex = PETSC_FALSE;
322: DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);
323: if (dmConv) {
324: PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_1_");
325: DMSetFromOptions(dmConv);
326: DMDestroy(dm);
327: *dm = dmConv;
328: }
329: PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_1_");
330: DMSetUp(*dm);
331: DMViewFromOptions(*dm, NULL, "-dm_view");
332: DMConvert(*dm, DMPLEX, &dmConv);
333: if (dmConv) {
334: PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_2_");
335: DMSetFromOptions(dmConv);
336: DMDestroy(dm);
337: *dm = dmConv;
338: }
339: PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_2_");
340: DMViewFromOptions(*dm, NULL, "-dm_view");
341: PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);
342: #else
343: SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
344: #endif
345: }
347: /* test redistribution of an already distributed mesh */
348: if (user->redistribute) {
349: DM distributedMesh;
352: DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view");
353: DMPlexDistribute(*dm, 0, NULL, &distributedMesh);
354: if (distributedMesh) {
355: DMDestroy(dm);
356: *dm = distributedMesh;
357: }
358: DMViewFromOptions(*dm, NULL, "-dm_post_redist_view");
359: }
361: if (user->overlap) {
362: DM overlapMesh = NULL;
364: /* Add the overlap to refined mesh */
365: PetscLogStagePush(user->stages[STAGE_OVERLAP]);
366: DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view");
367: DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh);
368: if (overlapMesh) {
369: PetscInt overlap;
370: DMPlexGetOverlap(overlapMesh, &overlap);
371: PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %D\n", overlap);
372: DMDestroy(dm);
373: *dm = overlapMesh;
374: }
375: DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view");
376: PetscLogStagePop();
377: }
379: if (simplex2tensor) {
380: DM rdm = NULL;
381: DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
382: DMPlexRefineSimplexToTensor(*dm, &rdm);
383: if (rdm) {
384: DMDestroy(dm);
385: *dm = rdm;
386: }
387: user->cellSimplex = PETSC_FALSE;
388: }
390: if (user->final_ref) {
391: DM refinedMesh = NULL;
393: DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
394: DMRefine(*dm, comm, &refinedMesh);
395: if (refinedMesh) {
396: DMDestroy(dm);
397: *dm = refinedMesh;
398: }
399: }
401: PetscObjectSetName((PetscObject) *dm, "Simplicial Mesh");
402: DMViewFromOptions(*dm, NULL, "-dm_view");
403: if (user->final_diagnostics) {
404: PetscBool interpolated = PETSC_TRUE;
405: PetscInt dim, depth;
407: DMGetDimension(*dm, &dim);
408: DMPlexGetDepth(*dm, &depth);
409: if (depth >= 0 && dim != depth) interpolated = PETSC_FALSE;
411: DMPlexCheckSymmetry(*dm);
412: if (interpolated) {
413: DMPlexCheckFaces(*dm, 0);
414: }
415: DMPlexCheckSkeleton(*dm, 0);
416: DMPlexCheckGeometry(*dm);
417: }
418: PetscLogEventEnd(user->createMeshEvent,0,0,0,0);
419: user->dm = *dm;
420: return(0);
421: }
423: int main(int argc, char **argv)
424: {
425: AppCtx user; /* user-defined work context */
428: PetscInitialize(&argc, &argv, NULL, help);if (ierr) return ierr;
429: ProcessOptions(PETSC_COMM_WORLD, &user);
430: CreateMesh(PETSC_COMM_WORLD, &user, &user.dm);
431: if (user.testShape) {DMPlexCheckCellShape(user.dm, PETSC_TRUE, PETSC_DETERMINE);}
432: DMDestroy(&user.dm);
433: PetscFinalize();
434: return ierr;
435: }
437: /*TEST
439: # CTetGen 0-1
440: test:
441: suffix: 0
442: requires: ctetgen
443: args: -dim 3 -ctetgen_verbose 4 -dm_view ascii::ascii_info_detail -info -info_exclude null
444: test:
445: suffix: 1
446: requires: ctetgen
447: args: -dim 3 -ctetgen_verbose 4 -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail -info -info_exclude null
449: # 2D LaTex and ASCII output 2-9
450: test:
451: suffix: 2
452: requires: triangle
453: args: -dim 2 -dm_view ascii::ascii_latex
454: test:
455: suffix: 3
456: requires: triangle
457: args: -dim 2 -dm_refine 1 -interpolate 1 -dm_view ascii::ascii_info_detail
458: test:
459: suffix: 4
460: requires: triangle
461: nsize: 2
462: args: -dim 2 -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_info_detail
463: test:
464: suffix: 5
465: requires: triangle
466: nsize: 2
467: args: -dim 2 -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_latex
468: test:
469: suffix: 6
470: args: -dim 2 -cell_simplex 0 -interpolate -dm_view ascii::ascii_info_detail
471: test:
472: suffix: 7
473: args: -dim 2 -cell_simplex 0 -interpolate -dm_refine 1 -dm_view ascii::ascii_info_detail
474: test:
475: suffix: 8
476: nsize: 2
477: args: -dim 2 -cell_simplex 0 -interpolate -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_latex
479: # 1D ASCII output
480: test:
481: suffix: 1d_0
482: args: -dim 1 -domain_shape box -dm_view ascii::ascii_info_detail
483: test:
484: suffix: 1d_1
485: args: -dim 1 -domain_shape box -dm_refine 2 -dm_view ascii::ascii_info_detail
486: test:
487: suffix: 1d_2
488: args: -dim 1 -domain_box_sizes 5 -x_periodicity periodic -dm_view ascii::ascii_info_detail -test_shape
490: # Parallel refinement tests with overlap
491: test:
492: suffix: refine_overlap_1d
493: nsize: 2
494: args: -dim 1 -domain_box_sizes 4 -dm_refine 1 -overlap {{0 1 2}separate output} -petscpartitioner_type simple -dm_view ascii::ascii_info
495: test:
496: suffix: refine_overlap_2d
497: requires: triangle
498: nsize: {{2 8}separate output}
499: args: -dim 2 -cell_simplex 1 -dm_refine 1 -interpolate 1 -test_partition -overlap {{0 1 2}separate output} -dm_view ascii::ascii_info
501: # Parallel simple partitioner tests
502: test:
503: suffix: part_simple_0
504: requires: triangle
505: nsize: 2
506: args: -dim 2 -cell_simplex 1 -dm_refine 0 -interpolate 0 -petscpartitioner_type simple -partition_view -dm_view ascii::ascii_info_detail
507: test:
508: suffix: part_simple_1
509: requires: triangle
510: nsize: 8
511: args: -dim 2 -cell_simplex 1 -dm_refine 1 -interpolate 1 -petscpartitioner_type simple -partition_view -dm_view ascii::ascii_info_detail
513: # Parallel partitioner tests
514: test:
515: suffix: part_parmetis_0
516: requires: parmetis
517: nsize: 2
518: args: -dim 2 -cell_simplex 0 -dm_refine 1 -interpolate 1 -petscpartitioner_type parmetis -dm_view -petscpartitioner_view -test_redistribute -dm_plex_csr_via_mat {{0 1}} -dm_pre_redist_view ::load_balance -dm_post_redist_view ::load_balance -petscpartitioner_view_graph
519: test:
520: suffix: part_ptscotch_0
521: requires: ptscotch
522: nsize: 2
523: args: -dim 2 -cell_simplex 0 -dm_refine 0 -interpolate 1 -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_strategy quality -test_redistribute -dm_plex_csr_via_mat {{0 1}} -dm_pre_redist_view ::load_balance -dm_post_redist_view ::load_balance -petscpartitioner_view_graph
524: test:
525: suffix: part_ptscotch_1
526: requires: ptscotch
527: nsize: 8
528: args: -dim 2 -cell_simplex 0 -dm_refine 1 -interpolate 1 -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1
530: # CGNS reader tests 10-11 (need to find smaller test meshes)
531: test:
532: suffix: cgns_0
533: requires: cgns
534: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -interpolate 1 -dm_view
536: # Gmsh mesh reader tests
537: test:
538: suffix: gmsh_0
539: requires: !single
540: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -interpolate 1 -dm_view
541: test:
542: suffix: gmsh_1
543: requires: !single
544: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -interpolate 1 -dm_view
545: test:
546: suffix: gmsh_2
547: requires: !single
548: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -interpolate 1 -dm_view
549: test:
550: suffix: gmsh_3
551: nsize: 3
552: requires: !single
553: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -test_partition -interpolate 1 -dm_view
554: test:
555: suffix: gmsh_4
556: nsize: 3
557: requires: !single
558: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -test_partition -interpolate 1 -dm_view
559: test:
560: suffix: gmsh_5
561: requires: !single
562: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh -interpolate 1 -dm_view
563: # TODO: it seems the mesh is not a valid gmsh (inverted cell)
564: test:
565: suffix: gmsh_6
566: requires: !single
567: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -interpolate 1 -dm_view -final_diagnostics 0
568: test:
569: suffix: gmsh_7
570: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_view ::ascii_info_detail -interpolate -test_shape
571: test:
572: suffix: gmsh_8
573: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh -dm_view ::ascii_info_detail -interpolate -test_shape
574: testset:
575: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic_bin.msh -dm_view ::ascii_info_detail -interpolate -test_shape
576: test:
577: suffix: gmsh_9
578: test:
579: suffix: gmsh_9_periodic_0
580: args: -dm_plex_gmsh_periodic 0
581: testset:
582: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -interpolate -test_shape
583: test:
584: suffix: gmsh_10
585: test:
586: suffix: gmsh_10_periodic_0
587: args: -dm_plex_gmsh_periodic 0
588: testset:
589: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -interpolate -test_shape -dm_refine 1
590: test:
591: suffix: gmsh_11
592: test:
593: suffix: gmsh_11_periodic_0
594: args: -dm_plex_gmsh_periodic 0
595: # TODO: it seems the mesh is not a valid gmsh (inverted cell)
596: test:
597: suffix: gmsh_12
598: nsize: 4
599: requires: !single mpiio
600: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -viewer_binary_mpiio -petscpartitioner_type simple -interpolate 1 -dm_view -final_diagnostics 0
601: test:
602: suffix: gmsh_13_hybs2t
603: nsize: 4
604: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -petscpartitioner_type simple -interpolate 1 -dm_view -test_shape -simplex2tensor -dm_plex_check_faces -dm_plex_check_skeleton -dm_plex_check_symmetry
605: test:
606: suffix: gmsh_14_ext
607: requires: !single
608: args: -ext_layers 2 -ext_thickness 1.5 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -dm_plex_check_symmetry -dm_plex_check_skeleton
609: test:
610: suffix: gmsh_14_ext_s2t
611: requires: !single
612: args: -ext_layers 2 -ext_thickness 1.5 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -interpolate -dm_plex_check_faces -dm_plex_check_symmetry -dm_plex_check_skeleton -simplex2tensor -test_shape
613: test:
614: suffix: gmsh_15_hyb3d
615: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -interpolate -dm_plex_check_faces -dm_plex_check_symmetry -dm_plex_check_skeleton
616: test:
617: suffix: gmsh_15_hyb3d_vtk
618: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view vtk: -dm_plex_gmsh_hybrid
619: test:
620: suffix: gmsh_15_hyb3d_s2t
621: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -interpolate -dm_plex_check_faces -dm_plex_check_symmetry -dm_plex_check_skeleton -simplex2tensor -test_shape
622: test:
623: suffix: gmsh_16_spheresurface
624: nsize : 4
625: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -dm_view -interpolate -test_shape -petscpartitioner_type simple
626: test:
627: suffix: gmsh_16_spheresurface_s2t
628: nsize : 4
629: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -simplex2tensor -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -dm_view -interpolate -test_shape -petscpartitioner_type simple
630: test:
631: suffix: gmsh_16_spheresurface_extruded
632: nsize : 4
633: args: -ext_layers 3 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -dm_view -interpolate -petscpartitioner_type simple
634: test:
635: suffix: gmsh_16_spheresurface_extruded_s2t
636: nsize : 4
637: args: -ext_layers 3 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -simplex2tensor -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -dm_view -interpolate -test_shape -petscpartitioner_type simple
638: test:
639: suffix: gmsh_17_hyb3d_ascii
640: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -dm_plex_gmsh_hybrid
641: test:
642: suffix: gmsh_17_hyb3d_interp_ascii
643: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -interpolate
644: test:
645: suffix: exodus_17_hyb3d_interp_ascii
646: requires: exodusii
647: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -interpolate
649: # Legacy Gmsh v22/v40 ascii/binary reader tests
650: testset:
651: output_file: output/ex1_gmsh_3d_legacy.out
652: args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape
653: test:
654: suffix: gmsh_3d_ascii_v22
655: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2
656: test:
657: suffix: gmsh_3d_ascii_v40
658: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4
659: test:
660: suffix: gmsh_3d_binary_v22
661: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2
662: test:
663: suffix: gmsh_3d_binary_v40
664: requires: long64
665: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4
667: # Gmsh v41 ascii/binary reader tests
668: testset: # 32bit mesh, sequential
669: args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape
670: output_file: output/ex1_gmsh_3d_32.out
671: test:
672: suffix: gmsh_3d_ascii_v41_32
673: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
674: test:
675: suffix: gmsh_3d_binary_v41_32
676: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
677: test:
678: suffix: gmsh_3d_binary_v41_32_mpiio
679: requires: define(PETSC_HAVE_MPIIO)
680: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
681: testset: # 32bit mesh, parallel
682: args: -petscpartitioner_type simple -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape
683: nsize: 2
684: output_file: output/ex1_gmsh_3d_32_np2.out
685: test:
686: suffix: gmsh_3d_ascii_v41_32_np2
687: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
688: test:
689: suffix: gmsh_3d_binary_v41_32_np2
690: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
691: test:
692: suffix: gmsh_3d_binary_v41_32_np2_mpiio
693: requires: define(PETSC_HAVE_MPIIO)
694: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
695: testset: # 64bit mesh, sequential
696: args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape
697: output_file: output/ex1_gmsh_3d_64.out
698: test:
699: suffix: gmsh_3d_ascii_v41_64
700: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
701: test:
702: suffix: gmsh_3d_binary_v41_64
703: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
704: test:
705: suffix: gmsh_3d_binary_v41_64_mpiio
706: requires: define(PETSC_HAVE_MPIIO)
707: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
708: testset: # 64bit mesh, parallel
709: args: -petscpartitioner_type simple -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape
710: nsize: 2
711: output_file: output/ex1_gmsh_3d_64_np2.out
712: test:
713: suffix: gmsh_3d_ascii_v41_64_np2
714: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
715: test:
716: suffix: gmsh_3d_binary_v41_64_np2
717: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
718: test:
719: suffix: gmsh_3d_binary_v41_64_np2_mpiio
720: requires: define(PETSC_HAVE_MPIIO)
721: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
723: # Fluent mesh reader tests
724: # TODO: Geometry checks fail
725: test:
726: suffix: fluent_0
727: requires: !complex
728: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -interpolate 1 -dm_view -final_diagnostics 0
729: test:
730: suffix: fluent_1
731: nsize: 3
732: requires: !complex
733: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -interpolate 1 -test_partition -dm_view -final_diagnostics 0
734: test:
735: suffix: fluent_2
736: requires: !complex
737: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -interpolate 1 -dm_view -final_diagnostics 0
738: test:
739: suffix: fluent_3
740: requires: !complex
741: TODO: broken
742: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -interpolate 1 -dm_view -final_diagnostics 0
744: # Med mesh reader tests, including parallel file reads
745: test:
746: suffix: med_0
747: requires: med
748: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -interpolate 1 -dm_view
749: test:
750: suffix: med_1
751: requires: med
752: nsize: 3
753: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -interpolate 1 -petscpartitioner_type simple -dm_view
754: test:
755: suffix: med_2
756: requires: med
757: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -interpolate 1 -dm_view
758: test:
759: suffix: med_3
760: requires: med
761: TODO: MED
762: nsize: 3
763: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -interpolate 1 -petscpartitioner_type simple -dm_view
765: # Test shape quality
766: test:
767: suffix: test_shape
768: requires: ctetgen
769: args: -dim 3 -interpolate -dm_refine_hierarchy 3 -test_shape
771: # Test simplex to tensor conversion
772: test:
773: suffix: s2t2
774: requires: triangle
775: args: -dim 2 -simplex2tensor -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail
777: test:
778: suffix: s2t3
779: requires: ctetgen
780: args: -dim 3 -simplex2tensor -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail
782: # Test domain shapes
783: test:
784: suffix: cylinder
785: args: -dim 3 -cell_simplex 0 -interpolate -domain_shape cylinder -test_shape -dm_view
787: test:
788: suffix: cylinder_per
789: args: -dim 3 -cell_simplex 0 -interpolate -domain_shape cylinder -z_periodicity periodic -test_shape -dm_view
791: test:
792: suffix: cylinder_wedge
793: args: -dim 3 -cell_simplex 0 -interpolate 0 -cell_wedge -domain_shape cylinder -dm_view vtk: -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton
795: test:
796: suffix: cylinder_wedge_int
797: output_file: output/ex1_cylinder_wedge.out
798: args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape cylinder -dm_view vtk: -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton
800: test:
801: suffix: box_2d
802: args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 2 -test_shape -dm_view
804: test:
805: suffix: box_2d_per
806: args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 2 -test_shape -dm_view
808: test:
809: suffix: box_2d_per_unint
810: args: -dim 2 -cell_simplex 0 -interpolate 0 -domain_shape box -domain_box_sizes 3,3 -test_shape -dm_view ::ascii_info_detail
812: test:
813: suffix: box_3d
814: args: -dim 3 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 3 -test_shape -dm_view
816: test:
817: requires: triangle
818: suffix: box_wedge
819: args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape box -dm_view vtk: -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton
821: testset:
822: requires: triangle
823: args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape box -domain_box_sizes 2,3,1 -dm_view -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -simplex2tensor -test_shape
824: test:
825: suffix: box_wedge_s2t
826: test:
827: nsize: 3
828: args: -petscpartitioner_type simple
829: suffix: box_wedge_s2t_parallel
831: # Test GLVis output
832: test:
833: suffix: glvis_2d_tet
834: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
836: test:
837: suffix: glvis_2d_tet_per
838: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
840: test:
841: suffix: glvis_2d_tet_per_mfem
842: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -viewer_glvis_dm_plex_enable_boundary -viewer_glvis_dm_plex_enable_mfem -dm_view glvis: -interpolate
844: test:
845: suffix: glvis_2d_quad
846: args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3 -dm_view glvis:
848: test:
849: suffix: glvis_2d_quad_per
850: args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3 -x_periodicity periodic -y_periodicity periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
852: test:
853: suffix: glvis_2d_quad_per_mfem
854: args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3 -x_periodicity periodic -y_periodicity periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -viewer_glvis_dm_plex_enable_mfem
856: test:
857: suffix: glvis_3d_tet
858: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
860: test:
861: suffix: glvis_3d_tet_per
862: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_view glvis: -interpolate -viewer_glvis_dm_plex_enable_boundary
864: test:
865: suffix: glvis_3d_tet_per_mfem
866: TODO: broken
867: args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -viewer_glvis_dm_plex_enable_mfem -dm_view glvis: -interpolate
869: test:
870: suffix: glvis_3d_hex
871: args: -dim 3 -cell_simplex 0 -domain_shape box -domain_box_sizes 3,3,3 -dm_view glvis:
873: test:
874: suffix: glvis_3d_hex_per
875: args: -dim 3 -cell_simplex 0 -domain_shape box -domain_box_sizes 3,3,3 -x_periodicity periodic -y_periodicity periodic -z_periodicity periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
877: test:
878: suffix: glvis_3d_hex_per_mfem
879: args: -dim 3 -cell_simplex 0 -domain_shape box -domain_box_sizes 3,3,3 -x_periodicity periodic -y_periodicity periodic -z_periodicity periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -viewer_glvis_dm_plex_enable_mfem -interpolate
881: # Test P4EST
882: testset:
883: requires: p4est
884: args: -interpolate -dm_view -test_p4est_seq -test_shape -conv_seq_2_dm_plex_check_symmetry -conv_seq_2_dm_plex_check_skeleton -conv_seq_2_dm_plex_check_faces -conv_seq_1_dm_forest_minimum_refinement 1
885: test:
886: suffix: p4est_periodic
887: args: -dim 2 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -domain_box_sizes 3,5 -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 2 -conv_seq_1_dm_p4est_refine_pattern hash
888: test:
889: suffix: p4est_periodic_3d
890: args: -dim 3 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -z_periodicity -domain_box_sizes 3,5,4 -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 2 -conv_seq_1_dm_p4est_refine_pattern hash
891: test:
892: suffix: p4est_gmsh_periodic
893: args: -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
894: test:
895: suffix: p4est_gmsh_surface
896: args: -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
897: test:
898: suffix: p4est_gmsh_surface_parallel
899: nsize: 2
900: args: -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -petscpartitioner_type simple -dm_view ::load_balance
901: test:
902: suffix: p4est_hyb_2d
903: args: -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh
904: test:
905: suffix: p4est_hyb_3d
906: args: -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh
907: test:
908: requires: ctetgen
909: suffix: p4est_s2t_bugfaces_3d
910: args: -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 0 -dim 3 -domain_box_sizes 1,1 -cell_simplex
911: test:
912: suffix: p4est_bug_overlapsf
913: nsize: 3
914: args: -dim 3 -cell_simplex 0 -domain_box_sizes 2,2,1 -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -petscpartitioner_type simple
915: test:
916: suffix: p4est_redistribute
917: nsize: 3
918: args: -dim 3 -cell_simplex 0 -domain_box_sizes 2,2,1 -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -petscpartitioner_type simple -test_redistribute -dm_plex_csr_via_mat {{0 1}} -dm_view ::load_balance
919: test:
920: suffix: p4est_gmsh_s2t_3d
921: args: -conv_seq_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
922: test:
923: suffix: p4est_gmsh_s2t_3d_hash
924: args: -conv_seq_1_dm_forest_initial_refinement 1 -conv_seq_1_dm_forest_maximum_refinement 2 -conv_seq_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
925: test:
926: requires: long_runtime
927: suffix: p4est_gmsh_periodic_3d
928: args: -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh
930: testset:
931: requires: p4est
932: nsize: 6
933: args: -interpolate -test_p4est_par -test_shape -conv_par_2_dm_plex_check_symmetry -conv_par_2_dm_plex_check_skeleton -conv_par_2_dm_plex_check_faces -conv_par_1_dm_forest_minimum_refinement 1 -conv_par_1_dm_forest_partition_overlap 0
934: test:
935: suffix: p4est_par_periodic
936: args: -dim 2 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -domain_box_sizes 3,5 -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 2 -conv_par_1_dm_p4est_refine_pattern hash
937: test:
938: suffix: p4est_par_periodic_3d
939: args: -dim 3 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -z_periodicity -domain_box_sizes 3,5,4 -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 2 -conv_par_1_dm_p4est_refine_pattern hash
940: test:
941: suffix: p4est_par_gmsh_periodic
942: args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
943: test:
944: suffix: p4est_par_gmsh_surface
945: args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
946: test:
947: suffix: p4est_par_gmsh_s2t_3d
948: args: -conv_par_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
949: test:
950: suffix: p4est_par_gmsh_s2t_3d_hash
951: args: -conv_par_1_dm_forest_initial_refinement 1 -conv_par_1_dm_forest_maximum_refinement 2 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
952: test:
953: requires: long_runtime
954: suffix: p4est_par_gmsh_periodic_3d
955: args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh
957: testset:
958: requires: p4est
959: nsize: 6
960: args: -interpolate -test_p4est_par -test_shape -conv_par_2_dm_plex_check_symmetry -conv_par_2_dm_plex_check_skeleton -conv_par_2_dm_plex_check_faces -conv_par_1_dm_forest_minimum_refinement 1 -conv_par_1_dm_forest_partition_overlap 1 -petscpartitioner_type simple
961: test:
962: suffix: p4est_par_ovl_periodic
963: args: -dim 2 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -domain_box_sizes 3,5 -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 2 -conv_par_1_dm_p4est_refine_pattern hash
964: #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled)
965: test:
966: suffix: p4est_par_ovl_periodic_3d
967: args: -dim 3 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -z_periodicity -domain_box_sizes 3,5,4 -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 2 -conv_par_1_dm_p4est_refine_pattern hash -final_diagnostics 0
968: test:
969: suffix: p4est_par_ovl_gmsh_periodic
970: args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
971: test:
972: suffix: p4est_par_ovl_gmsh_surface
973: args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
974: test:
975: suffix: p4est_par_ovl_gmsh_s2t_3d
976: args: -conv_par_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
977: test:
978: suffix: p4est_par_ovl_gmsh_s2t_3d_hash
979: args: -conv_par_1_dm_forest_initial_refinement 1 -conv_par_1_dm_forest_maximum_refinement 2 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
980: test:
981: requires: long_runtime
982: suffix: p4est_par_ovl_gmsh_periodic_3d
983: args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh
984: test:
985: suffix: p4est_par_ovl_hyb_2d
986: args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh
987: test:
988: suffix: p4est_par_ovl_hyb_3d
989: args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh
991: test:
992: TODO: broken
993: requires: p4est
994: nsize: 2
995: suffix: p4est_bug_labels_noovl
996: args: -interpolate -test_p4est_seq -test_shape -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_forest_minimum_refinement 0 -dm_forest_partition_overlap 1 -dim 2 -domain_shape box -cell_simplex 0 -domain_box_sizes 3,3 -dm_forest_initial_refinement 0 -dm_forest_maximum_refinement 2 -dm_p4est_refine_pattern hash -petscpartitioner_type simple -dm_forest_print_label_error
998: test:
999: requires: p4est
1000: nsize: 2
1001: suffix: p4est_bug_distribute_overlap
1002: args: -interpolate -test_p4est_seq -test_shape -conv_seq_2_dm_plex_check_symmetry -conv_seq_2_dm_plex_check_skeleton -conv_seq_2_dm_plex_check_faces -conv_seq_1_dm_forest_minimum_refinement 0 -conv_seq_1_dm_forest_partition_overlap 0 -dim 2 -domain_shape box -cell_simplex 0 -domain_box_sizes 3,3 -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 2 -conv_seq_1_dm_p4est_refine_pattern hash -petscpartitioner_type simple -overlap 1 -dm_view ::load_balance
1003: args: -dm_post_overlap_view
1005: test:
1006: suffix: glvis_2d_hyb
1007: args: -dim 2 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -interpolate -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -petscpartitioner_type simple
1009: test:
1010: suffix: glvis_3d_hyb
1011: args: -dim 3 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -interpolate -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -petscpartitioner_type simple
1013: test:
1014: suffix: glvis_3d_hyb_s2t
1015: args: -dim 3 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_3d_cube.msh -interpolate -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -petscpartitioner_type simple -simplex2tensor
1016: TEST*/