Actual source code: ex1f.F90

petsc-3.14.6 2021-03-30
Report Typos and Errors
  1: ! Introductory example that illustrates printing: Fortran Example



  5: program main
  6: #include <petsc/finclude/petscsys.h>
  7:       use petscsys

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

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

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


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

 25:       call MPI_Comm_size(MPI_COMM_WORLD,mySize,ierr); CHKERRA(ierr)
 26:       call MPI_Comm_rank(MPI_COMM_WORLD,myRank,ierr); CHKERRA(ierr)

 28:       ! Here we would like to print only one message that represents all the processes in the group
 29:       ! We use PetscPrintf() with the
 30:       ! communicator PETSC_COMM_WORLD.  Thus, only one message is
 31:       ! printed representng PETSC_COMM_WORLD, i.e., all the processors.

 33:       write(outputString,*) 'No of Processors = ', mySize, ', rank = ',myRank,'\n'
 34:       call PetscPrintf(PETSC_COMM_WORLD,outputString,ierr); CHKERRA(ierr)

 36:       ! Here a barrier is used to separate the two program states.

 38:       call MPI_Barrier(PETSC_COMM_WORLD,ierr); CHKERRA(ierr)


 41:       ! Here we simply use PetscPrintf() with the communicator PETSC_COMM_SELF,
 42:       ! where each process is considered separately and prints independently
 43:       ! to the screen.  Thus, the output from different processes does not
 44:       ! appear in any particular order.

 46:       write(outputString,*) myRank,'Jumbled Hello World\n'
 47:       call PetscPrintf(PETSC_COMM_SELF,outputString,ierr); CHKERRA(ierr)

 49:       ! Always call PetscFinalize() before exiting a program.  This routine
 50:       ! - finalizes the PETSc libraries as well as MPI
 51:       ! - provides summary and diagnostic information if certain runtime
 52:       !   options are chosen (e.g., -log_view).  See PetscFinalize()
 53:       !  manpage for more information.

 55:       call PetscFinalize(ierr)

 57: end program main
 58: !/*TEST
 59: !
 60: !   test:
 61: !
 62: !TEST*/