SUBROUTINE LADINETL(KSTART,KPROF,KASLB1,KPROMA,KFLDN,KFLDX,&
 & PCOLON,PSILON,PGEMU,PGSQM2,PGECLO,&
 & PGESLO,PGNORDL,PGNORDM,PINDX,PINDY,&
 & PURL0,PVRL0,PURL,PVRL,&
 & PUL0,PVL0,PCL0,PUL9,PVL9,PCL9,&
 & PURL05,PVRL05,PURL5,PVRL5,&
 & PUL05,PVL05,PCL05,PUL95,PVL95,PCL95,&
 & PUSI,PVSI,PUSI5,PVSI5,PUT1,PVT1,PSPT1,PUT15,PVT15 )  

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

USE YOMDIM   , ONLY : NDGSAG   ,NDGSAL   ,NDGENG   ,NDGENL   ,&
 & NDGSAH   ,NDGENH  
USE YOMCT0   , ONLY : LRPLANE
USE YOMDYN   , ONLY : NVLAG    ,NWLAG    ,NITMP    ,LADVF    ,LQMHW    ,&
 & LQMHP    ,LSETTLST ,L2TLFF   ,LELTRA  
USE YOMCST   , ONLY : RPI      ,ROMEGA   ,RA
USE YOMLEG   , ONLY : RLATI    ,RIPI0    ,RIPI1    ,RIPI2
USE YOMGEM   , ONLY : NLOENG   ,NSTTYP   ,&
 & RMUCEN   ,RLOCEN   ,RSTRET   ,R4JP     ,RC2P1    ,RC2M1  
USE YOMRIP   , ONLY : RDTSA    ,RDTS62   ,RDTS22   ,RTDT
USE YOMSC2   , ONLY : NSLWIDE
USE YOMMP    , ONLY : NSLOFF   ,NFRSTLOFF

!**** *LADINETL* - semi-LAgrangian scheme:   (tangent-linear version)
!                Interface subroutine for interpolations and lagrangian
!                trends. (Programme INterface d'Ensemble).
!                2D Shallow water.

!     Purpose.
!     --------
!           Grid point calculations in dynamics.

!           Computes the medium point M and origin point O.
!           Does interpolations at O.
!           Computes lagrangian trends.

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

!        Explicit arguments :
!        --------------------

!        INPUT:
!          KSTART  - first element of arrays where
!                    computations are performed.
!          KPROF   - depth of work.
!          KASLB1  - horizontal dimension for semi-Lagrangian buffer.
!          KPROMA  - horizontal dimension.
!          KFLDN   - number of the first field for semi-lag variables.
!          KFLDX   - number of the last field for semi-lag variables.
!          PCOLON  - cosine of the grid-point longitude on the
!                    computational sphere.
!          PSILON  - sine of the grid-point longitude on the
!                    computational sphere.
!          PGEMU   - sine of the grid-point geographical latitude.
!          PGSQM2  - cosine of the grid-point geographical latitude.
!          PGECLO  - cosine of the grid-point geographical longitude.
!          PGESLO  - sine of the grid-point geographical longitude.
!          PGNORDL - zonal component of the normalized vector directed
!                    towards the geographical north pole.
!          PGNORDM - meridian component of the normalized vector directed
!                    towards the geographical north pole.
!          PINDX   - x coordinate on the plane.
!          PINDY   - y coordinate on the plane.
!          PURL0   - U-component of the wind, to be interpolated.
!          PVRL0   - V-component of the wind, to be interpolated.
!          PURL    - U-component of the wind for research of medium point.
!          PVRL    - V-component of the wind for research of medium point.
!          PUL0    - Quantity to interpolate linearly at O in the
!                    U-wind equation if NWLAG=3.
!          PVL0    - Quantity to interpolate linearly at O in the
!                    V-wind equation if NWLAG=3.
!          PCL0    - Quantity to interpolate linearly at O in the
!                    continuity equation if NVLAG=3.
!          PUL9    - Quantity to interpolate at O in the U-wind equation.
!          PVL9    - Quantity to interpolate at O in the V-wind equation.
!          PCL9    - Quantity to interpolate at O in the continuity equation.
!          PUSI    - Semi-implicit term in the U-wind equation  ) needed for 
!          PVSI    - Semi-implicit term in the V-wind equation  ) L2TLFF
! ---------------------------- trajectory variables ----------------------
!          PURL05  - U-component of the wind, to be interpolated.
!          PVRL05  - V-component of the wind, to be interpolated.
!          PURL5   - U-component of the wind for research of medium point.
!          PVRL5   - V-component of the wind for research of medium point.
!          PUL05   - Quantity to interpolate linearly at O in the
!                    U-wind equation if NWLAG=3.
!          PVL05   - Quantity to interpolate linearly at O in the
!                    V-wind equation if NWLAG=3.
!          PCL05   - Quantity to interpolate linearly at O in the
!                    continuity equation if NVLAG=3.
!          PUL95   - Quantity to interpolate at O in the U-wind equation.
!          PVL95   - Quantity to interpolate at O in the V-wind equation.
!          PCL95   - Quantity to interpolate at O in the continuity equation.
!          PUSI5   - Semi-implicit term in the U-equation  ) needed for 
!          PVSI5   - Semi-implicit term in the V-equation  ) L2TLFF
!          PUT15   - t+dt U-wind                           )
!          PVT15   - t+dt V-wind                           )
! ------------------------------------------------------------------------

!        INPUT/OUTPUT:
!          PUT1    - t+dt U-wind.
!          PVT1    - t+dt V-wind.
!          PSPT1   - t+dt equivalent height.

!        Implicit arguments :
!        --------------------

!     Method.
!     -------

!     Externals.    LARMES2TL-Computes the medium point coordinates then
!     ----------              interpolations at this point.
!                   LAINOR2TL-Computes the origin point coordinates then
!                             interpolations at this point.
!                   Called by CPG2LAGTL.

!     Reference.
!     ----------
!        ARPEGE documentation vol 2 ch 1 and vol 3 ch 6

!     Author.
!     -------
!        C. Temperton (ECMWF)

!     Modifications.
!     --------------
!   Original : 98/06/15
!   Modified 98-12-15 by C.Temperton: Cleaning, following LADINE.
!   Modified 99-01-07 by C.Temperton: LCORAN option added.
!   Modified 99-02-09 by C.Temperton: allow LELTRA for trajectory
!    together with LSETTLS for RHS; fixes for LCUTRA
!   Modified 99-06-16 by C.Temperton: L2TLFF option added.
!   Modified 00-03-07 by C.Temperton: Bugfixes
!   Modified 01-08-30 by K. YESSAD: pruning and some other cleanings.
!   R. El Khatib : 01-08-07 Pruning options
!   M.Hamrud      01-Oct-2003 CY28 Cleaning
!   N. Wedi and K. Yessad (Jan 2008): different dev for NH model and PC scheme
!   K. Yessad Nov 2008: rationalisation of dummy argument interfaces
!     ------------------------------------------------------------------

IMPLICIT NONE

INTEGER(KIND=JPIM),INTENT(IN)    :: KASLB1 
INTEGER(KIND=JPIM),INTENT(IN)    :: KPROMA 
INTEGER(KIND=JPIM),INTENT(IN)    :: KFLDN 
INTEGER(KIND=JPIM),INTENT(IN)    :: KFLDX 
INTEGER(KIND=JPIM),INTENT(IN)    :: KSTART 
INTEGER(KIND=JPIM),INTENT(IN)    :: KPROF 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCOLON(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PSILON(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PGEMU(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PGSQM2(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PGECLO(KPROMA)
REAL(KIND=JPRB)   ,INTENT(IN)    :: PGESLO(KPROMA)
REAL(KIND=JPRB)   ,INTENT(IN)    :: PGNORDL(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PGNORDM(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PINDX(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PINDY(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PURL0(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVRL0(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PURL(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVRL(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUL0(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVL0(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCL0(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUL9(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVL9(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCL9(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PURL05(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVRL05(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PURL5(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVRL5(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUL05(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVL05(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCL05(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUL95(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVL95(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCL95(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUSI(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVSI(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUSI5(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVSI5(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PUT1(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PVT1(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(INOUT) :: PSPT1(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUT15(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVT15(KPROMA) 
!     ------------------------------------------------------------------

! - trigonometric arrays.
REAL(KIND=JPRB) :: ZSINCO(KPROMA)
REAL(KIND=JPRB) :: ZCOSCO(KPROMA)
REAL(KIND=JPRB) :: ZSINLA(KPROMA)
REAL(KIND=JPRB) :: ZCOPHI(KPROMA)
REAL(KIND=JPRB) :: ZP    (KPROMA)
REAL(KIND=JPRB) :: ZQ    (KPROMA)
REAL(KIND=JPRB) :: ZR    (KPROMA)
REAL(KIND=JPRB) :: ZS    (KPROMA)
REAL(KIND=JPRB) :: ZSINCO5(KPROMA)
REAL(KIND=JPRB) :: ZCOSCO5(KPROMA)
REAL(KIND=JPRB) :: ZSINLA5(KPROMA)
REAL(KIND=JPRB) :: ZCOPHI5(KPROMA)
REAL(KIND=JPRB) :: ZP5    (KPROMA)
REAL(KIND=JPRB) :: ZQ5    (KPROMA)
REAL(KIND=JPRB) :: ZR5    (KPROMA)
REAL(KIND=JPRB) :: ZS5    (KPROMA)
REAL(KIND=JPRB) :: ZLON   (KPROMA)
REAL(KIND=JPRB) :: ZLAT   (KPROMA)
REAL(KIND=JPRB) :: ZLSDEPI(NDGSAH:NDGENH)
REAL(KIND=JPRB) :: ZLON5  (KPROMA)
REAL(KIND=JPRB) :: ZLAT5  (KPROMA)
! - interpolated quantities arrays.
REAL(KIND=JPRB) :: ZU9(KPROMA)
REAL(KIND=JPRB) :: ZV9(KPROMA)
REAL(KIND=JPRB) :: ZC9(KPROMA)
REAL(KIND=JPRB) :: ZZUZ9(KPROMA)         ! To allow L2TLFF option
REAL(KIND=JPRB) :: ZZVZ9(KPROMA)         ! To allow L2TLFF option
REAL(KIND=JPRB) :: ZU95(KPROMA)
REAL(KIND=JPRB) :: ZV95(KPROMA)
REAL(KIND=JPRB) :: ZC95(KPROMA)
REAL(KIND=JPRB) :: ZZUZ95(KPROMA)         ! To allow L2TLFF option
REAL(KIND=JPRB) :: ZZVZ95(KPROMA)         ! To allow L2TLFF option
REAL(KIND=JPRB) :: ZUT15(KPROMA)
REAL(KIND=JPRB) :: ZVT15(KPROMA)

INTEGER(KIND=JPIM) :: ISTALAT(NDGSAH:NDGENH)

INTEGER(KIND=JPIM) :: IGLGLO, JGL, JROF

LOGICAL :: LLSETTLST

REAL(KIND=JPRB) :: ZCOPH, ZDEPI, ZDSTRET, ZPHI, ZPIS2, ZPP,&
 & ZPP5, ZQQ, ZQQ5, ZSINX, ZZUT1, ZZVT1, &
 & ZPP9, ZQQ9, ZPP1, ZQQ1, ZPP95, ZQQ95, &
 & ZZUT15, ZZVT15, ZPHI5, ZCOPH5, ZSINX5  
REAL(KIND=JPRB) :: ZHOOK_HANDLE

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

#include "laconetl.intfb.h"
#include "lainor2tl.intfb.h"
#include "larchetl.intfb.h"
#include "larmes2tl.intfb.h"

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

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

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

!*       1.    PRELIMINARY INITIALISATIONS:
!              ----------------------------

ZDEPI  =2.0_JPRB*RPI
ZPIS2  =0.5_JPRB*RPI

ZDSTRET=2.0_JPRB*RSTRET
DO JGL=MAX(NDGSAG,NDGSAL+NFRSTLOFF-NSLWIDE)-NFRSTLOFF,&
   & MIN(NDGENG,NDGENL+NFRSTLOFF+NSLWIDE)-NFRSTLOFF  
  IGLGLO=JGL+NFRSTLOFF
  ZLSDEPI(JGL)=REAL(NLOENG(IGLGLO),JPRB)/ZDEPI
ENDDO

DO JGL=MAX(NDGSAH,LBOUND(NSLOFF,1)),MIN(NDGENH,UBOUND(NSLOFF,1)) 
  ISTALAT(JGL)=NSLOFF(JGL)
ENDDO

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

!*       2.    COMPUTATION OF THE MEDIUM POINT AND
!              INTERPOLATIONS AT THIS POINT.
!              ------------------------------------

LLSETTLST=LSETTLST.AND.(.NOT.LELTRA)
CALL LARMES2TL(KASLB1,KPROMA,KSTART,KPROF,NDGSAH,NDGENH,KFLDN,KFLDX,&
 & ISTALAT,&
 & NVLAG,NWLAG,NITMP,&
 & LRPLANE,LLSETTLST,LELTRA,&
 & PURL0,PVRL0,PURL,PVRL,&
 & PURL05,PVRL05,PURL5,PVRL5,&
 & NSTTYP,ZDSTRET,RC2M1,RC2P1,R4JP,RPI,ZDEPI,ZPIS2,&
 & RDTSA,RDTS62,RDTS22,&
 & RLOCEN,RMUCEN,ZLSDEPI,RLATI(NDGSAH),RIPI0(NDGSAH),&
 & RIPI1(NDGSAH),RIPI2(NDGSAH),&
 & PCOLON,PSILON,PGEMU,PGSQM2,PGECLO,PGESLO,&
 & PGNORDL,PGNORDM,&
 & ZLON,ZLAT,&
 & ZCOSCO,ZSINCO,ZSINLA,ZCOPHI,&
 & ZR,ZS,&
 & ZLON5,ZLAT5,&
 & ZCOSCO5,ZSINCO5,ZSINLA5,ZCOPHI5,&
 & ZR5,ZS5)  

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

!*       3.    COMPUTATION OF THE ORIGIN POINT AND
!              INTERPOLATIONS AT THIS POINT.
!              ------------------------------------

CALL LAINOR2TL(KASLB1,KPROMA,KSTART,KPROF,NDGSAH,NDGENH,KFLDN,KFLDX,&
 & ISTALAT,&
 & NVLAG,NWLAG,&
 & LRPLANE,LQMHW,LQMHP,&
 & PUL9,PVL9,PCL9,PUL0,PVL0,PCL0,&
 & PUL95,PVL95,PCL95,PUL05,PVL05,PCL05,&
 & PINDX,PINDY,&
 & NSTTYP,ZDSTRET,RC2M1,RC2P1,R4JP,RPI,ZDEPI,ZPIS2,&
 & RLOCEN,RMUCEN,ZLSDEPI,RLATI(NDGSAH),RIPI0(NDGSAH),&
 & RIPI1(NDGSAH),RIPI2(NDGSAH),&
 & PCOLON,PSILON,PGEMU,PGSQM2,PGECLO,PGESLO,&
 & ZCOSCO,ZSINCO,ZSINLA,ZCOPHI,&
 & ZCOSCO5,ZSINCO5,ZSINLA5,ZCOPHI5,&
 & ZLON,ZLAT,&
 & ZP,ZQ,&
 & ZU9,ZV9,ZC9,&
 & ZLON5,ZLAT5,&
 & ZP5,ZQ5,&
 & ZU95,ZV95,ZC95,&
 & ZZUZ9,ZZVZ9,ZZUZ95,ZZVZ95)  

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

!*       4.    COMPUTATION OF LAGRANGIAN TRENDS.
!              ---------------------------------

!*       4.1   MOMENTUM EQUATION.

DO JROF=KSTART,KPROF
  ZPP5=ZP5(JROF)*PGNORDM(JROF)-ZQ5(JROF)*PGNORDL(JROF)
  ZQQ5=ZQ5(JROF)*PGNORDM(JROF)+ZP5(JROF)*PGNORDL(JROF)
  ZPP=ZP(JROF)*PGNORDM(JROF)-ZQ(JROF)*PGNORDL(JROF)
  ZQQ=ZQ(JROF)*PGNORDM(JROF)+ZP(JROF)*PGNORDL(JROF)
  ZUT15(JROF) = PUT15(JROF) + ZPP5*ZU95(JROF) + ZQQ5*ZV95(JROF)
  ZVT15(JROF) = PVT15(JROF) + ZPP5*ZV95(JROF) - ZQQ5*ZU95(JROF)
  PUT1(JROF) = PUT1(JROF) + ZPP5*ZU9(JROF) + ZQQ5*ZV9(JROF)&
   & + ZPP*ZU95(JROF) + ZQQ*ZV95(JROF)  
  PVT1(JROF) = PVT1(JROF) - ZQQ5*ZU9(JROF) + ZPP5*ZV9(JROF)&
   & - ZQQ*ZU95(JROF) + ZPP*ZV95(JROF)  
ENDDO

IF (LADVF) THEN     !! LRPLANE version not done !!

  CALL LACONETL(KPROMA,KSTART,KPROF,1,NSTTYP,&
   & ROMEGA,ZDSTRET,RC2M1,RC2P1,RMUCEN,&
   & RA,RPI,ZLON5,ZLAT5,ZU95,ZV95,ZLON,ZLAT,ZU9,ZV9)  

  DO JROF=KSTART,KPROF
    ZPP5=ZP5(JROF)*PGNORDM(JROF)-ZQ5(JROF)*PGNORDL(JROF)
    ZQQ5=ZQ5(JROF)*PGNORDM(JROF)+ZP5(JROF)*PGNORDL(JROF)
    ZPP=ZP(JROF)*PGNORDM(JROF)-ZQ(JROF)*PGNORDL(JROF)
    ZQQ=ZQ(JROF)*PGNORDM(JROF)+ZP(JROF)*PGNORDL(JROF)
    ZUT15(JROF) = ZUT15(JROF) + ZPP5*ZU95(JROF) + ZQQ5*ZV95(JROF)
    ZVT15(JROF) = ZVT15(JROF) - ZQQ5*ZU95(JROF) + ZPP5*ZV95(JROF)
    PUT1(JROF) = PUT1(JROF) + ZPP5*ZU9(JROF) + ZQQ5*ZV9(JROF)&
     & + ZPP*ZU95(JROF) + ZQQ*ZV95(JROF)  
    PVT1(JROF) = PVT1(JROF) - ZQQ5*ZU9(JROF) + ZPP5*ZV9(JROF)&
     & - ZQQ*ZU95(JROF) + ZPP*ZV95(JROF)  
  ENDDO

ENDIF

IF (L2TLFF) THEN  !! LRPLANE version not done !!

! * compute new origin point:
  DO JROF=KSTART,KPROF
!   * old rotation and vector deplacement:
    ZPP5=ZP5(JROF)*PGNORDM(JROF)-ZQ5(JROF)*PGNORDL(JROF)
    ZQQ5=ZQ5(JROF)*PGNORDM(JROF)+ZP5(JROF)*PGNORDL(JROF)
    ZPP95=ZP5(JROF)
    ZQQ95=ZQ5(JROF)
    ZPP=ZP(JROF)*PGNORDM(JROF)-ZQ(JROF)*PGNORDL(JROF)
    ZQQ=ZQ(JROF)*PGNORDM(JROF)+ZP(JROF)*PGNORDL(JROF)
    ZPP9=ZP(JROF)
    ZQQ9=ZQ(JROF)
    ZPP1=PGNORDM(JROF)
    ZQQ1=-PGNORDL(JROF)
!   * new estimate of trajectory wind:
    ZZUT15=0.5_JPRB*(&
     & ZPP1*(ZUT15(JROF)-PUSI5(JROF))+ZQQ1*(ZVT15(JROF)-PVSI5(JROF))&
     & +ZPP95*ZZUZ95(JROF)+ZQQ95*ZZVZ95(JROF))  
    ZZVT15=0.5_JPRB*(&
     & -ZQQ1*(ZUT15(JROF)-PUSI5(JROF))+ZPP1*(ZVT15(JROF)-PVSI5(JROF))&
     & -ZQQ95*ZZUZ95(JROF)+ZPP95*ZZVZ95(JROF))  
    ZZUT1=0.5_JPRB*(&
     & ZPP1*(PUT1(JROF)-PUSI(JROF))+ZQQ1*(PVT1(JROF)-PVSI(JROF))&
     & +ZPP9*ZZUZ95(JROF)+ZQQ9*ZZVZ95(JROF)&
     & +ZPP95*ZZUZ9(JROF)+ZQQ95*ZZVZ9(JROF))  
    ZZVT1=0.5_JPRB*(&
     & -ZQQ1*(PUT1(JROF)-PUSI(JROF))+ZPP1*(PVT1(JROF)-PVSI(JROF))&
     & -ZQQ9*ZZUZ95(JROF)+ZPP9*ZZVZ95(JROF)&
     & -ZQQ95*ZZUZ9(JROF)+ZPP95*ZZVZ9(JROF))  
!   * subtract old estimate of advected Coriolis term:
    PUT1(JROF) = PUT1(JROF) - ZPP5*ZU9(JROF) - ZQQ5*ZV9(JROF) &
     & - ZPP*ZU95(JROF) - ZQQ*ZV95(JROF)  
    PVT1(JROF) = PVT1(JROF) + ZQQ5*ZU9(JROF) - ZPP5*ZV9(JROF) &
     & + ZQQ*ZU95(JROF) - ZPP*ZV95(JROF)  
!   * compute new origin point:
    ZPHI5=0.5_JPRB*RTDT*SQRT(ZZUT15*ZZUT15+ZZVT15*ZZVT15)/RA
    ZCOPH5=1.0_JPRB-0.5_JPRB*ZPHI5*ZPHI5
    ZSINX5=ZCOPH5*RTDT*(1.0_JPRB-ZPHI5*ZPHI5/6.0_JPRB)/RA
    ZSINLA5(JROF)=PGEMU(JROF)*(2.0_JPRB*ZCOPH5*ZCOPH5-1.0_JPRB)&
     & -ZZVT15*PGSQM2(JROF)*ZSINX5  
    ZCOSCO5(JROF)=PGSQM2(JROF)*(2.0_JPRB*ZCOPH5*ZCOPH5-1.0_JPRB)&
     & +ZZVT15*PGEMU(JROF)*ZSINX5  
    ZSINCO5(JROF)=-ZZUT15*ZSINX5
    ZCOPHI5(JROF)=2.0_JPRB*ZCOPH5*ZCOPH5-1.0_JPRB
    ZPHI=0.5_JPRB*RTDT*(ZZUT1*ZZUT15+ZZVT1*ZZVT15)&
     & /(RA*SQRT(ZZUT15*ZZUT15+ZZVT15*ZZVT15))  
    ZCOPH=-ZPHI*ZPHI5
    ZSINX=RTDT*(ZCOPH*(1.0_JPRB-ZPHI5*ZPHI5/6.0_JPRB)&
     & -ZCOPH5*ZPHI*ZPHI5/3.0_JPRB)/RA  
    ZSINLA(JROF)=PGEMU(JROF)*4.0_JPRB*ZCOPH*ZCOPH5&
     & -PGSQM2(JROF)*(ZZVT1*ZSINX5+ZZVT15*ZSINX)  
    ZCOSCO(JROF)=PGSQM2(JROF)*4.0_JPRB*ZCOPH*ZCOPH5&
     & +PGEMU(JROF)*(ZZVT1*ZSINX5+ZZVT15*ZSINX)  
    ZSINCO(JROF)=-ZZUT1*ZSINX5-ZZUT15*ZSINX
    ZCOPHI(JROF)=4.0_JPRB*ZCOPH*ZCOPH5
  ENDDO
! * compute rotation matrix and Coriolis term at the new origin point.
  CALL LARCHETL(KPROMA,KSTART,KPROF,1,NSTTYP,ZDSTRET,RC2M1,RC2P1,&
   & RPI,ZDEPI,RLOCEN,RMUCEN,PCOLON,PSILON,PGEMU,PGSQM2,PGECLO,&
   & PGESLO,ZCOSCO,ZSINCO,ZSINLA,ZCOPHI,ZCOSCO5,ZSINCO5,&
   & ZSINLA5,ZCOPHI5,1,ZLON,ZLAT,ZP,ZQ,ZLON5,ZLAT5,ZP5,ZQ5)  
  CALL LACONETL(KPROMA,KSTART,KPROF,1,NSTTYP,&
   & ROMEGA,ZDSTRET,RC2M1,RC2P1,RMUCEN,&
   & RA,RPI,ZLON5,ZLAT5,ZU95,ZV95,ZLON,ZLAT,ZU9,ZV9)  
! * add new estimate of advected Coriolis term:
  DO JROF=KSTART,KPROF
    ZPP5=ZP5(JROF)*PGNORDM(JROF)-ZQ5(JROF)*PGNORDL(JROF)
    ZQQ5=ZQ5(JROF)*PGNORDM(JROF)+ZP5(JROF)*PGNORDL(JROF)
    ZPP=ZP(JROF)*PGNORDM(JROF)-ZQ(JROF)*PGNORDL(JROF)
    ZQQ=ZQ(JROF)*PGNORDM(JROF)+ZP(JROF)*PGNORDL(JROF)
    PUT1(JROF) = PUT1(JROF) + ZPP5*ZU9(JROF) + ZQQ5*ZV9(JROF)&
     & + ZPP*ZU95(JROF) + ZQQ*ZV95(JROF)  
    PVT1(JROF) = PVT1(JROF) - ZQQ5*ZU9(JROF) + ZPP5*ZV9(JROF)&
     & - ZQQ*ZU95(JROF) + ZPP*ZV95(JROF)  
  ENDDO

ENDIF

!*       4.2   CONTINUITY EQUATION.

DO JROF=KSTART,KPROF
  PSPT1(JROF)=PSPT1(JROF)+ZC9(JROF)
ENDDO

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

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