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 | Tableau global qui sera distribué | integer, real ou real*8 | I |
gmini,gmaxi,gminj,gmaxj | Dimensions de garr | integer | I |
nig,njg | Taille du domaine global de calcul | integer | I |
nk | Taille de l'axe Z | integer | I |
ghalox,ghaloy | Taille du halo du tableau garr | integer | I |
size | 1 pour integer et real, 2 pour real*8, etc. | integer | I |
larr | Tableaux locaux qui recevront les donné | integer, real ou real*8 | O |
mini,maxi,minj,maxj | Taille de larr | integer | I |
halox,haloy | Taille du halo de larr | integer | I |
periodx,periody | Périodicité globale sur l'axe x et y | logical | I |
ierr | ierr (0 if ok, non-0 if error) | integer | I |
+---------+ +-+ +-+ +-+
| |
|3| |4| |5|
| Sur P0 | -> +-+ +-+ +-+
| |
+-+ +-+ +-+
| |
|0| |1| |2|
+---------+ +-+ +-+ +-+
Distribution d'un domaine global vers des sous-domaines locaux.
Le tableau global sur le processeur 0 est fractionné vers les autres
processeurs. Si halox ou haloy est non nul, alors les halos spécifiés
seront remplis avec les valeurs correspondantes du tableau global.
Si on a la périodicité dans une direction, les halos locaux seront remplis en conséquence, sans utiliser le halo global.
Si halox/y > ghalox/y (et pas de périodicité en x/y),
alors on se limitera pour les processeurs limitrophes à remplir
un halo de largeur ghalox/y.