xref: /petsc/src/dm/impls/plex/tests/ex40.c (revision 48a46eb9bd028bec07ec0f396b1a3abb43f14558)
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 
89371c9d4SSatish Balay static PetscErrorCode LabelPoints(DM dm) {
9d410b0cfSMatthew G. Knepley   DMLabel   label;
10d410b0cfSMatthew G. Knepley   PetscInt  pStart, pEnd, p;
11d410b0cfSMatthew G. Knepley   PetscBool flg = PETSC_FALSE;
12d410b0cfSMatthew G. Knepley 
13d410b0cfSMatthew G. Knepley   PetscFunctionBegin;
149566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetBool(NULL, NULL, "-label_mesh", &flg, NULL));
15d410b0cfSMatthew G. Knepley   if (!flg) PetscFunctionReturn(0);
169566063dSJacob Faibussowitsch   PetscCall(DMCreateLabel(dm, "test"));
179566063dSJacob Faibussowitsch   PetscCall(DMGetLabel(dm, "test", &label));
189566063dSJacob Faibussowitsch   PetscCall(DMPlexGetChart(dm, &pStart, &pEnd));
19*48a46eb9SPierre Jolivet   for (p = pStart; p < pEnd; ++p) PetscCall(DMLabelSetValue(label, p, p));
20d410b0cfSMatthew G. Knepley   PetscFunctionReturn(0);
21d410b0cfSMatthew G. Knepley }
22d410b0cfSMatthew G. Knepley 
239371c9d4SSatish Balay static PetscErrorCode CreateMesh(MPI_Comm comm, DM *dm) {
24412e9a14SMatthew G. Knepley   PetscFunctionBegin;
259566063dSJacob Faibussowitsch   PetscCall(DMCreate(comm, dm));
269566063dSJacob Faibussowitsch   PetscCall(DMSetType(*dm, DMPLEX));
279566063dSJacob Faibussowitsch   PetscCall(DMSetFromOptions(*dm));
289566063dSJacob Faibussowitsch   PetscCall(LabelPoints(*dm));
299566063dSJacob Faibussowitsch   PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, "post_label_"));
309566063dSJacob Faibussowitsch   PetscCall(DMSetFromOptions(*dm));
319566063dSJacob Faibussowitsch   PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*dm, NULL));
329566063dSJacob Faibussowitsch   PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
33412e9a14SMatthew G. Knepley   PetscFunctionReturn(0);
34412e9a14SMatthew G. Knepley }
35412e9a14SMatthew G. Knepley 
369371c9d4SSatish Balay int main(int argc, char **argv) {
37412e9a14SMatthew G. Knepley   DM dm;
38412e9a14SMatthew G. Knepley 
39327415f7SBarry Smith   PetscFunctionBeginUser;
409566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
419566063dSJacob Faibussowitsch   PetscCall(CreateMesh(PETSC_COMM_WORLD, &dm));
429566063dSJacob Faibussowitsch   PetscCall(DMDestroy(&dm));
439566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
44b122ec5aSJacob Faibussowitsch   return 0;
45412e9a14SMatthew G. Knepley }
46412e9a14SMatthew G. Knepley 
47412e9a14SMatthew G. Knepley /*TEST
48412e9a14SMatthew G. Knepley   test:
49012bc364SMatthew G. Knepley     suffix: ref_seg
50012bc364SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell segment -dm_refine 1 -dm_plex_check_all
51012bc364SMatthew G. Knepley 
52012bc364SMatthew G. Knepley   test:
53412e9a14SMatthew G. Knepley     suffix: ref_tri
5430602db0SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell triangle -dm_refine 2 -dm_plex_check_all
55412e9a14SMatthew G. Knepley 
56412e9a14SMatthew G. Knepley   test:
57412e9a14SMatthew G. Knepley     suffix: box_tri
58ecfb7de4SBlaise Bourdin     requires: triangle parmetis
59412e9a14SMatthew G. Knepley     nsize: {{1 3 5}}
60ecfb7de4SBlaise Bourdin     args: -dm_plex_box_faces 3,3 -dm_refine 2 -dm_plex_check_all -petscpartitioner_type parmetis
61412e9a14SMatthew G. Knepley 
62412e9a14SMatthew G. Knepley   test:
63412e9a14SMatthew G. Knepley     suffix: ref_quad
6430602db0SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell quadrilateral -dm_refine 2 -dm_plex_check_all
65412e9a14SMatthew G. Knepley 
66412e9a14SMatthew G. Knepley   test:
67412e9a14SMatthew G. Knepley     suffix: box_quad
68412e9a14SMatthew G. Knepley     nsize: {{1 3 5}}
69ecfb7de4SBlaise Bourdin     requires: parmetis
70ecfb7de4SBlaise Bourdin     args: -dm_plex_box_faces 3,3 -dm_plex_simplex 0 -dm_refine 2 -dm_plex_check_all -petscpartitioner_type parmetis
71412e9a14SMatthew G. Knepley 
72412e9a14SMatthew G. Knepley   test:
73412e9a14SMatthew G. Knepley     suffix: ref_tet
7430602db0SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell tetrahedron -dm_refine 2 -dm_plex_check_all
75412e9a14SMatthew G. Knepley 
76412e9a14SMatthew G. Knepley   test:
77412e9a14SMatthew G. Knepley     suffix: box_tet
78ecfb7de4SBlaise Bourdin     requires: ctetgen parmetis
79412e9a14SMatthew G. Knepley     nsize: {{1 3 5}}
80ecfb7de4SBlaise Bourdin     args: -dm_plex_dim 3 -dm_plex_box_faces 3,3,3 -dm_refine 2 -dm_plex_check_all -petscpartitioner_type parmetis
81412e9a14SMatthew G. Knepley 
82412e9a14SMatthew G. Knepley   test:
83412e9a14SMatthew G. Knepley     suffix: ref_hex
8430602db0SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell hexahedron -dm_refine 2 -dm_plex_check_all
85412e9a14SMatthew G. Knepley 
86412e9a14SMatthew G. Knepley   test:
87412e9a14SMatthew G. Knepley     suffix: box_hex
88ecfb7de4SBlaise Bourdin     requires: parmetis
89412e9a14SMatthew G. Knepley     nsize: {{1 3 5}}
90ecfb7de4SBlaise 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
91412e9a14SMatthew G. Knepley 
92412e9a14SMatthew G. Knepley   test:
93412e9a14SMatthew G. Knepley     suffix: ref_trip
9430602db0SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell triangular_prism -dm_refine 2 -dm_plex_check_all
95412e9a14SMatthew G. Knepley 
96412e9a14SMatthew G. Knepley   test:
97412e9a14SMatthew G. Knepley     suffix: ref_tquad
9830602db0SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_quad -dm_refine 2 -dm_plex_check_all
99412e9a14SMatthew G. Knepley 
100412e9a14SMatthew G. Knepley   test:
101412e9a14SMatthew G. Knepley     suffix: ref_ttrip
10230602db0SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_triangular_prism -dm_refine 2 -dm_plex_check_all
103412e9a14SMatthew G. Knepley 
104412e9a14SMatthew G. Knepley   test:
105412e9a14SMatthew G. Knepley     suffix: ref_tquadp
10630602db0SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_quadrilateral_prism -dm_refine 2 -dm_plex_check_all
107412e9a14SMatthew G. Knepley 
108412e9a14SMatthew G. Knepley   test:
109012bc364SMatthew G. Knepley     suffix: ref_pyramid
110012bc364SMatthew G. Knepley     args: -dm_plex_reference_cell_domain -dm_plex_cell pyramid -dm_refine 2 -dm_plex_check_all
111012bc364SMatthew G. Knepley 
112012bc364SMatthew G. Knepley   testset:
113012bc364SMatthew G. Knepley     args: -dm_coord_space 0 -dm_plex_transform_type refine_tobox -dm_plex_check_all
114012bc364SMatthew G. Knepley 
115012bc364SMatthew G. Knepley     test:
11696ca5757SLisandro Dalcin       suffix: ref_tri_tobox
117012bc364SMatthew G. Knepley       args: -dm_plex_reference_cell_domain -dm_plex_cell triangle -dm_refine 2
118412e9a14SMatthew G. Knepley 
119412e9a14SMatthew G. Knepley     test:
12096ca5757SLisandro Dalcin       suffix: box_tri_tobox
121ecfb7de4SBlaise Bourdin       requires: triangle parmetis
122412e9a14SMatthew G. Knepley       nsize: {{1 3 5}}
123ecfb7de4SBlaise Bourdin       args: -dm_plex_box_faces 3,3 -dm_refine 2 -petscpartitioner_type parmetis
124412e9a14SMatthew G. Knepley 
125412e9a14SMatthew G. Knepley     test:
12696ca5757SLisandro Dalcin       suffix: ref_tet_tobox
127012bc364SMatthew G. Knepley       args: -dm_plex_reference_cell_domain -dm_plex_cell tetrahedron -dm_refine 2
128412e9a14SMatthew G. Knepley 
129412e9a14SMatthew G. Knepley     test:
13096ca5757SLisandro Dalcin       suffix: box_tet_tobox
131ecfb7de4SBlaise Bourdin       requires: ctetgen parmetis
132412e9a14SMatthew G. Knepley       nsize: {{1 3 5}}
133ecfb7de4SBlaise Bourdin       args: -dm_plex_dim 3 -dm_plex_box_faces 3,3,3 -dm_refine 2 -petscpartitioner_type parmetis
134412e9a14SMatthew G. Knepley 
135412e9a14SMatthew G. Knepley     test:
13696ca5757SLisandro Dalcin       suffix: ref_trip_tobox
137012bc364SMatthew G. Knepley       args: -dm_plex_reference_cell_domain -dm_plex_cell triangular_prism -dm_refine 2
138412e9a14SMatthew G. Knepley 
139412e9a14SMatthew G. Knepley     test:
14096ca5757SLisandro Dalcin       suffix: ref_ttrip_tobox
141012bc364SMatthew G. Knepley       args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_triangular_prism -dm_refine 2
142012bc364SMatthew G. Knepley 
143012bc364SMatthew G. Knepley     test:
144012bc364SMatthew G. Knepley       suffix: ref_tquadp_tobox
145012bc364SMatthew G. Knepley       args: -dm_plex_reference_cell_domain -dm_plex_cell tensor_quadrilateral_prism -dm_refine 2
146412e9a14SMatthew G. Knepley 
147d410b0cfSMatthew G. Knepley   testset:
148d410b0cfSMatthew 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
149d410b0cfSMatthew G. Knepley 
150d410b0cfSMatthew G. Knepley     test:
151d410b0cfSMatthew G. Knepley       suffix: extrude_quad
152d410b0cfSMatthew G. Knepley       args: -dm_plex_simplex 0
153d410b0cfSMatthew G. Knepley 
154412e9a14SMatthew G. Knepley TEST*/
155