RPN_COMM

(RPN_COMM_transpose)



subroutine RPN_COMM_transpose(za,min1,max1,n1g,n2,min3,max3,n3g,zb,type,size)

ARGUMENTS

IN


OUT

  • zb : vecteur sortant, de taille (size, n2, min3:max3, n1g)

  • DESCRIPTION


    Change la répartition du domaine global sur les domaines locaux. L'opération se fait dans deux sens, selon le signe de la variable "type": si >0, alors on passe de (x,y,z) -> (y,z,x). Sinon, on passe de
    (x,y,z) -> (z,x,y).


    EXEMPLE

    On dispose de 6 processeurs, répartis en 3x2 ainsi, sur un domaine global de 23 points par 12 par 9, donc 8+8+7 points en x, 6+6 points en y et 9 poins en z.

    +-+-+-+
    |3|4|5|
    +-+-+-+
    |0|1|2|
    +-+-+-+

    On désire repartitionner le domaine en coupant selon z et x plutôt que x et y. On utilise donc la transposition par en avant ("type" >0) et on spécifie les arguments nécessaires:

    Le vecteur local entrant, de taille (1:8,6,9) sur tous les processeurs (min1=1, max1=8, n2=6, n3g=9).
    La vecteur local sortant, de taille (6,1:5,23) sur tous les processeurs (min3=1, max3=5, n2=6, n1g=23).

    min3 et max3 auraient avantage à être obtenus à l'aide de la fonction RPN_COMM_topo pour éviter les ennuis.  Dans ce cas-ci , l'appel  serait du genre err = RPN_COMM_topo(5, min3, max3, nx3l, nxl3max, halo3x, n0_3x, .true. , .true.) par exemple (idem pour min1 et max1).

    La variable "size" sera égale à 1 pour des réels ou des entiers, 2 pour des réels*8, etc...

    Au retour de la fonction, le vecteur local sortant aura récupéré sa partie de grille. La nouvelle grille sera donc de taille 6 par 5+4 par 23.
     


    VOIR AUSSI

    RPN_COMM_* 

    Return to RPN Libraries home page