1c4762a1bSJed Brown! Synchronized printing: Fortran Example 2c4762a1bSJed Brown#include <petsc/finclude/petscsys.h> 3*c5e229c2SMartin Diehlprogram main 4c4762a1bSJed Brown use petscsys 5c4762a1bSJed Brown 6c4762a1bSJed Brown implicit none 7c4762a1bSJed Brown PetscErrorCode :: ierr 8f8402805SBarry Smith PetscMPIInt :: rank, size 962ac926dSPierre Jolivet character(len=PETSC_MAX_PATH_LEN) :: outputString 10c4762a1bSJed Brown 11c4762a1bSJed Brown ! Every PETSc program should begin with the PetscInitialize() routine. 12c4762a1bSJed Brown 13d8606c27SBarry Smith PetscCallA(PetscInitialize(ierr)) 14c4762a1bSJed Brown 15c4762a1bSJed Brown ! The following MPI calls return the number of processes 16c4762a1bSJed Brown ! being used and the rank of this process in the group 17c4762a1bSJed Brown 18f8402805SBarry Smith PetscCallMPIA(MPI_Comm_size(MPI_COMM_WORLD, size, ierr)) 19f8402805SBarry Smith PetscCallMPIA(MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)) 20c4762a1bSJed Brown 21c4762a1bSJed Brown ! Here we would like to print only one message that represents 22c4762a1bSJed Brown ! all the processes in the group 23f8402805SBarry Smith write (outputString, *) 'No of Processors = ', size, ', rank = ', rank, '\n' 24f8402805SBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD, outputString, ierr)) 25c4762a1bSJed Brown 26f8402805SBarry Smith write (outputString, *) rank, 'Synchronized Hello World\n' 27f8402805SBarry Smith PetscCallA(PetscSynchronizedPrintf(PETSC_COMM_WORLD, outputString, ierr)) 28f8402805SBarry Smith 29f8402805SBarry Smith write (outputString, *) rank, 'Synchronized Hello World - Part II\n' 30f8402805SBarry Smith PetscCallA(PetscSynchronizedPrintf(PETSC_COMM_WORLD, outputString, ierr)) 31f8402805SBarry Smith PetscCallA(PetscSynchronizedFlush(PETSC_COMM_WORLD, PETSC_STDOUT, ierr)) 32f8402805SBarry Smith 33c4762a1bSJed Brown ! Here a barrier is used to separate the two program states. 34f8402805SBarry Smith PetscCallMPIA(MPI_Barrier(PETSC_COMM_WORLD, ierr)) 35c4762a1bSJed Brown 36f8402805SBarry Smith write (outputString, *) rank, 'Jumbled Hello World\n' 37f8402805SBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_SELF, outputString, ierr)) 38c4762a1bSJed Brown 39f8402805SBarry Smith PetscCallA(PetscFinalize(ierr)) 40c4762a1bSJed Brownend program main 41c4762a1bSJed Brown 42c4762a1bSJed Brown!/*TEST 43c4762a1bSJed Brown! 44c4762a1bSJed Brown! test: 45c4762a1bSJed Brown! 46c4762a1bSJed Brown!TEST*/ 47