Actual source code: ex29.c
1: static char help[] = "Tests PetscHeapCreate()\n\n";
3: #include <petscsys.h>
4: #include <petscviewer.h>
6: int main(int argc,char **args)
7: {
8: PetscHeap h;
9: PetscInt id,val,cnt,*values;
11: PetscInitialize(&argc,&args,(char*)0,help);
12: PetscHeapCreate(9,&h);
13: PetscHeapAdd(h,0,100);
14: PetscHeapAdd(h,1,19);
15: PetscHeapAdd(h,2,36);
16: PetscHeapAdd(h,3,17);
17: PetscHeapAdd(h,4,3);
18: PetscHeapAdd(h,5,25);
19: PetscHeapAdd(h,6,1);
20: PetscHeapAdd(h,8,2);
21: PetscHeapAdd(h,9,7);
22: PetscPrintf(PETSC_COMM_SELF,"Initial heap:\n");
23: PetscHeapView(h,NULL);
25: PetscHeapPop(h,&id,&val);
26: PetscHeapStash(h,id,val+10);
27: PetscHeapPop(h,&id,&val);
28: PetscHeapStash(h,id,val+10);
29: PetscPrintf(PETSC_COMM_SELF,"Pop two items, increment, and place in stash:\n");
30: PetscHeapView(h,NULL);
32: PetscHeapUnstash(h);
33: PetscPrintf(PETSC_COMM_SELF,"After unpacking the stash:\n");
34: PetscHeapView(h,NULL);
36: PetscMalloc1(9,&values);
37: PetscHeapPop(h,&id,&val);
38: cnt = 0;
39: while (id >= 0) {
40: values[cnt++] = val;
41: PetscHeapPop(h,&id,&val);
42: }
43: PetscPrintf(PETSC_COMM_SELF,"Sorted values:\n");
44: PetscIntView(cnt,values,PETSC_VIEWER_STDOUT_SELF);
45: PetscFree(values);
46: PetscHeapDestroy(&h);
47: PetscFinalize();
48: return 0;
49: }
51: /*TEST
53: test:
55: TEST*/