Actual source code: ex5f.F
petsc-3.12.2 2019-11-22
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
23: n = 15
24: x = 0
25: y = 0
26: w = 400
27: h = 300
28: ten = 10.0
29: one = 1
31: call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
32: if (ierr .ne. 0) then
33: print*,'Unable to initialize PETSc'
34: stop
35: endif
37: ! GetInt requires a PetscInt so have to do this ugly setting
38: call PetscOptionsGetInt(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER, &
39: & '-width',w, flg,ierr)
40: width = int(w)
41: call PetscOptionsGetInt(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER, &
42: & '-height',h,flg,ierr)
43: height = int(h)
44: call PetscOptionsGetInt(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER, &
45: & '-n',n,flg,ierr)
47: call PetscDrawCreate(PETSC_COMM_WORLD,PETSC_NULL_CHARACTER, &
48: & PETSC_NULL_CHARACTER,x,y,width,height,draw,ierr)
49: call PetscDrawSetFromOptions(draw,ierr)
51: call PetscDrawLGCreate(draw,one,lg,ierr)
52: call PetscDrawLGGetAxis(lg,axis,ierr)
53: call PetscDrawAxisSetColors(axis,PETSC_DRAW_BLACK,PETSC_DRAW_RED, &
54: & PETSC_DRAW_BLUE,ierr)
55: call PetscDrawAxisSetLabels(axis,'toplabel','xlabel','ylabel', &
56: & ierr)
58: do 10, i=0,n-1
59: xd = real(i) - 5.0
60: yd = xd*xd
61: call PetscDrawLGAddPoint(lg,xd,yd,ierr)
62: 10 continue
64: call PetscDrawLGSetUseMarkers(lg,PETSC_TRUE,ierr)
65: call PetscDrawLGDraw(lg,ierr)
67: call PetscSleep(ten,ierr)
69: call PetscDrawLGDestroy(lg,ierr)
70: call PetscDrawDestroy(draw,ierr)
71: call PetscFinalize(ierr)
72: end
74: !/*TEST
75: !
76: ! build:
77: ! requires: x
78: !
79: ! test:
80: ! output_file: output/ex1_1.out
81: !
82: !TEST*/