Actual source code: ex2.c
2: static char help[] = "Tests application ordering.\n\n";
4: #include petsc.h
5: #include petscao.h
9: int main(int argc,char **argv)
10: {
12: PetscMPIInt rank,size;
13: PetscInt n,*ispetsc,*isapp,start,N,i;
14: AO ao;
16: PetscInitialize(&argc,&argv,(char*)0,help);
17: PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);
18: MPI_Comm_rank(PETSC_COMM_WORLD,&rank); n = rank + 2;
19: MPI_Comm_size(PETSC_COMM_WORLD,&size);
21: /* create the orderings */
22: PetscMalloc(2*n*sizeof(PetscInt),&ispetsc);
23: isapp = ispetsc + n;
25: MPI_Scan(&n,&start,1,MPI_INT,MPI_SUM,PETSC_COMM_WORLD);
26: MPI_Allreduce(&n,&N,1,MPI_INT,MPI_SUM,PETSC_COMM_WORLD);
27: start -= n;
29: for (i=0; i<n; i++) {
30: ispetsc[i] = start + i;
31: isapp[i] = N - start - i - 1;
32: }
34: /* create the application ordering */
35: AOCreateBasic(PETSC_COMM_WORLD,n,isapp,ispetsc,&ao);
37: AOView(ao,PETSC_VIEWER_STDOUT_WORLD);
39: /* check the mapping */
40: AOPetscToApplication(ao,n,ispetsc);
41: for (i=0; i<n; i++) {
42: if (ispetsc[i] != isapp[i]) {
43: fprintf(stdout,"[%d] Problem with mapping %d to %d\n",rank,(int)i,(int)ispetsc[i]);
44: }
45: }
47: PetscFree(ispetsc);
49: AODestroy(ao);
50: PetscFinalize();
51: return 0;
52: }
53: