diff --git a/src/common/turb/mode_tke_eps_sources.F90 b/src/common/turb/mode_tke_eps_sources.F90
index f8a0ddcf57af46c607e1adf61d59e88f2edfba93..9704ec8db2317d85f00cb4d5bf5a8984d70adf1a 100644
--- a/src/common/turb/mode_tke_eps_sources.F90
+++ b/src/common/turb/mode_tke_eps_sources.F90
@@ -292,8 +292,7 @@ ZA(:,:,:)     = - PTSTEP * CSTURB%XCET * ZMWORK1(:,:,:) * ZMWORK2(:,:,:) / PDZZ(
 !
 ! Compute TKE at time t+deltat: ( stored in ZRES )
 !
-CALL TRIDIAG_TKE(D,D%NKA,D%NKU,D%NKL,PTKEM,ZA,PTSTEP,PEXPL,PIMPL,PRHODJ,&
-            & ZSOURCE,PTSTEP*ZFLX,ZRES)
+CALL TRIDIAG_TKE(DPTKEM,ZA,PTSTEP,PEXPL,PIMPL,PRHODJ,ZSOURCE,PTSTEP*ZFLX,ZRES)
 CALL GET_HALO(ZRES)
 !
 !* diagnose the dissipation
diff --git a/src/common/turb/mode_tridiag.F90 b/src/common/turb/mode_tridiag.F90
index 81253f67f50f919dd1613d9d393b9772d4d16966..960c8b241163dbbc50e353644b4a40af8857e456 100644
--- a/src/common/turb/mode_tridiag.F90
+++ b/src/common/turb/mode_tridiag.F90
@@ -5,7 +5,7 @@
 MODULE MODE_TRIDIAG
 IMPLICIT NONE
 CONTAINS
-SUBROUTINE TRIDIAG(D,KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
+SUBROUTINE TRIDIAG(D,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
                                   PRHODJ,PSOURCE,PVARP )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -123,9 +123,6 @@ IMPLICIT NONE
 !*       0.1 declarations of arguments
 !
 TYPE(DIMPHYEX_t),          INTENT(IN)   :: D
-INTEGER,                   INTENT(IN)  :: KKA        !near ground array index  
-INTEGER,                   INTENT(IN)  :: KKU        !uppest atmosphere array index
-INTEGER,                   INTENT(IN)  :: KKL        !vert. levels type 1=MNH -1=ARO
 REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PVARM       ! variable at t-1  
 REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PA          ! upper diag. elements
 REAL,                      INTENT(IN)  :: PTSTEP      ! Double time step
@@ -162,19 +159,19 @@ IKB=D%NKB
 IKE=D%NKE  
 !
 ZY(:,:,IKB) = PVARM(:,:,IKB)  + PTSTEP*PSOURCE(:,:,IKB) -   &
-  PEXPL / PRHODJ(:,:,IKB) * PA(:,:,IKB+KKL) * (PVARM(:,:,IKB+KKL) - PVARM(:,:,IKB))
+  PEXPL / PRHODJ(:,:,IKB) * PA(:,:,IKB+D%NKL) * (PVARM(:,:,IKB+D%NKL) - PVARM(:,:,IKB))
 !
 DO JK=IKTB+1,IKTE-1
   ZY(:,:,JK)= PVARM(:,:,JK)  + PTSTEP*PSOURCE(:,:,JK) -               &
       PEXPL / PRHODJ(:,:,JK) *                                           &
-                             ( PVARM(:,:,JK-KKL)*PA(:,:,JK)                &
-                              -PVARM(:,:,JK)*(PA(:,:,JK)+PA(:,:,JK+KKL))   &
-                              +PVARM(:,:,JK+KKL)*PA(:,:,JK+KKL)              &
+                             ( PVARM(:,:,JK-D%NKL)*PA(:,:,JK)                &
+                              -PVARM(:,:,JK)*(PA(:,:,JK)+PA(:,:,JK+D%NKL))   &
+                              +PVARM(:,:,JK+D%NKL)*PA(:,:,JK+D%NKL)              &
                              ) 
 END DO
 ! 
 ZY(:,:,IKE)= PVARM(:,:,IKE) + PTSTEP*PSOURCE(:,:,IKE) +               &
-  PEXPL / PRHODJ(:,:,IKE) * PA(:,:,IKE) * (PVARM(:,:,IKE)-PVARM(:,:,IKE-KKL))
+  PEXPL / PRHODJ(:,:,IKE) * PA(:,:,IKE) * (PVARM(:,:,IKE)-PVARM(:,:,IKE-D%NKL))
 !
 !
 !*       2.  INVERSION OF THE TRIDIAGONAL SYSTEM
@@ -185,36 +182,36 @@ IF ( PIMPL > 1.E-10 ) THEN
   !
   !  going up
   !
-  ZBET(:,:) = 1. - PIMPL * PA(:,:,IKB+KKL) / PRHODJ(:,:,IKB)  ! bet = b(ikb)
+  ZBET(:,:) = 1. - PIMPL * PA(:,:,IKB+D%NKL) / PRHODJ(:,:,IKB)  ! bet = b(ikb)
   PVARP(:,:,IKB) = ZY(:,:,IKB) / ZBET(:,:)                
   !
-  DO JK = IKB+KKL,IKE-KKL,KKL
-      ZGAM(:,:,JK) = PIMPL * PA(:,:,JK) / PRHODJ(:,:,JK-KKL) / ZBET(:,:)  
+  DO JK = IKB+D%NKL,IKE-D%NKL,D%NKL
+      ZGAM(:,:,JK) = PIMPL * PA(:,:,JK) / PRHODJ(:,:,JK-D%NKL) / ZBET(:,:)  
                                                     ! gam(k) = c(k-1) / bet
     ZBET(:,:)    = 1. - PIMPL * (  PA(:,:,JK) * (1. + ZGAM(:,:,JK))  &
-                                 + PA(:,:,JK+KKL)                      &
+                                 + PA(:,:,JK+D%NKL)                      &
                                 ) / PRHODJ(:,:,JK)  
                                                     ! bet = b(k) - a(k)* gam(k)  
     PVARP(:,:,JK)= ( ZY(:,:,JK) - PIMPL * PA(:,:,JK) / PRHODJ(:,:,JK) &
-                    * PVARP(:,:,JK-KKL)                                 &
+                    * PVARP(:,:,JK-D%NKL)                                 &
                    ) / ZBET(:,:)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   END DO 
   ! special treatment for the last level
-  ZGAM(:,:,IKE) = PIMPL * PA(:,:,IKE) / PRHODJ(:,:,IKE-KKL) / ZBET(:,:) 
+  ZGAM(:,:,IKE) = PIMPL * PA(:,:,IKE) / PRHODJ(:,:,IKE-D%NKL) / ZBET(:,:) 
                                                     ! gam(k) = c(k-1) / bet
   ZBET(:,:)    = 1. - PIMPL * (  PA(:,:,IKE) * (1. + ZGAM(:,:,IKE))  &
                               ) / PRHODJ(:,:,IKE)  
                                                     ! bet = b(k) - a(k)* gam(k)  
   PVARP(:,:,IKE)= ( ZY(:,:,IKE) - PIMPL * PA(:,:,IKE) / PRHODJ(:,:,IKE) &
-                                * PVARP(:,:,IKE-KKL)                      &
+                                * PVARP(:,:,IKE-D%NKL)                      &
                  ) / ZBET(:,:)
                                        ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   !
   !  going down
   !
-  DO JK = IKE-KKL,IKB,-1*KKL
-    PVARP(:,:,JK) = PVARP(:,:,JK) - ZGAM(:,:,JK+KKL) * PVARP(:,:,JK+KKL) 
+  DO JK = IKE-D%NKL,IKB,-1*D%NKL
+    PVARP(:,:,JK) = PVARP(:,:,JK) - ZGAM(:,:,JK+D%NKL) * PVARP(:,:,JK+D%NKL) 
   END DO
 !
 ELSE
diff --git a/src/common/turb/mode_tridiag_thermo.F90 b/src/common/turb/mode_tridiag_thermo.F90
index 1e1f4402d3f0a95f4a81e75c2f5205fa8ea49c7e..c87a9c702066dc326c98fcb93a34d9edf13d6e76 100644
--- a/src/common/turb/mode_tridiag_thermo.F90
+++ b/src/common/turb/mode_tridiag_thermo.F90
@@ -5,7 +5,7 @@
 MODULE MODE_TRIDIAG_THERMO
 IMPLICIT NONE
 CONTAINS       
-SUBROUTINE TRIDIAG_THERMO(D,KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL,  &
+SUBROUTINE TRIDIAG_THERMO(D,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL,  &
                                  PDZZ,PRHODJ,PVARP             )
 !      #################################################
 !
@@ -129,9 +129,6 @@ IMPLICIT NONE
 !*       0.1 declarations of arguments
 !
 TYPE(DIMPHYEX_t),     INTENT(IN)   :: D
-INTEGER,              INTENT(IN)   :: KKA     !near ground array index  
-INTEGER,              INTENT(IN)   :: KKU     !uppest atmosphere array index
-INTEGER,              INTENT(IN)   :: KKL     !vert. levels type 1=MNH -1=ARO
 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PVARM   ! variable at t-1      at mass point
 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PF      ! flux in dT/dt=-dF/dz at flux point
 REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDFDDTDZ! dF/d(dT/dz)          at flux point
@@ -171,7 +168,7 @@ IKB=D%NKB
 IKE=D%NKE
 
 !
-ZMZM_RHODJ  = MZM(PRHODJ,KKA,KKU,KKL)
+ZMZM_RHODJ  = MZM(PRHODJ,D%NKA,D%NKU,D%NKL)
 ZRHODJ_DFDDTDZ_O_DZ2 = ZMZM_RHODJ*PDFDDTDZ/PDZZ**2
 !
 ZA=0.
@@ -184,24 +181,24 @@ ZY=0.
 !           ---------------------------
 !
 ZY(:,:,IKB) = PRHODJ(:,:,IKB)*PVARM(:,:,IKB)/PTSTEP                  &
-    - ZMZM_RHODJ(:,:,IKB+KKL) * PF(:,:,IKB+KKL)/PDZZ(:,:,IKB+KKL)    &
+    - ZMZM_RHODJ(:,:,IKB+D%NKL) * PF(:,:,IKB+D%NKL)/PDZZ(:,:,IKB+D%NKL)    &
     + ZMZM_RHODJ(:,:,IKB  ) * PF(:,:,IKB  )/PDZZ(:,:,IKB  )          &
-    + ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKB+KKL) * PIMPL * PVARM(:,:,IKB+KKL) &
-    - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKB+KKL) * PIMPL * PVARM(:,:,IKB  )
+    + ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKB+D%NKL) * PIMPL * PVARM(:,:,IKB+D%NKL) &
+    - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKB+D%NKL) * PIMPL * PVARM(:,:,IKB  )
 !
   ZY(:,:,IKTB+1:IKTE-1) = PRHODJ(:,:,IKTB+1:IKTE-1)*PVARM(:,:,IKTB+1:IKTE-1)/PTSTEP                 &
-    - ZMZM_RHODJ(:,:,IKTB+1+KKL:IKTE-1+KKL) * PF(:,:,IKTB+1+KKL:IKTE-1+KKL)/PDZZ(:,:,IKTB+1+KKL:IKTE-1+KKL)     &
+    - ZMZM_RHODJ(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL) * PF(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL)/PDZZ(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL)     &
     + ZMZM_RHODJ(:,:,IKTB+1:IKTE-1  ) * PF(:,:,IKTB+1:IKTE-1  )/PDZZ(:,:,IKTB+1:IKTE-1  )           &
-    + ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1+KKL:IKTE-1+KKL) * PIMPL * PVARM(:,:,IKTB+1+KKL:IKTE-1+KKL) &
-    - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1+KKL:IKTE-1+KKL) * PIMPL * PVARM(:,:,IKTB+1:IKTE-1  )   &
+    + ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL) * PIMPL * PVARM(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL) &
+    - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL) * PIMPL * PVARM(:,:,IKTB+1:IKTE-1  )   &
     - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1:IKTE-1    ) * PIMPL * PVARM(:,:,IKTB+1:IKTE-1  )   &
-    + ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1:IKTE-1    ) * PIMPL * PVARM(:,:,IKTB+1-KKL:IKTE-1-KKL)
+    + ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1:IKTE-1    ) * PIMPL * PVARM(:,:,IKTB+1-D%NKL:IKTE-1-D%NKL)
 ! 
 ZY(:,:,IKE) = PRHODJ(:,:,IKE)*PVARM(:,:,IKE)/PTSTEP               &
-    - ZMZM_RHODJ(:,:,IKE+KKL) * PF(:,:,IKE+KKL)/PDZZ(:,:,IKE+KKL) &
+    - ZMZM_RHODJ(:,:,IKE+D%NKL) * PF(:,:,IKE+D%NKL)/PDZZ(:,:,IKE+D%NKL) &
     + ZMZM_RHODJ(:,:,IKE  ) * PF(:,:,IKE  )/PDZZ(:,:,IKE  )       &
     - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKE ) * PIMPL * PVARM(:,:,IKE  )   &
-    + ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKE ) * PIMPL * PVARM(:,:,IKE-KKL)
+    + ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKE ) * PIMPL * PVARM(:,:,IKE-D%NKL)
 !
 !
 !*       3.  INVERSION OF THE TRIDIAGONAL SYSTEM
@@ -213,14 +210,14 @@ IF ( PIMPL > 1.E-10 ) THEN
 !            --------------
 !
   ZB(:,:,IKB) =   PRHODJ(:,:,IKB)/PTSTEP                   &
-                - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKB+KKL) * PIMPL
-  ZC(:,:,IKB) =   ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKB+KKL) * PIMPL
+                - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKB+D%NKL) * PIMPL
+  ZC(:,:,IKB) =   ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKB+D%NKL) * PIMPL
 !
   ZA(:,:,IKTB+1:IKTE-1) =   ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1:IKTE-1) * PIMPL
   ZB(:,:,IKTB+1:IKTE-1) =   PRHODJ(:,:,IKTB+1:IKTE-1)/PTSTEP                        &
-                          - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1+KKL:IKTE-1+KKL) * PIMPL &
+                          - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL) * PIMPL &
                           - ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1:IKTE-1) * PIMPL
-  ZC(:,:,IKTB+1:IKTE-1) =   ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1+KKL:IKTE-1+KKL) * PIMPL
+  ZC(:,:,IKTB+1:IKTE-1) =   ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL) * PIMPL
 !
   ZA(:,:,IKE) =   ZRHODJ_DFDDTDZ_O_DZ2(:,:,IKE  ) * PIMPL
   ZB(:,:,IKE) =   PRHODJ(:,:,IKE)/PTSTEP                   &
@@ -233,27 +230,27 @@ IF ( PIMPL > 1.E-10 ) THEN
   PVARP(:,:,IKB) = ZY(:,:,IKB) / ZBET(:,:)
 
   !
-  DO JK = IKB+KKL,IKE-KKL,KKL
-    ZGAM(:,:,JK) = ZC(:,:,JK-KKL) / ZBET(:,:)  
+  DO JK = IKB+D%NKL,IKE-D%NKL,D%NKL
+    ZGAM(:,:,JK) = ZC(:,:,JK-D%NKL) / ZBET(:,:)  
                                                     ! gam(k) = c(k-1) / bet
     ZBET(:,:)    = ZB(:,:,JK) - ZA(:,:,JK) * ZGAM(:,:,JK)
                                                     ! bet = b(k) - a(k)* gam(k)  
-    PVARP(:,:,JK)= ( ZY(:,:,JK) - ZA(:,:,JK) * PVARP(:,:,JK-KKL) ) / ZBET(:,:)
+    PVARP(:,:,JK)= ( ZY(:,:,JK) - ZA(:,:,JK) * PVARP(:,:,JK-D%NKL) ) / ZBET(:,:)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   END DO 
   ! special treatment for the last level
-  ZGAM(:,:,IKE) = ZC(:,:,IKE-KKL) / ZBET(:,:) 
+  ZGAM(:,:,IKE) = ZC(:,:,IKE-D%NKL) / ZBET(:,:) 
                                                     ! gam(k) = c(k-1) / bet
   ZBET(:,:)     = ZB(:,:,IKE) - ZA(:,:,IKE) * ZGAM(:,:,IKE)
                                                     ! bet = b(k) - a(k)* gam(k)  
-  PVARP(:,:,IKE)= ( ZY(:,:,IKE) - ZA(:,:,IKE) * PVARP(:,:,IKE-KKL) ) / ZBET(:,:)
+  PVARP(:,:,IKE)= ( ZY(:,:,IKE) - ZA(:,:,IKE) * PVARP(:,:,IKE-D%NKL) ) / ZBET(:,:)
                                        ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
 !
 !*       3.3 going down
 !            ----------
 !
-  DO JK = IKE-KKL,IKB,-1*KKL
-    PVARP(:,:,JK) = PVARP(:,:,JK) - ZGAM(:,:,JK+KKL) * PVARP(:,:,JK+KKL)
+  DO JK = IKE-D%NKL,IKB,-1*D%NKL
+    PVARP(:,:,JK) = PVARP(:,:,JK) - ZGAM(:,:,JK+D%NKL) * PVARP(:,:,JK+D%NKL)
   END DO
 !
 ELSE
@@ -266,8 +263,8 @@ END IF
 !*       4.  FILL THE UPPER AND LOWER EXTERNAL VALUES
 !            ----------------------------------------
 !
-PVARP(:,:,KKA)=PVARP(:,:,IKB)
-PVARP(:,:,KKU)=PVARP(:,:,IKE)
+PVARP(:,:,D%NKA)=PVARP(:,:,IKB)
+PVARP(:,:,D%NKU)=PVARP(:,:,IKE)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/common/turb/mode_tridiag_tke.F90 b/src/common/turb/mode_tridiag_tke.F90
index d2d2afb6a05084be5b58b0a31dbdffa3196938f5..9c9fce379951086e9cdd4bafe96fd27e2040fed0 100644
--- a/src/common/turb/mode_tridiag_tke.F90
+++ b/src/common/turb/mode_tridiag_tke.F90
@@ -5,7 +5,7 @@
 MODULE MODE_TRIDIAG_TKE
 IMPLICIT NONE
 CONTAINS       
-SUBROUTINE TRIDIAG_TKE(D,KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
+SUBROUTINE TRIDIAG_TKE(D,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
                                   PRHODJ,PSOURCE,PDIAG,PVARP )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -121,9 +121,6 @@ IMPLICIT NONE
 !*       0.1 declarations of arguments
 !
 TYPE(DIMPHYEX_t),     INTENT(IN)   :: D
-INTEGER,              INTENT(IN)   :: KKA     !near ground array index  
-INTEGER,              INTENT(IN)   :: KKU     !uppest atmosphere array index
-INTEGER,              INTENT(IN)   :: KKL     !vert. levels type 1=MNH -1=ARO
 REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PVARM       ! variable at t-1  
 REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PA          ! upper diag. elements
 REAL,                      INTENT(IN)  :: PTSTEP      ! Double time step
@@ -161,19 +158,19 @@ IKB=D%NKB
 IKE=D%NKE
 !
 ZY(:,:,IKB) = PVARM(:,:,IKB)  + PTSTEP*PSOURCE(:,:,IKB) -   &
-  PEXPL / PRHODJ(:,:,IKB) * PA(:,:,IKB+KKL) * (PVARM(:,:,IKB+KKL) - PVARM(:,:,IKB))
+  PEXPL / PRHODJ(:,:,IKB) * PA(:,:,IKB+D%NKL) * (PVARM(:,:,IKB+D%NKL) - PVARM(:,:,IKB))
 !
 DO JK=IKTB+1,IKTE-1
   ZY(:,:,JK)= PVARM(:,:,JK)  + PTSTEP*PSOURCE(:,:,JK) -               &
       PEXPL / PRHODJ(:,:,JK) *                                           &
-                             ( PVARM(:,:,JK-KKL)*PA(:,:,JK)                &
-                              -PVARM(:,:,JK)*(PA(:,:,JK)+PA(:,:,JK+KKL))   &
-                              +PVARM(:,:,JK+KKL)*PA(:,:,JK+KKL)              &
+                             ( PVARM(:,:,JK-D%NKL)*PA(:,:,JK)                &
+                              -PVARM(:,:,JK)*(PA(:,:,JK)+PA(:,:,JK+D%NKL))   &
+                              +PVARM(:,:,JK+D%NKL)*PA(:,:,JK+D%NKL)              &
                              ) 
 END DO
 ! 
 ZY(:,:,IKE)= PVARM(:,:,IKE) + PTSTEP*PSOURCE(:,:,IKE) +               &
-  PEXPL / PRHODJ(:,:,IKE) * PA(:,:,IKE) * (PVARM(:,:,IKE)-PVARM(:,:,IKE-KKL))
+  PEXPL / PRHODJ(:,:,IKE) * PA(:,:,IKE) * (PVARM(:,:,IKE)-PVARM(:,:,IKE-D%NKL))
 !
 !
 !*       2.  INVERSION OF THE TRIDIAGONAL SYSTEM
@@ -184,39 +181,39 @@ IF ( PIMPL > 1.E-10 ) THEN
   !
   !  going up
   !
-  ZBET(:,:) = 1. + PIMPL * (PDIAG(:,:,IKB)-PA(:,:,IKB+KKL) / PRHODJ(:,:,IKB))
+  ZBET(:,:) = 1. + PIMPL * (PDIAG(:,:,IKB)-PA(:,:,IKB+D%NKL) / PRHODJ(:,:,IKB))
                                                     ! bet = b(ikb)
   PVARP(:,:,IKB) = ZY(:,:,IKB) / ZBET(:,:)                
   !
-  DO JK = IKB+KKL,IKE-KKL,KKL
-      ZGAM(:,:,JK) = PIMPL * PA(:,:,JK) / PRHODJ(:,:,JK-KKL) / ZBET(:,:)  
+  DO JK = IKB+D%NKL,IKE-D%NKL,D%NKL
+      ZGAM(:,:,JK) = PIMPL * PA(:,:,JK) / PRHODJ(:,:,JK-D%NKL) / ZBET(:,:)  
                                                     ! gam(k) = c(k-1) / bet
     ZBET(:,:)    = 1. + PIMPL * ( PDIAG(:,:,JK) -                     &
                                  (  PA(:,:,JK) * (1. + ZGAM(:,:,JK))  &
-                                  + PA(:,:,JK+KKL)                      &
+                                  + PA(:,:,JK+D%NKL)                      &
                                  ) / PRHODJ(:,:,JK)                   &
                                 )                   ! bet = b(k) - a(k)* gam(k)  
     PVARP(:,:,JK)= ( ZY(:,:,JK) - PIMPL * PA(:,:,JK) / PRHODJ(:,:,JK) &
-                    * PVARP(:,:,JK-KKL)                                 &
+                    * PVARP(:,:,JK-D%NKL)                                 &
                    ) / ZBET(:,:)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   END DO 
   ! special treatment for the last level
-  ZGAM(:,:,IKE) = PIMPL * PA(:,:,IKE) / PRHODJ(:,:,IKE-KKL) / ZBET(:,:) 
+  ZGAM(:,:,IKE) = PIMPL * PA(:,:,IKE) / PRHODJ(:,:,IKE-D%NKL) / ZBET(:,:) 
                                                     ! gam(k) = c(k-1) / bet
   ZBET(:,:)    = 1. + PIMPL * ( PDIAG(:,:,IKE) -                   &
          (  PA(:,:,IKE) * (1. + ZGAM(:,:,IKE)) ) / PRHODJ(:,:,IKE) &
                               )  
                                                     ! bet = b(k) - a(k)* gam(k)  
   PVARP(:,:,IKE)= ( ZY(:,:,IKE) - PIMPL * PA(:,:,IKE) / PRHODJ(:,:,IKE) &
-                                * PVARP(:,:,IKE-KKL)                      &
+                                * PVARP(:,:,IKE-D%NKL)                      &
                  ) / ZBET(:,:)
                                        ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   !
   !  going down
   !
-  DO JK = IKE-KKL,IKB,-1*KKL
-    PVARP(:,:,JK) = PVARP(:,:,JK) - ZGAM(:,:,JK+KKL) * PVARP(:,:,JK+KKL) 
+  DO JK = IKE-D%NKL,IKB,-1*D%NKL
+    PVARP(:,:,JK) = PVARP(:,:,JK) - ZGAM(:,:,JK+D%NKL) * PVARP(:,:,JK+D%NKL) 
   END DO
 !
 ELSE
@@ -229,8 +226,8 @@ END IF
 !*       3.  FILL THE UPPER AND LOWER EXTERNAL VALUES
 !            ----------------------------------------
 !
-PVARP(:,:,KKA)=PVARP(:,:,IKB)
-PVARP(:,:,KKU)=PVARP(:,:,IKE)
+PVARP(:,:,D%NKA)=PVARP(:,:,IKB)
+PVARP(:,:,D%NKU)=PVARP(:,:,IKE)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/common/turb/mode_tridiag_wind.F90 b/src/common/turb/mode_tridiag_wind.F90
index 65fd7256e14f7cf242917b450ff723d4d9e942d9..9a13f1c359e520084efdcf5de585e7ac19022ddb 100644
--- a/src/common/turb/mode_tridiag_wind.F90
+++ b/src/common/turb/mode_tridiag_wind.F90
@@ -5,7 +5,7 @@
 MODULE MODE_TRIDIAG_WIND
 IMPLICIT NONE
 CONTAINS       
-SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, &
+SUBROUTINE TRIDIAG_WIND(D,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, &
                                              PRHODJA,PSOURCE,PVARP )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -118,15 +118,14 @@ SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, &
 !*       0. DECLARATIONS
 !
 USE MODD_PARAMETERS
+USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
 !
 IMPLICIT NONE
 !
 !
 !*       0.1 declarations of arguments
 !
-INTEGER,                  INTENT(IN)   :: KKA         !near ground array index  
-INTEGER,                  INTENT(IN)   :: KKU         !uppest atmosphere array index
-INTEGER,                  INTENT(IN)   :: KKL         !vert. levels type 1=MNH -1=ARO
+TYPE(DIMPHYEX_t),     INTENT(IN)   :: D
 REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PVARM       ! variable at t-1  
 REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PA          ! upper diag. elements
 REAL, DIMENSION(:,:),      INTENT(IN)  :: PCOEFS      ! implicit coeff for the
@@ -156,26 +155,26 @@ INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TRIDIAG_WIND',0,ZHOOK_HANDLE)
-IKT=SIZE(PVARM,3)          
-IKTB=1+JPVEXT_TURB              
-IKTE=IKT-JPVEXT_TURB
-IKB=KKA+JPVEXT_TURB*KKL
-IKE=KKU-JPVEXT_TURB*KKL
-
+!
+IKT=D%NKT
+IKTB=D%NKTB
+IKTE=D%NKTE
+IKB=D%NKB
+IKE=D%NKE
 !
 ! 
 ZY(:,:,IKB) = PVARM(:,:,IKB)  + PTSTEP*PSOURCE(:,:,IKB) -   &
-  PEXPL / PRHODJA(:,:,IKB) * PA(:,:,IKB+KKL) * (PVARM(:,:,IKB+KKL) - PVARM(:,:,IKB))
+  PEXPL / PRHODJA(:,:,IKB) * PA(:,:,IKB+D%NKL) * (PVARM(:,:,IKB+D%NKL) - PVARM(:,:,IKB))
 !
   ZY(:,:,IKTB+1:IKTE-1)= PVARM(:,:,IKTB+1:IKTE-1)  + PTSTEP*PSOURCE(:,:,IKTB+1:IKTE-1) -               &
       PEXPL / PRHODJA(:,:,IKTB+1:IKTE-1) *                                          &
-                             ( PVARM(:,:,IKTB+1-KKL:IKTE-1-KKL)*PA(:,:,IKTB+1:IKTE-1)                &
-                              -PVARM(:,:,IKTB+1:IKTE-1)*(PA(:,:,IKTB+1:IKTE-1)+PA(:,:,IKTB+1+KKL:IKTE-1+KKL))   &
-                              +PVARM(:,:,IKTB+1+KKL:IKTE-1+KKL)*PA(:,:,IKTB+1+KKL:IKTE-1+KKL)              &
+                             ( PVARM(:,:,IKTB+1-D%NKL:IKTE-1-D%NKL)*PA(:,:,IKTB+1:IKTE-1)                &
+                              -PVARM(:,:,IKTB+1:IKTE-1)*(PA(:,:,IKTB+1:IKTE-1)+PA(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL))   &
+                              +PVARM(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL)*PA(:,:,IKTB+1+D%NKL:IKTE-1+D%NKL)              &
                              ) 
 ! 
 ZY(:,:,IKE)= PVARM(:,:,IKE) + PTSTEP*PSOURCE(:,:,IKE) +               &
-  PEXPL / PRHODJA(:,:,IKE) * PA(:,:,IKE) * (PVARM(:,:,IKE)-PVARM(:,:,IKE-KKL))
+  PEXPL / PRHODJA(:,:,IKE) * PA(:,:,IKE) * (PVARM(:,:,IKE)-PVARM(:,:,IKE-D%NKL))
 !
 !
 !*       2.  INVERSION OF THE TRIDIAGONAL SYSTEM
@@ -186,37 +185,37 @@ IF ( PIMPL > 1.E-10 ) THEN
   !
   !  going up
   !
-  ZBET(:,:) = 1. - PIMPL * (  PA(:,:,IKB+KKL) / PRHODJA(:,:,IKB) &  
+  ZBET(:,:) = 1. - PIMPL * (  PA(:,:,IKB+D%NKL) / PRHODJA(:,:,IKB) &  
                             + PCOEFS(:,:) *  PTSTEP        )   ! bet = b(ikb)
   PVARP(:,:,IKB) = ZY(:,:,IKB) / ZBET(:,:)                
   !
-  DO JK = IKB+KKL,IKE-KKL,KKL
-    ZGAM(:,:,JK) = PIMPL * PA(:,:,JK) / PRHODJA(:,:,JK-KKL) / ZBET(:,:)  
+  DO JK = IKB+D%NKL,IKE-D%NKL,D%NKL
+    ZGAM(:,:,JK) = PIMPL * PA(:,:,JK) / PRHODJA(:,:,JK-D%NKL) / ZBET(:,:)  
                                                     ! gam(k) = c(k-1) / bet
     ZBET(:,:)    = 1. - PIMPL * (  PA(:,:,JK) * (1. + ZGAM(:,:,JK))  &
-                                 + PA(:,:,JK+KKL)                      &
+                                 + PA(:,:,JK+D%NKL)                      &
                                 ) / PRHODJA(:,:,JK)  
                                                     ! bet = b(k) - a(k)* gam(k)  
     PVARP(:,:,JK)= ( ZY(:,:,JK) - PIMPL * PA(:,:,JK) / PRHODJA(:,:,JK) &
-                    * PVARP(:,:,JK-KKL)                                  &
+                    * PVARP(:,:,JK-D%NKL)                                  &
                    ) / ZBET(:,:)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   END DO
   ! special treatment for the last level
-  ZGAM(:,:,IKE) = PIMPL * PA(:,:,IKE) / PRHODJA(:,:,IKE-KKL) / ZBET(:,:) 
+  ZGAM(:,:,IKE) = PIMPL * PA(:,:,IKE) / PRHODJA(:,:,IKE-D%NKL) / ZBET(:,:) 
                                                     ! gam(k) = c(k-1) / bet
   ZBET(:,:)    = 1. - PIMPL * (  PA(:,:,IKE) * (1. + ZGAM(:,:,IKE))  &
                               ) / PRHODJA(:,:,IKE)  
                                                     ! bet = b(k) - a(k)* gam(k)  
   PVARP(:,:,IKE)= ( ZY(:,:,IKE) - PIMPL * PA(:,:,IKE) / PRHODJA(:,:,IKE) &
-                                 * PVARP(:,:,IKE-KKL)                      &
+                                 * PVARP(:,:,IKE-D%NKL)                      &
                   ) / ZBET(:,:)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   !
   !  going down 
   !
-  DO JK = IKE-KKL,IKB,-1*KKL
-    PVARP(:,:,JK) = PVARP(:,:,JK) - ZGAM(:,:,JK+KKL) * PVARP(:,:,JK+KKL) 
+  DO JK = IKE-D%NKL,IKB,-1*D%NKL
+    PVARP(:,:,JK) = PVARP(:,:,JK) - ZGAM(:,:,JK+D%NKL) * PVARP(:,:,JK+D%NKL) 
   END DO
 !
 ELSE
@@ -229,8 +228,8 @@ END IF
 !*       3.  FILL THE UPPER AND LOWER EXTERNAL VALUES
 !            ----------------------------------------
 !
-PVARP(:,:,KKA)=PVARP(:,:,IKB)
-PVARP(:,:,KKU)=PVARP(:,:,IKE)
+PVARP(:,:,D%NKA)=PVARP(:,:,IKB)
+PVARP(:,:,D%NKU)=PVARP(:,:,IKE)
 !
 !-------------------------------------------------------------------------------
 ! 
diff --git a/src/common/turb/mode_turb_ver_dyn_flux.F90 b/src/common/turb/mode_turb_ver_dyn_flux.F90
index f116616ece3c4d62b140b2e6a69e1233fb5ad7be..efafaffd5afbc30938bc29a5b2f47290abd9c728 100644
--- a/src/common/turb/mode_turb_ver_dyn_flux.F90
+++ b/src/common/turb/mode_turb_ver_dyn_flux.F90
@@ -466,7 +466,7 @@ ENDIF !end ocean or atmosphere cases
 !
 ! Obtention of the split U at t+ deltat 
 !
-CALL TRIDIAG_WIND(D%NKA,D%NKU,D%NKL,PUM,ZA,ZCOEFS(:,:,1),PTSTEP,PEXPL,PIMPL,   &
+CALL TRIDIAG_WIND(D,PUM,ZA,ZCOEFS(:,:,1),PTSTEP,PEXPL,PIMPL,   &
                   MXM(PRHODJ),ZSOURCE,ZRES)
 ! 
 !  Compute the equivalent tendency for the U wind component
@@ -739,7 +739,7 @@ ENDIF ! End of Ocean or Atmospher Cases
 ZSOURCE(:,:,IKTB+1:IKTE-1) = 0.
 ! 
 !  Obtention of the split V at t+ deltat 
-CALL TRIDIAG_WIND(D%NKA,D%NKU,D%NKL,PVM,ZA,ZCOEFS(:,:,1),PTSTEP,PEXPL,PIMPL,  &
+CALL TRIDIAG_WIND(D,PVM,ZA,ZCOEFS(:,:,1),PTSTEP,PEXPL,PIMPL,  &
                   MYM(PRHODJ),ZSOURCE,ZRES)
 !
 ! Compute the equivalent tendency for the V wind component
diff --git a/src/common/turb/mode_turb_ver_sv_flux.F90 b/src/common/turb/mode_turb_ver_sv_flux.F90
index 0d02669a2e63f4796d515052d7377489e6cf707a..e4e1b20f99e221a9a642cfb4848bc601ed36b21f 100644
--- a/src/common/turb/mode_turb_ver_sv_flux.F90
+++ b/src/common/turb/mode_turb_ver_sv_flux.F90
@@ -380,7 +380,7 @@ DO JSV=1,KSV
   ZSOURCE(:,:,IKE) = 0.
 !
 ! Obtention of the split JSV scalar variable at t+ deltat  
-  CALL TRIDIAG(D,D%NKA,D%NKU,D%NKL,PSVM(:,:,:,JSV),ZA,PTSTEP,PEXPL,PIMPL,PRHODJ,ZSOURCE,ZRES)
+  CALL TRIDIAG(D,PSVM(:,:,:,JSV),ZA,PTSTEP,PEXPL,PIMPL,PRHODJ,ZSOURCE,ZRES)
 !
 !  Compute the equivalent tendency for the JSV scalar variable
   !$mnh_expand_array(JI=1:D%NIT,JJ=1:D%NJT,JK=1:D%NKT)
diff --git a/src/common/turb/mode_turb_ver_thermo_flux.F90 b/src/common/turb/mode_turb_ver_thermo_flux.F90
index 32da8705e17abab6a0c7e40628006f414ec8d30d..5c0c120005cd040dad93533f050656ae249f0c00 100644
--- a/src/common/turb/mode_turb_ver_thermo_flux.F90
+++ b/src/common/turb/mode_turb_ver_thermo_flux.F90
@@ -653,7 +653,7 @@ ELSE  ! No coupling O and A cases
 END IF !end no coupled cases
 !
 ! Compute the split conservative potential temperature at t+deltat
-CALL TRIDIAG_THERMO(D,D%NKA,D%NKU,D%NKL,PTHLM,ZF,ZDFDDTDZ,PTSTEP,PIMPL,PDZZ,&
+CALL TRIDIAG_THERMO(D,PTHLM,ZF,ZDFDDTDZ,PTSTEP,PIMPL,PDZZ,&
                     PRHODJ,PTHLP)
 !
 ! Compute the equivalent tendency for the conservative potential temperature
@@ -997,7 +997,7 @@ IF (KRR /= 0) THEN
     END IF
   END IF!end no coupled cases
   ! Compute the split conservative potential temperature at t+deltat
-  CALL TRIDIAG_THERMO(D,D%NKA,D%NKU,D%NKL,PRM(:,:,:,1),ZF,ZDFDDRDZ,PTSTEP,PIMPL,&
+  CALL TRIDIAG_THERMO(D,PRM(:,:,:,1),ZF,ZDFDDRDZ,PTSTEP,PIMPL,&
                       PDZZ,PRHODJ,PRP)
   !
   ! Compute the equivalent tendency for the conservative mixing ratio