Actual source code: ex1.c
1: static char help[] = "Tests various DMPlex routines to construct, refine and distribute a mesh.\n\n";
3: #include <petscdmplex.h>
4: #include <petscdmplextransform.h>
5: #include <petscsf.h>
7: enum {
8: STAGE_LOAD,
9: STAGE_DISTRIBUTE,
10: STAGE_REFINE,
11: STAGE_OVERLAP
12: };
14: typedef struct {
15: PetscLogEvent createMeshEvent;
16: PetscLogStage stages[4];
17: /* Domain and mesh definition */
18: PetscInt dim; /* The topological mesh dimension */
19: PetscInt overlap; /* The cell overlap to use during partitioning */
20: PetscBool testp4est[2];
21: PetscBool redistribute;
22: PetscBool final_ref; /* Run refinement at the end */
23: PetscBool final_diagnostics; /* Run diagnostics on the final mesh */
24: } AppCtx;
26: PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
27: {
28: 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;
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();
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: }
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;
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));
73: PetscCall(DMViewFromOptions(*dm, NULL, "-init_dm_view"));
74: PetscCall(DMGetDimension(*dm, &dim));
76: if (testp4est_seq) {
77: PetscCheck(PetscDefined(HAVE_P4EST), PETSC_COMM_WORLD, PETSC_ERR_SUP, "Reconfigure PETSc with --download-p4est");
78: DM dmConv = NULL;
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));
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));
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: }
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());
138: if (testp4est_par) {
139: PetscCheck(PetscDefined(HAVE_P4EST), PETSC_COMM_WORLD, PETSC_ERR_SUP, "Reconfigure PETSc with --download-p4est");
140: DM dmConv = NULL;
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));
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: }
178: /* test redistribution of an already distributed mesh */
179: if (user->redistribute) {
180: DM distributedMesh;
181: PetscSF sf;
182: PetscInt nranks;
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: }
198: if (user->overlap) {
199: DM overlapMesh = NULL;
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;
218: PetscCall(DMPlexSetRefinementUniform(*dm, PETSC_TRUE));
219: PetscCall(DMRefine(*dm, comm, &refinedMesh));
220: if (refinedMesh) {
221: PetscCall(DMDestroy(dm));
222: *dm = refinedMesh;
223: }
224: }
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: }
233: int main(int argc, char **argv)
234: {
235: DM dm;
236: AppCtx user;
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: }
247: /*TEST
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
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
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
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
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
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
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
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
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
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
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
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
411: # Gmsh mesh reader tests
412: testset:
413: args: -dm_coord_space 0 -dm_view
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
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
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
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
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
642: # Shapefile reader tests
643: test:
644: suffix: shp_0
645: requires: datafilespath
646: args: -dm_plex_filename ${DATAFILESPATH}/meshes/NYState.shp -dm_view
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
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
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
665: # Test quad to simplex conversion
666: test:
667: suffix: q2s2_0
668: args: -dm_plex_box_faces 5,3 -dm_plex_simplex 0 -dm_view -dm_plex_check_all -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tosimplex -final_diagnostics
670: test:
671: suffix: q2s2_1
672: args: -dm_plex_box_faces 5,3 -dm_plex_simplex 0 -dm_view -dm_plex_check_all -ref_dm_refine 1 -ref_dm_plex_transform_type refine_tosimplex -ref_dm_plex_transform_tosimplex_reflect 1 -final_diagnostics
674: # Test cylinder
675: testset:
676: args: -dm_plex_shape cylinder -dm_plex_check_all -dm_view
677: test:
678: suffix: cylinder
679: args: -ref_dm_refine 1
680: test:
681: suffix: cylinder_per
682: args: -dm_plex_cylinder_bd periodic -ref_dm_refine 1 -ref_dm_refine_remap 0
684: test:
685: suffix: box_2d
686: args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
688: test:
689: suffix: box_2d_per
690: args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
692: test:
693: suffix: box_2d_per_unint
694: 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
696: test:
697: suffix: box_3d
698: args: -dm_plex_dim 3 -dim 3 -dm_plex_simplex 0 -ref_dm_refine 3 -dm_plex_check_all -dm_view
700: test:
701: requires: triangle
702: suffix: box_wedge
703: 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
705: testset:
706: requires: triangle
707: 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
708: test:
709: suffix: box_wedge_s2t
710: test:
711: nsize: 3
712: args: -dist_dm_distribute -petscpartitioner_type simple
713: suffix: box_wedge_s2t_parallel
715: # Test GLVis output
716: testset:
717: args: -dm_coord_space 0 -dm_plex_interpolate 0
718: test:
719: suffix: glvis_2d_tet
720: args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
721: test:
722: suffix: glvis_2d_tet_per
723: args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
724: test:
725: suffix: glvis_3d_tet
726: args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
727: testset:
728: args: -dm_coord_space 0
729: test:
730: suffix: glvis_2d_tet_per_mfem
731: 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:
732: test:
733: suffix: glvis_2d_quad
734: args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_view glvis:
735: test:
736: suffix: glvis_2d_quad_per
737: 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
738: test:
739: suffix: glvis_2d_quad_per_shift
740: 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
741: test:
742: suffix: glvis_2d_quad_per_mfem
743: 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
744: test:
745: suffix: glvis_3d_tet_per
746: 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
747: test:
748: suffix: glvis_3d_tet_per_mfem
749: TODO: broken
750: 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:
751: test:
752: suffix: glvis_3d_hex
753: args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_view glvis:
754: test:
755: suffix: glvis_3d_hex_per
756: 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
757: test:
758: suffix: glvis_3d_hex_per_mfem
759: 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
760: test:
761: suffix: glvis_2d_hyb
762: args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
763: test:
764: suffix: glvis_3d_hyb
765: args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
766: test:
767: suffix: glvis_3d_hyb_s2t
768: 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
770: # Test P4EST
771: testset:
772: requires: p4est
773: 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
774: test:
775: suffix: p4est_periodic
776: 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
777: test:
778: suffix: p4est_periodic_3d
779: 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
780: test:
781: suffix: p4est_gmsh_periodic
782: 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
783: test:
784: suffix: p4est_gmsh_surface
785: 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
786: test:
787: suffix: p4est_gmsh_surface_parallel
788: nsize: 2
789: 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
790: test:
791: suffix: p4est_hyb_2d
792: 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
793: test:
794: suffix: p4est_hyb_3d
795: 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
796: test:
797: requires: ctetgen
798: suffix: p4est_s2t_bugfaces_3d
799: 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
800: test:
801: suffix: p4est_bug_overlapsf
802: nsize: 3
803: 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
804: test:
805: suffix: p4est_redistribute
806: nsize: 3
807: 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
808: test:
809: suffix: p4est_gmsh_s2t_3d
810: args: -conv_seq_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
811: test:
812: suffix: p4est_gmsh_s2t_3d_hash
813: 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
814: test:
815: requires: long_runtime
816: suffix: p4est_gmsh_periodic_3d
817: 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
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 0 -dist_dm_distribute
823: test:
824: TODO: interface cones do not conform
825: suffix: p4est_par_periodic
826: 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
827: test:
828: TODO: interface cones do not conform
829: suffix: p4est_par_periodic_3d
830: 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
831: test:
832: TODO: interface cones do not conform
833: suffix: p4est_par_gmsh_periodic
834: 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
835: test:
836: suffix: p4est_par_gmsh_surface
837: 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
838: output_file: output/empty.out
839: test:
840: suffix: p4est_par_gmsh_s2t_3d
841: args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
842: output_file: output/empty.out
843: test:
844: TODO: interface cones do not conform
845: suffix: p4est_par_gmsh_s2t_3d_hash
846: 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
847: test:
848: requires: long_runtime
849: suffix: p4est_par_gmsh_periodic_3d
850: 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
852: testset:
853: requires: p4est
854: nsize: 6
855: 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
856: test:
857: suffix: p4est_par_ovl_periodic
858: 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
859: output_file: output/empty.out
860: # Problem for -dm_plex_box_faces 3,5,4 -conv_par_1_dm_forest_maximum_refinement 2
861: test:
862: suffix: p4est_par_ovl_periodic_3d
863: args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic,none \
864: -dm_plex_box_faces 3,5,2 \
865: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 \
866: -conv_par_1_dm_p4est_refine_pattern hash
867: output_file: output/empty.out
868: test:
869: suffix: p4est_par_ovl_gmsh_periodic
870: 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
871: output_file: output/empty.out
872: test:
873: suffix: p4est_par_ovl_gmsh_surface
874: 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
875: output_file: output/empty.out
876: test:
877: suffix: p4est_par_ovl_gmsh_s2t_3d
878: args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
879: output_file: output/empty.out
880: test:
881: suffix: p4est_par_ovl_gmsh_s2t_3d_hash
882: 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
883: output_file: output/empty.out
884: test:
885: requires: long_runtime
886: suffix: p4est_par_ovl_gmsh_periodic_3d
887: 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
888: output_file: output/empty.out
889: test:
890: suffix: p4est_par_ovl_hyb_2d
891: 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
892: output_file: output/empty.out
893: # -conv_par_1_dm_forest_maximum_refinement 1 was too expensive
894: test:
895: suffix: p4est_par_ovl_hyb_3d
896: 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
897: output_file: output/empty.out
899: test:
900: TODO: broken
901: requires: p4est
902: nsize: 2
903: suffix: p4est_bug_labels_noovl
904: 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
906: test:
907: requires: p4est
908: nsize: 2
909: suffix: p4est_bug_distribute_overlap
910: 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
911: args: -dm_post_overlap_view
913: test:
914: suffix: ref_alfeld2d_0
915: requires: triangle
916: 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
917: test:
918: suffix: ref_alfeld2d_1
919: args: -dm_plex_box_faces 5,3 -dm_plex_simplex 0 -dm_view -dm_plex_check_all -ref_dm_refine 1 -ref_dm_plex_transform_type refine_alfeld -final_diagnostics
920: test:
921: suffix: ref_alfeld3d_0
922: requires: ctetgen
923: 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
925: # Boundary layer refiners
926: test:
927: suffix: ref_bl_1
928: 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
929: test:
930: suffix: ref_bl_2_tri
931: requires: triangle
932: 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
933: test:
934: suffix: ref_bl_3_quad
935: 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
936: test:
937: suffix: ref_bl_spheresurface_extruded
938: nsize : 4
939: 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
940: test:
941: suffix: ref_bl_3d_hyb
942: nsize : 4
943: 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
945: testset:
946: args: -dm_plex_shape sphere -dm_plex_check_all -dm_view
947: test:
948: suffix: sphere_0
949: args:
950: test:
951: suffix: sphere_1
952: args: -ref_dm_refine 2
953: test:
954: suffix: sphere_2
955: args: -dm_plex_simplex 0
956: test:
957: suffix: sphere_3
958: args: -dm_plex_simplex 0 -ref_dm_refine 2
959: test:
960: suffix: sphere_4
961: args: -dm_plex_dim 1 -ref_dm_refine 2
963: testset:
964: args: -dm_plex_shape ball -dm_plex_check_all -dm_view
966: test:
967: suffix: ball_0
968: requires: ctetgen
969: args: -dm_plex_dim 3
971: test:
972: suffix: ball_1
973: requires: ctetgen
974: args: -dm_plex_dim 3 -bd_dm_refine 2
976: test:
977: suffix: ball_2
978: requires: triangle
979: args: -dm_plex_dim 2 -bd_dm_refine 2
981: test:
982: suffix: schwarz_p_extrude
983: 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
985: test:
986: suffix: schwarz_p_refine
987: 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
989: test:
990: suffix: pyr_mixed_0
991: args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/pyr_tet.msh -dm_plex_check_all -dm_view
993: test:
994: suffix: hypercubic_0
995: args: -dm_plex_dim 2 -dm_plex_shape hypercubic -dm_plex_box_faces 3,3 -dm_plex_check_all \
996: -dm_view -dm_plex_print_adj 3
998: test:
999: suffix: hypercubic_0_par
1000: nsize: 4
1001: 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 \
1002: -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf
1004: test:
1005: suffix: hypercubic_1
1006: args: -dm_plex_dim 3 -dm_plex_shape hypercubic -dm_plex_box_faces 3,3,3 -dm_plex_check_all \
1007: -dm_view -dm_plex_print_adj 3
1009: test:
1010: suffix: hypercubic_1_par
1011: requires: !quad
1012: nsize: 8
1013: 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 \
1014: -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf
1016: test:
1017: suffix: hypercubic_1_par_ov_3
1018: requires: !quad
1019: nsize: 8
1020: 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 \
1021: -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf
1023: test:
1024: suffix: hypercubic_2
1025: args: -dm_plex_dim 4 -dm_plex_shape hypercubic -dm_plex_box_faces 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
1028: test:
1029: suffix: hypercubic_2_par
1030: requires: !quad
1031: nsize: 16
1032: 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 \
1033: -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf
1035: test:
1036: suffix: hypercubic_3
1037: 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 \
1038: -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf -final_diagnostics 0
1040: test:
1041: suffix: hypercubic_4
1042: 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 \
1043: -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -dm_plex_check_pointsf -final_diagnostics 0
1045: test:
1046: suffix: crisscross
1047: 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}
1049: TEST*/