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