!
! $Header$
!
SUBROUTINE gr_dyn_fi(nfield,im,jm,ngrid,pdyn,pfi)
  IMPLICIT NONE
  !=======================================================================
  !   passage d'un champ de la grille scalaire a la grille physique
  !=======================================================================

  !-----------------------------------------------------------------------
  !   declarations:
  !   -------------

  INTEGER :: im,jm,ngrid,nfield
  REAL :: pdyn(im,jm,nfield)
  REAL :: pfi(ngrid,nfield)

  INTEGER :: j,ifield,ig

  !-----------------------------------------------------------------------
  !   calcul:
  !   -------

  IF (ngrid.NE.2+(jm-2)*(im-1)) then
     call abort_gcm("gr_dyn_fi", 'probleme de dim', 1)
  end if
  !   traitement des poles
  CALL SCOPY(nfield,pdyn,im*jm,pfi,ngrid)
  CALL SCOPY(nfield,pdyn(1,jm,1),im*jm,pfi(ngrid,1),ngrid)

  !   traitement des point normaux
  DO ifield=1,nfield
     DO j=2,jm-1
        ig=2+(j-2)*(im-1)
        CALL SCOPY(im-1,pdyn(1,j,ifield),1,pfi(ig,ifield),1)
     ENDDO
  ENDDO

  RETURN
END SUBROUTINE gr_dyn_fi
