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