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*/