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