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 {
8 STAGE_LOAD,
9 STAGE_DISTRIBUTE,
10 STAGE_REFINE,
11 STAGE_OVERLAP
12 };
13
14 typedef struct {
15 PetscLogEvent createMeshEvent;
16 PetscLogStage stages[4];
17 /* Domain and mesh definition */
18 PetscInt dim; /* The topological mesh dimension */
19 PetscInt overlap; /* The cell overlap to use during partitioning */
20 PetscBool testp4est[2];
21 PetscBool redistribute;
22 PetscBool final_ref; /* Run refinement at the end */
23 PetscBool final_diagnostics; /* Run diagnostics on the final mesh */
24 } AppCtx;
25
ProcessOptions(MPI_Comm comm,AppCtx * options)26 PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
27 {
28 PetscFunctionBegin;
29 options->dim = 2;
30 options->overlap = 0;
31 options->testp4est[0] = PETSC_FALSE;
32 options->testp4est[1] = PETSC_FALSE;
33 options->redistribute = PETSC_FALSE;
34 options->final_ref = PETSC_FALSE;
35 options->final_diagnostics = PETSC_TRUE;
36
37 PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");
38 PetscCall(PetscOptionsRangeInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, NULL, 1, 3));
39 PetscCall(PetscOptionsBoundedInt("-overlap", "The cell overlap for partitioning", "ex1.c", options->overlap, &options->overlap, NULL, 0));
40 PetscCall(PetscOptionsBool("-test_p4est_seq", "Test p4est with sequential base DM", "ex1.c", options->testp4est[0], &options->testp4est[0], NULL));
41 PetscCall(PetscOptionsBool("-test_p4est_par", "Test p4est with parallel base DM", "ex1.c", options->testp4est[1], &options->testp4est[1], NULL));
42 PetscCall(PetscOptionsBool("-test_redistribute", "Test redistribution", "ex1.c", options->redistribute, &options->redistribute, NULL));
43 PetscCall(PetscOptionsBool("-final_ref", "Run uniform refinement on the final mesh", "ex1.c", options->final_ref, &options->final_ref, NULL));
44 PetscCall(PetscOptionsBool("-final_diagnostics", "Run diagnostics on the final mesh", "ex1.c", options->final_diagnostics, &options->final_diagnostics, NULL));
45 PetscOptionsEnd();
46
47 PetscCall(PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent));
48 PetscCall(PetscLogStageRegister("MeshLoad", &options->stages[STAGE_LOAD]));
49 PetscCall(PetscLogStageRegister("MeshDistribute", &options->stages[STAGE_DISTRIBUTE]));
50 PetscCall(PetscLogStageRegister("MeshRefine", &options->stages[STAGE_REFINE]));
51 PetscCall(PetscLogStageRegister("MeshOverlap", &options->stages[STAGE_OVERLAP]));
52 PetscFunctionReturn(PETSC_SUCCESS);
53 }
54
CreateMesh(MPI_Comm comm,AppCtx * user,DM * dm)55 PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm)
56 {
57 PetscInt dim = user->dim;
58 PetscBool testp4est_seq = user->testp4est[0];
59 PetscBool testp4est_par = user->testp4est[1];
60 PetscMPIInt rank, size;
61
62 PetscFunctionBegin;
63 PetscCall(PetscLogEventBegin(user->createMeshEvent, 0, 0, 0, 0));
64 PetscCallMPI(MPI_Comm_rank(comm, &rank));
65 PetscCallMPI(MPI_Comm_size(comm, &size));
66 PetscCall(PetscLogStagePush(user->stages[STAGE_LOAD]));
67 PetscCall(DMCreate(comm, dm));
68 PetscCall(DMSetType(*dm, DMPLEX));
69 PetscCall(DMPlexDistributeSetDefault(*dm, PETSC_FALSE));
70 PetscCall(DMSetFromOptions(*dm));
71 PetscCall(DMLocalizeCoordinates(*dm));
72
73 PetscCall(DMViewFromOptions(*dm, NULL, "-init_dm_view"));
74 PetscCall(DMGetDimension(*dm, &dim));
75
76 if (testp4est_seq) {
77 PetscCheck(PetscDefined(HAVE_P4EST), PETSC_COMM_WORLD, PETSC_ERR_SUP, "Reconfigure PETSc with --download-p4est");
78 DM dmConv = NULL;
79
80 PetscCall(DMPlexCheck(*dm));
81 PetscCall(DMPlexSetRefinementUniform(*dm, PETSC_TRUE));
82 PetscCall(DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX));
83 PetscCall(DMRefine(*dm, PETSC_COMM_WORLD, &dmConv));
84 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL));
85 if (dmConv) {
86 PetscCall(DMDestroy(dm));
87 *dm = dmConv;
88 }
89 PetscCall(DMViewFromOptions(*dm, NULL, "-initref_dm_view"));
90 PetscCall(DMPlexCheck(*dm));
91
92 /* For topologically periodic meshes, we first localize coordinates,
93 and then remove any information related with the
94 automatic computation of localized vertices.
95 This way, refinement operations and conversions to p4est
96 will preserve the shape of the domain in physical space */
97 PetscCall(DMSetPeriodicity(*dm, NULL, NULL, NULL));
98
99 PetscCall(DMConvert(*dm, dim == 2 ? DMP4EST : DMP8EST, &dmConv));
100 if (dmConv) {
101 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)dmConv, "conv_seq_1_"));
102 PetscCall(DMSetFromOptions(dmConv));
103 PetscCall(DMDestroy(dm));
104 *dm = dmConv;
105 }
106 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, "conv_seq_1_"));
107 PetscCall(DMSetUp(*dm));
108 PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
109 PetscCall(DMConvert(*dm, DMPLEX, &dmConv));
110 if (dmConv) {
111 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)dmConv, "conv_seq_2_"));
112 PetscCall(DMPlexDistributeSetDefault(dmConv, PETSC_FALSE));
113 PetscCall(DMSetFromOptions(dmConv));
114 PetscCall(DMDestroy(dm));
115 *dm = dmConv;
116 }
117 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, "conv_seq_2_"));
118 PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
119 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL));
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 PetscCheck(PetscDefined(HAVE_P4EST), PETSC_COMM_WORLD, PETSC_ERR_SUP, "Reconfigure PETSc with --download-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 }
177
178 /* test redistribution of an already distributed mesh */
179 if (user->redistribute) {
180 DM distributedMesh;
181 PetscSF sf;
182 PetscInt nranks;
183
184 PetscCall(DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view"));
185 PetscCall(DMPlexDistribute(*dm, 0, NULL, &distributedMesh));
186 if (distributedMesh) {
187 PetscCall(DMGetPointSF(distributedMesh, &sf));
188 PetscCall(PetscSFSetUp(sf));
189 PetscCall(DMGetNeighbors(distributedMesh, &nranks, NULL));
190 PetscCallMPI(MPIU_Allreduce(MPI_IN_PLACE, &nranks, 1, MPIU_INT, MPI_MIN, PetscObjectComm((PetscObject)*dm)));
191 PetscCall(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)*dm)), "Minimum number of neighbors: %" PetscInt_FMT "\n", nranks));
192 PetscCall(DMDestroy(dm));
193 *dm = distributedMesh;
194 }
195 PetscCall(DMViewFromOptions(*dm, NULL, "-dm_post_redist_view"));
196 }
197
198 if (user->overlap) {
199 DM overlapMesh = NULL;
200
201 /* Add the overlap to refined mesh */
202 PetscCall(PetscLogStagePush(user->stages[STAGE_OVERLAP]));
203 PetscCall(DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view"));
204 PetscCall(DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh));
205 if (overlapMesh) {
206 PetscInt overlap;
207 PetscCall(DMPlexGetOverlap(overlapMesh, &overlap));
208 PetscCall(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %" PetscInt_FMT "\n", overlap));
209 PetscCall(DMDestroy(dm));
210 *dm = overlapMesh;
211 }
212 PetscCall(DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view"));
213 PetscCall(PetscLogStagePop());
214 }
215 if (user->final_ref) {
216 DM refinedMesh = NULL;
217
218 PetscCall(DMPlexSetRefinementUniform(*dm, PETSC_TRUE));
219 PetscCall(DMRefine(*dm, comm, &refinedMesh));
220 if (refinedMesh) {
221 PetscCall(DMDestroy(dm));
222 *dm = refinedMesh;
223 }
224 }
225
226 PetscCall(PetscObjectSetName((PetscObject)*dm, "Generated Mesh"));
227 PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
228 if (user->final_diagnostics) PetscCall(DMPlexCheck(*dm));
229 PetscCall(PetscLogEventEnd(user->createMeshEvent, 0, 0, 0, 0));
230 PetscFunctionReturn(PETSC_SUCCESS);
231 }
232
main(int argc,char ** argv)233 int main(int argc, char **argv)
234 {
235 DM dm;
236 AppCtx user;
237
238 PetscFunctionBeginUser;
239 PetscCall(PetscInitialize(&argc, &argv, NULL, help));
240 PetscCall(ProcessOptions(PETSC_COMM_WORLD, &user));
241 PetscCall(CreateMesh(PETSC_COMM_WORLD, &user, &dm));
242 PetscCall(DMDestroy(&dm));
243 PetscCall(PetscFinalize());
244 return 0;
245 }
246
247 /*TEST
248
249 # CTetGen 0-1
250 test:
251 suffix: 0
252 requires: ctetgen
253 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
254 test:
255 suffix: 1
256 requires: ctetgen
257 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
258
259 # 2D LaTex and ASCII output 2-9
260 test:
261 suffix: 2
262 requires: triangle
263 args: -dm_plex_interpolate 0 -dm_view ascii::ascii_latex
264 test:
265 suffix: 3
266 requires: triangle
267 args: -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
268 test:
269 suffix: 4
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_info_detail
273 test:
274 suffix: 5
275 requires: triangle
276 nsize: 2
277 args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
278 test:
279 suffix: 6
280 args: -dm_coord_space 0 -dm_plex_simplex 0 -dm_view ascii::ascii_info_detail
281 test:
282 suffix: 7
283 args: -dm_coord_space 0 -dm_plex_simplex 0 -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
284 test:
285 suffix: 8
286 nsize: 2
287 args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
288 test:
289 suffix: box_2d_latex_xper
290 nsize: 1
291 args: -dm_plex_simplex 0 -dm_plex_box_faces 5,5 -dm_plex_box_bd periodic,none \
292 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex -dm_plex_view_edges 0
293
294 # 1D ASCII output
295 testset:
296 args: -dm_coord_space 0 -dm_plex_dim 1 -dm_view ascii::ascii_info_detail -dm_plex_check_all
297 test:
298 suffix: 1d_0
299 args:
300 test:
301 suffix: 1d_1
302 args: -ref_dm_refine 2
303 test:
304 suffix: 1d_2
305 args: -dm_plex_box_faces 5 -dm_plex_box_bd periodic
306
307 # Parallel refinement tests with overlap
308 test:
309 suffix: refine_overlap_1d
310 nsize: 2
311 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
312 test:
313 suffix: refine_overlap_2d
314 requires: triangle
315 nsize: {{2 8}separate output}
316 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
317
318 # Parallel extrusion tests
319 test:
320 suffix: 1d_extruded
321 args: -dm_plex_dim 1 -dm_plex_box_faces 5 -dm_extrude 3 -dm_plex_check_all -dm_view draw
322 output_file: output/empty.out
323
324 test:
325 # This test needs a non-tensor prism so we can make a coordinate space
326 suffix: spheresurface_extruded
327 nsize : 4
328 args: -dm_plex_shape sphere -dm_extrude 3 -dm_plex_transform_extrude_use_tensor 0 \
329 -dist_dm_distribute -petscpartitioner_type simple \
330 -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical
331
332 test:
333 # This test needs a non-tensor prism so we can make a coordinate space
334 suffix: spheresurface_extruded_symmetric
335 nsize : 4
336 args: -dm_plex_shape sphere -dm_extrude 3 -dm_plex_transform_extrude_use_tensor 0 -dm_plex_transform_extrude_symmetric \
337 -dist_dm_distribute -petscpartitioner_type simple \
338 -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical
339
340 test:
341 # Test with a tensor prism which cannot have a coordinate space
342 suffix: spheresurface_extruded_nocoord
343 nsize : 4
344 args: -dm_coord_space 0 -dm_plex_shape sphere -dm_extrude 3 \
345 -dist_dm_distribute -petscpartitioner_type simple \
346 -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical
347
348 # Parallel simple partitioner tests
349 test:
350 suffix: part_simple_0
351 requires: triangle
352 nsize: 2
353 args: -dm_coord_space 0 -dm_plex_interpolate 0 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail
354 test:
355 suffix: part_simple_1
356 requires: triangle
357 nsize: 8
358 args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail
359
360 # Parallel partitioner tests
361 test:
362 suffix: part_parmetis_0
363 requires: parmetis
364 nsize: 2
365 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
366 test:
367 suffix: part_ptscotch_0
368 requires: ptscotch
369 nsize: 2
370 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
371 test:
372 suffix: part_ptscotch_1
373 requires: ptscotch
374 nsize: 8
375 args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1
376
377 # CGNS reader tests 10-11 (need to find smaller test meshes)
378 test:
379 suffix: cgns_0
380 requires: datafilespath cgns
381 args: -dm_plex_filename ${DATAFILESPATH}/meshes/tut21.cgns -dm_view
382
383 # ExodusII reader tests
384 testset:
385 args: -dm_plex_boundary_label boundary -dm_plex_check_all -dm_view
386 test:
387 suffix: exo_0
388 requires: exodusii
389 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/sevenside-quad.exo
390 test:
391 suffix: exo_1
392 requires: exodusii
393 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/sevenside-quad-15.exo
394 test:
395 suffix: exo_2
396 requires: exodusii
397 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/squaremotor-30.exo
398 test:
399 suffix: exo_3
400 requires: exodusii
401 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/blockcylinder-50.exo
402 test:
403 suffix: exo_4
404 requires: exodusii
405 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/simpleblock-100.exo
406 test:
407 suffix: exo_1d_0
408 requires: exodusii
409 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/1d-2elems.e
410
411 # Gmsh mesh reader tests
412 testset:
413 args: -dm_coord_space 0 -dm_view
414
415 test:
416 suffix: gmsh_0
417 requires: !single
418 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
419 test:
420 suffix: gmsh_1
421 requires: !single
422 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh
423 test:
424 suffix: gmsh_1_box_label
425 requires: !single
426 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -dm_plex_box_label
427 test:
428 suffix: gmsh_2
429 requires: !single
430 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh
431 test:
432 suffix: gmsh_3
433 nsize: 3
434 requires: !single
435 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -dist_dm_distribute -petscpartitioner_type simple
436 test:
437 suffix: gmsh_4
438 nsize: 3
439 requires: !single
440 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dist_dm_distribute -petscpartitioner_type simple
441 test:
442 suffix: gmsh_5
443 requires: !single
444 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh
445 # TODO: it seems the mesh is not a valid gmsh (inverted cell)
446 test:
447 suffix: gmsh_6
448 requires: !single
449 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -final_diagnostics 0
450 test:
451 suffix: gmsh_7
452 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_view ::ascii_info_detail -dm_plex_check_all
453 test:
454 suffix: gmsh_8
455 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh -dm_view ::ascii_info_detail -dm_plex_check_all
456 testset:
457 args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic_bin.msh -dm_view ::ascii_info_detail -dm_plex_check_all
458 test:
459 suffix: gmsh_9
460 test:
461 suffix: gmsh_9_periodic_0
462 args: -dm_plex_gmsh_periodic 0
463 testset:
464 args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -dm_plex_check_all
465 test:
466 suffix: gmsh_10
467 test:
468 suffix: gmsh_10_periodic_0
469 args: -dm_plex_gmsh_periodic 0
470 testset:
471 args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -dm_plex_check_all -ref_dm_refine 1
472 test:
473 suffix: gmsh_11
474 test:
475 suffix: gmsh_11_periodic_0
476 args: -dm_plex_gmsh_periodic 0
477 # TODO: it seems the mesh is not a valid gmsh (inverted cell)
478 test:
479 suffix: gmsh_12
480 nsize: 4
481 requires: !single mpiio
482 args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -viewer_binary_mpiio -dist_dm_distribute -petscpartitioner_type simple -dm_view -final_diagnostics 0
483 test:
484 suffix: gmsh_13_hybs2t
485 nsize: 4
486 args: -dm_coord_space 0 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dist_dm_distribute -petscpartitioner_type simple -dm_view -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox -dm_plex_check_all
487 test:
488 suffix: gmsh_14_ext
489 requires: !single
490 args: -dm_coord_space 0 -dm_extrude 2 -dm_plex_transform_extrude_thickness 1.5 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -dm_plex_check_all
491 test:
492 suffix: gmsh_14_ext_s2t
493 requires: !single
494 args: -dm_coord_space 0 -dm_extrude 2 -dm_plex_transform_extrude_thickness 1.5 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -dm_plex_check_all -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tobox
495 test:
496 suffix: gmsh_15_hyb3d
497 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -dm_plex_check_all
498 test:
499 suffix: gmsh_15_hyb3d_s2t
500 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
501 test:
502 suffix: gmsh_16_spheresurface
503 nsize : 4
504 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
505 test:
506 suffix: gmsh_16_spheresurface_s2t
507 nsize : 4
508 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
509 test:
510 suffix: gmsh_16_spheresurface_extruded
511 nsize : 4
512 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
513 test:
514 suffix: gmsh_16_spheresurface_extruded_s2t
515 nsize : 4
516 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
517 test:
518 suffix: gmsh_17_hyb3d_interp_ascii
519 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -dm_plex_check_all
520 test:
521 suffix: exodus_17_hyb3d_interp_ascii
522 requires: exodusii
523 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -dm_plex_check_all
524
525 # Legacy Gmsh v22/v40 ascii/binary reader tests
526 testset:
527 output_file: output/ex1_gmsh_3d_legacy.out
528 args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
529 test:
530 suffix: gmsh_3d_ascii_v22
531 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2
532 test:
533 suffix: gmsh_3d_ascii_v40
534 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4
535 test:
536 suffix: gmsh_3d_binary_v22
537 # Could not remake binary to remove extra face labeling
538 output_file: output/ex1_gmsh_3d_legacy_v22_bin.out
539 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2
540 test:
541 suffix: gmsh_3d_binary_v40
542 requires: long64
543 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4
544
545 # Gmsh v41 ascii/binary reader tests
546 testset: # 32-bit mesh, sequential
547 args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
548 output_file: output/ex1_gmsh_3d_32.out
549 test:
550 suffix: gmsh_3d_ascii_v41_32
551 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
552 test:
553 suffix: gmsh_3d_binary_v41_32
554 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
555 test:
556 suffix: gmsh_3d_binary_v41_32_mpiio
557 requires: defined(PETSC_HAVE_MPIIO)
558 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
559 test:
560 suffix: gmsh_quad_8node
561 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-qua-8node.msh \
562 -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
563 test:
564 suffix: gmsh_hex_20node
565 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-hex-20node.msh \
566 -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
567 testset: # 32-bit mesh, parallel
568 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
569 nsize: 2
570 output_file: output/ex1_gmsh_3d_32_np2.out
571 test:
572 suffix: gmsh_3d_ascii_v41_32_np2
573 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
574 test:
575 suffix: gmsh_3d_binary_v41_32_np2
576 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
577 test:
578 suffix: gmsh_3d_binary_v41_32_np2_mpiio
579 requires: defined(PETSC_HAVE_MPIIO)
580 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
581 testset: # 64-bit mesh, sequential
582 args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
583 output_file: output/ex1_gmsh_3d_64.out
584 test:
585 suffix: gmsh_3d_ascii_v41_64
586 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
587 test:
588 suffix: gmsh_3d_binary_v41_64
589 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
590 test:
591 suffix: gmsh_3d_binary_v41_64_mpiio
592 requires: defined(PETSC_HAVE_MPIIO)
593 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
594 testset: # 64-bit mesh, parallel
595 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
596 nsize: 2
597 output_file: output/ex1_gmsh_3d_64_np2.out
598 test:
599 suffix: gmsh_3d_ascii_v41_64_np2
600 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
601 test:
602 suffix: gmsh_3d_binary_v41_64_np2
603 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
604 test:
605 suffix: gmsh_3d_binary_v41_64_np2_mpiio
606 requires: defined(PETSC_HAVE_MPIIO)
607 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
608
609 # Fluent mesh reader tests
610 test:
611 suffix: fluent_0
612 requires: !complex
613 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dm_view
614 test:
615 suffix: fluent_1
616 nsize: 3
617 requires: !complex
618 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dist_dm_distribute -petscpartitioner_type simple -dm_view
619 test:
620 suffix: fluent_2
621 requires: !complex
622 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -dm_view
623 test:
624 suffix: fluent_3
625 requires: !complex
626 TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382
627 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -dm_view -final_diagnostics 0
628 test:
629 suffix: fluent_4
630 requires: !complex defined(PETSC_USE_INFO)
631 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/testcase3D.cas -info :viewer -dm_view
632 test:
633 suffix: fluent_5
634 requires: !complex defined(PETSC_USE_INFO)
635 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/wedge_cylinder.cas -info :viewer -dm_view
636
637 # STL mesh reader tests
638 test:
639 suffix: stl_0
640 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube.stl -dm_view
641
642 # Shapefile reader tests
643 test:
644 suffix: shp_0
645 requires: datafilespath
646 args: -dm_plex_filename ${DATAFILESPATH}/meshes/NYState.shp -dm_view
647
648 # Test shape quality
649 test:
650 suffix: test_shape
651 requires: ctetgen
652 args: -dm_plex_dim 3 -dim 3 -dm_refine_hierarchy 3 -dm_plex_check_all -dm_plex_check_cell_shape
653
654 # Test simplex to tensor conversion
655 test:
656 suffix: s2t2
657 requires: triangle
658 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
659
660 test:
661 suffix: s2t3
662 requires: ctetgen
663 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
664
665 # Test cylinder
666 testset:
667 args: -dm_plex_shape cylinder -dm_plex_check_all -dm_view
668 test:
669 suffix: cylinder
670 args: -ref_dm_refine 1
671 test:
672 suffix: cylinder_per
673 args: -dm_plex_cylinder_bd periodic -ref_dm_refine 1 -ref_dm_refine_remap 0
674
675 test:
676 suffix: box_2d
677 args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
678
679 test:
680 suffix: box_2d_per
681 args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
682
683 test:
684 suffix: box_2d_per_unint
685 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
686
687 test:
688 suffix: box_3d
689 args: -dm_plex_dim 3 -dim 3 -dm_plex_simplex 0 -ref_dm_refine 3 -dm_plex_check_all -dm_view
690
691 test:
692 requires: triangle
693 suffix: box_wedge
694 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
695
696 testset:
697 requires: triangle
698 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
699 test:
700 suffix: box_wedge_s2t
701 test:
702 nsize: 3
703 args: -dist_dm_distribute -petscpartitioner_type simple
704 suffix: box_wedge_s2t_parallel
705
706 # Test GLVis output
707 testset:
708 args: -dm_coord_space 0 -dm_plex_interpolate 0
709 test:
710 suffix: glvis_2d_tet
711 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
712 test:
713 suffix: glvis_2d_tet_per
714 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
715 test:
716 suffix: glvis_3d_tet
717 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
718 testset:
719 args: -dm_coord_space 0
720 test:
721 suffix: glvis_2d_tet_per_mfem
722 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:
723 test:
724 suffix: glvis_2d_quad
725 args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_view glvis:
726 test:
727 suffix: glvis_2d_quad_per
728 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
729 test:
730 suffix: glvis_2d_quad_per_shift
731 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
732 test:
733 suffix: glvis_2d_quad_per_mfem
734 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
735 test:
736 suffix: glvis_3d_tet_per
737 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
738 test:
739 suffix: glvis_3d_tet_per_mfem
740 TODO: broken
741 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:
742 test:
743 suffix: glvis_3d_hex
744 args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_view glvis:
745 test:
746 suffix: glvis_3d_hex_per
747 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
748 test:
749 suffix: glvis_3d_hex_per_mfem
750 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
751 test:
752 suffix: glvis_2d_hyb
753 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
754 test:
755 suffix: glvis_3d_hyb
756 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
757 test:
758 suffix: glvis_3d_hyb_s2t
759 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
760
761 # Test P4EST
762 testset:
763 requires: p4est
764 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
765 test:
766 suffix: p4est_periodic
767 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
768 test:
769 suffix: p4est_periodic_3d
770 args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic,none -dm_plex_box_faces 3,3,2 -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 1 -conv_seq_1_dm_p4est_refine_pattern hash
771 test:
772 suffix: p4est_gmsh_periodic
773 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
774 test:
775 suffix: p4est_gmsh_surface
776 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
777 test:
778 suffix: p4est_gmsh_surface_parallel
779 nsize: 2
780 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
781 test:
782 suffix: p4est_hyb_2d
783 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
784 test:
785 suffix: p4est_hyb_3d
786 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
787 test:
788 requires: ctetgen
789 suffix: p4est_s2t_bugfaces_3d
790 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
791 test:
792 suffix: p4est_bug_overlapsf
793 nsize: 3
794 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
795 test:
796 suffix: p4est_redistribute
797 nsize: 3
798 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
799 test:
800 suffix: p4est_gmsh_s2t_3d
801 args: -conv_seq_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
802 test:
803 suffix: p4est_gmsh_s2t_3d_hash
804 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
805 test:
806 requires: long_runtime
807 suffix: p4est_gmsh_periodic_3d
808 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
809
810 testset:
811 requires: p4est
812 nsize: 6
813 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
814 test:
815 TODO: interface cones do not conform
816 suffix: p4est_par_periodic
817 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
818 test:
819 TODO: interface cones do not conform
820 suffix: p4est_par_periodic_3d
821 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
822 test:
823 TODO: interface cones do not conform
824 suffix: p4est_par_gmsh_periodic
825 args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
826 test:
827 suffix: p4est_par_gmsh_surface
828 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
829 output_file: output/empty.out
830 test:
831 suffix: p4est_par_gmsh_s2t_3d
832 args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
833 output_file: output/empty.out
834 test:
835 TODO: interface cones do not conform
836 suffix: p4est_par_gmsh_s2t_3d_hash
837 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
838 test:
839 requires: long_runtime
840 suffix: p4est_par_gmsh_periodic_3d
841 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
842
843 testset:
844 requires: p4est
845 nsize: 6
846 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
847 test:
848 suffix: p4est_par_ovl_periodic
849 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
850 output_file: output/empty.out
851 # Problem for -dm_plex_box_faces 3,5,4 -conv_par_1_dm_forest_maximum_refinement 2
852 test:
853 suffix: p4est_par_ovl_periodic_3d
854 args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic,none \
855 -dm_plex_box_faces 3,5,2 \
856 -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 \
857 -conv_par_1_dm_p4est_refine_pattern hash
858 output_file: output/empty.out
859 test:
860 suffix: p4est_par_ovl_gmsh_periodic
861 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
862 output_file: output/empty.out
863 test:
864 suffix: p4est_par_ovl_gmsh_surface
865 args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
866 output_file: output/empty.out
867 test:
868 suffix: p4est_par_ovl_gmsh_s2t_3d
869 args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
870 output_file: output/empty.out
871 test:
872 suffix: p4est_par_ovl_gmsh_s2t_3d_hash
873 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
874 output_file: output/empty.out
875 test:
876 requires: long_runtime
877 suffix: p4est_par_ovl_gmsh_periodic_3d
878 args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh
879 output_file: output/empty.out
880 test:
881 suffix: p4est_par_ovl_hyb_2d
882 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
883 output_file: output/empty.out
884 # -conv_par_1_dm_forest_maximum_refinement 1 was too expensive
885 test:
886 suffix: p4est_par_ovl_hyb_3d
887 args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 0 -conv_par_1_dm_p4est_refine_pattern hash -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh
888 output_file: output/empty.out
889
890 test:
891 TODO: broken
892 requires: p4est
893 nsize: 2
894 suffix: p4est_bug_labels_noovl
895 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
896
897 test:
898 requires: p4est
899 nsize: 2
900 suffix: p4est_bug_distribute_overlap
901 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
902 args: -dm_post_overlap_view
903
904 test:
905 suffix: ref_alfeld2d_0
906 requires: triangle
907 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
908 test:
909 suffix: ref_alfeld3d_0
910 requires: ctetgen
911 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
912
913 # Boundary layer refiners
914 test:
915 suffix: ref_bl_1
916 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
917 test:
918 suffix: ref_bl_2_tri
919 requires: triangle
920 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
921 test:
922 suffix: ref_bl_3_quad
923 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
924 test:
925 suffix: ref_bl_spheresurface_extruded
926 nsize : 4
927 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
928 test:
929 suffix: ref_bl_3d_hyb
930 nsize : 4
931 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
932
933 testset:
934 args: -dm_plex_shape sphere -dm_plex_check_all -dm_view
935 test:
936 suffix: sphere_0
937 args:
938 test:
939 suffix: sphere_1
940 args: -ref_dm_refine 2
941 test:
942 suffix: sphere_2
943 args: -dm_plex_simplex 0
944 test:
945 suffix: sphere_3
946 args: -dm_plex_simplex 0 -ref_dm_refine 2
947 test:
948 suffix: sphere_4
949 args: -dm_plex_dim 1 -ref_dm_refine 2
950
951 testset:
952 args: -dm_plex_shape ball -dm_plex_check_all -dm_view
953
954 test:
955 suffix: ball_0
956 requires: ctetgen
957 args: -dm_plex_dim 3
958
959 test:
960 suffix: ball_1
961 requires: ctetgen
962 args: -dm_plex_dim 3 -bd_dm_refine 2
963
964 test:
965 suffix: ball_2
966 requires: triangle
967 args: -dm_plex_dim 2 -bd_dm_refine 2
968
969 test:
970 suffix: schwarz_p_extrude
971 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
972
973 test:
974 suffix: schwarz_p_refine
975 args: -dm_plex_shape schwarz_p -dm_plex_tps_extent 1,1,1 -dm_plex_tps_refine 1 -dm_plex_tps_layers 1 -dm_plex_tps_thickness .2 -dm_view
976
977 test:
978 suffix: pyr_mixed_0
979 args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/pyr_tet.msh -dm_plex_check_all -dm_view
980
981 test:
982 suffix: hypercubic_0
983 args: -dm_plex_dim 2 -dm_plex_shape hypercubic -dm_plex_box_faces 3,3 -dm_plex_check_all \
984 -dm_view -dm_plex_print_adj 3
985
986 test:
987 suffix: hypercubic_0_par
988 nsize: 4
989 args: -dm_plex_dim 2 -dm_plex_shape hypercubic -dm_plex_box_faces 4,4 -dm_view -dm_plex_print_adj 3 -final_diagnostics 0 \
990 -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf
991
992 test:
993 suffix: hypercubic_1
994 args: -dm_plex_dim 3 -dm_plex_shape hypercubic -dm_plex_box_faces 3,3,3 -dm_plex_check_all \
995 -dm_view -dm_plex_print_adj 3
996
997 test:
998 suffix: hypercubic_1_par
999 requires: !quad
1000 nsize: 8
1001 args: -dm_plex_dim 3 -dm_plex_shape hypercubic -dm_plex_box_faces 4,4,4 -dm_view -dm_plex_print_adj 3 -final_diagnostics 0 \
1002 -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf
1003
1004 test:
1005 suffix: hypercubic_1_par_ov_3
1006 requires: !quad
1007 nsize: 8
1008 args: -dm_plex_dim 3 -dm_plex_shape hypercubic -dm_plex_box_faces 6,6,6 -dm_distribute_overlap 3 -dm_view -dm_plex_print_adj 3 -final_diagnostics 0 \
1009 -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf
1010
1011 test:
1012 suffix: hypercubic_2
1013 args: -dm_plex_dim 4 -dm_plex_shape hypercubic -dm_plex_box_faces 3,3,3,3 -dm_view -dm_plex_print_adj 3 \
1014 -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf -final_diagnostics 0
1015
1016 test:
1017 suffix: hypercubic_2_par
1018 requires: !quad
1019 nsize: 16
1020 args: -dm_plex_dim 4 -dm_plex_shape hypercubic -dm_plex_box_faces 4,4,4,4 -dm_view -dm_plex_print_adj 3 -final_diagnostics 0 \
1021 -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf
1022
1023 test:
1024 suffix: hypercubic_3
1025 args: -dm_plex_dim 5 -dm_plex_shape hypercubic -dm_plex_box_faces 3,3,3,3,3 -dm_view -dm_plex_print_adj 3 \
1026 -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf -final_diagnostics 0
1027
1028 test:
1029 suffix: hypercubic_4
1030 args: -dm_plex_dim 6 -dm_plex_shape hypercubic -dm_plex_box_faces 3,3,3,3,3,3 -dm_view -dm_plex_print_adj 3 \
1031 -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf -final_diagnostics 0
1032
1033 test:
1034 suffix: crisscross
1035 args: -dm_plex_box_crisscross -dm_plex_box_faces 4,8 -dm_plex_check_all -final_diagnostics -dm_view ::ascii_info_detail -dm_plex_box_lower -1,-2 -dm_plex_box_upper 1,2 -dm_plex_box_bd {{none,none periodic,none none,periodic periodic,periodic}separate output}
1036
1037 TEST*/
1038