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;
19: PetscInitialize(&argc, &argv, NULL, help);
20: PetscProcessTree(n, mask, parentId, &Nlevels, &Level, &Levelcnt, &Idbylevel, &Column);
21: for (i = 0; i < n; i++) {
22: if (!mask[i]) PetscPrintf(PETSC_COMM_WORLD, " %" PetscInt_FMT " ", Level[i]);
23: }
24: PetscPrintf(PETSC_COMM_WORLD, "\nNumber of levels %" PetscInt_FMT "\n", Nlevels);
25: for (i = 0; i < Nlevels; i++) {
26: PetscPrintf(PETSC_COMM_WORLD, "\nLevel %" PetscInt_FMT " ", i);
27: for (j = 0; j < Levelcnt[i]; j++) PetscPrintf(PETSC_COMM_WORLD, "%" PetscInt_FMT " ", Idbylevel[cnt++]);
28: }
29: PetscPrintf(PETSC_COMM_WORLD, "\nColumn of each node");
30: for (i = 0; i < n; i++) {
31: if (!mask[i]) PetscPrintf(PETSC_COMM_WORLD, " %" PetscInt_FMT " ", Column[i]);
32: }
33: PetscPrintf(PETSC_COMM_WORLD, "\n");
34: PetscFree(Level);
35: PetscFree(Levelcnt);
36: PetscFree(Idbylevel);
37: PetscFree(Column);
38: PetscFinalize();
39: return 0;
40: }
42: /*TEST
44: test:
46: TEST*/