The main documentation of the Initialize_Communication Procedure contains additional explanation of this code listing.
subroutine Initialize_Communication (Communication)
! Input/Output variable.
! Place holder to allow generic procedure calls -- real data associated
! with the communication is stored in global class variables for easy
! access.
type(Communication_type), intent(inout) :: Communication
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Verify requirements - none.
! Initialize parallel/serial processor information.
ifdef([USE_PGSLIB],[
! PGSLib Parallel Initialization.
call PGSLib_Initialize (1)
NPEs = PGSLib_Inquire_nPE()
this_PE = PGSLib_Inquire_thisPE_Actual()
IO_PE = PGSLib_Inquire_IO_ROOT_PE()
this_is_IO_PE = PGSLib_Inquire_IO_P()
Scope = PGSLib_Global
Parallel = .true.
Parallel_Library = 'PGSLib'
],[
! Serial initialization.
NPEs = 1
this_PE = 1
IO_PE = 1
this_is_IO_PE = .true.
Parallel = .false.
Parallel_Library = 'None'
])
Serial = .not.Parallel
if (this_is_IO_PE) then
delta_PE_IO_PE = 1
else
delta_PE_IO_PE = 0
end if
this_is_not_IO_PE = .not. this_is_IO_PE
! Verify guarantees.
VERIFY(Valid_State(Communication),5) ! Communication is now valid.
return
end subroutine Initialize_Communication