Actual source code: ex6.c
1: /*
2: Formatted test for ISGeneral routines.
3: */
5: static char help[] = "Tests ISComplement.\n\n";
7: #include <petscis.h>
11: int main(int argc,char **argv)
12: {
13: PetscMPIInt rank,size;
14: PetscInt i,j,n,cnt=0,rstart,rend,*indices;
15: IS is,isc;
18: PetscInitialize(&argc,&argv,(char*)0,help);
19: MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
20: MPI_Comm_size(PETSC_COMM_WORLD,&size);
22: n = 3*size; /* Number of local indices, same on each process. */
23: rstart = 3*(size+2)*rank; /* start of local range */
24: rend = 3*(size+2)*(rank+1); /* end of local range */
25: PetscMalloc(n*sizeof(PetscInt),&indices);
26: for (i=0; i<3; i++) {
27: for (j=0; j<size; j++) indices[cnt++] = rstart+i*(size+2)+j;
28: }
29: if (cnt != n) SETERRQ(PETSC_COMM_SELF,1,"inconsistent count");
30: ISCreateGeneral(PETSC_COMM_WORLD,n,indices,PETSC_COPY_VALUES,&is);
31: PetscFree(indices);
32: ISComplement(is,rstart,rend,&isc);
33: ISView(is,PETSC_VIEWER_STDOUT_WORLD);
34: ISView(isc,PETSC_VIEWER_STDOUT_WORLD);
36: ISDestroy(&is);
37: ISDestroy(&isc);
38: PetscFinalize();
39: return 0;
40: }