xref: /petsc/src/dm/impls/plex/tests/ex1.c (revision 0e278f6a9e2caa6032d3ea3eff6e05375b0538ce)
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>
40a19bb7dSprj- #include <petscsf.h>
5c4762a1bSJed Brown 
6c4762a1bSJed Brown typedef enum {BOX, CYLINDER, SPHERE, BALL} DomainShape;
7c4762a1bSJed Brown enum {STAGE_LOAD, STAGE_DISTRIBUTE, STAGE_REFINE, STAGE_OVERLAP};
8c4762a1bSJed Brown 
9c4762a1bSJed Brown typedef struct {
10c4762a1bSJed Brown   DM            dm;                /* REQUIRED in order to use SNES evaluation functions */
11c4762a1bSJed Brown   PetscInt      debug;             /* The debugging level */
12c4762a1bSJed Brown   PetscLogEvent createMeshEvent;
13c4762a1bSJed Brown   PetscLogStage stages[4];
14c4762a1bSJed Brown   /* Domain and mesh definition */
15c4762a1bSJed Brown   PetscInt      dim;                             /* The topological mesh dimension */
16c4762a1bSJed Brown   PetscBool     interpolate;                     /* Generate intermediate mesh elements */
17c4762a1bSJed Brown   PetscReal     refinementLimit;                 /* The largest allowable cell volume */
18c4762a1bSJed Brown   PetscBool     cellSimplex;                     /* Use simplices or hexes */
19c4762a1bSJed Brown   PetscBool     cellWedge;                       /* Use wedges */
20c4762a1bSJed Brown   DomainShape   domainShape;                     /* Shape of the region to be meshed */
21c4762a1bSJed Brown   PetscInt      *domainBoxSizes;                 /* Sizes of the box mesh */
22c4762a1bSJed Brown   PetscReal     *domainBoxL,*domainBoxU;         /* Lower left, upper right corner of the box mesh */
23c4762a1bSJed Brown   DMBoundaryType periodicity[3];                 /* The domain periodicity */
24c4762a1bSJed Brown   char          filename[PETSC_MAX_PATH_LEN];    /* Import mesh from file */
25c4762a1bSJed Brown   char          bdfilename[PETSC_MAX_PATH_LEN];  /* Import mesh boundary from file */
26c4762a1bSJed Brown   char          extfilename[PETSC_MAX_PATH_LEN]; /* Import 2D mesh to be extruded from file */
27c4762a1bSJed Brown   PetscBool     testPartition;                   /* Use a fixed partitioning for testing */
28c4762a1bSJed Brown   PetscInt      overlap;                         /* The cell overlap to use during partitioning */
29c4762a1bSJed Brown   PetscReal     extrude_thickness;               /* Thickness of extrusion */
30c4762a1bSJed Brown   PetscInt      extrude_layers;                  /* Layers to be extruded */
3109c713e7SStefano Zampini   PetscBool     extrude_hfirst;                  /* New numbering: height first? */
32c4762a1bSJed Brown   PetscBool     testp4est[2];
33c4762a1bSJed Brown   PetscBool     redistribute;
34c4762a1bSJed Brown   PetscBool     final_ref;                       /* Run refinement at the end */
35c4762a1bSJed Brown   PetscBool     final_diagnostics;               /* Run diagnostics on the final mesh */
36c4762a1bSJed Brown } AppCtx;
37c4762a1bSJed Brown 
38c4762a1bSJed Brown PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
39c4762a1bSJed Brown {
40c4762a1bSJed Brown   const char       *dShapes[4] = {"box", "cylinder", "sphere", "ball"};
41c4762a1bSJed Brown   PetscInt         shape, bd, n;
42c4762a1bSJed Brown   static PetscInt  domainBoxSizes[3] = {1,1,1};
43c4762a1bSJed Brown   static PetscReal domainBoxL[3] = {0.,0.,0.};
44c4762a1bSJed Brown   static PetscReal domainBoxU[3] = {1.,1.,1.};
45c4762a1bSJed Brown   PetscBool        flg;
46c4762a1bSJed Brown   PetscErrorCode   ierr;
47c4762a1bSJed Brown 
48c4762a1bSJed Brown   PetscFunctionBegin;
49c4762a1bSJed Brown   options->debug             = 0;
50c4762a1bSJed Brown   options->dim               = 2;
51c4762a1bSJed Brown   options->interpolate       = PETSC_FALSE;
52c4762a1bSJed Brown   options->refinementLimit   = 0.0;
53c4762a1bSJed Brown   options->cellSimplex       = PETSC_TRUE;
54c4762a1bSJed Brown   options->cellWedge         = PETSC_FALSE;
55c4762a1bSJed Brown   options->domainShape       = BOX;
56c4762a1bSJed Brown   options->domainBoxSizes    = NULL;
57c4762a1bSJed Brown   options->domainBoxL        = NULL;
58c4762a1bSJed Brown   options->domainBoxU        = NULL;
59c4762a1bSJed Brown   options->periodicity[0]    = DM_BOUNDARY_NONE;
60c4762a1bSJed Brown   options->periodicity[1]    = DM_BOUNDARY_NONE;
61c4762a1bSJed Brown   options->periodicity[2]    = DM_BOUNDARY_NONE;
62c4762a1bSJed Brown   options->filename[0]       = '\0';
63c4762a1bSJed Brown   options->bdfilename[0]     = '\0';
64c4762a1bSJed Brown   options->extfilename[0]    = '\0';
65c4762a1bSJed Brown   options->testPartition     = PETSC_FALSE;
66c4762a1bSJed Brown   options->overlap           = 0;
67595782ffSMatthew G. Knepley   options->extrude_layers    = 0;
68c4762a1bSJed Brown   options->extrude_thickness = 0.1;
6909c713e7SStefano Zampini   options->extrude_hfirst    = PETSC_TRUE;
70c4762a1bSJed Brown   options->testp4est[0]      = PETSC_FALSE;
71c4762a1bSJed Brown   options->testp4est[1]      = PETSC_FALSE;
72c4762a1bSJed Brown   options->redistribute      = PETSC_FALSE;
73c4762a1bSJed Brown   options->final_ref         = PETSC_FALSE;
74c4762a1bSJed Brown   options->final_diagnostics = PETSC_TRUE;
75c4762a1bSJed Brown 
76c4762a1bSJed Brown   ierr = PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");CHKERRQ(ierr);
77c4762a1bSJed Brown   ierr = PetscOptionsBoundedInt("-debug", "The debugging level", "ex1.c", options->debug, &options->debug, NULL,0);CHKERRQ(ierr);
78c4762a1bSJed Brown   ierr = PetscOptionsRangeInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, NULL,1,3);CHKERRQ(ierr);
79c4762a1bSJed Brown   ierr = PetscOptionsBool("-interpolate", "Generate intermediate mesh elements", "ex1.c", options->interpolate, &options->interpolate, NULL);CHKERRQ(ierr);
80c4762a1bSJed Brown   ierr = PetscOptionsReal("-refinement_limit", "The largest allowable cell volume", "ex1.c", options->refinementLimit, &options->refinementLimit, NULL);CHKERRQ(ierr);
81c4762a1bSJed Brown   ierr = PetscOptionsBool("-cell_simplex", "Use simplices if true, otherwise hexes", "ex1.c", options->cellSimplex, &options->cellSimplex, NULL);CHKERRQ(ierr);
82c4762a1bSJed Brown   ierr = PetscOptionsBool("-cell_wedge", "Use wedges if true", "ex1.c", options->cellWedge, &options->cellWedge, NULL);CHKERRQ(ierr);
83c4762a1bSJed Brown   shape = options->domainShape;
84c4762a1bSJed Brown   ierr = PetscOptionsEList("-domain_shape","The shape of the domain","ex1.c", dShapes, 4, dShapes[options->domainShape], &shape, NULL);CHKERRQ(ierr);
85c4762a1bSJed Brown   options->domainShape = (DomainShape) shape;
86c4762a1bSJed Brown   ierr = PetscOptionsIntArray("-domain_box_sizes","The sizes of the box domain","ex1.c", domainBoxSizes, (n=3,&n), &flg);CHKERRQ(ierr);
87c4762a1bSJed Brown   if (flg) { options->domainShape = BOX; options->domainBoxSizes = domainBoxSizes;}
88c4762a1bSJed Brown   ierr = PetscOptionsRealArray("-domain_box_ll","Coordinates of the lower left corner of the box domain","ex1.c", domainBoxL, (n=3,&n), &flg);CHKERRQ(ierr);
89c4762a1bSJed Brown   if (flg) { options->domainBoxL = domainBoxL;}
90c4762a1bSJed Brown   ierr = PetscOptionsRealArray("-domain_box_ur","Coordinates of the upper right corner of the box domain","ex1.c", domainBoxU, (n=3,&n), &flg);CHKERRQ(ierr);
91c4762a1bSJed Brown   if (flg) { options->domainBoxU = domainBoxU;}
92c4762a1bSJed Brown   bd = options->periodicity[0];
93c4762a1bSJed Brown   ierr = PetscOptionsEList("-x_periodicity", "The x-boundary periodicity", "ex1.c", DMBoundaryTypes, 5, DMBoundaryTypes[options->periodicity[0]], &bd, NULL);CHKERRQ(ierr);
94c4762a1bSJed Brown   options->periodicity[0] = (DMBoundaryType) bd;
95c4762a1bSJed Brown   bd = options->periodicity[1];
96c4762a1bSJed Brown   ierr = PetscOptionsEList("-y_periodicity", "The y-boundary periodicity", "ex1.c", DMBoundaryTypes, 5, DMBoundaryTypes[options->periodicity[1]], &bd, NULL);CHKERRQ(ierr);
97c4762a1bSJed Brown   options->periodicity[1] = (DMBoundaryType) bd;
98c4762a1bSJed Brown   bd = options->periodicity[2];
99c4762a1bSJed Brown   ierr = PetscOptionsEList("-z_periodicity", "The z-boundary periodicity", "ex1.c", DMBoundaryTypes, 5, DMBoundaryTypes[options->periodicity[2]], &bd, NULL);CHKERRQ(ierr);
100c4762a1bSJed Brown   options->periodicity[2] = (DMBoundaryType) bd;
101c4762a1bSJed Brown   ierr = PetscOptionsString("-filename", "The mesh file", "ex1.c", options->filename, options->filename, PETSC_MAX_PATH_LEN, NULL);CHKERRQ(ierr);
102589a23caSBarry Smith   ierr = PetscOptionsString("-bd_filename", "The mesh boundary file", "ex1.c", options->bdfilename, options->bdfilename, sizeof(options->bdfilename), NULL);CHKERRQ(ierr);
103589a23caSBarry Smith   ierr = PetscOptionsString("-ext_filename", "The 2D mesh file to be extruded", "ex1.c", options->extfilename, options->extfilename, sizeof(options->extfilename), &flg);CHKERRQ(ierr);
104595782ffSMatthew G. Knepley   if (flg) options->extrude_layers = 2;
105c4762a1bSJed Brown   ierr = PetscOptionsBoundedInt("-ext_layers", "The number of layers to extrude", "ex1.c", options->extrude_layers, &options->extrude_layers, NULL,0);CHKERRQ(ierr);
106c4762a1bSJed Brown   ierr = PetscOptionsReal("-ext_thickness", "The thickness of the layer to be extruded", "ex1.c", options->extrude_thickness, &options->extrude_thickness, NULL);CHKERRQ(ierr);
10709c713e7SStefano Zampini   ierr = PetscOptionsBool("-ext_hfirst", "Order the cells in the height first", "ex1.c", options->extrude_hfirst, &options->extrude_hfirst, NULL);CHKERRQ(ierr);
108c4762a1bSJed Brown   ierr = PetscOptionsBool("-test_partition", "Use a fixed partition for testing", "ex1.c", options->testPartition, &options->testPartition, NULL);CHKERRQ(ierr);
109c4762a1bSJed Brown   ierr = PetscOptionsBoundedInt("-overlap", "The cell overlap for partitioning", "ex1.c", options->overlap, &options->overlap, NULL,0);CHKERRQ(ierr);
110c4762a1bSJed Brown   ierr = PetscOptionsBool("-test_p4est_seq", "Test p4est with sequential base DM", "ex1.c", options->testp4est[0], &options->testp4est[0], NULL);CHKERRQ(ierr);
111c4762a1bSJed Brown   ierr = PetscOptionsBool("-test_p4est_par", "Test p4est with parallel base DM", "ex1.c", options->testp4est[1], &options->testp4est[1], NULL);CHKERRQ(ierr);
112c4762a1bSJed Brown   ierr = PetscOptionsBool("-test_redistribute", "Test redistribution", "ex1.c", options->redistribute, &options->redistribute, NULL);CHKERRQ(ierr);
113c4762a1bSJed Brown   ierr = PetscOptionsBool("-final_ref", "Run uniform refinement on the final mesh", "ex1.c", options->final_ref, &options->final_ref, NULL);CHKERRQ(ierr);
114c4762a1bSJed Brown   ierr = PetscOptionsBool("-final_diagnostics", "Run diagnostics on the final mesh", "ex1.c", options->final_diagnostics, &options->final_diagnostics, NULL);CHKERRQ(ierr);
115c4762a1bSJed Brown   ierr = PetscOptionsEnd();
116c4762a1bSJed Brown 
117c4762a1bSJed Brown   ierr = PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent);CHKERRQ(ierr);
118c4762a1bSJed Brown   ierr = PetscLogStageRegister("MeshLoad",       &options->stages[STAGE_LOAD]);CHKERRQ(ierr);
119c4762a1bSJed Brown   ierr = PetscLogStageRegister("MeshDistribute", &options->stages[STAGE_DISTRIBUTE]);CHKERRQ(ierr);
120c4762a1bSJed Brown   ierr = PetscLogStageRegister("MeshRefine",     &options->stages[STAGE_REFINE]);CHKERRQ(ierr);
121c4762a1bSJed Brown   ierr = PetscLogStageRegister("MeshOverlap",    &options->stages[STAGE_OVERLAP]);CHKERRQ(ierr);
122c4762a1bSJed Brown   PetscFunctionReturn(0);
123c4762a1bSJed Brown }
124c4762a1bSJed Brown 
125c4762a1bSJed Brown PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm)
126c4762a1bSJed Brown {
127c4762a1bSJed Brown   PetscInt       dim                  = user->dim;
128c4762a1bSJed Brown   PetscBool      interpolate          = user->interpolate;
129c4762a1bSJed Brown   PetscReal      refinementLimit      = user->refinementLimit;
130c4762a1bSJed Brown   PetscBool      cellSimplex          = user->cellSimplex;
131c4762a1bSJed Brown   PetscBool      cellWedge            = user->cellWedge;
132c4762a1bSJed Brown   const char    *filename             = user->filename;
133c4762a1bSJed Brown   const char    *bdfilename           = user->bdfilename;
134c4762a1bSJed Brown   const char    *extfilename          = user->extfilename;
135c4762a1bSJed Brown   PetscBool      testp4est_seq        = user->testp4est[0];
136c4762a1bSJed Brown   PetscBool      testp4est_par        = user->testp4est[1];
137c4762a1bSJed Brown   PetscInt       triSizes_n2[2]       = {4, 4};
138c4762a1bSJed Brown   PetscInt       triPoints_n2[8]      = {3, 5, 6, 7, 0, 1, 2, 4};
139c4762a1bSJed Brown   PetscInt       triSizes_n8[8]       = {1, 1, 1, 1, 1, 1, 1, 1};
140c4762a1bSJed Brown   PetscInt       triPoints_n8[8]      = {0, 1, 2, 3, 4, 5, 6, 7};
141c4762a1bSJed Brown   PetscInt       quadSizes[2]         = {2, 2};
142c4762a1bSJed Brown   PetscInt       quadPoints[4]        = {2, 3, 0, 1};
143c4762a1bSJed Brown   PetscInt       gmshSizes_n3[3]      = {14, 14, 14};
144c4762a1bSJed Brown   PetscInt       gmshPoints_n3[42]    = {1, 2,  4,  5,  9, 10, 11, 15, 16, 20, 21, 27, 28, 29,
145c4762a1bSJed Brown                                          3, 8, 12, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
146c4762a1bSJed Brown                                          0, 6,  7, 13, 14, 17, 18, 19, 22, 23, 24, 25, 26, 41};
147c4762a1bSJed Brown   PetscInt       fluentSizes_n3[3]    = {50, 50, 50};
148c4762a1bSJed Brown   PetscInt       fluentPoints_n3[150] = { 5,  6,  7,  8, 12, 14, 16,  34,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  48,  50,  51,  80,  81,  89,
149c4762a1bSJed Brown                                          91, 93, 94, 95, 96, 97, 98,  99, 100, 101, 104, 121, 122, 124, 125, 126, 127, 128, 129, 131, 133, 143, 144, 145, 147,
150c4762a1bSJed Brown                                           1,  3,  4,  9, 10, 17, 18,  19,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  35,  47,  61,  71,  72,  73,  74,
151c4762a1bSJed Brown                                          75, 76, 77, 78, 79, 86, 87,  88,  90,  92, 113, 115, 116, 117, 118, 119, 120, 123, 138, 140, 141, 142, 146, 148, 149,
152c4762a1bSJed Brown                                           0,  2, 11, 13, 15, 20, 21,  22,  23,  49,  52,  53,  54,  55,  56,  57,  58,  59,  60,  62,  63,  64,  65,  66,  67,
153c4762a1bSJed Brown                                          68, 69, 70, 82, 83, 84, 85, 102, 103, 105, 106, 107, 108, 109, 110, 111, 112, 114, 130, 132, 134, 135, 136, 137, 139};
154c4762a1bSJed Brown   size_t         len, bdlen, extlen;
155c4762a1bSJed Brown   PetscMPIInt    rank, size;
156c4762a1bSJed Brown   PetscErrorCode ierr;
157c4762a1bSJed Brown 
158c4762a1bSJed Brown   PetscFunctionBegin;
159c4762a1bSJed Brown   ierr = PetscLogEventBegin(user->createMeshEvent,0,0,0,0);CHKERRQ(ierr);
160c4762a1bSJed Brown   ierr = MPI_Comm_rank(comm, &rank);CHKERRQ(ierr);
161c4762a1bSJed Brown   ierr = MPI_Comm_size(comm, &size);CHKERRQ(ierr);
162c4762a1bSJed Brown   ierr = PetscStrlen(filename, &len);CHKERRQ(ierr);
163c4762a1bSJed Brown   ierr = PetscStrlen(bdfilename, &bdlen);CHKERRQ(ierr);
164c4762a1bSJed Brown   ierr = PetscStrlen(extfilename, &extlen);CHKERRQ(ierr);
165c4762a1bSJed Brown   ierr = PetscLogStagePush(user->stages[STAGE_LOAD]);CHKERRQ(ierr);
166c4762a1bSJed Brown   if (len) {
167c4762a1bSJed Brown     ierr = DMPlexCreateFromFile(comm, filename, interpolate, dm);CHKERRQ(ierr);
168c4762a1bSJed Brown   } else if (bdlen) {
169c4762a1bSJed Brown     DM boundary;
170c4762a1bSJed Brown 
171c4762a1bSJed Brown     ierr = DMPlexCreateFromFile(comm, bdfilename, interpolate, &boundary);CHKERRQ(ierr);
172c4762a1bSJed Brown     ierr = DMPlexGenerate(boundary, NULL, interpolate, dm);CHKERRQ(ierr);
173c4762a1bSJed Brown     ierr = DMDestroy(&boundary);CHKERRQ(ierr);
174c4762a1bSJed Brown   } else if (extlen) {
175c4762a1bSJed Brown     DM edm;
176c4762a1bSJed Brown 
177c4762a1bSJed Brown     ierr = DMPlexCreateFromFile(comm, extfilename, interpolate, &edm);CHKERRQ(ierr);
17809c713e7SStefano Zampini     ierr = DMPlexExtrude(edm, user->extrude_layers, user->extrude_thickness, user->extrude_hfirst, interpolate, dm);CHKERRQ(ierr);
179c4762a1bSJed Brown     ierr = DMDestroy(&edm);CHKERRQ(ierr);
180c4762a1bSJed Brown   } else {
181c4762a1bSJed Brown     switch (user->domainShape) {
182c4762a1bSJed Brown     case BOX:
183c4762a1bSJed Brown       if (cellWedge) {
184c4762a1bSJed Brown         if (dim != 3) SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Dimension must be 3 for a wedge mesh, not %D", dim);
185c4762a1bSJed Brown         ierr = DMPlexCreateWedgeBoxMesh(comm, user->domainBoxSizes, user->domainBoxL, user->domainBoxU, user->periodicity, PETSC_FALSE, interpolate, dm);CHKERRQ(ierr);
186c4762a1bSJed Brown       } else {
187c4762a1bSJed Brown         ierr = DMPlexCreateBoxMesh(comm, dim, cellSimplex, user->domainBoxSizes, user->domainBoxL, user->domainBoxU, user->periodicity, interpolate, dm);CHKERRQ(ierr);
188c4762a1bSJed Brown       }
189c4762a1bSJed Brown       break;
190c4762a1bSJed Brown     case CYLINDER:
191c4762a1bSJed Brown       if (cellSimplex) SETERRQ(comm, PETSC_ERR_ARG_WRONG, "Cannot mesh a cylinder with simplices");
192c4762a1bSJed Brown       if (dim != 3)    SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Dimension must be 3 for a cylinder mesh, not %D", dim);
193c4762a1bSJed Brown       if (cellWedge) {
194c4762a1bSJed Brown         ierr = DMPlexCreateWedgeCylinderMesh(comm, 6, interpolate, dm);CHKERRQ(ierr);
195c4762a1bSJed Brown       } else {
19654fcfd0cSMatthew G. Knepley         ierr = DMPlexCreateHexCylinderMesh(comm, 1, user->periodicity[2], dm);CHKERRQ(ierr);
197c4762a1bSJed Brown       }
198c4762a1bSJed Brown       break;
199c4762a1bSJed Brown     case SPHERE:
200*0e278f6aSMatthew G. Knepley       ierr = DMPlexCreateSphereMesh(comm, dim, cellSimplex, 1.0, dm);CHKERRQ(ierr);
201c4762a1bSJed Brown       break;
202c4762a1bSJed Brown     case BALL:
203*0e278f6aSMatthew G. Knepley       ierr = DMPlexCreateBallMesh(comm, dim, 1.0, dm);CHKERRQ(ierr);
204c4762a1bSJed Brown       break;
205c4762a1bSJed Brown     default: SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Unknown domain shape %D", user->domainShape);
206c4762a1bSJed Brown     }
207c4762a1bSJed Brown   }
208595782ffSMatthew G. Knepley   if (!extlen && user->extrude_layers > 0) {
209595782ffSMatthew G. Knepley     DM edm;
210595782ffSMatthew G. Knepley 
21109c713e7SStefano Zampini     ierr = DMPlexExtrude(*dm, user->extrude_layers, user->extrude_thickness, user->extrude_hfirst, interpolate, &edm);CHKERRQ(ierr);
212595782ffSMatthew G. Knepley     ierr = DMDestroy(dm);CHKERRQ(ierr);
213595782ffSMatthew G. Knepley     *dm  = edm;
214595782ffSMatthew G. Knepley   }
215c4762a1bSJed Brown   ierr = DMLocalizeCoordinates(*dm);CHKERRQ(ierr); /* needed for periodic */
216c4762a1bSJed Brown   ierr = DMViewFromOptions(*dm,NULL,"-init_dm_view");CHKERRQ(ierr);
217c4762a1bSJed Brown   ierr = DMGetDimension(*dm,&dim);CHKERRQ(ierr);
218c4762a1bSJed Brown 
219c4762a1bSJed Brown   if (testp4est_seq) {
220c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST)
221c4762a1bSJed Brown     DM dmConv = NULL;
222c4762a1bSJed Brown 
22354fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr);
22454fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr);
22554fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr);
22654fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr);
22754fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckPointSF(*dm);CHKERRQ(ierr);
22854fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckInterfaceCones(*dm);CHKERRQ(ierr);
229c4762a1bSJed Brown     ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr);
23096ca5757SLisandro Dalcin     ierr = DMPlexSetCellRefinerType(*dm, DM_REFINER_TO_BOX);CHKERRQ(ierr);
23154fcfd0cSMatthew G. Knepley     ierr = DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);CHKERRQ(ierr);
232c4762a1bSJed Brown     if (dmConv) {
233c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
234c4762a1bSJed Brown       *dm  = dmConv;
235c4762a1bSJed Brown     }
23654fcfd0cSMatthew G. Knepley     ierr = DMViewFromOptions(*dm,NULL,"-initref_dm_view");CHKERRQ(ierr);
23754fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr);
23854fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr);
23954fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr);
24054fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr);
24154fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckPointSF(*dm);CHKERRQ(ierr);
24254fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckInterfaceCones(*dm);CHKERRQ(ierr);
243c4762a1bSJed Brown     user->cellSimplex = PETSC_FALSE;
244c4762a1bSJed Brown 
245c4762a1bSJed Brown     ierr = DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);CHKERRQ(ierr);
246c4762a1bSJed Brown     if (dmConv) {
247c4762a1bSJed Brown       ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_1_");CHKERRQ(ierr);
248c4762a1bSJed Brown       ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr);
249c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
250c4762a1bSJed Brown       *dm  = dmConv;
251c4762a1bSJed Brown     }
252c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_1_");CHKERRQ(ierr);
253c4762a1bSJed Brown     ierr = DMSetUp(*dm);CHKERRQ(ierr);
254c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
255c4762a1bSJed Brown     ierr = DMConvert(*dm,DMPLEX,&dmConv);CHKERRQ(ierr);
256c4762a1bSJed Brown     if (dmConv) {
257c4762a1bSJed Brown       ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_2_");CHKERRQ(ierr);
258c4762a1bSJed Brown       ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr);
259c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
260c4762a1bSJed Brown       *dm  = dmConv;
261c4762a1bSJed Brown     }
262c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_2_");CHKERRQ(ierr);
263c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
264c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr);
265c4762a1bSJed Brown #else
266c4762a1bSJed Brown     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
267c4762a1bSJed Brown #endif
268c4762a1bSJed Brown   }
269c4762a1bSJed Brown 
270c4762a1bSJed Brown   ierr = PetscLogStagePop();CHKERRQ(ierr);
271c4762a1bSJed Brown   if (!testp4est_seq) {
272c4762a1bSJed Brown     DM refinedMesh     = NULL;
273c4762a1bSJed Brown     DM distributedMesh = NULL;
274c4762a1bSJed Brown 
275c4762a1bSJed Brown     if (user->testPartition) {
276c4762a1bSJed Brown       const PetscInt  *sizes = NULL;
277c4762a1bSJed Brown       const PetscInt  *points = NULL;
278c4762a1bSJed Brown       PetscPartitioner part;
279c4762a1bSJed Brown 
280c4762a1bSJed Brown       if (!rank) {
281c4762a1bSJed Brown         if (dim == 2 && cellSimplex && size == 2) {
282c4762a1bSJed Brown            sizes = triSizes_n2; points = triPoints_n2;
283c4762a1bSJed Brown         } else if (dim == 2 && cellSimplex && size == 8) {
284c4762a1bSJed Brown           sizes = triSizes_n8; points = triPoints_n8;
285c4762a1bSJed Brown         } else if (dim == 2 && !cellSimplex && size == 2) {
286c4762a1bSJed Brown           sizes = quadSizes; points = quadPoints;
287c4762a1bSJed Brown         } else if (dim == 2 && size == 3) {
288c4762a1bSJed Brown           PetscInt Nc;
289c4762a1bSJed Brown 
290c4762a1bSJed Brown           ierr = DMPlexGetHeightStratum(*dm, 0, NULL, &Nc);CHKERRQ(ierr);
291c4762a1bSJed Brown           if (Nc == 42) { /* Gmsh 3 & 4 */
292c4762a1bSJed Brown             sizes = gmshSizes_n3; points = gmshPoints_n3;
293c4762a1bSJed Brown           } else if (Nc == 150) { /* Fluent 1 */
294c4762a1bSJed Brown             sizes = fluentSizes_n3; points = fluentPoints_n3;
295c4762a1bSJed Brown           } else if (Nc == 42) { /* Med 1 */
296c4762a1bSJed Brown           } else if (Nc == 161) { /* Med 3 */
297c4762a1bSJed Brown           }
298c4762a1bSJed Brown         }
299c4762a1bSJed Brown       }
300c4762a1bSJed Brown       ierr = DMPlexGetPartitioner(*dm, &part);CHKERRQ(ierr);
301c4762a1bSJed Brown       ierr = PetscPartitionerSetType(part, PETSCPARTITIONERSHELL);CHKERRQ(ierr);
302c4762a1bSJed Brown       ierr = PetscPartitionerShellSetPartition(part, size, sizes, points);CHKERRQ(ierr);
303c4762a1bSJed Brown     } else {
304c4762a1bSJed Brown       PetscPartitioner part;
305c4762a1bSJed Brown 
306c4762a1bSJed Brown       ierr = DMPlexGetPartitioner(*dm,&part);CHKERRQ(ierr);
307c4762a1bSJed Brown       ierr = PetscPartitionerSetFromOptions(part);CHKERRQ(ierr);
308c4762a1bSJed Brown     }
309c4762a1bSJed Brown     /* Distribute mesh over processes */
310c4762a1bSJed Brown     ierr = PetscLogStagePush(user->stages[STAGE_DISTRIBUTE]);CHKERRQ(ierr);
311c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_dist_view");CHKERRQ(ierr);
312c4762a1bSJed Brown     ierr = DMPlexDistribute(*dm, 0, NULL, &distributedMesh);CHKERRQ(ierr);
313c4762a1bSJed Brown     if (distributedMesh) {
314c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
315c4762a1bSJed Brown       *dm  = distributedMesh;
316c4762a1bSJed Brown     }
317c4762a1bSJed Brown     ierr = PetscLogStagePop();CHKERRQ(ierr);
318c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-distributed_dm_view");CHKERRQ(ierr);
319c4762a1bSJed Brown     /* Refine mesh using a volume constraint */
320c4762a1bSJed Brown     ierr = PetscLogStagePush(user->stages[STAGE_REFINE]);CHKERRQ(ierr);
321c4762a1bSJed Brown     ierr = DMPlexSetRefinementUniform(*dm, PETSC_FALSE);CHKERRQ(ierr);
322c4762a1bSJed Brown     ierr = DMPlexSetRefinementLimit(*dm, refinementLimit);CHKERRQ(ierr);
323c4762a1bSJed Brown     ierr = DMRefine(*dm, comm, &refinedMesh);CHKERRQ(ierr);
324c4762a1bSJed Brown     if (refinedMesh) {
325c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
326c4762a1bSJed Brown       *dm  = refinedMesh;
327c4762a1bSJed Brown     }
328c4762a1bSJed Brown     ierr = PetscLogStagePop();CHKERRQ(ierr);
329c4762a1bSJed Brown   }
330c4762a1bSJed Brown   ierr = PetscLogStagePush(user->stages[STAGE_REFINE]);CHKERRQ(ierr);
331c4762a1bSJed Brown   ierr = DMSetFromOptions(*dm);CHKERRQ(ierr);
332c4762a1bSJed Brown   ierr = PetscLogStagePop();CHKERRQ(ierr);
333c4762a1bSJed Brown 
334c4762a1bSJed Brown   if (testp4est_par) {
335c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST)
336c4762a1bSJed Brown     DM dmConv = NULL;
337c4762a1bSJed Brown 
33896ca5757SLisandro Dalcin     ierr = DMViewFromOptions(*dm, NULL, "-dm_tobox_view");CHKERRQ(ierr);
339c4762a1bSJed Brown     ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr);
34096ca5757SLisandro Dalcin     ierr = DMPlexSetCellRefinerType(*dm, DM_REFINER_TO_BOX);CHKERRQ(ierr);
34154fcfd0cSMatthew G. Knepley     ierr = DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);CHKERRQ(ierr);
342c4762a1bSJed Brown     if (dmConv) {
343c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
344c4762a1bSJed Brown       *dm  = dmConv;
345c4762a1bSJed Brown     }
346c4762a1bSJed Brown     user->cellSimplex = PETSC_FALSE;
34796ca5757SLisandro Dalcin     ierr = DMViewFromOptions(*dm, NULL, "-dm_tobox_view");CHKERRQ(ierr);
34854fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr);
34954fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr);
35054fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr);
35154fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr);
35254fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckPointSF(*dm);CHKERRQ(ierr);
35354fcfd0cSMatthew G. Knepley     ierr = DMPlexCheckInterfaceCones(*dm);CHKERRQ(ierr);
354c4762a1bSJed Brown 
355c4762a1bSJed Brown     ierr = DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);CHKERRQ(ierr);
356c4762a1bSJed Brown     if (dmConv) {
357c4762a1bSJed Brown       ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_1_");CHKERRQ(ierr);
358c4762a1bSJed Brown       ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr);
359c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
360c4762a1bSJed Brown       *dm  = dmConv;
361c4762a1bSJed Brown     }
362c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_1_");CHKERRQ(ierr);
363c4762a1bSJed Brown     ierr = DMSetUp(*dm);CHKERRQ(ierr);
364c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
365c4762a1bSJed Brown     ierr = DMConvert(*dm, DMPLEX, &dmConv);CHKERRQ(ierr);
366c4762a1bSJed Brown     if (dmConv) {
367c4762a1bSJed Brown       ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_2_");CHKERRQ(ierr);
368c4762a1bSJed Brown       ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr);
369c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
370c4762a1bSJed Brown       *dm  = dmConv;
371c4762a1bSJed Brown     }
372c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_2_");CHKERRQ(ierr);
373c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
374c4762a1bSJed Brown     ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr);
375c4762a1bSJed Brown #else
376c4762a1bSJed Brown     SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est");
377c4762a1bSJed Brown #endif
378c4762a1bSJed Brown   }
379c4762a1bSJed Brown 
380c4762a1bSJed Brown   /* test redistribution of an already distributed mesh */
381c4762a1bSJed Brown   if (user->redistribute) {
382c4762a1bSJed Brown     DM       distributedMesh;
3830a19bb7dSprj-     PetscSF  sf;
3840a19bb7dSprj-     PetscInt nranks;
385c4762a1bSJed Brown 
386c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view");CHKERRQ(ierr);
387c4762a1bSJed Brown     ierr = DMPlexDistribute(*dm, 0, NULL, &distributedMesh);CHKERRQ(ierr);
388c4762a1bSJed Brown     if (distributedMesh) {
3890a19bb7dSprj-       ierr = DMGetPointSF(distributedMesh, &sf);CHKERRQ(ierr);
3900a19bb7dSprj-       ierr = PetscSFSetUp(sf);CHKERRQ(ierr);
3910a19bb7dSprj-       ierr = DMGetNeighbors(distributedMesh, &nranks, NULL);CHKERRQ(ierr);
3920a19bb7dSprj-       ierr = MPI_Allreduce(MPI_IN_PLACE, &nranks, 1, MPIU_INT, MPI_MIN, PetscObjectComm((PetscObject)*dm));CHKERRQ(ierr);
3930a19bb7dSprj-       ierr = PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)*dm)), "Minimum number of neighbors: %D\n", nranks);CHKERRQ(ierr);
394c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
395c4762a1bSJed Brown       *dm  = distributedMesh;
396c4762a1bSJed Brown     }
397c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_post_redist_view");CHKERRQ(ierr);
398c4762a1bSJed Brown   }
399c4762a1bSJed Brown 
400c4762a1bSJed Brown   if (user->overlap) {
401c4762a1bSJed Brown     DM overlapMesh = NULL;
402c4762a1bSJed Brown 
403c4762a1bSJed Brown     /* Add the overlap to refined mesh */
404c4762a1bSJed Brown     ierr = PetscLogStagePush(user->stages[STAGE_OVERLAP]);CHKERRQ(ierr);
405c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view");CHKERRQ(ierr);
406c4762a1bSJed Brown     ierr = DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh);CHKERRQ(ierr);
407c4762a1bSJed Brown     if (overlapMesh) {
408c4762a1bSJed Brown       PetscInt overlap;
409c4762a1bSJed Brown       ierr = DMPlexGetOverlap(overlapMesh, &overlap);CHKERRQ(ierr);
410c4762a1bSJed Brown       ierr = PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %D\n", overlap);CHKERRQ(ierr);
411c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
412c4762a1bSJed Brown       *dm = overlapMesh;
413c4762a1bSJed Brown     }
414c4762a1bSJed Brown     ierr = DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view");CHKERRQ(ierr);
415c4762a1bSJed Brown     ierr = PetscLogStagePop();CHKERRQ(ierr);
416c4762a1bSJed Brown   }
417c4762a1bSJed Brown   if (user->final_ref) {
418c4762a1bSJed Brown     DM refinedMesh = NULL;
419c4762a1bSJed Brown 
420c4762a1bSJed Brown     ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr);
421c4762a1bSJed Brown     ierr = DMRefine(*dm, comm, &refinedMesh);CHKERRQ(ierr);
422c4762a1bSJed Brown     if (refinedMesh) {
423c4762a1bSJed Brown       ierr = DMDestroy(dm);CHKERRQ(ierr);
424c4762a1bSJed Brown       *dm  = refinedMesh;
425c4762a1bSJed Brown     }
426c4762a1bSJed Brown   }
427c4762a1bSJed Brown 
428c4762a1bSJed Brown   ierr = PetscObjectSetName((PetscObject) *dm, "Simplicial Mesh");CHKERRQ(ierr);
429c4762a1bSJed Brown   ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr);
430c4762a1bSJed Brown   if (user->final_diagnostics) {
431c4762a1bSJed Brown     DMPlexInterpolatedFlag interpolated;
432c4762a1bSJed Brown     PetscInt  dim, depth;
433c4762a1bSJed Brown 
434c4762a1bSJed Brown     ierr = DMGetDimension(*dm, &dim);CHKERRQ(ierr);
435c4762a1bSJed Brown     ierr = DMPlexGetDepth(*dm, &depth);CHKERRQ(ierr);
436c4762a1bSJed Brown     ierr = DMPlexIsInterpolatedCollective(*dm, &interpolated);CHKERRQ(ierr);
437c4762a1bSJed Brown 
438c4762a1bSJed Brown     ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr);
439c4762a1bSJed Brown     if (interpolated == DMPLEX_INTERPOLATED_FULL) {
440c4762a1bSJed Brown       ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr);
441c4762a1bSJed Brown     }
442c4762a1bSJed Brown     ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr);
443c4762a1bSJed Brown     ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr);
444c4762a1bSJed Brown   }
445c4762a1bSJed Brown   ierr = PetscLogEventEnd(user->createMeshEvent,0,0,0,0);CHKERRQ(ierr);
446c4762a1bSJed Brown   user->dm = *dm;
447c4762a1bSJed Brown   PetscFunctionReturn(0);
448c4762a1bSJed Brown }
449c4762a1bSJed Brown 
450c4762a1bSJed Brown int main(int argc, char **argv)
451c4762a1bSJed Brown {
452c4762a1bSJed Brown   AppCtx         user;                 /* user-defined work context */
453c4762a1bSJed Brown   PetscErrorCode ierr;
454c4762a1bSJed Brown 
455c4762a1bSJed Brown   ierr = PetscInitialize(&argc, &argv, NULL, help);if (ierr) return ierr;
456c4762a1bSJed Brown   ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr);
457c4762a1bSJed Brown   ierr = CreateMesh(PETSC_COMM_WORLD, &user, &user.dm);CHKERRQ(ierr);
458c4762a1bSJed Brown   ierr = DMDestroy(&user.dm);CHKERRQ(ierr);
459c4762a1bSJed Brown   ierr = PetscFinalize();
460c4762a1bSJed Brown   return ierr;
461c4762a1bSJed Brown }
462c4762a1bSJed Brown 
463c4762a1bSJed Brown /*TEST
464c4762a1bSJed Brown 
465c4762a1bSJed Brown   # CTetGen 0-1
466c4762a1bSJed Brown   test:
467c4762a1bSJed Brown     suffix: 0
468c4762a1bSJed Brown     requires: ctetgen
469c20d7725SJed Brown     args: -dim 3 -ctetgen_verbose 4 -dm_view ascii::ascii_info_detail -info :~sys
470c4762a1bSJed Brown   test:
471c4762a1bSJed Brown     suffix: 1
472c4762a1bSJed Brown     requires: ctetgen
473c20d7725SJed Brown     args: -dim 3 -ctetgen_verbose 4 -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail -info :~sys
474c20d7725SJed Brown 
475c4762a1bSJed Brown 
476c4762a1bSJed Brown   # 2D LaTex and ASCII output 2-9
477c4762a1bSJed Brown   test:
478c4762a1bSJed Brown     suffix: 2
479c4762a1bSJed Brown     requires: triangle
480c4762a1bSJed Brown     args: -dim 2 -dm_view ascii::ascii_latex
481c4762a1bSJed Brown   test:
482c4762a1bSJed Brown     suffix: 3
483c4762a1bSJed Brown     requires: triangle
484c4762a1bSJed Brown     args: -dim 2 -dm_refine 1 -interpolate 1 -dm_view ascii::ascii_info_detail
485c4762a1bSJed Brown   test:
486c4762a1bSJed Brown     suffix: 4
487c4762a1bSJed Brown     requires: triangle
488c4762a1bSJed Brown     nsize: 2
489c4762a1bSJed Brown     args: -dim 2 -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_info_detail
490c4762a1bSJed Brown   test:
491c4762a1bSJed Brown     suffix: 5
492c4762a1bSJed Brown     requires: triangle
493c4762a1bSJed Brown     nsize: 2
494c4762a1bSJed Brown     args: -dim 2 -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_latex
495c4762a1bSJed Brown   test:
496c4762a1bSJed Brown     suffix: 6
497c4762a1bSJed Brown     args: -dim 2 -cell_simplex 0 -interpolate -dm_view ascii::ascii_info_detail
498c4762a1bSJed Brown   test:
499c4762a1bSJed Brown     suffix: 7
500c4762a1bSJed Brown     args: -dim 2 -cell_simplex 0 -interpolate -dm_refine 1 -dm_view ascii::ascii_info_detail
501c4762a1bSJed Brown   test:
502c4762a1bSJed Brown     suffix: 8
503c4762a1bSJed Brown     nsize: 2
504c4762a1bSJed Brown     args: -dim 2 -cell_simplex 0 -interpolate -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_latex
505c4762a1bSJed Brown 
506c4762a1bSJed Brown   # 1D ASCII output
507c4762a1bSJed Brown   test:
508c4762a1bSJed Brown     suffix: 1d_0
509c4762a1bSJed Brown     args: -dim 1 -domain_shape box -dm_view ascii::ascii_info_detail
510c4762a1bSJed Brown   test:
511c4762a1bSJed Brown     suffix: 1d_1
512c4762a1bSJed Brown     args: -dim 1 -domain_shape box -dm_refine 2 -dm_view ascii::ascii_info_detail
513c4762a1bSJed Brown   test:
514c4762a1bSJed Brown     suffix: 1d_2
51554fcfd0cSMatthew G. Knepley     args: -dim 1 -domain_box_sizes 5 -x_periodicity periodic -dm_view ascii::ascii_info_detail -dm_plex_check_all
516c4762a1bSJed Brown 
517c4762a1bSJed Brown   # Parallel refinement tests with overlap
518c4762a1bSJed Brown   test:
519c4762a1bSJed Brown     suffix: refine_overlap_1d
520c4762a1bSJed Brown     nsize: 2
521c4762a1bSJed Brown     args: -dim 1 -domain_box_sizes 4 -dm_refine 1 -overlap {{0 1 2}separate output} -petscpartitioner_type simple -dm_view ascii::ascii_info
522c4762a1bSJed Brown   test:
523c4762a1bSJed Brown     suffix: refine_overlap_2d
524c4762a1bSJed Brown     requires: triangle
525c4762a1bSJed Brown     nsize: {{2 8}separate output}
526c4762a1bSJed Brown     args: -dim 2 -cell_simplex 1 -dm_refine 1 -interpolate 1 -test_partition -overlap {{0 1 2}separate output} -dm_view ascii::ascii_info
527c4762a1bSJed Brown 
528c4762a1bSJed Brown   # Parallel simple partitioner tests
529c4762a1bSJed Brown   test:
530c4762a1bSJed Brown     suffix: part_simple_0
531c4762a1bSJed Brown     requires: triangle
532c4762a1bSJed Brown     nsize: 2
533c4762a1bSJed Brown     args: -dim 2 -cell_simplex 1 -dm_refine 0 -interpolate 0 -petscpartitioner_type simple -partition_view -dm_view ascii::ascii_info_detail
534c4762a1bSJed Brown   test:
535c4762a1bSJed Brown     suffix: part_simple_1
536c4762a1bSJed Brown     requires: triangle
537c4762a1bSJed Brown     nsize: 8
538c4762a1bSJed Brown     args: -dim 2 -cell_simplex 1 -dm_refine 1 -interpolate 1 -petscpartitioner_type simple -partition_view -dm_view ascii::ascii_info_detail
539c4762a1bSJed Brown 
540c4762a1bSJed Brown   # Parallel partitioner tests
541c4762a1bSJed Brown   test:
542c4762a1bSJed Brown     suffix: part_parmetis_0
543c4762a1bSJed Brown     requires: parmetis
544c4762a1bSJed Brown     nsize: 2
545c4762a1bSJed Brown     args: -dim 2 -cell_simplex 0 -dm_refine 1 -interpolate 1 -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
546c4762a1bSJed Brown   test:
547c4762a1bSJed Brown     suffix: part_ptscotch_0
548c4762a1bSJed Brown     requires: ptscotch
549c4762a1bSJed Brown     nsize: 2
550c4762a1bSJed Brown     args: -dim 2 -cell_simplex 0 -dm_refine 0 -interpolate 1 -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
551c4762a1bSJed Brown   test:
552c4762a1bSJed Brown     suffix: part_ptscotch_1
553c4762a1bSJed Brown     requires: ptscotch
554c4762a1bSJed Brown     nsize: 8
555c4762a1bSJed Brown     args: -dim 2 -cell_simplex 0 -dm_refine 1 -interpolate 1 -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1
556c4762a1bSJed Brown 
557c4762a1bSJed Brown   # CGNS reader tests 10-11 (need to find smaller test meshes)
558c4762a1bSJed Brown   test:
559c4762a1bSJed Brown     suffix: cgns_0
560c4762a1bSJed Brown     requires: cgns
561c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -interpolate 1 -dm_view
562c4762a1bSJed Brown 
563c4762a1bSJed Brown   # Gmsh mesh reader tests
564c4762a1bSJed Brown   test:
565c4762a1bSJed Brown     suffix: gmsh_0
566c4762a1bSJed Brown     requires: !single
567c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -interpolate 1 -dm_view
568c4762a1bSJed Brown   test:
569c4762a1bSJed Brown     suffix: gmsh_1
570c4762a1bSJed Brown     requires: !single
571c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -interpolate 1 -dm_view
572c4762a1bSJed Brown   test:
573c4762a1bSJed Brown     suffix: gmsh_2
574c4762a1bSJed Brown     requires: !single
575c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -interpolate 1 -dm_view
576c4762a1bSJed Brown   test:
577c4762a1bSJed Brown     suffix: gmsh_3
578c4762a1bSJed Brown     nsize: 3
579c4762a1bSJed Brown     requires: !single
580c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -test_partition -interpolate 1 -dm_view
581c4762a1bSJed Brown   test:
582c4762a1bSJed Brown     suffix: gmsh_4
583c4762a1bSJed Brown     nsize: 3
584c4762a1bSJed Brown     requires: !single
585c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -test_partition -interpolate 1 -dm_view
586c4762a1bSJed Brown   test:
587c4762a1bSJed Brown     suffix: gmsh_5
588c4762a1bSJed Brown     requires: !single
589c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh -interpolate 1 -dm_view
590c4762a1bSJed Brown   # TODO: it seems the mesh is not a valid gmsh (inverted cell)
591c4762a1bSJed Brown   test:
592c4762a1bSJed Brown     suffix: gmsh_6
593c4762a1bSJed Brown     requires: !single
594c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -interpolate 1 -dm_view -final_diagnostics 0
595c4762a1bSJed Brown   test:
596c4762a1bSJed Brown     suffix: gmsh_7
59754fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all
598c4762a1bSJed Brown   test:
599c4762a1bSJed Brown     suffix: gmsh_8
60054fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all
601c4762a1bSJed Brown   testset:
60254fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic_bin.msh -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all
603c4762a1bSJed Brown     test:
604c4762a1bSJed Brown       suffix: gmsh_9
605c4762a1bSJed Brown     test:
606c4762a1bSJed Brown       suffix: gmsh_9_periodic_0
607c4762a1bSJed Brown       args: -dm_plex_gmsh_periodic 0
608c4762a1bSJed Brown   testset:
60954fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all
610c4762a1bSJed Brown     test:
611c4762a1bSJed Brown       suffix: gmsh_10
612c4762a1bSJed Brown     test:
613c4762a1bSJed Brown       suffix: gmsh_10_periodic_0
614c4762a1bSJed Brown       args: -dm_plex_gmsh_periodic 0
615c4762a1bSJed Brown   testset:
61654fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all -dm_refine 1
617c4762a1bSJed Brown     test:
618c4762a1bSJed Brown       suffix: gmsh_11
619c4762a1bSJed Brown     test:
620c4762a1bSJed Brown       suffix: gmsh_11_periodic_0
621c4762a1bSJed Brown       args: -dm_plex_gmsh_periodic 0
622c4762a1bSJed Brown   # TODO: it seems the mesh is not a valid gmsh (inverted cell)
623c4762a1bSJed Brown   test:
624c4762a1bSJed Brown     suffix: gmsh_12
625c4762a1bSJed Brown     nsize: 4
626c4762a1bSJed Brown     requires: !single mpiio
627c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -viewer_binary_mpiio -petscpartitioner_type simple -interpolate 1 -dm_view -final_diagnostics 0
628c4762a1bSJed Brown   test:
629c4762a1bSJed Brown     suffix: gmsh_13_hybs2t
630c4762a1bSJed Brown     nsize: 4
63196ca5757SLisandro Dalcin     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -petscpartitioner_type simple -interpolate 1 -dm_view -dm_refine 1 -dm_plex_cell_refiner tobox -dm_plex_check_all
632c4762a1bSJed Brown   test:
633c4762a1bSJed Brown     suffix: gmsh_14_ext
634c4762a1bSJed Brown     requires: !single
63554fcfd0cSMatthew G. Knepley     args: -ext_layers 2 -ext_thickness 1.5 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -interpolate -dm_plex_check_all
636c4762a1bSJed Brown   test:
637c4762a1bSJed Brown     suffix: gmsh_14_ext_s2t
638c4762a1bSJed Brown     requires: !single
63996ca5757SLisandro Dalcin     args: -ext_layers 2 -ext_thickness 1.5 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -interpolate -dm_plex_check_all -dm_refine 1 -dm_plex_cell_refiner tobox
640c4762a1bSJed Brown   test:
641c4762a1bSJed Brown     suffix: gmsh_15_hyb3d
64254fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -interpolate -dm_plex_check_all
643c4762a1bSJed Brown   test:
644c4762a1bSJed Brown     suffix: gmsh_15_hyb3d_vtk
64554fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view vtk: -interpolate -dm_plex_gmsh_hybrid -dm_plex_check_all
646c4762a1bSJed Brown   test:
647c4762a1bSJed Brown     suffix: gmsh_15_hyb3d_s2t
64896ca5757SLisandro Dalcin     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -interpolate -dm_plex_check_all -dm_refine 1 -dm_plex_cell_refiner tobox
649c4762a1bSJed Brown   test:
650c4762a1bSJed Brown     suffix: gmsh_16_spheresurface
651c4762a1bSJed Brown     nsize : 4
65254fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_all -dm_view -interpolate -petscpartitioner_type simple
653c4762a1bSJed Brown   test:
654c4762a1bSJed Brown     suffix: gmsh_16_spheresurface_s2t
655c4762a1bSJed Brown     nsize : 4
65696ca5757SLisandro Dalcin     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_refine 1 -dm_plex_cell_refiner tobox -dm_plex_check_all -dm_view -interpolate -petscpartitioner_type simple
657c4762a1bSJed Brown   test:
658c4762a1bSJed Brown     suffix: gmsh_16_spheresurface_extruded
659c4762a1bSJed Brown     nsize : 4
66054fcfd0cSMatthew G. Knepley     args: -ext_layers 3 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_all -dm_view -interpolate -petscpartitioner_type simple
661c4762a1bSJed Brown   test:
662c4762a1bSJed Brown     suffix: gmsh_16_spheresurface_extruded_s2t
663c4762a1bSJed Brown     nsize : 4
66496ca5757SLisandro Dalcin     args: -ext_layers 3 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_refine 1 -dm_plex_cell_refiner tobox -dm_plex_check_all -dm_view -interpolate -petscpartitioner_type simple
665c4762a1bSJed Brown   test:
666c4762a1bSJed Brown     suffix: gmsh_17_hyb3d_interp_ascii
66754fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -interpolate -dm_plex_check_all
668c4762a1bSJed Brown   test:
669c4762a1bSJed Brown     suffix: exodus_17_hyb3d_interp_ascii
670c4762a1bSJed Brown     requires: exodusii
67154fcfd0cSMatthew G. Knepley     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -interpolate -dm_plex_check_all
672c4762a1bSJed Brown 
673c4762a1bSJed Brown   # Legacy Gmsh v22/v40 ascii/binary reader tests
674c4762a1bSJed Brown   testset:
675c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_legacy.out
67654fcfd0cSMatthew G. Knepley     args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all
677c4762a1bSJed Brown     test:
678c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v22
679c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2
680c4762a1bSJed Brown     test:
681c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v40
682c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4
683c4762a1bSJed Brown     test:
684c4762a1bSJed Brown       suffix: gmsh_3d_binary_v22
685c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2
686c4762a1bSJed Brown     test:
687c4762a1bSJed Brown       suffix: gmsh_3d_binary_v40
688c4762a1bSJed Brown       requires: long64
689c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4
690c4762a1bSJed Brown 
691c4762a1bSJed Brown   # Gmsh v41 ascii/binary reader tests
692c4762a1bSJed Brown   testset: # 32bit mesh, sequential
69354fcfd0cSMatthew G. Knepley     args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all
694c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_32.out
695c4762a1bSJed Brown     test:
696c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_32
697c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
698c4762a1bSJed Brown     test:
699c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32
700c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
701c4762a1bSJed Brown     test:
702c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32_mpiio
703c4762a1bSJed Brown       requires: define(PETSC_HAVE_MPIIO)
704c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
705c4762a1bSJed Brown   testset:  # 32bit mesh, parallel
70654fcfd0cSMatthew G. Knepley     args:  -petscpartitioner_type simple -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all
707c4762a1bSJed Brown     nsize: 2
708c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_32_np2.out
709c4762a1bSJed Brown     test:
710c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_32_np2
711c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh
712c4762a1bSJed Brown     test:
713c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32_np2
714c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh
715c4762a1bSJed Brown     test:
716c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_32_np2_mpiio
717c4762a1bSJed Brown       requires: define(PETSC_HAVE_MPIIO)
718c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio
719c4762a1bSJed Brown   testset: # 64bit mesh, sequential
72054fcfd0cSMatthew G. Knepley     args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all
721c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_64.out
722c4762a1bSJed Brown     test:
723c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_64
724c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
725c4762a1bSJed Brown     test:
726c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64
727c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
728c4762a1bSJed Brown     test:
729c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64_mpiio
730c4762a1bSJed Brown       requires: define(PETSC_HAVE_MPIIO)
731c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
732c4762a1bSJed Brown   testset:  # 64bit mesh, parallel
73354fcfd0cSMatthew G. Knepley     args:  -petscpartitioner_type simple -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all
734c4762a1bSJed Brown     nsize: 2
735c4762a1bSJed Brown     output_file: output/ex1_gmsh_3d_64_np2.out
736c4762a1bSJed Brown     test:
737c4762a1bSJed Brown       suffix: gmsh_3d_ascii_v41_64_np2
738c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh
739c4762a1bSJed Brown     test:
740c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64_np2
741c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh
742c4762a1bSJed Brown     test:
743c4762a1bSJed Brown       suffix: gmsh_3d_binary_v41_64_np2_mpiio
744c4762a1bSJed Brown       requires: define(PETSC_HAVE_MPIIO)
745c4762a1bSJed Brown       args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio
746c4762a1bSJed Brown 
747c4762a1bSJed Brown   # Fluent mesh reader tests
748c4762a1bSJed Brown   # TODO: Geometry checks fail
749c4762a1bSJed Brown   test:
750c4762a1bSJed Brown     suffix: fluent_0
751c4762a1bSJed Brown     requires: !complex
752c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -interpolate 1 -dm_view -final_diagnostics 0
753c4762a1bSJed Brown   test:
754c4762a1bSJed Brown     suffix: fluent_1
755c4762a1bSJed Brown     nsize: 3
756c4762a1bSJed Brown     requires: !complex
757c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -interpolate 1 -test_partition -dm_view -final_diagnostics 0
758c4762a1bSJed Brown   test:
759c4762a1bSJed Brown     suffix: fluent_2
760c4762a1bSJed Brown     requires: !complex
761c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -interpolate 1 -dm_view -final_diagnostics 0
762c4762a1bSJed Brown   test:
763c4762a1bSJed Brown     suffix: fluent_3
764c4762a1bSJed Brown     requires: !complex
765c4762a1bSJed Brown     TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382
766c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -interpolate 1 -dm_view -final_diagnostics 0
767c4762a1bSJed Brown 
768c4762a1bSJed Brown   # Med mesh reader tests, including parallel file reads
769c4762a1bSJed Brown   test:
770c4762a1bSJed Brown     suffix: med_0
771c4762a1bSJed Brown     requires: med
772c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -interpolate 1 -dm_view
773c4762a1bSJed Brown   test:
774c4762a1bSJed Brown     suffix: med_1
775c4762a1bSJed Brown     requires: med
776c4762a1bSJed Brown     nsize: 3
777c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -interpolate 1 -petscpartitioner_type simple -dm_view
778c4762a1bSJed Brown   test:
779c4762a1bSJed Brown     suffix: med_2
780c4762a1bSJed Brown     requires: med
781c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -interpolate 1 -dm_view
782c4762a1bSJed Brown   test:
783c4762a1bSJed Brown     suffix: med_3
784c4762a1bSJed Brown     requires: med
785c4762a1bSJed Brown     TODO: MED
786c4762a1bSJed Brown     nsize: 3
787c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -interpolate 1 -petscpartitioner_type simple -dm_view
788c4762a1bSJed Brown 
789c4762a1bSJed Brown   # Test shape quality
790c4762a1bSJed Brown   test:
791c4762a1bSJed Brown     suffix: test_shape
792c4762a1bSJed Brown     requires: ctetgen
79354fcfd0cSMatthew G. Knepley     args: -dim 3 -interpolate -dm_refine_hierarchy 3 -dm_plex_check_all -dm_plex_check_cell_shape
794c4762a1bSJed Brown 
795c4762a1bSJed Brown   # Test simplex to tensor conversion
796c4762a1bSJed Brown   test:
797c4762a1bSJed Brown     suffix: s2t2
798c4762a1bSJed Brown     requires: triangle
79996ca5757SLisandro Dalcin     args: -dim 2 -dm_refine 1 -interpolate -dm_plex_cell_refiner tobox -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail
800c4762a1bSJed Brown 
801c4762a1bSJed Brown   test:
802c4762a1bSJed Brown     suffix: s2t3
803c4762a1bSJed Brown     requires: ctetgen
80496ca5757SLisandro Dalcin     args: -dim 3 -dm_refine 1 -interpolate -dm_plex_cell_refiner tobox -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail
805c4762a1bSJed Brown 
806c4762a1bSJed Brown   # Test domain shapes
807c4762a1bSJed Brown   test:
808c4762a1bSJed Brown     suffix: cylinder
80954fcfd0cSMatthew G. Knepley     args: -dim 3 -cell_simplex 0 -interpolate -domain_shape cylinder -dm_plex_check_all -dm_view
810c4762a1bSJed Brown 
811c4762a1bSJed Brown   test:
812c4762a1bSJed Brown     suffix: cylinder_per
81354fcfd0cSMatthew G. Knepley     args: -dim 3 -cell_simplex 0 -interpolate -domain_shape cylinder -z_periodicity periodic -dm_plex_check_all -dm_view
814c4762a1bSJed Brown 
815c4762a1bSJed Brown   test:
816c4762a1bSJed Brown     suffix: cylinder_wedge
81754fcfd0cSMatthew G. Knepley     args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape cylinder -dm_view vtk: -dm_plex_check_all
818c4762a1bSJed Brown 
819c4762a1bSJed Brown   test:
820c4762a1bSJed Brown     suffix: cylinder_wedge_int
821c4762a1bSJed Brown     output_file: output/ex1_cylinder_wedge.out
82254fcfd0cSMatthew G. Knepley     args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape cylinder -dm_view vtk: -dm_plex_check_all
823c4762a1bSJed Brown 
824c4762a1bSJed Brown   test:
825c4762a1bSJed Brown     suffix: box_2d
82654fcfd0cSMatthew G. Knepley     args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 2 -dm_plex_check_all -dm_view
827c4762a1bSJed Brown 
828c4762a1bSJed Brown   test:
829c4762a1bSJed Brown     suffix: box_2d_per
83054fcfd0cSMatthew G. Knepley     args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 2 -dm_plex_check_all -dm_view
831c4762a1bSJed Brown 
832c4762a1bSJed Brown   test:
833c4762a1bSJed Brown     suffix: box_2d_per_unint
83454fcfd0cSMatthew G. Knepley     args: -dim 2 -cell_simplex 0 -interpolate 0 -domain_shape box -domain_box_sizes 3,3 -dm_plex_check_all -dm_view ::ascii_info_detail
835c4762a1bSJed Brown 
836c4762a1bSJed Brown   test:
837c4762a1bSJed Brown     suffix: box_3d
83854fcfd0cSMatthew G. Knepley     args: -dim 3 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 3 -dm_plex_check_all -dm_view
839c4762a1bSJed Brown 
840c4762a1bSJed Brown   test:
841c4762a1bSJed Brown     requires: triangle
842c4762a1bSJed Brown     suffix: box_wedge
84354fcfd0cSMatthew G. Knepley     args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape box -dm_view vtk: -dm_plex_check_all
844c4762a1bSJed Brown 
845c4762a1bSJed Brown   testset:
846c4762a1bSJed Brown     requires: triangle
84796ca5757SLisandro Dalcin     args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape box -domain_box_sizes 2,3,1 -dm_view -dm_plex_check_all -dm_refine 1 -dm_plex_cell_refiner tobox
848c4762a1bSJed Brown     test:
849c4762a1bSJed Brown       suffix: box_wedge_s2t
850c4762a1bSJed Brown     test:
851c4762a1bSJed Brown       nsize: 3
852c4762a1bSJed Brown       args: -petscpartitioner_type simple
853c4762a1bSJed Brown       suffix: box_wedge_s2t_parallel
854c4762a1bSJed Brown 
855c4762a1bSJed Brown   # Test GLVis output
856c4762a1bSJed Brown   test:
857c4762a1bSJed Brown     suffix: glvis_2d_tet
858c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
859c4762a1bSJed Brown 
860c4762a1bSJed Brown   test:
861c4762a1bSJed Brown     suffix: glvis_2d_tet_per
862c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
863c4762a1bSJed Brown 
864c4762a1bSJed Brown   test:
865c4762a1bSJed Brown     suffix: glvis_2d_tet_per_mfem
866c4762a1bSJed Brown     args: -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: -interpolate
867c4762a1bSJed Brown 
868c4762a1bSJed Brown   test:
869c4762a1bSJed Brown     suffix: glvis_2d_quad
870c4762a1bSJed Brown     args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3 -dm_view glvis:
871c4762a1bSJed Brown 
872c4762a1bSJed Brown   test:
873c4762a1bSJed Brown     suffix: glvis_2d_quad_per
874c4762a1bSJed Brown     args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3 -x_periodicity periodic -y_periodicity periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary
875c4762a1bSJed Brown 
876c4762a1bSJed Brown   test:
877c4762a1bSJed Brown     suffix: glvis_2d_quad_per_mfem
878c4762a1bSJed Brown     args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3 -x_periodicity periodic -y_periodicity periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -viewer_glvis_dm_plex_enable_mfem
879c4762a1bSJed Brown 
880c4762a1bSJed Brown   test:
881c4762a1bSJed Brown     suffix: glvis_3d_tet
882c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis:
883c4762a1bSJed Brown 
884c4762a1bSJed Brown   test:
885c4762a1bSJed Brown     suffix: glvis_3d_tet_per
886c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_view glvis: -interpolate -viewer_glvis_dm_plex_enable_boundary
887c4762a1bSJed Brown 
888c4762a1bSJed Brown   test:
889c4762a1bSJed Brown     suffix: glvis_3d_tet_per_mfem
890c4762a1bSJed Brown     TODO: broken
891c4762a1bSJed Brown     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -viewer_glvis_dm_plex_enable_mfem -dm_view glvis: -interpolate
892c4762a1bSJed Brown 
893c4762a1bSJed Brown   test:
894c4762a1bSJed Brown     suffix: glvis_3d_hex
89554fcfd0cSMatthew G. Knepley     args: -dim 3 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3,3 -dm_view glvis:
896c4762a1bSJed Brown 
897c4762a1bSJed Brown   test:
898c4762a1bSJed Brown     suffix: glvis_3d_hex_per
89954fcfd0cSMatthew G. Knepley     args: -dim 3 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3,3 -x_periodicity periodic -y_periodicity periodic -z_periodicity periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0
900c4762a1bSJed Brown 
901c4762a1bSJed Brown   test:
902c4762a1bSJed Brown     suffix: glvis_3d_hex_per_mfem
903c4762a1bSJed Brown     args: -dim 3 -cell_simplex 0 -domain_shape box -domain_box_sizes 3,3,3 -x_periodicity periodic -y_periodicity periodic -z_periodicity periodic -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -viewer_glvis_dm_plex_enable_mfem -interpolate
904c4762a1bSJed Brown 
905c4762a1bSJed Brown   # Test P4EST
906c4762a1bSJed Brown   testset:
907c4762a1bSJed Brown     requires: p4est
90854fcfd0cSMatthew G. Knepley     args: -interpolate -dm_view -test_p4est_seq -conv_seq_2_dm_plex_check_all -conv_seq_1_dm_forest_minimum_refinement 1
909c4762a1bSJed Brown     test:
910c4762a1bSJed Brown       suffix: p4est_periodic
911c4762a1bSJed Brown       args: -dim 2 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -domain_box_sizes 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
912c4762a1bSJed Brown     test:
913c4762a1bSJed Brown       suffix: p4est_periodic_3d
914c4762a1bSJed Brown       args: -dim 3 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -z_periodicity -domain_box_sizes 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
915c4762a1bSJed Brown     test:
916c4762a1bSJed Brown       suffix: p4est_gmsh_periodic
917c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
918c4762a1bSJed Brown     test:
919c4762a1bSJed Brown       suffix: p4est_gmsh_surface
920c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
921c4762a1bSJed Brown     test:
922c4762a1bSJed Brown       suffix: p4est_gmsh_surface_parallel
923c4762a1bSJed Brown       nsize: 2
924c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -petscpartitioner_type simple -dm_view ::load_balance
925c4762a1bSJed Brown     test:
926c4762a1bSJed Brown       suffix: p4est_hyb_2d
927c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh
928c4762a1bSJed Brown     test:
929c4762a1bSJed Brown       suffix: p4est_hyb_3d
930c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh
931c4762a1bSJed Brown     test:
932c4762a1bSJed Brown       requires: ctetgen
933c4762a1bSJed Brown       suffix: p4est_s2t_bugfaces_3d
934c4762a1bSJed Brown       args: -conv_seq_1_dm_forest_initial_refinement 0 -conv_seq_1_dm_forest_maximum_refinement 0 -dim 3 -domain_box_sizes 1,1 -cell_simplex
935c4762a1bSJed Brown     test:
936c4762a1bSJed Brown       suffix: p4est_bug_overlapsf
937c4762a1bSJed Brown       nsize: 3
938c4762a1bSJed Brown       args: -dim 3 -cell_simplex 0 -domain_box_sizes 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
939c4762a1bSJed Brown     test:
940c4762a1bSJed Brown       suffix: p4est_redistribute
941c4762a1bSJed Brown       nsize: 3
942c4762a1bSJed Brown       args: -dim 3 -cell_simplex 0 -domain_box_sizes 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
943c4762a1bSJed Brown     test:
944c4762a1bSJed Brown       suffix: p4est_gmsh_s2t_3d
945c4762a1bSJed Brown       args: -conv_seq_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
946c4762a1bSJed Brown     test:
947c4762a1bSJed Brown       suffix: p4est_gmsh_s2t_3d_hash
948c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
949c4762a1bSJed Brown     test:
950c4762a1bSJed Brown       requires: long_runtime
951c4762a1bSJed Brown       suffix: p4est_gmsh_periodic_3d
952c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh
953c4762a1bSJed Brown 
954c4762a1bSJed Brown   testset:
955c4762a1bSJed Brown     requires: p4est
956c4762a1bSJed Brown     nsize: 6
95754fcfd0cSMatthew G. Knepley     args: -interpolate -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
958c4762a1bSJed Brown     test:
95954fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
960c4762a1bSJed Brown       suffix: p4est_par_periodic
961c4762a1bSJed Brown       args: -dim 2 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -domain_box_sizes 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
962c4762a1bSJed Brown     test:
96354fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
964c4762a1bSJed Brown       suffix: p4est_par_periodic_3d
965c4762a1bSJed Brown       args: -dim 3 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -z_periodicity periodic -domain_box_sizes 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
966c4762a1bSJed Brown     test:
96754fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
968c4762a1bSJed Brown       suffix: p4est_par_gmsh_periodic
969c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
970c4762a1bSJed Brown     test:
971c4762a1bSJed Brown       suffix: p4est_par_gmsh_surface
972c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
973c4762a1bSJed Brown     test:
974c4762a1bSJed Brown       suffix: p4est_par_gmsh_s2t_3d
975c4762a1bSJed Brown       args: -conv_par_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
976c4762a1bSJed Brown     test:
97754fcfd0cSMatthew G. Knepley       TODO: interface cones do not conform
978c4762a1bSJed Brown       suffix: p4est_par_gmsh_s2t_3d_hash
979c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
980c4762a1bSJed Brown     test:
981c4762a1bSJed Brown       requires: long_runtime
982c4762a1bSJed Brown       suffix: p4est_par_gmsh_periodic_3d
983c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh
984c4762a1bSJed Brown 
985c4762a1bSJed Brown   testset:
986c4762a1bSJed Brown     requires: p4est
987c4762a1bSJed Brown     nsize: 6
98854fcfd0cSMatthew G. Knepley     args: -interpolate -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 -petscpartitioner_type simple
989c4762a1bSJed Brown     test:
990c4762a1bSJed Brown       suffix: p4est_par_ovl_periodic
991c4762a1bSJed Brown       args: -dim 2 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -domain_box_sizes 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
992c4762a1bSJed Brown     #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled)
993c4762a1bSJed Brown     test:
994c4762a1bSJed Brown       suffix: p4est_par_ovl_periodic_3d
995c4762a1bSJed Brown       args: -dim 3 -domain_shape box -cell_simplex 0 -x_periodicity periodic -y_periodicity periodic -z_periodicity -domain_box_sizes 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
996c4762a1bSJed Brown     test:
997c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_periodic
998c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh
999c4762a1bSJed Brown     test:
1000c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_surface
1001c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3
1002c4762a1bSJed Brown     test:
1003c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_s2t_3d
1004c4762a1bSJed Brown       args: -conv_par_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
1005c4762a1bSJed Brown     test:
1006c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_s2t_3d_hash
1007c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh
1008c4762a1bSJed Brown     test:
1009c4762a1bSJed Brown       requires: long_runtime
1010c4762a1bSJed Brown       suffix: p4est_par_ovl_gmsh_periodic_3d
1011c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh
1012c4762a1bSJed Brown     test:
1013c4762a1bSJed Brown       suffix: p4est_par_ovl_hyb_2d
1014c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh
1015c4762a1bSJed Brown     test:
1016c4762a1bSJed Brown       suffix: p4est_par_ovl_hyb_3d
1017c4762a1bSJed Brown       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 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh
1018c4762a1bSJed Brown 
1019c4762a1bSJed Brown   test:
1020c4762a1bSJed Brown     TODO: broken
1021c4762a1bSJed Brown     requires: p4est
1022c4762a1bSJed Brown     nsize: 2
1023c4762a1bSJed Brown     suffix: p4est_bug_labels_noovl
102454fcfd0cSMatthew G. Knepley     args: -interpolate -test_p4est_seq -dm_plex_check_all -dm_forest_minimum_refinement 0 -dm_forest_partition_overlap 1 -dim 2 -domain_shape box -cell_simplex 0 -domain_box_sizes 3,3 -dm_forest_initial_refinement 0 -dm_forest_maximum_refinement 2 -dm_p4est_refine_pattern hash -petscpartitioner_type simple -dm_forest_print_label_error
1025c4762a1bSJed Brown 
1026c4762a1bSJed Brown   test:
1027c4762a1bSJed Brown     requires: p4est
1028c4762a1bSJed Brown     nsize: 2
1029c4762a1bSJed Brown     suffix: p4est_bug_distribute_overlap
103054fcfd0cSMatthew G. Knepley     args: -interpolate -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 -dim 2 -domain_shape box -cell_simplex 0 -domain_box_sizes 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
1031c4762a1bSJed Brown     args: -dm_post_overlap_view
1032c4762a1bSJed Brown 
1033c4762a1bSJed Brown   test:
1034c4762a1bSJed Brown     suffix: glvis_2d_hyb
1035c4762a1bSJed Brown     args: -dim 2 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -interpolate -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -petscpartitioner_type simple
1036c4762a1bSJed Brown 
1037c4762a1bSJed Brown   test:
1038c4762a1bSJed Brown     suffix: glvis_3d_hyb
1039c4762a1bSJed Brown     args: -dim 3 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -interpolate -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -petscpartitioner_type simple
1040c4762a1bSJed Brown 
1041c4762a1bSJed Brown   test:
1042c4762a1bSJed Brown     suffix: glvis_3d_hyb_s2t
104396ca5757SLisandro Dalcin     args: -dim 3 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_3d_cube.msh -interpolate -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary -petscpartitioner_type simple -dm_refine 1 -dm_plex_cell_refiner tobox -dm_plex_check_all
1044595782ffSMatthew G. Knepley 
1045595782ffSMatthew G. Knepley   test:
1046595782ffSMatthew G. Knepley     suffix: ref_alfeld2d_0
1047595782ffSMatthew G. Knepley     requires: triangle
1048595782ffSMatthew G. Knepley     args: -dim 2 -domain_shape box -cell_simplex 1 -domain_box_sizes 5 -dm_view -interpolate -dm_plex_check_all -dm_refine 1 -dm_plex_cell_refiner alfeld2d -final_diagnostics
1049595782ffSMatthew G. Knepley   test:
1050595782ffSMatthew G. Knepley     suffix: ref_alfeld3d_0
1051595782ffSMatthew G. Knepley     requires: ctetgen
1052595782ffSMatthew G. Knepley     args: -dim 3 -domain_shape box -cell_simplex 1 -domain_box_sizes 5 -dm_view -interpolate -dm_plex_check_all -dm_refine 1 -dm_plex_cell_refiner alfeld3d -final_diagnostics
1053595782ffSMatthew G. Knepley 
105409c713e7SStefano Zampini   # Boundary layer refiners
105509c713e7SStefano Zampini   test:
105609c713e7SStefano Zampini     suffix: ref_bl_1
105709c713e7SStefano Zampini     args: -dim 1 -domain_shape box -cell_simplex 0 -domain_box_sizes 5 -dm_view -interpolate -dm_plex_check_all 0 -dm_refine 1 -dm_plex_cell_refiner boundarylayer -ext_layers 2 -final_diagnostics -dm_plex_refine_boundarylayer_splits 3 -ext_hfirst {{0 1}}
105809c713e7SStefano Zampini   test:
105909c713e7SStefano Zampini     suffix: ref_bl_2_tri
106009c713e7SStefano Zampini     requires: triangle
106109c713e7SStefano Zampini     args: -dim 2 -domain_shape box -cell_simplex 1 -domain_box_sizes 5 -dm_view -interpolate -dm_plex_check_all 0 -dm_refine 1 -dm_plex_cell_refiner boundarylayer -ext_layers 3 -final_diagnostics -dm_plex_refine_boundarylayer_splits 4 -ext_hfirst {{0 1}}
106209c713e7SStefano Zampini   test:
106309c713e7SStefano Zampini     suffix: ref_bl_3_quad
106409c713e7SStefano Zampini     args: -dim 2 -domain_shape box -cell_simplex 0 -domain_box_sizes 5 -dm_view -interpolate -dm_plex_check_all 0 -dm_refine 1 -dm_plex_cell_refiner boundarylayer -ext_layers 3 -final_diagnostics -dm_plex_refine_boundarylayer_splits 4 -ext_hfirst {{0 1}}
106509c713e7SStefano Zampini   test:
106609c713e7SStefano Zampini     suffix: ref_bl_spheresurface_extruded
106709c713e7SStefano Zampini     nsize : 4
106809c713e7SStefano Zampini     args: -ext_layers 3 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_all -dm_view -interpolate -petscpartitioner_type simple -ext_hfirst {{0 1}separate output} -final_diagnostics -dm_refine 1 -dm_plex_cell_refiner boundarylayer -dm_plex_refine_boundarylayer_splits 2
106909c713e7SStefano Zampini   test:
107009c713e7SStefano Zampini     suffix: ref_bl_3d_hyb
107109c713e7SStefano Zampini     nsize : 4
107209c713e7SStefano Zampini     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_3d_cube.msh -dm_plex_check_all -dm_view -interpolate -petscpartitioner_type simple -final_diagnostics -dm_refine 1 -dm_plex_cell_refiner boundarylayer -dm_plex_refine_boundarylayer_splits 4 -dm_plex_refine_boundarylayer_progression 3.1
1073*0e278f6aSMatthew G. Knepley 
1074*0e278f6aSMatthew G. Knepley   test:
1075*0e278f6aSMatthew G. Knepley     suffix: sphere_0
1076*0e278f6aSMatthew G. Knepley     args: -dim 2 -domain_shape sphere -dm_plex_check_all -dm_view ::ascii_info_detail
1077*0e278f6aSMatthew G. Knepley 
1078*0e278f6aSMatthew G. Knepley   test:
1079*0e278f6aSMatthew G. Knepley     suffix: sphere_1
1080*0e278f6aSMatthew G. Knepley     args: -dim 2 -domain_shape sphere -dm_plex_check_all -dm_refine 2 -dm_view
1081*0e278f6aSMatthew G. Knepley 
1082*0e278f6aSMatthew G. Knepley   test:
1083*0e278f6aSMatthew G. Knepley     suffix: ball_0
1084*0e278f6aSMatthew G. Knepley     requires: ctetgen
1085*0e278f6aSMatthew G. Knepley     args: -dim 3 -domain_shape ball -dm_plex_check_all -dm_view
1086*0e278f6aSMatthew G. Knepley 
1087*0e278f6aSMatthew G. Knepley   test:
1088*0e278f6aSMatthew G. Knepley     suffix: ball_1
1089*0e278f6aSMatthew G. Knepley     requires: ctetgen
1090*0e278f6aSMatthew G. Knepley     args: -dim 3 -domain_shape ball -bd_dm_refine 2 -dm_plex_check_all -dm_view
1091*0e278f6aSMatthew G. Knepley 
1092c4762a1bSJed Brown TEST*/
1093