1 static char help[] = "Create and view a forest mesh\n\n";
2
3 #include <petscdmforest.h>
4 #include <petscdmplex.h>
5 #include <petscoptions.h>
6
main(int argc,char ** argv)7 int main(int argc, char **argv)
8 {
9 DM dm;
10 char typeString[256] = {'\0'};
11 PetscViewer viewer = NULL;
12 PetscBool conv = PETSC_FALSE;
13
14 PetscFunctionBeginUser;
15 PetscCall(PetscInitialize(&argc, &argv, NULL, help));
16 PetscCall(DMCreate(PETSC_COMM_WORLD, &dm));
17 PetscCall(PetscStrncpy(typeString, DMFOREST, 256));
18 PetscOptionsBegin(PETSC_COMM_WORLD, NULL, "DM Forest example options", NULL);
19 PetscCall(PetscOptionsString("-dm_type", "The type of the dm", NULL, DMFOREST, typeString, sizeof(typeString), NULL));
20 PetscCall(PetscOptionsBool("-test_convert", "Test conversion to DMPLEX", NULL, conv, &conv, NULL));
21 PetscOptionsEnd();
22 PetscCall(DMSetType(dm, (DMType)typeString));
23 PetscCall(DMSetFromOptions(dm));
24 PetscCall(DMSetUp(dm));
25 PetscCall(DMViewFromOptions(dm, NULL, "-dm_view"));
26 PetscCall(PetscViewerDestroy(&viewer));
27 if (conv) {
28 DM dmConv;
29
30 PetscCall(DMConvert(dm, DMPLEX, &dmConv));
31 PetscCall(DMLocalizeCoordinates(dmConv));
32 PetscCall(DMViewFromOptions(dmConv, NULL, "-dm_conv_view"));
33 PetscCall(DMPlexCheckCellShape(dmConv, PETSC_FALSE, PETSC_DETERMINE));
34 PetscCall(DMDestroy(&dmConv));
35 }
36 PetscCall(DMDestroy(&dm));
37 PetscCall(PetscFinalize());
38 return 0;
39 }
40
41 /*TEST
42
43 test:
44 output_file: output/empty.out
45 suffix: p4est_topology_moebius
46 nsize: 3
47 args: -dm_type p4est -dm_forest_topology moebius -dm_view vtk:moebius.vtu
48 requires: p4est !complex
49
50 test:
51 output_file: output/empty.out
52 suffix: p4est_topology_moebius_convert
53 nsize: 3
54 args: -dm_type p4est -dm_forest_topology moebius -test_convert -dm_conv_view vtk:moebiusconv.vtu
55 requires: p4est !complex
56
57 test:
58 output_file: output/empty.out
59 suffix: p4est_topology_shell
60 nsize: 3
61 args: -dm_type p8est -dm_forest_topology shell -dm_view vtk:shell.vtu
62 requires: p4est !complex
63
64 test:
65 TODO: broken
66 output_file: output/empty.out
67 suffix: p4est_topology_shell_convert
68 nsize: 3
69 args: -dm_type p8est -dm_forest_topology shell -test_convert -dm_conv_view vtk:shellconv.vtu
70 requires: p4est !complex
71
72 test:
73 TODO: broken
74 output_file: output/empty.out
75 suffix: p4est_topology_sphere_convert
76 nsize: 3
77 args: -dm_type p8est -dm_forest_topology sphere -dm_view vtk:sphere.vtu -dm_forest_initial_refinement 1 -dm_forest_maximum_refinement 1 -test_convert -dm_conv_view vtk:sphereconv.vtu
78 requires: p4est !complex
79
80 test:
81 output_file: output/empty.out
82 suffix: p4est_topology_brick
83 nsize: 3
84 args: -dm_type p8est -dm_forest_topology brick -dm_p4est_brick_size 2,3,5 -dm_view vtk:brick.vtu
85 requires: p4est !complex
86
87 test:
88 output_file: output/ex1_brick_periodic_glvis.out
89 suffix: p4est_topology_brick_periodic_glvis
90 args: -dm_type p8est -dm_forest_topology brick -dm_p4est_brick_size 3,4,5 -dm_p4est_brick_periodicity 0,1,0 -test_convert -dm_conv_view glvis:
91 requires: p4est
92
93 test:
94 output_file: output/empty.out
95 suffix: p4est_topology_brick_periodic_2d
96 nsize: 3
97 args: -dm_type p4est -dm_forest_topology brick -dm_p4est_brick_size 5,6 -dm_p4est_brick_periodicity 1,0 -test_convert -dm_forest_initial_refinement 0 -dm_forest_maximum_refinement 2 -dm_p4est_refine_pattern hash
98 requires: p4est
99
100 test:
101 output_file: output/empty.out
102 suffix: p4est_topology_brick_periodic_3d
103 nsize: 3
104 args: -dm_type p8est -dm_forest_topology brick -dm_p4est_brick_size 5,6,1 -dm_p4est_brick_periodicity 0,1,0 -test_convert -dm_forest_initial_refinement 0 -dm_forest_maximum_refinement 2 -dm_p4est_refine_pattern hash
105 requires: p4est
106
107 TEST*/
108