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
main(int argc,char ** argv)12d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv)
13d71ae5a4SJacob Faibussowitsch {
14c4762a1bSJed Brown PetscDraw draw;
15c4762a1bSJed Brown PetscDrawLG lg;
16c4762a1bSJed Brown PetscDrawAxis axis;
176497c311SBarry Smith PetscInt n = 15, i, nports = 1;
186497c311SBarry 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));
316497c311SBarry Smith PetscCall(PetscOptionsGetMPIInt(NULL, NULL, "-x", &x, NULL));
326497c311SBarry Smith PetscCall(PetscOptionsGetMPIInt(NULL, NULL, "-y", &y, NULL));
336497c311SBarry Smith PetscCall(PetscOptionsGetMPIInt(NULL, NULL, "-width", &width, NULL));
346497c311SBarry 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:
87*3886731fSPierre Jolivet output_file: output/empty.out
88c4762a1bSJed Brown
89c4762a1bSJed Brown TEST*/
90