Back to OASIS3-MCT home
In
oasis3-mct/lib/mct/mct/m_GlobalSegMap.F90 :
Type
GlobalSegMap (<= mct_gsmap in psmile)
#ifdef SEQUENCE
sequence
#endif
integer :: comp_id
! Component ID number
integer :: ngseg
! No. of
Global segments
integer :: gsize
! No. of
Global elements
integer,dimension(:),pointer ::
start ! global seg. start index
integer,dimension(:),pointer ::
length ! segment lengths
integer,dimension(:),pointer ::
pe_loc ! PE locations
end type
GlobalSegMap
! !MODULE: m_GlobalSegMap - a nontrivial 1-D decomposition of an array.
!
! !DESCRIPTION:
! Consider the problem of the 1-dimensional decomposition of an array
! across multiple processes. If each process owns only one
contiguous
! segment, then the {\tt GlobalMap} (see {\tt m\_GlobalMap} or details)
! is sufficient to describe the decomposition. If, however,
each
! process owns multiple, non-adjacent segments of the array, a more
! sophisticated approach is needed. The {\tt GlobalSegMap}
data type
! allows one to describe a one-dimensional decomposition of an array
! with each process owning multiple, non-adjacent segments of the array.
!
! In the current implementation of the {\tt GlobalSegMap}, there is no
! santity check to guarantee that
!$${\tt GlobalSegMap\%gsize} = \sum_{{\tt i}=1}^{\tt ngseg}
! {\tt GlobalSegMap\%length(i)} . $$
! The reason we have not implemented such a check is to allow the user
! to use the {\tt GlobalSegMap} type to support decompositions of both
! {\em haloed} and {\em masked} data.