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: {

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

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

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

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

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

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

 77:   DMViewFromOptions(*dm,NULL,"-init_dm_view");
 78:   DMGetDimension(*dm, &dim);

 80:   if (testp4est_seq) {
 81: #if defined(PETSC_HAVE_P4EST)
 82:     DM dmConv = NULL;

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

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

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

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

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

169:     DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);
170:     if (dmConv) {
171:       PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_1_");
172:       DMSetFromOptions(dmConv);
173:       DMDestroy(dm);
174:       *dm  = dmConv;
175:     }
176:     PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_1_");
177:     DMSetUp(*dm);
178:     DMViewFromOptions(*dm, NULL, "-dm_view");
179:     DMConvert(*dm, DMPLEX, &dmConv);
180:     if (dmConv) {
181:       PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_2_");
182:       DMPlexDistributeSetDefault(dmConv, PETSC_FALSE);
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;

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

277: /*TEST

279:   # CTetGen 0-1
280:   test:
281:     suffix: 0
282:     requires: ctetgen
283:     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
284:   test:
285:     suffix: 1
286:     requires: ctetgen
287:     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

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

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

332:   # Parallel refinement tests with overlap
333:   test:
334:     suffix: refine_overlap_1d
335:     nsize: 2
336:     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
337:   test:
338:     suffix: refine_overlap_2d
339:     requires: triangle
340:     nsize: {{2 8}separate output}
341:     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

343:   # Parallel extrusion tests
344:   test:
345:     suffix: spheresurface_extruded
346:     nsize : 4
347:     args: -dm_coord_space 0 -dm_plex_shape sphere -dm_extrude 3 -dist_dm_distribute -petscpartitioner_type simple \
348:           -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical

350:   test:
351:     suffix: spheresurface_extruded_symmetric
352:     nsize : 4
353:     args: -dm_coord_space 0 -dm_plex_shape sphere -dm_extrude 3 -dm_plex_transform_extrude_symmetric -dist_dm_distribute -petscpartitioner_type simple \
354:           -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical

356:   # Parallel simple partitioner tests
357:   test:
358:     suffix: part_simple_0
359:     requires: triangle
360:     nsize: 2
361:     args: -dm_coord_space 0 -dm_plex_interpolate 0 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail
362:   test:
363:     suffix: part_simple_1
364:     requires: triangle
365:     nsize: 8
366:     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail

368:   # Parallel partitioner tests
369:   test:
370:     suffix: part_parmetis_0
371:     requires: parmetis
372:     nsize: 2
373:     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type parmetis -dm_view -petscpartitioner_view -test_redistribute -dm_plex_csr_alg {{mat graph overlap}} -dm_pre_redist_view ::load_balance -dm_post_redist_view ::load_balance -petscpartitioner_view_graph
374:   test:
375:     suffix: part_ptscotch_0
376:     requires: ptscotch
377:     nsize: 2
378:     args: -dm_plex_simplex 0 -dist_dm_distribute -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_strategy quality -test_redistribute -dm_plex_csr_alg {{mat graph overlap}} -dm_pre_redist_view ::load_balance -dm_post_redist_view ::load_balance -petscpartitioner_view_graph
379:   test:
380:     suffix: part_ptscotch_1
381:     requires: ptscotch
382:     nsize: 8
383:     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1

385:   # CGNS reader tests 10-11 (need to find smaller test meshes)
386:   test:
387:     suffix: cgns_0
388:     requires: cgns
389:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -dm_view

391:   # ExodusII reader tests
392:   testset:
393:     args: -dm_plex_boundary_label boundary -dm_plex_check_all -dm_view
394:     test:
395:       suffix: exo_0
396:       requires: exodusii
397:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/sevenside-quad.exo
398:     test:
399:       suffix: exo_1
400:       requires: exodusii
401:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/sevenside-quad-15.exo
402:     test:
403:       suffix: exo_2
404:       requires: exodusii
405:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/squaremotor-30.exo
406:     test:
407:       suffix: exo_3
408:       requires: exodusii
409:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/blockcylinder-50.exo
410:     test:
411:       suffix: exo_4
412:       requires: exodusii
413:      args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/simpleblock-100.exo

415:   # Gmsh mesh reader tests
416:   testset:
417:     args: -dm_coord_space 0 -dm_view

419:     test:
420:       suffix: gmsh_0
421:       requires: !single
422:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
423:     test:
424:       suffix: gmsh_1
425:       requires: !single
426:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh
427:     test:
428:       suffix: gmsh_2
429:       requires: !single
430:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh
431:     test:
432:       suffix: gmsh_3
433:       nsize: 3
434:       requires: !single
435:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -dist_dm_distribute -petscpartitioner_type simple
436:     test:
437:       suffix: gmsh_4
438:       nsize: 3
439:       requires: !single
440:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dist_dm_distribute -petscpartitioner_type simple
441:     test:
442:       suffix: gmsh_5
443:       requires: !single
444:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh
445:     # TODO: it seems the mesh is not a valid gmsh (inverted cell)
446:     test:
447:       suffix: gmsh_6
448:       requires: !single
449:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -final_diagnostics 0
450:     test:
451:       suffix: gmsh_7
452:       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
453:     test:
454:       suffix: gmsh_8
455:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh -dm_view ::ascii_info_detail -dm_plex_check_all
456:   testset:
457:     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
458:     test:
459:       suffix: gmsh_9
460:     test:
461:       suffix: gmsh_9_periodic_0
462:       args: -dm_plex_gmsh_periodic 0
463:   testset:
464:     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
465:     test:
466:       suffix: gmsh_10
467:     test:
468:       suffix: gmsh_10_periodic_0
469:       args: -dm_plex_gmsh_periodic 0
470:   testset:
471:     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
472:     test:
473:       suffix: gmsh_11
474:     test:
475:       suffix: gmsh_11_periodic_0
476:       args: -dm_plex_gmsh_periodic 0
477:   # TODO: it seems the mesh is not a valid gmsh (inverted cell)
478:   test:
479:     suffix: gmsh_12
480:     nsize: 4
481:     requires: !single mpiio
482:     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
483:   test:
484:     suffix: gmsh_13_hybs2t
485:     nsize: 4
486:     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
487:   test:
488:     suffix: gmsh_14_ext
489:     requires: !single
490:     args: -dm_coord_space 0 -dm_extrude 2 -dm_plex_transform_extrude_thickness 1.5 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -dm_plex_check_all
491:   test:
492:     suffix: gmsh_14_ext_s2t
493:     requires: !single
494:     args: -dm_coord_space 0 -dm_extrude 2 -dm_plex_transform_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
495:   test:
496:     suffix: gmsh_15_hyb3d
497:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -dm_plex_check_all
498:   test:
499:     suffix: gmsh_15_hyb3d_vtk
500:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view vtk: -dm_plex_gmsh_hybrid -dm_plex_check_all
501:   test:
502:     suffix: gmsh_15_hyb3d_s2t
503:     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
504:   test:
505:     suffix: gmsh_16_spheresurface
506:     nsize : 4
507:     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
508:   test:
509:     suffix: gmsh_16_spheresurface_s2t
510:     nsize : 4
511:     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
512:   test:
513:     suffix: gmsh_16_spheresurface_extruded
514:     nsize : 4
515:     args: -dm_coord_space 0 -dm_extrude 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
516:   test:
517:     suffix: gmsh_16_spheresurface_extruded_s2t
518:     nsize : 4
519:     args: -dm_coord_space 0 -dm_extrude 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
520:   test:
521:     suffix: gmsh_17_hyb3d_interp_ascii
522:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -dm_plex_check_all
523:   test:
524:     suffix: exodus_17_hyb3d_interp_ascii
525:     requires: exodusii
526:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -dm_plex_check_all

528:   # Legacy Gmsh v22/v40 ascii/binary reader tests
529:   testset:
530:     output_file: output/ex1_gmsh_3d_legacy.out
531:     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
532:     test:
533:       suffix: gmsh_3d_ascii_v22
534:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2
535:     test:
536:       suffix: gmsh_3d_ascii_v40
537:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4
538:     test:
539:       suffix: gmsh_3d_binary_v22
540:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2
541:     test:
542:       suffix: gmsh_3d_binary_v40
543:       requires: long64
544:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4

546:   # Gmsh v41 ascii/binary reader tests
547:   testset: # 32bit mesh, sequential
548:     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
549:     output_file: output/ex1_gmsh_3d_32.out
550:     test:
551:       suffix: gmsh_3d_ascii_v41_32
552:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
553:     test:
554:       suffix: gmsh_3d_binary_v41_32
555:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
556:     test:
557:       suffix: gmsh_3d_binary_v41_32_mpiio
558:       requires: defined(PETSC_HAVE_MPIIO)
559:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
560:   test:
561:     suffix: gmsh_quad_8node
562:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-qua-8node.msh \
563:           -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
564:   test:
565:     suffix: gmsh_hex_20node
566:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-hex-20node.msh \
567:           -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
568:   testset:  # 32bit mesh, parallel
569:     args: -dm_coord_space 0 -dist_dm_distribute -petscpartitioner_type simple -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
570:     nsize: 2
571:     output_file: output/ex1_gmsh_3d_32_np2.out
572:     test:
573:       suffix: gmsh_3d_ascii_v41_32_np2
574:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
575:     test:
576:       suffix: gmsh_3d_binary_v41_32_np2
577:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
578:     test:
579:       suffix: gmsh_3d_binary_v41_32_np2_mpiio
580:       requires: defined(PETSC_HAVE_MPIIO)
581:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
582:   testset: # 64bit mesh, sequential
583:     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
584:     output_file: output/ex1_gmsh_3d_64.out
585:     test:
586:       suffix: gmsh_3d_ascii_v41_64
587:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
588:     test:
589:       suffix: gmsh_3d_binary_v41_64
590:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
591:     test:
592:       suffix: gmsh_3d_binary_v41_64_mpiio
593:       requires: defined(PETSC_HAVE_MPIIO)
594:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
595:   testset:  # 64bit mesh, parallel
596:     args: -dm_coord_space 0 -dist_dm_distribute -petscpartitioner_type simple -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
597:     nsize: 2
598:     output_file: output/ex1_gmsh_3d_64_np2.out
599:     test:
600:       suffix: gmsh_3d_ascii_v41_64_np2
601:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
602:     test:
603:       suffix: gmsh_3d_binary_v41_64_np2
604:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
605:     test:
606:       suffix: gmsh_3d_binary_v41_64_np2_mpiio
607:       requires: defined(PETSC_HAVE_MPIIO)
608:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio

610:   # Fluent mesh reader tests
611:   # TODO: Geometry checks fail
612:   test:
613:     suffix: fluent_0
614:     requires: !complex
615:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dm_view -final_diagnostics 0
616:   test:
617:     suffix: fluent_1
618:     nsize: 3
619:     requires: !complex
620:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dist_dm_distribute -petscpartitioner_type simple -dm_view -final_diagnostics 0
621:   test:
622:     suffix: fluent_2
623:     requires: !complex
624:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -dm_view -final_diagnostics 0
625:   test:
626:     suffix: fluent_3
627:     requires: !complex
628:     TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382
629:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -dm_view -final_diagnostics 0

631:   # Med mesh reader tests, including parallel file reads
632:   test:
633:     suffix: med_0
634:     requires: med
635:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dm_view
636:   test:
637:     suffix: med_1
638:     requires: med
639:     nsize: 3
640:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dist_dm_distribute -petscpartitioner_type simple -dm_view
641:   test:
642:     suffix: med_2
643:     requires: med
644:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dm_view
645:   test:
646:     suffix: med_3
647:     requires: med
648:     TODO: MED
649:     nsize: 3
650:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dist_dm_distribute -petscpartitioner_type simple -dm_view

652:   # Test shape quality
653:   test:
654:     suffix: test_shape
655:     requires: ctetgen
656:     args: -dm_plex_dim 3 -dim 3 -dm_refine_hierarchy 3 -dm_plex_check_all -dm_plex_check_cell_shape

658:   # Test simplex to tensor conversion
659:   test:
660:     suffix: s2t2
661:     requires: triangle
662:     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

664:   test:
665:     suffix: s2t3
666:     requires: ctetgen
667:     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

669:   # Test cylinder
670:   testset:
671:     args: -dm_plex_shape cylinder -dm_plex_check_all -dm_view
672:     test:
673:       suffix: cylinder
674:       args: -ref_dm_refine 1
675:     test:
676:       suffix: cylinder_per
677:       args: -dm_plex_cylinder_bd periodic -ref_dm_refine 1 -ref_dm_refine_remap 0
678:     test:
679:       suffix: cylinder_wedge
680:       args: -dm_coord_space 0 -dm_plex_interpolate 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:
681:     test:
682:       suffix: cylinder_wedge_int
683:       output_file: output/ex1_cylinder_wedge.out
684:       args: -dm_coord_space 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:

686:   test:
687:     suffix: box_2d
688:     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view

690:   test:
691:     suffix: box_2d_per
692:     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view

694:   test:
695:     suffix: box_2d_per_unint
696:     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

698:   test:
699:     suffix: box_3d
700:     args: -dm_plex_dim 3 -dim 3 -dm_plex_simplex 0 -ref_dm_refine 3 -dm_plex_check_all -dm_view

702:   test:
703:     requires: triangle
704:     suffix: box_wedge
705:     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

707:   testset:
708:     requires: triangle
709:     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
710:     test:
711:       suffix: box_wedge_s2t
712:     test:
713:       nsize: 3
714:       args: -dist_dm_distribute -petscpartitioner_type simple
715:       suffix: box_wedge_s2t_parallel

717:   # Test GLVis output
718:   testset:
719:     args: -dm_coord_space 0 -dm_plex_interpolate 0
720:     test:
721:       suffix: glvis_2d_tet
722:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
723:     test:
724:       suffix: glvis_2d_tet_per
725:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
726:     test:
727:       suffix: glvis_3d_tet
728:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
729:   testset:
730:     args: -dm_coord_space 0
731:     test:
732:       suffix: glvis_2d_tet_per_mfem
733:       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:
734:     test:
735:       suffix: glvis_2d_quad
736:       args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_view glvis:
737:     test:
738:       suffix: glvis_2d_quad_per
739:       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
740:     test:
741:       suffix: glvis_2d_quad_per_mfem
742:       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
743:     test:
744:       suffix: glvis_3d_tet_per
745:       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
746:     test:
747:       suffix: glvis_3d_tet_per_mfem
748:       TODO: broken
749:       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:
750:     test:
751:       suffix: glvis_3d_hex
752:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_view glvis:
753:     test:
754:       suffix: glvis_3d_hex_per
755:       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
756:     test:
757:       suffix: glvis_3d_hex_per_mfem
758:       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
759:     test:
760:       suffix: glvis_2d_hyb
761:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
762:     test:
763:       suffix: glvis_3d_hyb
764:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
765:     test:
766:       suffix: glvis_3d_hyb_s2t
767:       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

769:   # Test P4EST
770:   testset:
771:     requires: p4est
772:     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
773:     test:
774:       suffix: p4est_periodic
775:       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
776:     test:
777:       suffix: p4est_periodic_3d
778:       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
779:     test:
780:       suffix: p4est_gmsh_periodic
781:       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
782:     test:
783:       suffix: p4est_gmsh_surface
784:       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
785:     test:
786:       suffix: p4est_gmsh_surface_parallel
787:       nsize: 2
788:       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
789:     test:
790:       suffix: p4est_hyb_2d
791:       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
792:     test:
793:       suffix: p4est_hyb_3d
794:       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
795:     test:
796:       requires: ctetgen
797:       suffix: p4est_s2t_bugfaces_3d
798:       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
799:     test:
800:       suffix: p4est_bug_overlapsf
801:       nsize: 3
802:       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
803:     test:
804:       suffix: p4est_redistribute
805:       nsize: 3
806:       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_alg {{mat graph overlap}} -dm_view ::load_balance
807:     test:
808:       suffix: p4est_gmsh_s2t_3d
809:       args: -conv_seq_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
810:     test:
811:       suffix: p4est_gmsh_s2t_3d_hash
812:       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
813:     test:
814:       requires: long_runtime
815:       suffix: p4est_gmsh_periodic_3d
816:       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

818:   testset:
819:     requires: p4est
820:     nsize: 6
821:     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
822:     test:
823:       TODO: interface cones do not conform
824:       suffix: p4est_par_periodic
825:       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
826:     test:
827:       TODO: interface cones do not conform
828:       suffix: p4est_par_periodic_3d
829:       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
830:     test:
831:       TODO: interface cones do not conform
832:       suffix: p4est_par_gmsh_periodic
833:       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
834:     test:
835:       suffix: p4est_par_gmsh_surface
836:       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
837:     test:
838:       suffix: p4est_par_gmsh_s2t_3d
839:       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
840:     test:
841:       TODO: interface cones do not conform
842:       suffix: p4est_par_gmsh_s2t_3d_hash
843:       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
844:     test:
845:       requires: long_runtime
846:       suffix: p4est_par_gmsh_periodic_3d
847:       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

849:   testset:
850:     requires: p4est
851:     nsize: 6
852:     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
853:     test:
854:       suffix: p4est_par_ovl_periodic
855:       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
856:     #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled)
857:     test:
858:       suffix: p4est_par_ovl_periodic_3d
859:       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
860:     test:
861:       suffix: p4est_par_ovl_gmsh_periodic
862:       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
863:     test:
864:       suffix: p4est_par_ovl_gmsh_surface
865:       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
866:     test:
867:       suffix: p4est_par_ovl_gmsh_s2t_3d
868:       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
869:     test:
870:       suffix: p4est_par_ovl_gmsh_s2t_3d_hash
871:       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
872:     test:
873:       requires: long_runtime
874:       suffix: p4est_par_ovl_gmsh_periodic_3d
875:       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
876:     test:
877:       suffix: p4est_par_ovl_hyb_2d
878:       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
879:     test:
880:       suffix: p4est_par_ovl_hyb_3d
881:       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

883:   test:
884:     TODO: broken
885:     requires: p4est
886:     nsize: 2
887:     suffix: p4est_bug_labels_noovl
888:     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

890:   test:
891:     requires: p4est
892:     nsize: 2
893:     suffix: p4est_bug_distribute_overlap
894:     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
895:     args: -dm_post_overlap_view

897:   test:
898:     suffix: ref_alfeld2d_0
899:     requires: triangle
900:     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
901:   test:
902:     suffix: ref_alfeld3d_0
903:     requires: ctetgen
904:     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

906:   # Boundary layer refiners
907:   test:
908:     suffix: ref_bl_1
909:     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 2 -final_diagnostics -ref_dm_plex_transform_bl_splits 3
910:   test:
911:     suffix: ref_bl_2_tri
912:     requires: triangle
913:     args: -dm_coord_space 0 -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 3 -final_diagnostics -ref_dm_plex_transform_bl_splits 4
914:   test:
915:     suffix: ref_bl_3_quad
916:     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 3 -final_diagnostics -ref_dm_plex_transform_bl_splits 4
917:   test:
918:     suffix: ref_bl_spheresurface_extruded
919:     nsize : 4
920:     args: -dm_coord_space 0 -dm_extrude 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 -final_diagnostics -ref_dm_refine 1 -ref_dm_plex_transform_type refine_boundary_layer -ref_dm_plex_transform_bl_splits 2
921:   test:
922:     suffix: ref_bl_3d_hyb
923:     nsize : 4
924:     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

926:   testset:
927:     args: -dm_plex_shape sphere -dm_plex_check_all -dm_view
928:     test:
929:       suffix: sphere_0
930:       args:
931:     test:
932:       suffix: sphere_1
933:       args: -ref_dm_refine 2
934:     test:
935:       suffix: sphere_2
936:       args: -dm_plex_simplex 0
937:     test:
938:       suffix: sphere_3
939:       args: -dm_plex_simplex 0 -ref_dm_refine 2

941:   test:
942:     suffix: ball_0
943:     requires: ctetgen
944:     args: -dm_plex_dim 3 -dm_plex_shape ball -dm_plex_check_all -dm_view

946:   test:
947:     suffix: ball_1
948:     requires: ctetgen
949:     args: -dm_plex_dim 3 -dm_plex_shape ball -bd_dm_refine 2 -dm_plex_check_all -dm_view

951:   test:
952:     suffix: schwarz_p_extrude
953:     args: -dm_plex_shape schwarz_p -dm_plex_tps_extent 1,1,1 -dm_plex_tps_layers 1 -dm_plex_tps_thickness .2 -dm_view
954: TEST*/