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 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 PetscCall(PetscInitialize(&argc, &argv, NULL,help)); 15 PetscCall(DMCreate(PETSC_COMM_WORLD, &dm)); 16 PetscCall(PetscStrncpy(typeString,DMFOREST,256)); 17 PetscOptionsBegin(PETSC_COMM_WORLD,NULL,"DM Forest example options",NULL); 18 PetscCall(PetscOptionsString("-dm_type","The type of the dm",NULL,DMFOREST,typeString,sizeof(typeString),NULL)); 19 PetscCall(PetscOptionsBool("-test_convert","Test conversion to DMPLEX",NULL,conv,&conv,NULL)); 20 PetscOptionsEnd(); 21 PetscCall(DMSetType(dm,(DMType) typeString)); 22 PetscCall(DMSetFromOptions(dm)); 23 PetscCall(DMSetUp(dm)); 24 PetscCall(DMViewFromOptions(dm,NULL,"-dm_view")); 25 PetscCall(PetscViewerDestroy(&viewer)); 26 if (conv) { 27 DM dmConv; 28 29 PetscCall(DMConvert(dm,DMPLEX,&dmConv)); 30 PetscCall(DMLocalizeCoordinates(dmConv)); 31 PetscCall(DMViewFromOptions(dmConv,NULL,"-dm_conv_view")); 32 PetscCall(DMPlexCheckCellShape(dmConv,PETSC_FALSE,PETSC_DETERMINE)); 33 PetscCall(DMDestroy(&dmConv)); 34 } 35 PetscCall(DMDestroy(&dm)); 36 PetscCall(PetscFinalize()); 37 return 0; 38 } 39 40 /*TEST 41 42 test: 43 output_file: output/ex1_moebius.out 44 suffix: p4est_topology_moebius 45 nsize: 3 46 args: -dm_type p4est -dm_forest_topology moebius -dm_view vtk:moebius.vtu 47 requires: p4est !complex 48 49 test: 50 output_file: output/ex1_moebius.out 51 suffix: p4est_topology_moebius_convert 52 nsize: 3 53 args: -dm_type p4est -dm_forest_topology moebius -test_convert -dm_conv_view vtk:moebiusconv.vtu 54 requires: p4est !complex 55 56 test: 57 output_file: output/ex1_shell.out 58 suffix: p4est_topology_shell 59 nsize: 3 60 args: -dm_type p8est -dm_forest_topology shell -dm_view vtk:shell.vtu 61 requires: p4est !complex 62 63 test: 64 TODO: broken 65 output_file: output/ex1_shell.out 66 suffix: p4est_topology_shell_convert 67 nsize: 3 68 args: -dm_type p8est -dm_forest_topology shell -test_convert -dm_conv_view vtk:shellconv.vtu 69 requires: p4est !complex 70 71 test: 72 TODO: broken 73 output_file: output/ex1_sphere.out 74 suffix: p4est_topology_sphere_convert 75 nsize: 3 76 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 77 requires: p4est !complex 78 79 test: 80 output_file: output/ex1_brick.out 81 suffix: p4est_topology_brick 82 nsize: 3 83 args: -dm_type p8est -dm_forest_topology brick -dm_p4est_brick_size 2,3,5 -dm_view vtk:brick.vtu 84 requires: p4est !complex 85 86 test: 87 output_file: output/ex1_brick_periodic_glvis.out 88 suffix: p4est_topology_brick_periodic_glvis 89 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: 90 requires: p4est 91 92 test: 93 output_file: output/ex1_brick.out 94 suffix: p4est_topology_brick_periodic_2d 95 nsize: 3 96 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 97 requires: p4est 98 99 test: 100 output_file: output/ex1_brick.out 101 suffix: p4est_topology_brick_periodic_3d 102 nsize: 3 103 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 104 requires: p4est 105 106 TEST*/ 107