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