Actual source code: ex5f.F

petsc-3.8.4 2018-03-24
Report Typos and Errors
  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