Actual source code: ex12.c
2: static char help[] = "Tests DMGetGlobalVector() and DMRestoreGlobalVector().\n\n";
4: /*
5: Use the options
6: -da_grid_x <nx> - number of grid points in x direction, if M < 0
7: -da_grid_y <ny> - number of grid points in y direction, if N < 0
8: -da_processors_x <MX> number of processors in x directio
9: -da_processors_y <MY> number of processors in x direction
10: */
12: #include <petscdm.h>
13: #include <petscdmda.h>
15: int main(int argc, char **argv)
16: {
17: PetscInt M = 10, N = 8;
18: PetscBool flg = PETSC_FALSE;
19: DM da;
20: Vec global1, global2, global3;
21: DMBoundaryType bx = DM_BOUNDARY_NONE, by = DM_BOUNDARY_NONE;
22: DMDAStencilType stype = DMDA_STENCIL_BOX;
24: PetscFunctionBeginUser;
25: PetscCall(PetscInitialize(&argc, &argv, (char *)0, help));
26: PetscCall(PetscOptionsGetBool(NULL, NULL, "-star_stencil", &flg, NULL));
27: if (flg) stype = DMDA_STENCIL_STAR;
29: /* Create distributed array and get vectors */
30: PetscCall(DMDACreate2d(PETSC_COMM_WORLD, bx, by, stype, M, N, PETSC_DECIDE, PETSC_DECIDE, 1, 1, NULL, NULL, &da));
31: PetscCall(DMSetFromOptions(da));
32: PetscCall(DMSetUp(da));
33: PetscCall(DMGetGlobalVector(da, &global1));
34: PetscCall(DMGetGlobalVector(da, &global2));
35: PetscCall(DMRestoreGlobalVector(da, &global1));
36: PetscCall(DMRestoreGlobalVector(da, &global2));
37: PetscCall(DMGetGlobalVector(da, &global1));
38: PetscCall(DMGetGlobalVector(da, &global3));
39: PetscCall(DMGetGlobalVector(da, &global2));
40: PetscCall(DMRestoreGlobalVector(da, &global1));
41: PetscCall(DMRestoreGlobalVector(da, &global3));
42: PetscCall(DMRestoreGlobalVector(da, &global2));
43: PetscCall(DMGetGlobalVector(da, &global1));
44: PetscCall(DMGetGlobalVector(da, &global3));
45: PetscCall(DMGetGlobalVector(da, &global2));
46: PetscCall(DMRestoreGlobalVector(da, &global1));
47: PetscCall(DMRestoreGlobalVector(da, &global3));
48: PetscCall(DMRestoreGlobalVector(da, &global2));
49: PetscCall(DMDestroy(&da));
50: PetscCall(PetscFinalize());
51: return 0;
52: }
54: /*TEST
56: test:
58: TEST*/