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