Actual source code: ex5f.F90

  1: !
  2: !
  3: #include <petsc/finclude/petscsys.h>
  4: #include <petsc/finclude/petscdraw.h>
  5: program main
  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, parameter :: x = 0, y = 0
 19:   integer4 width, height
 20:   PetscReal xd, yd
 21:   PetscInt i, n, w, h

 23:   PetscCallA(PetscInitialize(ierr))

 25: !  GetInt requires a PetscInt so have to do this ugly setting
 26:   w = 400
 27:   PetscCallA(PetscOptionsGetInt(PETSC_NULL_OPTIONS, PETSC_NULL_CHARACTER, '-width', w, flg, ierr))
 28:   width = int(w, kind=kind(width))
 29:   h = 300
 30:   PetscCallA(PetscOptionsGetInt(PETSC_NULL_OPTIONS, PETSC_NULL_CHARACTER, '-height', h, flg, ierr))
 31:   height = int(h, kind=kind(height))
 32:   n = 15
 33:   PetscCallA(PetscOptionsGetInt(PETSC_NULL_OPTIONS, PETSC_NULL_CHARACTER, '-n', n, flg, ierr))

 35:   PetscCallA(PetscDrawCreate(PETSC_COMM_WORLD, PETSC_NULL_CHARACTER, PETSC_NULL_CHARACTER, x, y, width, height, draw, ierr))
 36:   PetscCallA(PetscDrawSetFromOptions(draw, ierr))

 38:   PetscCallA(PetscDrawLGCreate(draw, 1_PETSC_INT_KIND, lg, ierr))
 39:   PetscCallA(PetscDrawLGGetAxis(lg, axis, ierr))
 40:   PetscCallA(PetscDrawAxisSetColors(axis, PETSC_DRAW_BLACK, PETSC_DRAW_RED, PETSC_DRAW_BLUE, ierr))
 41:   PetscCallA(PetscDrawAxisSetLabels(axis, 'toplabel', 'xlabel', 'ylabel', ierr))

 43:   do i = 0, n - 1
 44:     xd = real(i) - 5.0
 45:     yd = xd**2
 46:     PetscCallA(PetscDrawLGAddPoint(lg, xd, yd, ierr))
 47:   end do

 49:   PetscCallA(PetscDrawLGSetUseMarkers(lg, PETSC_TRUE, ierr))
 50:   PetscCallA(PetscDrawLGDraw(lg, ierr))

 52:   PetscCallA(PetscSleep(10._PETSC_REAL_KIND, ierr))

 54:   PetscCallA(PetscDrawLGDestroy(lg, ierr))
 55:   PetscCallA(PetscDrawDestroy(draw, ierr))
 56:   PetscCallA(PetscFinalize(ierr))
 57: end

 59: !/*TEST
 60: !
 61: !   build:
 62: !     requires: x
 63: !
 64: !   test:
 65: !     output_file: output/empty.out
 66: !
 67: !TEST*/