1c4762a1bSJed Brown static char help[] = "Plots a simple line graph.\n"; 2c4762a1bSJed Brown 3c4762a1bSJed Brown #if defined(PETSC_APPLE_FRAMEWORK) 4c4762a1bSJed Brown #import <PETSc/petscsys.h> 5c4762a1bSJed Brown #import <PETSc/petscdraw.h> 6c4762a1bSJed Brown #else 7c4762a1bSJed Brown 8c4762a1bSJed Brown #include <petscsys.h> 9c4762a1bSJed Brown #include <petscdraw.h> 10c4762a1bSJed Brown #endif 11c4762a1bSJed Brown 12d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv) 13d71ae5a4SJacob Faibussowitsch { 14c4762a1bSJed Brown PetscDraw draw; 15c4762a1bSJed Brown PetscDrawLG lg; 16c4762a1bSJed Brown PetscDrawAxis axis; 17*6497c311SBarry Smith PetscInt n = 15, i, nports = 1; 18*6497c311SBarry Smith int x = 0, y = 0, width = 400, height = 300; 19c4762a1bSJed Brown PetscBool useports, flg; 20c4762a1bSJed Brown const char *xlabel, *ylabel, *toplabel, *legend; 21c4762a1bSJed Brown PetscReal xd, yd; 22c4762a1bSJed Brown PetscDrawViewPorts *ports = NULL; 23c4762a1bSJed Brown 249371c9d4SSatish Balay toplabel = "Top Label"; 259371c9d4SSatish Balay xlabel = "X-axis Label"; 269371c9d4SSatish Balay ylabel = "Y-axis Label"; 279371c9d4SSatish Balay legend = "Legend"; 28c4762a1bSJed Brown 29327415f7SBarry Smith PetscFunctionBeginUser; 309566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 31*6497c311SBarry Smith PetscCall(PetscOptionsGetMPIInt(NULL, NULL, "-x", &x, NULL)); 32*6497c311SBarry Smith PetscCall(PetscOptionsGetMPIInt(NULL, NULL, "-y", &y, NULL)); 33*6497c311SBarry Smith PetscCall(PetscOptionsGetMPIInt(NULL, NULL, "-width", &width, NULL)); 34*6497c311SBarry Smith PetscCall(PetscOptionsGetMPIInt(NULL, NULL, "-height", &height, NULL)); 359566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetInt(NULL, NULL, "-n", &n, NULL)); 369566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetInt(NULL, NULL, "-nports", &nports, &useports)); 379566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-nolegend", &flg)); 38c4762a1bSJed Brown if (flg) legend = NULL; 399566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-notoplabel", &flg)); 40c4762a1bSJed Brown if (flg) toplabel = NULL; 419566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-noxlabel", &flg)); 42c4762a1bSJed Brown if (flg) xlabel = NULL; 439566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-noylabel", &flg)); 44c4762a1bSJed Brown if (flg) ylabel = NULL; 459566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL, NULL, "-nolabels", &flg)); 469371c9d4SSatish Balay if (flg) { 479371c9d4SSatish Balay toplabel = NULL; 489371c9d4SSatish Balay xlabel = NULL; 499371c9d4SSatish Balay ylabel = NULL; 509371c9d4SSatish Balay } 51c4762a1bSJed Brown 529566063dSJacob Faibussowitsch PetscCall(PetscDrawCreate(PETSC_COMM_WORLD, 0, "Title", x, y, width, height, &draw)); 539566063dSJacob Faibussowitsch PetscCall(PetscDrawSetFromOptions(draw)); 54c4762a1bSJed Brown if (useports) { 559566063dSJacob Faibussowitsch PetscCall(PetscDrawViewPortsCreate(draw, nports, &ports)); 569566063dSJacob Faibussowitsch PetscCall(PetscDrawViewPortsSet(ports, 0)); 57c4762a1bSJed Brown } 589566063dSJacob Faibussowitsch PetscCall(PetscDrawLGCreate(draw, 1, &lg)); 599566063dSJacob Faibussowitsch PetscCall(PetscDrawLGSetUseMarkers(lg, PETSC_TRUE)); 609566063dSJacob Faibussowitsch PetscCall(PetscDrawLGGetAxis(lg, &axis)); 619566063dSJacob Faibussowitsch PetscCall(PetscDrawAxisSetColors(axis, PETSC_DRAW_BLACK, PETSC_DRAW_RED, PETSC_DRAW_BLUE)); 629566063dSJacob Faibussowitsch PetscCall(PetscDrawAxisSetLabels(axis, toplabel, xlabel, ylabel)); 639566063dSJacob Faibussowitsch PetscCall(PetscDrawLGSetLegend(lg, &legend)); 649566063dSJacob Faibussowitsch PetscCall(PetscDrawLGSetFromOptions(lg)); 65c4762a1bSJed Brown 66c4762a1bSJed Brown for (i = 0; i <= n; i++) { 679371c9d4SSatish Balay xd = (PetscReal)(i - 5); 689371c9d4SSatish Balay yd = xd * xd; 699566063dSJacob Faibussowitsch PetscCall(PetscDrawLGAddPoint(lg, &xd, &yd)); 70c4762a1bSJed Brown } 719566063dSJacob Faibussowitsch PetscCall(PetscDrawLGDraw(lg)); 729566063dSJacob Faibussowitsch PetscCall(PetscDrawLGSave(lg)); 73c4762a1bSJed Brown 749566063dSJacob Faibussowitsch PetscCall(PetscDrawViewPortsDestroy(ports)); 759566063dSJacob Faibussowitsch PetscCall(PetscDrawLGDestroy(&lg)); 769566063dSJacob Faibussowitsch PetscCall(PetscDrawDestroy(&draw)); 779566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 78b122ec5aSJacob Faibussowitsch return 0; 79c4762a1bSJed Brown } 80c4762a1bSJed Brown 81c4762a1bSJed Brown /*TEST 82c4762a1bSJed Brown 83c4762a1bSJed Brown build: 84c4762a1bSJed Brown requires: x 85c4762a1bSJed Brown 86c4762a1bSJed Brown test: 87c4762a1bSJed Brown output_file: output/ex1_1.out 88c4762a1bSJed Brown 89c4762a1bSJed Brown TEST*/ 90