xref: /petsc/src/sys/tutorials/ex16f.F90 (revision c4762a1b19cd2af06abeed90e8f9d34fb975dd94)
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