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