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
9: int main(int argc,char **argv)
10: {
12: PetscMPIInt size;
13: PetscInt i,j,n = 50,bs;
14: PetscScalar val,*vals,zero=0.0;
15: Vec x;
17: PetscInitialize(&argc,&argv,(char*)0,help);
18: MPI_Comm_size(PETSC_COMM_WORLD,&size);
19: bs = size;
21: PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);
22: VecCreate(PETSC_COMM_WORLD,&x);
23: VecSetSizes(x,PETSC_DECIDE,n*bs);
24: VecSetBlockSize(x,bs);
25: VecSetFromOptions(x);
27: for (i=0; i<n*bs; i++) {
28: val = i*1.0;
29: VecSetValues(x,1,&i,&val,INSERT_VALUES);
30: }
31: VecAssemblyBegin(x);
32: VecAssemblyEnd(x);
34: VecView(x,PETSC_VIEWER_STDOUT_WORLD);
36: /* Now do the blocksetvalues */
37: VecSet(x,zero);
38: PetscMalloc(bs*sizeof(PetscScalar),&vals);
39: for (i=0; i<n; i++) {
40: for (j=0; j<bs; j++) {
41: vals[j] = (i*bs+j)*1.0;
42: }
43: VecSetValuesBlocked(x,1,&i,vals,INSERT_VALUES);
44: }
46: VecAssemblyBegin(x);
47: VecAssemblyEnd(x);
49: VecView(x,PETSC_VIEWER_STDOUT_WORLD);
51: VecDestroy(x);
52: PetscFree(vals);
53: PetscFinalize();
54: return 0;
55: }
56: