1c4762a1bSJed Brown static char help[] = "Tests PetscHeapCreate()\n\n"; 2c4762a1bSJed Brown 3c4762a1bSJed Brown #include <petscsys.h> 4c4762a1bSJed Brown #include <petscviewer.h> 5c4762a1bSJed Brown 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