14bb2516aSBarry Smith! 24bb2516aSBarry Smith! Example of using PetscOptionsBegin in Fortran 3ce78bad3SBarry Smith#include "petsc/finclude/petscsys.h" 4c5e229c2SMartin Diehlprogram ex9f 5ce78bad3SBarry Smith use petscsys 64bb2516aSBarry Smith implicit none 74bb2516aSBarry Smith 8*02c639afSMartin Diehl PetscReal, parameter :: PReal = 1.0 9*02c639afSMartin Diehl integer, parameter :: Pr = Selected_Real_Kind(precision(PReal)) 10*02c639afSMartin Diehl PetscInt, parameter :: PInt = 1 11*02c639afSMartin Diehl integer, parameter :: Pi = kind(PInt) 124bb2516aSBarry Smith 134bb2516aSBarry Smith PetscErrorCode :: ierr 144bb2516aSBarry Smith PetscBool :: flg 154bb2516aSBarry Smith PetscInt :: nopt = 3_Pi 164bb2516aSBarry Smith PetscBool :: bvalue, bdefault = PETSC_TRUE 174bb2516aSBarry Smith PetscBool, dimension(:), pointer :: barray 184bb2516aSBarry Smith PetscEnum :: evalue, edefault = 2 194bb2516aSBarry Smith PetscInt :: ivalue, idefault = 2_Pi 204bb2516aSBarry Smith PetscInt, dimension(:), pointer :: iarray 214bb2516aSBarry Smith PetscReal :: rvalue, rdefault = 1.23_Pr 224bb2516aSBarry Smith PetscReal, dimension(:), pointer :: rarray 234bb2516aSBarry Smith PetscScalar :: svalue, sdefault = -4.56_Pr 244bb2516aSBarry Smith PetscScalar, dimension(:), pointer :: sarray 254bb2516aSBarry Smith character(len=256) :: IOBuffer 264bb2516aSBarry Smith character(len=256) :: stvalue, stdefault 274bb2516aSBarry Smith character(len=256) :: list(6) 284bb2516aSBarry Smith 294bb2516aSBarry Smith PetscCallA(PetscInitialize(ierr)) 304bb2516aSBarry Smith list(1) = 'a123 ' 314bb2516aSBarry Smith list(2) = 'b456 ' 324bb2516aSBarry Smith list(3) = 'c789 ' 334bb2516aSBarry Smith list(4) = 'list ' 344bb2516aSBarry Smith list(5) = 'prefix_' 354bb2516aSBarry Smith list(6) = '' 364bb2516aSBarry Smith stdefault = 'oulala oulala' 374bb2516aSBarry Smith 38*02c639afSMartin Diehl allocate (iarray(nopt), source=-1_Pi) 39*02c639afSMartin Diehl allocate (rarray(nopt), source=-99.0_pr) 40*02c639afSMartin Diehl allocate (barray(nopt), source=PETSC_FALSE) 41*02c639afSMartin Diehl allocate (sarray(nopt)) 424bb2516aSBarry Smith sarray = 123.456_Pr 434bb2516aSBarry Smith 444bb2516aSBarry Smith PetscCallA(PetscOptionsBegin(PETSC_COMM_WORLD, 'prefix_', 'Setting options for my application', 'Section 1', ierr)) 454bb2516aSBarry Smith PetscCallA(PetscOptionsBool('-bool', 'Get an application bool', 'Man page', bdefault, bvalue, flg, ierr)) 464bb2516aSBarry Smith if (flg) then 474bb2516aSBarry Smith write (IOBuffer, '("The bool value was set to ",L1,"\n")') bvalue 484bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, IOBuffer, ierr)) 494bb2516aSBarry Smith end if 504bb2516aSBarry Smith PetscCallA(PetscOptionsBoolArray('-boolarray', 'Get an application bool array', 'Man page', barray, nopt, flg, ierr)) 514bb2516aSBarry Smith if (flg) then 524bb2516aSBarry Smith write (IOBuffer, '("The bool array was set to ",*(L1," "))') barray 534bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, trim(IOBuffer)//"\n", ierr)) 544bb2516aSBarry Smith end if 554bb2516aSBarry Smith PetscCallA(PetscOptionsEnum('-enum', 'Get an application enum', 'Man page', list, edefault, evalue, flg, ierr)) 564bb2516aSBarry Smith if (flg) then 574bb2516aSBarry Smith write (IOBuffer, '("The bool value was set to ",A,"\n")') trim(list(evalue + 1)) 584bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, IOBuffer, ierr)) 594bb2516aSBarry Smith end if 604bb2516aSBarry Smith PetscCallA(PetscOptionsInt('-int', 'Get an application int', 'Man page', idefault, ivalue, flg, ierr)) 614bb2516aSBarry Smith if (flg) then 624bb2516aSBarry Smith write (IOBuffer, '("The integer value was set to ",I8,"\n")') ivalue 634bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, IOBuffer, ierr)) 644bb2516aSBarry Smith end if 654bb2516aSBarry Smith PetscCallA(PetscOptionsIntArray('-intarray', 'Get an application int array', 'Man page', iarray, nopt, flg, ierr)) 664bb2516aSBarry Smith if (flg) then 674bb2516aSBarry Smith write (IOBuffer, '("The integer array was set to ",*(I8," "))') iarray 684bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, trim(IOBuffer)//"\n", ierr)) 694bb2516aSBarry Smith end if 704bb2516aSBarry Smith PetscCallA(PetscOptionsReal('-real', 'Get an application real', 'Man page', rdefault, rvalue, flg, ierr)) 714bb2516aSBarry Smith if (flg) then 724bb2516aSBarry Smith write (IOBuffer, '("The real value was set to ",ES12.5,"\n")') rvalue 734bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, IOBuffer, ierr)) 744bb2516aSBarry Smith end if 754bb2516aSBarry Smith PetscCallA(PetscOptionsRealArray('-realarray', 'Get an application real array', 'Man page', rarray, nopt, flg, ierr)) 764bb2516aSBarry Smith if (flg) then 774bb2516aSBarry Smith write (IOBuffer, '("The real array was set to ",*(ES12.5," "))') rarray 784bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, trim(IOBuffer)//"\n", ierr)) 794bb2516aSBarry Smith end if 804bb2516aSBarry Smith PetscCallA(PetscOptionsScalar('-scalar', 'Get an application scalar', 'Man page', sdefault, svalue, flg, ierr)) 814bb2516aSBarry Smith if (flg) then 824bb2516aSBarry Smith write (IOBuffer, '("The scalar value was set to ",ES12.5,"\n")') svalue 834bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, IOBuffer, ierr)) 844bb2516aSBarry Smith end if 854bb2516aSBarry Smith PetscCallA(PetscOptionsScalarArray('-scalararray', 'Get an application scalar array', 'Man page', sarray, nopt, flg, ierr)) 864bb2516aSBarry Smith if (flg) then 874bb2516aSBarry Smith write (IOBuffer, '("The scalar array was set to ",*(ES12.5," "))') sarray 884bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, trim(IOBuffer)//"\n", ierr)) 894bb2516aSBarry Smith end if 904bb2516aSBarry Smith PetscCallA(PetscOptionsString('-string', 'Get an application string', 'Man page', stdefault, stvalue, flg, ierr)) 914bb2516aSBarry Smith if (flg) then 924bb2516aSBarry Smith write (IOBuffer, '("The string value was set to ",A,"\n")') trim(stvalue) 934bb2516aSBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, IOBuffer, ierr)) 944bb2516aSBarry Smith end if 954bb2516aSBarry Smith PetscCallA(PetscOptionsEnd(ierr)) 964bb2516aSBarry Smith 974bb2516aSBarry Smith deallocate (iarray) 984bb2516aSBarry Smith deallocate (rarray) 994bb2516aSBarry Smith deallocate (barray) 1004bb2516aSBarry Smith deallocate (sarray) 1014bb2516aSBarry Smith PetscCallA(PetscFinalize(ierr)) 1024bb2516aSBarry Smithend program ex9f 1034bb2516aSBarry Smith 1044bb2516aSBarry Smith! 1054bb2516aSBarry Smith!/*TEST 1064bb2516aSBarry Smith! 1074bb2516aSBarry Smith! build: 108ccfb0f9fSMartin Diehl! requires: !complex 1094bb2516aSBarry Smith! 1104bb2516aSBarry Smith! test: 1113886731fSPierre Jolivet! output_file: output/empty.out 1124bb2516aSBarry Smith! 1134bb2516aSBarry Smith! test: 1144bb2516aSBarry Smith! suffix: 2 1154bb2516aSBarry Smith! 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 1164bb2516aSBarry Smith! 1174bb2516aSBarry Smith!TEST*/ 118