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*/