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