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
LabelPoints(DM dm)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
CreateMesh(MPI_Comm comm,DM * dm)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
main(int argc,char ** argv)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