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