RPN_COMM |
(RPN_COMM_dist) |
SUBROUTINE RPN_COMM_dist (garr,gmini,gmaxi,gminj, % gmaxj,nig,njg,nk,ghalox,ghaloy,size, % larr,mini,maxi,minj,maxj,halox,haloy, % periodx,periody,status)
garr | Global array sending data | integer, real or real*8 | I |
gmini,gmaxi,gminj,gmaxj | Size of garr | integer | I |
nig,njg | Domain size | integer | I |
nk | Z axis size | integer | I |
ghalox,ghaloy | Halo size of garr for x and y axis | integer | I |
size | 1 for integer and real, 2 for real*8, etc. | integer | I |
larr | Local array that will get data | integer, real ou real*8 | O |
mini,maxi,minj,maxj | Size of larr | integer | I |
halox,haloy | Halo size of larr for x and y axis | integer | I |
periodx,periody | Global periodicity over x and y axis | logical | I |
ierr | ierr (0 if ok, non-0 if error) | integer | I |
+---------+ +-+ +-+ +-+
| |
|3| |4| |5|
| On P0 | -> +-+ +-+ +-+
| |
+-+ +-+ +-+
| |
|0| |1| |2|
+---------+ +-+ +-+ +-+
Distribution of the global data towards sub-domains,
local to each PE. The global array on PE 0 is divised and
the corresponding data is sent to each processors. If halox/y
is non-zero, then the halos will be filled with corresponding
values of the global domain.
If the domain is periodic, the halos will be filled accordingly without considering the global halo.
If halox/y > ghalox/y (and no periodicity), then only
the PEs on the boundary of the topology will have their outmost
part (points outside the global domain) filled with a halo of width ghalox/y