SUBROUTINE CPUTQYS ( KPROMA, KSTART, KPROF, KFLEV, PDT,&
 !  Variables 2D Input
 & PTENDH, PTENDQ, PTENDU, PTENDV,&
 & PCP9, PDELP9, PTT9, PUT9, PVT9,&
 !  Variables 2D In/Out
 & PFDIS,PTT1, PQT1, PUT1, PVT1 )  

!     ------------------------------------
!**** *CPUTQYS*  EVOLUTION DE T, VENT , Q 
!     ------------------------------------

!     ARGUMENTS D'ENTREE
!     ------------------
!       KPROMA : DIMENSION HORIZONTALE
!       KSTART : DEBUT DE LA BOUCLE HORIZONTALE
!       KPROF : BORNE HORIZONTALE DES CALCULS
!       KFLEV : DIMENSION ET BORNE VERTICALE
!       PDT : PAS DE TEMPS EFFECTIF

!       PTENDH (KPROMA,KFLEV) : TENDANCE DE L'ENTHALPIE
!       PTENDQ ( IDEM ) : TENDANCE DE L'EAU VAPEUR
!       PTENDU, PTENDV (KPROMA,KFLEV) : TENDANCE DU VENT
!       PCP9 ( IDEM ) : CHALEUR SPECIFIQUE A T=9
!       PDELP9 ( IDEM ) : EPAISSEUR DE LA COUCHE A T=9
!       PTT9, PUT9, PVT9 (IDEM) : ETAT THERMODYNAMIQUE A T=9

!     ARGUMENTS IMPLICITES
!     --------------------
!       CONSTANTS UNIVERSELLES  = COMMON /YOMCST/:  RG,RCPD,RCPV,RCS,RCW

!     SORTIES
!     -------
!       PTT1, PQT1 (KPROMA,KFLEV): VARIABLES A FAIRE EVOLUER
!       PUT1, PVT1 (IDEM)    : VENT A FAIRE EVOLUER
!       PFDIS(KPROMA,0:KFLEV): FLUX ENTHALPIE DU A LA DISSIPATION EC

!      02/01/92  Bonne Annee
!        Rediger par E.Bazile .
!      18/06/92 Modification par C.Dreveton (ajout PFDIS)
!      22/06/93 Modification par E.Bazile (ajout de l'eau liquide et solide )
!      07/03/95 Modification par E.Bazile (Optimisation des calculs)
!      04/12/95 M.Janiskova - simplification for simplified phys.par 
!                             (exclusion QI, QL)
!  ----------------------------------------------------------------------

USE PARKIND1  ,ONLY : JPIM     ,JPRB
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK

USE YOMCST   , ONLY : RG       ,RCPD     ,RCPV

!  ----------------------------------------------------------------------

IMPLICIT NONE

INTEGER(KIND=JPIM),INTENT(IN)    :: KPROMA 
INTEGER(KIND=JPIM),INTENT(IN)    :: KFLEV 
INTEGER(KIND=JPIM),INTENT(IN)    :: KSTART 
INTEGER(KIND=JPIM),INTENT(IN)    :: KPROF 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PDT 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PTENDH(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PTENDQ(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PTENDU(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PTENDV(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCP9(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PDELP9(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PTT9(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUT9(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVT9(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PFDIS(KPROMA,0:KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PTT1(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PQT1(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PUT1(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PVT1(KPROMA,KFLEV) 

!  ----------------------------------------------------------------------

INTEGER(KIND=JPIM) :: JLEV, JROF

REAL(KIND=JPRB) :: ZCPF, ZDEC, ZFLAG, ZH9, ZRDT, ZRRG, ZTDCP
REAL(KIND=JPRB) :: ZHOOK_HANDLE

!  ----------------------------------------------------------------------
IF (LHOOK) CALL DR_HOOK('CPUTQYS',0,ZHOOK_HANDLE)
!  ----------------------------------------------------------------------

!  ------------------------------------------------------------
!   1. CALCUL DE L'EVOLUTION DU VENT , DE Q ET DE LA TEMPERATURE
!  ------------------------------------------------------------

IF (PDT <= 0.0_JPRB) THEN
  ZFLAG=0.0_JPRB
  ZRDT= 0.0_JPRB
ELSE
  ZFLAG=1.0_JPRB
  ZRDT= 1.0_JPRB/PDT
ENDIF
ZRRG   = 1.0_JPRB/RG
DO JROF=KSTART,KPROF
  PFDIS(JROF,0)=0.0_JPRB
ENDDO
DO JLEV = 1, KFLEV
  DO JROF = KSTART, KPROF

    PUT1(JROF,JLEV) = PUT1(JROF,JLEV) + PDT * PTENDU(JROF,JLEV)
    PVT1(JROF,JLEV) = PVT1(JROF,JLEV) + PDT * PTENDV(JROF,JLEV)
    PQT1(JROF,JLEV) = PQT1(JROF,JLEV) + PDT * PTENDQ(JROF,JLEV)

    ZTDCP = (RCPV - RCPD) * PTENDQ(JROF,JLEV)

    ZCPF = 1.0_JPRB / ( PCP9(JROF,JLEV) + PDT * ZTDCP )

    ZDEC = PDT * ( PUT9(JROF,JLEV)*PTENDU(JROF,JLEV) +&
     & PVT9(JROF,JLEV)*PTENDV(JROF,JLEV) + 0.5_JPRB * PDT * (&
     & (PTENDU(JROF,JLEV))**2 + (PTENDV(JROF,JLEV))**2 ))  
    ZH9 = PCP9(JROF,JLEV) * PTT9(JROF,JLEV)

    PTT1(JROF,JLEV) = PTT1(JROF,JLEV) + ( ZCPF * ( ZH9 - ZDEC &
     & + PDT * PTENDH(JROF,JLEV) ) - PTT9(JROF,JLEV) ) * ZFLAG  
    PFDIS(JROF,JLEV)= PFDIS(JROF,JLEV-1)+ ZRDT*ZRRG*PDELP9(JROF,JLEV)*ZDEC
  ENDDO
ENDDO

!  ----------------------------------------------------------------------
IF (LHOOK) CALL DR_HOOK('CPUTQYS',1,ZHOOK_HANDLE)
END SUBROUTINE CPUTQYS
