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