1d410b0cfSMatthew G. Knepley static const char help[] = "Tests for Plex transforms, including regular refinement"; 2412e9a14SMatthew G. Knepley 3412e9a14SMatthew G. Knepley #include <petscdmplex.h> 4412e9a14SMatthew G. Knepley #include <petscsf.h> 5412e9a14SMatthew G. Knepley 6412e9a14SMatthew G. Knepley #include <petsc/private/dmpleximpl.h> 7412e9a14SMatthew G. Knepley 8d71ae5a4SJacob Faibussowitsch static PetscErrorCode LabelPoints(DM dm) 9d71ae5a4SJacob Faibussowitsch { 10d410b0cfSMatthew G. Knepley DMLabel label; 11d410b0cfSMatthew G. Knepley PetscInt pStart, pEnd, p; 12d410b0cfSMatthew G. Knepley PetscBool flg = PETSC_FALSE; 13d410b0cfSMatthew G. Knepley 14d410b0cfSMatthew G. Knepley PetscFunctionBegin; 159566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetBool(NULL, NULL, "-label_mesh", &flg, NULL)); 163ba16761SJacob Faibussowitsch if (!flg) PetscFunctionReturn(PETSC_SUCCESS); 179566063dSJacob Faibussowitsch PetscCall(DMCreateLabel(dm, "test")); 189566063dSJacob Faibussowitsch PetscCall(DMGetLabel(dm, "test", &label)); 199566063dSJacob Faibussowitsch PetscCall(DMPlexGetChart(dm, &pStart, &pEnd)); 2048a46eb9SPierre Jolivet for (p = pStart; p < pEnd; ++p) PetscCall(DMLabelSetValue(label, p, p)); 213ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 22d410b0cfSMatthew G. Knepley } 23d410b0cfSMatthew G. Knepley 24d71ae5a4SJacob Faibussowitsch static PetscErrorCode CreateMesh(MPI_Comm comm, DM *dm) 25d71ae5a4SJacob Faibussowitsch { 26412e9a14SMatthew G. Knepley PetscFunctionBegin; 279566063dSJacob Faibussowitsch PetscCall(DMCreate(comm, dm)); 289566063dSJacob Faibussowitsch PetscCall(DMSetType(*dm, DMPLEX)); 299566063dSJacob Faibussowitsch PetscCall(DMSetFromOptions(*dm)); 309566063dSJacob Faibussowitsch PetscCall(LabelPoints(*dm)); 319566063dSJacob Faibussowitsch PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, "post_label_")); 32d4c22693SJed Brown PetscCall(DMPlexDistributeSetDefault(*dm, PETSC_FALSE)); 339566063dSJacob Faibussowitsch PetscCall(DMSetFromOptions(*dm)); 349566063dSJacob Faibussowitsch PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL)); 359566063dSJacob Faibussowitsch PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view")); 363ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 37412e9a14SMatthew G. Knepley } 38412e9a14SMatthew G. Knepley 39d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv) 40d71ae5a4SJacob Faibussowitsch { 41412e9a14SMatthew G. Knepley DM dm; 42412e9a14SMatthew G. Knepley 43327415f7SBarry Smith PetscFunctionBeginUser; 449566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 459566063dSJacob Faibussowitsch PetscCall(CreateMesh(PETSC_COMM_WORLD, &dm)); 469566063dSJacob Faibussowitsch PetscCall(DMDestroy(&dm)); 479566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 48b122ec5aSJacob Faibussowitsch return 0; 49412e9a14SMatthew G. Knepley } 50412e9a14SMatthew G. Knepley 51412e9a14SMatthew G. Knepley /*TEST 52412e9a14SMatthew G. Knepley test: 53012bc364SMatthew G. Knepley suffix: ref_seg 54012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell segment -dm_refine 1 -dm_plex_check_all 55*3886731fSPierre Jolivet output_file: output/empty.out 56012bc364SMatthew G. Knepley 57012bc364SMatthew G. Knepley test: 58412e9a14SMatthew G. Knepley suffix: ref_tri 5930602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell triangle -dm_refine 2 -dm_plex_check_all 60*3886731fSPierre Jolivet output_file: output/empty.out 61412e9a14SMatthew G. Knepley 62412e9a14SMatthew G. Knepley test: 63412e9a14SMatthew G. Knepley suffix: box_tri 64ecfb7de4SBlaise Bourdin requires: triangle parmetis 65412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 66ecfb7de4SBlaise Bourdin args: -dm_plex_box_faces 3,3 -dm_refine 2 -dm_plex_check_all -petscpartitioner_type parmetis 67*3886731fSPierre Jolivet output_file: output/empty.out 68412e9a14SMatthew G. Knepley 69412e9a14SMatthew G. Knepley test: 70412e9a14SMatthew G. Knepley suffix: ref_quad 7130602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell quadrilateral -dm_refine 2 -dm_plex_check_all 72*3886731fSPierre Jolivet output_file: output/empty.out 73412e9a14SMatthew G. Knepley 74412e9a14SMatthew G. Knepley test: 75412e9a14SMatthew G. Knepley suffix: box_quad 76412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 77ecfb7de4SBlaise Bourdin requires: parmetis 78ecfb7de4SBlaise Bourdin args: -dm_plex_box_faces 3,3 -dm_plex_simplex 0 -dm_refine 2 -dm_plex_check_all -petscpartitioner_type parmetis 79*3886731fSPierre Jolivet output_file: output/empty.out 80412e9a14SMatthew G. Knepley 81412e9a14SMatthew G. Knepley test: 82533617b7SMatthew G. Knepley suffix: box_quad_label 83533617b7SMatthew G. Knepley args: -dm_plex_box_faces 3,3 -dm_plex_simplex 0 -dm_refine 2 -dm_plex_check_all -dm_plex_transform_label_match_strata {{0 1}separate output} -dm_view 84533617b7SMatthew G. Knepley 85533617b7SMatthew G. Knepley test: 86412e9a14SMatthew G. Knepley suffix: ref_tet 8730602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tetrahedron -dm_refine 2 -dm_plex_check_all 88*3886731fSPierre Jolivet output_file: output/empty.out 89412e9a14SMatthew G. Knepley 90412e9a14SMatthew G. Knepley test: 91412e9a14SMatthew G. Knepley suffix: box_tet 92ecfb7de4SBlaise Bourdin requires: ctetgen parmetis 93412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 94ecfb7de4SBlaise Bourdin args: -dm_plex_dim 3 -dm_plex_box_faces 3,3,3 -dm_refine 2 -dm_plex_check_all -petscpartitioner_type parmetis 95*3886731fSPierre Jolivet output_file: output/empty.out 96412e9a14SMatthew G. Knepley 97412e9a14SMatthew G. Knepley test: 98412e9a14SMatthew G. Knepley suffix: ref_hex 9930602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell hexahedron -dm_refine 2 -dm_plex_check_all 100*3886731fSPierre Jolivet output_file: output/empty.out 101412e9a14SMatthew G. Knepley 102412e9a14SMatthew G. Knepley test: 103412e9a14SMatthew G. Knepley suffix: box_hex 104ecfb7de4SBlaise Bourdin requires: parmetis 105412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 106ecfb7de4SBlaise Bourdin args: -dm_plex_dim 3 -dm_plex_box_faces 3,3,3 -dm_plex_simplex 0 -dm_refine 2 -dm_plex_check_all -petscpartitioner_type parmetis 107*3886731fSPierre Jolivet output_file: output/empty.out 108412e9a14SMatthew G. Knepley 109412e9a14SMatthew G. Knepley test: 110412e9a14SMatthew G. Knepley suffix: ref_trip 11130602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell triangular_prism -dm_refine 2 -dm_plex_check_all 112*3886731fSPierre Jolivet output_file: output/empty.out 113412e9a14SMatthew G. Knepley 114412e9a14SMatthew G. Knepley test: 115412e9a14SMatthew G. Knepley suffix: ref_tquad 11630602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_quad -dm_refine 2 -dm_plex_check_all 117*3886731fSPierre Jolivet output_file: output/empty.out 118412e9a14SMatthew G. Knepley 119412e9a14SMatthew G. Knepley test: 120412e9a14SMatthew G. Knepley suffix: ref_ttrip 12130602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_triangular_prism -dm_refine 2 -dm_plex_check_all 122*3886731fSPierre Jolivet output_file: output/empty.out 123412e9a14SMatthew G. Knepley 124412e9a14SMatthew G. Knepley test: 125412e9a14SMatthew G. Knepley suffix: ref_tquadp 12630602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_quadrilateral_prism -dm_refine 2 -dm_plex_check_all 127*3886731fSPierre Jolivet output_file: output/empty.out 128412e9a14SMatthew G. Knepley 129412e9a14SMatthew G. Knepley test: 130012bc364SMatthew G. Knepley suffix: ref_pyramid 131012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell pyramid -dm_refine 2 -dm_plex_check_all 132*3886731fSPierre Jolivet output_file: output/empty.out 133012bc364SMatthew G. Knepley 134012bc364SMatthew G. Knepley testset: 135012bc364SMatthew G. Knepley args: -dm_coord_space 0 -dm_plex_transform_type refine_tobox -dm_plex_check_all 136012bc364SMatthew G. Knepley 137012bc364SMatthew G. Knepley test: 13896ca5757SLisandro Dalcin suffix: ref_tri_tobox 139012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell triangle -dm_refine 2 140*3886731fSPierre Jolivet output_file: output/empty.out 141412e9a14SMatthew G. Knepley 142412e9a14SMatthew G. Knepley test: 14396ca5757SLisandro Dalcin suffix: box_tri_tobox 144ecfb7de4SBlaise Bourdin requires: triangle parmetis 145412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 146ecfb7de4SBlaise Bourdin args: -dm_plex_box_faces 3,3 -dm_refine 2 -petscpartitioner_type parmetis 147*3886731fSPierre Jolivet output_file: output/empty.out 148412e9a14SMatthew G. Knepley 149412e9a14SMatthew G. Knepley test: 15096ca5757SLisandro Dalcin suffix: ref_tet_tobox 151012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tetrahedron -dm_refine 2 152*3886731fSPierre Jolivet output_file: output/empty.out 153412e9a14SMatthew G. Knepley 154412e9a14SMatthew G. Knepley test: 15596ca5757SLisandro Dalcin suffix: box_tet_tobox 156ecfb7de4SBlaise Bourdin requires: ctetgen parmetis 157412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 158ecfb7de4SBlaise Bourdin args: -dm_plex_dim 3 -dm_plex_box_faces 3,3,3 -dm_refine 2 -petscpartitioner_type parmetis 159*3886731fSPierre Jolivet output_file: output/empty.out 160412e9a14SMatthew G. Knepley 161412e9a14SMatthew G. Knepley test: 16296ca5757SLisandro Dalcin suffix: ref_trip_tobox 163012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell triangular_prism -dm_refine 2 164*3886731fSPierre Jolivet output_file: output/empty.out 165412e9a14SMatthew G. Knepley 166412e9a14SMatthew G. Knepley test: 16796ca5757SLisandro Dalcin suffix: ref_ttrip_tobox 168012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_triangular_prism -dm_refine 2 169*3886731fSPierre Jolivet output_file: output/empty.out 170012bc364SMatthew G. Knepley 171012bc364SMatthew G. Knepley test: 172012bc364SMatthew G. Knepley suffix: ref_tquadp_tobox 173012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_quadrilateral_prism -dm_refine 2 174*3886731fSPierre Jolivet output_file: output/empty.out 175412e9a14SMatthew G. Knepley 176d410b0cfSMatthew G. Knepley testset: 177d410b0cfSMatthew G. Knepley args: -dm_coord_space 0 -label_mesh -post_label_dm_extrude 2 -post_label_dm_plex_check_all -dm_view ::ascii_info_detail 178d410b0cfSMatthew G. Knepley 179d410b0cfSMatthew G. Knepley test: 180d410b0cfSMatthew G. Knepley suffix: extrude_quad 181d410b0cfSMatthew G. Knepley args: -dm_plex_simplex 0 182d410b0cfSMatthew G. Knepley 183412e9a14SMatthew G. Knepley TEST*/ 184