D.2.1 Initialize_Communication Procedure

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



Michael L. Hall