      !***********************************************************************!
      SUBROUTINE assign_ptr( pglobal_tab,  uglobal_tab,  voisin,  nbthd,  &
                             u, utabN, utabE, utabS, utabW, utabAV, utabAR,  &
                             p, ptabN, ptabE, ptabS, ptabW, ptabAV, ptabAR   )
      !***********************************************************************!
!
! Declaration des tableaux et pointeurs pour les "communications"
      USE numerics
!
      IMPLICIT  NONE
!
      INCLUDE 'comthd.h'
!
      INCLUDE 'u_comptr.h'
!
      INCLUDE 'p_comptr.h'
!
!--Declaration  des  arguments
!
      INTEGER,  INTENT(IN)  ::  nbthd
!
!Tableau contenant toutes les adresses memoire
      INTEGER(ip),  DIMENSION(6, 0:nbthd-1),  INTENT(OUT)  ::  pglobal_tab
      INTEGER(ip),  DIMENSION(6, 0:nbthd-1),  INTENT(OUT)  ::  uglobal_tab
!
!Buffers locaux de donnees
      REAL(rp),  DIMENSION(sx-1:ex+1,sy-1:ey+1,sz-1:ez+1),  INTENT(IN)  ::  u
      REAL(rp),  DIMENSION(sx-1:ex+1,sy-1:ey+1,sz-1:ez+1),  INTENT(IN)  ::  p
!

      REAL(rp),  DIMENSION(sy:ey,sz:ez),  INTENT(IN)  ::  utabE
      REAL(rp),  DIMENSION(sy:ey,sz:ez),  INTENT(IN)  ::  utabW
      REAL(rp),  DIMENSION(sx:ex,sz:ez),  INTENT(IN)  ::  utabS
      REAL(rp),  DIMENSION(sx:ex,sz:ez),  INTENT(IN)  ::  utabN
      REAL(rp),  DIMENSION(sx-1:ex+1,sy-1:ey+1),  INTENT(IN)  ::  utabAV
      REAL(rp),  DIMENSION(sx-1:ex+1,sy-1:ey+1),  INTENT(IN)  ::  utabAR
!
      REAL(rp),  DIMENSION(sy:ey,sz:ez),  INTENT(IN)  ::  ptabE
      REAL(rp),  DIMENSION(sy:ey,sz:ez),  INTENT(IN)  ::  ptabW
      REAL(rp),  DIMENSION(sx:ex,sz:ez),  INTENT(IN)  ::  ptabS
      REAL(rp),  DIMENSION(sx:ex,sz:ez),  INTENT(IN)  ::  ptabN
      REAL(rp),  DIMENSION(sx-1:ex+1,sy-1:ey+1),  INTENT(IN)  ::  ptabAV
      REAL(rp),  DIMENSION(sx-1:ex+1,sy-1:ey+1),  INTENT(IN)  ::  ptabAR
!
!Tableau  contenant  les  voisins  du  domaine  courant
      INTEGER,  PARAMETER  ::  NB_VOISINS  =  6
      INTEGER,  PARAMETER  ::  N=1,  E=2,  S=3,  W=4,  AV=5,  AR=6
      INTEGER,  DIMENSION(NB_VOISINS),  INTENT(IN)  ::  voisin
!
!--Declaration  des  variables  locales
!
      !***********************************************************************!
!
! Stockage des adresses des buffers locaux de p
      pglobal_tab(N, mythd) = LOC( ptabN  )
      pglobal_tab(E, mythd) = LOC( ptabE  )
      pglobal_tab(S, mythd) = LOC( ptabS  )
      pglobal_tab(W, mythd) = LOC( ptabW  )
!!    pglobal_tab(AV,mythd) = LOC( p(sx,sy,ez) )
!!    pglobal_tab(AR,mythd) = LOC( p(sx,sy,sz) )
      pglobal_tab(AV,mythd) = LOC( ptabAV )
      pglobal_tab(AR,mythd) = LOC( ptabAR )
!
! Stockage des adresses des buffers locaux de u
      uglobal_tab(N, mythd) = LOC( utabN  )
      uglobal_tab(E, mythd) = LOC( utabE  )
      uglobal_tab(S, mythd) = LOC( utabS  )
      uglobal_tab(W, mythd) = LOC( utabW  )
!!    uglobal_tab(AV,mythd) = LOC( u(sx,sy,ez) )
!!    uglobal_tab(AR,mythd) = LOC( u(sx,sy,sz) )
      uglobal_tab(AV,mythd) = LOC( utabAV )
      uglobal_tab(AR,mythd) = LOC( utabAR )
!
!$OMP BARRIER
!
! Recuperation des adresses en cas de voisins
!
! pointage tableaux voisin N
      IF( voisin(N)  /= -1 ) THEN
        iuN = uglobal_tab(S,voisin(N) )
        ipN = pglobal_tab(S,voisin(N) )
      END IF
!
! pointage tableaux voisin E
      IF( voisin(E)  /= -1 ) THEN
        iuE = uglobal_tab(W,voisin(E) )
        ipE = pglobal_tab(W,voisin(E) )
      END IF
!
! pointage tableaux voisin S
      IF( voisin(S)  /= -1 ) THEN
        iuS = uglobal_tab(N,voisin(S) )
        ipS = pglobal_tab(N,voisin(S) )
      END IF
!
! pointage tableaux voisin W
      IF( voisin(W)  /= -1 ) THEN
        iuW = uglobal_tab(E,voisin(W) )
        ipW = pglobal_tab(E,voisin(W) )
      END IF
!
! pointage tableaux voisin AV
      IF( voisin(AV)  /= -1 ) THEN
        iuAV = uglobal_tab(AR,voisin(AV) )
        ipAV = pglobal_tab(AR,voisin(AV) )
      END IF
!
! pointage tableaux voisin AR
      IF( voisin(AR)  /= -1 ) THEN
        iuAR = uglobal_tab(AV,voisin(AR) )
        ipAR = pglobal_tab(AV,voisin(AR) )
      END IF
!
      RETURN
      END SUBROUTINE assign_ptr
