Actual source code: ex5f.F
petsc-3.8.3 2017-12-09
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
22: n = 15
23: x = 0
24: y = 0
25: w = 400
26: h = 300
27: ten = 10.0
29: call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
30: if (ierr .ne. 0) then
31: print*,'Unable to initialize PETSc'
32: stop
33: endif
35: ! GetInt requires a PetscInt so have to do this ugly setting
36: call PetscOptionsGetInt(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER, &
37: & '-width',w, flg,ierr)
38: width = int(w)
39: call PetscOptionsGetInt(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER, &
40: & '-height',h,flg,ierr)
41: height = int(h)
42: call PetscOptionsGetInt(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER, &
43: & '-n',n,flg,ierr)
45: call PetscDrawCreate(PETSC_COMM_WORLD,PETSC_NULL_CHARACTER, &
46: & PETSC_NULL_CHARACTER,x,y,width,height,draw,ierr)
47: call PetscDrawSetFromOptions(draw,ierr)
49: call PetscDrawLGCreate(draw,1,lg,ierr)
50: call PetscDrawLGGetAxis(lg,axis,ierr)
51: call PetscDrawAxisSetColors(axis,PETSC_DRAW_BLACK,PETSC_DRAW_RED, &
52: & PETSC_DRAW_BLUE,ierr)
53: call PetscDrawAxisSetLabels(axis,'toplabel','xlabel','ylabel', &
54: & ierr)
56: do 10, i=0,n-1
57: xd = real(i) - 5.0
58: yd = xd*xd
59: call PetscDrawLGAddPoint(lg,xd,yd,ierr)
60: 10 continue
62: call PetscDrawLGSetUseMarkers(lg,PETSC_TRUE,ierr)
63: call PetscDrawLGDraw(lg,ierr)
65: call PetscSleep(ten,ierr)
67: call PetscDrawLGDestroy(lg,ierr)
68: call PetscDrawDestroy(draw,ierr)
69: call PetscFinalize(ierr)
70: end