Actual source code: ex53.c

  1: const char help[] = "Test distribution with overlap using DMForest";

  3: #include <petscdmplex.h>
  4: #include <petscdmforest.h>

  6: int main(int argc, char **argv)
  7: {
  8:   DM       forest, plex;
  9:   Vec      CoordVec;
 10:   MPI_Comm comm;

 12:   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
 13:   comm = PETSC_COMM_WORLD;
 14:   PetscCall(DMCreate(comm, &forest));
 15:   PetscCall(PetscObjectSetName((PetscObject)forest, "forest"));
 16:   PetscCall(DMSetType(forest, DMP8EST));
 17:   PetscCall(DMSetBasicAdjacency(forest, PETSC_TRUE, PETSC_TRUE));
 18:   {
 19:     DM dm_base;

 21:     PetscCall(DMCreate(comm, &dm_base));
 22:     PetscCall(DMSetType(dm_base, DMPLEX));
 23:     PetscCall(PetscObjectSetOptionsPrefix((PetscObject)dm_base, "base_"));
 24:     PetscCall(DMSetFromOptions(dm_base));
 25:     PetscCall(DMViewFromOptions(dm_base, NULL, "-dm_view"));
 26:     PetscCall(DMCopyFields(dm_base, PETSC_DETERMINE, PETSC_DETERMINE, forest));
 27:     PetscCall(DMForestSetBaseDM(forest, dm_base));
 28:     PetscCall(DMDestroy(&dm_base));
 29:   }
 30:   PetscCall(DMForestSetPartitionOverlap(forest, 1));
 31:   PetscCall(DMSetFromOptions(forest));
 32:   PetscCall(DMSetUp(forest));
 33:   PetscCall(DMViewFromOptions(forest, NULL, "-dm_forest_view"));

 35:   PetscCall(DMConvert(forest, DMPLEX, &plex));
 36:   PetscCall(DMGetCoordinates(plex, &CoordVec));
 37:   PetscCall(DMViewFromOptions(forest, NULL, "-dm_plex_view"));

 39:   PetscCall(DMDestroy(&plex));
 40:   PetscCall(DMDestroy(&forest));
 41:   PetscCall(PetscFinalize());
 42:   return 0;
 43: }

 45: /*TEST

 47:   testset:
 48:     requires: p4est
 49:     args: -base_dm_plex_dim 3 -base_dm_plex_simplex 0 -base_dm_plex_box_faces 3,3,3 -base_dm_distribute_overlap 1 \
 50:           -base_dm_plex_adj_cone true -base_dm_plex_adj_closure true \
 51:           -base_dm_view -dm_forest_view -dm_plex_view

 53:     test:
 54:       suffix: 0

 56:     test:
 57:       suffix: 1
 58:       nsize: 3
 59:       args: -petscpartitioner_type simple

 61: TEST*/