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 {
  8:   STAGE_LOAD,
  9:   STAGE_DISTRIBUTE,
 10:   STAGE_REFINE,
 11:   STAGE_OVERLAP
 12: };

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

 26: PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
 27: {
 28:   options->dim               = 2;
 29:   options->overlap           = 0;
 30:   options->testp4est[0]      = PETSC_FALSE;
 31:   options->testp4est[1]      = PETSC_FALSE;
 32:   options->redistribute      = PETSC_FALSE;
 33:   options->final_ref         = PETSC_FALSE;
 34:   options->final_diagnostics = PETSC_TRUE;

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

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

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

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

 71:   DMViewFromOptions(*dm, NULL, "-init_dm_view");
 72:   DMGetDimension(*dm, &dim);

 74:   if (testp4est_seq) {
 76:     DM dmConv = NULL;

 78:     DMPlexCheck(*dm);
 79:     DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
 80:     DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX);
 81:     DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);
 82:     PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL);
 83:     if (dmConv) {
 84:       DMDestroy(dm);
 85:       *dm = dmConv;
 86:     }
 87:     DMViewFromOptions(*dm, NULL, "-initref_dm_view");
 88:     DMPlexCheck(*dm);

 90:     /* For topologically periodic meshes, we first localize coordinates,
 91:        and then remove any information related with the
 92:        automatic computation of localized vertices.
 93:        This way, refinement operations and conversions to p4est
 94:        will preserve the shape of the domain in physical space */
 95:     DMSetPeriodicity(*dm, NULL, NULL, NULL);

 97:     DMConvert(*dm, dim == 2 ? DMP4EST : DMP8EST, &dmConv);
 98:     if (dmConv) {
 99:       PetscObjectSetOptionsPrefix((PetscObject)dmConv, "conv_seq_1_");
100:       DMSetFromOptions(dmConv);
101:       DMDestroy(dm);
102:       *dm = dmConv;
103:     }
104:     PetscObjectSetOptionsPrefix((PetscObject)*dm, "conv_seq_1_");
105:     DMSetUp(*dm);
106:     DMViewFromOptions(*dm, NULL, "-dm_view");
107:     DMConvert(*dm, DMPLEX, &dmConv);
108:     if (dmConv) {
109:       PetscObjectSetOptionsPrefix((PetscObject)dmConv, "conv_seq_2_");
110:       DMPlexDistributeSetDefault(dmConv, PETSC_FALSE);
111:       DMSetFromOptions(dmConv);
112:       DMDestroy(dm);
113:       *dm = dmConv;
114:     }
115:     PetscObjectSetOptionsPrefix((PetscObject)*dm, "conv_seq_2_");
116:     DMViewFromOptions(*dm, NULL, "-dm_view");
117:     PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL);
118:   }

120:   PetscLogStagePop();
121:   if (!testp4est_seq) {
122:     PetscLogStagePush(user->stages[STAGE_DISTRIBUTE]);
123:     DMViewFromOptions(*dm, NULL, "-dm_pre_dist_view");
124:     PetscObjectSetOptionsPrefix((PetscObject)*dm, "dist_");
125:     DMSetFromOptions(*dm);
126:     PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL);
127:     PetscLogStagePop();
128:     DMViewFromOptions(*dm, NULL, "-distributed_dm_view");
129:   }
130:   PetscLogStagePush(user->stages[STAGE_REFINE]);
131:   PetscObjectSetOptionsPrefix((PetscObject)*dm, "ref_");
132:   DMSetFromOptions(*dm);
133:   PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL);
134:   PetscLogStagePop();

136:   if (testp4est_par) {
138:     DM dmConv = NULL;

140:     DMPlexCheck(*dm);
141:     DMViewFromOptions(*dm, NULL, "-dm_tobox_view");
142:     DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
143:     DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX);
144:     DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);
145:     PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL);
146:     if (dmConv) {
147:       DMDestroy(dm);
148:       *dm = dmConv;
149:     }
150:     DMViewFromOptions(*dm, NULL, "-dm_tobox_view");
151:     DMPlexCheck(*dm);

153:     DMConvert(*dm, dim == 2 ? DMP4EST : DMP8EST, &dmConv);
154:     if (dmConv) {
155:       PetscObjectSetOptionsPrefix((PetscObject)dmConv, "conv_par_1_");
156:       DMSetFromOptions(dmConv);
157:       DMDestroy(dm);
158:       *dm = dmConv;
159:     }
160:     PetscObjectSetOptionsPrefix((PetscObject)*dm, "conv_par_1_");
161:     DMSetUp(*dm);
162:     DMViewFromOptions(*dm, NULL, "-dm_view");
163:     DMConvert(*dm, DMPLEX, &dmConv);
164:     if (dmConv) {
165:       PetscObjectSetOptionsPrefix((PetscObject)dmConv, "conv_par_2_");
166:       DMPlexDistributeSetDefault(dmConv, PETSC_FALSE);
167:       DMSetFromOptions(dmConv);
168:       DMDestroy(dm);
169:       *dm = dmConv;
170:     }
171:     PetscObjectSetOptionsPrefix((PetscObject)*dm, "conv_par_2_");
172:     DMViewFromOptions(*dm, NULL, "-dm_view");
173:     PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL);
174:   }

176:   /* test redistribution of an already distributed mesh */
177:   if (user->redistribute) {
178:     DM       distributedMesh;
179:     PetscSF  sf;
180:     PetscInt nranks;

182:     DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view");
183:     DMPlexDistribute(*dm, 0, NULL, &distributedMesh);
184:     if (distributedMesh) {
185:       DMGetPointSF(distributedMesh, &sf);
186:       PetscSFSetUp(sf);
187:       DMGetNeighbors(distributedMesh, &nranks, NULL);
188:       MPI_Allreduce(MPI_IN_PLACE, &nranks, 1, MPIU_INT, MPI_MIN, PetscObjectComm((PetscObject)*dm));
189:       PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)*dm)), "Minimum number of neighbors: %" PetscInt_FMT "\n", nranks);
190:       DMDestroy(dm);
191:       *dm = distributedMesh;
192:     }
193:     DMViewFromOptions(*dm, NULL, "-dm_post_redist_view");
194:   }

196:   if (user->overlap) {
197:     DM overlapMesh = NULL;

199:     /* Add the overlap to refined mesh */
200:     PetscLogStagePush(user->stages[STAGE_OVERLAP]);
201:     DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view");
202:     DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh);
203:     if (overlapMesh) {
204:       PetscInt overlap;
205:       DMPlexGetOverlap(overlapMesh, &overlap);
206:       PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %" PetscInt_FMT "\n", overlap);
207:       DMDestroy(dm);
208:       *dm = overlapMesh;
209:     }
210:     DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view");
211:     PetscLogStagePop();
212:   }
213:   if (user->final_ref) {
214:     DM refinedMesh = NULL;

216:     DMPlexSetRefinementUniform(*dm, PETSC_TRUE);
217:     DMRefine(*dm, comm, &refinedMesh);
218:     if (refinedMesh) {
219:       DMDestroy(dm);
220:       *dm = refinedMesh;
221:     }
222:   }

224:   PetscObjectSetName((PetscObject)*dm, "Generated Mesh");
225:   DMViewFromOptions(*dm, NULL, "-dm_view");
226:   if (user->final_diagnostics) DMPlexCheck(*dm);
227:   PetscLogEventEnd(user->createMeshEvent, 0, 0, 0, 0);
228:   return 0;
229: }

231: int main(int argc, char **argv)
232: {
233:   DM     dm;
234:   AppCtx user;

237:   PetscInitialize(&argc, &argv, NULL, help);
238:   ProcessOptions(PETSC_COMM_WORLD, &user);
239:   CreateMesh(PETSC_COMM_WORLD, &user, &dm);
240:   DMDestroy(&dm);
241:   PetscFinalize();
242:   return 0;
243: }

245: /*TEST

247:   # CTetGen 0-1
248:   test:
249:     suffix: 0
250:     requires: ctetgen
251:     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
252:   test:
253:     suffix: 1
254:     requires: ctetgen
255:     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

257:   # 2D LaTex and ASCII output 2-9
258:   test:
259:     suffix: 2
260:     requires: triangle
261:     args: -dm_plex_interpolate 0 -dm_view ascii::ascii_latex
262:   test:
263:     suffix: 3
264:     requires: triangle
265:     args: -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
266:   test:
267:     suffix: 4
268:     requires: triangle
269:     nsize: 2
270:     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_info_detail
271:   test:
272:     suffix: 5
273:     requires: triangle
274:     nsize: 2
275:     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
276:   test:
277:     suffix: 6
278:     args: -dm_coord_space 0 -dm_plex_simplex 0 -dm_view ascii::ascii_info_detail
279:   test:
280:     suffix: 7
281:     args: -dm_coord_space 0 -dm_plex_simplex 0 -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
282:   test:
283:     suffix: 8
284:     nsize: 2
285:     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
286:   test:
287:     suffix: box_2d_latex_xper
288:     nsize: 1
289:     args: -dm_plex_simplex 0 -dm_plex_box_faces 5,5 -dm_plex_box_bd periodic,none \
290:           -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex -dm_plex_view_edges 0

292:   # 1D ASCII output
293:   testset:
294:     args: -dm_coord_space 0 -dm_plex_dim 1 -dm_view ascii::ascii_info_detail -dm_plex_check_all
295:     test:
296:       suffix: 1d_0
297:       args:
298:     test:
299:       suffix: 1d_1
300:       args: -ref_dm_refine 2
301:     test:
302:       suffix: 1d_2
303:       args: -dm_plex_box_faces 5 -dm_plex_box_bd periodic

305:   # Parallel refinement tests with overlap
306:   test:
307:     suffix: refine_overlap_1d
308:     nsize: 2
309:     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
310:   test:
311:     suffix: refine_overlap_2d
312:     requires: triangle
313:     nsize: {{2 8}separate output}
314:     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

316:   # Parallel extrusion tests
317:   test:
318:     suffix: spheresurface_extruded
319:     nsize : 4
320:     args: -dm_coord_space 0 -dm_plex_shape sphere -dm_extrude 3 -dist_dm_distribute -petscpartitioner_type simple \
321:           -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical

323:   test:
324:     suffix: spheresurface_extruded_symmetric
325:     nsize : 4
326:     args: -dm_coord_space 0 -dm_plex_shape sphere -dm_extrude 3 -dm_plex_transform_extrude_symmetric -dist_dm_distribute -petscpartitioner_type simple \
327:           -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical

329:   # Parallel simple partitioner tests
330:   test:
331:     suffix: part_simple_0
332:     requires: triangle
333:     nsize: 2
334:     args: -dm_coord_space 0 -dm_plex_interpolate 0 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail
335:   test:
336:     suffix: part_simple_1
337:     requires: triangle
338:     nsize: 8
339:     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail

341:   # Parallel partitioner tests
342:   test:
343:     suffix: part_parmetis_0
344:     requires: parmetis
345:     nsize: 2
346:     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
347:   test:
348:     suffix: part_ptscotch_0
349:     requires: ptscotch
350:     nsize: 2
351:     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
352:   test:
353:     suffix: part_ptscotch_1
354:     requires: ptscotch
355:     nsize: 8
356:     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1

358:   # CGNS reader tests 10-11 (need to find smaller test meshes)
359:   test:
360:     suffix: cgns_0
361:     requires: cgns
362:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -dm_view

364:   # ExodusII reader tests
365:   testset:
366:     args: -dm_plex_boundary_label boundary -dm_plex_check_all -dm_view
367:     test:
368:       suffix: exo_0
369:       requires: exodusii
370:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/sevenside-quad.exo
371:     test:
372:       suffix: exo_1
373:       requires: exodusii
374:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/sevenside-quad-15.exo
375:     test:
376:       suffix: exo_2
377:       requires: exodusii
378:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/squaremotor-30.exo
379:     test:
380:       suffix: exo_3
381:       requires: exodusii
382:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/blockcylinder-50.exo
383:     test:
384:       suffix: exo_4
385:       requires: exodusii
386:      args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/simpleblock-100.exo

388:   # Gmsh mesh reader tests
389:   testset:
390:     args: -dm_coord_space 0 -dm_view

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

501:   # Legacy Gmsh v22/v40 ascii/binary reader tests
502:   testset:
503:     output_file: output/ex1_gmsh_3d_legacy.out
504:     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
505:     test:
506:       suffix: gmsh_3d_ascii_v22
507:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2
508:     test:
509:       suffix: gmsh_3d_ascii_v40
510:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4
511:     test:
512:       suffix: gmsh_3d_binary_v22
513:       # Could not remake binary to remove extra face labeling
514:       output_file: output/ex1_gmsh_3d_legacy_v22_bin.out
515:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2
516:     test:
517:       suffix: gmsh_3d_binary_v40
518:       requires: long64
519:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4

521:   # Gmsh v41 ascii/binary reader tests
522:   testset: # 32bit mesh, sequential
523:     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
524:     output_file: output/ex1_gmsh_3d_32.out
525:     test:
526:       suffix: gmsh_3d_ascii_v41_32
527:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
528:     test:
529:       suffix: gmsh_3d_binary_v41_32
530:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
531:     test:
532:       suffix: gmsh_3d_binary_v41_32_mpiio
533:       requires: defined(PETSC_HAVE_MPIIO)
534:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
535:   test:
536:     suffix: gmsh_quad_8node
537:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-qua-8node.msh \
538:           -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
539:   test:
540:     suffix: gmsh_hex_20node
541:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-hex-20node.msh \
542:           -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
543:   testset:  # 32bit mesh, parallel
544:     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
545:     nsize: 2
546:     output_file: output/ex1_gmsh_3d_32_np2.out
547:     test:
548:       suffix: gmsh_3d_ascii_v41_32_np2
549:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
550:     test:
551:       suffix: gmsh_3d_binary_v41_32_np2
552:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
553:     test:
554:       suffix: gmsh_3d_binary_v41_32_np2_mpiio
555:       requires: defined(PETSC_HAVE_MPIIO)
556:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
557:   testset: # 64bit mesh, sequential
558:     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
559:     output_file: output/ex1_gmsh_3d_64.out
560:     test:
561:       suffix: gmsh_3d_ascii_v41_64
562:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
563:     test:
564:       suffix: gmsh_3d_binary_v41_64
565:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
566:     test:
567:       suffix: gmsh_3d_binary_v41_64_mpiio
568:       requires: defined(PETSC_HAVE_MPIIO)
569:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
570:   testset:  # 64bit mesh, parallel
571:     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
572:     nsize: 2
573:     output_file: output/ex1_gmsh_3d_64_np2.out
574:     test:
575:       suffix: gmsh_3d_ascii_v41_64_np2
576:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
577:     test:
578:       suffix: gmsh_3d_binary_v41_64_np2
579:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
580:     test:
581:       suffix: gmsh_3d_binary_v41_64_np2_mpiio
582:       requires: defined(PETSC_HAVE_MPIIO)
583:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio

585:   # Fluent mesh reader tests
586:   # TODO: Geometry checks fail
587:   test:
588:     suffix: fluent_0
589:     requires: !complex
590:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dm_view -final_diagnostics 0
591:   test:
592:     suffix: fluent_1
593:     nsize: 3
594:     requires: !complex
595:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dist_dm_distribute -petscpartitioner_type simple -dm_view -final_diagnostics 0
596:   test:
597:     suffix: fluent_2
598:     requires: !complex
599:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -dm_view -final_diagnostics 0
600:   test:
601:     suffix: fluent_3
602:     requires: !complex
603:     TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382
604:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -dm_view -final_diagnostics 0

606:   # Med mesh reader tests, including parallel file reads
607:   test:
608:     suffix: med_0
609:     requires: med
610:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dm_view
611:   test:
612:     suffix: med_1
613:     requires: med
614:     nsize: 3
615:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dist_dm_distribute -petscpartitioner_type simple -dm_view
616:   test:
617:     suffix: med_2
618:     requires: med
619:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dm_view
620:   test:
621:     suffix: med_3
622:     requires: med
623:     TODO: MED
624:     nsize: 3
625:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dist_dm_distribute -petscpartitioner_type simple -dm_view

627:   # Test shape quality
628:   test:
629:     suffix: test_shape
630:     requires: ctetgen
631:     args: -dm_plex_dim 3 -dim 3 -dm_refine_hierarchy 3 -dm_plex_check_all -dm_plex_check_cell_shape

633:   # Test simplex to tensor conversion
634:   test:
635:     suffix: s2t2
636:     requires: triangle
637:     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

639:   test:
640:     suffix: s2t3
641:     requires: ctetgen
642:     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

644:   # Test cylinder
645:   testset:
646:     args: -dm_plex_shape cylinder -dm_plex_check_all -dm_view
647:     test:
648:       suffix: cylinder
649:       args: -ref_dm_refine 1
650:     test:
651:       suffix: cylinder_per
652:       args: -dm_plex_cylinder_bd periodic -ref_dm_refine 1 -ref_dm_refine_remap 0
653:     test:
654:       suffix: cylinder_wedge
655:       args: -dm_coord_space 0 -dm_plex_interpolate 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:
656:     test:
657:       suffix: cylinder_wedge_int
658:       output_file: output/ex1_cylinder_wedge.out
659:       args: -dm_coord_space 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:

661:   test:
662:     suffix: box_2d
663:     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view

665:   test:
666:     suffix: box_2d_per
667:     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view

669:   test:
670:     suffix: box_2d_per_unint
671:     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

673:   test:
674:     suffix: box_3d
675:     args: -dm_plex_dim 3 -dim 3 -dm_plex_simplex 0 -ref_dm_refine 3 -dm_plex_check_all -dm_view

677:   test:
678:     requires: triangle
679:     suffix: box_wedge
680:     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

682:   testset:
683:     requires: triangle
684:     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
685:     test:
686:       suffix: box_wedge_s2t
687:     test:
688:       nsize: 3
689:       args: -dist_dm_distribute -petscpartitioner_type simple
690:       suffix: box_wedge_s2t_parallel

692:   # Test GLVis output
693:   testset:
694:     args: -dm_coord_space 0 -dm_plex_interpolate 0
695:     test:
696:       suffix: glvis_2d_tet
697:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
698:     test:
699:       suffix: glvis_2d_tet_per
700:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
701:     test:
702:       suffix: glvis_3d_tet
703:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
704:   testset:
705:     args: -dm_coord_space 0
706:     test:
707:       suffix: glvis_2d_tet_per_mfem
708:       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:
709:     test:
710:       suffix: glvis_2d_quad
711:       args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_view glvis:
712:     test:
713:       suffix: glvis_2d_quad_per
714:       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
715:     test:
716:       suffix: glvis_2d_quad_per_shift
717:       args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_plex_box_bd periodic,periodic -dm_plex_box_lower -1,-1 -dm_plex_box_upper 1,1 -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
718:     test:
719:       suffix: glvis_2d_quad_per_mfem
720:       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
721:     test:
722:       suffix: glvis_3d_tet_per
723:       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
724:     test:
725:       suffix: glvis_3d_tet_per_mfem
726:       TODO: broken
727:       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:
728:     test:
729:       suffix: glvis_3d_hex
730:       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_view glvis:
731:     test:
732:       suffix: glvis_3d_hex_per
733:       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
734:     test:
735:       suffix: glvis_3d_hex_per_mfem
736:       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
737:     test:
738:       suffix: glvis_2d_hyb
739:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
740:     test:
741:       suffix: glvis_3d_hyb
742:       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
743:     test:
744:       suffix: glvis_3d_hyb_s2t
745:       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

747:   # Test P4EST
748:   testset:
749:     requires: p4est
750:     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
751:     test:
752:       suffix: p4est_periodic
753:       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
754:     test:
755:       suffix: p4est_periodic_3d
756:       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
757:     test:
758:       suffix: p4est_gmsh_periodic
759:       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
760:     test:
761:       suffix: p4est_gmsh_surface
762:       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
763:     test:
764:       suffix: p4est_gmsh_surface_parallel
765:       nsize: 2
766:       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
767:     test:
768:       suffix: p4est_hyb_2d
769:       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
770:     test:
771:       suffix: p4est_hyb_3d
772:       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
773:     test:
774:       requires: ctetgen
775:       suffix: p4est_s2t_bugfaces_3d
776:       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
777:     test:
778:       suffix: p4est_bug_overlapsf
779:       nsize: 3
780:       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
781:     test:
782:       suffix: p4est_redistribute
783:       nsize: 3
784:       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
785:     test:
786:       suffix: p4est_gmsh_s2t_3d
787:       args: -conv_seq_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
788:     test:
789:       suffix: p4est_gmsh_s2t_3d_hash
790:       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
791:     test:
792:       requires: long_runtime
793:       suffix: p4est_gmsh_periodic_3d
794:       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

796:   testset:
797:     requires: p4est
798:     nsize: 6
799:     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
800:     test:
801:       TODO: interface cones do not conform
802:       suffix: p4est_par_periodic
803:       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
804:     test:
805:       TODO: interface cones do not conform
806:       suffix: p4est_par_periodic_3d
807:       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
808:     test:
809:       TODO: interface cones do not conform
810:       suffix: p4est_par_gmsh_periodic
811:       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
812:     test:
813:       suffix: p4est_par_gmsh_surface
814:       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
815:     test:
816:       suffix: p4est_par_gmsh_s2t_3d
817:       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
818:     test:
819:       TODO: interface cones do not conform
820:       suffix: p4est_par_gmsh_s2t_3d_hash
821:       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
822:     test:
823:       requires: long_runtime
824:       suffix: p4est_par_gmsh_periodic_3d
825:       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

827:   testset:
828:     requires: p4est
829:     nsize: 6
830:     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
831:     test:
832:       suffix: p4est_par_ovl_periodic
833:       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
834:     #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled)
835:     test:
836:       suffix: p4est_par_ovl_periodic_3d
837:       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
838:     test:
839:       suffix: p4est_par_ovl_gmsh_periodic
840:       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
841:     test:
842:       suffix: p4est_par_ovl_gmsh_surface
843:       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
844:     test:
845:       suffix: p4est_par_ovl_gmsh_s2t_3d
846:       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
847:     test:
848:       suffix: p4est_par_ovl_gmsh_s2t_3d_hash
849:       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
850:     test:
851:       requires: long_runtime
852:       suffix: p4est_par_ovl_gmsh_periodic_3d
853:       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
854:     test:
855:       suffix: p4est_par_ovl_hyb_2d
856:       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
857:     test:
858:       suffix: p4est_par_ovl_hyb_3d
859:       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

861:   test:
862:     TODO: broken
863:     requires: p4est
864:     nsize: 2
865:     suffix: p4est_bug_labels_noovl
866:     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

868:   test:
869:     requires: p4est
870:     nsize: 2
871:     suffix: p4est_bug_distribute_overlap
872:     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
873:     args: -dm_post_overlap_view

875:   test:
876:     suffix: ref_alfeld2d_0
877:     requires: triangle
878:     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
879:   test:
880:     suffix: ref_alfeld3d_0
881:     requires: ctetgen
882:     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

884:   # Boundary layer refiners
885:   test:
886:     suffix: ref_bl_1
887:     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
888:   test:
889:     suffix: ref_bl_2_tri
890:     requires: triangle
891:     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
892:   test:
893:     suffix: ref_bl_3_quad
894:     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
895:   test:
896:     suffix: ref_bl_spheresurface_extruded
897:     nsize : 4
898:     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
899:   test:
900:     suffix: ref_bl_3d_hyb
901:     nsize : 4
902:     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

904:   testset:
905:     args: -dm_plex_shape sphere -dm_plex_check_all -dm_view
906:     test:
907:       suffix: sphere_0
908:       args:
909:     test:
910:       suffix: sphere_1
911:       args: -ref_dm_refine 2
912:     test:
913:       suffix: sphere_2
914:       args: -dm_plex_simplex 0
915:     test:
916:       suffix: sphere_3
917:       args: -dm_plex_simplex 0 -ref_dm_refine 2

919:   test:
920:     suffix: ball_0
921:     requires: ctetgen
922:     args: -dm_plex_dim 3 -dm_plex_shape ball -dm_plex_check_all -dm_view

924:   test:
925:     suffix: ball_1
926:     requires: ctetgen
927:     args: -dm_plex_dim 3 -dm_plex_shape ball -bd_dm_refine 2 -dm_plex_check_all -dm_view

929:   test:
930:     suffix: schwarz_p_extrude
931:     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

933:   test:
934:     suffix: pyr_mixed_0
935:     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/pyr_tet.msh -dm_plex_check_all -dm_view
936: TEST*/