!OCL  NOEVAL
SUBROUTINE GPGRGEOAD(&
 ! --- INPUT ------------------------------------------
 & LDNHDYN,KPROMA,KD,KF,KFLEV,&
 ! --- INPUT IN TL ------------------------------------
 !NYC-NH & PREHYDSPRE,&
 & PT,PR,PRTL,PRTM,&
 & PLNPR,PLNPRL,PLNPRM,PALPH,PALPHL,PALPHM,&
 !NYC-NH & PQCHAL,PQCHAM,&
 ! --- OUTPUT IN TL -----------------------------------
 & PHIFL,PHIFM,PHIHL,PHIHM,&
 ! --- INPUT-TRAJECTORY -------------------------------
 & PREHYDSPRE5,PT5,PR5,PRT5L,PRT5M,&
 & PLNPR5,PLNPR5L,PLNPR5M,PALPH5,PALPH5L,PALPH5M &
 !NYC-NH & PQCHA5L,PQCHA5M,PNH15L,PNH15M  &
 & )  

!**** *GPGRGEOAD* - Computes half and full level gradient of geopotential
!                 height "gz". AD code.

!     Purpose.
!     --------

!      See GPGRGEO.

!**   Interface.
!     ----------
!        *CALL* *GPGRGEOAD(...)

!        Explicit arguments :
!        --------------------
!         * INPUT:
!           LDNHDYN      : .F./.T.: hydrostatic/non hydrostatic model.
!           KPROMA       : horizontal dimension
!           KD           : start of work
!           KF           : working length
!           KFLEV        : number of levels

!         * INPUT IN TL:
!           PREHYDSPRE   : "prehyd/pre" on layers. Contains "0" if hydrostatic (NYC-NH)
!           PR           : "R(air)" on layers
!           PT           : temperature "T" on layers
!           PRTL         : zonal component of "rssavnabla (RT)" on layers
!           PRTM         : meridian component of "rssavnabla (RT)" on layers
!           PLNPR        : "delta" on layers (is equal to
!                          "log(prehyd[lbar]/prehyd[lbar-1])" if "ndlnpr=0")
!           PLNPRL       : zonal component of "rssavnabla delta" on layers
!           PLNPRM       : meridian component of "rssavnabla delta" on layers
!           PALPH        : "alpha" on layers
!           PALPHL       : zonal component of "rssavnabla alpha" on layers
!           PALPHM       : meridian component "rssavnabla alpha" on layers
!           PQCHAL       : zonal component of
!                          "rssavnabla(log(pre/prehyd))=
!                          (rssavnabla pre)/pre - (rssavnabla(prehyd))/prehyd"
!                          on layers (NYC-NH)
!           PQCHAM       : merid component of
!                          "rssavnabla(log(pre/prehyd))=
!                          (rssavnabla pre)/pre - (rssavnabla(prehyd))/prehyd"
!                          on layers (NYC-NH)

!         * OUTPUT IN TL:
!           PHIFL        : zonal component of "rssavnabla (gz)" on layers
!           PHIFM        : merid component of "rssavnabla (gz)" on layers
!           PHIHL        : zonal component of "rssavnabla (gz)" on interlayers
!           PHIHM        : merid component of "rssavnabla (gz)" on interlayers

!         * INPUT-TRAJECTORY:
!           PREHYDSPRE5,PT5,PR5,PRT5L,PRT5M,
!           PLNPR5,PLNPR5L,PLNPR5M,PALPH5,PALPH5L,PALPH5M,
!           PQCHA5L,PQCHA5M,&
!           PNH15L,PNH15M:
!           trajectory version of PREHYDSPRE,PT,PR,PRTL,PRTM,
!           PLNPR,PLNPRL,PLNPRM,PALPH,PALPHL,PALPHM,
!           PQCHAL,PQCHAM,&
!           ZNH1L,ZNH1M in GPGRGEO.

!        Implicit arguments :   None.
!        --------------------

!     Method.
!     -------
!        See documentation

!     Externals.    None.
!     ----------

!     Reference.
!     ----------
!        See  documentation Arpege ALGORITHME CHAPITRE 6 paragraphe 6

!     Author.
!     -------
!        K. YESSAD

!     Modifications.
!     --------------
!        Original : Dec 2005
!     K. Yessad (Dec 2008): remove dummy CDLOCK
!     ------------------------------------------------------------------

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

USE YOMCVER  , ONLY : LVERTFE
USE YOMGEM   , ONLY : VFE_RDETAH

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

IMPLICIT NONE

INTEGER(KIND=JPIM),INTENT(IN)    :: KPROMA 
INTEGER(KIND=JPIM),INTENT(IN)    :: KFLEV 
LOGICAL           ,INTENT(IN)    :: LDNHDYN 
INTEGER(KIND=JPIM),INTENT(IN)    :: KD 
INTEGER(KIND=JPIM),INTENT(IN)    :: KF 
!NYC-NH REAL(KIND=JPRB)   ,INTENT(INOUT) :: PREHYDSPRE(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PT(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PR(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PRTL(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PRTM(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PLNPR(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PLNPRL(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PLNPRM(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PALPH(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PALPHL(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PALPHM(KPROMA,KFLEV) 
!NYC-NH REAL(KIND=JPRB)   ,INTENT(INOUT) :: PQCHAL(KPROMA,KFLEV) 
!NYC-NH REAL(KIND=JPRB)   ,INTENT(INOUT) :: PQCHAM(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PHIFL(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PHIFM(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PHIHL(KPROMA,0:KFLEV) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PHIHM(KPROMA,0:KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PREHYDSPRE5(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PT5(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PR5(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PRT5L(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PRT5M(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PLNPR5(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PLNPR5L(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PLNPR5M(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PALPH5(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PALPH5L(KPROMA,KFLEV) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PALPH5M(KPROMA,KFLEV) 
!NYC-NH REAL(KIND=JPRB)   ,INTENT(IN)    :: PQCHA5L(KPROMA,KFLEV) 
!NYC-NH REAL(KIND=JPRB)   ,INTENT(IN)    :: PQCHA5M(KPROMA,KFLEV) 
!NYC-NH REAL(KIND=JPRB)   ,INTENT(IN)    :: PNH15L(KPROMA,KFLEV) 
!NYC-NH REAL(KIND=JPRB)   ,INTENT(IN)    :: PNH15M(KPROMA,KFLEV) 

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

REAL(KIND=JPRB) :: ZNH1L(KPROMA,KFLEV), ZNH1M(KPROMA,KFLEV)
REAL(KIND=JPRB) :: ZGPHL(KPROMA,0:KFLEV), ZGPHM(KPROMA,0:KFLEV)
REAL(KIND=JPRB) :: ZINL(KPROMA,KFLEV) , ZINM(KPROMA,KFLEV)

INTEGER(KIND=JPIM) :: JLEV, JROF
REAL(KIND=JPRB) :: ZHOOK_HANDLE

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

#include "verintad.intfb.h"

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

IF (LHOOK) CALL DR_HOOK('GPGRGEOAD',0,ZHOOK_HANDLE)

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

!*    3.  Initial set to zero.

ZNH1L(KD:KF,1:KFLEV)=0.0_JPRB
ZNH1M(KD:KF,1:KFLEV)=0.0_JPRB
ZGPHL(KD:KF,0:KFLEV)=0.0_JPRB
ZGPHM(KD:KF,0:KFLEV)=0.0_JPRB
ZINL(KD:KF,1:KFLEV)=0.0_JPRB
ZINM(KD:KF,1:KFLEV)=0.0_JPRB

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

!*    2.2 Calculation of "rssavnabla (gz)" on interlayers.
!         "alpha" and "rssavnabla alpha" terms contributions.

IF(LVERTFE) THEN
  DO JLEV=KFLEV,1,-1
    DO JROF=KD,KF
      ZGPHL(JROF,JLEV-1)=ZGPHL(JROF,JLEV-1)+PHIFL(JROF,JLEV)
      ZGPHM(JROF,JLEV-1)=ZGPHM(JROF,JLEV-1)+PHIFM(JROF,JLEV)
    ENDDO
  ENDDO  
  CALL VERINTAD(KPROMA,KD,KF,KFLEV,ZINL,ZGPHL,1)
  CALL VERINTAD(KPROMA,KD,KF,KFLEV,ZINM,ZGPHM,1)
  DO JLEV=1,KFLEV
    IF (LDNHDYN) THEN
      ! Not yet coded (following code to be activated later)
      !NYC-NH DO JROF=KD,KF
      !NYC-NH   ! zonal
      !NYC-NH   ZNH1L(JROF,JLEV)=ZNH1L(JROF,JLEV)-VFE_RDETAH(JLEV)* &
      !NYC-NH    & PLNPR5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*ZINL(JROF,JLEV)
      !NYC-NH   PLNPR(JROF,JLEV)=PLNPR(JROF,JLEV)-VFE_RDETAH(JLEV)*PREHYDSPRE5(JROF,JLEV)&
      !NYC-NH    & *PNH15L(JROF,JLEV)*ZINL(JROF,JLEV)
      !NYC-NH   PREHYDSPRE(JROF,JLEV)=PREHYDSPRE(JROF,JLEV)+VFE_RDETAH(JLEV)&
      !NYC-NH    & *(PLNPR5(JROF,JLEV)*(PRT5L(JROF,JLEV)+PNH15L(JROF,JLEV))&
      !NYC-NH    & +PLNPR5L(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV))*ZINL(JROF,JLEV)
      !NYC-NH   ! meridian
      !NYC-NH   ZNH1M(JROF,JLEV)=ZNH1M(JROF,JLEV)-VFE_RDETAH(JLEV)* &
      !NYC-NH    & PLNPR5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*ZINM(JROF,JLEV)
      !NYC-NH   PLNPR(JROF,JLEV)=PLNPR(JROF,JLEV)-VFE_RDETAH(JLEV)*PREHYDSPRE5(JROF,JLEV)&
      !NYC-NH    & *PNH15M(JROF,JLEV)*ZINM(JROF,JLEV)
      !NYC-NH   PREHYDSPRE(JROF,JLEV)=PREHYDSPRE(JROF,JLEV)+VFE_RDETAH(JLEV)&
      !NYC-NH    & *(PLNPR5(JROF,JLEV)*(PRT5M(JROF,JLEV)+PNH15M(JROF,JLEV))&
      !NYC-NH    & +PLNPR5M(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV))*ZINM(JROF,JLEV)
      !NYC-NH ENDDO
    ENDIF
    ! In the hydrostatic model, ZNH1L, ZNH1M, PNH15L, PNH15M and PREHYDSPRE are 0,
    ! so the corresponding contributions are added only in the NH model.
    DO JROF=KD,KF
      ! zonal
      PLNPR(JROF,JLEV)=PLNPR(JROF,JLEV)-VFE_RDETAH(JLEV)*PREHYDSPRE5(JROF,JLEV)&
       & *PRT5L(JROF,JLEV)*ZINL(JROF,JLEV)
      PRTL(JROF,JLEV)=PRTL(JROF,JLEV)-VFE_RDETAH(JLEV)*PLNPR5(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*ZINL(JROF,JLEV)
      PLNPRL(JROF,JLEV)=PLNPRL(JROF,JLEV)-VFE_RDETAH(JLEV)*PREHYDSPRE5(JROF,JLEV)&
       & *PR5(JROF,JLEV)*PT5(JROF,JLEV)*ZINL(JROF,JLEV)
      PR(JROF,JLEV)=PR(JROF,JLEV)-VFE_RDETAH(JLEV)*PLNPR5L(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*PT5(JROF,JLEV)*ZINL(JROF,JLEV)
      PT(JROF,JLEV)=PT(JROF,JLEV)-VFE_RDETAH(JLEV)*PLNPR5L(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*ZINL(JROF,JLEV)
      ! meridian
      PLNPR(JROF,JLEV)=PLNPR(JROF,JLEV)-VFE_RDETAH(JLEV)*PREHYDSPRE5(JROF,JLEV)&
       & *PRT5M(JROF,JLEV)*ZINM(JROF,JLEV)
      PRTM(JROF,JLEV)=PRTM(JROF,JLEV)-VFE_RDETAH(JLEV)*PLNPR5(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*ZINM(JROF,JLEV)
      PLNPRM(JROF,JLEV)=PLNPRM(JROF,JLEV)-VFE_RDETAH(JLEV)*PREHYDSPRE5(JROF,JLEV)&
       & *PR5(JROF,JLEV)*PT5(JROF,JLEV)*ZINM(JROF,JLEV)
      PR(JROF,JLEV)=PR(JROF,JLEV)-VFE_RDETAH(JLEV)*PLNPR5M(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*PT5(JROF,JLEV)*ZINM(JROF,JLEV)
      PT(JROF,JLEV)=PT(JROF,JLEV)-VFE_RDETAH(JLEV)*PLNPR5M(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*ZINM(JROF,JLEV)
    ENDDO
  ENDDO
ELSE
  DO JLEV=1,KFLEV
    IF (LDNHDYN) THEN
      ! Not yet coded (following code to be activated later)
      !NYC-NH DO JROF=KD,KF
      !NYC-NH   ! zonal
      !NYC-NH   PHIHL(JROF,JLEV)=PHIHL(JROF,JLEV)+PHIFL(JROF,JLEV)
      !NYC-NH   ZNH1L(JROF,JLEV)=ZNH1L(JROF,JLEV)&
      !NYC-NH    & +PALPH5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*PHIFL(JROF,JLEV)
      !NYC-NH   PALPH(JROF,JLEV)=PALPH(JROF,JLEV)+PREHYDSPRE5(JROF,JLEV)&
      !NYC-NH    & *PNH15L(JROF,JLEV)*PHIFL(JROF,JLEV)
      !NYC-NH   PREHYDSPRE(JROF,JLEV)=PREHYDSPRE(JROF,JLEV)&
      !NYC-NH    & +(PALPH5(JROF,JLEV)*(PRT5L(JROF,JLEV)+PNH15L(JROF,JLEV))&
      !NYC-NH    & +PALPH5L(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV))*PHIFL(JROF,JLEV)
      !NYC-NH   ! meridian
      !NYC-NH   PHIHM(JROF,JLEV)=PHIHM(JROF,JLEV)+PHIFM(JROF,JLEV)
      !NYC-NH   ZNH1M(JROF,JLEV)=ZNH1M(JROF,JLEV)&
      !NYC-NH    & +PALPH5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*PHIFM(JROF,JLEV)
      !NYC-NH   PALPH(JROF,JLEV)=PALPH(JROF,JLEV)+PREHYDSPRE5(JROF,JLEV)&
      !NYC-NH    & *PNH15M(JROF,JLEV)*PHIFM(JROF,JLEV)
      !NYC-NH   PREHYDSPRE(JROF,JLEV)=PREHYDSPRE(JROF,JLEV)&
      !NYC-NH    & +(PALPH5(JROF,JLEV)*(PRT5L(JROF,JLEV)+PNH15L(JROF,JLEV))&
      !NYC-NH    & +PALPH5L(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV))*PHIFM(JROF,JLEV)
      !NYC-NH ENDDO
    ENDIF
    ! In the hydrostatic model, ZNH1L, ZNH1M, PNH15L, PNH15M and PREHYDSPRE are 0,
    ! so the corresponding contributions are added only in the NH model.
    DO JROF=KD,KF
      ! zonal
      PHIHL(JROF,JLEV)=PHIHL(JROF,JLEV)+PHIFL(JROF,JLEV)
      PALPH(JROF,JLEV)=PALPH(JROF,JLEV)+PREHYDSPRE5(JROF,JLEV)&
       & *PRT5L(JROF,JLEV)*PHIFL(JROF,JLEV)
      PRTL(JROF,JLEV)=PRTL(JROF,JLEV)&
       & +PALPH5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*PHIFL(JROF,JLEV)
      PALPHL(JROF,JLEV)=PALPHL(JROF,JLEV)&
       & +PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV)*PHIFL(JROF,JLEV)
      PR(JROF,JLEV)=PR(JROF,JLEV)+PALPH5L(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*PT5(JROF,JLEV)*PHIFL(JROF,JLEV)
      PT(JROF,JLEV)=PT(JROF,JLEV)+PALPH5L(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*PHIFL(JROF,JLEV)
      ! meridian
      PHIHM(JROF,JLEV)=PHIHM(JROF,JLEV)+PHIFM(JROF,JLEV)
      PALPH(JROF,JLEV)=PALPH(JROF,JLEV)+PREHYDSPRE5(JROF,JLEV)&
       & *PRT5M(JROF,JLEV)*PHIFM(JROF,JLEV)
      PRTM(JROF,JLEV)=PRTM(JROF,JLEV)&
       & +PALPH5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*PHIFM(JROF,JLEV)
      PALPHM(JROF,JLEV)=PALPHM(JROF,JLEV)&
       & +PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV)*PHIFM(JROF,JLEV)
      PR(JROF,JLEV)=PR(JROF,JLEV)+PALPH5M(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*PT5(JROF,JLEV)*PHIFM(JROF,JLEV)
      PT(JROF,JLEV)=PT(JROF,JLEV)+PALPH5M(JROF,JLEV)&
       & *PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*PHIFM(JROF,JLEV)
    ENDDO
  ENDDO
ENDIF

!*    2.1 Calculation of "rssavnabla (gz)" on interlayers.
!         ("delta" and "rssavnabla delta" terms contributions.

DO JLEV=1,KFLEV
  IF (LDNHDYN) THEN
    ! Not yet coded (following code to be activated later)
    !NYC-NH DO JROF=KD,KF
    !NYC-NH   ! zonal
    !NYC-NH   ZNH1L(JROF,JLEV)=ZNH1L(JROF,JLEV)&
    !NYC-NH    & +PLNPR5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*PHIHL(JROF,JLEV-1)
    !NYC-NH   PLNPR(JROF,JLEV)=PLNPR(JROF,JLEV)+PREHYDSPRE5(JROF,JLEV)&
    !NYC-NH    & *PNH15L(JROF,JLEV)*PHIHL(JROF,JLEV-1)
    !NYC-NH   PREHYDSPRE(JROF,JLEV)=PREHYDSPRE(JROF,JLEV)+&
    !NYC-NH    & (PLNPR5(JROF,JLEV)*(PRT5L(JROF,JLEV)+PNH15L(JROF,JLEV))&
    !NYC-NH    & +PLNPR5L(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV))*PHIHL(JROF,JLEV-1)
    !NYC-NH   ! meridian
    !NYC-NH   ZNH1M(JROF,JLEV)=ZNH1M(JROF,JLEV)&
    !NYC-NH    & +PLNPR5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*PHIHM(JROF,JLEV-1)
    !NYC-NH   PLNPR(JROF,JLEV)=PLNPR(JROF,JLEV)+PREHYDSPRE5(JROF,JLEV)&
    !NYC-NH    & *PNH15M(JROF,JLEV)*PHIHM(JROF,JLEV-1)
    !NYC-NH   PREHYDSPRE(JROF,JLEV)=PREHYDSPRE(JROF,JLEV)+&
    !NYC-NH    & (PLNPR5(JROF,JLEV)*(PRT5M(JROF,JLEV)+PNH15M(JROF,JLEV))&
    !NYC-NH    & +PLNPR5M(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV))*PHIHM(JROF,JLEV-1)
    !NYC-NH ENDDO
  ENDIF
  ! In the hydrostatic model, ZNH1L, ZNH1M, PNH15L, PNH15M and PREHYDSPRE are 0,
  ! so the corresponding contributions are added only in the NH model.
  DO JROF=KD,KF
    ! zonal
    PHIHL(JROF,JLEV)=PHIHL(JROF,JLEV)+PHIHL(JROF,JLEV-1)
    PLNPR(JROF,JLEV)=PLNPR(JROF,JLEV)+PREHYDSPRE5(JROF,JLEV)&
     & *PRT5L(JROF,JLEV)*PHIHL(JROF,JLEV-1)
    PRTL(JROF,JLEV)=PRTL(JROF,JLEV)&
     & +PLNPR5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*PHIHL(JROF,JLEV-1)
    PLNPRL(JROF,JLEV)=PLNPRL(JROF,JLEV)&
     & +PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV)*PHIHL(JROF,JLEV-1)
    PR(JROF,JLEV)=PR(JROF,JLEV)+PLNPR5L(JROF,JLEV)&
     & *PREHYDSPRE5(JROF,JLEV)*PT5(JROF,JLEV)*PHIHL(JROF,JLEV-1)
    PT(JROF,JLEV)=PT(JROF,JLEV)+PLNPR5L(JROF,JLEV)&
     & *PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*PHIHL(JROF,JLEV-1)
    ! meridian
    PHIHM(JROF,JLEV)=PHIHM(JROF,JLEV)+PHIHM(JROF,JLEV-1)
    PLNPR(JROF,JLEV)=PLNPR(JROF,JLEV)+PREHYDSPRE5(JROF,JLEV)&
     & *PRT5M(JROF,JLEV)*PHIHM(JROF,JLEV-1)
    PRTM(JROF,JLEV)=PRTM(JROF,JLEV)&
     & +PLNPR5(JROF,JLEV)*PREHYDSPRE5(JROF,JLEV)*PHIHM(JROF,JLEV-1)
    PLNPRM(JROF,JLEV)=PLNPRM(JROF,JLEV)&
     & +PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*PT5(JROF,JLEV)*PHIHM(JROF,JLEV-1)
    PR(JROF,JLEV)=PR(JROF,JLEV)+PLNPR5M(JROF,JLEV)&
     & *PREHYDSPRE5(JROF,JLEV)*PT5(JROF,JLEV)*PHIHM(JROF,JLEV-1)
    PT(JROF,JLEV)=PT(JROF,JLEV)+PLNPR5M(JROF,JLEV)&
     & *PREHYDSPRE5(JROF,JLEV)*PR5(JROF,JLEV)*PHIHM(JROF,JLEV-1)
  ENDDO
ENDDO

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

!*    1. Computation of term:
!        R[l] T[l] {(rssavnabla(prehyd)/prehyd)[l] - (rssavnabla(pre)/pre)[l]}
!        according to "lnhdyn".

IF (LDNHDYN) THEN

  ! Not yet coded (following code to be activated later)
  !NYC-NH DO JLEV=1,KFLEV
  !NYC-NH   ! zonal
  !NYC-NH   PR(KD:KF,JLEV)=PR(KD:KF,JLEV) &
  !NYC-NH    & -PT5(KD:KF,JLEV)*PQCHA5L(KD:KF,JLEV)*ZNH1L(KD:KF,JLEV)
  !NYC-NH   PT(KD:KF,JLEV)=PT(KD:KF,JLEV) &
  !NYC-NH    & -PR5(KD:KF,JLEV)*PQCHA5L(KD:KF,JLEV)*ZNH1L(KD:KF,JLEV)
  !NYC-NH   PQCHAL(KD:KF,JLEV)=PQCHAL(KD:KF,JLEV) &
  !NYC-NH    & -PR5(KD:KF,JLEV)*PT5(KD:KF,JLEV)*ZNH1L(KD:KF,JLEV)
  !NYC-NH   ! meridian
  !NYC-NH   PR(KD:KF,JLEV)=PR(KD:KF,JLEV) &
  !NYC-NH    & -PT5(KD:KF,JLEV)*PQCHA5M(KD:KF,JLEV)*ZNH1M(KD:KF,JLEV)
  !NYC-NH   PT(KD:KF,JLEV)=PT(KD:KF,JLEV) &
  !NYC-NH    & -PR5(KD:KF,JLEV)*PQCHA5M(KD:KF,JLEV)*ZNH1M(KD:KF,JLEV)
  !NYC-NH   PQCHAM(KD:KF,JLEV)=PQCHAM(KD:KF,JLEV) &
  !NYC-NH    & -PR5(KD:KF,JLEV)*PT5(KD:KF,JLEV)*ZNH1M(KD:KF,JLEV)
  !NYC-NH ENDDO

ENDIF

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

!*    0.  Final set to zero.

PHIFL(KD:KF,1:KFLEV)=0.0_JPRB
PHIFM(KD:KF,1:KFLEV)=0.0_JPRB
PHIHL(KD:KF,0:KFLEV)=0.0_JPRB
PHIHM(KD:KF,0:KFLEV)=0.0_JPRB

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

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