1! Introductory example that illustrates printing: Fortran Example 2 3 4 5program main 6#include <petsc/finclude/petscsys.h> 7 use petscsys 8 9 implicit none 10 PetscErrorCode :: ierr 11 PetscMPIInt :: myRank,mySize 12 character(len=80) :: outputString 13 14 ! Every PETSc routine should begin with the PetscInitialize() routine. 15 16 call PetscInitialize(PETSC_NULL_CHARACTER,ierr) 17 if (ierr/= 0) then 18 write(6,*) 'Unable to initialize PETSc' 19 stop 20 endif 21 22 23 ! We can now change the communicator universe for PETSc 24 25 call MPI_Comm_size(MPI_COMM_WORLD,mySize,ierr); CHKERRA(ierr) 26 call MPI_Comm_rank(MPI_COMM_WORLD,myRank,ierr); CHKERRA(ierr) 27 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. 32 33 write(outputString,*) 'No of Processors = ', mySize, ', rank = ',myRank,'\n' 34 call PetscPrintf(PETSC_COMM_WORLD,outputString,ierr); CHKERRA(ierr) 35 36 ! Here a barrier is used to separate the two program states. 37 38 call MPI_Barrier(PETSC_COMM_WORLD,ierr); CHKERRA(ierr) 39 40 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. 45 46 write(outputString,*) myRank,'Jumbled Hello World\n' 47 call PetscPrintf(PETSC_COMM_SELF,outputString,ierr); CHKERRA(ierr) 48 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. 54 55 call PetscFinalize(ierr) 56 57end program main 58!/*TEST 59! 60! test: 61! 62!TEST*/ 63