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