1c4762a1bSJed Brown static char help[] = "Tests PetscHeapCreate()\n\n";
2c4762a1bSJed Brown
3c4762a1bSJed Brown #include <petscsys.h>
4c4762a1bSJed Brown #include <petscviewer.h>
5c4762a1bSJed Brown
main(int argc,char ** args)6d71ae5a4SJacob Faibussowitsch int main(int argc, char **args)
7d71ae5a4SJacob Faibussowitsch {
8c4762a1bSJed Brown PetscHeap h;
9c4762a1bSJed Brown PetscInt id, val, cnt, *values;
10c4762a1bSJed Brown
11327415f7SBarry Smith PetscFunctionBeginUser;
12*c8025a54SPierre Jolivet PetscCall(PetscInitialize(&argc, &args, NULL, 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