SUBROUTINE ACTCPNF ( KIDIA,KFDIA,KLON,KLEV, &
 !-----------------------------------------------------------------------
 !  Variables 2D Input
 & PCP,PT,&
 !  Variables 1D Input
 & PCPS,PTS,&
 !  Variables 2D Out
 & PCPF,PTF,&
 ! - LOCK ARGUMENTS .
 & CDLOCK)  

!     ------------------------------------------------------------------
!     CALCUL DE T ET CP AUX NIVEAUX DES FLUX POUR LA
!     CONSERVATION D'ENTHALPIE.
!     ------------------------------------------------------------------

!     ARGUMENTS D'ENTREE.
!     ------------------.
!       KIDIA : DEBUT DE LA BOUCLE HORIZONTALE.
!       KFDIA : BORNE HORIZONTALE DES CALCULS.
!       KLON  : DIMENSION HORIZONTALE.
!       KLEV  : DIMENSION ET BORNE VERTICALE.

! - 2D (1:KLEV).
!   -----------.
!       PCP: CHALEUR MASSIQUE A PRESSION CONSTANTE DE L'AIR.
!       PT : TEMPERATURE.

! - 1D.
!   --.
!       PCPS: CHALEUR MASSIQUE A PRESSION CONSTANTE DE L'AIR EN SURFACE.
!       PTS : TEMPERATURE DE SURFACE.

! - ARGUMENTS DE SORTIE (0:KLEV).
!   ----------------------------.
!       PCPF : CHALEUR MASSIQUE AUX NIVEAUX DES FLUX.
!       PTF  : TEMPERATURE AUX NIVEAUX DES FLUX.

! - ARGUMENTS IMPLICITES.
!   --------------------.

!     Methode.
!     --------

!     Auteur.
!     -------
!        02-09, J.F. GUEREMY.
!-----------------------------------------------------------------------

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

IMPLICIT NONE

INTEGER(KIND=JPIM),INTENT(IN)    :: KLON 
INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV 
INTEGER(KIND=JPIM),INTENT(IN)    :: KIDIA 
INTEGER(KIND=JPIM),INTENT(IN)    :: KFDIA 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCP(KLON,KLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PT(KLON,KLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCPS(KLON) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PTS(KLON) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PCPF(KLON,0:KLEV) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTF(KLON,0:KLEV) 
CHARACTER(LEN=7)  ,INTENT(IN)    :: CDLOCK 
INTEGER(KIND=JPIM) :: JLON, JLEV

REAL(KIND=JPRB) :: ZHOOK_HANDLE

#include "abor1.intfb.h"

!     CHECK RELIABILITY OF INPUT ARGUMENTS.

IF (LHOOK) CALL DR_HOOK('ACTCPNF',0,ZHOOK_HANDLE)
IF(CDLOCK /= 'ACTCPNF') CALL ABOR1('BAD NUMBER OF ARGUMENTS!')

! --- LIMITE SUPERIEURE.
!     -----------------.
DO JLON=KIDIA,KFDIA
  PTF(JLON,0) = PT(JLON,1)
  PCPF(JLON,0) = PCP(JLON,1)
ENDDO

! --- CALCULS NIVEAUX FLUX.
!     --------------------.
DO JLEV = 1 , KLEV-1
  DO JLON = KIDIA , KFDIA
    PTF(JLON,JLEV) = 0.5_JPRB * ( PT(JLON,JLEV) + PT(JLON,JLEV+1) )
    PCPF(JLON,JLEV) = 0.5_JPRB * ( PCP(JLON,JLEV) + PCP(JLON,JLEV+1) )
  ENDDO
ENDDO

! --- LIMITE INFERIEURE.
!     -----------------.
DO JLON=KIDIA,KFDIA
  PTF(JLON,KLEV) = PTS(JLON)
  PCPF(JLON,KLEV) = PCPS(JLON)
ENDDO

IF (LHOOK) CALL DR_HOOK('ACTCPNF',1,ZHOOK_HANDLE)
END SUBROUTINE ACTCPNF
