1c4762a1bSJed Brown 2c4762a1bSJed Brown static char help[] = "Plots a simple line graph.\n"; 3c4762a1bSJed Brown 4c4762a1bSJed Brown #if defined(PETSC_APPLE_FRAMEWORK) 5c4762a1bSJed Brown #import <PETSc/petscsys.h> 6c4762a1bSJed Brown #import <PETSc/petscdraw.h> 7c4762a1bSJed Brown #else 8c4762a1bSJed Brown 9c4762a1bSJed Brown #include <petscsys.h> 10c4762a1bSJed Brown #include <petscdraw.h> 11c4762a1bSJed Brown #endif 12c4762a1bSJed Brown 13*9371c9d4SSatish Balay int main(int argc, char **argv) { 14c4762a1bSJed Brown PetscDraw draw; 15c4762a1bSJed Brown PetscDrawLG lg; 16c4762a1bSJed Brown PetscDrawAxis axis; 17c4762a1bSJed Brown PetscInt n = 15, i, x = 0, y = 0, width = 400, height = 300, nports = 1; 18c4762a1bSJed Brown PetscBool useports, flg; 19c4762a1bSJed Brown const char *xlabel, *ylabel, *toplabel, *legend; 20c4762a1bSJed Brown PetscReal xd, yd; 21c4762a1bSJed Brown PetscDrawViewPorts *ports = NULL; 22c4762a1bSJed Brown 23*9371c9d4SSatish Balay toplabel = "Top Label"; 24*9371c9d4SSatish Balay xlabel = "X-axis Label"; 25*9371c9d4SSatish Balay ylabel = "Y-axis Label"; 26*9371c9d4SSatish Balay legend = "Legend"; 27c4762a1bSJed Brown 28327415f7SBarry Smith PetscFunctionBeginUser; 299566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 309566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetInt(NULL, NULL, "-x", &x, NULL)); 319566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetInt(NULL, NULL, "-y", &y, NULL)); 329566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetInt(NULL, NULL, "-width", &width, NULL)); 339566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetInt(NULL, NULL, "-height", &height, NULL)); 349566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetInt(NULL, NULL, "-n", &n, NULL)); 359566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetInt(NULL, NULL, "-nports", &nports, &useports)); 369566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-nolegend", &flg)); 37c4762a1bSJed Brown if (flg) legend = NULL; 389566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-notoplabel", &flg)); 39c4762a1bSJed Brown if (flg) toplabel = NULL; 409566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-noxlabel", &flg)); 41c4762a1bSJed Brown if (flg) xlabel = NULL; 429566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-noylabel", &flg)); 43c4762a1bSJed Brown if (flg) ylabel = NULL; 449566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-nolabels", &flg)); 45*9371c9d4SSatish Balay if (flg) { 46*9371c9d4SSatish Balay toplabel = NULL; 47*9371c9d4SSatish Balay xlabel = NULL; 48*9371c9d4SSatish Balay ylabel = NULL; 49*9371c9d4SSatish Balay } 50c4762a1bSJed Brown 519566063dSJacob Faibussowitsch PetscCall(PetscDrawCreate(PETSC_COMM_WORLD, 0, "Title", x, y, width, height, &draw)); 529566063dSJacob Faibussowitsch PetscCall(PetscDrawSetFromOptions(draw)); 53c4762a1bSJed Brown if (useports) { 549566063dSJacob Faibussowitsch PetscCall(PetscDrawViewPortsCreate(draw, nports, &ports)); 559566063dSJacob Faibussowitsch PetscCall(PetscDrawViewPortsSet(ports, 0)); 56c4762a1bSJed Brown } 579566063dSJacob Faibussowitsch PetscCall(PetscDrawLGCreate(draw, 1, &lg)); 589566063dSJacob Faibussowitsch PetscCall(PetscDrawLGSetUseMarkers(lg, PETSC_TRUE)); 599566063dSJacob Faibussowitsch PetscCall(PetscDrawLGGetAxis(lg, &axis)); 609566063dSJacob Faibussowitsch PetscCall(PetscDrawAxisSetColors(axis, PETSC_DRAW_BLACK, PETSC_DRAW_RED, PETSC_DRAW_BLUE)); 619566063dSJacob Faibussowitsch PetscCall(PetscDrawAxisSetLabels(axis, toplabel, xlabel, ylabel)); 629566063dSJacob Faibussowitsch PetscCall(PetscDrawLGSetLegend(lg, &legend)); 639566063dSJacob Faibussowitsch PetscCall(PetscDrawLGSetFromOptions(lg)); 64c4762a1bSJed Brown 65c4762a1bSJed Brown for (i = 0; i <= n; i++) { 66*9371c9d4SSatish Balay xd = (PetscReal)(i - 5); 67*9371c9d4SSatish Balay yd = xd * xd; 689566063dSJacob Faibussowitsch PetscCall(PetscDrawLGAddPoint(lg, &xd, &yd)); 69c4762a1bSJed Brown } 709566063dSJacob Faibussowitsch PetscCall(PetscDrawLGDraw(lg)); 719566063dSJacob Faibussowitsch PetscCall(PetscDrawLGSave(lg)); 72c4762a1bSJed Brown 739566063dSJacob Faibussowitsch PetscCall(PetscDrawViewPortsDestroy(ports)); 749566063dSJacob Faibussowitsch PetscCall(PetscDrawLGDestroy(&lg)); 759566063dSJacob Faibussowitsch PetscCall(PetscDrawDestroy(&draw)); 769566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 77b122ec5aSJacob Faibussowitsch return 0; 78c4762a1bSJed Brown } 79c4762a1bSJed Brown 80c4762a1bSJed Brown /*TEST 81c4762a1bSJed Brown 82c4762a1bSJed Brown build: 83c4762a1bSJed Brown requires: x 84c4762a1bSJed Brown 85c4762a1bSJed Brown test: 86c4762a1bSJed Brown output_file: output/ex1_1.out 87c4762a1bSJed Brown 88c4762a1bSJed Brown TEST*/ 89