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