1*c4762a1bSJed Brown! Tests calling PetscOptionsSetValue() before PetscInitialize(): Fortran Example 2*c4762a1bSJed Brown 3*c4762a1bSJed Brownprogram main 4*c4762a1bSJed Brown#include <petsc/finclude/petscsys.h> 5*c4762a1bSJed Brown use petscsys 6*c4762a1bSJed Brown 7*c4762a1bSJed Brown implicit none 8*c4762a1bSJed Brown PetscErrorCode :: ierr 9*c4762a1bSJed Brown PetscMPIInt :: myRank,mySize 10*c4762a1bSJed Brown character(len=80) :: outputString 11*c4762a1bSJed Brown 12*c4762a1bSJed Brown ! Every PETSc routine should begin with the PetscInitialize() routine. 13*c4762a1bSJed Brown 14*c4762a1bSJed Brown call PetscOptionsSetValue(PETSC_NULL_OPTIONS,"-no_signal_handler","true",ierr) 15*c4762a1bSJed Brown call PetscInitialize(PETSC_NULL_CHARACTER,ierr) 16*c4762a1bSJed Brown if (ierr/=0) then 17*c4762a1bSJed Brown write(6,*) 'Unable to initialize PETSc' 18*c4762a1bSJed Brown stop 19*c4762a1bSJed Brown endif 20*c4762a1bSJed Brown 21*c4762a1bSJed Brown ! Since when PetscInitialize() returns with an error the PETSc data structures 22*c4762a1bSJed Brown ! may not be set up hence we cannot call CHKERRA() hence directly return the error code. 23*c4762a1bSJed Brown 24*c4762a1bSJed Brown ! Since PetscOptionsSetValue() is called before the PetscInitialize() we cannot call 25*c4762a1bSJed Brown ! CHKERRA() on the error code and just return it directly. 26*c4762a1bSJed Brown 27*c4762a1bSJed Brown ! We can now change the communicator universe for PETSc 28*c4762a1bSJed Brown 29*c4762a1bSJed Brown call MPI_Comm_size(MPI_COMM_WORLD,mySize,ierr); CHKERRA(ierr) 30*c4762a1bSJed Brown call MPI_Comm_rank(MPI_COMM_WORLD,myRank,ierr); CHKERRA(ierr) 31*c4762a1bSJed Brown write(outputString,*) 'Number of processors =',mySize,'rank =',myRank,'\n' 32*c4762a1bSJed Brown call PetscPrintf(PETSC_COMM_WORLD,outputString,ierr); CHKERRA(ierr) 33*c4762a1bSJed Brown call PetscFinalize(ierr) 34*c4762a1bSJed Brown 35*c4762a1bSJed Brownend program main 36*c4762a1bSJed Brown 37*c4762a1bSJed Brown!/*TEST 38*c4762a1bSJed Brown! 39*c4762a1bSJed Brown! test: 40*c4762a1bSJed Brown! nsize: 2 41*c4762a1bSJed Brown! args: -options_view -get_total_flops 42*c4762a1bSJed Brown! filter: egrep -v "(malloc|display|nox|Total flops|saws_port_auto_select|vecscatter_mpi1|options_left|error_output_stdout|check_pointer_intensity|cuda_initialize)" 43*c4762a1bSJed Brown! 44*c4762a1bSJed Brown!TEST*/ 45