xref: /petsc/src/dm/impls/plex/tests/ex1.c (revision 5f80ce2ab25dff0f4601e710601cbbcecf323266)
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);
35*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsRangeInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, NULL,1,3));
36*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsBoundedInt("-overlap", "The cell overlap for partitioning", "ex1.c", options->overlap, &options->overlap, NULL,0));
37*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsBool("-test_p4est_seq", "Test p4est with sequential base DM", "ex1.c", options->testp4est[0], &options->testp4est[0], NULL));
38*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsBool("-test_p4est_par", "Test p4est with parallel base DM", "ex1.c", options->testp4est[1], &options->testp4est[1], NULL));
39*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsBool("-test_redistribute", "Test redistribution", "ex1.c", options->redistribute, &options->redistribute, NULL));
40*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsBool("-final_ref", "Run uniform refinement on the final mesh", "ex1.c", options->final_ref, &options->final_ref, NULL));
41*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsBool("-final_diagnostics", "Run diagnostics on the final mesh", "ex1.c", options->final_diagnostics, &options->final_diagnostics, NULL));
421e1ea65dSPierre Jolivet   ierr = PetscOptionsEnd();CHKERRQ(ierr);
43c4762a1bSJed Brown 
44*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent));
45*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogStageRegister("MeshLoad",       &options->stages[STAGE_LOAD]));
46*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogStageRegister("MeshDistribute", &options->stages[STAGE_DISTRIBUTE]));
47*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogStageRegister("MeshRefine",     &options->stages[STAGE_REFINE]));
48*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogStageRegister("MeshOverlap",    &options->stages[STAGE_OVERLAP]));
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 
60c4762a1bSJed Brown   PetscFunctionBegin;
61*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogEventBegin(user->createMeshEvent,0,0,0,0));
62*5f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_rank(comm, &rank));
63*5f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_size(comm, &size));
64*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogStagePush(user->stages[STAGE_LOAD]));
65*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMCreate(comm, dm));
66*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMSetType(*dm, DMPLEX));
67*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMPlexDistributeSetDefault(*dm, PETSC_FALSE));
68*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMSetFromOptions(*dm));
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 */
75*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMLocalizeCoordinates(*dm));
76*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMGetPeriodicity(*dm, &periodic, NULL, NULL, NULL));
77*5f80ce2aSJacob Faibussowitsch   if (periodic) CHKERRQ(DMSetPeriodicity(*dm, PETSC_TRUE, NULL, NULL, NULL));
78db2bf62eSStefano Zampini 
79*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMViewFromOptions(*dm,NULL,"-init_dm_view"));
80*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMGetDimension(*dm, &dim));
81c4762a1bSJed Brown 
82c4762a1bSJed Brown   if (testp4est_seq) {
83c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST)
84c4762a1bSJed Brown     DM dmConv = NULL;
85c4762a1bSJed Brown 
86*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckSymmetry(*dm));
87*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckSkeleton(*dm, 0));
88*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckFaces(*dm, 0));
89*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckGeometry(*dm));
90*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckPointSF(*dm));
91*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckInterfaceCones(*dm));
92*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexSetRefinementUniform(*dm, PETSC_TRUE));
93*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX));
94*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMRefine(*dm, PETSC_COMM_WORLD, &dmConv));
95*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
96c4762a1bSJed Brown     if (dmConv) {
97*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMDestroy(dm));
98c4762a1bSJed Brown       *dm  = dmConv;
99c4762a1bSJed Brown     }
100*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm,NULL,"-initref_dm_view"));
101*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckSymmetry(*dm));
102*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckSkeleton(*dm, 0));
103*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckFaces(*dm, 0));
104*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckGeometry(*dm));
105*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckPointSF(*dm));
106*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckInterfaceCones(*dm));
107c4762a1bSJed Brown 
108*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv));
109c4762a1bSJed Brown     if (dmConv) {
110*5f80ce2aSJacob Faibussowitsch       CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_1_"));
111*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMSetFromOptions(dmConv));
112*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMDestroy(dm));
113c4762a1bSJed Brown       *dm  = dmConv;
114c4762a1bSJed Brown     }
115*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_1_"));
116*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMSetUp(*dm));
117*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_view"));
118*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMConvert(*dm,DMPLEX,&dmConv));
119c4762a1bSJed Brown     if (dmConv) {
120*5f80ce2aSJacob Faibussowitsch       CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_2_"));
121*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMPlexDistributeSetDefault(dmConv, PETSC_FALSE));
122*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMSetFromOptions(dmConv));
123*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMDestroy(dm));
124c4762a1bSJed Brown       *dm  = dmConv;
125c4762a1bSJed Brown     }
126*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_2_"));
127*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_view"));
128*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
129c4762a1bSJed Brown #else
130c4762a1bSJed Brown     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
131c4762a1bSJed Brown #endif
132c4762a1bSJed Brown   }
133c4762a1bSJed Brown 
134*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogStagePop());
135c4762a1bSJed Brown   if (!testp4est_seq) {
136*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscLogStagePush(user->stages[STAGE_DISTRIBUTE]));
137*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_pre_dist_view"));
138*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, "dist_"));
139*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMSetFromOptions(*dm));
140*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
141*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscLogStagePop());
142*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-distributed_dm_view"));
143c4762a1bSJed Brown   }
144*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogStagePush(user->stages[STAGE_REFINE]));
145*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, "ref_"));
146*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMSetFromOptions(*dm));
147*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
148*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogStagePop());
149c4762a1bSJed Brown 
150c4762a1bSJed Brown   if (testp4est_par) {
151c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST)
152c4762a1bSJed Brown     DM dmConv = NULL;
153c4762a1bSJed Brown 
154*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_tobox_view"));
155*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexSetRefinementUniform(*dm, PETSC_TRUE));
156*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexSetTransformType(*dm, DMPLEXREFINETOBOX));
157*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMRefine(*dm, PETSC_COMM_WORLD, &dmConv));
158*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
159c4762a1bSJed Brown     if (dmConv) {
160*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMDestroy(dm));
161c4762a1bSJed Brown       *dm  = dmConv;
162c4762a1bSJed Brown     }
163*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_tobox_view"));
164*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckSymmetry(*dm));
165*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckSkeleton(*dm, 0));
166*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckFaces(*dm, 0));
167*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckGeometry(*dm));
168*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckPointSF(*dm));
169*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckInterfaceCones(*dm));
170c4762a1bSJed Brown 
171*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv));
172c4762a1bSJed Brown     if (dmConv) {
173*5f80ce2aSJacob Faibussowitsch       CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_1_"));
174*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMSetFromOptions(dmConv));
175*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMDestroy(dm));
176c4762a1bSJed Brown       *dm  = dmConv;
177c4762a1bSJed Brown     }
178*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_1_"));
179*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMSetUp(*dm));
180*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_view"));
181*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMConvert(*dm, DMPLEX, &dmConv));
182c4762a1bSJed Brown     if (dmConv) {
183*5f80ce2aSJacob Faibussowitsch       CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_2_"));
184*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMPlexDistributeSetDefault(dmConv, PETSC_FALSE));
185*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMSetFromOptions(dmConv));
186*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMDestroy(dm));
187c4762a1bSJed Brown       *dm  = dmConv;
188c4762a1bSJed Brown     }
189*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_2_"));
190*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_view"));
191*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL));
192c4762a1bSJed Brown #else
193c4762a1bSJed Brown     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
194c4762a1bSJed Brown #endif
195c4762a1bSJed Brown   }
196c4762a1bSJed Brown 
197c4762a1bSJed Brown   /* test redistribution of an already distributed mesh */
198c4762a1bSJed Brown   if (user->redistribute) {
199c4762a1bSJed Brown     DM       distributedMesh;
2000a19bb7dSprj-     PetscSF  sf;
2010a19bb7dSprj-     PetscInt nranks;
202c4762a1bSJed Brown 
203*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view"));
204*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexDistribute(*dm, 0, NULL, &distributedMesh));
205c4762a1bSJed Brown     if (distributedMesh) {
206*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMGetPointSF(distributedMesh, &sf));
207*5f80ce2aSJacob Faibussowitsch       CHKERRQ(PetscSFSetUp(sf));
208*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMGetNeighbors(distributedMesh, &nranks, NULL));
209*5f80ce2aSJacob Faibussowitsch       CHKERRMPI(MPI_Allreduce(MPI_IN_PLACE, &nranks, 1, MPIU_INT, MPI_MIN, PetscObjectComm((PetscObject)*dm)));
210*5f80ce2aSJacob Faibussowitsch       CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)*dm)), "Minimum number of neighbors: %D\n", nranks));
211*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMDestroy(dm));
212c4762a1bSJed Brown       *dm  = distributedMesh;
213c4762a1bSJed Brown     }
214*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_post_redist_view"));
215c4762a1bSJed Brown   }
216c4762a1bSJed Brown 
217c4762a1bSJed Brown   if (user->overlap) {
218c4762a1bSJed Brown     DM overlapMesh = NULL;
219c4762a1bSJed Brown 
220c4762a1bSJed Brown     /* Add the overlap to refined mesh */
221*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscLogStagePush(user->stages[STAGE_OVERLAP]));
222*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view"));
223*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh));
224c4762a1bSJed Brown     if (overlapMesh) {
225c4762a1bSJed Brown       PetscInt overlap;
226*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMPlexGetOverlap(overlapMesh, &overlap));
227*5f80ce2aSJacob Faibussowitsch       CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %D\n", overlap));
228*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMDestroy(dm));
229c4762a1bSJed Brown       *dm = overlapMesh;
230c4762a1bSJed Brown     }
231*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view"));
232*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscLogStagePop());
233c4762a1bSJed Brown   }
234c4762a1bSJed Brown   if (user->final_ref) {
235c4762a1bSJed Brown     DM refinedMesh = NULL;
236c4762a1bSJed Brown 
237*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexSetRefinementUniform(*dm, PETSC_TRUE));
238*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMRefine(*dm, comm, &refinedMesh));
239c4762a1bSJed Brown     if (refinedMesh) {
240*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMDestroy(dm));
241c4762a1bSJed Brown       *dm  = refinedMesh;
242c4762a1bSJed Brown     }
243c4762a1bSJed Brown   }
244c4762a1bSJed Brown 
245*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscObjectSetName((PetscObject) *dm, "Generated Mesh"));
246*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_view"));
247c4762a1bSJed Brown   if (user->final_diagnostics) {
248c4762a1bSJed Brown     DMPlexInterpolatedFlag interpolated;
249c4762a1bSJed Brown     PetscInt  dim, depth;
250c4762a1bSJed Brown 
251*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMGetDimension(*dm, &dim));
252*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexGetDepth(*dm, &depth));
253*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexIsInterpolatedCollective(*dm, &interpolated));
254c4762a1bSJed Brown 
255*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckSymmetry(*dm));
256c4762a1bSJed Brown     if (interpolated == DMPLEX_INTERPOLATED_FULL) {
257*5f80ce2aSJacob Faibussowitsch       CHKERRQ(DMPlexCheckFaces(*dm, 0));
258c4762a1bSJed Brown     }
259*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckSkeleton(*dm, 0));
260*5f80ce2aSJacob Faibussowitsch     CHKERRQ(DMPlexCheckGeometry(*dm));
261c4762a1bSJed Brown   }
262*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLogEventEnd(user->createMeshEvent,0,0,0,0));
263c4762a1bSJed Brown   PetscFunctionReturn(0);
264c4762a1bSJed Brown }
265c4762a1bSJed Brown 
266c4762a1bSJed Brown int main(int argc, char **argv)
267c4762a1bSJed Brown {
26830602db0SMatthew G. Knepley   DM             dm;
26930602db0SMatthew G. Knepley   AppCtx         user;
270c4762a1bSJed Brown   PetscErrorCode ierr;
271c4762a1bSJed Brown 
272c4762a1bSJed Brown   ierr = PetscInitialize(&argc, &argv, NULL, help);if (ierr) return ierr;
273*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ProcessOptions(PETSC_COMM_WORLD, &user));
274*5f80ce2aSJacob Faibussowitsch   CHKERRQ(CreateMesh(PETSC_COMM_WORLD, &user, &dm));
275*5f80ce2aSJacob Faibussowitsch   CHKERRQ(DMDestroy(&dm));
276c4762a1bSJed Brown   ierr = PetscFinalize();
277c4762a1bSJed Brown   return ierr;
278c4762a1bSJed Brown }
279c4762a1bSJed Brown 
280c4762a1bSJed Brown /*TEST
281c4762a1bSJed Brown 
282c4762a1bSJed Brown   # CTetGen 0-1
283c4762a1bSJed Brown   test:
284c4762a1bSJed Brown     suffix: 0
285c4762a1bSJed Brown     requires: ctetgen
28630602db0SMatthew 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
287c4762a1bSJed Brown   test:
288c4762a1bSJed Brown     suffix: 1
289c4762a1bSJed Brown     requires: ctetgen
29030602db0SMatthew 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
291c4762a1bSJed Brown 
292c4762a1bSJed Brown   # 2D LaTex and ASCII output 2-9
293c4762a1bSJed Brown   test:
294c4762a1bSJed Brown     suffix: 2
295c4762a1bSJed Brown     requires: triangle
29630602db0SMatthew G. Knepley     args: -dm_plex_interpolate 0 -dm_view ascii::ascii_latex
297c4762a1bSJed Brown   test:
298c4762a1bSJed Brown     suffix: 3
299c4762a1bSJed Brown     requires: triangle
30030602db0SMatthew G. Knepley     args: -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
301c4762a1bSJed Brown   test:
302c4762a1bSJed Brown     suffix: 4
303c4762a1bSJed Brown     requires: triangle
304c4762a1bSJed Brown     nsize: 2
30530602db0SMatthew G. Knepley     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_info_detail
306c4762a1bSJed Brown   test:
307c4762a1bSJed Brown     suffix: 5
308c4762a1bSJed Brown     requires: triangle
309c4762a1bSJed Brown     nsize: 2
31030602db0SMatthew G. Knepley     args: -dm_coord_space 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
311c4762a1bSJed Brown   test:
312c4762a1bSJed Brown     suffix: 6
31330602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_simplex 0 -dm_view ascii::ascii_info_detail
314c4762a1bSJed Brown   test:
315c4762a1bSJed Brown     suffix: 7
31630602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_simplex 0 -ref_dm_refine 1 -dm_view ascii::ascii_info_detail
317c4762a1bSJed Brown   test:
318c4762a1bSJed Brown     suffix: 8
319c4762a1bSJed Brown     nsize: 2
32030602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type simple -dm_view ascii::ascii_latex
321c4762a1bSJed Brown 
322c4762a1bSJed Brown   # 1D ASCII output
32330602db0SMatthew G. Knepley   testset:
32430602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_dim 1 -dm_view ascii::ascii_info_detail -dm_plex_check_all
325c4762a1bSJed Brown     test:
326c4762a1bSJed Brown       suffix: 1d_0
32730602db0SMatthew G. Knepley       args:
328c4762a1bSJed Brown     test:
329c4762a1bSJed Brown       suffix: 1d_1
33030602db0SMatthew G. Knepley       args: -ref_dm_refine 2
331c4762a1bSJed Brown     test:
332c4762a1bSJed Brown       suffix: 1d_2
33330602db0SMatthew G. Knepley       args: -dm_plex_box_faces 5 -dm_plex_box_bd periodic
334c4762a1bSJed Brown 
335c4762a1bSJed Brown   # Parallel refinement tests with overlap
336c4762a1bSJed Brown   test:
337c4762a1bSJed Brown     suffix: refine_overlap_1d
338c4762a1bSJed Brown     nsize: 2
33930602db0SMatthew 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
340c4762a1bSJed Brown   test:
341c4762a1bSJed Brown     suffix: refine_overlap_2d
342c4762a1bSJed Brown     requires: triangle
343c4762a1bSJed Brown     nsize: {{2 8}separate output}
34430602db0SMatthew 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
345c4762a1bSJed Brown 
346d410b0cfSMatthew G. Knepley   # Parallel extrusion tests
347d410b0cfSMatthew G. Knepley   test:
348d410b0cfSMatthew G. Knepley     suffix: spheresurface_extruded
349d410b0cfSMatthew G. Knepley     nsize : 4
350d410b0cfSMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_shape sphere -dm_extrude 3 -dist_dm_distribute -petscpartitioner_type simple \
351d410b0cfSMatthew G. Knepley           -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical
352d410b0cfSMatthew G. Knepley 
353d410b0cfSMatthew G. Knepley   test:
354d410b0cfSMatthew G. Knepley     suffix: spheresurface_extruded_symmetric
355d410b0cfSMatthew G. Knepley     nsize : 4
356d410b0cfSMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_shape sphere -dm_extrude 3 -dm_plex_transform_extrude_symmetric -dist_dm_distribute -petscpartitioner_type simple \
357d410b0cfSMatthew G. Knepley           -dm_plex_check_all -dm_view ::ascii_info_detail -dm_plex_view_coord_system spherical
358d410b0cfSMatthew G. Knepley 
359c4762a1bSJed Brown   # Parallel simple partitioner tests
360c4762a1bSJed Brown   test:
361c4762a1bSJed Brown     suffix: part_simple_0
362c4762a1bSJed Brown     requires: triangle
363c4762a1bSJed Brown     nsize: 2
36430602db0SMatthew 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
365c4762a1bSJed Brown   test:
366c4762a1bSJed Brown     suffix: part_simple_1
367c4762a1bSJed Brown     requires: triangle
368c4762a1bSJed Brown     nsize: 8
36930602db0SMatthew 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
370c4762a1bSJed Brown 
371c4762a1bSJed Brown   # Parallel partitioner tests
372c4762a1bSJed Brown   test:
373c4762a1bSJed Brown     suffix: part_parmetis_0
374c4762a1bSJed Brown     requires: parmetis
375c4762a1bSJed Brown     nsize: 2
3765a107427SMatthew 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_alg {{mat graph overlap}} -dm_pre_redist_view ::load_balance -dm_post_redist_view ::load_balance -petscpartitioner_view_graph
377c4762a1bSJed Brown   test:
378c4762a1bSJed Brown     suffix: part_ptscotch_0
379c4762a1bSJed Brown     requires: ptscotch
380c4762a1bSJed Brown     nsize: 2
3815a107427SMatthew G. Knepley     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
382c4762a1bSJed Brown   test:
383c4762a1bSJed Brown     suffix: part_ptscotch_1
384c4762a1bSJed Brown     requires: ptscotch
385c4762a1bSJed Brown     nsize: 8
38630602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -ref_dm_refine 1 -dist_dm_distribute -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1
387c4762a1bSJed Brown 
388c4762a1bSJed Brown   # CGNS reader tests 10-11 (need to find smaller test meshes)
389c4762a1bSJed Brown   test:
390c4762a1bSJed Brown     suffix: cgns_0
391c4762a1bSJed Brown     requires: cgns
39230602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -dm_view
393c4762a1bSJed Brown 
394c4762a1bSJed Brown   # Gmsh mesh reader tests
39530602db0SMatthew G. Knepley   testset:
39630602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_view
39730602db0SMatthew G. Knepley 
398c4762a1bSJed Brown     test:
399c4762a1bSJed Brown       suffix: gmsh_0
400c4762a1bSJed Brown       requires: !single
40130602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
402c4762a1bSJed Brown     test:
403c4762a1bSJed Brown       suffix: gmsh_1
404c4762a1bSJed Brown       requires: !single
40530602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh
406c4762a1bSJed Brown     test:
407c4762a1bSJed Brown       suffix: gmsh_2
408c4762a1bSJed Brown       requires: !single
40930602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh
410c4762a1bSJed Brown     test:
411c4762a1bSJed Brown       suffix: gmsh_3
412c4762a1bSJed Brown       nsize: 3
413c4762a1bSJed Brown       requires: !single
41430602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -dist_dm_distribute -petscpartitioner_type simple
415c4762a1bSJed Brown     test:
416c4762a1bSJed Brown       suffix: gmsh_4
417c4762a1bSJed Brown       nsize: 3
418c4762a1bSJed Brown       requires: !single
41930602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dist_dm_distribute -petscpartitioner_type simple
420c4762a1bSJed Brown     test:
421c4762a1bSJed Brown       suffix: gmsh_5
422c4762a1bSJed Brown       requires: !single
42330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh
424c4762a1bSJed Brown     # TODO: it seems the mesh is not a valid gmsh (inverted cell)
425c4762a1bSJed Brown     test:
426c4762a1bSJed Brown       suffix: gmsh_6
427c4762a1bSJed Brown       requires: !single
42830602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -final_diagnostics 0
429c4762a1bSJed Brown     test:
430c4762a1bSJed Brown       suffix: gmsh_7
43130602db0SMatthew 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
432c4762a1bSJed Brown     test:
433c4762a1bSJed Brown       suffix: gmsh_8
43430602db0SMatthew 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
435c4762a1bSJed Brown   testset:
43630602db0SMatthew 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
437c4762a1bSJed Brown     test:
438c4762a1bSJed Brown       suffix: gmsh_9
439c4762a1bSJed Brown     test:
440c4762a1bSJed Brown       suffix: gmsh_9_periodic_0
441c4762a1bSJed Brown       args: -dm_plex_gmsh_periodic 0
442c4762a1bSJed Brown   testset:
44330602db0SMatthew 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
444c4762a1bSJed Brown     test:
445c4762a1bSJed Brown       suffix: gmsh_10
446c4762a1bSJed Brown     test:
447c4762a1bSJed Brown       suffix: gmsh_10_periodic_0
448c4762a1bSJed Brown       args: -dm_plex_gmsh_periodic 0
449c4762a1bSJed Brown   testset:
45030602db0SMatthew 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
451c4762a1bSJed Brown     test:
452c4762a1bSJed Brown       suffix: gmsh_11
453c4762a1bSJed Brown     test:
454c4762a1bSJed Brown       suffix: gmsh_11_periodic_0
455c4762a1bSJed Brown       args: -dm_plex_gmsh_periodic 0
456c4762a1bSJed Brown   # TODO: it seems the mesh is not a valid gmsh (inverted cell)
457c4762a1bSJed Brown   test:
458c4762a1bSJed Brown     suffix: gmsh_12
459c4762a1bSJed Brown     nsize: 4
460c4762a1bSJed Brown     requires: !single mpiio
46130602db0SMatthew 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
462c4762a1bSJed Brown   test:
463c4762a1bSJed Brown     suffix: gmsh_13_hybs2t
464c4762a1bSJed Brown     nsize: 4
465012bc364SMatthew 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
466c4762a1bSJed Brown   test:
467c4762a1bSJed Brown     suffix: gmsh_14_ext
468c4762a1bSJed Brown     requires: !single
469d410b0cfSMatthew G. Knepley     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
470c4762a1bSJed Brown   test:
471c4762a1bSJed Brown     suffix: gmsh_14_ext_s2t
472c4762a1bSJed Brown     requires: !single
473d410b0cfSMatthew G. Knepley     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
474c4762a1bSJed Brown   test:
475c4762a1bSJed Brown     suffix: gmsh_15_hyb3d
47630602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -dm_plex_check_all
477c4762a1bSJed Brown   test:
478c4762a1bSJed Brown     suffix: gmsh_15_hyb3d_vtk
47930602db0SMatthew 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
480c4762a1bSJed Brown   test:
481c4762a1bSJed Brown     suffix: gmsh_15_hyb3d_s2t
482012bc364SMatthew 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
483c4762a1bSJed Brown   test:
484c4762a1bSJed Brown     suffix: gmsh_16_spheresurface
485c4762a1bSJed Brown     nsize : 4
48630602db0SMatthew 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
487c4762a1bSJed Brown   test:
488c4762a1bSJed Brown     suffix: gmsh_16_spheresurface_s2t
489c4762a1bSJed Brown     nsize : 4
490012bc364SMatthew 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
491c4762a1bSJed Brown   test:
492c4762a1bSJed Brown     suffix: gmsh_16_spheresurface_extruded
493c4762a1bSJed Brown     nsize : 4
494d410b0cfSMatthew G. Knepley     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
495c4762a1bSJed Brown   test:
496c4762a1bSJed Brown     suffix: gmsh_16_spheresurface_extruded_s2t
497c4762a1bSJed Brown     nsize : 4
498d410b0cfSMatthew G. Knepley     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
499c4762a1bSJed Brown   test:
500c4762a1bSJed Brown     suffix: gmsh_17_hyb3d_interp_ascii
50130602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -dm_plex_check_all
502c4762a1bSJed Brown   test:
503c4762a1bSJed Brown     suffix: exodus_17_hyb3d_interp_ascii
504c4762a1bSJed Brown     requires: exodusii
50530602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -dm_plex_check_all
506c4762a1bSJed Brown 
507c4762a1bSJed Brown   # Legacy Gmsh v22/v40 ascii/binary reader tests
508c4762a1bSJed Brown   testset:
509c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_legacy.out
51030602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all
511c4762a1bSJed Brown     test:
512c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v22
51330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2
514c4762a1bSJed Brown     test:
515c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v40
51630602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4
517c4762a1bSJed Brown     test:
518c4762a1bSJed Brown       suffix: gmsh_3d_binary_v22
51930602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2
520c4762a1bSJed Brown     test:
521c4762a1bSJed Brown       suffix: gmsh_3d_binary_v40
522c4762a1bSJed Brown       requires: long64
52330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4
524c4762a1bSJed Brown 
525c4762a1bSJed Brown   # Gmsh v41 ascii/binary reader tests
526c4762a1bSJed Brown   testset: # 32bit mesh, sequential
52781a1af93SMatthew G. Knepley     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
528c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_32.out
529c4762a1bSJed Brown     test:
530c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_32
53130602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
532c4762a1bSJed Brown     test:
533c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32
53430602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
535c4762a1bSJed Brown     test:
536c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32_mpiio
537dfd57a17SPierre Jolivet       requires: defined(PETSC_HAVE_MPIIO)
53830602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
5398cd392daSMatthew G. Knepley   test:
5408cd392daSMatthew G. Knepley     suffix: gmsh_quad_8node
5418cd392daSMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-qua-8node.msh \
54281a1af93SMatthew G. Knepley           -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
5438cd392daSMatthew G. Knepley   test:
5448cd392daSMatthew G. Knepley     suffix: gmsh_hex_20node
5458cd392daSMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-hex-20node.msh \
54681a1af93SMatthew G. Knepley           -dm_view -dm_plex_check_all -dm_plex_gmsh_mark_vertices
547c4762a1bSJed Brown   testset:  # 32bit mesh, parallel
54881a1af93SMatthew G. Knepley     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
549c4762a1bSJed Brown     nsize: 2
550c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_32_np2.out
551c4762a1bSJed Brown     test:
552c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_32_np2
55330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
554c4762a1bSJed Brown     test:
555c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32_np2
55630602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
557c4762a1bSJed Brown     test:
558c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32_np2_mpiio
559dfd57a17SPierre Jolivet       requires: defined(PETSC_HAVE_MPIIO)
56030602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
561c4762a1bSJed Brown   testset: # 64bit mesh, sequential
56281a1af93SMatthew G. Knepley     args: -dm_coord_space 0 -dm_view ::ascii_info_detail -dm_plex_check_all -dm_plex_gmsh_mark_vertices
563c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_64.out
564c4762a1bSJed Brown     test:
565c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_64
56630602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
567c4762a1bSJed Brown     test:
568c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64
56930602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
570c4762a1bSJed Brown     test:
571c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64_mpiio
572dfd57a17SPierre Jolivet       requires: defined(PETSC_HAVE_MPIIO)
57330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
574c4762a1bSJed Brown   testset:  # 64bit mesh, parallel
57581a1af93SMatthew G. Knepley     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
576c4762a1bSJed Brown     nsize: 2
577c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_64_np2.out
578c4762a1bSJed Brown     test:
579c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_64_np2
58030602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
581c4762a1bSJed Brown     test:
582c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64_np2
58330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
584c4762a1bSJed Brown     test:
585c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64_np2_mpiio
586dfd57a17SPierre Jolivet       requires: defined(PETSC_HAVE_MPIIO)
58730602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
588c4762a1bSJed Brown 
589c4762a1bSJed Brown   # Fluent mesh reader tests
590c4762a1bSJed Brown   # TODO: Geometry checks fail
591c4762a1bSJed Brown   test:
592c4762a1bSJed Brown     suffix: fluent_0
593c4762a1bSJed Brown     requires: !complex
59430602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -dm_view -final_diagnostics 0
595c4762a1bSJed Brown   test:
596c4762a1bSJed Brown     suffix: fluent_1
597c4762a1bSJed Brown     nsize: 3
598c4762a1bSJed Brown     requires: !complex
59930602db0SMatthew 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
600c4762a1bSJed Brown   test:
601c4762a1bSJed Brown     suffix: fluent_2
602c4762a1bSJed Brown     requires: !complex
60330602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -dm_view -final_diagnostics 0
604c4762a1bSJed Brown   test:
605c4762a1bSJed Brown     suffix: fluent_3
606c4762a1bSJed Brown     requires: !complex
607c4762a1bSJed Brown     TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382
60830602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -dm_view -final_diagnostics 0
609c4762a1bSJed Brown 
610c4762a1bSJed Brown   # Med mesh reader tests, including parallel file reads
611c4762a1bSJed Brown   test:
612c4762a1bSJed Brown     suffix: med_0
613c4762a1bSJed Brown     requires: med
61430602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dm_view
615c4762a1bSJed Brown   test:
616c4762a1bSJed Brown     suffix: med_1
617c4762a1bSJed Brown     requires: med
618c4762a1bSJed Brown     nsize: 3
61930602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -dist_dm_distribute -petscpartitioner_type simple -dm_view
620c4762a1bSJed Brown   test:
621c4762a1bSJed Brown     suffix: med_2
622c4762a1bSJed Brown     requires: med
62330602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dm_view
624c4762a1bSJed Brown   test:
625c4762a1bSJed Brown     suffix: med_3
626c4762a1bSJed Brown     requires: med
627c4762a1bSJed Brown     TODO: MED
628c4762a1bSJed Brown     nsize: 3
62930602db0SMatthew G. Knepley     args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -dist_dm_distribute -petscpartitioner_type simple -dm_view
630c4762a1bSJed Brown 
631c4762a1bSJed Brown   # Test shape quality
632c4762a1bSJed Brown   test:
633c4762a1bSJed Brown     suffix: test_shape
634c4762a1bSJed Brown     requires: ctetgen
63530602db0SMatthew G. Knepley     args: -dm_plex_dim 3 -dim 3 -dm_refine_hierarchy 3 -dm_plex_check_all -dm_plex_check_cell_shape
636c4762a1bSJed Brown 
637c4762a1bSJed Brown   # Test simplex to tensor conversion
638c4762a1bSJed Brown   test:
639c4762a1bSJed Brown     suffix: s2t2
640c4762a1bSJed Brown     requires: triangle
641012bc364SMatthew 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
642c4762a1bSJed Brown 
643c4762a1bSJed Brown   test:
644c4762a1bSJed Brown     suffix: s2t3
645c4762a1bSJed Brown     requires: ctetgen
646012bc364SMatthew 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
647c4762a1bSJed Brown 
64830602db0SMatthew G. Knepley   # Test cylinder
64930602db0SMatthew G. Knepley   testset:
65030602db0SMatthew G. Knepley     args: -dm_plex_shape cylinder -dm_plex_check_all -dm_view
651c4762a1bSJed Brown     test:
652c4762a1bSJed Brown       suffix: cylinder
65330602db0SMatthew G. Knepley       args: -ref_dm_refine 1
654c4762a1bSJed Brown     test:
655c4762a1bSJed Brown       suffix: cylinder_per
65661a622f3SMatthew G. Knepley       args: -dm_plex_cylinder_bd periodic -ref_dm_refine 1 -ref_dm_refine_remap 0
657c4762a1bSJed Brown     test:
658c4762a1bSJed Brown       suffix: cylinder_wedge
65961a622f3SMatthew G. Knepley       args: -dm_coord_space 0 -dm_plex_interpolate 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:
660c4762a1bSJed Brown     test:
661c4762a1bSJed Brown       suffix: cylinder_wedge_int
662c4762a1bSJed Brown       output_file: output/ex1_cylinder_wedge.out
66361a622f3SMatthew G. Knepley       args: -dm_coord_space 0 -dm_plex_cell tensor_triangular_prism -dm_view vtk:
664c4762a1bSJed Brown 
665c4762a1bSJed Brown   test:
666c4762a1bSJed Brown     suffix: box_2d
66730602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
668c4762a1bSJed Brown 
669c4762a1bSJed Brown   test:
670c4762a1bSJed Brown     suffix: box_2d_per
67130602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -ref_dm_refine 2 -dm_plex_check_all -dm_view
672c4762a1bSJed Brown 
673c4762a1bSJed Brown   test:
674c4762a1bSJed Brown     suffix: box_2d_per_unint
67530602db0SMatthew 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
676c4762a1bSJed Brown 
677c4762a1bSJed Brown   test:
678c4762a1bSJed Brown     suffix: box_3d
67930602db0SMatthew G. Knepley     args: -dm_plex_dim 3 -dim 3 -dm_plex_simplex 0 -ref_dm_refine 3 -dm_plex_check_all -dm_view
680c4762a1bSJed Brown 
681c4762a1bSJed Brown   test:
682c4762a1bSJed Brown     requires: triangle
683c4762a1bSJed Brown     suffix: box_wedge
68461a622f3SMatthew 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
685c4762a1bSJed Brown 
686c4762a1bSJed Brown   testset:
687c4762a1bSJed Brown     requires: triangle
688012bc364SMatthew 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
689c4762a1bSJed Brown     test:
690c4762a1bSJed Brown       suffix: box_wedge_s2t
691c4762a1bSJed Brown     test:
692c4762a1bSJed Brown       nsize: 3
69330602db0SMatthew G. Knepley       args: -dist_dm_distribute -petscpartitioner_type simple
694c4762a1bSJed Brown       suffix: box_wedge_s2t_parallel
695c4762a1bSJed Brown 
696c4762a1bSJed Brown   # Test GLVis output
69730602db0SMatthew G. Knepley   testset:
69830602db0SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_interpolate 0
699c4762a1bSJed Brown     test:
700c4762a1bSJed Brown       suffix: glvis_2d_tet
70130602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
702c4762a1bSJed Brown     test:
703c4762a1bSJed Brown       suffix: glvis_2d_tet_per
70430602db0SMatthew 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
705c4762a1bSJed Brown     test:
706c4762a1bSJed Brown       suffix: glvis_3d_tet
70730602db0SMatthew 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:
70830602db0SMatthew G. Knepley   testset:
70930602db0SMatthew G. Knepley     args: -dm_coord_space 0
71030602db0SMatthew G. Knepley     test:
71130602db0SMatthew G. Knepley       suffix: glvis_2d_tet_per_mfem
71230602db0SMatthew 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:
71330602db0SMatthew G. Knepley     test:
71430602db0SMatthew G. Knepley       suffix: glvis_2d_quad
71530602db0SMatthew G. Knepley       args: -dm_plex_simplex 0 -dm_plex_box_faces 3,3 -dm_view glvis:
71630602db0SMatthew G. Knepley     test:
71730602db0SMatthew G. Knepley       suffix: glvis_2d_quad_per
71830602db0SMatthew 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
71930602db0SMatthew G. Knepley     test:
72030602db0SMatthew G. Knepley       suffix: glvis_2d_quad_per_mfem
72130602db0SMatthew 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
722c4762a1bSJed Brown     test:
723c4762a1bSJed Brown       suffix: glvis_3d_tet_per
72430602db0SMatthew 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
725c4762a1bSJed Brown     test:
726c4762a1bSJed Brown       suffix: glvis_3d_tet_per_mfem
727c4762a1bSJed Brown       TODO: broken
72830602db0SMatthew 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:
729c4762a1bSJed Brown     test:
730c4762a1bSJed Brown       suffix: glvis_3d_hex
73130602db0SMatthew G. Knepley       args: -dm_plex_dim 3 -dm_plex_simplex 0 -dm_plex_box_faces 3,3,3 -dm_view glvis:
732c4762a1bSJed Brown     test:
733c4762a1bSJed Brown       suffix: glvis_3d_hex_per
73430602db0SMatthew 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
735c4762a1bSJed Brown     test:
736c4762a1bSJed Brown       suffix: glvis_3d_hex_per_mfem
73730602db0SMatthew 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
73830602db0SMatthew G. Knepley     test:
73930602db0SMatthew G. Knepley       suffix: glvis_2d_hyb
74030602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
74130602db0SMatthew G. Knepley     test:
74230602db0SMatthew G. Knepley       suffix: glvis_3d_hyb
74330602db0SMatthew G. Knepley       args: -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
74430602db0SMatthew G. Knepley     test:
74530602db0SMatthew G. Knepley       suffix: glvis_3d_hyb_s2t
746012bc364SMatthew 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
747c4762a1bSJed Brown 
748c4762a1bSJed Brown   # Test P4EST
749c4762a1bSJed Brown   testset:
750c4762a1bSJed Brown     requires: p4est
75130602db0SMatthew 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
752c4762a1bSJed Brown     test:
753c4762a1bSJed Brown       suffix: p4est_periodic
75430602db0SMatthew 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
755c4762a1bSJed Brown     test:
756c4762a1bSJed Brown       suffix: p4est_periodic_3d
75730602db0SMatthew 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
758c4762a1bSJed Brown     test:
759c4762a1bSJed Brown       suffix: p4est_gmsh_periodic
76030602db0SMatthew 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
761c4762a1bSJed Brown     test:
762c4762a1bSJed Brown       suffix: p4est_gmsh_surface
76330602db0SMatthew 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
764c4762a1bSJed Brown     test:
765c4762a1bSJed Brown       suffix: p4est_gmsh_surface_parallel
766c4762a1bSJed Brown       nsize: 2
76730602db0SMatthew 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
768c4762a1bSJed Brown     test:
769c4762a1bSJed Brown       suffix: p4est_hyb_2d
77030602db0SMatthew 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
771c4762a1bSJed Brown     test:
772c4762a1bSJed Brown       suffix: p4est_hyb_3d
77330602db0SMatthew 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
774c4762a1bSJed Brown     test:
775c4762a1bSJed Brown       requires: ctetgen
776c4762a1bSJed Brown       suffix: p4est_s2t_bugfaces_3d
77730602db0SMatthew 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
778c4762a1bSJed Brown     test:
779c4762a1bSJed Brown       suffix: p4est_bug_overlapsf
780c4762a1bSJed Brown       nsize: 3
78130602db0SMatthew 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
782c4762a1bSJed Brown     test:
783c4762a1bSJed Brown       suffix: p4est_redistribute
784c4762a1bSJed Brown       nsize: 3
7855a107427SMatthew 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_alg {{mat graph overlap}} -dm_view ::load_balance
786c4762a1bSJed Brown     test:
787c4762a1bSJed Brown       suffix: p4est_gmsh_s2t_3d
78830602db0SMatthew G. Knepley       args: -conv_seq_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
789c4762a1bSJed Brown     test:
790c4762a1bSJed Brown       suffix: p4est_gmsh_s2t_3d_hash
79130602db0SMatthew 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
792c4762a1bSJed Brown     test:
793c4762a1bSJed Brown       requires: long_runtime
794c4762a1bSJed Brown       suffix: p4est_gmsh_periodic_3d
79530602db0SMatthew 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
796c4762a1bSJed Brown 
797c4762a1bSJed Brown   testset:
798c4762a1bSJed Brown     requires: p4est
799c4762a1bSJed Brown     nsize: 6
80030602db0SMatthew 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
801c4762a1bSJed Brown     test:
80254fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
803c4762a1bSJed Brown       suffix: p4est_par_periodic
80430602db0SMatthew 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
805c4762a1bSJed Brown     test:
80654fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
807c4762a1bSJed Brown       suffix: p4est_par_periodic_3d
80830602db0SMatthew 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
809c4762a1bSJed Brown     test:
81054fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
811c4762a1bSJed Brown       suffix: p4est_par_gmsh_periodic
81230602db0SMatthew 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
813c4762a1bSJed Brown     test:
814c4762a1bSJed Brown       suffix: p4est_par_gmsh_surface
81530602db0SMatthew 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
816c4762a1bSJed Brown     test:
817c4762a1bSJed Brown       suffix: p4est_par_gmsh_s2t_3d
81830602db0SMatthew G. Knepley       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
819c4762a1bSJed Brown     test:
82054fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
821c4762a1bSJed Brown       suffix: p4est_par_gmsh_s2t_3d_hash
82230602db0SMatthew 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
823c4762a1bSJed Brown     test:
824c4762a1bSJed Brown       requires: long_runtime
825c4762a1bSJed Brown       suffix: p4est_par_gmsh_periodic_3d
82630602db0SMatthew 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
827c4762a1bSJed Brown 
828c4762a1bSJed Brown   testset:
829c4762a1bSJed Brown     requires: p4est
830c4762a1bSJed Brown     nsize: 6
83130602db0SMatthew 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
832c4762a1bSJed Brown     test:
833c4762a1bSJed Brown       suffix: p4est_par_ovl_periodic
83430602db0SMatthew 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
835c4762a1bSJed Brown     #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled)
836c4762a1bSJed Brown     test:
837c4762a1bSJed Brown       suffix: p4est_par_ovl_periodic_3d
83830602db0SMatthew 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
839c4762a1bSJed Brown     test:
840c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_periodic
84130602db0SMatthew 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
842c4762a1bSJed Brown     test:
843c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_surface
84430602db0SMatthew 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
845c4762a1bSJed Brown     test:
846c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_s2t_3d
84730602db0SMatthew G. Knepley       args: -conv_par_1_dm_forest_initial_refinement 1 -dm_plex_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
848c4762a1bSJed Brown     test:
849c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_s2t_3d_hash
85030602db0SMatthew 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
851c4762a1bSJed Brown     test:
852c4762a1bSJed Brown       requires: long_runtime
853c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_periodic_3d
85430602db0SMatthew 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
855c4762a1bSJed Brown     test:
856c4762a1bSJed Brown       suffix: p4est_par_ovl_hyb_2d
85730602db0SMatthew 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
858c4762a1bSJed Brown     test:
859c4762a1bSJed Brown       suffix: p4est_par_ovl_hyb_3d
86030602db0SMatthew 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
861c4762a1bSJed Brown 
862c4762a1bSJed Brown   test:
863c4762a1bSJed Brown     TODO: broken
864c4762a1bSJed Brown     requires: p4est
865c4762a1bSJed Brown     nsize: 2
866c4762a1bSJed Brown     suffix: p4est_bug_labels_noovl
86730602db0SMatthew 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
868c4762a1bSJed Brown 
869c4762a1bSJed Brown   test:
870c4762a1bSJed Brown     requires: p4est
871c4762a1bSJed Brown     nsize: 2
872c4762a1bSJed Brown     suffix: p4est_bug_distribute_overlap
87330602db0SMatthew 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
874c4762a1bSJed Brown     args: -dm_post_overlap_view
875c4762a1bSJed Brown 
876c4762a1bSJed Brown   test:
877595782ffSMatthew G. Knepley     suffix: ref_alfeld2d_0
878595782ffSMatthew G. Knepley     requires: triangle
879012bc364SMatthew 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
880595782ffSMatthew G. Knepley   test:
881595782ffSMatthew G. Knepley     suffix: ref_alfeld3d_0
882595782ffSMatthew G. Knepley     requires: ctetgen
883012bc364SMatthew 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
884595782ffSMatthew G. Knepley 
88509c713e7SStefano Zampini   # Boundary layer refiners
88609c713e7SStefano Zampini   test:
88709c713e7SStefano Zampini     suffix: ref_bl_1
888d410b0cfSMatthew 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 2 -final_diagnostics -ref_dm_plex_transform_bl_splits 3
88909c713e7SStefano Zampini   test:
89009c713e7SStefano Zampini     suffix: ref_bl_2_tri
89109c713e7SStefano Zampini     requires: triangle
892d410b0cfSMatthew 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 3 -final_diagnostics -ref_dm_plex_transform_bl_splits 4
89309c713e7SStefano Zampini   test:
89409c713e7SStefano Zampini     suffix: ref_bl_3_quad
895d410b0cfSMatthew 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 3 -final_diagnostics -ref_dm_plex_transform_bl_splits 4
89609c713e7SStefano Zampini   test:
89709c713e7SStefano Zampini     suffix: ref_bl_spheresurface_extruded
89809c713e7SStefano Zampini     nsize : 4
899d410b0cfSMatthew G. Knepley     args: -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
90009c713e7SStefano Zampini   test:
90109c713e7SStefano Zampini     suffix: ref_bl_3d_hyb
90209c713e7SStefano Zampini     nsize : 4
903012bc364SMatthew 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
9040e278f6aSMatthew G. Knepley 
90530602db0SMatthew G. Knepley   testset:
90630602db0SMatthew G. Knepley     args: -dm_plex_shape sphere -dm_plex_check_all -dm_view
9070e278f6aSMatthew G. Knepley     test:
9080e278f6aSMatthew G. Knepley       suffix: sphere_0
90930602db0SMatthew G. Knepley       args:
9100e278f6aSMatthew G. Knepley     test:
9110e278f6aSMatthew G. Knepley       suffix: sphere_1
91230602db0SMatthew G. Knepley       args: -ref_dm_refine 2
9130e278f6aSMatthew G. Knepley     test:
91468317524SMatthew G. Knepley       suffix: sphere_2
91530602db0SMatthew G. Knepley       args: -dm_plex_simplex 0
91668317524SMatthew G. Knepley     test:
91768317524SMatthew G. Knepley       suffix: sphere_3
91830602db0SMatthew G. Knepley       args: -dm_plex_simplex 0 -ref_dm_refine 2
91968317524SMatthew G. Knepley 
92068317524SMatthew G. Knepley   test:
9210e278f6aSMatthew G. Knepley     suffix: ball_0
9220e278f6aSMatthew G. Knepley     requires: ctetgen
92330602db0SMatthew G. Knepley     args: -dm_plex_dim 3 -dm_plex_shape ball -dm_plex_check_all -dm_view
9240e278f6aSMatthew G. Knepley 
9250e278f6aSMatthew G. Knepley   test:
9260e278f6aSMatthew G. Knepley     suffix: ball_1
9270e278f6aSMatthew G. Knepley     requires: ctetgen
92830602db0SMatthew G. Knepley     args: -dm_plex_dim 3 -dm_plex_shape ball -bd_dm_refine 2 -dm_plex_check_all -dm_view
9290e278f6aSMatthew G. Knepley 
9303fb88a6bSJed Brown   test:
9313fb88a6bSJed Brown     suffix: schwarz_p_extrude
9323fb88a6bSJed Brown     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
933c4762a1bSJed Brown TEST*/
934