SUBROUTINE LARCIN2(KASLB1,KPROMA,KSTART,KPROF,KGLN,KGLX,&
 & KFLDN,KFLDX,KDLUN,KDLUX,KDGUN,KDGUX,&
 & KSTABUF,&
 & KWISA,KXLAG,KROT,LDPLANE,&
 & LDQMHW,LDQMHP,&
 & KSTTYP,PDSTRET,PC2M1,PC2P1,P4JP,PI,PDEPI,PIS2,&
 & PLOCEN,PMUCEN,PLSDEPI,PLATI,PIPI0,PIPI1,PIPI2,&
 & PCOLON,PSILON,PGEMU,PGSQM2,PGECLO,PGESLO,&
 & PCOSCO,PSINCO,PSINLA,PCOPHI,&
 & PURL0,PVRL0,&
 & PUSL,PVSL,PCSL,PUSL2,PVSL2,PCSL2,&
 & PLON,PLAT,PO,PQ,&
 & PUF0,PVF0,&
 & PUF,PVF,PCF,&
 & PUFZ,PVFZ)  

!**** *LARCIN2 -  semi-LAgrangian scheme:
!                 Research of the Coordinates (of the medium or origin
!                 point) and INterpolations (2-d model).

!     Purpose.
!     --------
!       Computes the longitude and latitude of the interpolation
!       point from its cartesian coordinates.
!       Then computes the vector displacement matrix
!                        I po pq I
!                        I       I
!                        I-pq po I
!       from the interpolation point to the grid point.
!       At last determines the interpolation grid:
!       - computation of the latitude and the longitude of the
!         point situated at the upper left corner of the 16 points square,
!         and of the interpolation point.
!       - interpolations.

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

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

!        INPUT:
!          KASLB1  - horizontal dimension of SLBUF1
!          KPROMA  - horizontal dimension.
!          KSTART  - first element of arrays where
!                    computations are performed.
!          KPROF   - depth of work.
!          KGLN    - lower dimension for latitude.
!          KGLX    - upper dimension for latitude.
!          KFLDN   - number of the first field.
!          KFLDX   - number of the last field.
!          KDLUN   - first column on the cartesian plane grid.
!          KDLUX   - last  column on the cartesian plane grid.
!          KDGUN   - first row    on the cartesian plane grid.
!          KDGUX   - last  row    on the cartesian plane grid.
!          KSTABUF - for a latitude IGL, KSTABUF(IGL) is the
!                    address of the element corresponding to
!                    (ILON=1,IGL) in the KPROMA arrays.
!          KWISA   - switch :
!                    KWISA=1: interpolations for wind to find trajectory.
!                    KWISA=3: origin point interp.
!          KXLAG   - array containing switches concerning discretisations
!                    of equations (NVLAG,NTLAG,NWLAG,NSVDLAG,NSPDLAG).
!                    Only KXLAG(1) and KXLAG(4) are used in the 2D model.
!          KROT    - KROT=1: computation of the elements po and pq
!                    of the wind displacement matrix.
!                    KROT=0: no computation.
!          LDPLANE - switch: .T. = plane geometry; .F. = spherical geometry.
!          LDQMH[X]- Use quasi-monotone interpolation in the horizontal
!                    for field X (Wind, eq. height).
!          KSTTYP  - 1: Not tilted pole;  2: Tilted pole.
!          PDSTRET - 2*c (where c is the stretching factor).
!          PC2M1   - c*c-1.
!          PC2P1   - c*c+1.
!          P4JP    - Approximative inverse of the differences of latitudes.
!          PI      - number PI
!          PDEPI   - 2 * PI
!          PIS2    - PI / 2
!          PLOCEN  - geographical longitude of the stretching pole.
!          PMUCEN  - sine of the geographical latitude of the stretching pole.
!          PLSDEPI - (Number of points by latitude) / (2 * PI) .
!          PLATI   - latitude on the computational sphere.
!          PIPI0   - coefficients for the bicubic interpolations.
!          PIPI1   -      "
!          PIPI2   -      "
!          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.
!          PCOSCO  - cos(Longitude-Longitude(grid-point))*cos(Latitude)
!                    of the interpolation point (geographical longitude
!                    and latitude).
!                    ! if LDPLANE: x - coordinate (fractional system).
!          PSINCO  - sin(Longitude-Longitude(grid-point))*cos(Latitude)
!                    of the interpolation point (geographical longitude
!                    and latitude).
!                    ! if LDPLANE: y - coordinate (fractional system).
!          PSINLA  - sine of the interpolation point geographical latitude.
!          PCOPHI  - cosine of the geographical angle between the
!                    interpolation point and the grid-point.
!          PURL0   - U-component of the wind.
!          PVRL0   - V-component of the wind.
!          PUSL    - Quantity to interpolate at O in the U-wind equation.
!          PVSL    - Quantity to interpolate at O in the V-wind equation.
!          PCSL    - Quantity to interpolate at O in the continuity equation.
!          PUSL2   - Second quantity to interpolate at O
!                    (if NWLAG=3) in the U-component of the wind equation.
!          PVSL2   - Second quantity to interpolate at O
!                    (if NWLAG=3) in the V-component of the wind equation.
!          PCSL2   - Second quantity to interpolate at O
!                    (if NVLAG=3) in the continuity equation.

!        OUTPUT:
!          PLON    - computational sphere longitude of interpolation point.
!          PLAT    - computational sphere latitude of interpolation point.
!          PO      - first element of the wind displacement matrix.
!          PQ      - second element of the wind displacement matrix.
!          PUF0    - Interpolated U-wind at the medium point.
!          PVF0    - Interpolated V-wind at the medium point.
!          PUF     - Interpolated quantity at O in the U-wind equation.
!          PVF     - Interpolated quantity at O in the V-wind equation.
!          PCF     - Interpolated quantity at O in the continuity equation.
!          PUFZ    - Interpolated quantity at O in the U-wind equation
!                    in the SL2TL scheme for case L2TLFF=.T.
!          PVFZ    - Interpolated quantity at O in the V-wind equation
!                    in the SL2TL scheme for case L2TLFF=.T.

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

!     Method.
!     -------
!        See documentation about semi-Lagrangian scheme.

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

!        Called by LARMES2, ELARMES2 and LAINOR2.
!        Calls LARCHE, LASCAW, ELARCHE, ELASCAW,
!              LAIDDI, LAIDLI.

!     Reference.
!     ----------

!     Author.
!     -------
!        C. Temperton (ECMWF), by simplification of LARCIN

!     Modifications.
!     --------------
!        Original : 98/01/19
!        Modified July 1998 by K. YESSAD and C. TEMPERTON: cleaning
!               - removal of the CUD-5 interpolations.
!               - removal of the useless dummy arguments. 
!               - complete declaration of dummy arguments.
!               - correction of false comments.
!               - improvement of code readability (indentation and numbering
!                 of comments for ex.).
!        Modified 01-08-30 by K. YESSAD: pruning and some other cleanings.
!        Modified 03-05-01 by A. Bogatchev: add arg in call elascaw
!   01-Oct-2003 M. Hamrud   CY28 Cleaning
!   ??-Nov-2004 F. Vana     update of arguments for (E)LASCAW
!        Modified 09-Jan-2007 by F. Vana: update of arguments for ELASCAW
!        Modified 28-Aug-2007 by F. Vana: update of arguments for (E)LASCAW
!   30-Jun-2008 J. Masek    Dataflow for new SLHD interpolators.
!   K. Yessad Nov 2008: rationalisation of dummy argument interfaces
!   K. Yessad Nov 2008: interpolation routines: merge QM with not-QM version.
! End Modifications
!-------------------------------------------------------------------------------

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

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

IMPLICIT NONE

INTEGER(KIND=JPIM),INTENT(IN)    :: KASLB1 
INTEGER(KIND=JPIM),INTENT(IN)    :: KPROMA 
INTEGER(KIND=JPIM),INTENT(IN)    :: KGLN 
INTEGER(KIND=JPIM),INTENT(IN)    :: KGLX 
INTEGER(KIND=JPIM),INTENT(IN)    :: KFLDN 
INTEGER(KIND=JPIM),INTENT(IN)    :: KFLDX 
INTEGER(KIND=JPIM),INTENT(IN)    :: KSTART 
INTEGER(KIND=JPIM),INTENT(IN)    :: KPROF 
INTEGER(KIND=JPIM),INTENT(IN)    :: KDLUN 
INTEGER(KIND=JPIM),INTENT(IN)    :: KDLUX 
INTEGER(KIND=JPIM),INTENT(IN)    :: KDGUN 
INTEGER(KIND=JPIM),INTENT(IN)    :: KDGUX 
INTEGER(KIND=JPIM),INTENT(IN)    :: KSTABUF(KGLN:KGLX) 
INTEGER(KIND=JPIM),INTENT(IN)    :: KWISA 
INTEGER(KIND=JPIM),INTENT(IN)    :: KXLAG(6) 
INTEGER(KIND=JPIM),INTENT(IN)    :: KROT 
LOGICAL           ,INTENT(IN)    :: LDPLANE 
LOGICAL           ,INTENT(IN)    :: LDQMHW 
LOGICAL           ,INTENT(IN)    :: LDQMHP 
INTEGER(KIND=JPIM),INTENT(IN)    :: KSTTYP 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PDSTRET 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PC2M1 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PC2P1 
REAL(KIND=JPRB)   ,INTENT(IN)    :: P4JP 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PI 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PDEPI 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PIS2 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PLOCEN 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PMUCEN 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PLSDEPI(KGLN:KGLX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PLATI(KGLN:KGLX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PIPI0(KGLN:KGLX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PIPI1(KGLN:KGLX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PIPI2(KGLN:KGLX) 
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)    :: PCOSCO(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PSINCO(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PSINLA(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCOPHI(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PURL0(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVRL0(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUSL(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVSL(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCSL(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PUSL2(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PVSL2(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(IN)    :: PCSL2(KASLB1,KFLDN:KFLDX) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PLON(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PLAT(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PO(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PQ(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PUF0(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PVF0(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PUF(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PVF(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PCF(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PUFZ(KPROMA) 
REAL(KIND=JPRB)   ,INTENT(OUT)   :: PVFZ(KPROMA) 

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

REAL(KIND=JPRB) :: ZDLAT(KPROMA)
REAL(KIND=JPRB) :: ZCLA (KPROMA,1,3)
REAL(KIND=JPRB) :: ZDLO (KPROMA,1,0:3)
REAL(KIND=JPRB) :: ZCLO (KPROMA,1,3,2)
REAL(KIND=JPRB) :: ZUF  (KPROMA)
REAL(KIND=JPRB) :: ZVF  (KPROMA)
REAL(KIND=JPRB) :: ZTF  (KPROMA)

INTEGER(KIND=JPIM) :: IL0 (KPROMA,1,0:3)
INTEGER(KIND=JPIM) :: ILH0(KPROMA,1,0:3)
INTEGER(KIND=JPIM) :: IDEP (KPROMA,1)

INTEGER(KIND=JPIM) :: IHOR, IVLAG, IWIS, IWLAG, JROF

REAL(KIND=JPRB) :: ZHOOK_HANDLE

! unused arguments in call to LASCAW/ELASCAW
! a) input - array dimensions omitted
INTEGER(KIND=JPIM) :: IUN_VAUTF(1)
REAL(KIND=JPRB) :: ZUN_SLD1(1)
REAL(KIND=JPRB) :: ZUN_SLD2(1)
REAL(KIND=JPRB) :: ZUN_SLD3(1)
REAL(KIND=JPRB) :: ZUN_SLDW(1)
REAL(KIND=JPRB) :: ZUN_LEV(1)
REAL(KIND=JPRB) :: ZUN_VETAF(1)
REAL(KIND=JPRB) :: ZUN_VETAH(1)
REAL(KIND=JPRB) :: ZUN_VCUICO(1)
REAL(KIND=JPRB) :: ZUN_VSLD(1)
REAL(KIND=JPRB) :: ZUN_VSLDW(1)
REAL(KIND=JPRB) :: ZUN_KAPPA(1)
! b) output - array dimensions kept for safety
INTEGER(KIND=JPIM) :: IUN_LEV(KPROMA,1)
REAL(KIND=JPRB) :: ZUN_CLASLD(KPROMA,1,3)
REAL(KIND=JPRB) :: ZUN_CLOSLD(KPROMA,1,3,2)
REAL(KIND=JPRB) :: ZUN_DVER(KPROMA,1)
REAL(KIND=JPRB) :: ZUN_VINTW(KPROMA,1,3)
REAL(KIND=JPRB) :: ZUN_VINTWSLD(KPROMA,1,3)
REAL(KIND=JPRB) :: ZUN_VINTWS(KPROMA,1,1:4)
REAL(KIND=JPRB) :: ZUN_VDERW(KPROMA,1,0,0)  ! case KHVI=0
REAL(KIND=JPRB) :: ZUN_HVW(KPROMA,1,0)      ! case KHVI=0

LOGICAL         :: LLSLHD,LLSLHDQUAD

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

#include "abor1.intfb.h"
#include "elarche.intfb.h"
#include "elascaw.intfb.h"
#include "laiddi.intfb.h"
#include "laidli.intfb.h"
#include "larche.intfb.h"
#include "lascaw.intfb.h"

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

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

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

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

! Switching off the SLHD related weights computation (not coded for 2D model)
LLSLHD=.FALSE.
LLSLHDQUAD=.FALSE.

IHOR=0

! * I[X]LAG:
IVLAG=KXLAG(1)
IWLAG=KXLAG(4)

! * Input variable IWIS for LASCAW.
IF (KWISA == 1) THEN
! * trajectory research.
  IWIS=201
ELSEIF (KWISA == 3) THEN
! * origin point interpolations.
  IWIS=203
ELSE
  IWIS=-999
  CALL ABOR1('LARCIN2: WRONG VALUE FOR IWIS')
ENDIF

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

!*       2.    COMPUTATION OF LAT LON OF THE INTERPOLATION POINT.
!              IF KROT=1 COMPUTATION OF THE WIND DISPLACEMENT MATRIX
!              FROM THE INTERPOLATION POINT TO THE FINAL POINT.
!              ( T FOR LATITUDE THETA, L FOR LONGITUDE LAMBDA).
!              PO = ( 1 / (1+cos(PHI)) )
!                  *( cos(TG)*cos(T) + (1+sin(TG)*sin(T))*cos(L-LG) )
!              PQ = (-1 / (1+cos(PHI)) )
!                  *( sin(TG)+sin(T) ) * sin(L-LG)

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

IF (LDPLANE) THEN

  IF (KROT == 1) THEN
    CALL ELARCHE(KPROMA,KSTART,KPROF,1,&
     & PGEMU,PGSQM2,PGECLO,PGESLO,&
     & PCOSCO,PSINCO,PO,PQ,PLON,PLAT)  
  ENDIF

  CALL ELASCAW( &
   ! --- INPUT ----------------------------------------------------------------
   & KASLB1,KPROMA,KSTART,KPROF,1,1,KGLN,KGLX,&
   & KDLUN,KDLUX,KDGUN,KDGUX,&
   & KFLDN,KFLDX,KSTABUF,IWIS,IHOR,0,&
   & LLSLHD,LLSLHDQUAD,&
   & PCOSCO,PSINCO,ZUN_LEV,&
   & ZUN_VETAF,ZUN_VETAH,IUN_VAUTF,&
   & ZUN_VCUICO,ZUN_VSLD,ZUN_VSLDW,1,1.0_JPRB,ZUN_KAPPA,&
   ! --- OUTPUT ---------------------------------------------------------------
   & ZDLAT,ZCLA,ZUN_CLASLD,ZDLO,ZCLO,ZUN_CLOSLD,&
   & IL0,ILH0,IUN_LEV,&
   & ZUN_DVER,ZUN_VINTW,ZUN_VINTWSLD,ZUN_VINTWS,&
   & ZUN_VDERW,ZUN_HVW,IDEP)

ELSE

  CALL LARCHE(KPROMA,KSTART,KPROF,1,&
   & KSTTYP,PDSTRET,PC2M1,PC2P1,PI,PDEPI,&
   & PLOCEN,PMUCEN,PCOLON,PSILON,&
   & PGEMU,PGSQM2,PGECLO,PGESLO,&
   & PCOSCO,PSINCO,PSINLA,PCOPHI,&
   & KROT,PLON,PLAT,PO,PQ)  

  CALL LASCAW( &
   ! --- INPUT ----------------------------------------------------------------
   & KASLB1,KPROMA,KSTART,KPROF,1,1,KGLN,KGLX,&
   & KFLDN,KSTABUF,IWIS,IHOR,0,&
   & LLSLHD,LLSLHDQUAD,&
   & P4JP,PIS2,PLSDEPI,PLATI,&
   & PIPI0,PIPI1,PIPI2,ZUN_SLD1,ZUN_SLD2,ZUN_SLD3,ZUN_SLDW,&
   & PLON,PLAT,ZUN_LEV,&
   & ZUN_VETAF,ZUN_VETAH,IUN_VAUTF,&
   & ZUN_VCUICO,ZUN_VSLD,ZUN_VSLDW,1,1.0_JPRB,ZUN_KAPPA,&
   ! --- OUTPUT ---------------------------------------------------------------
   & ZDLAT,ZCLA,ZUN_CLASLD,ZDLO,ZCLO,ZUN_CLOSLD,&
   & IL0,ILH0,IUN_LEV,&
   & ZUN_DVER,ZUN_VINTW,ZUN_VINTWSLD,ZUN_VINTWS,&
   & ZUN_VDERW,ZUN_HVW)

ENDIF

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

!*       3.    INTERPOLATIONS OF WIND FOR TRAJECTORY RESEARCH.
!              -----------------------------------------------

IF (KWISA == 1) THEN

! * Bilinear interpolations.
  CALL LAIDLI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
   & KFLDX,ZDLAT,ZDLO(1,1,1),IL0(1,1,1),&
   & PURL0,PUF0)  
  CALL LAIDLI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
   & KFLDX,ZDLAT,ZDLO(1,1,1),IL0(1,1,1),&
   & PVRL0,PVF0)  

ENDIF

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

!*       5.    ORIGIN POINT INTERPOLATIONS.
!              ----------------------------

IF (KWISA == 3) THEN

  IF(.NOT.LDQMHW) THEN
    CALL LAIDDI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
     & KFLDX,0,ZCLA,ZDLO,ZCLO,IL0(1,1,0),&
     & PUSL,PUF)  
    CALL LAIDDI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
     & KFLDX,0,ZCLA,ZDLO,ZCLO,IL0(1,1,0),&
     & PVSL,PVF)  
  ELSE
    CALL LAIDDI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
     & KFLDX,1,ZCLA,ZDLO,ZCLO,IL0(1,1,0),&
     & PUSL,PUF)  
    CALL LAIDDI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
     & KFLDX,1,ZCLA,ZDLO,ZCLO,IL0(1,1,0),&
     & PVSL,PVF)  
  ENDIF
  IF(.NOT.LDQMHP) THEN
    CALL LAIDDI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
     & KFLDX,0,ZCLA,ZDLO,ZCLO,IL0(1,1,0),&
     & PCSL,PCF)  
  ELSE
    CALL LAIDDI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
     & KFLDX,1,ZCLA,ZDLO,ZCLO,IL0(1,1,0),&
     & PCSL,PCF)  
  ENDIF

  IF (IWLAG == 3) THEN
!   Save PUF,PVF in case of refined treatment of
!   Coriolis term in 2TL scheme:
    PUFZ(KSTART:KPROF)=PUF(KSTART:KPROF)
    PVFZ(KSTART:KPROF)=PVF(KSTART:KPROF)
    CALL LAIDLI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
     & KFLDX,ZDLAT,ZDLO(1,1,1),IL0(1,1,1),&
     & PUSL2,ZUF)  
    CALL LAIDLI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
     & KFLDX,ZDLAT,ZDLO(1,1,1),IL0(1,1,1),&
     & PVSL2,ZVF)  
    DO JROF=KSTART,KPROF
      PUF(JROF)=PUF(JROF)+ZUF(JROF)
      PVF(JROF)=PVF(JROF)+ZVF(JROF)
    ENDDO
  ENDIF

  IF (IVLAG == 3) THEN
    CALL LAIDLI(KASLB1,KPROMA,KSTART,KPROF,1,KFLDN,&
     & KFLDX,ZDLAT,ZDLO(1,1,1),IL0(1,1,1),&
     & PCSL2,ZTF)  
    DO JROF=KSTART,KPROF
      PCF(JROF)=PCF(JROF)+ZTF(JROF)
    ENDDO
  ENDIF

ENDIF

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

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

