xref: /petsc/src/sys/tutorials/ex16f.F90 (revision f84028053d197aff3fdf060e86d88b3f1b0f0110)
1c4762a1bSJed Brown! Tests calling PetscOptionsSetValue() before PetscInitialize(): Fortran Example
2c4762a1bSJed Brown
3c4762a1bSJed Brownprogram main
4c4762a1bSJed Brown#include <petsc/finclude/petscsys.h>
58c8af28eSPedro Ricardo C. Souza      use petscmpi  ! or mpi or mpi_f08
6c4762a1bSJed Brown      use petscsys
7c4762a1bSJed Brown
8c4762a1bSJed Brown      implicit none
9c4762a1bSJed Brown      PetscErrorCode :: ierr
10*f8402805SBarry Smith      PetscMPIInt  ::  rank,size
11c4762a1bSJed Brown      character(len=80) :: outputString
12c4762a1bSJed Brown
13c4762a1bSJed Brown      ! Every PETSc routine should begin with the PetscInitialize() routine.
14c4762a1bSJed Brown
15*f8402805SBarry Smith      PetscCallA(PetscOptionsSetValue(PETSC_NULL_OPTIONS,"-no_signal_handler","true",ierr))
16*f8402805SBarry Smith      PetscCallA(PetscInitialize(ierr))
17c4762a1bSJed Brown
18c4762a1bSJed Brown      ! Since when PetscInitialize() returns with an error the PETSc data structures
19c4762a1bSJed Brown      ! may not be set up hence we cannot call CHKERRA() hence directly return the error code.
20c4762a1bSJed Brown
21c4762a1bSJed Brown      ! Since PetscOptionsSetValue() is called before the PetscInitialize() we cannot call
22c4762a1bSJed Brown      ! CHKERRA() on the error code and just return it directly.
23c4762a1bSJed Brown
24c4762a1bSJed Brown      ! We can now change the communicator universe for PETSc
25c4762a1bSJed Brown
26*f8402805SBarry Smith      PetscCallMPIA(MPI_Comm_size(MPI_COMM_WORLD,size,ierr))
27*f8402805SBarry Smith      PetscCallMPIA(MPI_Comm_rank(MPI_COMM_WORLD,rank,ierr))
28*f8402805SBarry Smith      write(outputString,*) 'Number of processors =',size,'rank =',rank,'\n'
29*f8402805SBarry Smith      PetscCallA(PetscPrintf(PETSC_COMM_WORLD,outputString,ierr))
30*f8402805SBarry Smith      PetscCallA(PetscFinalize(ierr))
31c4762a1bSJed Brownend program main
32c4762a1bSJed Brown
33c4762a1bSJed Brown!/*TEST
34c4762a1bSJed Brown!
35c4762a1bSJed Brown!   test:
36dfd57a17SPierre Jolivet!      requires: defined(PETSC_USE_LOG)
37c4762a1bSJed Brown!      nsize: 2
38c4762a1bSJed Brown!      args: -options_view -get_total_flops
39362febeeSStefano Zampini!      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|checkstack)"
40c4762a1bSJed Brown!
41c4762a1bSJed Brown!TEST*/
42