xref: /petsc/src/dm/impls/plex/tests/ex1.c (revision dfd57a172ac9fa6c7b5fe6de6ab5df85cefc2996)
1c4762a1bSJed Brown static char help[] = "Tests various DMPlex routines to construct, refine and distribute a mesh.\n\n";
2c4762a1bSJed Brown 
3c4762a1bSJed Brown #include <petscdmplex.h>
4012bc364SMatthew G. Knepley #include <petscdmplextransform.h>
50a19bb7dSprj- #include <petscsf.h>
6c4762a1bSJed Brown 
7c4762a1bSJed Brown enum {STAGE_LOAD, STAGE_DISTRIBUTE, STAGE_REFINE, STAGE_OVERLAP};
8c4762a1bSJed Brown 
9c4762a1bSJed Brown typedef struct {
10c4762a1bSJed Brown   PetscLogEvent createMeshEvent;
11c4762a1bSJed Brown   PetscLogStage stages[4];
12c4762a1bSJed Brown   /* Domain and mesh definition */
13c4762a1bSJed Brown   PetscInt      dim;                             /* The topological mesh dimension */
14c4762a1bSJed Brown   PetscInt      overlap;                         /* The cell overlap to use during partitioning */
15c4762a1bSJed Brown   PetscBool     testp4est[2];
16c4762a1bSJed Brown   PetscBool     redistribute;
17c4762a1bSJed Brown   PetscBool     final_ref;                       /* Run refinement at the end */
18c4762a1bSJed Brown   PetscBool     final_diagnostics;               /* Run diagnostics on the final mesh */
19c4762a1bSJed Brown } AppCtx;
20c4762a1bSJed Brown 
21c4762a1bSJed Brown PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
22c4762a1bSJed Brown {
23c4762a1bSJed Brown   PetscErrorCode ierr;
24c4762a1bSJed Brown 
25c4762a1bSJed Brown   PetscFunctionBegin;
26c4762a1bSJed Brown   options->dim               = 2;
27c4762a1bSJed Brown   options->overlap           = 0;
28c4762a1bSJed Brown   options->testp4est[0]      = PETSC_FALSE;
29c4762a1bSJed Brown   options->testp4est[1]      = PETSC_FALSE;
30c4762a1bSJed Brown   options->redistribute      = PETSC_FALSE;
31c4762a1bSJed Brown   options->final_ref         = PETSC_FALSE;
32c4762a1bSJed Brown   options->final_diagnostics = PETSC_TRUE;
33c4762a1bSJed Brown 
34c4762a1bSJed Brown   ierr = PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");CHKERRQ(ierr);
35c4762a1bSJed Brown   ierr = PetscOptionsRangeInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, NULL,1,3);CHKERRQ(ierr);
36c4762a1bSJed Brown   ierr = PetscOptionsBoundedInt("-overlap", "The cell overlap for partitioning", "ex1.c", options->overlap, &options->overlap, NULL,0);CHKERRQ(ierr);
37c4762a1bSJed Brown   ierr = PetscOptionsBool("-test_p4est_seq", "Test p4est with sequential base DM", "ex1.c", options->testp4est[0], &options->testp4est[0], NULL);CHKERRQ(ierr);
38c4762a1bSJed Brown   ierr = PetscOptionsBool("-test_p4est_par", "Test p4est with parallel base DM", "ex1.c", options->testp4est[1], &options->testp4est[1], NULL);CHKERRQ(ierr);
39c4762a1bSJed Brown   ierr = PetscOptionsBool("-test_redistribute", "Test redistribution", "ex1.c", options->redistribute, &options->redistribute, NULL);CHKERRQ(ierr);
40c4762a1bSJed Brown   ierr = PetscOptionsBool("-final_ref", "Run uniform refinement on the final mesh", "ex1.c", options->final_ref, &options->final_ref, NULL);CHKERRQ(ierr);
41c4762a1bSJed Brown   ierr = PetscOptionsBool("-final_diagnostics", "Run diagnostics on the final mesh", "ex1.c", options->final_diagnostics, &options->final_diagnostics, NULL);CHKERRQ(ierr);
421e1ea65dSPierre Jolivet   ierr = PetscOptionsEnd();CHKERRQ(ierr);
43c4762a1bSJed Brown 
44c4762a1bSJed Brown   ierr = PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent);CHKERRQ(ierr);
45c4762a1bSJed Brown   ierr = PetscLogStageRegister("MeshLoad",       &options->stages[STAGE_LOAD]);CHKERRQ(ierr);
46c4762a1bSJed Brown   ierr = PetscLogStageRegister("MeshDistribute", &options->stages[STAGE_DISTRIBUTE]);CHKERRQ(ierr);
47c4762a1bSJed Brown   ierr = PetscLogStageRegister("MeshRefine",     &options->stages[STAGE_REFINE]);CHKERRQ(ierr);
48c4762a1bSJed Brown   ierr = PetscLogStageRegister("MeshOverlap",    &options->stages[STAGE_OVERLAP]);CHKERRQ(ierr);
49c4762a1bSJed Brown   PetscFunctionReturn(0);
50c4762a1bSJed Brown }
51c4762a1bSJed Brown 
52c4762a1bSJed Brown PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm)
53c4762a1bSJed Brown {
54c4762a1bSJed Brown   PetscInt       dim           = user->dim;
55c4762a1bSJed Brown   PetscBool      testp4est_seq = user->testp4est[0];
56c4762a1bSJed Brown   PetscBool      testp4est_par = user->testp4est[1];
57c4762a1bSJed Brown   PetscMPIInt    rank, size;
58db2bf62eSStefano Zampini   PetscBool      periodic;
59c4762a1bSJed Brown   PetscErrorCode ierr;
60c4762a1bSJed Brown 
61c4762a1bSJed Brown   PetscFunctionBegin;
62c4762a1bSJed Brown   ierr = PetscLogEventBegin(user->createMeshEvent,0,0,0,0);CHKERRQ(ierr);
63ffc4695bSBarry Smith   ierr = MPI_Comm_rank(comm, &rank);CHKERRMPI(ierr);
64ffc4695bSBarry Smith   ierr = MPI_Comm_size(comm, &size);CHKERRMPI(ierr);
65c4762a1bSJed Brown   ierr = PetscLogStagePush(user->stages[STAGE_LOAD]);CHKERRQ(ierr);
6630602db0SMatthew G. Knepley   ierr = DMCreate(comm, dm);CHKERRQ(ierr);
6730602db0SMatthew G. Knepley   ierr = DMSetType(*dm, DMPLEX);CHKERRQ(ierr);
6830602db0SMatthew G. Knepley   ierr = DMSetFromOptions(*dm);CHKERRQ(ierr);
69db2bf62eSStefano Zampini 
70db2bf62eSStefano Zampini   /* For topologically periodic meshes, we first localize coordinates,
71db2bf62eSStefano Zampini      and then remove any information related with the
72db2bf62eSStefano Zampini      automatic computation of localized vertices.
73db2bf62eSStefano Zampini      This way, refinement operations and conversions to p4est
74db2bf62eSStefano Zampini      will preserve the shape of the domain in physical space */
75db2bf62eSStefano Zampini   ierr = DMLocalizeCoordinates(*dm);CHKERRQ(ierr);
76db2bf62eSStefano Zampini   ierr = DMGetPeriodicity(*dm, &periodic, NULL, NULL, NULL);CHKERRQ(ierr);
7730602db0SMatthew G. Knepley   if (periodic) {ierr = DMSetPeriodicity(*dm, PETSC_TRUE, NULL, NULL, NULL);CHKERRQ(ierr);}
78db2bf62eSStefano Zampini 
79c4762a1bSJed Brown   ierr = DMViewFromOptions(*dm,NULL,"-init_dm_view");CHKERRQ(ierr);
80c4762a1bSJed Brown   ierr = DMGetDimension(*dm, &dim);CHKERRQ(ierr);
81c4762a1bSJed Brown 
82c4762a1bSJed Brown   if (testp4est_seq) {
83c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST)
84c4762a1bSJed Brown     DM dmConv = NULL;
85c4762a1bSJed Brown 
8654fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr);
8754fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr);
8854fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr);
8954fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr);
9054fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckPointSF(*dm);CHKERRQ(ierr);
9154fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckInterfaceCones(*dm);CHKERRQ(ierr);
92c4762a1bSJed Brown     ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr);
93012bc364SMatthew G. Knepley     ierr = DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX);CHKERRQ(ierr);
9454fcfd0cSMatthew G. Knepley     ierr = DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);CHKERRQ(ierr);
95012bc364SMatthew G. Knepley     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr);
96c4762a1bSJed Brown     if (dmConv) {
97c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
98c4762a1bSJed Brown       *dm  = dmConv;
99c4762a1bSJed Brown     }
10054fcfd0cSMatthew G. Knepley     ierr = DMViewFromOptions(*dm,NULL,"-initref_dm_view");CHKERRQ(ierr);
10154fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr);
10254fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr);
10354fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr);
10454fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr);
10554fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckPointSF(*dm);CHKERRQ(ierr);
10654fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckInterfaceCones(*dm);CHKERRQ(ierr);
107c4762a1bSJed Brown 
108c4762a1bSJed Brown     ierr = DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);CHKERRQ(ierr);
109c4762a1bSJed Brown     if (dmConv) {
110c4762a1bSJed Brown       ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_1_");CHKERRQ(ierr);
111c4762a1bSJed Brown       ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr);
112c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
113c4762a1bSJed Brown       *dm  = dmConv;
114c4762a1bSJed Brown     }
115c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_1_");CHKERRQ(ierr);
116c4762a1bSJed Brown     ierr = DMSetUp(*dm);CHKERRQ(ierr);
117c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
118c4762a1bSJed Brown     ierr = DMConvert(*dm,DMPLEX,&dmConv);CHKERRQ(ierr);
119c4762a1bSJed Brown     if (dmConv) {
120c4762a1bSJed Brown       ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_2_");CHKERRQ(ierr);
121c4762a1bSJed Brown       ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr);
122c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
123c4762a1bSJed Brown       *dm  = dmConv;
124c4762a1bSJed Brown     }
125c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_2_");CHKERRQ(ierr);
126c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
127c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr);
128c4762a1bSJed Brown #else
129c4762a1bSJed Brown     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
130c4762a1bSJed Brown #endif
131c4762a1bSJed Brown   }
132c4762a1bSJed Brown 
133c4762a1bSJed Brown   ierr = PetscLogStagePop();CHKERRQ(ierr);
134c4762a1bSJed Brown   if (!testp4est_seq) {
135c4762a1bSJed Brown     ierr = PetscLogStagePush(user->stages[STAGE_DISTRIBUTE]);CHKERRQ(ierr);
136c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_dist_view");CHKERRQ(ierr);
13730602db0SMatthew G. Knepley     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "dist_");CHKERRQ(ierr);
13830602db0SMatthew G. Knepley     ierr = DMSetFromOptions(*dm);CHKERRQ(ierr);
13930602db0SMatthew G. Knepley     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr);
140c4762a1bSJed Brown     ierr = PetscLogStagePop();CHKERRQ(ierr);
141c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-distributed_dm_view");CHKERRQ(ierr);
142c4762a1bSJed Brown   }
143c4762a1bSJed Brown   ierr = PetscLogStagePush(user->stages[STAGE_REFINE]);CHKERRQ(ierr);
14430602db0SMatthew G. Knepley   ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "ref_");CHKERRQ(ierr);
145c4762a1bSJed Brown   ierr = DMSetFromOptions(*dm);CHKERRQ(ierr);
14630602db0SMatthew G. Knepley   ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr);
147c4762a1bSJed Brown   ierr = PetscLogStagePop();CHKERRQ(ierr);
148c4762a1bSJed Brown 
149c4762a1bSJed Brown   if (testp4est_par) {
150c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST)
151c4762a1bSJed Brown     DM dmConv = NULL;
152c4762a1bSJed Brown 
15396ca5757SLisandro Dalcin     ierr = DMViewFromOptions(*dm, NULL, "-dm_tobox_view");CHKERRQ(ierr);
154c4762a1bSJed Brown     ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr);
155012bc364SMatthew G. Knepley     ierr = DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX);CHKERRQ(ierr);
15654fcfd0cSMatthew G. Knepley     ierr = DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);CHKERRQ(ierr);
157012bc364SMatthew G. Knepley     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr);
158c4762a1bSJed Brown     if (dmConv) {
159c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
160c4762a1bSJed Brown       *dm  = dmConv;
161c4762a1bSJed Brown     }
16296ca5757SLisandro Dalcin     ierr = DMViewFromOptions(*dm, NULL, "-dm_tobox_view");CHKERRQ(ierr);
16354fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr);
16454fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr);
16554fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr);
16654fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr);
16754fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckPointSF(*dm);CHKERRQ(ierr);
16854fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckInterfaceCones(*dm);CHKERRQ(ierr);
169c4762a1bSJed Brown 
170c4762a1bSJed Brown     ierr = DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);CHKERRQ(ierr);
171c4762a1bSJed Brown     if (dmConv) {
172c4762a1bSJed Brown       ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_1_");CHKERRQ(ierr);
173c4762a1bSJed Brown       ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr);
174c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
175c4762a1bSJed Brown       *dm  = dmConv;
176c4762a1bSJed Brown     }
177c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_1_");CHKERRQ(ierr);
178c4762a1bSJed Brown     ierr = DMSetUp(*dm);CHKERRQ(ierr);
179c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
180c4762a1bSJed Brown     ierr = DMConvert(*dm, DMPLEX, &dmConv);CHKERRQ(ierr);
181c4762a1bSJed Brown     if (dmConv) {
182c4762a1bSJed Brown       ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_2_");CHKERRQ(ierr);
183c4762a1bSJed Brown       ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr);
184c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
185c4762a1bSJed Brown       *dm  = dmConv;
186c4762a1bSJed Brown     }
187c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_2_");CHKERRQ(ierr);
188c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
189c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr);
190c4762a1bSJed Brown #else
191c4762a1bSJed Brown     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
192c4762a1bSJed Brown #endif
193c4762a1bSJed Brown   }
194c4762a1bSJed Brown 
195c4762a1bSJed Brown   /* test redistribution of an already distributed mesh */
196c4762a1bSJed Brown   if (user->redistribute) {
197c4762a1bSJed Brown     DM       distributedMesh;
1980a19bb7dSprj-     PetscSF  sf;
1990a19bb7dSprj-     PetscInt nranks;
200c4762a1bSJed Brown 
201c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view");CHKERRQ(ierr);
202c4762a1bSJed Brown     ierr = DMPlexDistribute(*dm, 0, NULL, &distributedMesh);CHKERRQ(ierr);
203c4762a1bSJed Brown     if (distributedMesh) {
2040a19bb7dSprj-       ierr = DMGetPointSF(distributedMesh, &sf);CHKERRQ(ierr);
2050a19bb7dSprj-       ierr = PetscSFSetUp(sf);CHKERRQ(ierr);
2060a19bb7dSprj-       ierr = DMGetNeighbors(distributedMesh, &nranks, NULL);CHKERRQ(ierr);
207ffc4695bSBarry Smith       ierr = MPI_Allreduce(MPI_IN_PLACE, &nranks, 1, MPIU_INT, MPI_MIN, PetscObjectComm((PetscObject)*dm));CHKERRMPI(ierr);
2080a19bb7dSprj-       ierr = PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)*dm)), "Minimum number of neighbors: %D\n", nranks);CHKERRQ(ierr);
209c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
210c4762a1bSJed Brown       *dm  = distributedMesh;
211c4762a1bSJed Brown     }
212c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_post_redist_view");CHKERRQ(ierr);
213c4762a1bSJed Brown   }
214c4762a1bSJed Brown 
215c4762a1bSJed Brown   if (user->overlap) {
216c4762a1bSJed Brown     DM overlapMesh = NULL;
217c4762a1bSJed Brown 
218c4762a1bSJed Brown     /* Add the overlap to refined mesh */
219c4762a1bSJed Brown     ierr = PetscLogStagePush(user->stages[STAGE_OVERLAP]);CHKERRQ(ierr);
220c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view");CHKERRQ(ierr);
221c4762a1bSJed Brown     ierr = DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh);CHKERRQ(ierr);
222c4762a1bSJed Brown     if (overlapMesh) {
223c4762a1bSJed Brown       PetscInt overlap;
224c4762a1bSJed Brown       ierr = DMPlexGetOverlap(overlapMesh, &overlap);CHKERRQ(ierr);
225c4762a1bSJed Brown       ierr = PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %D\n", overlap);CHKERRQ(ierr);
226c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
227c4762a1bSJed Brown       *dm = overlapMesh;
228c4762a1bSJed Brown     }
229c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view");CHKERRQ(ierr);
230c4762a1bSJed Brown     ierr = PetscLogStagePop();CHKERRQ(ierr);
231c4762a1bSJed Brown   }
232c4762a1bSJed Brown   if (user->final_ref) {
233c4762a1bSJed Brown     DM refinedMesh = NULL;
234c4762a1bSJed Brown 
235c4762a1bSJed Brown     ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr);
236c4762a1bSJed Brown     ierr = DMRefine(*dm, comm, &refinedMesh);CHKERRQ(ierr);
237c4762a1bSJed Brown     if (refinedMesh) {
238c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
239c4762a1bSJed Brown       *dm  = refinedMesh;
240c4762a1bSJed Brown     }
241c4762a1bSJed Brown   }
242c4762a1bSJed Brown 
243c4762a1bSJed Brown   ierr = PetscObjectSetName((PetscObject) *dm, "Simplicial Mesh");CHKERRQ(ierr);
244c4762a1bSJed Brown   ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
245c4762a1bSJed Brown   if (user->final_diagnostics) {
246c4762a1bSJed Brown     DMPlexInterpolatedFlag interpolated;
247c4762a1bSJed Brown     PetscInt  dim, depth;
248c4762a1bSJed Brown 
249c4762a1bSJed Brown     ierr = DMGetDimension(*dm, &dim);CHKERRQ(ierr);
250c4762a1bSJed Brown     ierr = DMPlexGetDepth(*dm, &depth);CHKERRQ(ierr);
251c4762a1bSJed Brown     ierr = DMPlexIsInterpolatedCollective(*dm, &interpolated);CHKERRQ(ierr);
252c4762a1bSJed Brown 
253c4762a1bSJed Brown     ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr);
254c4762a1bSJed Brown     if (interpolated == DMPLEX_INTERPOLATED_FULL) {
255c4762a1bSJed Brown       ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr);
256c4762a1bSJed Brown     }
257c4762a1bSJed Brown     ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr);
258c4762a1bSJed Brown     ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr);
259c4762a1bSJed Brown   }
260c4762a1bSJed Brown   ierr = PetscLogEventEnd(user->createMeshEvent,0,0,0,0);CHKERRQ(ierr);
261c4762a1bSJed Brown   PetscFunctionReturn(0);
262c4762a1bSJed Brown }
263c4762a1bSJed Brown 
264c4762a1bSJed Brown int main(int argc, char **argv)
265c4762a1bSJed Brown {
26630602db0SMatthew G. Knepley   DM             dm;
26730602db0SMatthew G. Knepley   AppCtx         user;
268c4762a1bSJed Brown   PetscErrorCode ierr;
269c4762a1bSJed Brown 
270c4762a1bSJed Brown   ierr = PetscInitialize(&argc, &argv, NULL, help);if (ierr) return ierr;
271c4762a1bSJed Brown   ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr);
27230602db0SMatthew G. Knepley   ierr = CreateMesh(PETSC_COMM_WORLD, &user, &dm);CHKERRQ(ierr);
27330602db0SMatthew G. Knepley   ierr = DMDestroy(&dm);CHKERRQ(ierr);
274c4762a1bSJed Brown   ierr = PetscFinalize();
275c4762a1bSJed Brown   return ierr;
276c4762a1bSJed Brown }
277c4762a1bSJed Brown 
278c4762a1bSJed Brown /*TEST
279c4762a1bSJed Brown 
280c4762a1bSJed Brown   # CTetGen 0-1
281c4762a1bSJed Brown   test:
282c4762a1bSJed Brown     suffix: 0
283c4762a1bSJed Brown     requires: ctetgen
28430602db0SMatthew G. Knepley     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
285c4762a1bSJed Brown   test:
286c4762a1bSJed Brown     suffix: 1
287c4762a1bSJed Brown     requires: ctetgen
28830602db0SMatthew G. Knepley     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
289c4762a1bSJed Brown 
290c4762a1bSJed Brown   # 2D LaTex and ASCII output 2-9
291c4762a1bSJed Brown   test:
292c4762a1bSJed Brown     suffix: 2
293c4762a1bSJed Brown     requires: triangle
29430602db0SMatthew G. Knepley     args: -dm_plex_interpolate 0 -dm_view ascii::ascii_latex
295c4762a1bSJed Brown   test:
296c4762a1bSJed Brown     suffix: 3
297c4762a1bSJed Brown     requires: triangle
29830602db0SMatthew G. Knepley     args: -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
299c4762a1bSJed Brown   test:
300c4762a1bSJed Brown     suffix: 4
301c4762a1bSJed Brown     requires: triangle
302c4762a1bSJed Brown     nsize: 2
30330602db0SMatthew G. Knepley     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_info_detail
304c4762a1bSJed Brown   test:
305c4762a1bSJed Brown     suffix: 5
306c4762a1bSJed Brown     requires: triangle
307c4762a1bSJed Brown     nsize: 2
30830602db0SMatthew G. Knepley     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
309c4762a1bSJed Brown   test:
310c4762a1bSJed Brown     suffix: 6
31130602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_simplex 0 -dm_view ascii::ascii_info_detail
312c4762a1bSJed Brown   test:
313c4762a1bSJed Brown     suffix: 7
31430602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_simplex 0 -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
315c4762a1bSJed Brown   test:
316c4762a1bSJed Brown     suffix: 8
317c4762a1bSJed Brown     nsize: 2
31830602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
319c4762a1bSJed Brown 
320c4762a1bSJed Brown   # 1D ASCII output
32130602db0SMatthew G. Knepley   testset:
32230602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_dim 1 -dm_view ascii::ascii_info_detail -dm_plex_check_all
323c4762a1bSJed Brown     test:
324c4762a1bSJed Brown       suffix: 1d_0
32530602db0SMatthew G. Knepley       args:
326c4762a1bSJed Brown     test:
327c4762a1bSJed Brown       suffix: 1d_1
32830602db0SMatthew G. Knepley       args: -ref_dm_refine 2
329c4762a1bSJed Brown     test:
330c4762a1bSJed Brown       suffix: 1d_2
33130602db0SMatthew G. Knepley       args: -dm_plex_box_faces 5 -dm_plex_box_bd periodic
332c4762a1bSJed Brown 
333c4762a1bSJed Brown   # Parallel refinement tests with overlap
334c4762a1bSJed Brown   test:
335c4762a1bSJed Brown     suffix: refine_overlap_1d
336c4762a1bSJed Brown     nsize: 2
33730602db0SMatthew G. Knepley     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
338c4762a1bSJed Brown   test:
339c4762a1bSJed Brown     suffix: refine_overlap_2d
340c4762a1bSJed Brown     requires: triangle
341c4762a1bSJed Brown     nsize: {{2 8}separate output}
34230602db0SMatthew G. Knepley     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
343c4762a1bSJed Brown 
344c4762a1bSJed Brown   # Parallel simple partitioner tests
345c4762a1bSJed Brown   test:
346c4762a1bSJed Brown     suffix: part_simple_0
347c4762a1bSJed Brown     requires: triangle
348c4762a1bSJed Brown     nsize: 2
34930602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_interpolate 0 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail
350c4762a1bSJed Brown   test:
351c4762a1bSJed Brown     suffix: part_simple_1
352c4762a1bSJed Brown     requires: triangle
353c4762a1bSJed Brown     nsize: 8
35430602db0SMatthew G. Knepley     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dist_partition_view -dm_view ascii::ascii_info_detail
355c4762a1bSJed Brown 
356c4762a1bSJed Brown   # Parallel partitioner tests
357c4762a1bSJed Brown   test:
358c4762a1bSJed Brown     suffix: part_parmetis_0
359c4762a1bSJed Brown     requires: parmetis
360c4762a1bSJed Brown     nsize: 2
36130602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type parmetis -dm_view -petscpartitioner_view -test_redistribute -dm_plex_csr_via_mat {{0 1}} -dm_pre_redist_view ::load_balance -dm_post_redist_view ::load_balance -petscpartitioner_view_graph
362c4762a1bSJed Brown   test:
363c4762a1bSJed Brown     suffix: part_ptscotch_0
364c4762a1bSJed Brown     requires: ptscotch
365c4762a1bSJed Brown     nsize: 2
36630602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -dist_dm_distribute -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_strategy quality -test_redistribute -dm_plex_csr_via_mat {{0 1}} -dm_pre_redist_view ::load_balance -dm_post_redist_view ::load_balance -petscpartitioner_view_graph
367c4762a1bSJed Brown   test:
368c4762a1bSJed Brown     suffix: part_ptscotch_1
369c4762a1bSJed Brown     requires: ptscotch
370c4762a1bSJed Brown     nsize: 8
37130602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1
372c4762a1bSJed Brown 
373c4762a1bSJed Brown   # CGNS reader tests 10-11 (need to find smaller test meshes)
374c4762a1bSJed Brown   test:
375c4762a1bSJed Brown     suffix: cgns_0
376c4762a1bSJed Brown     requires: cgns
37730602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -dm_view
378c4762a1bSJed Brown 
379c4762a1bSJed Brown   # Gmsh mesh reader tests
38030602db0SMatthew G. Knepley   testset:
38130602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_view
38230602db0SMatthew G. Knepley 
383c4762a1bSJed Brown     test:
384c4762a1bSJed Brown       suffix: gmsh_0
385c4762a1bSJed Brown       requires: !single
38630602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
387c4762a1bSJed Brown     test:
388c4762a1bSJed Brown       suffix: gmsh_1
389c4762a1bSJed Brown       requires: !single
39030602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh
391c4762a1bSJed Brown     test:
392c4762a1bSJed Brown       suffix: gmsh_2
393c4762a1bSJed Brown       requires: !single
39430602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh
395c4762a1bSJed Brown     test:
396c4762a1bSJed Brown       suffix: gmsh_3
397c4762a1bSJed Brown       nsize: 3
398c4762a1bSJed Brown       requires: !single
39930602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -dist_dm_distribute -petscpartitioner_type simple
400c4762a1bSJed Brown     test:
401c4762a1bSJed Brown       suffix: gmsh_4
402c4762a1bSJed Brown       nsize: 3
403c4762a1bSJed Brown       requires: !single
40430602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dist_dm_distribute -petscpartitioner_type simple
405c4762a1bSJed Brown     test:
406c4762a1bSJed Brown       suffix: gmsh_5
407c4762a1bSJed Brown       requires: !single
40830602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh
409c4762a1bSJed Brown     # TODO: it seems the mesh is not a valid gmsh (inverted cell)
410c4762a1bSJed Brown     test:
411c4762a1bSJed Brown       suffix: gmsh_6
412c4762a1bSJed Brown       requires: !single
41330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -final_diagnostics 0
414c4762a1bSJed Brown     test:
415c4762a1bSJed Brown       suffix: gmsh_7
41630602db0SMatthew G. Knepley       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
417c4762a1bSJed Brown     test:
418c4762a1bSJed Brown       suffix: gmsh_8
41930602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh -dm_view ::ascii_info_detail -dm_plex_check_all
420c4762a1bSJed Brown   testset:
42130602db0SMatthew G. Knepley     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
422c4762a1bSJed Brown     test:
423c4762a1bSJed Brown       suffix: gmsh_9
424c4762a1bSJed Brown     test:
425c4762a1bSJed Brown       suffix: gmsh_9_periodic_0
426c4762a1bSJed Brown       args: -dm_plex_gmsh_periodic 0
427c4762a1bSJed Brown   testset:
42830602db0SMatthew G. Knepley     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
429c4762a1bSJed Brown     test:
430c4762a1bSJed Brown       suffix: gmsh_10
431c4762a1bSJed Brown     test:
432c4762a1bSJed Brown       suffix: gmsh_10_periodic_0
433c4762a1bSJed Brown       args: -dm_plex_gmsh_periodic 0
434c4762a1bSJed Brown   testset:
43530602db0SMatthew G. Knepley     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
436c4762a1bSJed Brown     test:
437c4762a1bSJed Brown       suffix: gmsh_11
438c4762a1bSJed Brown     test:
439c4762a1bSJed Brown       suffix: gmsh_11_periodic_0
440c4762a1bSJed Brown       args: -dm_plex_gmsh_periodic 0
441c4762a1bSJed Brown   # TODO: it seems the mesh is not a valid gmsh (inverted cell)
442c4762a1bSJed Brown   test:
443c4762a1bSJed Brown     suffix: gmsh_12
444c4762a1bSJed Brown     nsize: 4
445c4762a1bSJed Brown     requires: !single mpiio
44630602db0SMatthew G. Knepley     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
447c4762a1bSJed Brown   test:
448c4762a1bSJed Brown     suffix: gmsh_13_hybs2t
449c4762a1bSJed Brown     nsize: 4
450012bc364SMatthew G. Knepley     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
451c4762a1bSJed Brown   test:
452c4762a1bSJed Brown     suffix: gmsh_14_ext
453c4762a1bSJed Brown     requires: !single
45430602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_extrude_layers 2 -dm_extrude_thickness 1.5 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -dm_plex_check_all
455c4762a1bSJed Brown   test:
456c4762a1bSJed Brown     suffix: gmsh_14_ext_s2t
457c4762a1bSJed Brown     requires: !single
458012bc364SMatthew G. Knepley     args: -dm_coord_space 0 -dm_extrude_layers 2 -dm_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
459c4762a1bSJed Brown   test:
460c4762a1bSJed Brown     suffix: gmsh_15_hyb3d
46130602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -dm_plex_check_all
462c4762a1bSJed Brown   test:
463c4762a1bSJed Brown     suffix: gmsh_15_hyb3d_vtk
46430602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view vtk: -dm_plex_gmsh_hybrid -dm_plex_check_all
465c4762a1bSJed Brown   test:
466c4762a1bSJed Brown     suffix: gmsh_15_hyb3d_s2t
467012bc364SMatthew G. Knepley     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
468c4762a1bSJed Brown   test:
469c4762a1bSJed Brown     suffix: gmsh_16_spheresurface
470c4762a1bSJed Brown     nsize : 4
47130602db0SMatthew G. Knepley     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
472c4762a1bSJed Brown   test:
473c4762a1bSJed Brown     suffix: gmsh_16_spheresurface_s2t
474c4762a1bSJed Brown     nsize : 4
475012bc364SMatthew G. Knepley     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
476c4762a1bSJed Brown   test:
477c4762a1bSJed Brown     suffix: gmsh_16_spheresurface_extruded
478c4762a1bSJed Brown     nsize : 4
47930602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_extrude_layers 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
480c4762a1bSJed Brown   test:
481c4762a1bSJed Brown     suffix: gmsh_16_spheresurface_extruded_s2t
482c4762a1bSJed Brown     nsize : 4
483012bc364SMatthew G. Knepley     args: -dm_coord_space 0 -dm_extrude_layers 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
484c4762a1bSJed Brown   test:
485c4762a1bSJed Brown     suffix: gmsh_17_hyb3d_interp_ascii
48630602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -dm_plex_check_all
487c4762a1bSJed Brown   test:
488c4762a1bSJed Brown     suffix: exodus_17_hyb3d_interp_ascii
489c4762a1bSJed Brown     requires: exodusii
49030602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -dm_plex_check_all
491c4762a1bSJed Brown 
492c4762a1bSJed Brown   # Legacy Gmsh v22/v40 ascii/binary reader tests
493c4762a1bSJed Brown   testset:
494c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_legacy.out
49530602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
496c4762a1bSJed Brown     test:
497c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v22
49830602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2
499c4762a1bSJed Brown     test:
500c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v40
50130602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4
502c4762a1bSJed Brown     test:
503c4762a1bSJed Brown       suffix: gmsh_3d_binary_v22
50430602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2
505c4762a1bSJed Brown     test:
506c4762a1bSJed Brown       suffix: gmsh_3d_binary_v40
507c4762a1bSJed Brown       requires: long64
50830602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4
509c4762a1bSJed Brown 
510c4762a1bSJed Brown   # Gmsh v41 ascii/binary reader tests
511c4762a1bSJed Brown   testset: # 32bit mesh, sequential
51230602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
513c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_32.out
514c4762a1bSJed Brown     test:
515c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_32
51630602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
517c4762a1bSJed Brown     test:
518c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32
51930602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
520c4762a1bSJed Brown     test:
521c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32_mpiio
522*dfd57a17SPierre Jolivet       requires: defined(PETSC_HAVE_MPIIO)
52330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
524c4762a1bSJed Brown   testset:  # 32bit mesh, parallel
52530602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dist_dm_distribute -petscpartitioner_type simple -dm_view ::ascii_info_detail -dm_plex_check_all
526c4762a1bSJed Brown     nsize: 2
527c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_32_np2.out
528c4762a1bSJed Brown     test:
529c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_32_np2
53030602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
531c4762a1bSJed Brown     test:
532c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32_np2
53330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
534c4762a1bSJed Brown     test:
535c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32_np2_mpiio
536*dfd57a17SPierre Jolivet       requires: defined(PETSC_HAVE_MPIIO)
53730602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
538c4762a1bSJed Brown   testset: # 64bit mesh, sequential
53930602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
540c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_64.out
541c4762a1bSJed Brown     test:
542c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_64
54330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
544c4762a1bSJed Brown     test:
545c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64
54630602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
547c4762a1bSJed Brown     test:
548c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64_mpiio
549*dfd57a17SPierre Jolivet       requires: defined(PETSC_HAVE_MPIIO)
55030602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
551c4762a1bSJed Brown   testset:  # 64bit mesh, parallel
55230602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dist_dm_distribute -petscpartitioner_type simple -dm_view ::ascii_info_detail -dm_plex_check_all
553c4762a1bSJed Brown     nsize: 2
554c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_64_np2.out
555c4762a1bSJed Brown     test:
556c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_64_np2
55730602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
558c4762a1bSJed Brown     test:
559c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64_np2
56030602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
561c4762a1bSJed Brown     test:
562c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64_np2_mpiio
563*dfd57a17SPierre Jolivet       requires: defined(PETSC_HAVE_MPIIO)
56430602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
565c4762a1bSJed Brown 
566c4762a1bSJed Brown   # Fluent mesh reader tests
567c4762a1bSJed Brown   # TODO: Geometry checks fail
568c4762a1bSJed Brown   test:
569c4762a1bSJed Brown     suffix: fluent_0
570c4762a1bSJed Brown     requires: !complex
57130602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dm_view -final_diagnostics 0
572c4762a1bSJed Brown   test:
573c4762a1bSJed Brown     suffix: fluent_1
574c4762a1bSJed Brown     nsize: 3
575c4762a1bSJed Brown     requires: !complex
57630602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dist_dm_distribute -petscpartitioner_type simple -dm_view -final_diagnostics 0
577c4762a1bSJed Brown   test:
578c4762a1bSJed Brown     suffix: fluent_2
579c4762a1bSJed Brown     requires: !complex
58030602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -dm_view -final_diagnostics 0
581c4762a1bSJed Brown   test:
582c4762a1bSJed Brown     suffix: fluent_3
583c4762a1bSJed Brown     requires: !complex
584c4762a1bSJed Brown     TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382
58530602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -dm_view -final_diagnostics 0
586c4762a1bSJed Brown 
587c4762a1bSJed Brown   # Med mesh reader tests, including parallel file reads
588c4762a1bSJed Brown   test:
589c4762a1bSJed Brown     suffix: med_0
590c4762a1bSJed Brown     requires: med
59130602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dm_view
592c4762a1bSJed Brown   test:
593c4762a1bSJed Brown     suffix: med_1
594c4762a1bSJed Brown     requires: med
595c4762a1bSJed Brown     nsize: 3
59630602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dist_dm_distribute -petscpartitioner_type simple -dm_view
597c4762a1bSJed Brown   test:
598c4762a1bSJed Brown     suffix: med_2
599c4762a1bSJed Brown     requires: med
60030602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dm_view
601c4762a1bSJed Brown   test:
602c4762a1bSJed Brown     suffix: med_3
603c4762a1bSJed Brown     requires: med
604c4762a1bSJed Brown     TODO: MED
605c4762a1bSJed Brown     nsize: 3
60630602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dist_dm_distribute -petscpartitioner_type simple -dm_view
607c4762a1bSJed Brown 
608c4762a1bSJed Brown   # Test shape quality
609c4762a1bSJed Brown   test:
610c4762a1bSJed Brown     suffix: test_shape
611c4762a1bSJed Brown     requires: ctetgen
61230602db0SMatthew G. Knepley     args: -dm_plex_dim 3 -dim 3 -dm_refine_hierarchy 3 -dm_plex_check_all -dm_plex_check_cell_shape
613c4762a1bSJed Brown 
614c4762a1bSJed Brown   # Test simplex to tensor conversion
615c4762a1bSJed Brown   test:
616c4762a1bSJed Brown     suffix: s2t2
617c4762a1bSJed Brown     requires: triangle
618012bc364SMatthew G. Knepley     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
619c4762a1bSJed Brown 
620c4762a1bSJed Brown   test:
621c4762a1bSJed Brown     suffix: s2t3
622c4762a1bSJed Brown     requires: ctetgen
623012bc364SMatthew G. Knepley     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
624c4762a1bSJed Brown 
62530602db0SMatthew G. Knepley   # Test cylinder
62630602db0SMatthew G. Knepley   testset:
62730602db0SMatthew G. Knepley     args: -dm_plex_shape cylinder -dm_plex_check_all -dm_view
628c4762a1bSJed Brown     test:
629c4762a1bSJed Brown       suffix: cylinder
63030602db0SMatthew G. Knepley       args: -ref_dm_refine 1
631c4762a1bSJed Brown     test:
632c4762a1bSJed Brown       suffix: cylinder_per
63361a622f3SMatthew G. Knepley       args: -dm_plex_cylinder_bd periodic -ref_dm_refine 1 -ref_dm_refine_remap 0
634c4762a1bSJed Brown     test:
635c4762a1bSJed Brown       suffix: cylinder_wedge
63661a622f3SMatthew G. Knepley       args: -dm_coord_space 0 -dm_plex_interpolate 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:
637c4762a1bSJed Brown     test:
638c4762a1bSJed Brown       suffix: cylinder_wedge_int
639c4762a1bSJed Brown       output_file: output/ex1_cylinder_wedge.out
64061a622f3SMatthew G. Knepley       args: -dm_coord_space 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:
641c4762a1bSJed Brown 
642c4762a1bSJed Brown   test:
643c4762a1bSJed Brown     suffix: box_2d
64430602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
645c4762a1bSJed Brown 
646c4762a1bSJed Brown   test:
647c4762a1bSJed Brown     suffix: box_2d_per
64830602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
649c4762a1bSJed Brown 
650c4762a1bSJed Brown   test:
651c4762a1bSJed Brown     suffix: box_2d_per_unint
65230602db0SMatthew G. Knepley     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
653c4762a1bSJed Brown 
654c4762a1bSJed Brown   test:
655c4762a1bSJed Brown     suffix: box_3d
65630602db0SMatthew G. Knepley     args: -dm_plex_dim 3 -dim 3 -dm_plex_simplex 0 -ref_dm_refine 3 -dm_plex_check_all -dm_view
657c4762a1bSJed Brown 
658c4762a1bSJed Brown   test:
659c4762a1bSJed Brown     requires: triangle
660c4762a1bSJed Brown     suffix: box_wedge
66161a622f3SMatthew G. Knepley     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
662c4762a1bSJed Brown 
663c4762a1bSJed Brown   testset:
664c4762a1bSJed Brown     requires: triangle
665012bc364SMatthew G. Knepley     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
666c4762a1bSJed Brown     test:
667c4762a1bSJed Brown       suffix: box_wedge_s2t
668c4762a1bSJed Brown     test:
669c4762a1bSJed Brown       nsize: 3
67030602db0SMatthew G. Knepley       args: -dist_dm_distribute -petscpartitioner_type simple
671c4762a1bSJed Brown       suffix: box_wedge_s2t_parallel
672c4762a1bSJed Brown 
673c4762a1bSJed Brown   # Test GLVis output
67430602db0SMatthew G. Knepley   testset:
67530602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_interpolate 0
676c4762a1bSJed Brown     test:
677c4762a1bSJed Brown       suffix: glvis_2d_tet
67830602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
679c4762a1bSJed Brown     test:
680c4762a1bSJed Brown       suffix: glvis_2d_tet_per
68130602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
682c4762a1bSJed Brown     test:
683c4762a1bSJed Brown       suffix: glvis_3d_tet
68430602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
68530602db0SMatthew G. Knepley   testset:
68630602db0SMatthew G. Knepley     args: -dm_coord_space 0
68730602db0SMatthew G. Knepley     test:
68830602db0SMatthew G. Knepley       suffix: glvis_2d_tet_per_mfem
68930602db0SMatthew G. Knepley       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:
69030602db0SMatthew G. Knepley     test:
69130602db0SMatthew G. Knepley       suffix: glvis_2d_quad
69230602db0SMatthew G. Knepley       args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_view glvis:
69330602db0SMatthew G. Knepley     test:
69430602db0SMatthew G. Knepley       suffix: glvis_2d_quad_per
69530602db0SMatthew G. Knepley       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
69630602db0SMatthew G. Knepley     test:
69730602db0SMatthew G. Knepley       suffix: glvis_2d_quad_per_mfem
69830602db0SMatthew G. Knepley       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
699c4762a1bSJed Brown     test:
700c4762a1bSJed Brown       suffix: glvis_3d_tet_per
70130602db0SMatthew G. Knepley       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
702c4762a1bSJed Brown     test:
703c4762a1bSJed Brown       suffix: glvis_3d_tet_per_mfem
704c4762a1bSJed Brown       TODO: broken
70530602db0SMatthew G. Knepley       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:
706c4762a1bSJed Brown     test:
707c4762a1bSJed Brown       suffix: glvis_3d_hex
70830602db0SMatthew G. Knepley       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_view glvis:
709c4762a1bSJed Brown     test:
710c4762a1bSJed Brown       suffix: glvis_3d_hex_per
71130602db0SMatthew G. Knepley       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
712c4762a1bSJed Brown     test:
713c4762a1bSJed Brown       suffix: glvis_3d_hex_per_mfem
71430602db0SMatthew G. Knepley       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
71530602db0SMatthew G. Knepley     test:
71630602db0SMatthew G. Knepley       suffix: glvis_2d_hyb
71730602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
71830602db0SMatthew G. Knepley     test:
71930602db0SMatthew G. Knepley       suffix: glvis_3d_hyb
72030602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
72130602db0SMatthew G. Knepley     test:
72230602db0SMatthew G. Knepley       suffix: glvis_3d_hyb_s2t
723012bc364SMatthew G. Knepley       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
724c4762a1bSJed Brown 
725c4762a1bSJed Brown   # Test P4EST
726c4762a1bSJed Brown   testset:
727c4762a1bSJed Brown     requires: p4est
72830602db0SMatthew G. Knepley     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
729c4762a1bSJed Brown     test:
730c4762a1bSJed Brown       suffix: p4est_periodic
73130602db0SMatthew G. Knepley       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
732c4762a1bSJed Brown     test:
733c4762a1bSJed Brown       suffix: p4est_periodic_3d
73430602db0SMatthew G. Knepley       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic,none -dm_plex_box_faces 3,5,4 -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 2 -conv_seq_1_dm_p4est_refine_pattern hash
735c4762a1bSJed Brown     test:
736c4762a1bSJed Brown       suffix: p4est_gmsh_periodic
73730602db0SMatthew G. Knepley       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
738c4762a1bSJed Brown     test:
739c4762a1bSJed Brown       suffix: p4est_gmsh_surface
74030602db0SMatthew G. Knepley       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
741c4762a1bSJed Brown     test:
742c4762a1bSJed Brown       suffix: p4est_gmsh_surface_parallel
743c4762a1bSJed Brown       nsize: 2
74430602db0SMatthew G. Knepley       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
745c4762a1bSJed Brown     test:
746c4762a1bSJed Brown       suffix: p4est_hyb_2d
74730602db0SMatthew G. Knepley       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
748c4762a1bSJed Brown     test:
749c4762a1bSJed Brown       suffix: p4est_hyb_3d
75030602db0SMatthew G. Knepley       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
751c4762a1bSJed Brown     test:
752c4762a1bSJed Brown       requires: ctetgen
753c4762a1bSJed Brown       suffix: p4est_s2t_bugfaces_3d
75430602db0SMatthew G. Knepley       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
755c4762a1bSJed Brown     test:
756c4762a1bSJed Brown       suffix: p4est_bug_overlapsf
757c4762a1bSJed Brown       nsize: 3
75830602db0SMatthew G. Knepley       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
759c4762a1bSJed Brown     test:
760c4762a1bSJed Brown       suffix: p4est_redistribute
761c4762a1bSJed Brown       nsize: 3
76230602db0SMatthew G. Knepley       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_via_mat {{0 1}} -dm_view ::load_balance
763c4762a1bSJed Brown     test:
764c4762a1bSJed Brown       suffix: p4est_gmsh_s2t_3d
76530602db0SMatthew G. Knepley       args: -conv_seq_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
766c4762a1bSJed Brown     test:
767c4762a1bSJed Brown       suffix: p4est_gmsh_s2t_3d_hash
76830602db0SMatthew G. Knepley       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
769c4762a1bSJed Brown     test:
770c4762a1bSJed Brown       requires: long_runtime
771c4762a1bSJed Brown       suffix: p4est_gmsh_periodic_3d
77230602db0SMatthew G. Knepley       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
773c4762a1bSJed Brown 
774c4762a1bSJed Brown   testset:
775c4762a1bSJed Brown     requires: p4est
776c4762a1bSJed Brown     nsize: 6
77730602db0SMatthew G. Knepley     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
778c4762a1bSJed Brown     test:
77954fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
780c4762a1bSJed Brown       suffix: p4est_par_periodic
78130602db0SMatthew G. Knepley       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
782c4762a1bSJed Brown     test:
78354fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
784c4762a1bSJed Brown       suffix: p4est_par_periodic_3d
78530602db0SMatthew G. Knepley       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
786c4762a1bSJed Brown     test:
78754fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
788c4762a1bSJed Brown       suffix: p4est_par_gmsh_periodic
78930602db0SMatthew G. Knepley       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
790c4762a1bSJed Brown     test:
791c4762a1bSJed Brown       suffix: p4est_par_gmsh_surface
79230602db0SMatthew G. Knepley       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
793c4762a1bSJed Brown     test:
794c4762a1bSJed Brown       suffix: p4est_par_gmsh_s2t_3d
79530602db0SMatthew G. Knepley       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
796c4762a1bSJed Brown     test:
79754fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
798c4762a1bSJed Brown       suffix: p4est_par_gmsh_s2t_3d_hash
79930602db0SMatthew G. Knepley       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
800c4762a1bSJed Brown     test:
801c4762a1bSJed Brown       requires: long_runtime
802c4762a1bSJed Brown       suffix: p4est_par_gmsh_periodic_3d
80330602db0SMatthew G. Knepley       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
804c4762a1bSJed Brown 
805c4762a1bSJed Brown   testset:
806c4762a1bSJed Brown     requires: p4est
807c4762a1bSJed Brown     nsize: 6
80830602db0SMatthew G. Knepley     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
809c4762a1bSJed Brown     test:
810c4762a1bSJed Brown       suffix: p4est_par_ovl_periodic
81130602db0SMatthew G. Knepley       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
812c4762a1bSJed Brown     #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled)
813c4762a1bSJed Brown     test:
814c4762a1bSJed Brown       suffix: p4est_par_ovl_periodic_3d
81530602db0SMatthew G. Knepley       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_bd periodic,periodic,none -dm_plex_box_faces 3,5,4 -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 2 -conv_par_1_dm_p4est_refine_pattern hash -final_diagnostics 0
816c4762a1bSJed Brown     test:
817c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_periodic
81830602db0SMatthew G. Knepley       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
819c4762a1bSJed Brown     test:
820c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_surface
82130602db0SMatthew G. Knepley       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
822c4762a1bSJed Brown     test:
823c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_s2t_3d
82430602db0SMatthew G. Knepley       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
825c4762a1bSJed Brown     test:
826c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_s2t_3d_hash
82730602db0SMatthew G. Knepley       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
828c4762a1bSJed Brown     test:
829c4762a1bSJed Brown       requires: long_runtime
830c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_periodic_3d
83130602db0SMatthew G. Knepley       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
832c4762a1bSJed Brown     test:
833c4762a1bSJed Brown       suffix: p4est_par_ovl_hyb_2d
83430602db0SMatthew G. Knepley       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
835c4762a1bSJed Brown     test:
836c4762a1bSJed Brown       suffix: p4est_par_ovl_hyb_3d
83730602db0SMatthew G. Knepley       args: -conv_par_1_dm_forest_initial_refinement 0 -conv_par_1_dm_forest_maximum_refinement 1 -conv_par_1_dm_p4est_refine_pattern hash -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh
838c4762a1bSJed Brown 
839c4762a1bSJed Brown   test:
840c4762a1bSJed Brown     TODO: broken
841c4762a1bSJed Brown     requires: p4est
842c4762a1bSJed Brown     nsize: 2
843c4762a1bSJed Brown     suffix: p4est_bug_labels_noovl
84430602db0SMatthew G. Knepley     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
845c4762a1bSJed Brown 
846c4762a1bSJed Brown   test:
847c4762a1bSJed Brown     requires: p4est
848c4762a1bSJed Brown     nsize: 2
849c4762a1bSJed Brown     suffix: p4est_bug_distribute_overlap
85030602db0SMatthew G. Knepley     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
851c4762a1bSJed Brown     args: -dm_post_overlap_view
852c4762a1bSJed Brown 
853c4762a1bSJed Brown   test:
854595782ffSMatthew G. Knepley     suffix: ref_alfeld2d_0
855595782ffSMatthew G. Knepley     requires: triangle
856012bc364SMatthew G. Knepley     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
857595782ffSMatthew G. Knepley   test:
858595782ffSMatthew G. Knepley     suffix: ref_alfeld3d_0
859595782ffSMatthew G. Knepley     requires: ctetgen
860012bc364SMatthew G. Knepley     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
861595782ffSMatthew G. Knepley 
86209c713e7SStefano Zampini   # Boundary layer refiners
86309c713e7SStefano Zampini   test:
86409c713e7SStefano Zampini     suffix: ref_bl_1
865012bc364SMatthew G. Knepley     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_layers 2 -final_diagnostics -ref_dm_plex_transform_bl_splits 3 -dm_extrude_column_first {{0 1}}
86609c713e7SStefano Zampini   test:
86709c713e7SStefano Zampini     suffix: ref_bl_2_tri
86809c713e7SStefano Zampini     requires: triangle
869012bc364SMatthew G. Knepley     args: -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_layers 3 -final_diagnostics -ref_dm_plex_transform_bl_splits 4 -dm_extrude_column_first {{0 1}}
87009c713e7SStefano Zampini   test:
87109c713e7SStefano Zampini     suffix: ref_bl_3_quad
872012bc364SMatthew G. Knepley     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_layers 3 -final_diagnostics -ref_dm_plex_transform_bl_splits 4 -dm_extrude_column_first {{0 1}}
87309c713e7SStefano Zampini   test:
87409c713e7SStefano Zampini     suffix: ref_bl_spheresurface_extruded
87509c713e7SStefano Zampini     nsize : 4
876012bc364SMatthew G. Knepley     args: -dm_extrude_layers 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 -dm_extrude_column_first {{0 1}separate output} -final_diagnostics -ref_dm_refine 1 -ref_dm_plex_transform_type refine_boundary_layer -ref_dm_plex_transform_bl_splits 2
87709c713e7SStefano Zampini   test:
87809c713e7SStefano Zampini     suffix: ref_bl_3d_hyb
87909c713e7SStefano Zampini     nsize : 4
880012bc364SMatthew G. Knepley     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
8810e278f6aSMatthew G. Knepley 
88230602db0SMatthew G. Knepley   testset:
88330602db0SMatthew G. Knepley     args: -dm_plex_shape sphere -dm_plex_check_all -dm_view
8840e278f6aSMatthew G. Knepley     test:
8850e278f6aSMatthew G. Knepley       suffix: sphere_0
88630602db0SMatthew G. Knepley       args:
8870e278f6aSMatthew G. Knepley     test:
8880e278f6aSMatthew G. Knepley       suffix: sphere_1
88930602db0SMatthew G. Knepley       args: -ref_dm_refine 2
8900e278f6aSMatthew G. Knepley     test:
89168317524SMatthew G. Knepley       suffix: sphere_2
89230602db0SMatthew G. Knepley       args: -dm_plex_simplex 0
89368317524SMatthew G. Knepley     test:
89468317524SMatthew G. Knepley       suffix: sphere_3
89530602db0SMatthew G. Knepley       args: -dm_plex_simplex 0 -ref_dm_refine 2
89668317524SMatthew G. Knepley 
89768317524SMatthew G. Knepley   test:
8980e278f6aSMatthew G. Knepley     suffix: ball_0
8990e278f6aSMatthew G. Knepley     requires: ctetgen
90030602db0SMatthew G. Knepley     args: -dm_plex_dim 3 -dm_plex_shape ball -dm_plex_check_all -dm_view
9010e278f6aSMatthew G. Knepley 
9020e278f6aSMatthew G. Knepley   test:
9030e278f6aSMatthew G. Knepley     suffix: ball_1
9040e278f6aSMatthew G. Knepley     requires: ctetgen
90530602db0SMatthew G. Knepley     args: -dm_plex_dim 3 -dm_plex_shape ball -bd_dm_refine 2 -dm_plex_check_all -dm_view
9060e278f6aSMatthew G. Knepley 
907c4762a1bSJed Brown TEST*/
908