Actual source code: ex21.c
2: static char help[] = "Tests PetscTreeProcess()";
4: #include <petscsys.h>
6: /*
7: 2 6
8: 1 4
9: 5
10: */
11: int main(int argc,char **argv)
12: {
13: PetscInt n = 7,cnt = 0,i,j;
14: PetscBool mask[] = {PETSC_TRUE,PETSC_FALSE,PETSC_FALSE,PETSC_TRUE,PETSC_FALSE,PETSC_FALSE,PETSC_FALSE};
15: PetscInt parentId[] = {-1, 2, 0, -1, 2, 1, 0};
16: PetscInt Nlevels,*Level,*Levelcnt,*Idbylevel,*Column;
18: PetscInitialize(&argc,&argv,NULL,help);
19: PetscProcessTree(n,mask,parentId,&Nlevels,&Level,&Levelcnt,&Idbylevel,&Column);
20: for (i=0; i<n; i++) {
21: if (!mask[i]) {
22: PetscPrintf(PETSC_COMM_WORLD," %" PetscInt_FMT " ",Level[i]);
23: }
24: }
25: PetscPrintf(PETSC_COMM_WORLD,"\nNumber of levels %" PetscInt_FMT "\n",Nlevels);
26: for (i=0; i<Nlevels; i++) {
27: PetscPrintf(PETSC_COMM_WORLD,"\nLevel %" PetscInt_FMT " ",i);
28: for (j=0; j<Levelcnt[i]; j++) {
29: PetscPrintf(PETSC_COMM_WORLD,"%" PetscInt_FMT " ",Idbylevel[cnt++]);
30: }
31: }
32: PetscPrintf(PETSC_COMM_WORLD,"\nColumn of each node");
33: for (i=0; i<n; i++) {
34: if (!mask[i]) {
35: PetscPrintf(PETSC_COMM_WORLD," %" PetscInt_FMT " ",Column[i]);
36: }
37: }
38: PetscPrintf(PETSC_COMM_WORLD,"\n");
39: PetscFree(Level);
40: PetscFree(Levelcnt);
41: PetscFree(Idbylevel);
42: PetscFree(Column);
43: PetscFinalize();
44: return 0;
45: }
47: /*TEST
49: test:
51: TEST*/