Actual source code: ex16f.F90
petsc-3.15.0 2021-03-30
Report Typos and Errors

      1: ! Tests calling PetscOptionsSetValue() before PetscInitialize(): Fortran Example

      3: program main
      4: #include <petsc/finclude/petscsys.h>
      5:       use petscmpi  ! or mpi or mpi_f08
      6:       use petscsys

      8:       implicit none
      9:       PetscErrorCode :: ierr
     10:       PetscMPIInt  ::  myRank,mySize
     11:       character(len=80) :: outputString

     13:       ! Every PETSc routine should begin with the PetscInitialize() routine.

     15:       call PetscOptionsSetValue(PETSC_NULL_OPTIONS,"-no_signal_handler","true",ierr)
     16:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
     17:       if (ierr/=0) then
     18:         write(6,*) 'Unable to initialize PETSc'
     19:         stop
     20:       endif

     22:       ! Since when PetscInitialize() returns with an error the PETSc data structures
     23:       ! may not be set up hence we cannot call CHKERRA() hence directly return the error code.

     25:       ! Since PetscOptionsSetValue() is called before the PetscInitialize() we cannot call
     26:       ! CHKERRA() on the error code and just return it directly.

     28:       ! We can now change the communicator universe for PETSc

     30:       call MPI_Comm_size(MPI_COMM_WORLD,mySize,ierr); CHKERRA(ierr)
     31:       call MPI_Comm_rank(MPI_COMM_WORLD,myRank,ierr); CHKERRA(ierr)
     32:       write(outputString,*) 'Number of processors =',mySize,'rank =',myRank,'\n'
     33:       call PetscPrintf(PETSC_COMM_WORLD,outputString,ierr); CHKERRA(ierr)
     34:       call PetscFinalize(ierr)

     36: end program main

     38: !/*TEST
     39: !
     40: !   test:
     41: !      requires: define(PETSC_USE_LOG)
     42: !      nsize: 2
     43: !      args: -options_view -get_total_flops
     44: !      filter: egrep -v "(malloc|display|nox|Total flops|saws_port_auto_select|vecscatter_mpi1|options_left|error_output_stdout|check_pointer_intensity|cuda_initialize|use_gpu_aware_mpi)"
     45: !
     46: !TEST*/