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