!********************************************************************
!*                   SUBROUTINE CCFFT1D
!********************************************************************
!*
!* Objet      : routine d'interface pour les fft C/C 1D de la lib SGI
!*
!*
!* Methode    :
!*
!* Langage    : Fortran90
!*
!* Auteur     : Guy Moebs
!*
!*
!* $Date$
!*
!********************************************************************
!*
!* $Source$
!*
!* $Log$
!*
!********************************************************************
!*
!* APPELES    :
!*
!********************************************************************
!*
!*
!* ENTREES         :  itrans, ndim
!*
!* ENTREES/SORTIES :  A
!*
!* SORTIES         :  B
!*
!* CODE ERREUR     :
!*
!*
!********************************************************************
!*
      SUBROUTINE ccfft1d (itrans, ndim, A, B)
!      
!--------------------
! modules necessaires
!--------------------
      use numerics
      use modfft
!
      IMPLICIT NONE
!
!--------------------------
! description des arguments
!--------------------------
!     * itrans (E ,I ) Entier definissant la transformation
!     * ndim   (E ,I ) Nombre de points de la transformantion
!     * A      (E ,CX) Tableau de la transformee en entree
!     * B      ( S,CX) Tableau de la transformee en sortie
!
!--------------------------
! declaration des arguments
!--------------------------
      INTEGER,  INTENT(IN)  ::  itrans
      INTEGER,  INTENT(IN)  ::  ndim
!
      COMPLEX(rp),  DIMENSION(0:ndim-1),  INTENT(IN)   ::  A
      COMPLEX(rp),  DIMENSION(0:ndim-1),  INTENT(OUT)  ::  B
!
!----------------------------------
! declaration des variables locales
!----------------------------------
      REAL(rp)  ::  usn
!
!-----------------------
! debut de la subroutine
!-----------------------
!
      SELECT CASE (itrans)
!
!----------------------------------------------------
! Passage de l'espace physique dans l'espace spectral
!----------------------------------------------------
!
      CASE (-1)
           usn = un / REAL(ndim, rp)
           CALL ZZFFT ( -1, ndim, usn, A, B, CTRIGS, CWK, 0 )
!
!----------------------------------------------------
! Passage de l'espace spectral dans l'espace physique
!----------------------------------------------------
!
      CASE (1)
           CALL ZZFFT (  1, ndim, un,  A, B, CTRIGS, CWK, 0 )
!
!--------------------------
! Initialisations des TRIGS
!--------------------------
!
      CASE (0)
           ALLOCATE( CTRIGS(2*ndim+30), CWK(0:2*ndim-1), STAT = ierr)
           IF( ierr /= 0 ) THEN
              WRITE (6,*) ' Probleme allocation CTRIGS, CWK'
              STOP
           END IF
!
           CALL ZZFFT (  0, ndim, un,  A, B, CTRIGS, CWK, 0 )
!
!-----------------------
! Finalisation des TRIGS
!-----------------------
!
      CASE (-2)
           DEALLOCATE( CTRIGS, CWK )
!
!-------
! Erreur
!-------
!
      CASE DEFAULT
           WRITE (6,*) 'ERREUR : PARAMETRE itrans INCONNU'
           STOP
!
      END SELECT
!
!---------------------
! Fin de la subroutine
!---------------------
!
      RETURN
      END SUBROUTINE ccfft1d
