#include #include int main(int argc, char *argv[]) { DM dm, pdm = NULL; PetscPartitioner part; PetscInt faces[3], refine = 0; PetscErrorCode ierr; ierr = PetscInitialize(&argc, &argv, NULL, NULL);CHKERRQ(ierr); /* get the refinement level and create the mesh */ ierr = PetscOptionsGetInt(NULL, NULL, "-refine", &refine, NULL);CHKERRQ(ierr); faces[0] = faces[1] = faces[2] = refine; ierr = DMPlexCreateBoxMesh(PETSC_COMM_WORLD, 2, PETSC_FALSE, faces, NULL, NULL, NULL, PETSC_TRUE, &dm);CHKERRQ(ierr); ierr = DMView(dm, PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr); ierr = DMPlexGetPartitioner(dm, &part);CHKERRQ(ierr); ierr = PetscPartitionerSetFromOptions(part);CHKERRQ(ierr); ierr = DMPlexDistribute(dm, 0, NULL, &pdm);CHKERRQ(ierr); if (pdm) { ierr = DMDestroy(&dm);CHKERRQ(ierr); dm = pdm; } ierr = DMView(dm, PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr); ierr = DMDestroy(&dm);CHKERRQ(ierr); ierr = PetscFinalize(); return ierr; }