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