      SUBROUTINE gm_coords_create (  nbdims,  dims,  coords  )
!
! Calcul des coordonnees du processus
!
      USE numerics
!
      IMPLICIT NONE
!
      INCLUDE 'comthd.h'
!
! Declaration des arguments
!
! Nombre de directions spatiales
      INTEGER,                        INTENT(IN)   ::  nbdims
!
! Nombre de processus par direction spatiale
      INTEGER,  DIMENSION(1:nbdims),  INTENT(IN)   ::  dims
!
! Coordonnees dans la topologie cartesienne
      INTEGER,  DIMENSION(1:nbdims),  INTENT(OUT)  ::  coords
!
! Declaration des variables locales
!
      INTEGER  ::  irk2
      INTEGER  ::  nd2
      INTEGER  ::  ibloc
      INTEGER  ::  k
!
! Debut de la subroutine
!
      irk2 = mythd
!
      DO nd2 = nbdims, 1, -1
!
         ibloc = 1
         DO k = 1, nd2 - 1
            ibloc = ibloc * dims(k)
         END DO
!
         coords(nd2) = irk2 / ibloc
         irk2 = irk2 - coords(nd2) * ibloc
!
      END DO
!
! Fin   de la subroutine
!
      RETURN
      END SUBROUTINE gm_coords_create

