!copyright (C) 2001  MSC-RPN COMM  %%%RPNPHY%%%
*** S/P LIN_KDIF_SIMP1_TR

      SUBROUTINE LIN_KDIF_SIMP1_TR(D, DSIZ, F, FSIZ, V, VSIZ, NI, NK, LINTYPE) 2,1
#include "impnone.cdk"
*
      INTEGER DSIZ, FSIZ, VSIZ, NI, NK, LINTYPE
      REAL D(DSIZ), F(FSIZ), V(VSIZ)
*
*Author
*     Stephane Laroche - Janvier 2001
*
*Revisions
* 001   S. Laroche   - TRAJ of LIN_KDIF_SIMP1 from Yves Delage linear physics
*                      
*
*Object
*          To calculate the (unnormalized) diffusion coefficients KM and KT
*          and the (unnormalized) boundary conditions for the diffusion of
*          wind, temperature, and moisture
*          using simplified physical parameterizations.

*Arguments
*
*          - Input/Output -
* F        field of permanent physics variables
* V        volatile bus
* FSIZ     dimension of F
* VSIZ     dimension of V
*
*          - Input -
* NI       horizontal dimension
* NK       vertical dimension
*
*
*Notes
*    DRAG = false : only a background value of diffusion coefficients
*    DRAG = true  : boundary layer dependent on z0 and on latitude
*    CHAUF= true  : surface heat flux over oceans dependent also on z0t
*    EVAP = true  : evaporation over oceans dependent also on z0t 
*
**
      INTEGER K,I
      REAL KDIF(NI,NK),ZEDIAG(NI,NK),UET(NI)
      REAL lnz0,lnz0t,lnza,lnzu,lnzt,ruv,ctu

      REAL DIFBAK
      DATA DIFBAK/0.1/
      SAVE DIFBAK
*
*
#include "indx_sfc.cdk"
#include "phy_macros_f.h"
#include "phybus.cdk"
#include "options.cdk"
#include "consphy.cdk"
#include "dintern.cdk"
#include "surfcon.cdk"
#include "fintern.cdk"
#include "zuzt.cdk"
*
      integer IK
*     fonction-formule pour l'adressage
      IK(i,k) = (K-1)*NI + I - 1
*
*     ************************* TRAJECTORY  *************************
*
      DO K=1,NK
      DO I=1,NI
         V(GTE+IK(I,K)) = -GRAV/CPD
         V(GQ +IK(I,K)) = 0.0
      ENDDO
      ENDDO

      DO I=1,NI
        V(ALFAT+I-1) = 0.0
        V(ALFAQ+I-1) = 0.0
      ENDDO

      IF(LINTYPE.EQ.1) THEN

       DO K=1,NK-1
       DO I=1,NI
         F(KMM+IK(I,K)) = DIFBAK
         F(KTM+IK(I,K)) = DIFBAK/BETA
       ENDDO
       ENDDO

       DO I=1,NI
         F(BMM+I-1) = 0.0
         F(BTM+I-1) = 0.0
       ENDDO


       IF (DRAG) THEN

        DO K=1,NK-2
          DO I=1,NI
            ZEDIAG(I,K) = V(ZE+IK(I,K))
          ENDDO
        ENDDO
        K=NK-1
        DO I=1,NI
          ZEDIAG(I,K) = V(ZA+I-1)
          UET(I)      = 0.001
        ENDDO

        CALL KDIFSIMP(KDIF,UET,ZEDIAG,F(Z0),V(FCOR),DIFBAK,NK-1,NI)
         DO K=1,NK-1
           DO I=1,NI
             F(KMM+IK(I,K)) = KDIF(I,K)
             F(KTM+IK(I,K)) = KDIF(I,K)/BETA
           ENDDO
         ENDDO

        DO I=1,NI
*
          lnza  = ALOG (V(ZA+I-1)+F(Z0+I-1))
          lnz0  = ALOG(F(Z0+I-1))
          lnz0t = ALOG(F(Z0T+I-1))
          CTU  = karman/((lnza-lnz0t)*BETA)*UET(i)*(1.-NINT(F(MG+I-1)))

          F(BMM+I-1) = karman/(lnza-lnz0)*UET(i)
          F(BTM+I-1) =  0.0
          IF(CHAUF.OR.EVAP) F(BTM+I-1) = CTU
*
        END DO

       ENDIF

      ENDIF
*
      RETURN
      END