xref: /petsc/src/mat/tests/ex29.c (revision 327415f76d85372a4417cf1aaa14db707d4d6c04)
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*327415f7SBarry Smith   PetscFunctionBeginUser;
129566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc,&args,(char*)0,help));
139566063dSJacob Faibussowitsch   PetscCall(PetscHeapCreate(9,&h));
149566063dSJacob Faibussowitsch   PetscCall(PetscHeapAdd(h,0,100));
159566063dSJacob Faibussowitsch   PetscCall(PetscHeapAdd(h,1,19));
169566063dSJacob Faibussowitsch   PetscCall(PetscHeapAdd(h,2,36));
179566063dSJacob Faibussowitsch   PetscCall(PetscHeapAdd(h,3,17));
189566063dSJacob Faibussowitsch   PetscCall(PetscHeapAdd(h,4,3));
199566063dSJacob Faibussowitsch   PetscCall(PetscHeapAdd(h,5,25));
209566063dSJacob Faibussowitsch   PetscCall(PetscHeapAdd(h,6,1));
219566063dSJacob Faibussowitsch   PetscCall(PetscHeapAdd(h,8,2));
229566063dSJacob Faibussowitsch   PetscCall(PetscHeapAdd(h,9,7));
239566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_SELF,"Initial heap:\n"));
249566063dSJacob Faibussowitsch   PetscCall(PetscHeapView(h,NULL));
25c4762a1bSJed Brown 
269566063dSJacob Faibussowitsch   PetscCall(PetscHeapPop(h,&id,&val));
279566063dSJacob Faibussowitsch   PetscCall(PetscHeapStash(h,id,val+10));
289566063dSJacob Faibussowitsch   PetscCall(PetscHeapPop(h,&id,&val));
299566063dSJacob Faibussowitsch   PetscCall(PetscHeapStash(h,id,val+10));
309566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_SELF,"Pop two items, increment, and place in stash:\n"));
319566063dSJacob Faibussowitsch   PetscCall(PetscHeapView(h,NULL));
32c4762a1bSJed Brown 
339566063dSJacob Faibussowitsch   PetscCall(PetscHeapUnstash(h));
349566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_SELF,"After unpacking the stash:\n"));
359566063dSJacob Faibussowitsch   PetscCall(PetscHeapView(h,NULL));
36c4762a1bSJed Brown 
379566063dSJacob Faibussowitsch   PetscCall(PetscMalloc1(9,&values));
389566063dSJacob Faibussowitsch   PetscCall(PetscHeapPop(h,&id,&val));
39c4762a1bSJed Brown   cnt  = 0;
40c4762a1bSJed Brown   while (id >= 0) {
41c4762a1bSJed Brown     values[cnt++] = val;
429566063dSJacob Faibussowitsch     PetscCall(PetscHeapPop(h,&id,&val));
43c4762a1bSJed Brown   }
449566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_SELF,"Sorted values:\n"));
459566063dSJacob Faibussowitsch   PetscCall(PetscIntView(cnt,values,PETSC_VIEWER_STDOUT_SELF));
469566063dSJacob Faibussowitsch   PetscCall(PetscFree(values));
479566063dSJacob Faibussowitsch   PetscCall(PetscHeapDestroy(&h));
489566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
49b122ec5aSJacob Faibussowitsch   return 0;
50c4762a1bSJed Brown }
51c4762a1bSJed Brown 
52c4762a1bSJed Brown /*TEST
53c4762a1bSJed Brown 
54c4762a1bSJed Brown    test:
55c4762a1bSJed Brown 
56c4762a1bSJed Brown TEST*/
57