1c4762a1bSJed Brown! Synchronized printing: Fortran Example 2c4762a1bSJed Brown 3c4762a1bSJed Brown 4c4762a1bSJed Brownprogram main 5c4762a1bSJed Brown#include <petsc/finclude/petscsys.h> 6*8c8af28eSPedro Ricardo C. Souza use petscmpi ! or mpi or mpi_f08 7c4762a1bSJed Brown use petscsys 8c4762a1bSJed Brown 9c4762a1bSJed Brown implicit none 10c4762a1bSJed Brown PetscErrorCode :: ierr 11c4762a1bSJed Brown PetscMPIInt :: myRank,mySize 1262ac926dSPierre Jolivet character(len=PETSC_MAX_PATH_LEN) :: outputString 13c4762a1bSJed Brown 14c4762a1bSJed Brown ! Every PETSc program should begin with the PetscInitialize() routine. 15c4762a1bSJed Brown 16c4762a1bSJed Brown call PetscInitialize(PETSC_NULL_CHARACTER,ierr) 17c4762a1bSJed Brown if (ierr /= 0) then 18c4762a1bSJed Brown write(6,*) 'Unable to initialize PETSc' 19c4762a1bSJed Brown stop 20c4762a1bSJed Brown endif 21c4762a1bSJed Brown 22c4762a1bSJed Brown ! The following MPI calls return the number of processes 23c4762a1bSJed Brown ! being used and the rank of this process in the group 24c4762a1bSJed Brown 25c4762a1bSJed Brown call MPI_Comm_size(MPI_COMM_WORLD,mySize,ierr) 26c4762a1bSJed Brown CHKERRA(ierr) 27c4762a1bSJed Brown call MPI_Comm_rank(MPI_COMM_WORLD,myRank,ierr) 28c4762a1bSJed Brown CHKERRA(ierr) 29c4762a1bSJed Brown 30c4762a1bSJed Brown ! Here we would like to print only one message that represents 31c4762a1bSJed Brown ! all the processes in the group 32c4762a1bSJed Brown write(outputString,*) 'No of Processors = ', mysize, ', rank = ',myRank,'\n' 33c4762a1bSJed Brown call PetscPrintf(PETSC_COMM_WORLD,outputString,ierr) 34c4762a1bSJed Brown CHKERRA(ierr) 35c4762a1bSJed Brown 36c4762a1bSJed Brown write(outputString,*) myRank,'Synchronized Hello World\n' 37c4762a1bSJed Brown call PetscSynchronizedPrintf(PETSC_COMM_WORLD,outputString,ierr) 38c4762a1bSJed Brown CHKERRA(ierr) 39c4762a1bSJed Brown write(outputString,*) myRank,'Synchronized Hello World - Part II\n' 40c4762a1bSJed Brown call PetscSynchronizedPrintf(PETSC_COMM_WORLD,outputString,ierr) 41c4762a1bSJed Brown CHKERRA(ierr) 42c4762a1bSJed Brown call PetscSynchronizedFlush(PETSC_COMM_WORLD,PETSC_STDOUT,ierr) 43c4762a1bSJed Brown CHKERRA(ierr) 44c4762a1bSJed Brown 45c4762a1bSJed Brown ! Here a barrier is used to separate the two program states. 46c4762a1bSJed Brown call MPI_Barrier(PETSC_COMM_WORLD,ierr) 47c4762a1bSJed Brown CHKERRA(ierr) 48c4762a1bSJed Brown 49c4762a1bSJed Brown write(outputString,*) myRank,'Jumbled Hello World\n' 50c4762a1bSJed Brown call PetscPrintf(PETSC_COMM_SELF,outputString,ierr) 51c4762a1bSJed Brown CHKERRA(ierr) 52c4762a1bSJed Brown 53c4762a1bSJed Brown call PetscFinalize(ierr) 54c4762a1bSJed Brown CHKERRA(ierr) 55c4762a1bSJed Brown 56c4762a1bSJed Brownend program main 57c4762a1bSJed Brown 58c4762a1bSJed Brown!/*TEST 59c4762a1bSJed Brown! 60c4762a1bSJed Brown! test: 61c4762a1bSJed Brown! 62c4762a1bSJed Brown!TEST*/ 63