Actual source code: ex5f.F

petsc-3.12.1 2019-10-22
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
 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*/