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 8d410b0cfSMatthew G. Knepley static PetscErrorCode LabelPoints(DM dm) 9d410b0cfSMatthew G. Knepley { 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; 155f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsGetBool(NULL, NULL, "-label_mesh", &flg, NULL)); 16d410b0cfSMatthew G. Knepley if (!flg) PetscFunctionReturn(0); 175f80ce2aSJacob Faibussowitsch CHKERRQ(DMCreateLabel(dm, "test")); 185f80ce2aSJacob Faibussowitsch CHKERRQ(DMGetLabel(dm, "test", &label)); 195f80ce2aSJacob Faibussowitsch CHKERRQ(DMPlexGetChart(dm, &pStart, &pEnd)); 20d410b0cfSMatthew G. Knepley for (p = pStart; p < pEnd; ++p) { 215f80ce2aSJacob Faibussowitsch CHKERRQ(DMLabelSetValue(label, p, p)); 22d410b0cfSMatthew G. Knepley } 23d410b0cfSMatthew G. Knepley PetscFunctionReturn(0); 24d410b0cfSMatthew G. Knepley } 25d410b0cfSMatthew G. Knepley 2630602db0SMatthew G. Knepley static PetscErrorCode CreateMesh(MPI_Comm comm, DM *dm) 27412e9a14SMatthew G. Knepley { 28412e9a14SMatthew G. Knepley PetscFunctionBegin; 295f80ce2aSJacob Faibussowitsch CHKERRQ(DMCreate(comm, dm)); 305f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetType(*dm, DMPLEX)); 315f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetFromOptions(*dm)); 325f80ce2aSJacob Faibussowitsch CHKERRQ(LabelPoints(*dm)); 335f80ce2aSJacob Faibussowitsch CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, "post_label_")); 345f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetFromOptions(*dm)); 355f80ce2aSJacob Faibussowitsch CHKERRQ(PetscObjectSetOptionsPrefix((PetscObject) *dm, NULL)); 365f80ce2aSJacob Faibussowitsch CHKERRQ(DMViewFromOptions(*dm, NULL, "-dm_view")); 37412e9a14SMatthew G. Knepley PetscFunctionReturn(0); 38412e9a14SMatthew G. Knepley } 39412e9a14SMatthew G. Knepley 40412e9a14SMatthew G. Knepley int main(int argc, char **argv) 41412e9a14SMatthew G. Knepley { 42412e9a14SMatthew G. Knepley DM dm; 43412e9a14SMatthew G. Knepley 44*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscInitialize(&argc, &argv, NULL, help)); 455f80ce2aSJacob Faibussowitsch CHKERRQ(CreateMesh(PETSC_COMM_WORLD, &dm)); 465f80ce2aSJacob Faibussowitsch CHKERRQ(DMDestroy(&dm)); 47*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscFinalize()); 48*b122ec5aSJacob 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 55012bc364SMatthew G. Knepley 56012bc364SMatthew G. Knepley test: 57412e9a14SMatthew G. Knepley suffix: ref_tri 5830602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell triangle -dm_refine 2 -dm_plex_check_all 59412e9a14SMatthew G. Knepley 60412e9a14SMatthew G. Knepley test: 61412e9a14SMatthew G. Knepley suffix: box_tri 6254fcfd0cSMatthew G. Knepley requires: triangle 63412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 64e600fa54SMatthew G. Knepley args: -dm_plex_box_faces 3,3 -dm_refine 2 -dm_plex_check_all 65412e9a14SMatthew G. Knepley 66412e9a14SMatthew G. Knepley test: 67412e9a14SMatthew G. Knepley suffix: ref_quad 6830602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell quadrilateral -dm_refine 2 -dm_plex_check_all 69412e9a14SMatthew G. Knepley 70412e9a14SMatthew G. Knepley test: 71412e9a14SMatthew G. Knepley suffix: box_quad 72412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 73e600fa54SMatthew G. Knepley args: -dm_plex_box_faces 3,3 -dm_plex_simplex 0 -dm_refine 2 -dm_plex_check_all 74412e9a14SMatthew G. Knepley 75412e9a14SMatthew G. Knepley test: 76412e9a14SMatthew G. Knepley suffix: ref_tet 7730602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tetrahedron -dm_refine 2 -dm_plex_check_all 78412e9a14SMatthew G. Knepley 79412e9a14SMatthew G. Knepley test: 80412e9a14SMatthew G. Knepley suffix: box_tet 8154fcfd0cSMatthew G. Knepley requires: ctetgen 82412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 83e600fa54SMatthew G. Knepley args: -dm_plex_dim 3 -dm_plex_box_faces 3,3,3 -dm_refine 2 -dm_plex_check_all 84412e9a14SMatthew G. Knepley 85412e9a14SMatthew G. Knepley test: 86412e9a14SMatthew G. Knepley suffix: ref_hex 8730602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell hexahedron -dm_refine 2 -dm_plex_check_all 88412e9a14SMatthew G. Knepley 89412e9a14SMatthew G. Knepley test: 90412e9a14SMatthew G. Knepley suffix: box_hex 91412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 92e600fa54SMatthew G. Knepley args: -dm_plex_dim 3 -dm_plex_box_faces 3,3,3 -dm_plex_simplex 0 -dm_refine 2 -dm_plex_check_all 93412e9a14SMatthew G. Knepley 94412e9a14SMatthew G. Knepley test: 95412e9a14SMatthew G. Knepley suffix: ref_trip 9630602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell triangular_prism -dm_refine 2 -dm_plex_check_all 97412e9a14SMatthew G. Knepley 98412e9a14SMatthew G. Knepley test: 99412e9a14SMatthew G. Knepley suffix: ref_tquad 10030602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_quad -dm_refine 2 -dm_plex_check_all 101412e9a14SMatthew G. Knepley 102412e9a14SMatthew G. Knepley test: 103412e9a14SMatthew G. Knepley suffix: ref_ttrip 10430602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_triangular_prism -dm_refine 2 -dm_plex_check_all 105412e9a14SMatthew G. Knepley 106412e9a14SMatthew G. Knepley test: 107412e9a14SMatthew G. Knepley suffix: ref_tquadp 10830602db0SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_quadrilateral_prism -dm_refine 2 -dm_plex_check_all 109412e9a14SMatthew G. Knepley 110412e9a14SMatthew G. Knepley test: 111012bc364SMatthew G. Knepley suffix: ref_pyramid 112012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell pyramid -dm_refine 2 -dm_plex_check_all 113012bc364SMatthew G. Knepley 114012bc364SMatthew G. Knepley testset: 115012bc364SMatthew G. Knepley args: -dm_coord_space 0 -dm_plex_transform_type refine_tobox -dm_plex_check_all 116012bc364SMatthew G. Knepley 117012bc364SMatthew G. Knepley test: 11896ca5757SLisandro Dalcin suffix: ref_tri_tobox 119012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell triangle -dm_refine 2 120412e9a14SMatthew G. Knepley 121412e9a14SMatthew G. Knepley test: 12296ca5757SLisandro Dalcin suffix: box_tri_tobox 12354fcfd0cSMatthew G. Knepley requires: triangle 124412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 125e600fa54SMatthew G. Knepley args: -dm_plex_box_faces 3,3 -dm_refine 2 126412e9a14SMatthew G. Knepley 127412e9a14SMatthew G. Knepley test: 12896ca5757SLisandro Dalcin suffix: ref_tet_tobox 129012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tetrahedron -dm_refine 2 130412e9a14SMatthew G. Knepley 131412e9a14SMatthew G. Knepley test: 13296ca5757SLisandro Dalcin suffix: box_tet_tobox 13354fcfd0cSMatthew G. Knepley requires: ctetgen 134412e9a14SMatthew G. Knepley nsize: {{1 3 5}} 135e600fa54SMatthew G. Knepley args: -dm_plex_dim 3 -dm_plex_box_faces 3,3,3 -dm_refine 2 136412e9a14SMatthew G. Knepley 137412e9a14SMatthew G. Knepley test: 13896ca5757SLisandro Dalcin suffix: ref_trip_tobox 139012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell triangular_prism -dm_refine 2 140412e9a14SMatthew G. Knepley 141412e9a14SMatthew G. Knepley test: 14296ca5757SLisandro Dalcin suffix: ref_ttrip_tobox 143012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_triangular_prism -dm_refine 2 144012bc364SMatthew G. Knepley 145012bc364SMatthew G. Knepley test: 146012bc364SMatthew G. Knepley suffix: ref_tquadp_tobox 147012bc364SMatthew G. Knepley args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_quadrilateral_prism -dm_refine 2 148412e9a14SMatthew G. Knepley 149d410b0cfSMatthew G. Knepley testset: 150d410b0cfSMatthew 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 151d410b0cfSMatthew G. Knepley 152d410b0cfSMatthew G. Knepley test: 153d410b0cfSMatthew G. Knepley suffix: extrude_quad 154d410b0cfSMatthew G. Knepley args: -dm_plex_simplex 0 155d410b0cfSMatthew G. Knepley 156412e9a14SMatthew G. Knepley TEST*/ 157