xref: /petsc/src/dm/impls/plex/tests/ex1.c (revision 40cbb1a031ea8f2be4fe2b92dc842b003ad37be3)
1 static char help[] = "Tests various DMPlex routines to construct, refine and distribute a mesh.\n\n";
2 
3 #include <petscdmplex.h>
4 #include <petscdmplextransform.h>
5 #include <petscsf.h>
6 
7 enum {STAGE_LOAD, STAGE_DISTRIBUTE, STAGE_REFINE, STAGE_OVERLAP};
8 
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;
20 
21 PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
22 {
23   PetscFunctionBegin;
24   options->dim               = 2;
25   options->overlap           = 0;
26   options->testp4est[0]      = PETSC_FALSE;
27   options->testp4est[1]      = PETSC_FALSE;
28   options->redistribute      = PETSC_FALSE;
29   options->final_ref         = PETSC_FALSE;
30   options->final_diagnostics = PETSC_TRUE;
31 
32   PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");
33   PetscCall(PetscOptionsRangeInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, NULL,1,3));
34   PetscCall(PetscOptionsBoundedInt("-overlap", "The cell overlap for partitioning", "ex1.c", options->overlap, &options->overlap, NULL,0));
35   PetscCall(PetscOptionsBool("-test_p4est_seq", "Test p4est with sequential base DM", "ex1.c", options->testp4est[0], &options->testp4est[0], NULL));
36   PetscCall(PetscOptionsBool("-test_p4est_par", "Test p4est with parallel base DM", "ex1.c", options->testp4est[1], &options->testp4est[1], NULL));
37   PetscCall(PetscOptionsBool("-test_redistribute", "Test redistribution", "ex1.c", options->redistribute, &options->redistribute, NULL));
38   PetscCall(PetscOptionsBool("-final_ref", "Run uniform refinement on the final mesh", "ex1.c", options->final_ref, &options->final_ref, NULL));
39   PetscCall(PetscOptionsBool("-final_diagnostics", "Run diagnostics on the final mesh", "ex1.c", options->final_diagnostics, &options->final_diagnostics, NULL));
40   PetscOptionsEnd();
41 
42   PetscCall(PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent));
43   PetscCall(PetscLogStageRegister("MeshLoad",       &options->stages[STAGE_LOAD]));
44   PetscCall(PetscLogStageRegister("MeshDistribute", &options->stages[STAGE_DISTRIBUTE]));
45   PetscCall(PetscLogStageRegister("MeshRefine",     &options->stages[STAGE_REFINE]));
46   PetscCall(PetscLogStageRegister("MeshOverlap",    &options->stages[STAGE_OVERLAP]));
47   PetscFunctionReturn(0);
48 }
49 
50 PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm)
51 {
52   PetscInt       dim           = user->dim;
53   PetscBool      testp4est_seq = user->testp4est[0];
54   PetscBool      testp4est_par = user->testp4est[1];
55   PetscMPIInt    rank, size;
56   PetscBool      periodic;
57 
58   PetscFunctionBegin;
59   PetscCall(PetscLogEventBegin(user->createMeshEvent,0,0,0,0));
60   PetscCallMPI(MPI_Comm_rank(comm, &rank));
61   PetscCallMPI(MPI_Comm_size(comm, &size));
62   PetscCall(PetscLogStagePush(user->stages[STAGE_LOAD]));
63   PetscCall(DMCreate(comm, dm));
64   PetscCall(DMSetType(*dm, DMPLEX));
65   PetscCall(DMPlexDistributeSetDefault(*dm, PETSC_FALSE));
66   PetscCall(DMSetFromOptions(*dm));
67 
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   PetscCall(DMLocalizeCoordinates(*dm));
74   PetscCall(DMGetPeriodicity(*dm, &periodic, NULL, NULL, NULL));
75   if (periodic) PetscCall(DMSetPeriodicity(*dm, PETSC_TRUE, NULL, NULL, NULL));
76 
77   PetscCall(DMViewFromOptions(*dm,NULL,"-init_dm_view"));
78   PetscCall(DMGetDimension(*dm, &dim));
79 
80   if (testp4est_seq) {
81 #if defined(PETSC_HAVE_P4EST)
82     DM dmConv = NULL;
83 
84     PetscCall(DMPlexCheck(*dm));
85     PetscCall(DMPlexSetRefinementUniform(*dm, PETSC_TRUE));
86     PetscCall(DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX));
87     PetscCall(DMRefine(*dm, PETSC_COMM_WORLD, &dmConv));
88     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
89     if (dmConv) {
90       PetscCall(DMDestroy(dm));
91       *dm  = dmConv;
92     }
93     PetscCall(DMViewFromOptions(*dm,NULL,"-initref_dm_view"));
94     PetscCall(DMPlexCheck(*dm));
95 
96     PetscCall(DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv));
97     if (dmConv) {
98       PetscCall(PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_1_"));
99       PetscCall(DMSetFromOptions(dmConv));
100       PetscCall(DMDestroy(dm));
101       *dm  = dmConv;
102     }
103     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_1_"));
104     PetscCall(DMSetUp(*dm));
105     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
106     PetscCall(DMConvert(*dm,DMPLEX,&dmConv));
107     if (dmConv) {
108       PetscCall(PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_2_"));
109       PetscCall(DMPlexDistributeSetDefault(dmConv, PETSC_FALSE));
110       PetscCall(DMSetFromOptions(dmConv));
111       PetscCall(DMDestroy(dm));
112       *dm  = dmConv;
113     }
114     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_2_"));
115     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
116     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
117 #else
118     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
119 #endif
120   }
121 
122   PetscCall(PetscLogStagePop());
123   if (!testp4est_seq) {
124     PetscCall(PetscLogStagePush(user->stages[STAGE_DISTRIBUTE]));
125     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_pre_dist_view"));
126     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, "dist_"));
127     PetscCall(DMSetFromOptions(*dm));
128     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
129     PetscCall(PetscLogStagePop());
130     PetscCall(DMViewFromOptions(*dm, NULL, "-distributed_dm_view"));
131   }
132   PetscCall(PetscLogStagePush(user->stages[STAGE_REFINE]));
133   PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, "ref_"));
134   PetscCall(DMSetFromOptions(*dm));
135   PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
136   PetscCall(PetscLogStagePop());
137 
138   if (testp4est_par) {
139 #if defined(PETSC_HAVE_P4EST)
140     DM dmConv = NULL;
141 
142     PetscCall(DMPlexCheck(*dm));
143     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_tobox_view"));
144     PetscCall(DMPlexSetRefinementUniform(*dm, PETSC_TRUE));
145     PetscCall(DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX));
146     PetscCall(DMRefine(*dm, PETSC_COMM_WORLD, &dmConv));
147     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
148     if (dmConv) {
149       PetscCall(DMDestroy(dm));
150       *dm  = dmConv;
151     }
152     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_tobox_view"));
153     PetscCall(DMPlexCheck(*dm));
154 
155     PetscCall(DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv));
156     if (dmConv) {
157       PetscCall(PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_1_"));
158       PetscCall(DMSetFromOptions(dmConv));
159       PetscCall(DMDestroy(dm));
160       *dm  = dmConv;
161     }
162     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_1_"));
163     PetscCall(DMSetUp(*dm));
164     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
165     PetscCall(DMConvert(*dm, DMPLEX, &dmConv));
166     if (dmConv) {
167       PetscCall(PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_2_"));
168       PetscCall(DMPlexDistributeSetDefault(dmConv, PETSC_FALSE));
169       PetscCall(DMSetFromOptions(dmConv));
170       PetscCall(DMDestroy(dm));
171       *dm  = dmConv;
172     }
173     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_2_"));
174     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
175     PetscCall(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
176 #else
177     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
178 #endif
179   }
180 
181   /* test redistribution of an already distributed mesh */
182   if (user->redistribute) {
183     DM       distributedMesh;
184     PetscSF  sf;
185     PetscInt nranks;
186 
187     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view"));
188     PetscCall(DMPlexDistribute(*dm, 0, NULL, &distributedMesh));
189     if (distributedMesh) {
190       PetscCall(DMGetPointSF(distributedMesh, &sf));
191       PetscCall(PetscSFSetUp(sf));
192       PetscCall(DMGetNeighbors(distributedMesh, &nranks, NULL));
193       PetscCallMPI(MPI_Allreduce(MPI_IN_PLACE, &nranks, 1, MPIU_INT, MPI_MIN, PetscObjectComm((PetscObject)*dm)));
194       PetscCall(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)*dm)), "Minimum number of neighbors: %" PetscInt_FMT "\n", nranks));
195       PetscCall(DMDestroy(dm));
196       *dm  = distributedMesh;
197     }
198     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_post_redist_view"));
199   }
200 
201   if (user->overlap) {
202     DM overlapMesh = NULL;
203 
204     /* Add the overlap to refined mesh */
205     PetscCall(PetscLogStagePush(user->stages[STAGE_OVERLAP]));
206     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view"));
207     PetscCall(DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh));
208     if (overlapMesh) {
209       PetscInt overlap;
210       PetscCall(DMPlexGetOverlap(overlapMesh, &overlap));
211       PetscCall(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %" PetscInt_FMT "\n", overlap));
212       PetscCall(DMDestroy(dm));
213       *dm = overlapMesh;
214     }
215     PetscCall(DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view"));
216     PetscCall(PetscLogStagePop());
217   }
218   if (user->final_ref) {
219     DM refinedMesh = NULL;
220 
221     PetscCall(DMPlexSetRefinementUniform(*dm, PETSC_TRUE));
222     PetscCall(DMRefine(*dm, comm, &refinedMesh));
223     if (refinedMesh) {
224       PetscCall(DMDestroy(dm));
225       *dm  = refinedMesh;
226     }
227   }
228 
229   PetscCall(PetscObjectSetName((PetscObject) *dm, "Generated Mesh"));
230   PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
231   if (user->final_diagnostics) {
232     PetscCall(DMPlexCheck(*dm));
233   }
234   PetscCall(PetscLogEventEnd(user->createMeshEvent,0,0,0,0));
235   PetscFunctionReturn(0);
236 }
237 
238 int main(int argc, char **argv)
239 {
240   DM             dm;
241   AppCtx         user;
242 
243   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
244   PetscCall(ProcessOptions(PETSC_COMM_WORLD, &user));
245   PetscCall(CreateMesh(PETSC_COMM_WORLD, &user, &dm));
246   PetscCall(DMDestroy(&dm));
247   PetscCall(PetscFinalize());
248   return 0;
249 }
250 
251 /*TEST
252 
253   # CTetGen 0-1
254   test:
255     suffix: 0
256     requires: ctetgen
257     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
258   test:
259     suffix: 1
260     requires: ctetgen
261     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
262 
263   # 2D LaTex and ASCII output 2-9
264   test:
265     suffix: 2
266     requires: triangle
267     args: -dm_plex_interpolate 0 -dm_view ascii::ascii_latex
268   test:
269     suffix: 3
270     requires: triangle
271     args: -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
272   test:
273     suffix: 4
274     requires: triangle
275     nsize: 2
276     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_info_detail
277   test:
278     suffix: 5
279     requires: triangle
280     nsize: 2
281     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
282   test:
283     suffix: 6
284     args: -dm_coord_space 0 -dm_plex_simplex 0 -dm_view ascii::ascii_info_detail
285   test:
286     suffix: 7
287     args: -dm_coord_space 0 -dm_plex_simplex 0 -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
288   test:
289     suffix: 8
290     nsize: 2
291     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
292 
293   # 1D ASCII output
294   testset:
295     args: -dm_coord_space 0 -dm_plex_dim 1 -dm_view ascii::ascii_info_detail -dm_plex_check_all
296     test:
297       suffix: 1d_0
298       args:
299     test:
300       suffix: 1d_1
301       args: -ref_dm_refine 2
302     test:
303       suffix: 1d_2
304       args: -dm_plex_box_faces 5 -dm_plex_box_bd periodic
305 
306   # Parallel refinement tests with overlap
307   test:
308     suffix: refine_overlap_1d
309     nsize: 2
310     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
311   test:
312     suffix: refine_overlap_2d
313     requires: triangle
314     nsize: {{2 8}separate output}
315     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 
317   # Parallel extrusion tests
318   test:
319     suffix: spheresurface_extruded
320     nsize : 4
321     args: -dm_coord_space 0 -dm_plex_shape sphere -dm_extrude 3 -dist_dm_distribute -petscpartitioner_type simple \
322           -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical
323 
324   test:
325     suffix: spheresurface_extruded_symmetric
326     nsize : 4
327     args: -dm_coord_space 0 -dm_plex_shape sphere -dm_extrude 3 -dm_plex_transform_extrude_symmetric -dist_dm_distribute -petscpartitioner_type simple \
328           -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical
329 
330   # Parallel simple partitioner tests
331   test:
332     suffix: part_simple_0
333     requires: triangle
334     nsize: 2
335     args: -dm_coord_space 0 -dm_plex_interpolate 0 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail
336   test:
337     suffix: part_simple_1
338     requires: triangle
339     nsize: 8
340     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 
342   # Parallel partitioner tests
343   test:
344     suffix: part_parmetis_0
345     requires: parmetis
346     nsize: 2
347     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
348   test:
349     suffix: part_ptscotch_0
350     requires: ptscotch
351     nsize: 2
352     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
353   test:
354     suffix: part_ptscotch_1
355     requires: ptscotch
356     nsize: 8
357     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1
358 
359   # CGNS reader tests 10-11 (need to find smaller test meshes)
360   test:
361     suffix: cgns_0
362     requires: cgns
363     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -dm_view
364 
365   # ExodusII reader tests
366   testset:
367     args: -dm_plex_boundary_label boundary -dm_plex_check_all -dm_view
368     test:
369       suffix: exo_0
370       requires: exodusii
371       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/sevenside-quad.exo
372     test:
373       suffix: exo_1
374       requires: exodusii
375       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/sevenside-quad-15.exo
376     test:
377       suffix: exo_2
378       requires: exodusii
379       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/squaremotor-30.exo
380     test:
381       suffix: exo_3
382       requires: exodusii
383       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/blockcylinder-50.exo
384     test:
385       suffix: exo_4
386       requires: exodusii
387      args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/simpleblock-100.exo
388 
389   # Gmsh mesh reader tests
390   testset:
391     args: -dm_coord_space 0 -dm_view
392 
393     test:
394       suffix: gmsh_0
395       requires: !single
396       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
397     test:
398       suffix: gmsh_1
399       requires: !single
400       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh
401     test:
402       suffix: gmsh_2
403       requires: !single
404       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh
405     test:
406       suffix: gmsh_3
407       nsize: 3
408       requires: !single
409       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -dist_dm_distribute -petscpartitioner_type simple
410     test:
411       suffix: gmsh_4
412       nsize: 3
413       requires: !single
414       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dist_dm_distribute -petscpartitioner_type simple
415     test:
416       suffix: gmsh_5
417       requires: !single
418       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh
419     # TODO: it seems the mesh is not a valid gmsh (inverted cell)
420     test:
421       suffix: gmsh_6
422       requires: !single
423       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -final_diagnostics 0
424     test:
425       suffix: gmsh_7
426       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
427     test:
428       suffix: gmsh_8
429       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh -dm_view ::ascii_info_detail -dm_plex_check_all
430   testset:
431     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
432     test:
433       suffix: gmsh_9
434     test:
435       suffix: gmsh_9_periodic_0
436       args: -dm_plex_gmsh_periodic 0
437   testset:
438     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
439     test:
440       suffix: gmsh_10
441     test:
442       suffix: gmsh_10_periodic_0
443       args: -dm_plex_gmsh_periodic 0
444   testset:
445     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
446     test:
447       suffix: gmsh_11
448     test:
449       suffix: gmsh_11_periodic_0
450       args: -dm_plex_gmsh_periodic 0
451   # TODO: it seems the mesh is not a valid gmsh (inverted cell)
452   test:
453     suffix: gmsh_12
454     nsize: 4
455     requires: !single mpiio
456     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
457   test:
458     suffix: gmsh_13_hybs2t
459     nsize: 4
460     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
461   test:
462     suffix: gmsh_14_ext
463     requires: !single
464     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
465   test:
466     suffix: gmsh_14_ext_s2t
467     requires: !single
468     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
469   test:
470     suffix: gmsh_15_hyb3d
471     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -dm_plex_check_all
472   test:
473     suffix: gmsh_15_hyb3d_vtk
474     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view vtk: -dm_plex_gmsh_hybrid -dm_plex_check_all
475   test:
476     suffix: gmsh_15_hyb3d_s2t
477     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
478   test:
479     suffix: gmsh_16_spheresurface
480     nsize : 4
481     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
482   test:
483     suffix: gmsh_16_spheresurface_s2t
484     nsize : 4
485     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
486   test:
487     suffix: gmsh_16_spheresurface_extruded
488     nsize : 4
489     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
490   test:
491     suffix: gmsh_16_spheresurface_extruded_s2t
492     nsize : 4
493     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
494   test:
495     suffix: gmsh_17_hyb3d_interp_ascii
496     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -dm_plex_check_all
497   test:
498     suffix: exodus_17_hyb3d_interp_ascii
499     requires: exodusii
500     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -dm_plex_check_all
501 
502   # Legacy Gmsh v22/v40 ascii/binary reader tests
503   testset:
504     output_file: output/ex1_gmsh_3d_legacy.out
505     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
506     test:
507       suffix: gmsh_3d_ascii_v22
508       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2
509     test:
510       suffix: gmsh_3d_ascii_v40
511       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4
512     test:
513       suffix: gmsh_3d_binary_v22
514       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2
515     test:
516       suffix: gmsh_3d_binary_v40
517       requires: long64
518       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4
519 
520   # Gmsh v41 ascii/binary reader tests
521   testset: # 32bit mesh, sequential
522     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
523     output_file: output/ex1_gmsh_3d_32.out
524     test:
525       suffix: gmsh_3d_ascii_v41_32
526       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
527     test:
528       suffix: gmsh_3d_binary_v41_32
529       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
530     test:
531       suffix: gmsh_3d_binary_v41_32_mpiio
532       requires: defined(PETSC_HAVE_MPIIO)
533       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
534   test:
535     suffix: gmsh_quad_8node
536     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-qua-8node.msh \
537           -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
538   test:
539     suffix: gmsh_hex_20node
540     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-hex-20node.msh \
541           -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
542   testset:  # 32bit mesh, parallel
543     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
544     nsize: 2
545     output_file: output/ex1_gmsh_3d_32_np2.out
546     test:
547       suffix: gmsh_3d_ascii_v41_32_np2
548       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
549     test:
550       suffix: gmsh_3d_binary_v41_32_np2
551       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
552     test:
553       suffix: gmsh_3d_binary_v41_32_np2_mpiio
554       requires: defined(PETSC_HAVE_MPIIO)
555       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
556   testset: # 64bit mesh, sequential
557     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
558     output_file: output/ex1_gmsh_3d_64.out
559     test:
560       suffix: gmsh_3d_ascii_v41_64
561       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
562     test:
563       suffix: gmsh_3d_binary_v41_64
564       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
565     test:
566       suffix: gmsh_3d_binary_v41_64_mpiio
567       requires: defined(PETSC_HAVE_MPIIO)
568       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
569   testset:  # 64bit mesh, parallel
570     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
571     nsize: 2
572     output_file: output/ex1_gmsh_3d_64_np2.out
573     test:
574       suffix: gmsh_3d_ascii_v41_64_np2
575       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
576     test:
577       suffix: gmsh_3d_binary_v41_64_np2
578       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
579     test:
580       suffix: gmsh_3d_binary_v41_64_np2_mpiio
581       requires: defined(PETSC_HAVE_MPIIO)
582       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
583 
584   # Fluent mesh reader tests
585   # TODO: Geometry checks fail
586   test:
587     suffix: fluent_0
588     requires: !complex
589     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dm_view -final_diagnostics 0
590   test:
591     suffix: fluent_1
592     nsize: 3
593     requires: !complex
594     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dist_dm_distribute -petscpartitioner_type simple -dm_view -final_diagnostics 0
595   test:
596     suffix: fluent_2
597     requires: !complex
598     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -dm_view -final_diagnostics 0
599   test:
600     suffix: fluent_3
601     requires: !complex
602     TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382
603     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -dm_view -final_diagnostics 0
604 
605   # Med mesh reader tests, including parallel file reads
606   test:
607     suffix: med_0
608     requires: med
609     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dm_view
610   test:
611     suffix: med_1
612     requires: med
613     nsize: 3
614     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dist_dm_distribute -petscpartitioner_type simple -dm_view
615   test:
616     suffix: med_2
617     requires: med
618     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dm_view
619   test:
620     suffix: med_3
621     requires: med
622     TODO: MED
623     nsize: 3
624     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dist_dm_distribute -petscpartitioner_type simple -dm_view
625 
626   # Test shape quality
627   test:
628     suffix: test_shape
629     requires: ctetgen
630     args: -dm_plex_dim 3 -dim 3 -dm_refine_hierarchy 3 -dm_plex_check_all -dm_plex_check_cell_shape
631 
632   # Test simplex to tensor conversion
633   test:
634     suffix: s2t2
635     requires: triangle
636     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
637 
638   test:
639     suffix: s2t3
640     requires: ctetgen
641     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
642 
643   # Test cylinder
644   testset:
645     args: -dm_plex_shape cylinder -dm_plex_check_all -dm_view
646     test:
647       suffix: cylinder
648       args: -ref_dm_refine 1
649     test:
650       suffix: cylinder_per
651       args: -dm_plex_cylinder_bd periodic -ref_dm_refine 1 -ref_dm_refine_remap 0
652     test:
653       suffix: cylinder_wedge
654       args: -dm_coord_space 0 -dm_plex_interpolate 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:
655     test:
656       suffix: cylinder_wedge_int
657       output_file: output/ex1_cylinder_wedge.out
658       args: -dm_coord_space 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:
659 
660   test:
661     suffix: box_2d
662     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
663 
664   test:
665     suffix: box_2d_per
666     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
667 
668   test:
669     suffix: box_2d_per_unint
670     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
671 
672   test:
673     suffix: box_3d
674     args: -dm_plex_dim 3 -dim 3 -dm_plex_simplex 0 -ref_dm_refine 3 -dm_plex_check_all -dm_view
675 
676   test:
677     requires: triangle
678     suffix: box_wedge
679     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
680 
681   testset:
682     requires: triangle
683     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
684     test:
685       suffix: box_wedge_s2t
686     test:
687       nsize: 3
688       args: -dist_dm_distribute -petscpartitioner_type simple
689       suffix: box_wedge_s2t_parallel
690 
691   # Test GLVis output
692   testset:
693     args: -dm_coord_space 0 -dm_plex_interpolate 0
694     test:
695       suffix: glvis_2d_tet
696       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
697     test:
698       suffix: glvis_2d_tet_per
699       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
700     test:
701       suffix: glvis_3d_tet
702       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
703   testset:
704     args: -dm_coord_space 0
705     test:
706       suffix: glvis_2d_tet_per_mfem
707       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:
708     test:
709       suffix: glvis_2d_quad
710       args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_view glvis:
711     test:
712       suffix: glvis_2d_quad_per
713       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
714     test:
715       suffix: glvis_2d_quad_per_mfem
716       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
717     test:
718       suffix: glvis_3d_tet_per
719       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
720     test:
721       suffix: glvis_3d_tet_per_mfem
722       TODO: broken
723       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:
724     test:
725       suffix: glvis_3d_hex
726       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_view glvis:
727     test:
728       suffix: glvis_3d_hex_per
729       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
730     test:
731       suffix: glvis_3d_hex_per_mfem
732       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
733     test:
734       suffix: glvis_2d_hyb
735       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
736     test:
737       suffix: glvis_3d_hyb
738       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
739     test:
740       suffix: glvis_3d_hyb_s2t
741       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
742 
743   # Test P4EST
744   testset:
745     requires: p4est
746     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
747     test:
748       suffix: p4est_periodic
749       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
750     test:
751       suffix: p4est_periodic_3d
752       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
753     test:
754       suffix: p4est_gmsh_periodic
755       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
756     test:
757       suffix: p4est_gmsh_surface
758       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
759     test:
760       suffix: p4est_gmsh_surface_parallel
761       nsize: 2
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 -petscpartitioner_type simple -dm_view ::load_balance
763     test:
764       suffix: p4est_hyb_2d
765       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
766     test:
767       suffix: p4est_hyb_3d
768       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
769     test:
770       requires: ctetgen
771       suffix: p4est_s2t_bugfaces_3d
772       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
773     test:
774       suffix: p4est_bug_overlapsf
775       nsize: 3
776       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
777     test:
778       suffix: p4est_redistribute
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 -test_redistribute -dm_plex_csr_alg {{mat graph overlap}} -dm_view ::load_balance
781     test:
782       suffix: p4est_gmsh_s2t_3d
783       args: -conv_seq_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
784     test:
785       suffix: p4est_gmsh_s2t_3d_hash
786       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
787     test:
788       requires: long_runtime
789       suffix: p4est_gmsh_periodic_3d
790       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
791 
792   testset:
793     requires: p4est
794     nsize: 6
795     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
796     test:
797       TODO: interface cones do not conform
798       suffix: p4est_par_periodic
799       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
800     test:
801       TODO: interface cones do not conform
802       suffix: p4est_par_periodic_3d
803       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
804     test:
805       TODO: interface cones do not conform
806       suffix: p4est_par_gmsh_periodic
807       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
808     test:
809       suffix: p4est_par_gmsh_surface
810       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
811     test:
812       suffix: p4est_par_gmsh_s2t_3d
813       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
814     test:
815       TODO: interface cones do not conform
816       suffix: p4est_par_gmsh_s2t_3d_hash
817       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
818     test:
819       requires: long_runtime
820       suffix: p4est_par_gmsh_periodic_3d
821       args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh
822 
823   testset:
824     requires: p4est
825     nsize: 6
826     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
827     test:
828       suffix: p4est_par_ovl_periodic
829       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
830     #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled)
831     test:
832       suffix: p4est_par_ovl_periodic_3d
833       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
834     test:
835       suffix: p4est_par_ovl_gmsh_periodic
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/square_periodic.msh
837     test:
838       suffix: p4est_par_ovl_gmsh_surface
839       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
840     test:
841       suffix: p4est_par_ovl_gmsh_s2t_3d
842       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
843     test:
844       suffix: p4est_par_ovl_gmsh_s2t_3d_hash
845       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
846     test:
847       requires: long_runtime
848       suffix: p4est_par_ovl_gmsh_periodic_3d
849       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
850     test:
851       suffix: p4est_par_ovl_hyb_2d
852       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
853     test:
854       suffix: p4est_par_ovl_hyb_3d
855       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
856 
857   test:
858     TODO: broken
859     requires: p4est
860     nsize: 2
861     suffix: p4est_bug_labels_noovl
862     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
863 
864   test:
865     requires: p4est
866     nsize: 2
867     suffix: p4est_bug_distribute_overlap
868     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
869     args: -dm_post_overlap_view
870 
871   test:
872     suffix: ref_alfeld2d_0
873     requires: triangle
874     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
875   test:
876     suffix: ref_alfeld3d_0
877     requires: ctetgen
878     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
879 
880   # Boundary layer refiners
881   test:
882     suffix: ref_bl_1
883     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
884   test:
885     suffix: ref_bl_2_tri
886     requires: triangle
887     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
888   test:
889     suffix: ref_bl_3_quad
890     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
891   test:
892     suffix: ref_bl_spheresurface_extruded
893     nsize : 4
894     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
895   test:
896     suffix: ref_bl_3d_hyb
897     nsize : 4
898     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
899 
900   testset:
901     args: -dm_plex_shape sphere -dm_plex_check_all -dm_view
902     test:
903       suffix: sphere_0
904       args:
905     test:
906       suffix: sphere_1
907       args: -ref_dm_refine 2
908     test:
909       suffix: sphere_2
910       args: -dm_plex_simplex 0
911     test:
912       suffix: sphere_3
913       args: -dm_plex_simplex 0 -ref_dm_refine 2
914 
915   test:
916     suffix: ball_0
917     requires: ctetgen
918     args: -dm_plex_dim 3 -dm_plex_shape ball -dm_plex_check_all -dm_view
919 
920   test:
921     suffix: ball_1
922     requires: ctetgen
923     args: -dm_plex_dim 3 -dm_plex_shape ball -bd_dm_refine 2 -dm_plex_check_all -dm_view
924 
925   test:
926     suffix: schwarz_p_extrude
927     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
928 TEST*/
929