Actual source code: ex1.c
2: static char help[] = "Tests various DM routines.\n\n";
4: #include <petscdm.h>
5: #include <petscdmda.h>
7: int main(int argc,char **argv)
8: {
9: PetscMPIInt rank;
10: PetscInt M = 10,N = 8,m = PETSC_DECIDE,n = PETSC_DECIDE;
11: DM da;
12: PetscViewer viewer;
13: Vec local,global;
14: PetscScalar value;
16: PetscInitialize(&argc,&argv,(char*)0,help);
17: PetscViewerDrawOpen(PETSC_COMM_WORLD,0,"",300,0,300,300,&viewer);
19: /* Read options */
20: PetscOptionsGetInt(NULL,NULL,"-M",&M,NULL);
21: PetscOptionsGetInt(NULL,NULL,"-N",&N,NULL);
22: PetscOptionsGetInt(NULL,NULL,"-m",&m,NULL);
23: PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL);
25: /* Create distributed array and get vectors */
26: DMDACreate2d(PETSC_COMM_WORLD, DM_BOUNDARY_NONE, DM_BOUNDARY_NONE,DMDA_STENCIL_BOX,M,N,m,n,1,1,NULL,NULL,&da);
27: DMSetFromOptions(da);
28: DMSetUp(da);
29: DMCreateGlobalVector(da,&global);
30: DMCreateLocalVector(da,&local);
32: value = -3.0;
33: VecSet(global,value);
34: DMGlobalToLocalBegin(da,global,INSERT_VALUES,local);
35: DMGlobalToLocalEnd(da,global,INSERT_VALUES,local);
37: MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
38: value = rank+1;
39: VecScale(local,value);
40: DMLocalToGlobalBegin(da,local,ADD_VALUES,global);
41: DMLocalToGlobalEnd(da,local,ADD_VALUES,global);
43: VecView(global,PETSC_VIEWER_STDOUT_WORLD);
44: DMView(da,viewer);
46: /* Free memory */
47: PetscViewerDestroy(&viewer);
48: VecDestroy(&local);
49: VecDestroy(&global);
50: DMDestroy(&da);
51: PetscFinalize();
52: return 0;
53: }
55: /*TEST
57: test:
58: nsize: 2
59: args: -nox
60: filter: grep -v -i Object
62: test:
63: suffix: cuda1
64: requires: cuda
65: args: -dm_vec_type cuda -nox
66: filter: grep -v -i Object
68: test:
69: suffix: cuda2
70: nsize: 2
71: requires: cuda
72: args: -dm_vec_type cuda -nox
73: filter: grep -v -i Object
75: TEST*/