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 */ 31*09c713e7SStefano 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; 69*09c713e7SStefano 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); 107*09c713e7SStefano 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 /* Overload time to be the sphere radius */ 126c4762a1bSJed Brown static void snapToSphere(PetscInt dim, PetscInt Nf, PetscInt NfAux, 127c4762a1bSJed Brown const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], 128c4762a1bSJed Brown const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], 129c4762a1bSJed Brown PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f0[]) 130c4762a1bSJed Brown { 131c4762a1bSJed Brown PetscReal norm2 = 0.0, fac; 132c4762a1bSJed Brown PetscInt n = uOff[1] - uOff[0], d; 133c4762a1bSJed Brown 134c4762a1bSJed Brown for (d = 0; d < n; ++d) norm2 += PetscSqr(PetscRealPart(u[d])); 135c4762a1bSJed Brown fac = t/PetscSqrtReal(norm2); 136c4762a1bSJed Brown for (d = 0; d < n; ++d) f0[d] = u[d]*fac; 137c4762a1bSJed Brown } 138c4762a1bSJed Brown 139c4762a1bSJed Brown PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm) 140c4762a1bSJed Brown { 141c4762a1bSJed Brown PetscInt dim = user->dim; 142c4762a1bSJed Brown PetscBool interpolate = user->interpolate; 143c4762a1bSJed Brown PetscReal refinementLimit = user->refinementLimit; 144c4762a1bSJed Brown PetscBool cellSimplex = user->cellSimplex; 145c4762a1bSJed Brown PetscBool cellWedge = user->cellWedge; 146c4762a1bSJed Brown const char *filename = user->filename; 147c4762a1bSJed Brown const char *bdfilename = user->bdfilename; 148c4762a1bSJed Brown const char *extfilename = user->extfilename; 149c4762a1bSJed Brown PetscBool testp4est_seq = user->testp4est[0]; 150c4762a1bSJed Brown PetscBool testp4est_par = user->testp4est[1]; 151c4762a1bSJed Brown PetscInt triSizes_n2[2] = {4, 4}; 152c4762a1bSJed Brown PetscInt triPoints_n2[8] = {3, 5, 6, 7, 0, 1, 2, 4}; 153c4762a1bSJed Brown PetscInt triSizes_n8[8] = {1, 1, 1, 1, 1, 1, 1, 1}; 154c4762a1bSJed Brown PetscInt triPoints_n8[8] = {0, 1, 2, 3, 4, 5, 6, 7}; 155c4762a1bSJed Brown PetscInt quadSizes[2] = {2, 2}; 156c4762a1bSJed Brown PetscInt quadPoints[4] = {2, 3, 0, 1}; 157c4762a1bSJed Brown PetscInt gmshSizes_n3[3] = {14, 14, 14}; 158c4762a1bSJed Brown PetscInt gmshPoints_n3[42] = {1, 2, 4, 5, 9, 10, 11, 15, 16, 20, 21, 27, 28, 29, 159c4762a1bSJed Brown 3, 8, 12, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 160c4762a1bSJed Brown 0, 6, 7, 13, 14, 17, 18, 19, 22, 23, 24, 25, 26, 41}; 161c4762a1bSJed Brown PetscInt fluentSizes_n3[3] = {50, 50, 50}; 162c4762a1bSJed 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, 163c4762a1bSJed 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, 164c4762a1bSJed 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, 165c4762a1bSJed 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, 166c4762a1bSJed 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, 167c4762a1bSJed 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}; 168c4762a1bSJed Brown size_t len, bdlen, extlen; 169c4762a1bSJed Brown PetscMPIInt rank, size; 170c4762a1bSJed Brown PetscErrorCode ierr; 171c4762a1bSJed Brown 172c4762a1bSJed Brown PetscFunctionBegin; 173c4762a1bSJed Brown ierr = PetscLogEventBegin(user->createMeshEvent,0,0,0,0);CHKERRQ(ierr); 174c4762a1bSJed Brown ierr = MPI_Comm_rank(comm, &rank);CHKERRQ(ierr); 175c4762a1bSJed Brown ierr = MPI_Comm_size(comm, &size);CHKERRQ(ierr); 176c4762a1bSJed Brown ierr = PetscStrlen(filename, &len);CHKERRQ(ierr); 177c4762a1bSJed Brown ierr = PetscStrlen(bdfilename, &bdlen);CHKERRQ(ierr); 178c4762a1bSJed Brown ierr = PetscStrlen(extfilename, &extlen);CHKERRQ(ierr); 179c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_LOAD]);CHKERRQ(ierr); 180c4762a1bSJed Brown if (len) { 181c4762a1bSJed Brown ierr = DMPlexCreateFromFile(comm, filename, interpolate, dm);CHKERRQ(ierr); 182c4762a1bSJed Brown } else if (bdlen) { 183c4762a1bSJed Brown DM boundary; 184c4762a1bSJed Brown 185c4762a1bSJed Brown ierr = DMPlexCreateFromFile(comm, bdfilename, interpolate, &boundary);CHKERRQ(ierr); 186c4762a1bSJed Brown ierr = DMPlexGenerate(boundary, NULL, interpolate, dm);CHKERRQ(ierr); 187c4762a1bSJed Brown ierr = DMDestroy(&boundary);CHKERRQ(ierr); 188c4762a1bSJed Brown } else if (extlen) { 189c4762a1bSJed Brown DM edm; 190c4762a1bSJed Brown 191c4762a1bSJed Brown ierr = DMPlexCreateFromFile(comm, extfilename, interpolate, &edm);CHKERRQ(ierr); 192*09c713e7SStefano Zampini ierr = DMPlexExtrude(edm, user->extrude_layers, user->extrude_thickness, user->extrude_hfirst, interpolate, dm);CHKERRQ(ierr); 193c4762a1bSJed Brown ierr = DMDestroy(&edm);CHKERRQ(ierr); 194c4762a1bSJed Brown } else { 195c4762a1bSJed Brown switch (user->domainShape) { 196c4762a1bSJed Brown case BOX: 197c4762a1bSJed Brown if (cellWedge) { 198c4762a1bSJed Brown if (dim != 3) SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Dimension must be 3 for a wedge mesh, not %D", dim); 199c4762a1bSJed Brown ierr = DMPlexCreateWedgeBoxMesh(comm, user->domainBoxSizes, user->domainBoxL, user->domainBoxU, user->periodicity, PETSC_FALSE, interpolate, dm);CHKERRQ(ierr); 200c4762a1bSJed Brown } else { 201c4762a1bSJed Brown ierr = DMPlexCreateBoxMesh(comm, dim, cellSimplex, user->domainBoxSizes, user->domainBoxL, user->domainBoxU, user->periodicity, interpolate, dm);CHKERRQ(ierr); 202c4762a1bSJed Brown } 203c4762a1bSJed Brown break; 204c4762a1bSJed Brown case CYLINDER: 205c4762a1bSJed Brown if (cellSimplex) SETERRQ(comm, PETSC_ERR_ARG_WRONG, "Cannot mesh a cylinder with simplices"); 206c4762a1bSJed Brown if (dim != 3) SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Dimension must be 3 for a cylinder mesh, not %D", dim); 207c4762a1bSJed Brown if (cellWedge) { 208c4762a1bSJed Brown ierr = DMPlexCreateWedgeCylinderMesh(comm, 6, interpolate, dm);CHKERRQ(ierr); 209c4762a1bSJed Brown } else { 21054fcfd0cSMatthew G. Knepley ierr = DMPlexCreateHexCylinderMesh(comm, 1, user->periodicity[2], dm);CHKERRQ(ierr); 211c4762a1bSJed Brown } 212c4762a1bSJed Brown break; 213c4762a1bSJed Brown case SPHERE: 214c4762a1bSJed Brown ierr = DMPlexCreateSphereMesh(comm, dim, cellSimplex, dm);CHKERRQ(ierr); 215c4762a1bSJed Brown break; 216c4762a1bSJed Brown case BALL: 217c4762a1bSJed Brown { 218c4762a1bSJed Brown DM sdm; 219c4762a1bSJed Brown PetscInt Nr = 0, r; 220c4762a1bSJed Brown 221c4762a1bSJed Brown ierr = DMPlexCreateSphereMesh(comm, dim-1, cellSimplex, &sdm);CHKERRQ(ierr); 222c4762a1bSJed Brown { 223c4762a1bSJed Brown DM cdm; 224c4762a1bSJed Brown PetscFE fe; 225c4762a1bSJed Brown PetscInt dim, dE; 226c4762a1bSJed Brown 227c4762a1bSJed Brown ierr = DMGetCoordinateDM(sdm, &cdm);CHKERRQ(ierr); 228c4762a1bSJed Brown ierr = DMGetDimension(sdm, &dim);CHKERRQ(ierr); 229c4762a1bSJed Brown ierr = DMGetCoordinateDim(sdm, &dE);CHKERRQ(ierr); 230c4762a1bSJed Brown ierr = PetscFECreateLagrange(PETSC_COMM_SELF, dim, dE, PETSC_TRUE, 1, -1, &fe);CHKERRQ(ierr); 231c4762a1bSJed Brown ierr = DMSetField(cdm, 0, NULL, (PetscObject) fe);CHKERRQ(ierr); 232c4762a1bSJed Brown ierr = PetscFEDestroy(&fe);CHKERRQ(ierr); 233c4762a1bSJed Brown ierr = DMCreateDS(cdm);CHKERRQ(ierr); 234c4762a1bSJed Brown } 235c4762a1bSJed Brown ierr = PetscOptionsGetInt(NULL, "bd_", "-dm_refine", &Nr, NULL);CHKERRQ(ierr); 236c4762a1bSJed Brown for (r = 0; r < Nr; ++r) { 237c4762a1bSJed Brown DM rdm, cdm, rcdm; 238c4762a1bSJed Brown ierr = DMRefine(sdm, PETSC_COMM_WORLD, &rdm);CHKERRQ(ierr); 239c4762a1bSJed Brown ierr = DMGetCoordinateDM(sdm, &cdm);CHKERRQ(ierr); 240c4762a1bSJed Brown ierr = DMGetCoordinateDM(rdm, &rcdm);CHKERRQ(ierr); 241c4762a1bSJed Brown ierr = DMCopyDisc(cdm, rcdm);CHKERRQ(ierr); 242c4762a1bSJed Brown ierr = DMPlexRemapGeometry(rdm, 1.0, snapToSphere);CHKERRQ(ierr); 243c4762a1bSJed Brown ierr = DMDestroy(&sdm);CHKERRQ(ierr); 244c4762a1bSJed Brown sdm = rdm; 245c4762a1bSJed Brown } 246c4762a1bSJed Brown ierr = DMPlexGenerate(sdm, NULL, interpolate, dm);CHKERRQ(ierr); 247c4762a1bSJed Brown ierr = DMDestroy(&sdm);CHKERRQ(ierr); 248c4762a1bSJed Brown } 249c4762a1bSJed Brown break; 250c4762a1bSJed Brown default: SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Unknown domain shape %D", user->domainShape); 251c4762a1bSJed Brown } 252c4762a1bSJed Brown } 253595782ffSMatthew G. Knepley if (!extlen && user->extrude_layers > 0) { 254595782ffSMatthew G. Knepley DM edm; 255595782ffSMatthew G. Knepley 256*09c713e7SStefano Zampini ierr = DMPlexExtrude(*dm, user->extrude_layers, user->extrude_thickness, user->extrude_hfirst, interpolate, &edm);CHKERRQ(ierr); 257595782ffSMatthew G. Knepley ierr = DMDestroy(dm);CHKERRQ(ierr); 258595782ffSMatthew G. Knepley *dm = edm; 259595782ffSMatthew G. Knepley } 260c4762a1bSJed Brown ierr = DMLocalizeCoordinates(*dm);CHKERRQ(ierr); /* needed for periodic */ 261c4762a1bSJed Brown ierr = DMViewFromOptions(*dm,NULL,"-init_dm_view");CHKERRQ(ierr); 262c4762a1bSJed Brown ierr = DMGetDimension(*dm,&dim);CHKERRQ(ierr); 263c4762a1bSJed Brown 264c4762a1bSJed Brown if (testp4est_seq) { 265c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST) 266c4762a1bSJed Brown DM dmConv = NULL; 267c4762a1bSJed Brown 26854fcfd0cSMatthew G. Knepley ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr); 26954fcfd0cSMatthew G. Knepley ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr); 27054fcfd0cSMatthew G. Knepley ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr); 27154fcfd0cSMatthew G. Knepley ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr); 27254fcfd0cSMatthew G. Knepley ierr = DMPlexCheckPointSF(*dm);CHKERRQ(ierr); 27354fcfd0cSMatthew G. Knepley ierr = DMPlexCheckInterfaceCones(*dm);CHKERRQ(ierr); 274c4762a1bSJed Brown ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr); 27596ca5757SLisandro Dalcin ierr = DMPlexSetCellRefinerType(*dm, DM_REFINER_TO_BOX);CHKERRQ(ierr); 27654fcfd0cSMatthew G. Knepley ierr = DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);CHKERRQ(ierr); 277c4762a1bSJed Brown if (dmConv) { 278c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 279c4762a1bSJed Brown *dm = dmConv; 280c4762a1bSJed Brown } 28154fcfd0cSMatthew G. Knepley ierr = DMViewFromOptions(*dm,NULL,"-initref_dm_view");CHKERRQ(ierr); 28254fcfd0cSMatthew G. Knepley ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr); 28354fcfd0cSMatthew G. Knepley ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr); 28454fcfd0cSMatthew G. Knepley ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr); 28554fcfd0cSMatthew G. Knepley ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr); 28654fcfd0cSMatthew G. Knepley ierr = DMPlexCheckPointSF(*dm);CHKERRQ(ierr); 28754fcfd0cSMatthew G. Knepley ierr = DMPlexCheckInterfaceCones(*dm);CHKERRQ(ierr); 288c4762a1bSJed Brown user->cellSimplex = PETSC_FALSE; 289c4762a1bSJed Brown 290c4762a1bSJed Brown ierr = DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);CHKERRQ(ierr); 291c4762a1bSJed Brown if (dmConv) { 292c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_1_");CHKERRQ(ierr); 293c4762a1bSJed Brown ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr); 294c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 295c4762a1bSJed Brown *dm = dmConv; 296c4762a1bSJed Brown } 297c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_1_");CHKERRQ(ierr); 298c4762a1bSJed Brown ierr = DMSetUp(*dm);CHKERRQ(ierr); 299c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 300c4762a1bSJed Brown ierr = DMConvert(*dm,DMPLEX,&dmConv);CHKERRQ(ierr); 301c4762a1bSJed Brown if (dmConv) { 302c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_2_");CHKERRQ(ierr); 303c4762a1bSJed Brown ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr); 304c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 305c4762a1bSJed Brown *dm = dmConv; 306c4762a1bSJed Brown } 307c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_2_");CHKERRQ(ierr); 308c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 309c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr); 310c4762a1bSJed Brown #else 311c4762a1bSJed Brown SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est"); 312c4762a1bSJed Brown #endif 313c4762a1bSJed Brown } 314c4762a1bSJed Brown 315c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 316c4762a1bSJed Brown if (!testp4est_seq) { 317c4762a1bSJed Brown DM refinedMesh = NULL; 318c4762a1bSJed Brown DM distributedMesh = NULL; 319c4762a1bSJed Brown 320c4762a1bSJed Brown if (user->testPartition) { 321c4762a1bSJed Brown const PetscInt *sizes = NULL; 322c4762a1bSJed Brown const PetscInt *points = NULL; 323c4762a1bSJed Brown PetscPartitioner part; 324c4762a1bSJed Brown 325c4762a1bSJed Brown if (!rank) { 326c4762a1bSJed Brown if (dim == 2 && cellSimplex && size == 2) { 327c4762a1bSJed Brown sizes = triSizes_n2; points = triPoints_n2; 328c4762a1bSJed Brown } else if (dim == 2 && cellSimplex && size == 8) { 329c4762a1bSJed Brown sizes = triSizes_n8; points = triPoints_n8; 330c4762a1bSJed Brown } else if (dim == 2 && !cellSimplex && size == 2) { 331c4762a1bSJed Brown sizes = quadSizes; points = quadPoints; 332c4762a1bSJed Brown } else if (dim == 2 && size == 3) { 333c4762a1bSJed Brown PetscInt Nc; 334c4762a1bSJed Brown 335c4762a1bSJed Brown ierr = DMPlexGetHeightStratum(*dm, 0, NULL, &Nc);CHKERRQ(ierr); 336c4762a1bSJed Brown if (Nc == 42) { /* Gmsh 3 & 4 */ 337c4762a1bSJed Brown sizes = gmshSizes_n3; points = gmshPoints_n3; 338c4762a1bSJed Brown } else if (Nc == 150) { /* Fluent 1 */ 339c4762a1bSJed Brown sizes = fluentSizes_n3; points = fluentPoints_n3; 340c4762a1bSJed Brown } else if (Nc == 42) { /* Med 1 */ 341c4762a1bSJed Brown } else if (Nc == 161) { /* Med 3 */ 342c4762a1bSJed Brown } 343c4762a1bSJed Brown } 344c4762a1bSJed Brown } 345c4762a1bSJed Brown ierr = DMPlexGetPartitioner(*dm, &part);CHKERRQ(ierr); 346c4762a1bSJed Brown ierr = PetscPartitionerSetType(part, PETSCPARTITIONERSHELL);CHKERRQ(ierr); 347c4762a1bSJed Brown ierr = PetscPartitionerShellSetPartition(part, size, sizes, points);CHKERRQ(ierr); 348c4762a1bSJed Brown } else { 349c4762a1bSJed Brown PetscPartitioner part; 350c4762a1bSJed Brown 351c4762a1bSJed Brown ierr = DMPlexGetPartitioner(*dm,&part);CHKERRQ(ierr); 352c4762a1bSJed Brown ierr = PetscPartitionerSetFromOptions(part);CHKERRQ(ierr); 353c4762a1bSJed Brown } 354c4762a1bSJed Brown /* Distribute mesh over processes */ 355c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_DISTRIBUTE]);CHKERRQ(ierr); 356c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_dist_view");CHKERRQ(ierr); 357c4762a1bSJed Brown ierr = DMPlexDistribute(*dm, 0, NULL, &distributedMesh);CHKERRQ(ierr); 358c4762a1bSJed Brown if (distributedMesh) { 359c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 360c4762a1bSJed Brown *dm = distributedMesh; 361c4762a1bSJed Brown } 362c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 363c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-distributed_dm_view");CHKERRQ(ierr); 364c4762a1bSJed Brown /* Refine mesh using a volume constraint */ 365c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_REFINE]);CHKERRQ(ierr); 366c4762a1bSJed Brown ierr = DMPlexSetRefinementUniform(*dm, PETSC_FALSE);CHKERRQ(ierr); 367c4762a1bSJed Brown ierr = DMPlexSetRefinementLimit(*dm, refinementLimit);CHKERRQ(ierr); 368c4762a1bSJed Brown ierr = DMRefine(*dm, comm, &refinedMesh);CHKERRQ(ierr); 369c4762a1bSJed Brown if (refinedMesh) { 370c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 371c4762a1bSJed Brown *dm = refinedMesh; 372c4762a1bSJed Brown } 373c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 374c4762a1bSJed Brown } 375c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_REFINE]);CHKERRQ(ierr); 376c4762a1bSJed Brown ierr = DMSetFromOptions(*dm);CHKERRQ(ierr); 377c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 378c4762a1bSJed Brown 379c4762a1bSJed Brown if (testp4est_par) { 380c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST) 381c4762a1bSJed Brown DM dmConv = NULL; 382c4762a1bSJed Brown 38396ca5757SLisandro Dalcin ierr = DMViewFromOptions(*dm, NULL, "-dm_tobox_view");CHKERRQ(ierr); 384c4762a1bSJed Brown ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr); 38596ca5757SLisandro Dalcin ierr = DMPlexSetCellRefinerType(*dm, DM_REFINER_TO_BOX);CHKERRQ(ierr); 38654fcfd0cSMatthew G. Knepley ierr = DMRefine(*dm, PETSC_COMM_WORLD, &dmConv);CHKERRQ(ierr); 387c4762a1bSJed Brown if (dmConv) { 388c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 389c4762a1bSJed Brown *dm = dmConv; 390c4762a1bSJed Brown } 391c4762a1bSJed Brown user->cellSimplex = PETSC_FALSE; 39296ca5757SLisandro Dalcin ierr = DMViewFromOptions(*dm, NULL, "-dm_tobox_view");CHKERRQ(ierr); 39354fcfd0cSMatthew G. Knepley ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr); 39454fcfd0cSMatthew G. Knepley ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr); 39554fcfd0cSMatthew G. Knepley ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr); 39654fcfd0cSMatthew G. Knepley ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr); 39754fcfd0cSMatthew G. Knepley ierr = DMPlexCheckPointSF(*dm);CHKERRQ(ierr); 39854fcfd0cSMatthew G. Knepley ierr = DMPlexCheckInterfaceCones(*dm);CHKERRQ(ierr); 399c4762a1bSJed Brown 400c4762a1bSJed Brown ierr = DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);CHKERRQ(ierr); 401c4762a1bSJed Brown if (dmConv) { 402c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_1_");CHKERRQ(ierr); 403c4762a1bSJed Brown ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr); 404c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 405c4762a1bSJed Brown *dm = dmConv; 406c4762a1bSJed Brown } 407c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_1_");CHKERRQ(ierr); 408c4762a1bSJed Brown ierr = DMSetUp(*dm);CHKERRQ(ierr); 409c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 410c4762a1bSJed Brown ierr = DMConvert(*dm, DMPLEX, &dmConv);CHKERRQ(ierr); 411c4762a1bSJed Brown if (dmConv) { 412c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_2_");CHKERRQ(ierr); 413c4762a1bSJed Brown ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr); 414c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 415c4762a1bSJed Brown *dm = dmConv; 416c4762a1bSJed Brown } 417c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_2_");CHKERRQ(ierr); 418c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 419c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr); 420c4762a1bSJed Brown #else 421c4762a1bSJed Brown SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est"); 422c4762a1bSJed Brown #endif 423c4762a1bSJed Brown } 424c4762a1bSJed Brown 425c4762a1bSJed Brown /* test redistribution of an already distributed mesh */ 426c4762a1bSJed Brown if (user->redistribute) { 427c4762a1bSJed Brown DM distributedMesh; 4280a19bb7dSprj- PetscSF sf; 4290a19bb7dSprj- PetscInt nranks; 430c4762a1bSJed Brown 431c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view");CHKERRQ(ierr); 432c4762a1bSJed Brown ierr = DMPlexDistribute(*dm, 0, NULL, &distributedMesh);CHKERRQ(ierr); 433c4762a1bSJed Brown if (distributedMesh) { 4340a19bb7dSprj- ierr = DMGetPointSF(distributedMesh, &sf);CHKERRQ(ierr); 4350a19bb7dSprj- ierr = PetscSFSetUp(sf);CHKERRQ(ierr); 4360a19bb7dSprj- ierr = DMGetNeighbors(distributedMesh, &nranks, NULL);CHKERRQ(ierr); 4370a19bb7dSprj- ierr = MPI_Allreduce(MPI_IN_PLACE, &nranks, 1, MPIU_INT, MPI_MIN, PetscObjectComm((PetscObject)*dm));CHKERRQ(ierr); 4380a19bb7dSprj- ierr = PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_(PetscObjectComm((PetscObject)*dm)), "Minimum number of neighbors: %D\n", nranks);CHKERRQ(ierr); 439c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 440c4762a1bSJed Brown *dm = distributedMesh; 441c4762a1bSJed Brown } 442c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_post_redist_view");CHKERRQ(ierr); 443c4762a1bSJed Brown } 444c4762a1bSJed Brown 445c4762a1bSJed Brown if (user->overlap) { 446c4762a1bSJed Brown DM overlapMesh = NULL; 447c4762a1bSJed Brown 448c4762a1bSJed Brown /* Add the overlap to refined mesh */ 449c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_OVERLAP]);CHKERRQ(ierr); 450c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view");CHKERRQ(ierr); 451c4762a1bSJed Brown ierr = DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh);CHKERRQ(ierr); 452c4762a1bSJed Brown if (overlapMesh) { 453c4762a1bSJed Brown PetscInt overlap; 454c4762a1bSJed Brown ierr = DMPlexGetOverlap(overlapMesh, &overlap);CHKERRQ(ierr); 455c4762a1bSJed Brown ierr = PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %D\n", overlap);CHKERRQ(ierr); 456c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 457c4762a1bSJed Brown *dm = overlapMesh; 458c4762a1bSJed Brown } 459c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view");CHKERRQ(ierr); 460c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 461c4762a1bSJed Brown } 462c4762a1bSJed Brown if (user->final_ref) { 463c4762a1bSJed Brown DM refinedMesh = NULL; 464c4762a1bSJed Brown 465c4762a1bSJed Brown ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr); 466c4762a1bSJed Brown ierr = DMRefine(*dm, comm, &refinedMesh);CHKERRQ(ierr); 467c4762a1bSJed Brown if (refinedMesh) { 468c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 469c4762a1bSJed Brown *dm = refinedMesh; 470c4762a1bSJed Brown } 471c4762a1bSJed Brown } 472c4762a1bSJed Brown 473c4762a1bSJed Brown ierr = PetscObjectSetName((PetscObject) *dm, "Simplicial Mesh");CHKERRQ(ierr); 474c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 475c4762a1bSJed Brown if (user->final_diagnostics) { 476c4762a1bSJed Brown DMPlexInterpolatedFlag interpolated; 477c4762a1bSJed Brown PetscInt dim, depth; 478c4762a1bSJed Brown 479c4762a1bSJed Brown ierr = DMGetDimension(*dm, &dim);CHKERRQ(ierr); 480c4762a1bSJed Brown ierr = DMPlexGetDepth(*dm, &depth);CHKERRQ(ierr); 481c4762a1bSJed Brown ierr = DMPlexIsInterpolatedCollective(*dm, &interpolated);CHKERRQ(ierr); 482c4762a1bSJed Brown 483c4762a1bSJed Brown ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr); 484c4762a1bSJed Brown if (interpolated == DMPLEX_INTERPOLATED_FULL) { 485c4762a1bSJed Brown ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr); 486c4762a1bSJed Brown } 487c4762a1bSJed Brown ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr); 488c4762a1bSJed Brown ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr); 489c4762a1bSJed Brown } 490c4762a1bSJed Brown ierr = PetscLogEventEnd(user->createMeshEvent,0,0,0,0);CHKERRQ(ierr); 491c4762a1bSJed Brown user->dm = *dm; 492c4762a1bSJed Brown PetscFunctionReturn(0); 493c4762a1bSJed Brown } 494c4762a1bSJed Brown 495c4762a1bSJed Brown int main(int argc, char **argv) 496c4762a1bSJed Brown { 497c4762a1bSJed Brown AppCtx user; /* user-defined work context */ 498c4762a1bSJed Brown PetscErrorCode ierr; 499c4762a1bSJed Brown 500c4762a1bSJed Brown ierr = PetscInitialize(&argc, &argv, NULL, help);if (ierr) return ierr; 501c4762a1bSJed Brown ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr); 502c4762a1bSJed Brown ierr = CreateMesh(PETSC_COMM_WORLD, &user, &user.dm);CHKERRQ(ierr); 503c4762a1bSJed Brown ierr = DMDestroy(&user.dm);CHKERRQ(ierr); 504c4762a1bSJed Brown ierr = PetscFinalize(); 505c4762a1bSJed Brown return ierr; 506c4762a1bSJed Brown } 507c4762a1bSJed Brown 508c4762a1bSJed Brown /*TEST 509c4762a1bSJed Brown 510c4762a1bSJed Brown # CTetGen 0-1 511c4762a1bSJed Brown test: 512c4762a1bSJed Brown suffix: 0 513c4762a1bSJed Brown requires: ctetgen 514c20d7725SJed Brown args: -dim 3 -ctetgen_verbose 4 -dm_view ascii::ascii_info_detail -info :~sys 515c4762a1bSJed Brown test: 516c4762a1bSJed Brown suffix: 1 517c4762a1bSJed Brown requires: ctetgen 518c20d7725SJed Brown args: -dim 3 -ctetgen_verbose 4 -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail -info :~sys 519c20d7725SJed Brown 520c4762a1bSJed Brown 521c4762a1bSJed Brown # 2D LaTex and ASCII output 2-9 522c4762a1bSJed Brown test: 523c4762a1bSJed Brown suffix: 2 524c4762a1bSJed Brown requires: triangle 525c4762a1bSJed Brown args: -dim 2 -dm_view ascii::ascii_latex 526c4762a1bSJed Brown test: 527c4762a1bSJed Brown suffix: 3 528c4762a1bSJed Brown requires: triangle 529c4762a1bSJed Brown args: -dim 2 -dm_refine 1 -interpolate 1 -dm_view ascii::ascii_info_detail 530c4762a1bSJed Brown test: 531c4762a1bSJed Brown suffix: 4 532c4762a1bSJed Brown requires: triangle 533c4762a1bSJed Brown nsize: 2 534c4762a1bSJed Brown args: -dim 2 -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_info_detail 535c4762a1bSJed Brown test: 536c4762a1bSJed Brown suffix: 5 537c4762a1bSJed Brown requires: triangle 538c4762a1bSJed Brown nsize: 2 539c4762a1bSJed Brown args: -dim 2 -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_latex 540c4762a1bSJed Brown test: 541c4762a1bSJed Brown suffix: 6 542c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -dm_view ascii::ascii_info_detail 543c4762a1bSJed Brown test: 544c4762a1bSJed Brown suffix: 7 545c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -dm_refine 1 -dm_view ascii::ascii_info_detail 546c4762a1bSJed Brown test: 547c4762a1bSJed Brown suffix: 8 548c4762a1bSJed Brown nsize: 2 549c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_latex 550c4762a1bSJed Brown 551c4762a1bSJed Brown # 1D ASCII output 552c4762a1bSJed Brown test: 553c4762a1bSJed Brown suffix: 1d_0 554c4762a1bSJed Brown args: -dim 1 -domain_shape box -dm_view ascii::ascii_info_detail 555c4762a1bSJed Brown test: 556c4762a1bSJed Brown suffix: 1d_1 557c4762a1bSJed Brown args: -dim 1 -domain_shape box -dm_refine 2 -dm_view ascii::ascii_info_detail 558c4762a1bSJed Brown test: 559c4762a1bSJed Brown suffix: 1d_2 56054fcfd0cSMatthew G. Knepley args: -dim 1 -domain_box_sizes 5 -x_periodicity periodic -dm_view ascii::ascii_info_detail -dm_plex_check_all 561c4762a1bSJed Brown 562c4762a1bSJed Brown # Parallel refinement tests with overlap 563c4762a1bSJed Brown test: 564c4762a1bSJed Brown suffix: refine_overlap_1d 565c4762a1bSJed Brown nsize: 2 566c4762a1bSJed 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 567c4762a1bSJed Brown test: 568c4762a1bSJed Brown suffix: refine_overlap_2d 569c4762a1bSJed Brown requires: triangle 570c4762a1bSJed Brown nsize: {{2 8}separate output} 571c4762a1bSJed 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 572c4762a1bSJed Brown 573c4762a1bSJed Brown # Parallel simple partitioner tests 574c4762a1bSJed Brown test: 575c4762a1bSJed Brown suffix: part_simple_0 576c4762a1bSJed Brown requires: triangle 577c4762a1bSJed Brown nsize: 2 578c4762a1bSJed Brown args: -dim 2 -cell_simplex 1 -dm_refine 0 -interpolate 0 -petscpartitioner_type simple -partition_view -dm_view ascii::ascii_info_detail 579c4762a1bSJed Brown test: 580c4762a1bSJed Brown suffix: part_simple_1 581c4762a1bSJed Brown requires: triangle 582c4762a1bSJed Brown nsize: 8 583c4762a1bSJed Brown args: -dim 2 -cell_simplex 1 -dm_refine 1 -interpolate 1 -petscpartitioner_type simple -partition_view -dm_view ascii::ascii_info_detail 584c4762a1bSJed Brown 585c4762a1bSJed Brown # Parallel partitioner tests 586c4762a1bSJed Brown test: 587c4762a1bSJed Brown suffix: part_parmetis_0 588c4762a1bSJed Brown requires: parmetis 589c4762a1bSJed Brown nsize: 2 590c4762a1bSJed 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 591c4762a1bSJed Brown test: 592c4762a1bSJed Brown suffix: part_ptscotch_0 593c4762a1bSJed Brown requires: ptscotch 594c4762a1bSJed Brown nsize: 2 595c4762a1bSJed 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 596c4762a1bSJed Brown test: 597c4762a1bSJed Brown suffix: part_ptscotch_1 598c4762a1bSJed Brown requires: ptscotch 599c4762a1bSJed Brown nsize: 8 600c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -dm_refine 1 -interpolate 1 -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1 601c4762a1bSJed Brown 602c4762a1bSJed Brown # CGNS reader tests 10-11 (need to find smaller test meshes) 603c4762a1bSJed Brown test: 604c4762a1bSJed Brown suffix: cgns_0 605c4762a1bSJed Brown requires: cgns 606c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -interpolate 1 -dm_view 607c4762a1bSJed Brown 608c4762a1bSJed Brown # Gmsh mesh reader tests 609c4762a1bSJed Brown test: 610c4762a1bSJed Brown suffix: gmsh_0 611c4762a1bSJed Brown requires: !single 612c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -interpolate 1 -dm_view 613c4762a1bSJed Brown test: 614c4762a1bSJed Brown suffix: gmsh_1 615c4762a1bSJed Brown requires: !single 616c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -interpolate 1 -dm_view 617c4762a1bSJed Brown test: 618c4762a1bSJed Brown suffix: gmsh_2 619c4762a1bSJed Brown requires: !single 620c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -interpolate 1 -dm_view 621c4762a1bSJed Brown test: 622c4762a1bSJed Brown suffix: gmsh_3 623c4762a1bSJed Brown nsize: 3 624c4762a1bSJed Brown requires: !single 625c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -test_partition -interpolate 1 -dm_view 626c4762a1bSJed Brown test: 627c4762a1bSJed Brown suffix: gmsh_4 628c4762a1bSJed Brown nsize: 3 629c4762a1bSJed Brown requires: !single 630c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -test_partition -interpolate 1 -dm_view 631c4762a1bSJed Brown test: 632c4762a1bSJed Brown suffix: gmsh_5 633c4762a1bSJed Brown requires: !single 634c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh -interpolate 1 -dm_view 635c4762a1bSJed Brown # TODO: it seems the mesh is not a valid gmsh (inverted cell) 636c4762a1bSJed Brown test: 637c4762a1bSJed Brown suffix: gmsh_6 638c4762a1bSJed Brown requires: !single 639c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -interpolate 1 -dm_view -final_diagnostics 0 640c4762a1bSJed Brown test: 641c4762a1bSJed Brown suffix: gmsh_7 64254fcfd0cSMatthew 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 643c4762a1bSJed Brown test: 644c4762a1bSJed Brown suffix: gmsh_8 64554fcfd0cSMatthew 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 646c4762a1bSJed Brown testset: 64754fcfd0cSMatthew G. Knepley args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic_bin.msh -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all 648c4762a1bSJed Brown test: 649c4762a1bSJed Brown suffix: gmsh_9 650c4762a1bSJed Brown test: 651c4762a1bSJed Brown suffix: gmsh_9_periodic_0 652c4762a1bSJed Brown args: -dm_plex_gmsh_periodic 0 653c4762a1bSJed Brown testset: 65454fcfd0cSMatthew G. Knepley args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all 655c4762a1bSJed Brown test: 656c4762a1bSJed Brown suffix: gmsh_10 657c4762a1bSJed Brown test: 658c4762a1bSJed Brown suffix: gmsh_10_periodic_0 659c4762a1bSJed Brown args: -dm_plex_gmsh_periodic 0 660c4762a1bSJed Brown testset: 66154fcfd0cSMatthew 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 662c4762a1bSJed Brown test: 663c4762a1bSJed Brown suffix: gmsh_11 664c4762a1bSJed Brown test: 665c4762a1bSJed Brown suffix: gmsh_11_periodic_0 666c4762a1bSJed Brown args: -dm_plex_gmsh_periodic 0 667c4762a1bSJed Brown # TODO: it seems the mesh is not a valid gmsh (inverted cell) 668c4762a1bSJed Brown test: 669c4762a1bSJed Brown suffix: gmsh_12 670c4762a1bSJed Brown nsize: 4 671c4762a1bSJed Brown requires: !single mpiio 672c4762a1bSJed 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 673c4762a1bSJed Brown test: 674c4762a1bSJed Brown suffix: gmsh_13_hybs2t 675c4762a1bSJed Brown nsize: 4 67696ca5757SLisandro 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 677c4762a1bSJed Brown test: 678c4762a1bSJed Brown suffix: gmsh_14_ext 679c4762a1bSJed Brown requires: !single 68054fcfd0cSMatthew 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 681c4762a1bSJed Brown test: 682c4762a1bSJed Brown suffix: gmsh_14_ext_s2t 683c4762a1bSJed Brown requires: !single 68496ca5757SLisandro 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 685c4762a1bSJed Brown test: 686c4762a1bSJed Brown suffix: gmsh_15_hyb3d 68754fcfd0cSMatthew G. Knepley args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -interpolate -dm_plex_check_all 688c4762a1bSJed Brown test: 689c4762a1bSJed Brown suffix: gmsh_15_hyb3d_vtk 69054fcfd0cSMatthew 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 691c4762a1bSJed Brown test: 692c4762a1bSJed Brown suffix: gmsh_15_hyb3d_s2t 69396ca5757SLisandro 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 694c4762a1bSJed Brown test: 695c4762a1bSJed Brown suffix: gmsh_16_spheresurface 696c4762a1bSJed Brown nsize : 4 69754fcfd0cSMatthew 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 698c4762a1bSJed Brown test: 699c4762a1bSJed Brown suffix: gmsh_16_spheresurface_s2t 700c4762a1bSJed Brown nsize : 4 70196ca5757SLisandro 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 702c4762a1bSJed Brown test: 703c4762a1bSJed Brown suffix: gmsh_16_spheresurface_extruded 704c4762a1bSJed Brown nsize : 4 70554fcfd0cSMatthew 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 706c4762a1bSJed Brown test: 707c4762a1bSJed Brown suffix: gmsh_16_spheresurface_extruded_s2t 708c4762a1bSJed Brown nsize : 4 70996ca5757SLisandro 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 710c4762a1bSJed Brown test: 711c4762a1bSJed Brown suffix: gmsh_17_hyb3d_interp_ascii 71254fcfd0cSMatthew G. Knepley args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -interpolate -dm_plex_check_all 713c4762a1bSJed Brown test: 714c4762a1bSJed Brown suffix: exodus_17_hyb3d_interp_ascii 715c4762a1bSJed Brown requires: exodusii 71654fcfd0cSMatthew G. Knepley args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -interpolate -dm_plex_check_all 717c4762a1bSJed Brown 718c4762a1bSJed Brown # Legacy Gmsh v22/v40 ascii/binary reader tests 719c4762a1bSJed Brown testset: 720c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_legacy.out 72154fcfd0cSMatthew G. Knepley args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all 722c4762a1bSJed Brown test: 723c4762a1bSJed Brown suffix: gmsh_3d_ascii_v22 724c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2 725c4762a1bSJed Brown test: 726c4762a1bSJed Brown suffix: gmsh_3d_ascii_v40 727c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4 728c4762a1bSJed Brown test: 729c4762a1bSJed Brown suffix: gmsh_3d_binary_v22 730c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2 731c4762a1bSJed Brown test: 732c4762a1bSJed Brown suffix: gmsh_3d_binary_v40 733c4762a1bSJed Brown requires: long64 734c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4 735c4762a1bSJed Brown 736c4762a1bSJed Brown # Gmsh v41 ascii/binary reader tests 737c4762a1bSJed Brown testset: # 32bit mesh, sequential 73854fcfd0cSMatthew G. Knepley args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all 739c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_32.out 740c4762a1bSJed Brown test: 741c4762a1bSJed Brown suffix: gmsh_3d_ascii_v41_32 742c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh 743c4762a1bSJed Brown test: 744c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_32 745c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh 746c4762a1bSJed Brown test: 747c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_32_mpiio 748c4762a1bSJed Brown requires: define(PETSC_HAVE_MPIIO) 749c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio 750c4762a1bSJed Brown testset: # 32bit mesh, parallel 75154fcfd0cSMatthew G. Knepley args: -petscpartitioner_type simple -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all 752c4762a1bSJed Brown nsize: 2 753c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_32_np2.out 754c4762a1bSJed Brown test: 755c4762a1bSJed Brown suffix: gmsh_3d_ascii_v41_32_np2 756c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh 757c4762a1bSJed Brown test: 758c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_32_np2 759c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh 760c4762a1bSJed Brown test: 761c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_32_np2_mpiio 762c4762a1bSJed Brown requires: define(PETSC_HAVE_MPIIO) 763c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio 764c4762a1bSJed Brown testset: # 64bit mesh, sequential 76554fcfd0cSMatthew G. Knepley args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all 766c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_64.out 767c4762a1bSJed Brown test: 768c4762a1bSJed Brown suffix: gmsh_3d_ascii_v41_64 769c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh 770c4762a1bSJed Brown test: 771c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_64 772c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh 773c4762a1bSJed Brown test: 774c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_64_mpiio 775c4762a1bSJed Brown requires: define(PETSC_HAVE_MPIIO) 776c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio 777c4762a1bSJed Brown testset: # 64bit mesh, parallel 77854fcfd0cSMatthew G. Knepley args: -petscpartitioner_type simple -dm_view ::ascii_info_detail -interpolate -dm_plex_check_all 779c4762a1bSJed Brown nsize: 2 780c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_64_np2.out 781c4762a1bSJed Brown test: 782c4762a1bSJed Brown suffix: gmsh_3d_ascii_v41_64_np2 783c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh 784c4762a1bSJed Brown test: 785c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_64_np2 786c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh 787c4762a1bSJed Brown test: 788c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_64_np2_mpiio 789c4762a1bSJed Brown requires: define(PETSC_HAVE_MPIIO) 790c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio 791c4762a1bSJed Brown 792c4762a1bSJed Brown # Fluent mesh reader tests 793c4762a1bSJed Brown # TODO: Geometry checks fail 794c4762a1bSJed Brown test: 795c4762a1bSJed Brown suffix: fluent_0 796c4762a1bSJed Brown requires: !complex 797c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -interpolate 1 -dm_view -final_diagnostics 0 798c4762a1bSJed Brown test: 799c4762a1bSJed Brown suffix: fluent_1 800c4762a1bSJed Brown nsize: 3 801c4762a1bSJed Brown requires: !complex 802c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -interpolate 1 -test_partition -dm_view -final_diagnostics 0 803c4762a1bSJed Brown test: 804c4762a1bSJed Brown suffix: fluent_2 805c4762a1bSJed Brown requires: !complex 806c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -interpolate 1 -dm_view -final_diagnostics 0 807c4762a1bSJed Brown test: 808c4762a1bSJed Brown suffix: fluent_3 809c4762a1bSJed Brown requires: !complex 810c4762a1bSJed Brown TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382 811c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -interpolate 1 -dm_view -final_diagnostics 0 812c4762a1bSJed Brown 813c4762a1bSJed Brown # Med mesh reader tests, including parallel file reads 814c4762a1bSJed Brown test: 815c4762a1bSJed Brown suffix: med_0 816c4762a1bSJed Brown requires: med 817c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -interpolate 1 -dm_view 818c4762a1bSJed Brown test: 819c4762a1bSJed Brown suffix: med_1 820c4762a1bSJed Brown requires: med 821c4762a1bSJed Brown nsize: 3 822c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -interpolate 1 -petscpartitioner_type simple -dm_view 823c4762a1bSJed Brown test: 824c4762a1bSJed Brown suffix: med_2 825c4762a1bSJed Brown requires: med 826c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -interpolate 1 -dm_view 827c4762a1bSJed Brown test: 828c4762a1bSJed Brown suffix: med_3 829c4762a1bSJed Brown requires: med 830c4762a1bSJed Brown TODO: MED 831c4762a1bSJed Brown nsize: 3 832c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -interpolate 1 -petscpartitioner_type simple -dm_view 833c4762a1bSJed Brown 834c4762a1bSJed Brown # Test shape quality 835c4762a1bSJed Brown test: 836c4762a1bSJed Brown suffix: test_shape 837c4762a1bSJed Brown requires: ctetgen 83854fcfd0cSMatthew G. Knepley args: -dim 3 -interpolate -dm_refine_hierarchy 3 -dm_plex_check_all -dm_plex_check_cell_shape 839c4762a1bSJed Brown 840c4762a1bSJed Brown # Test simplex to tensor conversion 841c4762a1bSJed Brown test: 842c4762a1bSJed Brown suffix: s2t2 843c4762a1bSJed Brown requires: triangle 84496ca5757SLisandro Dalcin args: -dim 2 -dm_refine 1 -interpolate -dm_plex_cell_refiner tobox -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail 845c4762a1bSJed Brown 846c4762a1bSJed Brown test: 847c4762a1bSJed Brown suffix: s2t3 848c4762a1bSJed Brown requires: ctetgen 84996ca5757SLisandro Dalcin args: -dim 3 -dm_refine 1 -interpolate -dm_plex_cell_refiner tobox -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail 850c4762a1bSJed Brown 851c4762a1bSJed Brown # Test domain shapes 852c4762a1bSJed Brown test: 853c4762a1bSJed Brown suffix: cylinder 85454fcfd0cSMatthew G. Knepley args: -dim 3 -cell_simplex 0 -interpolate -domain_shape cylinder -dm_plex_check_all -dm_view 855c4762a1bSJed Brown 856c4762a1bSJed Brown test: 857c4762a1bSJed Brown suffix: cylinder_per 85854fcfd0cSMatthew G. Knepley args: -dim 3 -cell_simplex 0 -interpolate -domain_shape cylinder -z_periodicity periodic -dm_plex_check_all -dm_view 859c4762a1bSJed Brown 860c4762a1bSJed Brown test: 861c4762a1bSJed Brown suffix: cylinder_wedge 86254fcfd0cSMatthew G. Knepley args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape cylinder -dm_view vtk: -dm_plex_check_all 863c4762a1bSJed Brown 864c4762a1bSJed Brown test: 865c4762a1bSJed Brown suffix: cylinder_wedge_int 866c4762a1bSJed Brown output_file: output/ex1_cylinder_wedge.out 86754fcfd0cSMatthew G. Knepley args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape cylinder -dm_view vtk: -dm_plex_check_all 868c4762a1bSJed Brown 869c4762a1bSJed Brown test: 870c4762a1bSJed Brown suffix: box_2d 87154fcfd0cSMatthew G. Knepley args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 2 -dm_plex_check_all -dm_view 872c4762a1bSJed Brown 873c4762a1bSJed Brown test: 874c4762a1bSJed Brown suffix: box_2d_per 87554fcfd0cSMatthew G. Knepley args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 2 -dm_plex_check_all -dm_view 876c4762a1bSJed Brown 877c4762a1bSJed Brown test: 878c4762a1bSJed Brown suffix: box_2d_per_unint 87954fcfd0cSMatthew 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 880c4762a1bSJed Brown 881c4762a1bSJed Brown test: 882c4762a1bSJed Brown suffix: box_3d 88354fcfd0cSMatthew G. Knepley args: -dim 3 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 3 -dm_plex_check_all -dm_view 884c4762a1bSJed Brown 885c4762a1bSJed Brown test: 886c4762a1bSJed Brown requires: triangle 887c4762a1bSJed Brown suffix: box_wedge 88854fcfd0cSMatthew G. Knepley args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape box -dm_view vtk: -dm_plex_check_all 889c4762a1bSJed Brown 890c4762a1bSJed Brown testset: 891c4762a1bSJed Brown requires: triangle 89296ca5757SLisandro 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 893c4762a1bSJed Brown test: 894c4762a1bSJed Brown suffix: box_wedge_s2t 895c4762a1bSJed Brown test: 896c4762a1bSJed Brown nsize: 3 897c4762a1bSJed Brown args: -petscpartitioner_type simple 898c4762a1bSJed Brown suffix: box_wedge_s2t_parallel 899c4762a1bSJed Brown 900c4762a1bSJed Brown # Test GLVis output 901c4762a1bSJed Brown test: 902c4762a1bSJed Brown suffix: glvis_2d_tet 903c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis: 904c4762a1bSJed Brown 905c4762a1bSJed Brown test: 906c4762a1bSJed Brown suffix: glvis_2d_tet_per 907c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0 908c4762a1bSJed Brown 909c4762a1bSJed Brown test: 910c4762a1bSJed Brown suffix: glvis_2d_tet_per_mfem 911c4762a1bSJed 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 912c4762a1bSJed Brown 913c4762a1bSJed Brown test: 914c4762a1bSJed Brown suffix: glvis_2d_quad 915c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3 -dm_view glvis: 916c4762a1bSJed Brown 917c4762a1bSJed Brown test: 918c4762a1bSJed Brown suffix: glvis_2d_quad_per 919c4762a1bSJed 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 920c4762a1bSJed Brown 921c4762a1bSJed Brown test: 922c4762a1bSJed Brown suffix: glvis_2d_quad_per_mfem 923c4762a1bSJed 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 924c4762a1bSJed Brown 925c4762a1bSJed Brown test: 926c4762a1bSJed Brown suffix: glvis_3d_tet 927c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis: 928c4762a1bSJed Brown 929c4762a1bSJed Brown test: 930c4762a1bSJed Brown suffix: glvis_3d_tet_per 931c4762a1bSJed 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 932c4762a1bSJed Brown 933c4762a1bSJed Brown test: 934c4762a1bSJed Brown suffix: glvis_3d_tet_per_mfem 935c4762a1bSJed Brown TODO: broken 936c4762a1bSJed 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 937c4762a1bSJed Brown 938c4762a1bSJed Brown test: 939c4762a1bSJed Brown suffix: glvis_3d_hex 94054fcfd0cSMatthew G. Knepley args: -dim 3 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3,3 -dm_view glvis: 941c4762a1bSJed Brown 942c4762a1bSJed Brown test: 943c4762a1bSJed Brown suffix: glvis_3d_hex_per 94454fcfd0cSMatthew 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 945c4762a1bSJed Brown 946c4762a1bSJed Brown test: 947c4762a1bSJed Brown suffix: glvis_3d_hex_per_mfem 948c4762a1bSJed 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 949c4762a1bSJed Brown 950c4762a1bSJed Brown # Test P4EST 951c4762a1bSJed Brown testset: 952c4762a1bSJed Brown requires: p4est 95354fcfd0cSMatthew G. Knepley args: -interpolate -dm_view -test_p4est_seq -conv_seq_2_dm_plex_check_all -conv_seq_1_dm_forest_minimum_refinement 1 954c4762a1bSJed Brown test: 955c4762a1bSJed Brown suffix: p4est_periodic 956c4762a1bSJed 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 957c4762a1bSJed Brown test: 958c4762a1bSJed Brown suffix: p4est_periodic_3d 959c4762a1bSJed 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 960c4762a1bSJed Brown test: 961c4762a1bSJed Brown suffix: p4est_gmsh_periodic 962c4762a1bSJed 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 963c4762a1bSJed Brown test: 964c4762a1bSJed Brown suffix: p4est_gmsh_surface 965c4762a1bSJed 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 966c4762a1bSJed Brown test: 967c4762a1bSJed Brown suffix: p4est_gmsh_surface_parallel 968c4762a1bSJed Brown nsize: 2 969c4762a1bSJed 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 970c4762a1bSJed Brown test: 971c4762a1bSJed Brown suffix: p4est_hyb_2d 972c4762a1bSJed 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 973c4762a1bSJed Brown test: 974c4762a1bSJed Brown suffix: p4est_hyb_3d 975c4762a1bSJed 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 976c4762a1bSJed Brown test: 977c4762a1bSJed Brown requires: ctetgen 978c4762a1bSJed Brown suffix: p4est_s2t_bugfaces_3d 979c4762a1bSJed 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 980c4762a1bSJed Brown test: 981c4762a1bSJed Brown suffix: p4est_bug_overlapsf 982c4762a1bSJed Brown nsize: 3 983c4762a1bSJed 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 984c4762a1bSJed Brown test: 985c4762a1bSJed Brown suffix: p4est_redistribute 986c4762a1bSJed Brown nsize: 3 987c4762a1bSJed 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 988c4762a1bSJed Brown test: 989c4762a1bSJed Brown suffix: p4est_gmsh_s2t_3d 990c4762a1bSJed Brown args: -conv_seq_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh 991c4762a1bSJed Brown test: 992c4762a1bSJed Brown suffix: p4est_gmsh_s2t_3d_hash 993c4762a1bSJed 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 994c4762a1bSJed Brown test: 995c4762a1bSJed Brown requires: long_runtime 996c4762a1bSJed Brown suffix: p4est_gmsh_periodic_3d 997c4762a1bSJed 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 998c4762a1bSJed Brown 999c4762a1bSJed Brown testset: 1000c4762a1bSJed Brown requires: p4est 1001c4762a1bSJed Brown nsize: 6 100254fcfd0cSMatthew 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 1003c4762a1bSJed Brown test: 100454fcfd0cSMatthew G. Knepley TODO: interface cones do not conform 1005c4762a1bSJed Brown suffix: p4est_par_periodic 1006c4762a1bSJed 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 1007c4762a1bSJed Brown test: 100854fcfd0cSMatthew G. Knepley TODO: interface cones do not conform 1009c4762a1bSJed Brown suffix: p4est_par_periodic_3d 1010c4762a1bSJed 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 1011c4762a1bSJed Brown test: 101254fcfd0cSMatthew G. Knepley TODO: interface cones do not conform 1013c4762a1bSJed Brown suffix: p4est_par_gmsh_periodic 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/square_periodic.msh 1015c4762a1bSJed Brown test: 1016c4762a1bSJed Brown suffix: p4est_par_gmsh_surface 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/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 1018c4762a1bSJed Brown test: 1019c4762a1bSJed Brown suffix: p4est_par_gmsh_s2t_3d 1020c4762a1bSJed Brown args: -conv_par_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh 1021c4762a1bSJed Brown test: 102254fcfd0cSMatthew G. Knepley TODO: interface cones do not conform 1023c4762a1bSJed Brown suffix: p4est_par_gmsh_s2t_3d_hash 1024c4762a1bSJed 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 1025c4762a1bSJed Brown test: 1026c4762a1bSJed Brown requires: long_runtime 1027c4762a1bSJed Brown suffix: p4est_par_gmsh_periodic_3d 1028c4762a1bSJed 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 1029c4762a1bSJed Brown 1030c4762a1bSJed Brown testset: 1031c4762a1bSJed Brown requires: p4est 1032c4762a1bSJed Brown nsize: 6 103354fcfd0cSMatthew 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 1034c4762a1bSJed Brown test: 1035c4762a1bSJed Brown suffix: p4est_par_ovl_periodic 1036c4762a1bSJed 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 1037c4762a1bSJed Brown #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled) 1038c4762a1bSJed Brown test: 1039c4762a1bSJed Brown suffix: p4est_par_ovl_periodic_3d 1040c4762a1bSJed 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 1041c4762a1bSJed Brown test: 1042c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_periodic 1043c4762a1bSJed 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 1044c4762a1bSJed Brown test: 1045c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_surface 1046c4762a1bSJed 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 1047c4762a1bSJed Brown test: 1048c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_s2t_3d 1049c4762a1bSJed Brown args: -conv_par_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh 1050c4762a1bSJed Brown test: 1051c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_s2t_3d_hash 1052c4762a1bSJed 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 1053c4762a1bSJed Brown test: 1054c4762a1bSJed Brown requires: long_runtime 1055c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_periodic_3d 1056c4762a1bSJed 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 1057c4762a1bSJed Brown test: 1058c4762a1bSJed Brown suffix: p4est_par_ovl_hyb_2d 1059c4762a1bSJed 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 1060c4762a1bSJed Brown test: 1061c4762a1bSJed Brown suffix: p4est_par_ovl_hyb_3d 1062c4762a1bSJed 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 1063c4762a1bSJed Brown 1064c4762a1bSJed Brown test: 1065c4762a1bSJed Brown TODO: broken 1066c4762a1bSJed Brown requires: p4est 1067c4762a1bSJed Brown nsize: 2 1068c4762a1bSJed Brown suffix: p4est_bug_labels_noovl 106954fcfd0cSMatthew 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 1070c4762a1bSJed Brown 1071c4762a1bSJed Brown test: 1072c4762a1bSJed Brown requires: p4est 1073c4762a1bSJed Brown nsize: 2 1074c4762a1bSJed Brown suffix: p4est_bug_distribute_overlap 107554fcfd0cSMatthew 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 1076c4762a1bSJed Brown args: -dm_post_overlap_view 1077c4762a1bSJed Brown 1078c4762a1bSJed Brown test: 1079c4762a1bSJed Brown suffix: glvis_2d_hyb 1080c4762a1bSJed 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 1081c4762a1bSJed Brown 1082c4762a1bSJed Brown test: 1083c4762a1bSJed Brown suffix: glvis_3d_hyb 1084c4762a1bSJed 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 1085c4762a1bSJed Brown 1086c4762a1bSJed Brown test: 1087c4762a1bSJed Brown suffix: glvis_3d_hyb_s2t 108896ca5757SLisandro 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 1089595782ffSMatthew G. Knepley 1090595782ffSMatthew G. Knepley test: 1091595782ffSMatthew G. Knepley suffix: ref_alfeld2d_0 1092595782ffSMatthew G. Knepley requires: triangle 1093595782ffSMatthew 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 1094595782ffSMatthew G. Knepley test: 1095595782ffSMatthew G. Knepley suffix: ref_alfeld3d_0 1096595782ffSMatthew G. Knepley requires: ctetgen 1097595782ffSMatthew 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 1098595782ffSMatthew G. Knepley 1099*09c713e7SStefano Zampini # Boundary layer refiners 1100*09c713e7SStefano Zampini test: 1101*09c713e7SStefano Zampini suffix: ref_bl_1 1102*09c713e7SStefano 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}} 1103*09c713e7SStefano Zampini test: 1104*09c713e7SStefano Zampini suffix: ref_bl_2_tri 1105*09c713e7SStefano Zampini requires: triangle 1106*09c713e7SStefano 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}} 1107*09c713e7SStefano Zampini test: 1108*09c713e7SStefano Zampini suffix: ref_bl_3_quad 1109*09c713e7SStefano 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}} 1110*09c713e7SStefano Zampini test: 1111*09c713e7SStefano Zampini suffix: ref_bl_spheresurface_extruded 1112*09c713e7SStefano Zampini nsize : 4 1113*09c713e7SStefano 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 1114*09c713e7SStefano Zampini test: 1115*09c713e7SStefano Zampini suffix: ref_bl_3d_hyb 1116*09c713e7SStefano Zampini nsize : 4 1117*09c713e7SStefano 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 1118c4762a1bSJed Brown TEST*/ 1119