REAL FUNCTION TRANSF(XK,D)
!
!***  DETERMINE NARROW BAND LIMIT NONLINEAR TRANSFER FUNCTION            
!     BASED ON TECH MEMO 464 BY P. JANSSEN AND M. ONORATO
!     
!
!     AUTHOR:  P.A.E.M. JANSSEN ECMWF JUNE 2005
!     ------
!
!     VARIABLE       TYPE         PURPOSE
!     --------       ----         -------
!
!     XK             REAL         WAVE NUMBER
!     D              REAL         DEPTH
!
!----------------------------------------------------------------------

!      USE YOWPCONS , ONLY : G     ,DKMAX

       USE DATAPOOL, ONLY : FR, WETAIL, FRTAIL, WP1TAIL, ISHALLO, FRINTF, COFRM4, CG, WK, DKMAX, &
     &                      DFIM, DFIMOFR, DFFR, DFFR2, WK, RKIND, EMEAN, FMEAN, TH, ENH, DEP, AF11, &
     &                      IKP, IKP1, IKM, IKM1, K1W, K2W, K11W, K21W, FKLAP, FKLAP1, FKLAM, FKLAM1, FRH, &
     &                      DELTH => DDIR, &
     &                      G => G9, &
     &                      ZPI => PI2, &
     &                      EPSMIN => SMALL, &
     &                      NANG => MDC, &
     &                      NFRE => MSC, &
     &                      INDEP => DEP

!----------------------------------------------------------------------
 
      IMPLICIT NONE

      REAL :: EPS,D,X,XK,T_0,OM,C_0,V_G,DV_G,XNL_1,XNL_2,XNL

      EPS=0.0001
!
!*    1. DETERMINE TRANSFER FUNCTION.
!     ------------------------------
!     
      IF(D.LT.999. .AND. D.GT.0.) THEN
        X   = XK*D
        IF ( X .GT. DKMAX) THEN
          TRANSF = 1. 
        ELSE
          T_0 = TANH(X)
          OM  = SQRT(G*XK*T_0)
          C_0 = OM/XK
          IF(X .LT. EPS) THEN
            V_G = 0.5*C_0
            V_G = C_0
          ELSE
            V_G = 0.5*C_0*(1.+2.*X/SINH(2.*X))
          ENDIF
          DV_G = (T_0-X*(1.-T_0**2))**2+4.*X**2*T_0**2*(1.-T_0**2)
       
          XNL_1 = (9.*T_0**4-10.*T_0**2+9.)/(8.*T_0**3)
          XNL_2 = ((2.*V_G-0.5*C_0)**2/(G*D-V_G**2)+1.)/X

          XNL = XNL_1-XNL_2
          TRANSF = XNL**2/(DV_G*T_0**8)
        ENDIF
      ELSE
        TRANSF = 1. 
      ENDIF
!
      RETURN
      END