Actual source code: ex1.c

  1: static char help[] = "Tests various DMPlex routines to construct, refine and distribute a mesh.\n\n";

  3: #include <petscdmplex.h>
  4: #include <petscdmplextransform.h>
  5: #include <petscsf.h>

  7: enum {STAGE_LOAD, STAGE_DISTRIBUTE, STAGE_REFINE, STAGE_OVERLAP};

  9: typedef struct {
 10:   PetscLogEvent createMeshEvent;
 11:   PetscLogStage stages[4];
 12:   /* Domain and mesh definition */
 13:   PetscInt      dim;                             /* The topological mesh dimension */
 14:   PetscInt      overlap;                         /* The cell overlap to use during partitioning */
 15:   PetscBool     testp4est[2];
 16:   PetscBool     redistribute;
 17:   PetscBool     final_ref;                       /* Run refinement at the end */
 18:   PetscBool     final_diagnostics;               /* Run diagnostics on the final mesh */
 19: } AppCtx;

 21: PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
 22: {

 26:   options->dim               = 2;
 27:   options->overlap           = 0;
 28:   options->testp4est[0]      = PETSC_FALSE;
 29:   options->testp4est[1]      = PETSC_FALSE;
 30:   options->redistribute      = PETSC_FALSE;
 31:   options->final_ref         = PETSC_FALSE;
 32:   options->final_diagnostics = PETSC_TRUE;

 34:   PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");
 35:   PetscOptionsRangeInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, NULL,1,3);
 36:   PetscOptionsBoundedInt("-overlap", "The cell overlap for partitioning", "ex1.c", options->overlap, &options->overlap, NULL,0);
 37:   PetscOptionsBool("-test_p4est_seq", "Test p4est with sequential base DM", "ex1.c", options->testp4est[0], &options->testp4est[0], NULL);
 38:   PetscOptionsBool("-test_p4est_par", "Test p4est with parallel base DM", "ex1.c", options->testp4est[1], &options->testp4est[1], NULL);
 39:   PetscOptionsBool("-test_redistribute", "Test redistribution", "ex1.c", options->redistribute, &options->redistribute, NULL);
 40:   PetscOptionsBool("-final_ref", "Run uniform refinement on the final mesh", "ex1.c", options->final_ref, &options->final_ref, NULL);
 41:   PetscOptionsBool("-final_diagnostics", "Run diagnostics on the final mesh", "ex1.c", options->final_diagnostics, &options->final_diagnostics, NULL);
 42:   PetscOptionsEnd();

 44:   PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent);
 45:   PetscLogStageRegister("MeshLoad",       &options->stages[STAGE_LOAD]);
 46:   PetscLogStageRegister("MeshDistribute", &options->stages[STAGE_DISTRIBUTE]);
 47:   PetscLogStageRegister("MeshRefine",     &options->stages[STAGE_REFINE]);
 48:   PetscLogStageRegister("MeshOverlap",    &options->stages[STAGE_OVERLAP]);
 49:   return(0);
 50: }

 52: PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm)
 53: {
 54:   PetscInt       dim           = user->dim;
 55:   PetscBool      testp4est_seq = user->testp4est[0];
 56:   PetscBool      testp4est_par = user->testp4est[1];
 57:   PetscMPIInt    rank, size;
 58:   PetscBool      periodic;

 62:   PetscLogEventBegin(user->createMeshEvent,0,0,0,0);
 63:   MPI_Comm_rank(comm, &rank);
 64:   MPI_Comm_size(comm, &size);
 65:   PetscLogStagePush(user->stages[STAGE_LOAD]);
 66:   DMCreate(comm, dm);
 67:   DMSetType(*dm, DMPLEX);
 68:   DMSetFromOptions(*dm);

 70:   /* For topologically periodic meshes, we first localize coordinates,
 71:      and then remove any information related with the
 72:      automatic computation of localized vertices.
 73:      This way, refinement operations and conversions to p4est
 74:      will preserve the shape of the domain in physical space */
 75:   DMLocalizeCoordinates(*dm);
 76:   DMGetPeriodicity(*dm, &periodic, NULL, NULL, NULL);
 77:   if (periodic) {DMSetPeriodicity(*dm, PETSC_TRUE, NULL, NULL, NULL);}

 79:   DMViewFromOptions(*dm,NULL,"-init_dm_view");
 80:   DMGetDimension(*dm, &dim);

 82:   if (testp4est_seq) {
 83: #if defined(PETSC_HAVE_P4EST)
 84:     DM dmConv = NULL;

 86:     DMPlexCheckSymmetry(*dm);
 87:     DMPlexCheckSkeleton(*dm, 0);
 88:     DMPlexCheckFaces(*dm, 0);
 89:     DMPlexCheckGeometry(*dm);
 90:     DMPlexCheckPointSF(*dm);
 91:     DMPlexCheckInterfaceCones(*dm);
 92:     DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
 93:     DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX);
 94:     DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);
 95:     PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);
 96:     if (dmConv) {
 97:       DMDestroy(dm);
 98:       *dm  = dmConv;
 99:     }
100:     DMViewFromOptions(*dm,NULL,"-initref_dm_view");
101:     DMPlexCheckSymmetry(*dm);
102:     DMPlexCheckSkeleton(*dm, 0);
103:     DMPlexCheckFaces(*dm, 0);
104:     DMPlexCheckGeometry(*dm);
105:     DMPlexCheckPointSF(*dm);
106:     DMPlexCheckInterfaceCones(*dm);

108:     DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);
109:     if (dmConv) {
110:       PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_1_");
111:       DMSetFromOptions(dmConv);
112:       DMDestroy(dm);
113:       *dm  = dmConv;
114:     }
115:     PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_1_");
116:     DMSetUp(*dm);
117:     DMViewFromOptions(*dm, NULL, "-dm_view");
118:     DMConvert(*dm,DMPLEX,&dmConv);
119:     if (dmConv) {
120:       PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_2_");
121:       DMSetFromOptions(dmConv);
122:       DMDestroy(dm);
123:       *dm  = dmConv;
124:     }
125:     PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_2_");
126:     DMViewFromOptions(*dm, NULL, "-dm_view");
127:     PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);
128: #else
129:     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
130: #endif
131:   }

133:   PetscLogStagePop();
134:   if (!testp4est_seq) {
135:     PetscLogStagePush(user->stages[STAGE_DISTRIBUTE]);
136:     DMViewFromOptions(*dm, NULL, "-dm_pre_dist_view");
137:     PetscObjectSetOptionsPrefix((PetscObject) *dm, "dist_");
138:     DMSetFromOptions(*dm);
139:     PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);
140:     PetscLogStagePop();
141:     DMViewFromOptions(*dm, NULL, "-distributed_dm_view");
142:   }
143:   PetscLogStagePush(user->stages[STAGE_REFINE]);
144:   PetscObjectSetOptionsPrefix((PetscObject) *dm, "ref_");
145:   DMSetFromOptions(*dm);
146:   PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);
147:   PetscLogStagePop();

149:   if (testp4est_par) {
150: #if defined(PETSC_HAVE_P4EST)
151:     DM dmConv = NULL;

153:     DMViewFromOptions(*dm, NULL, "-dm_tobox_view");
154:     DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
155:     DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX);
156:     DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);
157:     PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);
158:     if (dmConv) {
159:       DMDestroy(dm);
160:       *dm  = dmConv;
161:     }
162:     DMViewFromOptions(*dm, NULL, "-dm_tobox_view");
163:     DMPlexCheckSymmetry(*dm);
164:     DMPlexCheckSkeleton(*dm, 0);
165:     DMPlexCheckFaces(*dm, 0);
166:     DMPlexCheckGeometry(*dm);
167:     DMPlexCheckPointSF(*dm);
168:     DMPlexCheckInterfaceCones(*dm);

170:     DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);
171:     if (dmConv) {
172:       PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_1_");
173:       DMSetFromOptions(dmConv);
174:       DMDestroy(dm);
175:       *dm  = dmConv;
176:     }
177:     PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_1_");
178:     DMSetUp(*dm);
179:     DMViewFromOptions(*dm, NULL, "-dm_view");
180:     DMConvert(*dm, DMPLEX, &dmConv);
181:     if (dmConv) {
182:       PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_2_");
183:       DMSetFromOptions(dmConv);
184:       DMDestroy(dm);
185:       *dm  = dmConv;
186:     }
187:     PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_2_");
188:     DMViewFromOptions(*dm, NULL, "-dm_view");
189:     PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);
190: #else
191:     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
192: #endif
193:   }

195:   /* test redistribution of an already distributed mesh */
196:   if (user->redistribute) {
197:     DM       distributedMesh;
198:     PetscSF  sf;
199:     PetscInt nranks;

201:     DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view");
202:     DMPlexDistribute(*dm, 0, NULL, &distributedMesh);
203:     if (distributedMesh) {
204:       DMGetPointSF(distributedMesh, &sf);
205:       PetscSFSetUp(sf);
206:       DMGetNeighbors(distributedMesh, &nranks, NULL);
207:       MPI_Allreduce(MPI_IN_PLACE, &nranks, 1, MPIU_INT, MPI_MIN, PetscObjectComm((PetscObject)*dm));
208:       PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)*dm)), "Minimum number of neighbors: %D\n", nranks);
209:       DMDestroy(dm);
210:       *dm  = distributedMesh;
211:     }
212:     DMViewFromOptions(*dm, NULL, "-dm_post_redist_view");
213:   }

215:   if (user->overlap) {
216:     DM overlapMesh = NULL;

218:     /* Add the overlap to refined mesh */
219:     PetscLogStagePush(user->stages[STAGE_OVERLAP]);
220:     DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view");
221:     DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh);
222:     if (overlapMesh) {
223:       PetscInt overlap;
224:       DMPlexGetOverlap(overlapMesh, &overlap);
225:       PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %D\n", overlap);
226:       DMDestroy(dm);
227:       *dm = overlapMesh;
228:     }
229:     DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view");
230:     PetscLogStagePop();
231:   }
232:   if (user->final_ref) {
233:     DM refinedMesh = NULL;

235:     DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
236:     DMRefine(*dm, comm, &refinedMesh);
237:     if (refinedMesh) {
238:       DMDestroy(dm);
239:       *dm  = refinedMesh;
240:     }
241:   }

243:   PetscObjectSetName((PetscObject) *dm, "Generated Mesh");
244:   DMViewFromOptions(*dm, NULL, "-dm_view");
245:   if (user->final_diagnostics) {
246:     DMPlexInterpolatedFlag interpolated;
247:     PetscInt  dim, depth;

249:     DMGetDimension(*dm, &dim);
250:     DMPlexGetDepth(*dm, &depth);
251:     DMPlexIsInterpolatedCollective(*dm, &interpolated);

253:     DMPlexCheckSymmetry(*dm);
254:     if (interpolated == DMPLEX_INTERPOLATED_FULL) {
255:       DMPlexCheckFaces(*dm, 0);
256:     }
257:     DMPlexCheckSkeleton(*dm, 0);
258:     DMPlexCheckGeometry(*dm);
259:   }
260:   PetscLogEventEnd(user->createMeshEvent,0,0,0,0);
261:   return(0);
262: }

264: int main(int argc, char **argv)
265: {
266:   DM             dm;
267:   AppCtx         user;

270:   PetscInitialize(&argc, &argv, NULL, help);if (ierr) return ierr;
271:   ProcessOptions(PETSC_COMM_WORLD, &user);
272:   CreateMesh(PETSC_COMM_WORLD, &user, &dm);
273:   DMDestroy(&dm);
274:   PetscFinalize();
275:   return ierr;
276: }

278: /*TEST

280:   # CTetGen 0-1
281:   test:
282:     suffix: 0
283:     requires: ctetgen
284:     args: -dm_coord_space 0 -dm_plex_dim 3 -dim 3 -dm_plex_interpolate 0 -ctetgen_verbose 4 -dm_view ascii::ascii_info_detail -info :~sys
285:   test:
286:     suffix: 1
287:     requires: ctetgen
288:     args: -dm_coord_space 0 -dm_plex_dim 3 -dim 3 -dm_plex_interpolate 0 -ctetgen_verbose 4 -dm_refine_volume_limit_pre 0.0625 -dm_view ascii::ascii_info_detail -info :~sys

290:   # 2D LaTex and ASCII output 2-9
291:   test:
292:     suffix: 2
293:     requires: triangle
294:     args: -dm_plex_interpolate 0 -dm_view ascii::ascii_latex
295:   test:
296:     suffix: 3
297:     requires: triangle
298:     args: -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
299:   test:
300:     suffix: 4
301:     requires: triangle
302:     nsize: 2
303:     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_info_detail
304:   test:
305:     suffix: 5
306:     requires: triangle
307:     nsize: 2
308:     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
309:   test:
310:     suffix: 6
311:     args: -dm_coord_space 0 -dm_plex_simplex 0 -dm_view ascii::ascii_info_detail
312:   test:
313:     suffix: 7
314:     args: -dm_coord_space 0 -dm_plex_simplex 0 -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
315:   test:
316:     suffix: 8
317:     nsize: 2
318:     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex

320:   # 1D ASCII output
321:   testset:
322:     args: -dm_coord_space 0 -dm_plex_dim 1 -dm_view ascii::ascii_info_detail -dm_plex_check_all
323:     test:
324:       suffix: 1d_0
325:       args:
326:     test:
327:       suffix: 1d_1
328:       args: -ref_dm_refine 2
329:     test:
330:       suffix: 1d_2
331:       args: -dm_plex_box_faces 5 -dm_plex_box_bd periodic

333:   # Parallel refinement tests with overlap
334:   test:
335:     suffix: refine_overlap_1d
336:     nsize: 2
337:     args: -dm_plex_dim 1 -dim 1 -dm_plex_box_faces 4 -dm_plex_box_faces 4 -ref_dm_refine 1 -overlap {{0 1 2}separate output} -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_info
338:   test:
339:     suffix: refine_overlap_2d
340:     requires: triangle
341:     nsize: {{2 8}separate output}
342:     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -overlap {{0 1 2}separate output} -dm_view ascii::ascii_info

344:   # Parallel simple partitioner tests
345:   test:
346:     suffix: part_simple_0
347:     requires: triangle
348:     nsize: 2
349:     args: -dm_coord_space 0 -dm_plex_interpolate 0 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail
350:   test:
351:     suffix: part_simple_1
352:     requires: triangle
353:     nsize: 8
354:     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail

356:   # Parallel partitioner tests
357:   test:
358:     suffix: part_parmetis_0
359:     requires: parmetis
360:     nsize: 2
361:     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -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
362:   test:
363:     suffix: part_ptscotch_0
364:     requires: ptscotch
365:     nsize: 2
366:     args: -dm_plex_simplex 0 -dist_dm_distribute -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
367:   test:
368:     suffix: part_ptscotch_1
369:     requires: ptscotch
370:     nsize: 8
371:     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1

373:   # CGNS reader tests 10-11 (need to find smaller test meshes)
374:   test:
375:     suffix: cgns_0
376:     requires: cgns
377:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -dm_view

379:   # Gmsh mesh reader tests
380:   testset:
381:     args: -dm_coord_space 0 -dm_view

383:     test:
384:       suffix: gmsh_0
385:       requires: !single
386:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
387:     test:
388:       suffix: gmsh_1
389:       requires: !single
390:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh
391:     test:
392:       suffix: gmsh_2
393:       requires: !single
394:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh
395:     test:
396:       suffix: gmsh_3
397:       nsize: 3
398:       requires: !single
399:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -dist_dm_distribute -petscpartitioner_type simple
400:     test:
401:       suffix: gmsh_4
402:       nsize: 3
403:       requires: !single
404:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dist_dm_distribute -petscpartitioner_type simple
405:     test:
406:       suffix: gmsh_5
407:       requires: !single
408:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh
409:     # TODO: it seems the mesh is not a valid gmsh (inverted cell)
410:     test:
411:       suffix: gmsh_6
412:       requires: !single
413:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -final_diagnostics 0
414:     test:
415:       suffix: gmsh_7
416:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_view ::ascii_info_detail -dm_plex_check_all
417:     test:
418:       suffix: gmsh_8
419:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh -dm_view ::ascii_info_detail -dm_plex_check_all
420:   testset:
421:     args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic_bin.msh -dm_view ::ascii_info_detail -dm_plex_check_all
422:     test:
423:       suffix: gmsh_9
424:     test:
425:       suffix: gmsh_9_periodic_0
426:       args: -dm_plex_gmsh_periodic 0
427:   testset:
428:     args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -dm_plex_check_all
429:     test:
430:       suffix: gmsh_10
431:     test:
432:       suffix: gmsh_10_periodic_0
433:       args: -dm_plex_gmsh_periodic 0
434:   testset:
435:     args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -dm_plex_check_all -ref_dm_refine 1
436:     test:
437:       suffix: gmsh_11
438:     test:
439:       suffix: gmsh_11_periodic_0
440:       args: -dm_plex_gmsh_periodic 0
441:   # TODO: it seems the mesh is not a valid gmsh (inverted cell)
442:   test:
443:     suffix: gmsh_12
444:     nsize: 4
445:     requires: !single mpiio
446:     args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -viewer_binary_mpiio -dist_dm_distribute -petscpartitioner_type simple -dm_view -final_diagnostics 0
447:   test:
448:     suffix: gmsh_13_hybs2t
449:     nsize: 4
450:     args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dist_dm_distribute -petscpartitioner_type simple -dm_view -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox -dm_plex_check_all
451:   test:
452:     suffix: gmsh_14_ext
453:     requires: !single
454:     args: -dm_coord_space 0 -dm_extrude_layers 2 -dm_extrude_thickness 1.5 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -dm_plex_check_all
455:   test:
456:     suffix: gmsh_14_ext_s2t
457:     requires: !single
458:     args: -dm_coord_space 0 -dm_extrude_layers 2 -dm_extrude_thickness 1.5 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -dm_plex_check_all -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox
459:   test:
460:     suffix: gmsh_15_hyb3d
461:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -dm_plex_check_all
462:   test:
463:     suffix: gmsh_15_hyb3d_vtk
464:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view vtk: -dm_plex_gmsh_hybrid -dm_plex_check_all
465:   test:
466:     suffix: gmsh_15_hyb3d_s2t
467:     args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -dm_plex_check_all -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox
468:   test:
469:     suffix: gmsh_16_spheresurface
470:     nsize : 4
471:     args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_all -dm_view -dist_dm_distribute -petscpartitioner_type simple
472:   test:
473:     suffix: gmsh_16_spheresurface_s2t
474:     nsize : 4
475:     args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox -dm_plex_check_all -dm_view -dist_dm_distribute -petscpartitioner_type simple
476:   test:
477:     suffix: gmsh_16_spheresurface_extruded
478:     nsize : 4
479:     args: -dm_coord_space 0 -dm_extrude_layers 3 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_all -dm_view -dist_dm_distribute -petscpartitioner_type simple
480:   test:
481:     suffix: gmsh_16_spheresurface_extruded_s2t
482:     nsize : 4
483:     args: -dm_coord_space 0 -dm_extrude_layers 3 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox -dm_plex_check_all -dm_view -dist_dm_distribute -petscpartitioner_type simple
484:   test:
485:     suffix: gmsh_17_hyb3d_interp_ascii
486:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -dm_plex_check_all
487:   test:
488:     suffix: exodus_17_hyb3d_interp_ascii
489:     requires: exodusii
490:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -dm_plex_check_all

492:   # Legacy Gmsh v22/v40 ascii/binary reader tests
493:   testset:
494:     output_file: output/ex1_gmsh_3d_legacy.out
495:     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
496:     test:
497:       suffix: gmsh_3d_ascii_v22
498:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2
499:     test:
500:       suffix: gmsh_3d_ascii_v40
501:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4
502:     test:
503:       suffix: gmsh_3d_binary_v22
504:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2
505:     test:
506:       suffix: gmsh_3d_binary_v40
507:       requires: long64
508:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4

510:   # Gmsh v41 ascii/binary reader tests
511:   testset: # 32bit mesh, sequential
512:     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
513:     output_file: output/ex1_gmsh_3d_32.out
514:     test:
515:       suffix: gmsh_3d_ascii_v41_32
516:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
517:     test:
518:       suffix: gmsh_3d_binary_v41_32
519:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
520:     test:
521:       suffix: gmsh_3d_binary_v41_32_mpiio
522:       requires: defined(PETSC_HAVE_MPIIO)
523:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
524:   testset:  # 32bit mesh, parallel
525:     args: -dm_coord_space 0 -dist_dm_distribute -petscpartitioner_type simple -dm_view ::ascii_info_detail -dm_plex_check_all
526:     nsize: 2
527:     output_file: output/ex1_gmsh_3d_32_np2.out
528:     test:
529:       suffix: gmsh_3d_ascii_v41_32_np2
530:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
531:     test:
532:       suffix: gmsh_3d_binary_v41_32_np2
533:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
534:     test:
535:       suffix: gmsh_3d_binary_v41_32_np2_mpiio
536:       requires: defined(PETSC_HAVE_MPIIO)
537:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
538:   testset: # 64bit mesh, sequential
539:     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
540:     output_file: output/ex1_gmsh_3d_64.out
541:     test:
542:       suffix: gmsh_3d_ascii_v41_64
543:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
544:     test:
545:       suffix: gmsh_3d_binary_v41_64
546:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
547:     test:
548:       suffix: gmsh_3d_binary_v41_64_mpiio
549:       requires: defined(PETSC_HAVE_MPIIO)
550:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
551:   testset:  # 64bit mesh, parallel
552:     args: -dm_coord_space 0 -dist_dm_distribute -petscpartitioner_type simple -dm_view ::ascii_info_detail -dm_plex_check_all
553:     nsize: 2
554:     output_file: output/ex1_gmsh_3d_64_np2.out
555:     test:
556:       suffix: gmsh_3d_ascii_v41_64_np2
557:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
558:     test:
559:       suffix: gmsh_3d_binary_v41_64_np2
560:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
561:     test:
562:       suffix: gmsh_3d_binary_v41_64_np2_mpiio
563:       requires: defined(PETSC_HAVE_MPIIO)
564:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio

566:   # Fluent mesh reader tests
567:   # TODO: Geometry checks fail
568:   test:
569:     suffix: fluent_0
570:     requires: !complex
571:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dm_view -final_diagnostics 0
572:   test:
573:     suffix: fluent_1
574:     nsize: 3
575:     requires: !complex
576:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dist_dm_distribute -petscpartitioner_type simple -dm_view -final_diagnostics 0
577:   test:
578:     suffix: fluent_2
579:     requires: !complex
580:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -dm_view -final_diagnostics 0
581:   test:
582:     suffix: fluent_3
583:     requires: !complex
584:     TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382
585:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -dm_view -final_diagnostics 0

587:   # Med mesh reader tests, including parallel file reads
588:   test:
589:     suffix: med_0
590:     requires: med
591:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dm_view
592:   test:
593:     suffix: med_1
594:     requires: med
595:     nsize: 3
596:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dist_dm_distribute -petscpartitioner_type simple -dm_view
597:   test:
598:     suffix: med_2
599:     requires: med
600:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dm_view
601:   test:
602:     suffix: med_3
603:     requires: med
604:     TODO: MED
605:     nsize: 3
606:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dist_dm_distribute -petscpartitioner_type simple -dm_view

608:   # Test shape quality
609:   test:
610:     suffix: test_shape
611:     requires: ctetgen
612:     args: -dm_plex_dim 3 -dim 3 -dm_refine_hierarchy 3 -dm_plex_check_all -dm_plex_check_cell_shape

614:   # Test simplex to tensor conversion
615:   test:
616:     suffix: s2t2
617:     requires: triangle
618:     args: -dm_coord_space 0 -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox -dm_refine_volume_limit_pre 0.0625 -dm_view ascii::ascii_info_detail

620:   test:
621:     suffix: s2t3
622:     requires: ctetgen
623:     args: -dm_coord_space 0 -dm_plex_dim 3 -dim 3 -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox -dm_refine_volume_limit_pre 0.0625 -dm_view ascii::ascii_info_detail

625:   # Test cylinder
626:   testset:
627:     args: -dm_plex_shape cylinder -dm_plex_check_all -dm_view
628:     test:
629:       suffix: cylinder
630:       args: -ref_dm_refine 1
631:     test:
632:       suffix: cylinder_per
633:       args: -dm_plex_cylinder_bd periodic -ref_dm_refine 1 -ref_dm_refine_remap 0
634:     test:
635:       suffix: cylinder_wedge
636:       args: -dm_coord_space 0 -dm_plex_interpolate 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:
637:     test:
638:       suffix: cylinder_wedge_int
639:       output_file: output/ex1_cylinder_wedge.out
640:       args: -dm_coord_space 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:

642:   test:
643:     suffix: box_2d
644:     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view

646:   test:
647:     suffix: box_2d_per
648:     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view

650:   test:
651:     suffix: box_2d_per_unint
652:     args: -dm_coord_space 0 -dm_plex_simplex 0 -dm_plex_interpolate 0 -dm_plex_box_faces 3,3 -dm_plex_box_faces 3,3 -dm_plex_check_all -dm_view ::ascii_info_detail

654:   test:
655:     suffix: box_3d
656:     args: -dm_plex_dim 3 -dim 3 -dm_plex_simplex 0 -ref_dm_refine 3 -dm_plex_check_all -dm_view

658:   test:
659:     requires: triangle
660:     suffix: box_wedge
661:     args: -dm_coord_space 0 -dm_plex_dim 3 -dim 3 -dm_plex_simplex 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk: -dm_plex_check_all

663:   testset:
664:     requires: triangle
665:     args: -dm_coord_space 0 -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_cell tensor_triangular_prism -dm_plex_box_faces 2,3,1 -dm_view -dm_plex_check_all -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox
666:     test:
667:       suffix: box_wedge_s2t
668:     test:
669:       nsize: 3
670:       args: -dist_dm_distribute -petscpartitioner_type simple
671:       suffix: box_wedge_s2t_parallel

673:   # Test GLVis output
674:   testset:
675:     args: -dm_coord_space 0 -dm_plex_interpolate 0
676:     test:
677:       suffix: glvis_2d_tet
678:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
679:     test:
680:       suffix: glvis_2d_tet_per
681:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
682:     test:
683:       suffix: glvis_3d_tet
684:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
685:   testset:
686:     args: -dm_coord_space 0
687:     test:
688:       suffix: glvis_2d_tet_per_mfem
689:       args: -dm_plex_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:
690:     test:
691:       suffix: glvis_2d_quad
692:       args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_view glvis:
693:     test:
694:       suffix: glvis_2d_quad_per
695:       args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_plex_box_bd periodic,periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
696:     test:
697:       suffix: glvis_2d_quad_per_mfem
698:       args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_plex_box_bd periodic,periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -viewer_glvis_dm_plex_enable_mfem
699:     test:
700:       suffix: glvis_3d_tet_per
701:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
702:     test:
703:       suffix: glvis_3d_tet_per_mfem
704:       TODO: broken
705:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -viewer_glvis_dm_plex_enable_mfem -dm_view glvis:
706:     test:
707:       suffix: glvis_3d_hex
708:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_view glvis:
709:     test:
710:       suffix: glvis_3d_hex_per
711:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_plex_box_bd periodic,periodic,periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
712:     test:
713:       suffix: glvis_3d_hex_per_mfem
714:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_plex_box_bd periodic,periodic,periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -viewer_glvis_dm_plex_enable_mfem
715:     test:
716:       suffix: glvis_2d_hyb
717:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
718:     test:
719:       suffix: glvis_3d_hyb
720:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
721:     test:
722:       suffix: glvis_3d_hyb_s2t
723:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_3d_cube.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox -dm_plex_check_all

725:   # Test P4EST
726:   testset:
727:     requires: p4est
728:     args: -dm_coord_space 0 -dm_view -test_p4est_seq -conv_seq_2_dm_plex_check_all -conv_seq_1_dm_forest_minimum_refinement 1
729:     test:
730:       suffix: p4est_periodic
731:       args: -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic -dm_plex_box_faces 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
732:     test:
733:       suffix: p4est_periodic_3d
734:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic,none -dm_plex_box_faces 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
735:     test:
736:       suffix: p4est_gmsh_periodic
737:       args: -dm_coord_space 0 -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
738:     test:
739:       suffix: p4est_gmsh_surface
740:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
741:     test:
742:       suffix: p4est_gmsh_surface_parallel
743:       nsize: 2
744:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -petscpartitioner_type simple -dm_view ::load_balance
745:     test:
746:       suffix: p4est_hyb_2d
747:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh
748:     test:
749:       suffix: p4est_hyb_3d
750:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh
751:     test:
752:       requires: ctetgen
753:       suffix: p4est_s2t_bugfaces_3d
754:       args: -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 0 -dm_plex_dim 3 -dm_plex_box_faces 1,1
755:     test:
756:       suffix: p4est_bug_overlapsf
757:       nsize: 3
758:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 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
759:     test:
760:       suffix: p4est_redistribute
761:       nsize: 3
762:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 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
763:     test:
764:       suffix: p4est_gmsh_s2t_3d
765:       args: -conv_seq_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
766:     test:
767:       suffix: p4est_gmsh_s2t_3d_hash
768:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
769:     test:
770:       requires: long_runtime
771:       suffix: p4est_gmsh_periodic_3d
772:       args: -dm_coord_space 0 -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh

774:   testset:
775:     requires: p4est
776:     nsize: 6
777:     args: -dm_coord_space 0 -test_p4est_par -conv_par_2_dm_plex_check_all -conv_par_1_dm_forest_minimum_refinement 1 -conv_par_1_dm_forest_partition_overlap 0 -dist_dm_distribute
778:     test:
779:       TODO: interface cones do not conform
780:       suffix: p4est_par_periodic
781:       args: -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic -dm_plex_box_faces 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
782:     test:
783:       TODO: interface cones do not conform
784:       suffix: p4est_par_periodic_3d
785:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic,periodic -dm_plex_box_faces 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
786:     test:
787:       TODO: interface cones do not conform
788:       suffix: p4est_par_gmsh_periodic
789:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
790:     test:
791:       suffix: p4est_par_gmsh_surface
792:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
793:     test:
794:       suffix: p4est_par_gmsh_s2t_3d
795:       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
796:     test:
797:       TODO: interface cones do not conform
798:       suffix: p4est_par_gmsh_s2t_3d_hash
799:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
800:     test:
801:       requires: long_runtime
802:       suffix: p4est_par_gmsh_periodic_3d
803:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh

805:   testset:
806:     requires: p4est
807:     nsize: 6
808:     args: -dm_coord_space 0 -test_p4est_par -conv_par_2_dm_plex_check_all -conv_par_1_dm_forest_minimum_refinement 1 -conv_par_1_dm_forest_partition_overlap 1 -dist_dm_distribute -petscpartitioner_type simple
809:     test:
810:       suffix: p4est_par_ovl_periodic
811:       args: -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic -dm_plex_box_faces 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
812:     #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled)
813:     test:
814:       suffix: p4est_par_ovl_periodic_3d
815:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic,none -dm_plex_box_faces 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
816:     test:
817:       suffix: p4est_par_ovl_gmsh_periodic
818:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
819:     test:
820:       suffix: p4est_par_ovl_gmsh_surface
821:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
822:     test:
823:       suffix: p4est_par_ovl_gmsh_s2t_3d
824:       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
825:     test:
826:       suffix: p4est_par_ovl_gmsh_s2t_3d_hash
827:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
828:     test:
829:       requires: long_runtime
830:       suffix: p4est_par_ovl_gmsh_periodic_3d
831:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh
832:     test:
833:       suffix: p4est_par_ovl_hyb_2d
834:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh
835:     test:
836:       suffix: p4est_par_ovl_hyb_3d
837:       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 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh

839:   test:
840:     TODO: broken
841:     requires: p4est
842:     nsize: 2
843:     suffix: p4est_bug_labels_noovl
844:     args: -test_p4est_seq -dm_plex_check_all -dm_forest_minimum_refinement 0 -dm_forest_partition_overlap 1 -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_forest_initial_refinement 0 -dm_forest_maximum_refinement 2 -dm_p4est_refine_pattern hash -dist_dm_distribute -petscpartitioner_type simple -dm_forest_print_label_error

846:   test:
847:     requires: p4est
848:     nsize: 2
849:     suffix: p4est_bug_distribute_overlap
850:     args: -dm_coord_space 0 -test_p4est_seq -conv_seq_2_dm_plex_check_all -conv_seq_1_dm_forest_minimum_refinement 0 -conv_seq_1_dm_forest_partition_overlap 0 -dm_plex_simplex 0 -dm_plex_box_faces 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
851:     args: -dm_post_overlap_view

853:   test:
854:     suffix: ref_alfeld2d_0
855:     requires: triangle
856:     args: -dm_plex_box_faces 5,3 -dm_view -dm_plex_check_all -ref_dm_refine 1 -ref_dm_plex_transform_type refine_alfeld -final_diagnostics
857:   test:
858:     suffix: ref_alfeld3d_0
859:     requires: ctetgen
860:     args: -dm_plex_dim 3 -dm_plex_box_faces 5,1,1 -dm_view -dm_plex_check_all -ref_dm_refine 1 -ref_dm_plex_transform_type refine_alfeld -final_diagnostics

862:   # Boundary layer refiners
863:   test:
864:     suffix: ref_bl_1
865:     args: -dm_plex_dim 1 -dm_plex_simplex 0 -dm_plex_box_faces 5,1 -dm_view -dm_plex_check_all 0 -ref_dm_refine 1 -ref_dm_plex_transform_type refine_boundary_layer -dm_extrude_layers 2 -final_diagnostics -ref_dm_plex_transform_bl_splits 3 -dm_extrude_column_first {{0 1}}
866:   test:
867:     suffix: ref_bl_2_tri
868:     requires: triangle
869:     args: -dm_plex_box_faces 5,3 -dm_view -dm_plex_check_all 0 -ref_dm_refine 1 -ref_dm_plex_transform_type refine_boundary_layer -dm_extrude_layers 3 -final_diagnostics -ref_dm_plex_transform_bl_splits 4 -dm_extrude_column_first {{0 1}}
870:   test:
871:     suffix: ref_bl_3_quad
872:     args: -dm_plex_simplex 0 -dm_plex_box_faces 5,1 -dm_view -dm_plex_check_all 0 -ref_dm_refine 1 -ref_dm_plex_transform_type refine_boundary_layer -dm_extrude_layers 3 -final_diagnostics -ref_dm_plex_transform_bl_splits 4 -dm_extrude_column_first {{0 1}}
873:   test:
874:     suffix: ref_bl_spheresurface_extruded
875:     nsize : 4
876:     args: -dm_extrude_layers 3 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_all -dm_view -dist_dm_distribute -petscpartitioner_type simple -dm_extrude_column_first {{0 1}separate output} -final_diagnostics -ref_dm_refine 1 -ref_dm_plex_transform_type refine_boundary_layer -ref_dm_plex_transform_bl_splits 2
877:   test:
878:     suffix: ref_bl_3d_hyb
879:     nsize : 4
880:     args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_3d_cube.msh -dm_plex_check_all -dm_view -dist_dm_distribute -petscpartitioner_type simple -final_diagnostics -ref_dm_refine 1 -ref_dm_plex_transform_type refine_boundary_layer -ref_dm_plex_transform_bl_splits 4 -ref_dm_plex_transform_bl_height_factor 3.1

882:   testset:
883:     args: -dm_plex_shape sphere -dm_plex_check_all -dm_view
884:     test:
885:       suffix: sphere_0
886:       args:
887:     test:
888:       suffix: sphere_1
889:       args: -ref_dm_refine 2
890:     test:
891:       suffix: sphere_2
892:       args: -dm_plex_simplex 0
893:     test:
894:       suffix: sphere_3
895:       args: -dm_plex_simplex 0 -ref_dm_refine 2

897:   test:
898:     suffix: ball_0
899:     requires: ctetgen
900:     args: -dm_plex_dim 3 -dm_plex_shape ball -dm_plex_check_all -dm_view

902:   test:
903:     suffix: ball_1
904:     requires: ctetgen
905:     args: -dm_plex_dim 3 -dm_plex_shape ball -bd_dm_refine 2 -dm_plex_check_all -dm_view

907: TEST*/