Actual source code: ex9f.F90
1: !
2: ! Example of using PetscOptionsBegin in Fortran
3: program ex9f
4: #include "petsc/finclude/petsc.h"
5: use petsc
6: implicit none
8: PetscReal,Parameter :: PReal = 1.0
9: Integer,Parameter :: Pr = Selected_Real_Kind(Precision(PReal))
10: PetscInt,Parameter :: PInt = 1
11: Integer,Parameter :: Pi = kind(PInt)
13: PetscErrorCode :: ierr
14: PetscBool :: flg
15: PetscInt :: nopt = 3_Pi
16: PetscBool :: bvalue, bdefault = PETSC_TRUE
17: PetscBool,dimension(:),pointer :: barray
18: PetscEnum :: evalue, edefault = 2
19: PetscInt :: ivalue, idefault = 2_Pi
20: PetscInt,dimension(:),pointer :: iarray
21: PetscReal :: rvalue, rdefault = 1.23_Pr
22: PetscReal,dimension(:),pointer :: rarray
23: PetscScalar :: svalue, sdefault = -4.56_Pr
24: PetscScalar,dimension(:),pointer :: sarray
25: character(len=256) :: IOBuffer
26: character(len=256) :: stvalue,stdefault
27: character(len=256) :: list(6)
29: PetscCallA(PetscInitialize(ierr))
30: list(1) = 'a123 '
31: list(2) = 'b456 '
32: list(3) = 'c789 '
33: list(4) = 'list '
34: list(5) = 'prefix_'
35: list(6) = ''
36: stdefault = 'oulala oulala'
38: Allocate(iarray(nopt),source=-1_Pi)
39: Allocate(rarray(nopt),source=-99.0_pr)
40: Allocate(barray(nopt),source=PETSC_FALSE)
41: Allocate(sarray(nopt))
42: sarray = 123.456_Pr
44: PetscCallA(PetscOptionsBegin(PETSC_COMM_WORLD,'prefix_','Setting options for my application','Section 1',ierr))
45: PetscCallA(PetscOptionsBool('-bool','Get an application bool','Man page',bdefault,bvalue,flg,ierr))
46: if (flg) then
47: write(IOBuffer,'("The bool value was set to ",L1,"\n")') bvalue
48: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,IOBuffer,ierr))
49: endif
50: PetscCallA(PetscOptionsBoolArray('-boolarray','Get an application bool array','Man page',barray,nopt,flg,ierr))
51: if (flg) then
52: write(IOBuffer,'("The bool array was set to ",*(L1," "))') barray
53: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,trim(IOBuffer)//"\n",ierr))
54: endif
55: PetscCallA(PetscOptionsEnum('-enum','Get an application enum','Man page',list,edefault,evalue,flg,ierr))
56: if (flg) then
57: write(IOBuffer,'("The bool value was set to ",A,"\n")') trim(list(evalue+1))
58: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,IOBuffer,ierr))
59: endif
60: PetscCallA(PetscOptionsInt('-int','Get an application int','Man page',idefault,ivalue,flg,ierr))
61: if (flg) then
62: write(IOBuffer,'("The integer value was set to ",I8,"\n")') ivalue
63: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,IOBuffer,ierr))
64: endif
65: PetscCallA(PetscOptionsIntArray('-intarray','Get an application int array','Man page',iarray,nopt,flg,ierr))
66: if (flg) then
67: write(IOBuffer, '("The integer array was set to ",*(I8," "))') iarray
68: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,trim(IOBuffer)//"\n",ierr))
69: endif
70: PetscCallA(PetscOptionsReal('-real','Get an application real','Man page',rdefault,rvalue,flg,ierr))
71: if (flg) then
72: write(IOBuffer,'("The real value was set to ",ES12.5,"\n")') rvalue
73: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,IOBuffer,ierr))
74: endif
75: PetscCallA(PetscOptionsRealArray('-realarray','Get an application real array','Man page',rarray,nopt,flg,ierr))
76: if (flg) then
77: write(IOBuffer,'("The real array was set to ",*(ES12.5," "))') rarray
78: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,trim(IOBuffer)//"\n",ierr))
79: endif
80: PetscCallA(PetscOptionsScalar('-scalar','Get an application scalar','Man page',sdefault,svalue,flg,ierr))
81: if (flg) then
82: write(IOBuffer,'("The scalar value was set to ",ES12.5,"\n")') svalue
83: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,IOBuffer,ierr))
84: endif
85: PetscCallA(PetscOptionsScalarArray('-scalararray','Get an application scalar array','Man page',sarray,nopt,flg,ierr))
86: if (flg) then
87: write(IOBuffer,'("The scalar array was set to ",*(ES12.5," "))') sarray
88: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,trim(IOBuffer)//"\n",ierr))
89: endif
90: PetscCallA(PetscOptionsString('-string','Get an application string','Man page',stdefault,stvalue,flg,ierr))
91: if (flg) then
92: write(IOBuffer,'("The string value was set to ",A,"\n")') trim(stvalue)
93: PetscCallA(PetscPrintf(PETSC_COMM_WORLD,IOBuffer,ierr))
94: endif
95: PetscCallA(PetscOptionsEnd(ierr))
97: deallocate(iarray)
98: deallocate(rarray)
99: deallocate(barray)
100: deallocate(sarray)
101: PetscCallA(PetscFinalize(ierr))
102: end program ex9f
104: !
105: !/*TEST
106: !
107: ! build:
108: ! requires: defined(PETSC_USING_F2003) defined(PETSC_USING_F90FREEFORM) !complex
109: !
110: ! test:
111: !
112: ! test:
113: ! suffix: 2
114: ! args: -prefix_int 22 -prefix_intarray 2-5 -prefix_real 2.34 -prefix_realarray -3,-4,5.5 -prefix_scalar 7.89 -prefix_scalararray 1.,2.,3. -prefix_bool no -prefix_boolarray 1,no,true -prefix_string This_is_a_test_of_the_emergency_alert_system
115: !
116: !TEST*/