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