From 20c7961311ce41066a648457e71875c8f4619cb5 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Wed, 22 Jun 2022 18:15:38 +0200
Subject: [PATCH] Quentin 22/06/2022: Packing turb : tridiag_* except tridiag_w

---
 src/common/turb/mode_tridiag.F90        | 116 ++++++++--------
 src/common/turb/mode_tridiag_thermo.F90 | 167 ++++++++++++------------
 src/common/turb/mode_tridiag_tke.F90    | 125 +++++++++---------
 src/common/turb/mode_tridiag_wind.F90   | 119 ++++++++---------
 4 files changed, 254 insertions(+), 273 deletions(-)

diff --git a/src/common/turb/mode_tridiag.F90 b/src/common/turb/mode_tridiag.F90
index 6baf20df6..046a0dcc8 100644
--- a/src/common/turb/mode_tridiag.F90
+++ b/src/common/turb/mode_tridiag.F90
@@ -123,23 +123,23 @@ IMPLICIT NONE
 !*       0.1 declarations of arguments
 !
 TYPE(DIMPHYEX_t),          INTENT(IN)   :: D
-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, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PVARM       ! variable at t-1  
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PA          ! upper diag. elements
 REAL,                      INTENT(IN)  :: PTSTEP      ! Double time step
 REAL,                      INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PRHODJ      ! (dry rho)*J
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PRHODJ      ! (dry rho)*J
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
 !
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(OUT) :: PVARP       ! variable at t+1        
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(OUT) :: PVARP       ! variable at t+1        
 !
 !*       0.2 declarations of local variables
 !
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT)  :: ZY ,ZGAM 
+REAL, DIMENSION(D%NIJT,D%NKT)  :: ZY ,ZGAM 
                                          ! RHS of the equation, 3D work array
-REAL, DIMENSION(D%NIT,D%NJT)         :: ZBET
+REAL, DIMENSION(D%NIJT)         :: ZBET
                                          ! 2D work array
-INTEGER                              :: JI,JJ,JK            ! loop counter
-INTEGER                              :: IKB,IKE,IIB,IIE,IJB,IJE       ! inner vertical limits
+INTEGER                              :: JIJ,JK            ! loop counter
+INTEGER                              :: IKB,IKE       ! inner vertical limits
 INTEGER                              :: IKT           ! array size in k direction
 INTEGER                              :: IKTB,IKTE     ! start, end of k loops in physical domain 
 
@@ -157,32 +157,28 @@ IKTB=D%NKTB
 IKTE=D%NKTE
 IKB=D%NKB
 IKE=D%NKE
-IIE=D%NIEC
-IIB=D%NIBC
-IJE=D%NJEC
-IJB=D%NJBC
 !
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-ZY(IIB:IIE,IJB:IJE,IKB) = PVARM(IIB:IIE,IJB:IJE,IKB)  + PTSTEP*PSOURCE(IIB:IIE,IJB:IJE,IKB) -   &
-  PEXPL / PRHODJ(IIB:IIE,IJB:IJE,IKB) * PA(IIB:IIE,IJB:IJE,IKB+D%NKL) * &
-  (PVARM(IIB:IIE,IJB:IJE,IKB+D%NKL) - PVARM(IIB:IIE,IJB:IJE,IKB))
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+ZY(1:D%NIJT,IKB) = PVARM(1:D%NIJT,IKB)  + PTSTEP*PSOURCE(1:D%NIJT,IKB) -   &
+  PEXPL / PRHODJ(1:D%NIJT,IKB) * PA(1:D%NIJT,IKB+D%NKL) * &
+  (PVARM(1:D%NIJT,IKB+D%NKL) - PVARM(1:D%NIJT,IKB))
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 DO JK=IKTB+1,IKTE-1
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZY(IIB:IIE,IJB:IJE,JK)= PVARM(IIB:IIE,IJB:IJE,JK)  + PTSTEP*PSOURCE(IIB:IIE,IJB:IJE,JK) -               &
-      PEXPL / PRHODJ(IIB:IIE,IJB:IJE,JK) *                                           &
-                             ( PVARM(IIB:IIE,IJB:IJE,JK-D%NKL)*PA(IIB:IIE,IJB:IJE,JK)                &
-                              -PVARM(IIB:IIE,IJB:IJE,JK)*(PA(IIB:IIE,IJB:IJE,JK)+PA(IIB:IIE,IJB:IJE,JK+D%NKL))   &
-                              +PVARM(IIB:IIE,IJB:IJE,JK+D%NKL)*PA(IIB:IIE,IJB:IJE,JK+D%NKL)              &
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZY(1:D%NIJT,JK)= PVARM(1:D%NIJT,JK)  + PTSTEP*PSOURCE(1:D%NIJT,JK) -               &
+      PEXPL / PRHODJ(1:D%NIJT,JK) *                                           &
+                             ( PVARM(1:D%NIJT,JK-D%NKL)*PA(1:D%NIJT,JK)                &
+                              -PVARM(1:D%NIJT,JK)*(PA(1:D%NIJT,JK)+PA(1:D%NIJT,JK+D%NKL))   &
+                              +PVARM(1:D%NIJT,JK+D%NKL)*PA(1:D%NIJT,JK+D%NKL)              &
                              ) 
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
 END DO
 ! 
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-ZY(IIB:IIE,IJB:IJE,IKE)= PVARM(IIB:IIE,IJB:IJE,IKE) + PTSTEP*PSOURCE(IIB:IIE,IJB:IJE,IKE) +               &
-  PEXPL / PRHODJ(IIB:IIE,IJB:IJE,IKE) * PA(IIB:IIE,IJB:IJE,IKE) * (PVARM(IIB:IIE,IJB:IJE,IKE)-PVARM(IIB:IIE,IJB:IJE,IKE-D%NKL))
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+ZY(1:D%NIJT,IKE)= PVARM(1:D%NIJT,IKE) + PTSTEP*PSOURCE(1:D%NIJT,IKE) +               &
+  PEXPL / PRHODJ(1:D%NIJT,IKE) * PA(1:D%NIJT,IKE) * (PVARM(1:D%NIJT,IKE)-PVARM(1:D%NIJT,IKE-D%NKL))
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 !
 !*       2.  INVERSION OF THE TRIDIAGONAL SYSTEM
@@ -193,52 +189,52 @@ IF ( PIMPL > 1.E-10 ) THEN
   !
   !  going up
   !
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZBET(IIB:IIE,IJB:IJE) = 1. - PIMPL * PA(IIB:IIE,IJB:IJE,IKB+D%NKL) / PRHODJ(IIB:IIE,IJB:IJE,IKB)  ! bet = b(ikb)
-  PVARP(IIB:IIE,IJB:IJE,IKB) = ZY(IIB:IIE,IJB:IJE,IKB) / ZBET(IIB:IIE,IJB:IJE)
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)               
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZBET(1:D%NIJT) = 1. - PIMPL * PA(1:D%NIJT,IKB+D%NKL) / PRHODJ(1:D%NIJT,IKB)  ! bet = b(ikb)
+  PVARP(1:D%NIJT,IKB) = ZY(1:D%NIJT,IKB) / ZBET(1:D%NIJT)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)               
   !
   DO JK = IKB+D%NKL,IKE-D%NKL,D%NKL
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    ZGAM(IIB:IIE,IJB:IJE,JK) = PIMPL * PA(IIB:IIE,IJB:IJE,JK) / PRHODJ(IIB:IIE,IJB:IJE,JK-D%NKL) / ZBET(IIB:IIE,IJB:IJE)  
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    ZGAM(1:D%NIJT,JK) = PIMPL * PA(1:D%NIJT,JK) / PRHODJ(1:D%NIJT,JK-D%NKL) / ZBET(1:D%NIJT)  
                                                     ! gam(k) = c(k-1) / bet
-    ZBET(IIB:IIE,IJB:IJE)    = 1. - PIMPL * (  PA(IIB:IIE,IJB:IJE,JK) * (1. + ZGAM(IIB:IIE,IJB:IJE,JK))  &
-                                 + PA(IIB:IIE,IJB:IJE,JK+D%NKL)                      &
-                                ) / PRHODJ(IIB:IIE,IJB:IJE,JK)  
+    ZBET(1:D%NIJT)    = 1. - PIMPL * (  PA(1:D%NIJT,JK) * (1. + ZGAM(1:D%NIJT,JK))  &
+                                 + PA(1:D%NIJT,JK+D%NKL)                      &
+                                ) / PRHODJ(1:D%NIJT,JK)  
                                                     ! bet = b(k) - a(k)* gam(k)  
-    PVARP(IIB:IIE,IJB:IJE,JK)= ( ZY(IIB:IIE,IJB:IJE,JK) - PIMPL * PA(IIB:IIE,IJB:IJE,JK) / PRHODJ(IIB:IIE,IJB:IJE,JK) &
-                    * PVARP(IIB:IIE,IJB:IJE,JK-D%NKL)                                 &
-                   ) / ZBET(IIB:IIE,IJB:IJE)
+    PVARP(1:D%NIJT,JK)= ( ZY(1:D%NIJT,JK) - PIMPL * PA(1:D%NIJT,JK) / PRHODJ(1:D%NIJT,JK) &
+                    * PVARP(1:D%NIJT,JK-D%NKL)                                 &
+                   ) / ZBET(1:D%NIJT)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_expand_array(JIJ=1:D%NIJT)
   ! special treatment for the last level
-  ZGAM(IIB:IIE,IJB:IJE,IKE) = PIMPL * PA(IIB:IIE,IJB:IJE,IKE) / PRHODJ(IIB:IIE,IJB:IJE,IKE-D%NKL) / ZBET(IIB:IIE,IJB:IJE) 
+  ZGAM(1:D%NIJT,IKE) = PIMPL * PA(1:D%NIJT,IKE) / PRHODJ(1:D%NIJT,IKE-D%NKL) / ZBET(1:D%NIJT) 
                                                     ! gam(k) = c(k-1) / bet
-  ZBET(IIB:IIE,IJB:IJE)    = 1. - PIMPL * (  PA(IIB:IIE,IJB:IJE,IKE) * (1. + ZGAM(IIB:IIE,IJB:IJE,IKE))  &
-                              ) / PRHODJ(IIB:IIE,IJB:IJE,IKE)  
+  ZBET(1:D%NIJT)    = 1. - PIMPL * (  PA(1:D%NIJT,IKE) * (1. + ZGAM(1:D%NIJT,IKE))  &
+                              ) / PRHODJ(1:D%NIJT,IKE)  
                                                     ! bet = b(k) - a(k)* gam(k)  
-  PVARP(IIB:IIE,IJB:IJE,IKE)= ( ZY(IIB:IIE,IJB:IJE,IKE) - PIMPL * PA(IIB:IIE,IJB:IJE,IKE) / PRHODJ(IIB:IIE,IJB:IJE,IKE) &
-                                * PVARP(IIB:IIE,IJB:IJE,IKE-D%NKL)                      &
-                 ) / ZBET(IIB:IIE,IJB:IJE)
+  PVARP(1:D%NIJT,IKE)= ( ZY(1:D%NIJT,IKE) - PIMPL * PA(1:D%NIJT,IKE) / PRHODJ(1:D%NIJT,IKE) &
+                                * PVARP(1:D%NIJT,IKE-D%NKL)                      &
+                 ) / ZBET(1:D%NIJT)
                                        ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   !
   !  going down
   !
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
   DO JK = IKE-D%NKL,IKB,-1*D%NKL
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    PVARP(IIB:IIE,IJB:IJE,JK) = PVARP(IIB:IIE,IJB:IJE,JK) - ZGAM(IIB:IIE,IJB:IJE,JK+D%NKL) * PVARP(IIB:IIE,IJB:IJE,JK+D%NKL) 
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+    PVARP(1:D%NIJT,JK) = PVARP(1:D%NIJT,JK) - ZGAM(1:D%NIJT,JK+D%NKL) * PVARP(1:D%NIJT,JK+D%NKL) 
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
 !
 ELSE
 ! 
   DO JK=IKTB,IKTE
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    PVARP(IIB:IIE,IJB:IJE,JK) = ZY(IIB:IIE,IJB:IJE,JK)
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    PVARP(1:D%NIJT,JK) = ZY(1:D%NIJT,JK)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
 !
 END IF 
@@ -247,10 +243,10 @@ END IF
 !*       3.  FILL THE UPPER AND LOWER EXTERNAL VALUES
 !            ----------------------------------------
 !
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-PVARP(IIB:IIE,IJB:IJE,D%NKA)=PVARP(IIB:IIE,IJB:IJE,IKB)
-PVARP(IIB:IIE,IJB:IJE,D%NKU)=PVARP(IIB:IIE,IJB:IJE,IKE)
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+PVARP(1:D%NIJT,D%NKA)=PVARP(1:D%NIJT,IKB)
+PVARP(1:D%NIJT,D%NKU)=PVARP(1:D%NIJT,IKE)
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/common/turb/mode_tridiag_thermo.F90 b/src/common/turb/mode_tridiag_thermo.F90
index bd131e170..14c21040c 100644
--- a/src/common/turb/mode_tridiag_thermo.F90
+++ b/src/common/turb/mode_tridiag_thermo.F90
@@ -130,28 +130,28 @@ IMPLICIT NONE
 !*       0.1 declarations of arguments
 !
 TYPE(DIMPHYEX_t),     INTENT(IN)   :: D
-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
+REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PVARM   ! variable at t-1      at mass point
+REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PF      ! flux in dT/dt=-dF/dz at flux point
+REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDFDDTDZ! dF/d(dT/dz)          at flux point
 REAL,                   INTENT(IN) :: PTSTEP  ! Double time step
 REAL,                   INTENT(IN) :: PIMPL   ! implicit weight
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDZZ    ! Dz                   at flux point
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRHODJ  ! (dry rho)*J          at mass point
+REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDZZ    ! Dz                   at flux point
+REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRHODJ  ! (dry rho)*J          at mass point
 !
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT):: PVARP   ! variable at t+1      at mass point
+REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT):: PVARP   ! variable at t+1      at mass point
 !
 !
 !*       0.2 declarations of local variables
 !
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT)  :: ZRHODJ_DFDDTDZ_O_DZ2
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT)  :: ZMZM_RHODJ
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT)  :: ZA, ZB, ZC
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT)  :: ZY ,ZGAM 
+REAL, DIMENSION(D%NIJT,D%NKT)  :: ZRHODJ_DFDDTDZ_O_DZ2
+REAL, DIMENSION(D%NIJT,D%NKT)  :: ZMZM_RHODJ
+REAL, DIMENSION(D%NIJT,D%NKT)  :: ZA, ZB, ZC
+REAL, DIMENSION(D%NIJT,D%NKT)  :: ZY ,ZGAM 
                                          ! RHS of the equation, 3D work array
-REAL, DIMENSION(D%NIT,D%NJT)                :: ZBET
+REAL, DIMENSION(D%NIJT)                :: ZBET
                                          ! 2D work array
-INTEGER             :: JI,JJ,JK            ! loop counter
-INTEGER             :: IKB,IKE,IIB,IIE,IJB,IJE ! inner limits
+INTEGER             :: JIJ,JK            ! loop counter
+INTEGER             :: IKB,IKE ! inner limits
 INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain 
 !
@@ -167,17 +167,12 @@ IKTB=D%NKTB
 IKTE=D%NKTE
 IKB=D%NKB
 IKE=D%NKE
-IIE=D%NIEC
-IIB=D%NIBC
-IJE=D%NJEC
-IJB=D%NJBC
-
 !
 CALL MZM_PHY(D,PRHODJ,ZMZM_RHODJ)
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT)
-ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,1:D%NKT) = ZMZM_RHODJ(IIB:IIE,IJB:IJE,1:D%NKT)*PDFDDTDZ(IIB:IIE,IJB:IJE,1:D%NKT) &
-                                                /PDZZ(IIB:IIE,IJB:IJE,1:D%NKT)**2
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT)
+!$mnh_expand_array(JIJ=1:D%NIJT,JK=1:D%NKT)
+ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,1:D%NKT) = ZMZM_RHODJ(1:D%NIJT,1:D%NKT)*PDFDDTDZ(1:D%NIJT,1:D%NKT) &
+                                                /PDZZ(1:D%NIJT,1:D%NKT)**2
+!$mnh_end_expand_array(JIJ=1:D%NIJT,JK=1:D%NKT)
 !
 ZA=0.
 ZB=0.
@@ -188,33 +183,33 @@ ZY=0.
 !*      2.  COMPUTE THE RIGHT HAND SIDE
 !           ---------------------------
 !
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-ZY(IIB:IIE,IJB:IJE,IKB) = PRHODJ(IIB:IIE,IJB:IJE,IKB)*PVARM(IIB:IIE,IJB:IJE,IKB)/PTSTEP                  &
-    - ZMZM_RHODJ(IIB:IIE,IJB:IJE,IKB+D%NKL) * PF(IIB:IIE,IJB:IJE,IKB+D%NKL)/PDZZ(IIB:IIE,IJB:IJE,IKB+D%NKL)    &
-    + ZMZM_RHODJ(IIB:IIE,IJB:IJE,IKB  ) * PF(IIB:IIE,IJB:IJE,IKB  )/PDZZ(IIB:IIE,IJB:IJE,IKB  )          &
-    + ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,IKB+D%NKL) * PIMPL * PVARM(IIB:IIE,IJB:IJE,IKB+D%NKL) &
-    - ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,IKB+D%NKL) * PIMPL * PVARM(IIB:IIE,IJB:IJE,IKB  )
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+ZY(1:D%NIJT,IKB) = PRHODJ(1:D%NIJT,IKB)*PVARM(1:D%NIJT,IKB)/PTSTEP                  &
+    - ZMZM_RHODJ(1:D%NIJT,IKB+D%NKL) * PF(1:D%NIJT,IKB+D%NKL)/PDZZ(1:D%NIJT,IKB+D%NKL)    &
+    + ZMZM_RHODJ(1:D%NIJT,IKB  ) * PF(1:D%NIJT,IKB  )/PDZZ(1:D%NIJT,IKB  )          &
+    + ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,IKB+D%NKL) * PIMPL * PVARM(1:D%NIJT,IKB+D%NKL) &
+    - ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,IKB+D%NKL) * PIMPL * PVARM(1:D%NIJT,IKB  )
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 DO JK=IKTB+1,IKTE-1
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZY(IIB:IIE,IJB:IJE,JK) = PRHODJ(IIB:IIE,IJB:IJE,JK)*PVARM(IIB:IIE,IJB:IJE,JK)/PTSTEP                 &
-    - ZMZM_RHODJ(IIB:IIE,IJB:IJE,JK+D%NKL) * PF(IIB:IIE,IJB:IJE,JK+D%NKL)/PDZZ(IIB:IIE,IJB:IJE,JK+D%NKL)     &
-    + ZMZM_RHODJ(IIB:IIE,IJB:IJE,JK  ) * PF(IIB:IIE,IJB:IJE,JK  )/PDZZ(IIB:IIE,IJB:IJE,JK  )           &
-    + ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,JK+D%NKL) * PIMPL * PVARM(IIB:IIE,IJB:IJE,JK+D%NKL) &
-    - ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,JK+D%NKL) * PIMPL * PVARM(IIB:IIE,IJB:IJE,JK  )   &
-    - ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,JK    ) * PIMPL * PVARM(IIB:IIE,IJB:IJE,JK  )   &
-    + ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,JK    ) * PIMPL * PVARM(IIB:IIE,IJB:IJE,JK-D%NKL)
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZY(1:D%NIJT,JK) = PRHODJ(1:D%NIJT,JK)*PVARM(1:D%NIJT,JK)/PTSTEP                 &
+    - ZMZM_RHODJ(1:D%NIJT,JK+D%NKL) * PF(1:D%NIJT,JK+D%NKL)/PDZZ(1:D%NIJT,JK+D%NKL)     &
+    + ZMZM_RHODJ(1:D%NIJT,JK  ) * PF(1:D%NIJT,JK  )/PDZZ(1:D%NIJT,JK  )           &
+    + ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,JK+D%NKL) * PIMPL * PVARM(1:D%NIJT,JK+D%NKL) &
+    - ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,JK+D%NKL) * PIMPL * PVARM(1:D%NIJT,JK  )   &
+    - ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,JK    ) * PIMPL * PVARM(1:D%NIJT,JK  )   &
+    + ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,JK    ) * PIMPL * PVARM(1:D%NIJT,JK-D%NKL)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
 END DO
 ! 
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-ZY(IIB:IIE,IJB:IJE,IKE) = PRHODJ(IIB:IIE,IJB:IJE,IKE)*PVARM(IIB:IIE,IJB:IJE,IKE)/PTSTEP               &
-    - ZMZM_RHODJ(IIB:IIE,IJB:IJE,IKE+D%NKL) * PF(IIB:IIE,IJB:IJE,IKE+D%NKL)/PDZZ(IIB:IIE,IJB:IJE,IKE+D%NKL) &
-    + ZMZM_RHODJ(IIB:IIE,IJB:IJE,IKE  ) * PF(IIB:IIE,IJB:IJE,IKE  )/PDZZ(IIB:IIE,IJB:IJE,IKE  )       &
-    - ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,IKE ) * PIMPL * PVARM(IIB:IIE,IJB:IJE,IKE  )   &
-    + ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,IKE ) * PIMPL * PVARM(IIB:IIE,IJB:IJE,IKE-D%NKL)
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+ZY(1:D%NIJT,IKE) = PRHODJ(1:D%NIJT,IKE)*PVARM(1:D%NIJT,IKE)/PTSTEP               &
+    - ZMZM_RHODJ(1:D%NIJT,IKE+D%NKL) * PF(1:D%NIJT,IKE+D%NKL)/PDZZ(1:D%NIJT,IKE+D%NKL) &
+    + ZMZM_RHODJ(1:D%NIJT,IKE  ) * PF(1:D%NIJT,IKE  )/PDZZ(1:D%NIJT,IKE  )       &
+    - ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,IKE ) * PIMPL * PVARM(1:D%NIJT,IKE  )   &
+    + ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,IKE ) * PIMPL * PVARM(1:D%NIJT,IKE-D%NKL)
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 !
 !*       3.  INVERSION OF THE TRIDIAGONAL SYSTEM
@@ -225,72 +220,72 @@ IF ( PIMPL > 1.E-10 ) THEN
 !*       3.1 arrays A, B, C
 !            --------------
 !
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZB(IIB:IIE,IJB:IJE,IKB) =   PRHODJ(IIB:IIE,IJB:IJE,IKB)/PTSTEP                   &
-                - ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,IKB+D%NKL) * PIMPL
-  ZC(IIB:IIE,IJB:IJE,IKB) =   ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,IKB+D%NKL) * PIMPL
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZB(1:D%NIJT,IKB) =   PRHODJ(1:D%NIJT,IKB)/PTSTEP                   &
+                - ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,IKB+D%NKL) * PIMPL
+  ZC(1:D%NIJT,IKB) =   ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,IKB+D%NKL) * PIMPL
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
   DO JK=IKTB+1,IKTE-1
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    ZA(IIB:IIE,IJB:IJE,JK) =   ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,JK) * PIMPL
-    ZB(IIB:IIE,IJB:IJE,JK) =   PRHODJ(IIB:IIE,IJB:IJE,JK)/PTSTEP                        &
-                            - ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,JK+D%NKL) * PIMPL &
-                            - ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,JK) * PIMPL
-    ZC(IIB:IIE,IJB:IJE,JK) =   ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,JK+D%NKL) * PIMPL
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    ZA(1:D%NIJT,JK) =   ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,JK) * PIMPL
+    ZB(1:D%NIJT,JK) =   PRHODJ(1:D%NIJT,JK)/PTSTEP                        &
+                            - ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,JK+D%NKL) * PIMPL &
+                            - ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,JK) * PIMPL
+    ZC(1:D%NIJT,JK) =   ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,JK+D%NKL) * PIMPL
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
 !
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZA(IIB:IIE,IJB:IJE,IKE) =   ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,IKE  ) * PIMPL
-  ZB(IIB:IIE,IJB:IJE,IKE) =   PRHODJ(IIB:IIE,IJB:IJE,IKE)/PTSTEP                   &
-                - ZRHODJ_DFDDTDZ_O_DZ2(IIB:IIE,IJB:IJE,IKE  ) * PIMPL
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZA(1:D%NIJT,IKE) =   ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,IKE  ) * PIMPL
+  ZB(1:D%NIJT,IKE) =   PRHODJ(1:D%NIJT,IKE)/PTSTEP                   &
+                - ZRHODJ_DFDDTDZ_O_DZ2(1:D%NIJT,IKE  ) * PIMPL
 !
 !*       3.2 going up
 !            --------
 !
-  ZBET(IIB:IIE,IJB:IJE) = ZB(IIB:IIE,IJB:IJE,IKB)  ! bet = b(ikb)
-  PVARP(IIB:IIE,IJB:IJE,IKB) = ZY(IIB:IIE,IJB:IJE,IKB) / ZBET(IIB:IIE,IJB:IJE)
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  ZBET(1:D%NIJT) = ZB(1:D%NIJT,IKB)  ! bet = b(ikb)
+  PVARP(1:D%NIJT,IKB) = ZY(1:D%NIJT,IKB) / ZBET(1:D%NIJT)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
 
   !
   DO JK = IKB+D%NKL,IKE-D%NKL,D%NKL
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    ZGAM(IIB:IIE,IJB:IJE,JK) = ZC(IIB:IIE,IJB:IJE,JK-D%NKL) / ZBET(IIB:IIE,IJB:IJE)  
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    ZGAM(1:D%NIJT,JK) = ZC(1:D%NIJT,JK-D%NKL) / ZBET(1:D%NIJT)  
                                                     ! gam(k) = c(k-1) / bet
-    ZBET(IIB:IIE,IJB:IJE)    = ZB(IIB:IIE,IJB:IJE,JK) - ZA(IIB:IIE,IJB:IJE,JK) * ZGAM(IIB:IIE,IJB:IJE,JK)
+    ZBET(1:D%NIJT)    = ZB(1:D%NIJT,JK) - ZA(1:D%NIJT,JK) * ZGAM(1:D%NIJT,JK)
                                                     ! bet = b(k) - a(k)* gam(k)  
-    PVARP(IIB:IIE,IJB:IJE,JK)= ( ZY(IIB:IIE,IJB:IJE,JK) - ZA(IIB:IIE,IJB:IJE,JK) * PVARP(IIB:IIE,IJB:IJE,JK-D%NKL) ) &
-                               / ZBET(IIB:IIE,IJB:IJE)
+    PVARP(1:D%NIJT,JK)= ( ZY(1:D%NIJT,JK) - ZA(1:D%NIJT,JK) * PVARP(1:D%NIJT,JK-D%NKL) ) &
+                               / ZBET(1:D%NIJT)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO 
   ! special treatment for the last level
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZGAM(IIB:IIE,IJB:IJE,IKE) = ZC(IIB:IIE,IJB:IJE,IKE-D%NKL) / ZBET(IIB:IIE,IJB:IJE) 
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZGAM(1:D%NIJT,IKE) = ZC(1:D%NIJT,IKE-D%NKL) / ZBET(1:D%NIJT) 
                                                     ! gam(k) = c(k-1) / bet
-  ZBET(IIB:IIE,IJB:IJE)     = ZB(IIB:IIE,IJB:IJE,IKE) - ZA(IIB:IIE,IJB:IJE,IKE) * ZGAM(IIB:IIE,IJB:IJE,IKE)
+  ZBET(1:D%NIJT)     = ZB(1:D%NIJT,IKE) - ZA(1:D%NIJT,IKE) * ZGAM(1:D%NIJT,IKE)
                                                     ! bet = b(k) - a(k)* gam(k)  
-  PVARP(IIB:IIE,IJB:IJE,IKE)= ( ZY(IIB:IIE,IJB:IJE,IKE) - ZA(IIB:IIE,IJB:IJE,IKE) * PVARP(IIB:IIE,IJB:IJE,IKE-D%NKL) ) &
-                              / ZBET(IIB:IIE,IJB:IJE)
+  PVARP(1:D%NIJT,IKE)= ( ZY(1:D%NIJT,IKE) - ZA(1:D%NIJT,IKE) * PVARP(1:D%NIJT,IKE-D%NKL) ) &
+                              / ZBET(1:D%NIJT)
                                        ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 !*       3.3 going down
 !            ----------
 !
   DO JK = IKE-D%NKL,IKB,-1*D%NKL
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    PVARP(IIB:IIE,IJB:IJE,JK) = PVARP(IIB:IIE,IJB:IJE,JK) - ZGAM(IIB:IIE,IJB:IJE,JK+D%NKL) * PVARP(IIB:IIE,IJB:IJE,JK+D%NKL)
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    PVARP(1:D%NIJT,JK) = PVARP(1:D%NIJT,JK) - ZGAM(1:D%NIJT,JK+D%NKL) * PVARP(1:D%NIJT,JK+D%NKL)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
 !
 ELSE
 ! 
   DO JK=IKTB,IKTE
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    PVARP(IIB:IIE,IJB:IJE,JK) = ZY(IIB:IIE,IJB:IJE,JK) * PTSTEP / PRHODJ(IIB:IIE,IJB:IJE,JK)
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    PVARP(1:D%NIJT,JK) = ZY(1:D%NIJT,JK) * PTSTEP / PRHODJ(1:D%NIJT,JK)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
 !
 END IF 
@@ -299,10 +294,10 @@ END IF
 !*       4.  FILL THE UPPER AND LOWER EXTERNAL VALUES
 !            ----------------------------------------
 !
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-PVARP(IIB:IIE,IJB:IJE,D%NKA)=PVARP(IIB:IIE,IJB:IJE,IKB)
-PVARP(IIB:IIE,IJB:IJE,D%NKU)=PVARP(IIB:IIE,IJB:IJE,IKE)
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+PVARP(1:D%NIJT,D%NKA)=PVARP(1:D%NIJT,IKB)
+PVARP(1:D%NIJT,D%NKU)=PVARP(1:D%NIJT,IKE)
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/common/turb/mode_tridiag_tke.F90 b/src/common/turb/mode_tridiag_tke.F90
index cd2fad11d..b1d6d3379 100644
--- a/src/common/turb/mode_tridiag_tke.F90
+++ b/src/common/turb/mode_tridiag_tke.F90
@@ -120,29 +120,28 @@ IMPLICIT NONE
 !
 !*       0.1 declarations of arguments
 !
-TYPE(DIMPHYEX_t),     INTENT(IN)   :: D
-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
-REAL,                      INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PRHODJ      ! (dry rho)*J
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PDIAG       ! diagonal term linked to
+TYPE(DIMPHYEX_t),                 INTENT(IN)   :: D
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PVARM       ! variable at t-1  
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PA          ! upper diag. elements
+REAL,                             INTENT(IN)  :: PTSTEP      ! Double time step
+REAL,                             INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PRHODJ      ! (dry rho)*J
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PDIAG       ! diagonal term linked to
                                                       ! the implicit dissipation
 !
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(OUT) :: PVARP       ! variable at t+1        
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(OUT) :: PVARP       ! variable at t+1        
 !
 !*       0.2 declarations of local variables
 !
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT)  :: ZY ,ZGAM 
+REAL, DIMENSION(D%NIJT,D%NKT)  :: ZY ,ZGAM 
                                          ! RHS of the equation, 3D work array
-REAL, DIMENSION(D%NIT,D%NJT)        :: ZBET
+REAL, DIMENSION(D%NIJT)        :: ZBET
                                          ! 2D work array
-INTEGER             :: JI,JJ,JK     ! loop counter
+INTEGER             :: JIJ,JK     ! loop counter
 INTEGER             :: IKB,IKE      ! inner vertical limits
 INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain
-INTEGER             :: IIE,IIB,IJE,IJB
 !
 ! ---------------------------------------------------------------------------
 !                                              
@@ -157,32 +156,28 @@ IKTB=D%NKTB
 IKTE=D%NKTE
 IKB=D%NKB
 IKE=D%NKE
-IIE=D%NIEC
-IIB=D%NIBC
-IJE=D%NJEC
-IJB=D%NJBC
 !
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-ZY(IIB:IIE,IJB:IJE,IKB) = PVARM(IIB:IIE,IJB:IJE,IKB)  + PTSTEP*PSOURCE(IIB:IIE,IJB:IJE,IKB) -   &
-  PEXPL / PRHODJ(IIB:IIE,IJB:IJE,IKB) * PA(IIB:IIE,IJB:IJE,IKB+D%NKL) *  & 
-  (PVARM(IIB:IIE,IJB:IJE,IKB+D%NKL) - PVARM(IIB:IIE,IJB:IJE,IKB))
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+ZY(1:D%NIJT,IKB) = PVARM(1:D%NIJT,IKB)  + PTSTEP*PSOURCE(1:D%NIJT,IKB) -   &
+  PEXPL / PRHODJ(1:D%NIJT,IKB) * PA(1:D%NIJT,IKB+D%NKL) *  & 
+  (PVARM(1:D%NIJT,IKB+D%NKL) - PVARM(1:D%NIJT,IKB))
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 DO JK=IKTB+1,IKTE-1
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZY(IIB:IIE,IJB:IJE,JK)= PVARM(IIB:IIE,IJB:IJE,JK)  + PTSTEP*PSOURCE(IIB:IIE,IJB:IJE,JK) -               &
-      PEXPL / PRHODJ(IIB:IIE,IJB:IJE,JK) *                                           &
-                             ( PVARM(IIB:IIE,IJB:IJE,JK-D%NKL)*PA(IIB:IIE,IJB:IJE,JK)                &
-                              -PVARM(IIB:IIE,IJB:IJE,JK)*(PA(IIB:IIE,IJB:IJE,JK)+PA(IIB:IIE,IJB:IJE,JK+D%NKL))   &
-                              +PVARM(IIB:IIE,IJB:IJE,JK+D%NKL)*PA(IIB:IIE,IJB:IJE,JK+D%NKL)              &
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZY(1:D%NIJT,JK)= PVARM(1:D%NIJT,JK)  + PTSTEP*PSOURCE(1:D%NIJT,JK) -               &
+      PEXPL / PRHODJ(1:D%NIJT,JK) *                                           &
+                             ( PVARM(1:D%NIJT,JK-D%NKL)*PA(1:D%NIJT,JK)                &
+                              -PVARM(1:D%NIJT,JK)*(PA(1:D%NIJT,JK)+PA(1:D%NIJT,JK+D%NKL))   &
+                              +PVARM(1:D%NIJT,JK+D%NKL)*PA(1:D%NIJT,JK+D%NKL)              &
                              ) 
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
 END DO
 ! 
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-ZY(IIB:IIE,IJB:IJE,IKE)= PVARM(IIB:IIE,IJB:IJE,IKE) + PTSTEP*PSOURCE(IIB:IIE,IJB:IJE,IKE) +               &
-  PEXPL / PRHODJ(IIB:IIE,IJB:IJE,IKE) * PA(IIB:IIE,IJB:IJE,IKE) * (PVARM(IIB:IIE,IJB:IJE,IKE)-PVARM(IIB:IIE,IJB:IJE,IKE-D%NKL))
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+ZY(1:D%NIJT,IKE)= PVARM(1:D%NIJT,IKE) + PTSTEP*PSOURCE(1:D%NIJT,IKE) +               &
+  PEXPL / PRHODJ(1:D%NIJT,IKE) * PA(1:D%NIJT,IKE) * (PVARM(1:D%NIJT,IKE)-PVARM(1:D%NIJT,IKE-D%NKL))
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 !
 !*       2.  INVERSION OF THE TRIDIAGONAL SYSTEM
@@ -193,55 +188,55 @@ IF ( PIMPL > 1.E-10 ) THEN
   !
   !  going up
   !
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZBET(IIB:IIE,IJB:IJE) = 1. + PIMPL * (PDIAG(IIB:IIE,IJB:IJE,IKB)-PA(IIB:IIE,IJB:IJE,IKB+D%NKL) / PRHODJ(IIB:IIE,IJB:IJE,IKB))
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZBET(1:D%NIJT) = 1. + PIMPL * (PDIAG(1:D%NIJT,IKB)-PA(1:D%NIJT,IKB+D%NKL) / PRHODJ(1:D%NIJT,IKB))
                                                     ! bet = b(ikb)
-  PVARP(IIB:IIE,IJB:IJE,IKB) = ZY(IIB:IIE,IJB:IJE,IKB) / ZBET(IIB:IIE,IJB:IJE)                
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)               
+  PVARP(1:D%NIJT,IKB) = ZY(1:D%NIJT,IKB) / ZBET(1:D%NIJT)                
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)               
   !
   DO JK = IKB+D%NKL,IKE-D%NKL,D%NKL
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    ZGAM(IIB:IIE,IJB:IJE,JK) = PIMPL * PA(IIB:IIE,IJB:IJE,JK) / PRHODJ(IIB:IIE,IJB:IJE,JK-D%NKL) / ZBET(IIB:IIE,IJB:IJE)  
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    ZGAM(1:D%NIJT,JK) = PIMPL * PA(1:D%NIJT,JK) / PRHODJ(1:D%NIJT,JK-D%NKL) / ZBET(1:D%NIJT)  
                                                     ! gam(k) = c(k-1) / bet
-    ZBET(IIB:IIE,IJB:IJE)    = 1. + PIMPL * ( PDIAG(IIB:IIE,IJB:IJE,JK) -                     &
-                                 (  PA(IIB:IIE,IJB:IJE,JK) * (1. + ZGAM(IIB:IIE,IJB:IJE,JK))  &
-                                  + PA(IIB:IIE,IJB:IJE,JK+D%NKL)                      &
-                                 ) / PRHODJ(IIB:IIE,IJB:IJE,JK)                   &
+    ZBET(1:D%NIJT)    = 1. + PIMPL * ( PDIAG(1:D%NIJT,JK) -                     &
+                                 (  PA(1:D%NIJT,JK) * (1. + ZGAM(1:D%NIJT,JK))  &
+                                  + PA(1:D%NIJT,JK+D%NKL)                      &
+                                 ) / PRHODJ(1:D%NIJT,JK)                   &
                                 )                   ! bet = b(k) - a(k)* gam(k)  
-    PVARP(IIB:IIE,IJB:IJE,JK)= ( ZY(IIB:IIE,IJB:IJE,JK) - PIMPL * PA(IIB:IIE,IJB:IJE,JK) / PRHODJ(IIB:IIE,IJB:IJE,JK) &
-                    * PVARP(IIB:IIE,IJB:IJE,JK-D%NKL)                                 &
-                   ) / ZBET(IIB:IIE,IJB:IJE)
+    PVARP(1:D%NIJT,JK)= ( ZY(1:D%NIJT,JK) - PIMPL * PA(1:D%NIJT,JK) / PRHODJ(1:D%NIJT,JK) &
+                    * PVARP(1:D%NIJT,JK-D%NKL)                                 &
+                   ) / ZBET(1:D%NIJT)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_expand_array(JIJ=1:D%NIJT)
   ! special treatment for the last level
-  ZGAM(IIB:IIE,IJB:IJE,IKE) = PIMPL * PA(IIB:IIE,IJB:IJE,IKE) / PRHODJ(IIB:IIE,IJB:IJE,IKE-D%NKL) / ZBET(IIB:IIE,IJB:IJE) 
+  ZGAM(1:D%NIJT,IKE) = PIMPL * PA(1:D%NIJT,IKE) / PRHODJ(1:D%NIJT,IKE-D%NKL) / ZBET(1:D%NIJT) 
                                                     ! gam(k) = c(k-1) / bet
-  ZBET(IIB:IIE,IJB:IJE)    = 1. + PIMPL * ( PDIAG(IIB:IIE,IJB:IJE,IKE) -                   &
-         (  PA(IIB:IIE,IJB:IJE,IKE) * (1. + ZGAM(IIB:IIE,IJB:IJE,IKE)) ) / PRHODJ(IIB:IIE,IJB:IJE,IKE) &
+  ZBET(1:D%NIJT)    = 1. + PIMPL * ( PDIAG(1:D%NIJT,IKE) -                   &
+         (  PA(1:D%NIJT,IKE) * (1. + ZGAM(1:D%NIJT,IKE)) ) / PRHODJ(1:D%NIJT,IKE) &
                               )  
                                                     ! bet = b(k) - a(k)* gam(k)  
-  PVARP(IIB:IIE,IJB:IJE,IKE)= ( ZY(IIB:IIE,IJB:IJE,IKE) - PIMPL * PA(IIB:IIE,IJB:IJE,IKE) / PRHODJ(IIB:IIE,IJB:IJE,IKE) &
-                                * PVARP(IIB:IIE,IJB:IJE,IKE-D%NKL)                      &
-                 ) / ZBET(IIB:IIE,IJB:IJE)
+  PVARP(1:D%NIJT,IKE)= ( ZY(1:D%NIJT,IKE) - PIMPL * PA(1:D%NIJT,IKE) / PRHODJ(1:D%NIJT,IKE) &
+                                * PVARP(1:D%NIJT,IKE-D%NKL)                      &
+                 ) / ZBET(1:D%NIJT)
                                        ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   !
   !  going down
   !
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
   DO JK = IKE-D%NKL,IKB,-1*D%NKL
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    PVARP(IIB:IIE,IJB:IJE,JK) = PVARP(IIB:IIE,IJB:IJE,JK) - ZGAM(IIB:IIE,IJB:IJE,JK+D%NKL) * PVARP(IIB:IIE,IJB:IJE,JK+D%NKL) 
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+    PVARP(1:D%NIJT,JK) = PVARP(1:D%NIJT,JK) - ZGAM(1:D%NIJT,JK+D%NKL) * PVARP(1:D%NIJT,JK+D%NKL) 
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
 !
 ELSE
 ! 
   DO JK=IKTB,IKTE
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    PVARP(IIB:IIE,IJB:IJE,JK) = ZY(IIB:IIE,IJB:IJE,JK)
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    PVARP(1:D%NIJT,JK) = ZY(1:D%NIJT,JK)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
 !
 END IF 
@@ -250,10 +245,10 @@ END IF
 !*       3.  FILL THE UPPER AND LOWER EXTERNAL VALUES
 !            ----------------------------------------
 !
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-PVARP(IIB:IIE,IJB:IJE,D%NKA)=PVARP(IIB:IIE,IJB:IJE,IKB)
-PVARP(IIB:IIE,IJB:IJE,D%NKU)=PVARP(IIB:IIE,IJB:IJE,IKE)
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+PVARP(1:D%NIJT,D%NKA)=PVARP(1:D%NIJT,IKB)
+PVARP(1:D%NIJT,D%NKU)=PVARP(1:D%NIJT,IKE)
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/common/turb/mode_tridiag_wind.F90 b/src/common/turb/mode_tridiag_wind.F90
index fa0816c19..a2052df7b 100644
--- a/src/common/turb/mode_tridiag_wind.F90
+++ b/src/common/turb/mode_tridiag_wind.F90
@@ -126,28 +126,27 @@ IMPLICIT NONE
 !*       0.1 declarations of arguments
 !
 TYPE(DIMPHYEX_t),     INTENT(IN)   :: D
-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, DIMENSION(D%NIT,D%NJT),      INTENT(IN)  :: PCOEFS      ! implicit coeff for the
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PVARM       ! variable at t-1  
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PA          ! upper diag. elements
+REAL, DIMENSION(D%NIJT),      INTENT(IN)  :: PCOEFS      ! implicit coeff for the
                                                       ! surface flux
 REAL,                      INTENT(IN)  :: PTSTEP      ! Double time step
 REAL,                      INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PRHODJA     ! (dry rho)*J averaged 
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PRHODJA     ! (dry rho)*J averaged 
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
 !
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT),    INTENT(OUT) :: PVARP       ! variable at t+1        
+REAL, DIMENSION(D%NIJT,D%NKT),    INTENT(OUT) :: PVARP       ! variable at t+1        
 !
 !*       0.2 declarations of local variables
 !
-REAL, DIMENSION(D%NIT,D%NJT,D%NKT)  :: ZY ,ZGAM 
+REAL, DIMENSION(D%NIJT,D%NKT)  :: ZY ,ZGAM 
                                          ! RHS of the equation, 3D work array
-REAL, DIMENSION(D%NIT,D%NJT)                :: ZBET
+REAL, DIMENSION(D%NIJT)                :: ZBET
                                          ! 2D work array
-INTEGER             :: JI,JJ,JK     ! loop counter
+INTEGER             :: JIJ,JK     ! loop counter
 INTEGER             :: IKB,IKE      ! inner vertical limits
 INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain 
-INTEGER             :: IIE,IIB,IJE,IJB
 !
 ! ---------------------------------------------------------------------------
 !                                              
@@ -162,32 +161,28 @@ IKTB=D%NKTB
 IKTE=D%NKTE
 IKB=D%NKB
 IKE=D%NKE
-IIE=D%NIEC
-IIB=D%NIBC
-IJE=D%NJEC
-IJB=D%NJBC
 !
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-ZY(IIB:IIE,IJB:IJE,IKB) = PVARM(IIB:IIE,IJB:IJE,IKB)  + PTSTEP*PSOURCE(IIB:IIE,IJB:IJE,IKB) -   &
-  PEXPL / PRHODJA(IIB:IIE,IJB:IJE,IKB) * PA(IIB:IIE,IJB:IJE,IKB+D%NKL) * &
-  (PVARM(IIB:IIE,IJB:IJE,IKB+D%NKL) - PVARM(IIB:IIE,IJB:IJE,IKB))
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+ZY(1:D%NIJT,IKB) = PVARM(1:D%NIJT,IKB)  + PTSTEP*PSOURCE(1:D%NIJT,IKB) -   &
+  PEXPL / PRHODJA(1:D%NIJT,IKB) * PA(1:D%NIJT,IKB+D%NKL) * &
+  (PVARM(1:D%NIJT,IKB+D%NKL) - PVARM(1:D%NIJT,IKB))
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 DO JK=IKTB+1,IKTE-1
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZY(IIB:IIE,IJB:IJE,JK)= PVARM(IIB:IIE,IJB:IJE,JK)  + PTSTEP*PSOURCE(IIB:IIE,IJB:IJE,JK) -               &
-      PEXPL / PRHODJA(IIB:IIE,IJB:IJE,JK) *                                          &
-                             ( PVARM(IIB:IIE,IJB:IJE,JK-D%NKL)*PA(IIB:IIE,IJB:IJE,JK)                &
-                              -PVARM(IIB:IIE,IJB:IJE,JK)*(PA(IIB:IIE,IJB:IJE,JK)+PA(IIB:IIE,IJB:IJE,JK+D%NKL))   &
-                              +PVARM(IIB:IIE,IJB:IJE,JK+D%NKL)*PA(IIB:IIE,IJB:IJE,JK+D%NKL)              &
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZY(1:D%NIJT,JK)= PVARM(1:D%NIJT,JK)  + PTSTEP*PSOURCE(1:D%NIJT,JK) -               &
+      PEXPL / PRHODJA(1:D%NIJT,JK) *                                          &
+                             ( PVARM(1:D%NIJT,JK-D%NKL)*PA(1:D%NIJT,JK)                &
+                              -PVARM(1:D%NIJT,JK)*(PA(1:D%NIJT,JK)+PA(1:D%NIJT,JK+D%NKL))   &
+                              +PVARM(1:D%NIJT,JK+D%NKL)*PA(1:D%NIJT,JK+D%NKL)              &
                              ) 
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
 END DO
 ! 
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-ZY(IIB:IIE,IJB:IJE,IKE)= PVARM(IIB:IIE,IJB:IJE,IKE) + PTSTEP*PSOURCE(IIB:IIE,IJB:IJE,IKE) +               &
-  PEXPL / PRHODJA(IIB:IIE,IJB:IJE,IKE) * PA(IIB:IIE,IJB:IJE,IKE) * (PVARM(IIB:IIE,IJB:IJE,IKE)-PVARM(IIB:IIE,IJB:IJE,IKE-D%NKL))
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+ZY(1:D%NIJT,IKE)= PVARM(1:D%NIJT,IKE) + PTSTEP*PSOURCE(1:D%NIJT,IKE) +               &
+  PEXPL / PRHODJA(1:D%NIJT,IKE) * PA(1:D%NIJT,IKE) * (PVARM(1:D%NIJT,IKE)-PVARM(1:D%NIJT,IKE-D%NKL))
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 !
 !*       2.  INVERSION OF THE TRIDIAGONAL SYSTEM
@@ -198,53 +193,53 @@ IF ( PIMPL > 1.E-10 ) THEN
   !
   !  going up
   !
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-  ZBET(IIB:IIE,IJB:IJE) = 1. - PIMPL * (  PA(IIB:IIE,IJB:IJE,IKB+D%NKL) / PRHODJA(IIB:IIE,IJB:IJE,IKB) &  
-                            + PCOEFS(IIB:IIE,IJB:IJE) *  PTSTEP        )   ! bet = b(ikb)
-  PVARP(IIB:IIE,IJB:IJE,IKB) = ZY(IIB:IIE,IJB:IJE,IKB) / ZBET(IIB:IIE,IJB:IJE)
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)               
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+  ZBET(1:D%NIJT) = 1. - PIMPL * (  PA(1:D%NIJT,IKB+D%NKL) / PRHODJA(1:D%NIJT,IKB) &  
+                            + PCOEFS(1:D%NIJT) *  PTSTEP        )   ! bet = b(ikb)
+  PVARP(1:D%NIJT,IKB) = ZY(1:D%NIJT,IKB) / ZBET(1:D%NIJT)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)               
   !
   DO JK = IKB+D%NKL,IKE-D%NKL,D%NKL
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    ZGAM(IIB:IIE,IJB:IJE,JK) = PIMPL * PA(IIB:IIE,IJB:IJE,JK) / PRHODJA(IIB:IIE,IJB:IJE,JK-D%NKL) / ZBET(IIB:IIE,IJB:IJE)  
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    ZGAM(1:D%NIJT,JK) = PIMPL * PA(1:D%NIJT,JK) / PRHODJA(1:D%NIJT,JK-D%NKL) / ZBET(1:D%NIJT)  
                                                     ! gam(k) = c(k-1) / bet
-    ZBET(IIB:IIE,IJB:IJE)    = 1. - PIMPL * (  PA(IIB:IIE,IJB:IJE,JK) * (1. + ZGAM(IIB:IIE,IJB:IJE,JK))  &
-                                 + PA(IIB:IIE,IJB:IJE,JK+D%NKL)                      &
-                                ) / PRHODJA(IIB:IIE,IJB:IJE,JK)  
+    ZBET(1:D%NIJT)    = 1. - PIMPL * (  PA(1:D%NIJT,JK) * (1. + ZGAM(1:D%NIJT,JK))  &
+                                 + PA(1:D%NIJT,JK+D%NKL)                      &
+                                ) / PRHODJA(1:D%NIJT,JK)  
                                                     ! bet = b(k) - a(k)* gam(k)  
-    PVARP(IIB:IIE,IJB:IJE,JK)= ( ZY(IIB:IIE,IJB:IJE,JK) - PIMPL * PA(IIB:IIE,IJB:IJE,JK) / PRHODJA(IIB:IIE,IJB:IJE,JK) &
-                    * PVARP(IIB:IIE,IJB:IJE,JK-D%NKL)                                 &
-                   ) / ZBET(IIB:IIE,IJB:IJE)
+    PVARP(1:D%NIJT,JK)= ( ZY(1:D%NIJT,JK) - PIMPL * PA(1:D%NIJT,JK) / PRHODJA(1:D%NIJT,JK) &
+                    * PVARP(1:D%NIJT,JK-D%NKL)                                 &
+                   ) / ZBET(1:D%NIJT)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_expand_array(JIJ=1:D%NIJT)
   ! special treatment for the last level
-  ZGAM(IIB:IIE,IJB:IJE,IKE) = PIMPL * PA(IIB:IIE,IJB:IJE,IKE) / PRHODJA(IIB:IIE,IJB:IJE,IKE-D%NKL) / ZBET(IIB:IIE,IJB:IJE) 
+  ZGAM(1:D%NIJT,IKE) = PIMPL * PA(1:D%NIJT,IKE) / PRHODJA(1:D%NIJT,IKE-D%NKL) / ZBET(1:D%NIJT) 
                                                     ! gam(k) = c(k-1) / bet
-  ZBET(IIB:IIE,IJB:IJE)    = 1. - PIMPL * (  PA(IIB:IIE,IJB:IJE,IKE) * (1. + ZGAM(IIB:IIE,IJB:IJE,IKE))  &
-                              ) / PRHODJA(IIB:IIE,IJB:IJE,IKE)  
+  ZBET(1:D%NIJT)    = 1. - PIMPL * (  PA(1:D%NIJT,IKE) * (1. + ZGAM(1:D%NIJT,IKE))  &
+                              ) / PRHODJA(1:D%NIJT,IKE)  
                                                     ! bet = b(k) - a(k)* gam(k)  
-  PVARP(IIB:IIE,IJB:IJE,IKE)= ( ZY(IIB:IIE,IJB:IJE,IKE) - PIMPL * PA(IIB:IIE,IJB:IJE,IKE) / PRHODJA(IIB:IIE,IJB:IJE,IKE) &
-                                 * PVARP(IIB:IIE,IJB:IJE,IKE-D%NKL)                      &
-                  ) / ZBET(IIB:IIE,IJB:IJE)
+  PVARP(1:D%NIJT,IKE)= ( ZY(1:D%NIJT,IKE) - PIMPL * PA(1:D%NIJT,IKE) / PRHODJA(1:D%NIJT,IKE) &
+                                 * PVARP(1:D%NIJT,IKE-D%NKL)                      &
+                  ) / ZBET(1:D%NIJT)
                                         ! res(k) = (y(k) -a(k)*res(k-1))/ bet 
   !
   !  going down
   !
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
   DO JK = IKE-D%NKL,IKB,-1*D%NKL
-  !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    PVARP(IIB:IIE,IJB:IJE,JK) = PVARP(IIB:IIE,IJB:IJE,JK) - ZGAM(IIB:IIE,IJB:IJE,JK+D%NKL) * PVARP(IIB:IIE,IJB:IJE,JK+D%NKL) 
-  !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+  !$mnh_expand_array(JIJ=1:D%NIJT)
+    PVARP(1:D%NIJT,JK) = PVARP(1:D%NIJT,JK) - ZGAM(1:D%NIJT,JK+D%NKL) * PVARP(1:D%NIJT,JK+D%NKL) 
+  !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
 !
 ELSE
 ! 
   DO JK=IKTB,IKTE
-    !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-    PVARP(IIB:IIE,IJB:IJE,JK) = ZY(IIB:IIE,IJB:IJE,JK)
-    !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+    !$mnh_expand_array(JIJ=1:D%NIJT)
+    PVARP(1:D%NIJT,JK) = ZY(1:D%NIJT,JK)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT)
   END DO
 !
 END IF 
@@ -253,10 +248,10 @@ END IF
 !*       3.  FILL THE UPPER AND LOWER EXTERNAL VALUES
 !            ----------------------------------------
 !
-!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
-PVARP(IIB:IIE,IJB:IJE,D%NKA)=PVARP(IIB:IIE,IJB:IJE,IKB)
-PVARP(IIB:IIE,IJB:IJE,D%NKU)=PVARP(IIB:IIE,IJB:IJE,IKE)
-!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE)
+!$mnh_expand_array(JIJ=1:D%NIJT)
+PVARP(1:D%NIJT,D%NKA)=PVARP(1:D%NIJT,IKB)
+PVARP(1:D%NIJT,D%NKU)=PVARP(1:D%NIJT,IKE)
+!$mnh_end_expand_array(JIJ=1:D%NIJT)
 !
 !-------------------------------------------------------------------------------
 !
-- 
GitLab