Actual source code: ex5f.F
petsc-3.7.1 2016-05-15
1: !
2: !
3: program main
4: #include <petsc/finclude/petscsys.h>
5: #include <petsc/finclude/petscdraw.h>
6: !
7: ! This example demonstrates basic use of the Fortran interface for
8: ! PetscDraw routines.
9: !
10: PetscDraw draw
11: PetscDrawLG lg
12: PetscDrawAxis axis
13: PetscErrorCode ierr
14: PetscBool flg
15: integer x,y,width,height
16: PetscScalar xd,yd
17: PetscInt i,n,w,h
19: n = 15
20: x = 0
21: y = 0
22: w = 400
23: h = 300
25: call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
27: ! GetInt requires a PetscInt so have to do this ugly setting
28: call PetscOptionsGetInt(PETSC_NULL_OBJECT,PETSC_NULL_CHARACTER, &
29: & '-width',w, flg,ierr)
30: width = int(w)
31: call PetscOptionsGetInt(PETSC_NULL_OBJECT,PETSC_NULL_CHARACTER, &
32: & '-height',h,flg,ierr)
33: height = int(h)
34: call PetscOptionsGetInt(PETSC_NULL_OBJECT,PETSC_NULL_CHARACTER, &
35: & '-n',n,flg,ierr)
37: call PetscDrawCreate(PETSC_COMM_WORLD,PETSC_NULL_CHARACTER, &
38: & PETSC_NULL_CHARACTER,x,y,width,height,draw,ierr)
39: call PetscDrawSetFromOptions(draw,ierr)
41: call PetscDrawLGCreate(draw,1,lg,ierr)
42: call PetscDrawLGGetAxis(lg,axis,ierr)
43: call PetscDrawAxisSetColors(axis,PETSC_DRAW_BLACK,PETSC_DRAW_RED, &
44: & PETSC_DRAW_BLUE,ierr)
45: call PetscDrawAxisSetLabels(axis,'toplabel','xlabel','ylabel', &
46: & ierr)
48: do 10, i=0,n-1
49: xd = i - 5.0
50: yd = xd*xd
51: call PetscDrawLGAddPoint(lg,xd,yd,ierr)
52: 10 continue
54: call PetscDrawLGSetUseMarkers(lg,PETSC_TRUE,ierr)
55: call PetscDrawLGDraw(lg,ierr)
57: call PetscSleep(10,ierr)
59: call PetscDrawLGDestroy(lg,ierr)
60: call PetscDrawDestroy(draw,ierr)
61: call PetscFinalize(ierr)
62: end