xref: /petsc/src/dm/impls/plex/tests/ex40.c (revision b122ec5aa1bd4469eb4e0673542fb7de3f411254)
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