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