1*c4762a1bSJed Brown static char help[] = "Tests various DMPlex routines to construct, refine and distribute a mesh.\n\n"; 2*c4762a1bSJed Brown 3*c4762a1bSJed Brown #include <petscdmplex.h> 4*c4762a1bSJed Brown 5*c4762a1bSJed Brown typedef enum {BOX, CYLINDER, SPHERE, BALL} DomainShape; 6*c4762a1bSJed Brown enum {STAGE_LOAD, STAGE_DISTRIBUTE, STAGE_REFINE, STAGE_OVERLAP}; 7*c4762a1bSJed Brown 8*c4762a1bSJed Brown typedef struct { 9*c4762a1bSJed Brown DM dm; /* REQUIRED in order to use SNES evaluation functions */ 10*c4762a1bSJed Brown PetscInt debug; /* The debugging level */ 11*c4762a1bSJed Brown PetscLogEvent createMeshEvent; 12*c4762a1bSJed Brown PetscLogStage stages[4]; 13*c4762a1bSJed Brown /* Domain and mesh definition */ 14*c4762a1bSJed Brown PetscInt dim; /* The topological mesh dimension */ 15*c4762a1bSJed Brown PetscBool interpolate; /* Generate intermediate mesh elements */ 16*c4762a1bSJed Brown PetscReal refinementLimit; /* The largest allowable cell volume */ 17*c4762a1bSJed Brown PetscBool cellSimplex; /* Use simplices or hexes */ 18*c4762a1bSJed Brown PetscBool cellWedge; /* Use wedges */ 19*c4762a1bSJed Brown PetscBool simplex2tensor; /* Refine simplicials in hexes */ 20*c4762a1bSJed Brown DomainShape domainShape; /* Shape of the region to be meshed */ 21*c4762a1bSJed Brown PetscInt *domainBoxSizes; /* Sizes of the box mesh */ 22*c4762a1bSJed Brown PetscReal *domainBoxL,*domainBoxU; /* Lower left, upper right corner of the box mesh */ 23*c4762a1bSJed Brown DMBoundaryType periodicity[3]; /* The domain periodicity */ 24*c4762a1bSJed Brown char filename[PETSC_MAX_PATH_LEN]; /* Import mesh from file */ 25*c4762a1bSJed Brown char bdfilename[PETSC_MAX_PATH_LEN]; /* Import mesh boundary from file */ 26*c4762a1bSJed Brown char extfilename[PETSC_MAX_PATH_LEN]; /* Import 2D mesh to be extruded from file */ 27*c4762a1bSJed Brown PetscBool testPartition; /* Use a fixed partitioning for testing */ 28*c4762a1bSJed Brown PetscInt overlap; /* The cell overlap to use during partitioning */ 29*c4762a1bSJed Brown PetscBool testShape; /* Test the cell shape quality */ 30*c4762a1bSJed Brown PetscReal extrude_thickness; /* Thickness of extrusion */ 31*c4762a1bSJed Brown PetscInt extrude_layers; /* Layers to be extruded */ 32*c4762a1bSJed Brown PetscBool testp4est[2]; 33*c4762a1bSJed Brown PetscBool redistribute; 34*c4762a1bSJed Brown PetscBool final_ref; /* Run refinement at the end */ 35*c4762a1bSJed Brown PetscBool final_diagnostics; /* Run diagnostics on the final mesh */ 36*c4762a1bSJed Brown } AppCtx; 37*c4762a1bSJed Brown 38*c4762a1bSJed Brown PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options) 39*c4762a1bSJed Brown { 40*c4762a1bSJed Brown const char *dShapes[4] = {"box", "cylinder", "sphere", "ball"}; 41*c4762a1bSJed Brown PetscInt shape, bd, n; 42*c4762a1bSJed Brown static PetscInt domainBoxSizes[3] = {1,1,1}; 43*c4762a1bSJed Brown static PetscReal domainBoxL[3] = {0.,0.,0.}; 44*c4762a1bSJed Brown static PetscReal domainBoxU[3] = {1.,1.,1.}; 45*c4762a1bSJed Brown PetscBool flg; 46*c4762a1bSJed Brown PetscErrorCode ierr; 47*c4762a1bSJed Brown 48*c4762a1bSJed Brown PetscFunctionBegin; 49*c4762a1bSJed Brown options->debug = 0; 50*c4762a1bSJed Brown options->dim = 2; 51*c4762a1bSJed Brown options->interpolate = PETSC_FALSE; 52*c4762a1bSJed Brown options->refinementLimit = 0.0; 53*c4762a1bSJed Brown options->cellSimplex = PETSC_TRUE; 54*c4762a1bSJed Brown options->cellWedge = PETSC_FALSE; 55*c4762a1bSJed Brown options->domainShape = BOX; 56*c4762a1bSJed Brown options->domainBoxSizes = NULL; 57*c4762a1bSJed Brown options->domainBoxL = NULL; 58*c4762a1bSJed Brown options->domainBoxU = NULL; 59*c4762a1bSJed Brown options->periodicity[0] = DM_BOUNDARY_NONE; 60*c4762a1bSJed Brown options->periodicity[1] = DM_BOUNDARY_NONE; 61*c4762a1bSJed Brown options->periodicity[2] = DM_BOUNDARY_NONE; 62*c4762a1bSJed Brown options->filename[0] = '\0'; 63*c4762a1bSJed Brown options->bdfilename[0] = '\0'; 64*c4762a1bSJed Brown options->extfilename[0] = '\0'; 65*c4762a1bSJed Brown options->testPartition = PETSC_FALSE; 66*c4762a1bSJed Brown options->overlap = 0; 67*c4762a1bSJed Brown options->testShape = PETSC_FALSE; 68*c4762a1bSJed Brown options->simplex2tensor = PETSC_FALSE; 69*c4762a1bSJed Brown options->extrude_layers = 2; 70*c4762a1bSJed Brown options->extrude_thickness = 0.1; 71*c4762a1bSJed Brown options->testp4est[0] = PETSC_FALSE; 72*c4762a1bSJed Brown options->testp4est[1] = PETSC_FALSE; 73*c4762a1bSJed Brown options->redistribute = PETSC_FALSE; 74*c4762a1bSJed Brown options->final_ref = PETSC_FALSE; 75*c4762a1bSJed Brown options->final_diagnostics = PETSC_TRUE; 76*c4762a1bSJed Brown 77*c4762a1bSJed Brown ierr = PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");CHKERRQ(ierr); 78*c4762a1bSJed Brown ierr = PetscOptionsBoundedInt("-debug", "The debugging level", "ex1.c", options->debug, &options->debug, NULL,0);CHKERRQ(ierr); 79*c4762a1bSJed Brown ierr = PetscOptionsRangeInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, NULL,1,3);CHKERRQ(ierr); 80*c4762a1bSJed Brown ierr = PetscOptionsBool("-interpolate", "Generate intermediate mesh elements", "ex1.c", options->interpolate, &options->interpolate, NULL);CHKERRQ(ierr); 81*c4762a1bSJed Brown ierr = PetscOptionsReal("-refinement_limit", "The largest allowable cell volume", "ex1.c", options->refinementLimit, &options->refinementLimit, NULL);CHKERRQ(ierr); 82*c4762a1bSJed Brown ierr = PetscOptionsBool("-cell_simplex", "Use simplices if true, otherwise hexes", "ex1.c", options->cellSimplex, &options->cellSimplex, NULL);CHKERRQ(ierr); 83*c4762a1bSJed Brown ierr = PetscOptionsBool("-cell_wedge", "Use wedges if true", "ex1.c", options->cellWedge, &options->cellWedge, NULL);CHKERRQ(ierr); 84*c4762a1bSJed Brown ierr = PetscOptionsBool("-simplex2tensor", "Refine simplicial cells in tensor product cells", "ex1.c", options->simplex2tensor, &options->simplex2tensor, NULL);CHKERRQ(ierr); 85*c4762a1bSJed Brown if (options->simplex2tensor) options->interpolate = PETSC_TRUE; 86*c4762a1bSJed Brown shape = options->domainShape; 87*c4762a1bSJed Brown ierr = PetscOptionsEList("-domain_shape","The shape of the domain","ex1.c", dShapes, 4, dShapes[options->domainShape], &shape, NULL);CHKERRQ(ierr); 88*c4762a1bSJed Brown options->domainShape = (DomainShape) shape; 89*c4762a1bSJed Brown ierr = PetscOptionsIntArray("-domain_box_sizes","The sizes of the box domain","ex1.c", domainBoxSizes, (n=3,&n), &flg);CHKERRQ(ierr); 90*c4762a1bSJed Brown if (flg) { options->domainShape = BOX; options->domainBoxSizes = domainBoxSizes;} 91*c4762a1bSJed 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); 92*c4762a1bSJed Brown if (flg) { options->domainBoxL = domainBoxL;} 93*c4762a1bSJed 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); 94*c4762a1bSJed Brown if (flg) { options->domainBoxU = domainBoxU;} 95*c4762a1bSJed Brown bd = options->periodicity[0]; 96*c4762a1bSJed Brown ierr = PetscOptionsEList("-x_periodicity", "The x-boundary periodicity", "ex1.c", DMBoundaryTypes, 5, DMBoundaryTypes[options->periodicity[0]], &bd, NULL);CHKERRQ(ierr); 97*c4762a1bSJed Brown options->periodicity[0] = (DMBoundaryType) bd; 98*c4762a1bSJed Brown bd = options->periodicity[1]; 99*c4762a1bSJed Brown ierr = PetscOptionsEList("-y_periodicity", "The y-boundary periodicity", "ex1.c", DMBoundaryTypes, 5, DMBoundaryTypes[options->periodicity[1]], &bd, NULL);CHKERRQ(ierr); 100*c4762a1bSJed Brown options->periodicity[1] = (DMBoundaryType) bd; 101*c4762a1bSJed Brown bd = options->periodicity[2]; 102*c4762a1bSJed Brown ierr = PetscOptionsEList("-z_periodicity", "The z-boundary periodicity", "ex1.c", DMBoundaryTypes, 5, DMBoundaryTypes[options->periodicity[2]], &bd, NULL);CHKERRQ(ierr); 103*c4762a1bSJed Brown options->periodicity[2] = (DMBoundaryType) bd; 104*c4762a1bSJed Brown ierr = PetscOptionsString("-filename", "The mesh file", "ex1.c", options->filename, options->filename, PETSC_MAX_PATH_LEN, NULL);CHKERRQ(ierr); 105*c4762a1bSJed Brown ierr = PetscOptionsString("-bd_filename", "The mesh boundary file", "ex1.c", options->bdfilename, options->bdfilename, PETSC_MAX_PATH_LEN, NULL);CHKERRQ(ierr); 106*c4762a1bSJed Brown ierr = PetscOptionsString("-ext_filename", "The 2D mesh file to be extruded", "ex1.c", options->extfilename, options->extfilename, PETSC_MAX_PATH_LEN, NULL);CHKERRQ(ierr); 107*c4762a1bSJed Brown ierr = PetscOptionsBoundedInt("-ext_layers", "The number of layers to extrude", "ex1.c", options->extrude_layers, &options->extrude_layers, NULL,0);CHKERRQ(ierr); 108*c4762a1bSJed Brown ierr = PetscOptionsReal("-ext_thickness", "The thickness of the layer to be extruded", "ex1.c", options->extrude_thickness, &options->extrude_thickness, NULL);CHKERRQ(ierr); 109*c4762a1bSJed Brown ierr = PetscOptionsBool("-test_partition", "Use a fixed partition for testing", "ex1.c", options->testPartition, &options->testPartition, NULL);CHKERRQ(ierr); 110*c4762a1bSJed Brown ierr = PetscOptionsBoundedInt("-overlap", "The cell overlap for partitioning", "ex1.c", options->overlap, &options->overlap, NULL,0);CHKERRQ(ierr); 111*c4762a1bSJed Brown ierr = PetscOptionsBool("-test_shape", "Report cell shape qualities (Jacobian condition numbers)", "ex1.c", options->testShape, &options->testShape, NULL);CHKERRQ(ierr); 112*c4762a1bSJed Brown ierr = PetscOptionsBool("-test_p4est_seq", "Test p4est with sequential base DM", "ex1.c", options->testp4est[0], &options->testp4est[0], NULL);CHKERRQ(ierr); 113*c4762a1bSJed Brown ierr = PetscOptionsBool("-test_p4est_par", "Test p4est with parallel base DM", "ex1.c", options->testp4est[1], &options->testp4est[1], NULL);CHKERRQ(ierr); 114*c4762a1bSJed Brown ierr = PetscOptionsBool("-test_redistribute", "Test redistribution", "ex1.c", options->redistribute, &options->redistribute, NULL);CHKERRQ(ierr); 115*c4762a1bSJed Brown ierr = PetscOptionsBool("-final_ref", "Run uniform refinement on the final mesh", "ex1.c", options->final_ref, &options->final_ref, NULL);CHKERRQ(ierr); 116*c4762a1bSJed Brown ierr = PetscOptionsBool("-final_diagnostics", "Run diagnostics on the final mesh", "ex1.c", options->final_diagnostics, &options->final_diagnostics, NULL);CHKERRQ(ierr); 117*c4762a1bSJed Brown ierr = PetscOptionsEnd(); 118*c4762a1bSJed Brown 119*c4762a1bSJed Brown ierr = PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent);CHKERRQ(ierr); 120*c4762a1bSJed Brown ierr = PetscLogStageRegister("MeshLoad", &options->stages[STAGE_LOAD]);CHKERRQ(ierr); 121*c4762a1bSJed Brown ierr = PetscLogStageRegister("MeshDistribute", &options->stages[STAGE_DISTRIBUTE]);CHKERRQ(ierr); 122*c4762a1bSJed Brown ierr = PetscLogStageRegister("MeshRefine", &options->stages[STAGE_REFINE]);CHKERRQ(ierr); 123*c4762a1bSJed Brown ierr = PetscLogStageRegister("MeshOverlap", &options->stages[STAGE_OVERLAP]);CHKERRQ(ierr); 124*c4762a1bSJed Brown PetscFunctionReturn(0); 125*c4762a1bSJed Brown } 126*c4762a1bSJed Brown 127*c4762a1bSJed Brown /* Overload time to be the sphere radius */ 128*c4762a1bSJed Brown static void snapToSphere(PetscInt dim, PetscInt Nf, PetscInt NfAux, 129*c4762a1bSJed Brown const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], 130*c4762a1bSJed Brown const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], 131*c4762a1bSJed Brown PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f0[]) 132*c4762a1bSJed Brown { 133*c4762a1bSJed Brown PetscReal norm2 = 0.0, fac; 134*c4762a1bSJed Brown PetscInt n = uOff[1] - uOff[0], d; 135*c4762a1bSJed Brown 136*c4762a1bSJed Brown for (d = 0; d < n; ++d) norm2 += PetscSqr(PetscRealPart(u[d])); 137*c4762a1bSJed Brown fac = t/PetscSqrtReal(norm2); 138*c4762a1bSJed Brown for (d = 0; d < n; ++d) f0[d] = u[d]*fac; 139*c4762a1bSJed Brown } 140*c4762a1bSJed Brown 141*c4762a1bSJed Brown PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm) 142*c4762a1bSJed Brown { 143*c4762a1bSJed Brown PetscInt dim = user->dim; 144*c4762a1bSJed Brown PetscBool interpolate = user->interpolate; 145*c4762a1bSJed Brown PetscReal refinementLimit = user->refinementLimit; 146*c4762a1bSJed Brown PetscBool cellSimplex = user->cellSimplex; 147*c4762a1bSJed Brown PetscBool cellWedge = user->cellWedge; 148*c4762a1bSJed Brown PetscBool simplex2tensor = user->simplex2tensor; 149*c4762a1bSJed Brown const char *filename = user->filename; 150*c4762a1bSJed Brown const char *bdfilename = user->bdfilename; 151*c4762a1bSJed Brown const char *extfilename = user->extfilename; 152*c4762a1bSJed Brown PetscBool testp4est_seq = user->testp4est[0]; 153*c4762a1bSJed Brown PetscBool testp4est_par = user->testp4est[1]; 154*c4762a1bSJed Brown PetscInt triSizes_n2[2] = {4, 4}; 155*c4762a1bSJed Brown PetscInt triPoints_n2[8] = {3, 5, 6, 7, 0, 1, 2, 4}; 156*c4762a1bSJed Brown PetscInt triSizes_n8[8] = {1, 1, 1, 1, 1, 1, 1, 1}; 157*c4762a1bSJed Brown PetscInt triPoints_n8[8] = {0, 1, 2, 3, 4, 5, 6, 7}; 158*c4762a1bSJed Brown PetscInt quadSizes[2] = {2, 2}; 159*c4762a1bSJed Brown PetscInt quadPoints[4] = {2, 3, 0, 1}; 160*c4762a1bSJed Brown PetscInt gmshSizes_n3[3] = {14, 14, 14}; 161*c4762a1bSJed Brown PetscInt gmshPoints_n3[42] = {1, 2, 4, 5, 9, 10, 11, 15, 16, 20, 21, 27, 28, 29, 162*c4762a1bSJed Brown 3, 8, 12, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 163*c4762a1bSJed Brown 0, 6, 7, 13, 14, 17, 18, 19, 22, 23, 24, 25, 26, 41}; 164*c4762a1bSJed Brown PetscInt fluentSizes_n3[3] = {50, 50, 50}; 165*c4762a1bSJed 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, 166*c4762a1bSJed 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, 167*c4762a1bSJed 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, 168*c4762a1bSJed 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, 169*c4762a1bSJed 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, 170*c4762a1bSJed 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}; 171*c4762a1bSJed Brown size_t len, bdlen, extlen; 172*c4762a1bSJed Brown PetscMPIInt rank, size; 173*c4762a1bSJed Brown PetscErrorCode ierr; 174*c4762a1bSJed Brown 175*c4762a1bSJed Brown PetscFunctionBegin; 176*c4762a1bSJed Brown ierr = PetscLogEventBegin(user->createMeshEvent,0,0,0,0);CHKERRQ(ierr); 177*c4762a1bSJed Brown ierr = MPI_Comm_rank(comm, &rank);CHKERRQ(ierr); 178*c4762a1bSJed Brown ierr = MPI_Comm_size(comm, &size);CHKERRQ(ierr); 179*c4762a1bSJed Brown ierr = PetscStrlen(filename, &len);CHKERRQ(ierr); 180*c4762a1bSJed Brown ierr = PetscStrlen(bdfilename, &bdlen);CHKERRQ(ierr); 181*c4762a1bSJed Brown ierr = PetscStrlen(extfilename, &extlen);CHKERRQ(ierr); 182*c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_LOAD]);CHKERRQ(ierr); 183*c4762a1bSJed Brown if (len) { 184*c4762a1bSJed Brown ierr = DMPlexCreateFromFile(comm, filename, interpolate, dm);CHKERRQ(ierr); 185*c4762a1bSJed Brown } else if (bdlen) { 186*c4762a1bSJed Brown DM boundary; 187*c4762a1bSJed Brown 188*c4762a1bSJed Brown ierr = DMPlexCreateFromFile(comm, bdfilename, interpolate, &boundary);CHKERRQ(ierr); 189*c4762a1bSJed Brown ierr = DMPlexGenerate(boundary, NULL, interpolate, dm);CHKERRQ(ierr); 190*c4762a1bSJed Brown ierr = DMDestroy(&boundary);CHKERRQ(ierr); 191*c4762a1bSJed Brown } else if (extlen) { 192*c4762a1bSJed Brown DM edm; 193*c4762a1bSJed Brown 194*c4762a1bSJed Brown ierr = DMPlexCreateFromFile(comm, extfilename, interpolate, &edm);CHKERRQ(ierr); 195*c4762a1bSJed Brown ierr = DMPlexExtrude(edm, user->extrude_layers, user->extrude_thickness, PETSC_TRUE, interpolate, dm);CHKERRQ(ierr); 196*c4762a1bSJed Brown ierr = DMDestroy(&edm);CHKERRQ(ierr); 197*c4762a1bSJed Brown } else { 198*c4762a1bSJed Brown switch (user->domainShape) { 199*c4762a1bSJed Brown case BOX: 200*c4762a1bSJed Brown if (cellWedge) { 201*c4762a1bSJed Brown if (dim != 3) SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Dimension must be 3 for a wedge mesh, not %D", dim); 202*c4762a1bSJed Brown ierr = DMPlexCreateWedgeBoxMesh(comm, user->domainBoxSizes, user->domainBoxL, user->domainBoxU, user->periodicity, PETSC_FALSE, interpolate, dm);CHKERRQ(ierr); 203*c4762a1bSJed Brown } else { 204*c4762a1bSJed Brown ierr = DMPlexCreateBoxMesh(comm, dim, cellSimplex, user->domainBoxSizes, user->domainBoxL, user->domainBoxU, user->periodicity, interpolate, dm);CHKERRQ(ierr); 205*c4762a1bSJed Brown } 206*c4762a1bSJed Brown break; 207*c4762a1bSJed Brown case CYLINDER: 208*c4762a1bSJed Brown if (cellSimplex) SETERRQ(comm, PETSC_ERR_ARG_WRONG, "Cannot mesh a cylinder with simplices"); 209*c4762a1bSJed Brown if (dim != 3) SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Dimension must be 3 for a cylinder mesh, not %D", dim); 210*c4762a1bSJed Brown if (cellWedge) { 211*c4762a1bSJed Brown ierr = DMPlexCreateWedgeCylinderMesh(comm, 6, interpolate, dm);CHKERRQ(ierr); 212*c4762a1bSJed Brown } else { 213*c4762a1bSJed Brown ierr = DMPlexCreateHexCylinderMesh(comm, 3, user->periodicity[2], dm);CHKERRQ(ierr); 214*c4762a1bSJed Brown } 215*c4762a1bSJed Brown break; 216*c4762a1bSJed Brown case SPHERE: 217*c4762a1bSJed Brown ierr = DMPlexCreateSphereMesh(comm, dim, cellSimplex, dm);CHKERRQ(ierr); 218*c4762a1bSJed Brown break; 219*c4762a1bSJed Brown case BALL: 220*c4762a1bSJed Brown { 221*c4762a1bSJed Brown DM sdm; 222*c4762a1bSJed Brown PetscInt Nr = 0, r; 223*c4762a1bSJed Brown 224*c4762a1bSJed Brown ierr = DMPlexCreateSphereMesh(comm, dim-1, cellSimplex, &sdm);CHKERRQ(ierr); 225*c4762a1bSJed Brown { 226*c4762a1bSJed Brown DM cdm; 227*c4762a1bSJed Brown PetscFE fe; 228*c4762a1bSJed Brown PetscInt dim, dE; 229*c4762a1bSJed Brown 230*c4762a1bSJed Brown ierr = DMGetCoordinateDM(sdm, &cdm);CHKERRQ(ierr); 231*c4762a1bSJed Brown ierr = DMGetDimension(sdm, &dim);CHKERRQ(ierr); 232*c4762a1bSJed Brown ierr = DMGetCoordinateDim(sdm, &dE);CHKERRQ(ierr); 233*c4762a1bSJed Brown ierr = PetscFECreateLagrange(PETSC_COMM_SELF, dim, dE, PETSC_TRUE, 1, -1, &fe);CHKERRQ(ierr); 234*c4762a1bSJed Brown ierr = DMSetField(cdm, 0, NULL, (PetscObject) fe);CHKERRQ(ierr); 235*c4762a1bSJed Brown ierr = PetscFEDestroy(&fe);CHKERRQ(ierr); 236*c4762a1bSJed Brown ierr = DMCreateDS(cdm);CHKERRQ(ierr); 237*c4762a1bSJed Brown } 238*c4762a1bSJed Brown ierr = PetscOptionsGetInt(NULL, "bd_", "-dm_refine", &Nr, NULL);CHKERRQ(ierr); 239*c4762a1bSJed Brown for (r = 0; r < Nr; ++r) { 240*c4762a1bSJed Brown DM rdm, cdm, rcdm; 241*c4762a1bSJed Brown ierr = DMRefine(sdm, PETSC_COMM_WORLD, &rdm);CHKERRQ(ierr); 242*c4762a1bSJed Brown ierr = DMGetCoordinateDM(sdm, &cdm);CHKERRQ(ierr); 243*c4762a1bSJed Brown ierr = DMGetCoordinateDM(rdm, &rcdm);CHKERRQ(ierr); 244*c4762a1bSJed Brown ierr = DMCopyDisc(cdm, rcdm);CHKERRQ(ierr); 245*c4762a1bSJed Brown ierr = DMPlexRemapGeometry(rdm, 1.0, snapToSphere);CHKERRQ(ierr); 246*c4762a1bSJed Brown ierr = DMDestroy(&sdm);CHKERRQ(ierr); 247*c4762a1bSJed Brown sdm = rdm; 248*c4762a1bSJed Brown } 249*c4762a1bSJed Brown ierr = DMPlexGenerate(sdm, NULL, interpolate, dm);CHKERRQ(ierr); 250*c4762a1bSJed Brown ierr = DMDestroy(&sdm);CHKERRQ(ierr); 251*c4762a1bSJed Brown } 252*c4762a1bSJed Brown break; 253*c4762a1bSJed Brown default: SETERRQ1(comm, PETSC_ERR_ARG_WRONG, "Unknown domain shape %D", user->domainShape); 254*c4762a1bSJed Brown } 255*c4762a1bSJed Brown } 256*c4762a1bSJed Brown ierr = DMLocalizeCoordinates(*dm);CHKERRQ(ierr); /* needed for periodic */ 257*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm,NULL,"-init_dm_view");CHKERRQ(ierr); 258*c4762a1bSJed Brown ierr = DMGetDimension(*dm,&dim);CHKERRQ(ierr); 259*c4762a1bSJed Brown 260*c4762a1bSJed Brown if (testp4est_seq) { 261*c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST) 262*c4762a1bSJed Brown DM dmConv = NULL; 263*c4762a1bSJed Brown 264*c4762a1bSJed Brown ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr); 265*c4762a1bSJed Brown ierr = DMPlexRefineSimplexToTensor(*dm, &dmConv);CHKERRQ(ierr); 266*c4762a1bSJed Brown if (dmConv) { 267*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 268*c4762a1bSJed Brown *dm = dmConv; 269*c4762a1bSJed Brown } 270*c4762a1bSJed Brown user->cellSimplex = PETSC_FALSE; 271*c4762a1bSJed Brown 272*c4762a1bSJed Brown ierr = DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);CHKERRQ(ierr); 273*c4762a1bSJed Brown if (dmConv) { 274*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_1_");CHKERRQ(ierr); 275*c4762a1bSJed Brown ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr); 276*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 277*c4762a1bSJed Brown *dm = dmConv; 278*c4762a1bSJed Brown } 279*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_1_");CHKERRQ(ierr); 280*c4762a1bSJed Brown ierr = DMSetUp(*dm);CHKERRQ(ierr); 281*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 282*c4762a1bSJed Brown ierr = DMConvert(*dm,DMPLEX,&dmConv);CHKERRQ(ierr); 283*c4762a1bSJed Brown if (dmConv) { 284*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_seq_2_");CHKERRQ(ierr); 285*c4762a1bSJed Brown ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr); 286*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 287*c4762a1bSJed Brown *dm = dmConv; 288*c4762a1bSJed Brown } 289*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_seq_2_");CHKERRQ(ierr); 290*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 291*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr); 292*c4762a1bSJed Brown #else 293*c4762a1bSJed Brown SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est"); 294*c4762a1bSJed Brown #endif 295*c4762a1bSJed Brown } 296*c4762a1bSJed Brown 297*c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 298*c4762a1bSJed Brown if (!testp4est_seq) { 299*c4762a1bSJed Brown DM refinedMesh = NULL; 300*c4762a1bSJed Brown DM distributedMesh = NULL; 301*c4762a1bSJed Brown 302*c4762a1bSJed Brown if (user->testPartition) { 303*c4762a1bSJed Brown const PetscInt *sizes = NULL; 304*c4762a1bSJed Brown const PetscInt *points = NULL; 305*c4762a1bSJed Brown PetscPartitioner part; 306*c4762a1bSJed Brown 307*c4762a1bSJed Brown if (!rank) { 308*c4762a1bSJed Brown if (dim == 2 && cellSimplex && size == 2) { 309*c4762a1bSJed Brown sizes = triSizes_n2; points = triPoints_n2; 310*c4762a1bSJed Brown } else if (dim == 2 && cellSimplex && size == 8) { 311*c4762a1bSJed Brown sizes = triSizes_n8; points = triPoints_n8; 312*c4762a1bSJed Brown } else if (dim == 2 && !cellSimplex && size == 2) { 313*c4762a1bSJed Brown sizes = quadSizes; points = quadPoints; 314*c4762a1bSJed Brown } else if (dim == 2 && size == 3) { 315*c4762a1bSJed Brown PetscInt Nc; 316*c4762a1bSJed Brown 317*c4762a1bSJed Brown ierr = DMPlexGetHeightStratum(*dm, 0, NULL, &Nc);CHKERRQ(ierr); 318*c4762a1bSJed Brown if (Nc == 42) { /* Gmsh 3 & 4 */ 319*c4762a1bSJed Brown sizes = gmshSizes_n3; points = gmshPoints_n3; 320*c4762a1bSJed Brown } else if (Nc == 150) { /* Fluent 1 */ 321*c4762a1bSJed Brown sizes = fluentSizes_n3; points = fluentPoints_n3; 322*c4762a1bSJed Brown } else if (Nc == 42) { /* Med 1 */ 323*c4762a1bSJed Brown } else if (Nc == 161) { /* Med 3 */ 324*c4762a1bSJed Brown } 325*c4762a1bSJed Brown } 326*c4762a1bSJed Brown } 327*c4762a1bSJed Brown ierr = DMPlexGetPartitioner(*dm, &part);CHKERRQ(ierr); 328*c4762a1bSJed Brown ierr = PetscPartitionerSetType(part, PETSCPARTITIONERSHELL);CHKERRQ(ierr); 329*c4762a1bSJed Brown ierr = PetscPartitionerShellSetPartition(part, size, sizes, points);CHKERRQ(ierr); 330*c4762a1bSJed Brown } else { 331*c4762a1bSJed Brown PetscPartitioner part; 332*c4762a1bSJed Brown 333*c4762a1bSJed Brown ierr = DMPlexGetPartitioner(*dm,&part);CHKERRQ(ierr); 334*c4762a1bSJed Brown ierr = PetscPartitionerSetFromOptions(part);CHKERRQ(ierr); 335*c4762a1bSJed Brown } 336*c4762a1bSJed Brown /* Distribute mesh over processes */ 337*c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_DISTRIBUTE]);CHKERRQ(ierr); 338*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_dist_view");CHKERRQ(ierr); 339*c4762a1bSJed Brown ierr = DMPlexDistribute(*dm, 0, NULL, &distributedMesh);CHKERRQ(ierr); 340*c4762a1bSJed Brown if (distributedMesh) { 341*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 342*c4762a1bSJed Brown *dm = distributedMesh; 343*c4762a1bSJed Brown } 344*c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 345*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-distributed_dm_view");CHKERRQ(ierr); 346*c4762a1bSJed Brown /* Refine mesh using a volume constraint */ 347*c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_REFINE]);CHKERRQ(ierr); 348*c4762a1bSJed Brown ierr = DMPlexSetRefinementUniform(*dm, PETSC_FALSE);CHKERRQ(ierr); 349*c4762a1bSJed Brown ierr = DMPlexSetRefinementLimit(*dm, refinementLimit);CHKERRQ(ierr); 350*c4762a1bSJed Brown ierr = DMRefine(*dm, comm, &refinedMesh);CHKERRQ(ierr); 351*c4762a1bSJed Brown if (refinedMesh) { 352*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 353*c4762a1bSJed Brown *dm = refinedMesh; 354*c4762a1bSJed Brown } 355*c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 356*c4762a1bSJed Brown } 357*c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_REFINE]);CHKERRQ(ierr); 358*c4762a1bSJed Brown ierr = DMSetFromOptions(*dm);CHKERRQ(ierr); 359*c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 360*c4762a1bSJed Brown 361*c4762a1bSJed Brown if (testp4est_par) { 362*c4762a1bSJed Brown #if defined(PETSC_HAVE_P4EST) 363*c4762a1bSJed Brown DM dmConv = NULL; 364*c4762a1bSJed Brown 365*c4762a1bSJed Brown ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr); 366*c4762a1bSJed Brown ierr = DMPlexRefineSimplexToTensor(*dm, &dmConv);CHKERRQ(ierr); 367*c4762a1bSJed Brown if (dmConv) { 368*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 369*c4762a1bSJed Brown *dm = dmConv; 370*c4762a1bSJed Brown } 371*c4762a1bSJed Brown user->cellSimplex = PETSC_FALSE; 372*c4762a1bSJed Brown 373*c4762a1bSJed Brown ierr = DMConvert(*dm,dim == 2 ? DMP4EST : DMP8EST,&dmConv);CHKERRQ(ierr); 374*c4762a1bSJed Brown if (dmConv) { 375*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_1_");CHKERRQ(ierr); 376*c4762a1bSJed Brown ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr); 377*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 378*c4762a1bSJed Brown *dm = dmConv; 379*c4762a1bSJed Brown } 380*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_1_");CHKERRQ(ierr); 381*c4762a1bSJed Brown ierr = DMSetUp(*dm);CHKERRQ(ierr); 382*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 383*c4762a1bSJed Brown ierr = DMConvert(*dm, DMPLEX, &dmConv);CHKERRQ(ierr); 384*c4762a1bSJed Brown if (dmConv) { 385*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) dmConv, "conv_par_2_");CHKERRQ(ierr); 386*c4762a1bSJed Brown ierr = DMSetFromOptions(dmConv);CHKERRQ(ierr); 387*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 388*c4762a1bSJed Brown *dm = dmConv; 389*c4762a1bSJed Brown } 390*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, "conv_par_2_");CHKERRQ(ierr); 391*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 392*c4762a1bSJed Brown ierr = PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL);CHKERRQ(ierr); 393*c4762a1bSJed Brown #else 394*c4762a1bSJed Brown SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_SUP,"Recompile with --download-p4est"); 395*c4762a1bSJed Brown #endif 396*c4762a1bSJed Brown } 397*c4762a1bSJed Brown 398*c4762a1bSJed Brown /* test redistribution of an already distributed mesh */ 399*c4762a1bSJed Brown if (user->redistribute) { 400*c4762a1bSJed Brown DM distributedMesh; 401*c4762a1bSJed Brown 402*c4762a1bSJed Brown 403*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_redist_view");CHKERRQ(ierr); 404*c4762a1bSJed Brown ierr = DMPlexDistribute(*dm, 0, NULL, &distributedMesh);CHKERRQ(ierr); 405*c4762a1bSJed Brown if (distributedMesh) { 406*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 407*c4762a1bSJed Brown *dm = distributedMesh; 408*c4762a1bSJed Brown } 409*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_post_redist_view");CHKERRQ(ierr); 410*c4762a1bSJed Brown } 411*c4762a1bSJed Brown 412*c4762a1bSJed Brown if (user->overlap) { 413*c4762a1bSJed Brown DM overlapMesh = NULL; 414*c4762a1bSJed Brown 415*c4762a1bSJed Brown /* Add the overlap to refined mesh */ 416*c4762a1bSJed Brown ierr = PetscLogStagePush(user->stages[STAGE_OVERLAP]);CHKERRQ(ierr); 417*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_pre_overlap_view");CHKERRQ(ierr); 418*c4762a1bSJed Brown ierr = DMPlexDistributeOverlap(*dm, user->overlap, NULL, &overlapMesh);CHKERRQ(ierr); 419*c4762a1bSJed Brown if (overlapMesh) { 420*c4762a1bSJed Brown PetscInt overlap; 421*c4762a1bSJed Brown ierr = DMPlexGetOverlap(overlapMesh, &overlap);CHKERRQ(ierr); 422*c4762a1bSJed Brown ierr = PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Overlap: %D\n", overlap);CHKERRQ(ierr); 423*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 424*c4762a1bSJed Brown *dm = overlapMesh; 425*c4762a1bSJed Brown } 426*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_post_overlap_view");CHKERRQ(ierr); 427*c4762a1bSJed Brown ierr = PetscLogStagePop();CHKERRQ(ierr); 428*c4762a1bSJed Brown } 429*c4762a1bSJed Brown 430*c4762a1bSJed Brown if (simplex2tensor) { 431*c4762a1bSJed Brown DM rdm = NULL; 432*c4762a1bSJed Brown ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr); 433*c4762a1bSJed Brown ierr = DMPlexRefineSimplexToTensor(*dm, &rdm);CHKERRQ(ierr); 434*c4762a1bSJed Brown if (rdm) { 435*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 436*c4762a1bSJed Brown *dm = rdm; 437*c4762a1bSJed Brown } 438*c4762a1bSJed Brown user->cellSimplex = PETSC_FALSE; 439*c4762a1bSJed Brown } 440*c4762a1bSJed Brown 441*c4762a1bSJed Brown if (user->final_ref) { 442*c4762a1bSJed Brown DM refinedMesh = NULL; 443*c4762a1bSJed Brown 444*c4762a1bSJed Brown ierr = DMPlexSetRefinementUniform(*dm, PETSC_TRUE);CHKERRQ(ierr); 445*c4762a1bSJed Brown ierr = DMRefine(*dm, comm, &refinedMesh);CHKERRQ(ierr); 446*c4762a1bSJed Brown if (refinedMesh) { 447*c4762a1bSJed Brown ierr = DMDestroy(dm);CHKERRQ(ierr); 448*c4762a1bSJed Brown *dm = refinedMesh; 449*c4762a1bSJed Brown } 450*c4762a1bSJed Brown } 451*c4762a1bSJed Brown 452*c4762a1bSJed Brown ierr = PetscObjectSetName((PetscObject) *dm, "Simplicial Mesh");CHKERRQ(ierr); 453*c4762a1bSJed Brown ierr = DMViewFromOptions(*dm, NULL, "-dm_view");CHKERRQ(ierr); 454*c4762a1bSJed Brown if (user->final_diagnostics) { 455*c4762a1bSJed Brown DMPlexInterpolatedFlag interpolated; 456*c4762a1bSJed Brown PetscInt dim, depth; 457*c4762a1bSJed Brown 458*c4762a1bSJed Brown ierr = DMGetDimension(*dm, &dim);CHKERRQ(ierr); 459*c4762a1bSJed Brown ierr = DMPlexGetDepth(*dm, &depth);CHKERRQ(ierr); 460*c4762a1bSJed Brown ierr = DMPlexIsInterpolatedCollective(*dm, &interpolated);CHKERRQ(ierr); 461*c4762a1bSJed Brown 462*c4762a1bSJed Brown ierr = DMPlexCheckSymmetry(*dm);CHKERRQ(ierr); 463*c4762a1bSJed Brown if (interpolated == DMPLEX_INTERPOLATED_FULL) { 464*c4762a1bSJed Brown ierr = DMPlexCheckFaces(*dm, 0);CHKERRQ(ierr); 465*c4762a1bSJed Brown } 466*c4762a1bSJed Brown ierr = DMPlexCheckSkeleton(*dm, 0);CHKERRQ(ierr); 467*c4762a1bSJed Brown ierr = DMPlexCheckGeometry(*dm);CHKERRQ(ierr); 468*c4762a1bSJed Brown } 469*c4762a1bSJed Brown ierr = PetscLogEventEnd(user->createMeshEvent,0,0,0,0);CHKERRQ(ierr); 470*c4762a1bSJed Brown user->dm = *dm; 471*c4762a1bSJed Brown PetscFunctionReturn(0); 472*c4762a1bSJed Brown } 473*c4762a1bSJed Brown 474*c4762a1bSJed Brown int main(int argc, char **argv) 475*c4762a1bSJed Brown { 476*c4762a1bSJed Brown AppCtx user; /* user-defined work context */ 477*c4762a1bSJed Brown PetscErrorCode ierr; 478*c4762a1bSJed Brown 479*c4762a1bSJed Brown ierr = PetscInitialize(&argc, &argv, NULL, help);if (ierr) return ierr; 480*c4762a1bSJed Brown ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr); 481*c4762a1bSJed Brown ierr = CreateMesh(PETSC_COMM_WORLD, &user, &user.dm);CHKERRQ(ierr); 482*c4762a1bSJed Brown if (user.testShape) {ierr = DMPlexCheckCellShape(user.dm, PETSC_TRUE, PETSC_DETERMINE);CHKERRQ(ierr);} 483*c4762a1bSJed Brown ierr = DMDestroy(&user.dm);CHKERRQ(ierr); 484*c4762a1bSJed Brown ierr = PetscFinalize(); 485*c4762a1bSJed Brown return ierr; 486*c4762a1bSJed Brown } 487*c4762a1bSJed Brown 488*c4762a1bSJed Brown /*TEST 489*c4762a1bSJed Brown 490*c4762a1bSJed Brown # CTetGen 0-1 491*c4762a1bSJed Brown test: 492*c4762a1bSJed Brown suffix: 0 493*c4762a1bSJed Brown requires: ctetgen 494*c4762a1bSJed Brown args: -dim 3 -ctetgen_verbose 4 -dm_view ascii::ascii_info_detail -info -info_exclude null 495*c4762a1bSJed Brown test: 496*c4762a1bSJed Brown suffix: 1 497*c4762a1bSJed Brown requires: ctetgen 498*c4762a1bSJed Brown args: -dim 3 -ctetgen_verbose 4 -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail -info -info_exclude null 499*c4762a1bSJed Brown test: 500*c4762a1bSJed Brown # -dm_view exodusii:$PWD/mesh.exo -bd_dm_refine 2 501*c4762a1bSJed Brown suffix: ball_0 502*c4762a1bSJed Brown requires: ctetgen 503*c4762a1bSJed Brown args: -dim 3 -domain_shape ball -interpolate -dm_view 504*c4762a1bSJed Brown 505*c4762a1bSJed Brown # 2D LaTex and ASCII output 2-9 506*c4762a1bSJed Brown test: 507*c4762a1bSJed Brown suffix: 2 508*c4762a1bSJed Brown requires: triangle 509*c4762a1bSJed Brown args: -dim 2 -dm_view ascii::ascii_latex 510*c4762a1bSJed Brown test: 511*c4762a1bSJed Brown suffix: 3 512*c4762a1bSJed Brown requires: triangle 513*c4762a1bSJed Brown args: -dim 2 -dm_refine 1 -interpolate 1 -dm_view ascii::ascii_info_detail 514*c4762a1bSJed Brown test: 515*c4762a1bSJed Brown suffix: 4 516*c4762a1bSJed Brown requires: triangle 517*c4762a1bSJed Brown nsize: 2 518*c4762a1bSJed Brown args: -dim 2 -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_info_detail 519*c4762a1bSJed Brown test: 520*c4762a1bSJed Brown suffix: 5 521*c4762a1bSJed Brown requires: triangle 522*c4762a1bSJed Brown nsize: 2 523*c4762a1bSJed Brown args: -dim 2 -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_latex 524*c4762a1bSJed Brown test: 525*c4762a1bSJed Brown suffix: 6 526*c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -dm_view ascii::ascii_info_detail 527*c4762a1bSJed Brown test: 528*c4762a1bSJed Brown suffix: 7 529*c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -dm_refine 1 -dm_view ascii::ascii_info_detail 530*c4762a1bSJed Brown test: 531*c4762a1bSJed Brown suffix: 8 532*c4762a1bSJed Brown nsize: 2 533*c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -dm_refine 1 -interpolate 1 -test_partition -dm_view ascii::ascii_latex 534*c4762a1bSJed Brown 535*c4762a1bSJed Brown # 1D ASCII output 536*c4762a1bSJed Brown test: 537*c4762a1bSJed Brown suffix: 1d_0 538*c4762a1bSJed Brown args: -dim 1 -domain_shape box -dm_view ascii::ascii_info_detail 539*c4762a1bSJed Brown test: 540*c4762a1bSJed Brown suffix: 1d_1 541*c4762a1bSJed Brown args: -dim 1 -domain_shape box -dm_refine 2 -dm_view ascii::ascii_info_detail 542*c4762a1bSJed Brown test: 543*c4762a1bSJed Brown suffix: 1d_2 544*c4762a1bSJed Brown args: -dim 1 -domain_box_sizes 5 -x_periodicity periodic -dm_view ascii::ascii_info_detail -test_shape 545*c4762a1bSJed Brown 546*c4762a1bSJed Brown # Parallel refinement tests with overlap 547*c4762a1bSJed Brown test: 548*c4762a1bSJed Brown suffix: refine_overlap_1d 549*c4762a1bSJed Brown nsize: 2 550*c4762a1bSJed 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 551*c4762a1bSJed Brown test: 552*c4762a1bSJed Brown suffix: refine_overlap_2d 553*c4762a1bSJed Brown requires: triangle 554*c4762a1bSJed Brown nsize: {{2 8}separate output} 555*c4762a1bSJed 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 556*c4762a1bSJed Brown 557*c4762a1bSJed Brown # Parallel simple partitioner tests 558*c4762a1bSJed Brown test: 559*c4762a1bSJed Brown suffix: part_simple_0 560*c4762a1bSJed Brown requires: triangle 561*c4762a1bSJed Brown nsize: 2 562*c4762a1bSJed Brown args: -dim 2 -cell_simplex 1 -dm_refine 0 -interpolate 0 -petscpartitioner_type simple -partition_view -dm_view ascii::ascii_info_detail 563*c4762a1bSJed Brown test: 564*c4762a1bSJed Brown suffix: part_simple_1 565*c4762a1bSJed Brown requires: triangle 566*c4762a1bSJed Brown nsize: 8 567*c4762a1bSJed Brown args: -dim 2 -cell_simplex 1 -dm_refine 1 -interpolate 1 -petscpartitioner_type simple -partition_view -dm_view ascii::ascii_info_detail 568*c4762a1bSJed Brown 569*c4762a1bSJed Brown # Parallel partitioner tests 570*c4762a1bSJed Brown test: 571*c4762a1bSJed Brown suffix: part_parmetis_0 572*c4762a1bSJed Brown requires: parmetis 573*c4762a1bSJed Brown nsize: 2 574*c4762a1bSJed 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 575*c4762a1bSJed Brown test: 576*c4762a1bSJed Brown suffix: part_ptscotch_0 577*c4762a1bSJed Brown requires: ptscotch 578*c4762a1bSJed Brown nsize: 2 579*c4762a1bSJed 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 580*c4762a1bSJed Brown test: 581*c4762a1bSJed Brown suffix: part_ptscotch_1 582*c4762a1bSJed Brown requires: ptscotch 583*c4762a1bSJed Brown nsize: 8 584*c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -dm_refine 1 -interpolate 1 -petscpartitioner_type ptscotch -petscpartitioner_view -petscpartitioner_ptscotch_imbalance 0.1 585*c4762a1bSJed Brown 586*c4762a1bSJed Brown # CGNS reader tests 10-11 (need to find smaller test meshes) 587*c4762a1bSJed Brown test: 588*c4762a1bSJed Brown suffix: cgns_0 589*c4762a1bSJed Brown requires: cgns 590*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/tut21.cgns -interpolate 1 -dm_view 591*c4762a1bSJed Brown 592*c4762a1bSJed Brown # Gmsh mesh reader tests 593*c4762a1bSJed Brown test: 594*c4762a1bSJed Brown suffix: gmsh_0 595*c4762a1bSJed Brown requires: !single 596*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -interpolate 1 -dm_view 597*c4762a1bSJed Brown test: 598*c4762a1bSJed Brown suffix: gmsh_1 599*c4762a1bSJed Brown requires: !single 600*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -interpolate 1 -dm_view 601*c4762a1bSJed Brown test: 602*c4762a1bSJed Brown suffix: gmsh_2 603*c4762a1bSJed Brown requires: !single 604*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -interpolate 1 -dm_view 605*c4762a1bSJed Brown test: 606*c4762a1bSJed Brown suffix: gmsh_3 607*c4762a1bSJed Brown nsize: 3 608*c4762a1bSJed Brown requires: !single 609*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.msh -test_partition -interpolate 1 -dm_view 610*c4762a1bSJed Brown test: 611*c4762a1bSJed Brown suffix: gmsh_4 612*c4762a1bSJed Brown nsize: 3 613*c4762a1bSJed Brown requires: !single 614*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -test_partition -interpolate 1 -dm_view 615*c4762a1bSJed Brown test: 616*c4762a1bSJed Brown suffix: gmsh_5 617*c4762a1bSJed Brown requires: !single 618*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_quad.msh -interpolate 1 -dm_view 619*c4762a1bSJed Brown # TODO: it seems the mesh is not a valid gmsh (inverted cell) 620*c4762a1bSJed Brown test: 621*c4762a1bSJed Brown suffix: gmsh_6 622*c4762a1bSJed Brown requires: !single 623*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin_physnames.msh -interpolate 1 -dm_view -final_diagnostics 0 624*c4762a1bSJed Brown test: 625*c4762a1bSJed Brown suffix: gmsh_7 626*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_view ::ascii_info_detail -interpolate -test_shape 627*c4762a1bSJed Brown test: 628*c4762a1bSJed Brown suffix: gmsh_8 629*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere.msh -dm_view ::ascii_info_detail -interpolate -test_shape 630*c4762a1bSJed Brown testset: 631*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic_bin.msh -dm_view ::ascii_info_detail -interpolate -test_shape 632*c4762a1bSJed Brown test: 633*c4762a1bSJed Brown suffix: gmsh_9 634*c4762a1bSJed Brown test: 635*c4762a1bSJed Brown suffix: gmsh_9_periodic_0 636*c4762a1bSJed Brown args: -dm_plex_gmsh_periodic 0 637*c4762a1bSJed Brown testset: 638*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -interpolate -test_shape 639*c4762a1bSJed Brown test: 640*c4762a1bSJed Brown suffix: gmsh_10 641*c4762a1bSJed Brown test: 642*c4762a1bSJed Brown suffix: gmsh_10_periodic_0 643*c4762a1bSJed Brown args: -dm_plex_gmsh_periodic 0 644*c4762a1bSJed Brown testset: 645*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view ::ascii_info_detail -interpolate -test_shape -dm_refine 1 646*c4762a1bSJed Brown test: 647*c4762a1bSJed Brown suffix: gmsh_11 648*c4762a1bSJed Brown test: 649*c4762a1bSJed Brown suffix: gmsh_11_periodic_0 650*c4762a1bSJed Brown args: -dm_plex_gmsh_periodic 0 651*c4762a1bSJed Brown # TODO: it seems the mesh is not a valid gmsh (inverted cell) 652*c4762a1bSJed Brown test: 653*c4762a1bSJed Brown suffix: gmsh_12 654*c4762a1bSJed Brown nsize: 4 655*c4762a1bSJed Brown requires: !single mpiio 656*c4762a1bSJed 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 657*c4762a1bSJed Brown test: 658*c4762a1bSJed Brown suffix: gmsh_13_hybs2t 659*c4762a1bSJed Brown nsize: 4 660*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_triquad.msh -petscpartitioner_type simple -interpolate 1 -dm_view -test_shape -simplex2tensor -dm_plex_check_faces -dm_plex_check_skeleton -dm_plex_check_symmetry 661*c4762a1bSJed Brown test: 662*c4762a1bSJed Brown suffix: gmsh_14_ext 663*c4762a1bSJed Brown requires: !single 664*c4762a1bSJed Brown args: -ext_layers 2 -ext_thickness 1.5 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_bin.msh -dm_view -dm_plex_check_symmetry -dm_plex_check_skeleton 665*c4762a1bSJed Brown test: 666*c4762a1bSJed Brown suffix: gmsh_14_ext_s2t 667*c4762a1bSJed Brown requires: !single 668*c4762a1bSJed Brown 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_faces -dm_plex_check_symmetry -dm_plex_check_skeleton -simplex2tensor -test_shape 669*c4762a1bSJed Brown test: 670*c4762a1bSJed Brown suffix: gmsh_15_hyb3d 671*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -interpolate -dm_plex_check_faces -dm_plex_check_symmetry -dm_plex_check_skeleton 672*c4762a1bSJed Brown test: 673*c4762a1bSJed Brown suffix: gmsh_15_hyb3d_vtk 674*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view vtk: -dm_plex_gmsh_hybrid 675*c4762a1bSJed Brown test: 676*c4762a1bSJed Brown suffix: gmsh_15_hyb3d_s2t 677*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_tetwedge.msh -dm_view -interpolate -dm_plex_check_faces -dm_plex_check_symmetry -dm_plex_check_skeleton -simplex2tensor -test_shape 678*c4762a1bSJed Brown test: 679*c4762a1bSJed Brown suffix: gmsh_16_spheresurface 680*c4762a1bSJed Brown nsize : 4 681*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -dm_view -interpolate -test_shape -petscpartitioner_type simple 682*c4762a1bSJed Brown test: 683*c4762a1bSJed Brown suffix: gmsh_16_spheresurface_s2t 684*c4762a1bSJed Brown nsize : 4 685*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -simplex2tensor -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -dm_view -interpolate -test_shape -petscpartitioner_type simple 686*c4762a1bSJed Brown test: 687*c4762a1bSJed Brown suffix: gmsh_16_spheresurface_extruded 688*c4762a1bSJed Brown nsize : 4 689*c4762a1bSJed Brown args: -ext_layers 3 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -dm_view -interpolate -petscpartitioner_type simple 690*c4762a1bSJed Brown test: 691*c4762a1bSJed Brown suffix: gmsh_16_spheresurface_extruded_s2t 692*c4762a1bSJed Brown nsize : 4 693*c4762a1bSJed Brown args: -ext_layers 3 -ext_filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/surfacesphere_bin.msh -dm_plex_gmsh_spacedim 3 -simplex2tensor -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -dm_view -interpolate -test_shape -petscpartitioner_type simple 694*c4762a1bSJed Brown test: 695*c4762a1bSJed Brown suffix: gmsh_17_hyb3d_ascii 696*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -dm_plex_gmsh_hybrid 697*c4762a1bSJed Brown test: 698*c4762a1bSJed Brown suffix: gmsh_17_hyb3d_interp_ascii 699*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.msh -dm_view -interpolate 700*c4762a1bSJed Brown test: 701*c4762a1bSJed Brown suffix: exodus_17_hyb3d_interp_ascii 702*c4762a1bSJed Brown requires: exodusii 703*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/hybrid_hexwedge.exo -dm_view -interpolate 704*c4762a1bSJed Brown 705*c4762a1bSJed Brown # Legacy Gmsh v22/v40 ascii/binary reader tests 706*c4762a1bSJed Brown testset: 707*c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_legacy.out 708*c4762a1bSJed Brown args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape 709*c4762a1bSJed Brown test: 710*c4762a1bSJed Brown suffix: gmsh_3d_ascii_v22 711*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh2 712*c4762a1bSJed Brown test: 713*c4762a1bSJed Brown suffix: gmsh_3d_ascii_v40 714*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii.msh4 715*c4762a1bSJed Brown test: 716*c4762a1bSJed Brown suffix: gmsh_3d_binary_v22 717*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh2 718*c4762a1bSJed Brown test: 719*c4762a1bSJed Brown suffix: gmsh_3d_binary_v40 720*c4762a1bSJed Brown requires: long64 721*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary.msh4 722*c4762a1bSJed Brown 723*c4762a1bSJed Brown # Gmsh v41 ascii/binary reader tests 724*c4762a1bSJed Brown testset: # 32bit mesh, sequential 725*c4762a1bSJed Brown args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape 726*c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_32.out 727*c4762a1bSJed Brown test: 728*c4762a1bSJed Brown suffix: gmsh_3d_ascii_v41_32 729*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh 730*c4762a1bSJed Brown test: 731*c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_32 732*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh 733*c4762a1bSJed Brown test: 734*c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_32_mpiio 735*c4762a1bSJed Brown requires: define(PETSC_HAVE_MPIIO) 736*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio 737*c4762a1bSJed Brown testset: # 32bit mesh, parallel 738*c4762a1bSJed Brown args: -petscpartitioner_type simple -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape 739*c4762a1bSJed Brown nsize: 2 740*c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_32_np2.out 741*c4762a1bSJed Brown test: 742*c4762a1bSJed Brown suffix: gmsh_3d_ascii_v41_32_np2 743*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-32.msh 744*c4762a1bSJed Brown test: 745*c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_32_np2 746*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh 747*c4762a1bSJed Brown test: 748*c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_32_np2_mpiio 749*c4762a1bSJed Brown requires: define(PETSC_HAVE_MPIIO) 750*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-32.msh -viewer_binary_mpiio 751*c4762a1bSJed Brown testset: # 64bit mesh, sequential 752*c4762a1bSJed Brown args: -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape 753*c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_64.out 754*c4762a1bSJed Brown test: 755*c4762a1bSJed Brown suffix: gmsh_3d_ascii_v41_64 756*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh 757*c4762a1bSJed Brown test: 758*c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_64 759*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh 760*c4762a1bSJed Brown test: 761*c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_64_mpiio 762*c4762a1bSJed Brown requires: define(PETSC_HAVE_MPIIO) 763*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio 764*c4762a1bSJed Brown testset: # 64bit mesh, parallel 765*c4762a1bSJed Brown args: -petscpartitioner_type simple -dm_view ::ascii_info_detail -interpolate -dm_plex_check_symmetry -dm_plex_check_faces -test_shape 766*c4762a1bSJed Brown nsize: 2 767*c4762a1bSJed Brown output_file: output/ex1_gmsh_3d_64_np2.out 768*c4762a1bSJed Brown test: 769*c4762a1bSJed Brown suffix: gmsh_3d_ascii_v41_64_np2 770*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-ascii-64.msh 771*c4762a1bSJed Brown test: 772*c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_64_np2 773*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh 774*c4762a1bSJed Brown test: 775*c4762a1bSJed Brown suffix: gmsh_3d_binary_v41_64_np2_mpiio 776*c4762a1bSJed Brown requires: define(PETSC_HAVE_MPIIO) 777*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/gmsh-3d-binary-64.msh -viewer_binary_mpiio 778*c4762a1bSJed Brown 779*c4762a1bSJed Brown # Fluent mesh reader tests 780*c4762a1bSJed Brown # TODO: Geometry checks fail 781*c4762a1bSJed Brown test: 782*c4762a1bSJed Brown suffix: fluent_0 783*c4762a1bSJed Brown requires: !complex 784*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -interpolate 1 -dm_view -final_diagnostics 0 785*c4762a1bSJed Brown test: 786*c4762a1bSJed Brown suffix: fluent_1 787*c4762a1bSJed Brown nsize: 3 788*c4762a1bSJed Brown requires: !complex 789*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.cas -interpolate 1 -test_partition -dm_view -final_diagnostics 0 790*c4762a1bSJed Brown test: 791*c4762a1bSJed Brown suffix: fluent_2 792*c4762a1bSJed Brown requires: !complex 793*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets_ascii.cas -interpolate 1 -dm_view -final_diagnostics 0 794*c4762a1bSJed Brown test: 795*c4762a1bSJed Brown suffix: fluent_3 796*c4762a1bSJed Brown requires: !complex 797*c4762a1bSJed Brown TODO: Fails on non-linux: fseek(), fileno() ? https://gitlab.com/petsc/petsc/merge_requests/2206#note_238166382 798*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cube_5tets.cas -interpolate 1 -dm_view -final_diagnostics 0 799*c4762a1bSJed Brown 800*c4762a1bSJed Brown # Med mesh reader tests, including parallel file reads 801*c4762a1bSJed Brown test: 802*c4762a1bSJed Brown suffix: med_0 803*c4762a1bSJed Brown requires: med 804*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -interpolate 1 -dm_view 805*c4762a1bSJed Brown test: 806*c4762a1bSJed Brown suffix: med_1 807*c4762a1bSJed Brown requires: med 808*c4762a1bSJed Brown nsize: 3 809*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square.med -interpolate 1 -petscpartitioner_type simple -dm_view 810*c4762a1bSJed Brown test: 811*c4762a1bSJed Brown suffix: med_2 812*c4762a1bSJed Brown requires: med 813*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -interpolate 1 -dm_view 814*c4762a1bSJed Brown test: 815*c4762a1bSJed Brown suffix: med_3 816*c4762a1bSJed Brown requires: med 817*c4762a1bSJed Brown TODO: MED 818*c4762a1bSJed Brown nsize: 3 819*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/cylinder.med -interpolate 1 -petscpartitioner_type simple -dm_view 820*c4762a1bSJed Brown 821*c4762a1bSJed Brown # Test shape quality 822*c4762a1bSJed Brown test: 823*c4762a1bSJed Brown suffix: test_shape 824*c4762a1bSJed Brown requires: ctetgen 825*c4762a1bSJed Brown args: -dim 3 -interpolate -dm_refine_hierarchy 3 -test_shape 826*c4762a1bSJed Brown 827*c4762a1bSJed Brown # Test simplex to tensor conversion 828*c4762a1bSJed Brown test: 829*c4762a1bSJed Brown suffix: s2t2 830*c4762a1bSJed Brown requires: triangle 831*c4762a1bSJed Brown args: -dim 2 -simplex2tensor -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail 832*c4762a1bSJed Brown 833*c4762a1bSJed Brown test: 834*c4762a1bSJed Brown suffix: s2t3 835*c4762a1bSJed Brown requires: ctetgen 836*c4762a1bSJed Brown args: -dim 3 -simplex2tensor -refinement_limit 0.0625 -dm_view ascii::ascii_info_detail 837*c4762a1bSJed Brown 838*c4762a1bSJed Brown # Test domain shapes 839*c4762a1bSJed Brown test: 840*c4762a1bSJed Brown suffix: cylinder 841*c4762a1bSJed Brown args: -dim 3 -cell_simplex 0 -interpolate -domain_shape cylinder -test_shape -dm_view 842*c4762a1bSJed Brown 843*c4762a1bSJed Brown test: 844*c4762a1bSJed Brown suffix: cylinder_per 845*c4762a1bSJed Brown args: -dim 3 -cell_simplex 0 -interpolate -domain_shape cylinder -z_periodicity periodic -test_shape -dm_view 846*c4762a1bSJed Brown 847*c4762a1bSJed Brown test: 848*c4762a1bSJed Brown suffix: cylinder_wedge 849*c4762a1bSJed Brown args: -dim 3 -cell_simplex 0 -interpolate 0 -cell_wedge -domain_shape cylinder -dm_view vtk: -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton 850*c4762a1bSJed Brown 851*c4762a1bSJed Brown test: 852*c4762a1bSJed Brown suffix: cylinder_wedge_int 853*c4762a1bSJed Brown output_file: output/ex1_cylinder_wedge.out 854*c4762a1bSJed Brown args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape cylinder -dm_view vtk: -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton 855*c4762a1bSJed Brown 856*c4762a1bSJed Brown test: 857*c4762a1bSJed Brown suffix: box_2d 858*c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 2 -test_shape -dm_view 859*c4762a1bSJed Brown 860*c4762a1bSJed Brown test: 861*c4762a1bSJed Brown suffix: box_2d_per 862*c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 2 -test_shape -dm_view 863*c4762a1bSJed Brown 864*c4762a1bSJed Brown test: 865*c4762a1bSJed Brown suffix: box_2d_per_unint 866*c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate 0 -domain_shape box -domain_box_sizes 3,3 -test_shape -dm_view ::ascii_info_detail 867*c4762a1bSJed Brown 868*c4762a1bSJed Brown test: 869*c4762a1bSJed Brown suffix: box_3d 870*c4762a1bSJed Brown args: -dim 3 -cell_simplex 0 -interpolate -domain_shape box -dm_refine 3 -test_shape -dm_view 871*c4762a1bSJed Brown 872*c4762a1bSJed Brown test: 873*c4762a1bSJed Brown requires: triangle 874*c4762a1bSJed Brown suffix: box_wedge 875*c4762a1bSJed Brown args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape box -dm_view vtk: -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton 876*c4762a1bSJed Brown 877*c4762a1bSJed Brown testset: 878*c4762a1bSJed Brown requires: triangle 879*c4762a1bSJed Brown args: -dim 3 -cell_simplex 0 -interpolate -cell_wedge -domain_shape box -domain_box_sizes 2,3,1 -dm_view -dm_plex_check_symmetry -dm_plex_check_faces -dm_plex_check_skeleton -simplex2tensor -test_shape 880*c4762a1bSJed Brown test: 881*c4762a1bSJed Brown suffix: box_wedge_s2t 882*c4762a1bSJed Brown test: 883*c4762a1bSJed Brown nsize: 3 884*c4762a1bSJed Brown args: -petscpartitioner_type simple 885*c4762a1bSJed Brown suffix: box_wedge_s2t_parallel 886*c4762a1bSJed Brown 887*c4762a1bSJed Brown # Test GLVis output 888*c4762a1bSJed Brown test: 889*c4762a1bSJed Brown suffix: glvis_2d_tet 890*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_plex_gmsh_periodic 0 -dm_view glvis: 891*c4762a1bSJed Brown 892*c4762a1bSJed Brown test: 893*c4762a1bSJed Brown suffix: glvis_2d_tet_per 894*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/square_periodic.msh -dm_view glvis: -viewer_glvis_dm_plex_enable_boundary 0 895*c4762a1bSJed Brown 896*c4762a1bSJed Brown test: 897*c4762a1bSJed Brown suffix: glvis_2d_tet_per_mfem 898*c4762a1bSJed 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 899*c4762a1bSJed Brown 900*c4762a1bSJed Brown test: 901*c4762a1bSJed Brown suffix: glvis_2d_quad 902*c4762a1bSJed Brown args: -dim 2 -cell_simplex 0 -interpolate -domain_shape box -domain_box_sizes 3,3 -dm_view glvis: 903*c4762a1bSJed Brown 904*c4762a1bSJed Brown test: 905*c4762a1bSJed Brown suffix: glvis_2d_quad_per 906*c4762a1bSJed 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 907*c4762a1bSJed Brown 908*c4762a1bSJed Brown test: 909*c4762a1bSJed Brown suffix: glvis_2d_quad_per_mfem 910*c4762a1bSJed 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 911*c4762a1bSJed Brown 912*c4762a1bSJed Brown test: 913*c4762a1bSJed Brown suffix: glvis_3d_tet 914*c4762a1bSJed Brown args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/mesh-3d-box-innersphere_bin.msh -dm_plex_gmsh_periodic 0 -dm_view glvis: 915*c4762a1bSJed Brown 916*c4762a1bSJed Brown test: 917*c4762a1bSJed Brown suffix: glvis_3d_tet_per 918*c4762a1bSJed 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 919*c4762a1bSJed Brown 920*c4762a1bSJed Brown test: 921*c4762a1bSJed Brown suffix: glvis_3d_tet_per_mfem 922*c4762a1bSJed Brown TODO: broken 923*c4762a1bSJed 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 924*c4762a1bSJed Brown 925*c4762a1bSJed Brown test: 926*c4762a1bSJed Brown suffix: glvis_3d_hex 927*c4762a1bSJed Brown args: -dim 3 -cell_simplex 0 -domain_shape box -domain_box_sizes 3,3,3 -dm_view glvis: 928*c4762a1bSJed Brown 929*c4762a1bSJed Brown test: 930*c4762a1bSJed Brown suffix: glvis_3d_hex_per 931*c4762a1bSJed 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 0 932*c4762a1bSJed Brown 933*c4762a1bSJed Brown test: 934*c4762a1bSJed Brown suffix: glvis_3d_hex_per_mfem 935*c4762a1bSJed 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 936*c4762a1bSJed Brown 937*c4762a1bSJed Brown # Test P4EST 938*c4762a1bSJed Brown testset: 939*c4762a1bSJed Brown requires: p4est 940*c4762a1bSJed Brown args: -interpolate -dm_view -test_p4est_seq -test_shape -conv_seq_2_dm_plex_check_symmetry -conv_seq_2_dm_plex_check_skeleton -conv_seq_2_dm_plex_check_faces -conv_seq_1_dm_forest_minimum_refinement 1 941*c4762a1bSJed Brown test: 942*c4762a1bSJed Brown suffix: p4est_periodic 943*c4762a1bSJed 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 944*c4762a1bSJed Brown test: 945*c4762a1bSJed Brown suffix: p4est_periodic_3d 946*c4762a1bSJed 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 947*c4762a1bSJed Brown test: 948*c4762a1bSJed Brown suffix: p4est_gmsh_periodic 949*c4762a1bSJed 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 950*c4762a1bSJed Brown test: 951*c4762a1bSJed Brown suffix: p4est_gmsh_surface 952*c4762a1bSJed 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 953*c4762a1bSJed Brown test: 954*c4762a1bSJed Brown suffix: p4est_gmsh_surface_parallel 955*c4762a1bSJed Brown nsize: 2 956*c4762a1bSJed 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 957*c4762a1bSJed Brown test: 958*c4762a1bSJed Brown suffix: p4est_hyb_2d 959*c4762a1bSJed 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 960*c4762a1bSJed Brown test: 961*c4762a1bSJed Brown suffix: p4est_hyb_3d 962*c4762a1bSJed 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 963*c4762a1bSJed Brown test: 964*c4762a1bSJed Brown requires: ctetgen 965*c4762a1bSJed Brown suffix: p4est_s2t_bugfaces_3d 966*c4762a1bSJed 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 967*c4762a1bSJed Brown test: 968*c4762a1bSJed Brown suffix: p4est_bug_overlapsf 969*c4762a1bSJed Brown nsize: 3 970*c4762a1bSJed 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 971*c4762a1bSJed Brown test: 972*c4762a1bSJed Brown suffix: p4est_redistribute 973*c4762a1bSJed Brown nsize: 3 974*c4762a1bSJed 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 975*c4762a1bSJed Brown test: 976*c4762a1bSJed Brown suffix: p4est_gmsh_s2t_3d 977*c4762a1bSJed Brown args: -conv_seq_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh 978*c4762a1bSJed Brown test: 979*c4762a1bSJed Brown suffix: p4est_gmsh_s2t_3d_hash 980*c4762a1bSJed 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 981*c4762a1bSJed Brown test: 982*c4762a1bSJed Brown requires: long_runtime 983*c4762a1bSJed Brown suffix: p4est_gmsh_periodic_3d 984*c4762a1bSJed 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 985*c4762a1bSJed Brown 986*c4762a1bSJed Brown testset: 987*c4762a1bSJed Brown requires: p4est 988*c4762a1bSJed Brown nsize: 6 989*c4762a1bSJed Brown args: -interpolate -test_p4est_par -test_shape -conv_par_2_dm_plex_check_symmetry -conv_par_2_dm_plex_check_skeleton -conv_par_2_dm_plex_check_faces -conv_par_1_dm_forest_minimum_refinement 1 -conv_par_1_dm_forest_partition_overlap 0 990*c4762a1bSJed Brown test: 991*c4762a1bSJed Brown suffix: p4est_par_periodic 992*c4762a1bSJed 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 993*c4762a1bSJed Brown test: 994*c4762a1bSJed Brown suffix: p4est_par_periodic_3d 995*c4762a1bSJed 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 996*c4762a1bSJed Brown test: 997*c4762a1bSJed Brown suffix: p4est_par_gmsh_periodic 998*c4762a1bSJed 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 999*c4762a1bSJed Brown test: 1000*c4762a1bSJed Brown suffix: p4est_par_gmsh_surface 1001*c4762a1bSJed 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 1002*c4762a1bSJed Brown test: 1003*c4762a1bSJed Brown suffix: p4est_par_gmsh_s2t_3d 1004*c4762a1bSJed Brown args: -conv_par_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh 1005*c4762a1bSJed Brown test: 1006*c4762a1bSJed Brown suffix: p4est_par_gmsh_s2t_3d_hash 1007*c4762a1bSJed 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 1008*c4762a1bSJed Brown test: 1009*c4762a1bSJed Brown requires: long_runtime 1010*c4762a1bSJed Brown suffix: p4est_par_gmsh_periodic_3d 1011*c4762a1bSJed 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 1012*c4762a1bSJed Brown 1013*c4762a1bSJed Brown testset: 1014*c4762a1bSJed Brown requires: p4est 1015*c4762a1bSJed Brown nsize: 6 1016*c4762a1bSJed Brown args: -interpolate -test_p4est_par -test_shape -conv_par_2_dm_plex_check_symmetry -conv_par_2_dm_plex_check_skeleton -conv_par_2_dm_plex_check_faces -conv_par_1_dm_forest_minimum_refinement 1 -conv_par_1_dm_forest_partition_overlap 1 -petscpartitioner_type simple 1017*c4762a1bSJed Brown test: 1018*c4762a1bSJed Brown suffix: p4est_par_ovl_periodic 1019*c4762a1bSJed 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 1020*c4762a1bSJed Brown #TODO Mesh cell 201 is inverted, vol = 0. (FVM Volume. Is it correct? -> Diagnostics disabled) 1021*c4762a1bSJed Brown test: 1022*c4762a1bSJed Brown suffix: p4est_par_ovl_periodic_3d 1023*c4762a1bSJed 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 1024*c4762a1bSJed Brown test: 1025*c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_periodic 1026*c4762a1bSJed 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 1027*c4762a1bSJed Brown test: 1028*c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_surface 1029*c4762a1bSJed 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 1030*c4762a1bSJed Brown test: 1031*c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_s2t_3d 1032*c4762a1bSJed Brown args: -conv_par_1_dm_forest_initial_refinement 1 -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh 1033*c4762a1bSJed Brown test: 1034*c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_s2t_3d_hash 1035*c4762a1bSJed 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 1036*c4762a1bSJed Brown test: 1037*c4762a1bSJed Brown requires: long_runtime 1038*c4762a1bSJed Brown suffix: p4est_par_ovl_gmsh_periodic_3d 1039*c4762a1bSJed 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 1040*c4762a1bSJed Brown test: 1041*c4762a1bSJed Brown suffix: p4est_par_ovl_hyb_2d 1042*c4762a1bSJed 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 1043*c4762a1bSJed Brown test: 1044*c4762a1bSJed Brown suffix: p4est_par_ovl_hyb_3d 1045*c4762a1bSJed 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 1046*c4762a1bSJed Brown 1047*c4762a1bSJed Brown test: 1048*c4762a1bSJed Brown TODO: broken 1049*c4762a1bSJed Brown requires: p4est 1050*c4762a1bSJed Brown nsize: 2 1051*c4762a1bSJed Brown suffix: p4est_bug_labels_noovl 1052*c4762a1bSJed Brown args: -interpolate -test_p4est_seq -test_shape -dm_plex_check_symmetry -dm_plex_check_skeleton -dm_plex_check_faces -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 1053*c4762a1bSJed Brown 1054*c4762a1bSJed Brown test: 1055*c4762a1bSJed Brown requires: p4est 1056*c4762a1bSJed Brown nsize: 2 1057*c4762a1bSJed Brown suffix: p4est_bug_distribute_overlap 1058*c4762a1bSJed Brown args: -interpolate -test_p4est_seq -test_shape -conv_seq_2_dm_plex_check_symmetry -conv_seq_2_dm_plex_check_skeleton -conv_seq_2_dm_plex_check_faces -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 1059*c4762a1bSJed Brown args: -dm_post_overlap_view 1060*c4762a1bSJed Brown 1061*c4762a1bSJed Brown test: 1062*c4762a1bSJed Brown suffix: glvis_2d_hyb 1063*c4762a1bSJed 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 1064*c4762a1bSJed Brown 1065*c4762a1bSJed Brown test: 1066*c4762a1bSJed Brown suffix: glvis_3d_hyb 1067*c4762a1bSJed 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 1068*c4762a1bSJed Brown 1069*c4762a1bSJed Brown test: 1070*c4762a1bSJed Brown suffix: glvis_3d_hyb_s2t 1071*c4762a1bSJed Brown 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 -simplex2tensor 1072*c4762a1bSJed Brown TEST*/ 1073