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