Actual source code: ex29.c
2: static char help[] = "Tests VecSetValues and VecSetValuesBlocked() on MPI vectors.\n\
3: Where atleast a couple of mallocs will occur in the stash code.\n\n";
5: #include petscvec.h
6: #include petscsys.h
10: int main(int argc,char **argv)
11: {
13: PetscMPIInt size;
14: PetscInt i,j,n = 50,bs;
15: PetscScalar val,*vals,zero=0.0;
16: Vec x;
18: PetscInitialize(&argc,&argv,(char*)0,help);
19: MPI_Comm_size(PETSC_COMM_WORLD,&size);
20: bs = size;
22: PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);
23: VecCreate(PETSC_COMM_WORLD,&x);
24: VecSetSizes(x,PETSC_DECIDE,n*bs);
25: VecSetBlockSize(x,bs);
26: VecSetFromOptions(x);
28: for (i=0; i<n*bs; i++) {
29: val = i*1.0;
30: VecSetValues(x,1,&i,&val,INSERT_VALUES);
31: }
32: VecAssemblyBegin(x);
33: VecAssemblyEnd(x);
35: VecView(x,PETSC_VIEWER_STDOUT_WORLD);
37: /* Now do the blocksetvalues */
38: VecSet(x,zero);
39: PetscMalloc(bs*sizeof(PetscScalar),&vals);
40: for (i=0; i<n; i++) {
41: for (j=0; j<bs; j++) {
42: vals[j] = (i*bs+j)*1.0;
43: }
44: VecSetValuesBlocked(x,1,&i,vals,INSERT_VALUES);
45: }
47: VecAssemblyBegin(x);
48: VecAssemblyEnd(x);
50: VecView(x,PETSC_VIEWER_STDOUT_WORLD);
52: VecDestroy(x);
53: PetscFree(vals);
54: PetscFinalize();
55: return 0;
56: }
57: