Actual source code: ex3.c
petsc-3.8.4 2018-03-24
2: static char help[] = "Plots a simple line graph.\n";
4: #if defined(PETSC_APPLE_FRAMEWORK)
5: #import <PETSc/petscsys.h>
6: #import <PETSc/petscdraw.h>
7: #else
8: #include <petscsys.h>
9: #include <petscdraw.h>
10: #endif
12: int main(int argc,char **argv)
13: {
14: PetscDraw draw;
15: PetscDrawLG lg;
16: PetscDrawAxis axis;
17: PetscInt n = 15,i,x = 0,y = 0,width = 400,height = 300,nports = 1;
18: PetscBool useports,flg;
19: const char *xlabel,*ylabel,*toplabel,*legend;
20: PetscReal xd,yd;
21: PetscDrawViewPorts *ports = NULL;
22: PetscErrorCode ierr;
24: toplabel = "Top Label"; xlabel = "X-axis Label"; ylabel = "Y-axis Label"; legend = "Legend";
26: PetscInitialize(&argc,&argv,NULL,help);
27: PetscOptionsGetInt(NULL,NULL,"-x",&x,NULL);
28: PetscOptionsGetInt(NULL,NULL,"-y",&y,NULL);
29: PetscOptionsGetInt(NULL,NULL,"-width",&width,NULL);
30: PetscOptionsGetInt(NULL,NULL,"-height",&height,NULL);
31: PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL);
32: PetscOptionsGetInt(NULL,NULL,"-nports",&nports,&useports);
33: PetscOptionsHasName(NULL,NULL,"-nolegend",&flg);
34: if (flg) legend = NULL;
35: PetscOptionsHasName(NULL,NULL,"-notoplabel",&flg);
36: if (flg) toplabel = NULL;
37: PetscOptionsHasName(NULL,NULL,"-noxlabel",&flg);
38: if (flg) xlabel = NULL;
39: PetscOptionsHasName(NULL,NULL,"-noylabel",&flg);
40: if (flg) ylabel = NULL;
41: PetscOptionsHasName(NULL,NULL,"-nolabels",&flg);
42: if (flg) {toplabel = NULL; xlabel = NULL; ylabel = NULL;}
44: PetscDrawCreate(PETSC_COMM_WORLD,0,"Title",x,y,width,height,&draw);
45: PetscDrawSetFromOptions(draw);
46: if (useports) {
47: PetscDrawViewPortsCreate(draw,nports,&ports);
48: PetscDrawViewPortsSet(ports,0);
49: }
50: PetscDrawLGCreate(draw,1,&lg);
51: PetscDrawLGSetUseMarkers(lg,PETSC_TRUE);
52: PetscDrawLGGetAxis(lg,&axis);
53: PetscDrawAxisSetColors(axis,PETSC_DRAW_BLACK,PETSC_DRAW_RED,PETSC_DRAW_BLUE);
54: PetscDrawAxisSetLabels(axis,toplabel,xlabel,ylabel);
55: PetscDrawLGSetLegend(lg,&legend);
56: PetscDrawLGSetFromOptions(lg);
58: for (i=0; i<=n; i++) {
59: xd = (PetscReal)(i - 5); yd = xd*xd;
60: PetscDrawLGAddPoint(lg,&xd,&yd);
61: }
62: PetscDrawLGDraw(lg);
63: PetscDrawLGSave(lg);
65: PetscDrawViewPortsDestroy(ports);
66: PetscDrawLGDestroy(&lg);
67: PetscDrawDestroy(&draw);
68: PetscFinalize();
69: return ierr;
70: }