Actual source code: ex26.c
1: static char help[] = "Tests error message in DMCreateColoring() with periodic boundary conditions. \n\n";
3: #include <petscdm.h>
4: #include <petscdmda.h>
5: #include <petscmat.h>
7: int main(int argc, char **argv)
8: {
9: Mat J;
10: DM da;
11: MatFDColoring matfdcoloring = 0;
12: ISColoring iscoloring;
14: PetscFunctionBeginUser;
15: PetscCall(PetscInitialize(&argc, &argv, NULL, help));
16: /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
17: Create distributed array (DMDA) to manage parallel grid and vectors
18: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19: PetscCall(DMDACreate2d(PETSC_COMM_WORLD, DM_BOUNDARY_PERIODIC, DM_BOUNDARY_NONE, DMDA_STENCIL_BOX, -5, -5, PETSC_DECIDE, PETSC_DECIDE, 1, 2, 0, 0, &da));
20: PetscCall(DMSetFromOptions(da));
21: PetscCall(DMSetUp(da));
22: PetscCall(DMSetMatType(da, MATAIJ));
23: PetscCall(DMCreateMatrix(da, &J));
24: PetscCall(DMCreateColoring(da, IS_COLORING_LOCAL, &iscoloring));
25: PetscCall(MatFDColoringCreate(J, iscoloring, &matfdcoloring));
26: PetscCall(MatFDColoringSetUp(J, iscoloring, matfdcoloring));
27: PetscCall(ISColoringDestroy(&iscoloring));
29: /* free spaces */
30: PetscCall(MatDestroy(&J));
31: PetscCall(MatFDColoringDestroy(&matfdcoloring));
32: PetscCall(DMDestroy(&da));
33: PetscCall(PetscFinalize());
34: return 0;
35: }