Actual source code: ex13f.F

  1: !
  2: !
  3: !     Tests PetscSetCommWorld()
  4: !
 5:  #include finclude/petsc.h

  7:       PetscErrorCode  ierr
  8:       PetscMPIInt rank,size,color
  9:       MPI_Comm  newcomm

 11:       call MPI_Init(ierr)
 12:       call MPI_Comm_rank(MPI_COMM_WORLD,rank,ierr)
 13:       call MPI_Comm_size(MPI_COMM_WORLD,size,ierr)

 15: !
 16: !       make two new communicators each half the size of original
 17: !
 18:       if (2*rank .lt. size) then
 19:         color = 0
 20:       else
 21:         color = 1
 22:       endif
 23:       call MPI_Comm_split(MPI_COMM_WORLD,color,0,newcomm,ierr)

 25:       call PetscSetCommWorld(newcomm,ierr)

 27:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
 28:       call MPI_Comm_rank(PETSC_COMM_WORLD,rank,ierr)
 29:       write(6,100) rank
 30:   100 format('rank = ',i3)

 32:       call PetscFinalize(ierr)
 33:       call MPI_Finalize(ierr)
 34:       end