xref: /petsc/src/sys/classes/draw/tests/ex5f.F90 (revision a69119a591a03a9d906b29c0a4e9802e4d7c9795)
1!
2!
3      program main
4#include <petsc/finclude/petscsys.h>
5#include <petsc/finclude/petscdraw.h>
6      use petscsys
7      implicit none
8!
9!  This example demonstrates basic use of the Fortran interface for
10!  PetscDraw routines.
11!
12      PetscDraw         draw
13      PetscDrawLG       lg
14      PetscDrawAxis     axis
15      PetscErrorCode    ierr
16      PetscBool         flg
17      integer           x,y,width,height
18      PetscScalar       xd,yd
19      PetscReal         ten
20      PetscInt          i,n,w,h
21      PetscInt          one
22
23      n      = 15
24      x      = 0
25      y      = 0
26      w      = 400
27      h      = 300
28      ten    = 10.0
29      one    = 1
30
31      PetscCallA(PetscInitialize(ierr))
32
33!  GetInt requires a PetscInt so have to do this ugly setting
34      PetscCallA(PetscOptionsGetInt(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER,'-width',w, flg,ierr))
35      width = int(w)
36      PetscCallA(PetscOptionsGetInt(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER,'-height',h,flg,ierr))
37      height = int(h)
38      PetscCallA(PetscOptionsGetInt(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER,'-n',n,flg,ierr))
39
40      PetscCallA(PetscDrawCreate(PETSC_COMM_WORLD,PETSC_NULL_CHARACTER,PETSC_NULL_CHARACTER,x,y,width,height,draw,ierr))
41      PetscCallA(PetscDrawSetFromOptions(draw,ierr))
42
43      PetscCallA(PetscDrawLGCreate(draw,one,lg,ierr))
44      PetscCallA(PetscDrawLGGetAxis(lg,axis,ierr))
45      PetscCallA(PetscDrawAxisSetColors(axis,PETSC_DRAW_BLACK,PETSC_DRAW_RED,PETSC_DRAW_BLUE,ierr))
46      PetscCallA(PetscDrawAxisSetLabels(axis,'toplabel','xlabel','ylabel',ierr))
47
48      do 10, i=0,n-1
49        xd = real(i) - 5.0
50        yd = xd*xd
51        PetscCallA(PetscDrawLGAddPoint(lg,xd,yd,ierr))
52 10   continue
53
54      PetscCallA(PetscDrawLGSetUseMarkers(lg,PETSC_TRUE,ierr))
55      PetscCallA(PetscDrawLGDraw(lg,ierr))
56
57      PetscCallA(PetscSleep(ten,ierr))
58
59      PetscCallA(PetscDrawLGDestroy(lg,ierr))
60      PetscCallA(PetscDrawDestroy(draw,ierr))
61      PetscCallA(PetscFinalize(ierr))
62      end
63
64!/*TEST
65!
66!   build:
67!     requires: x
68!
69!   test:
70!     output_file: output/ex1_1.out
71!
72!TEST*/
73