diff --git a/src/common/turb/mode_bl89.F90 b/src/common/turb/mode_bl89.F90
index 3ebc2670a6c191673bca009c308c4aac7e96da34..a60377ec73695e9364504a27981490438e4b1e59 100644
--- a/src/common/turb/mode_bl89.F90
+++ b/src/common/turb/mode_bl89.F90
@@ -71,15 +71,15 @@ IMPLICIT NONE
 TYPE(DIMPHYEX_t),         INTENT(IN)  :: D
 TYPE(CST_t),              INTENT(IN)  :: CST
 TYPE(CSTURB_t),           INTENT(IN)  :: CSTURB
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN),TARGET  :: PZZ
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN),TARGET  :: PDZZ
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN),TARGET  :: PTHVREF
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN),TARGET  :: PTHLM       ! conservative pot. temp.
+REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN),TARGET  :: PZZ
+REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN),TARGET  :: PDZZ
+REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN),TARGET  :: PTHVREF
+REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN),TARGET  :: PTHLM       ! conservative pot. temp.
 INTEGER,                  INTENT(IN)  :: KRR
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT,KRR), INTENT(IN),TARGET :: PRM       ! water var.
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN),TARGET  :: PTKEM     ! TKE
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN),TARGET  :: PSHEAR
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT),TARGET :: PLM       ! Mixing length
+REAL, DIMENSION(D%NIJT,D%NKT,KRR), INTENT(IN),TARGET :: PRM       ! water var.
+REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN),TARGET  :: PTKEM     ! TKE
+REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN),TARGET  :: PSHEAR
+REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(OUT),TARGET :: PLM       ! Mixing length
 LOGICAL,                  INTENT(IN)  ::  OOCEAN       ! switch for Ocean model version
 CHARACTER(LEN=6),         INTENT(IN)  ::  HPROGRAM     ! CPROGRAM is the program currently running (modd_conf)
 !   thermodynamical variables PTHLM=Theta at the begining
@@ -90,24 +90,24 @@ CHARACTER(LEN=6),         INTENT(IN)  ::  HPROGRAM     ! CPROGRAM is the program
 INTEGER :: IKB,IKE
 INTEGER :: IKTB,IKTE    ! start, end of k loops in physical domain
 
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: ZVPT  ! Virtual Potential Temp at half levels
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: ZDELTVPT
+REAL, DIMENSION(D%NIJT,D%NKT) :: ZVPT  ! Virtual Potential Temp at half levels
+REAL, DIMENSION(D%NIJT,D%NKT) :: ZDELTVPT
             ! Increment of Virtual Potential Temp between two following levels
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: ZHLVPT
+REAL, DIMENSION(D%NIJT,D%NKT) :: ZHLVPT
             ! Virtual Potential Temp at half levels
-REAL, DIMENSION(D%NIT*D%NJT) ::  ZLWORK,ZINTE
+REAL, DIMENSION(D%NIJT) ::  ZLWORK,ZINTE
 !           ! downwards then upwards vertical displacement,
 !           ! residual internal energy,
 !           ! residual potential energy
 !           ! input and output arrays packed according one horizontal coord.
 !           ! input array packed according one horizontal coord.
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: ZSUM ! to replace SUM function
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: ZG_O_THVREF
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: ZSQRT_TKE
-REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: PLMDN
+REAL, DIMENSION(D%NIJT,D%NKT) :: ZSUM ! to replace SUM function
+REAL, DIMENSION(D%NIJT,D%NKT) :: ZG_O_THVREF
+REAL, DIMENSION(D%NIJT,D%NKT) :: ZSQRT_TKE
+REAL, DIMENSION(D%NIJT,D%NKT) :: PLMDN
 !
-INTEGER :: IIU,IJU,IPROMA
-INTEGER :: J1D        ! horizontal loop counter
+INTEGER :: IIU,IJU
+INTEGER :: JIJ        ! horizontal loop counter
 INTEGER :: JK,JKK     ! loop counters
 INTEGER :: JRR        ! moist loop counter
 REAL    :: ZRVORD     ! Rv/Rd
@@ -121,7 +121,6 @@ IF (LHOOK) CALL DR_HOOK('BL89',0,ZHOOK_HANDLE)
 Z2SQRT2=2.*SQRT(2.)
 !
 ZRVORD = CST%XRV / CST%XRD
-IPROMA = D%NIT*D%NJT
 !
 !-------------------------------------------------------------------------------
 !
@@ -133,21 +132,21 @@ IPROMA = D%NIT*D%NJT
 !
 IF (OOCEAN) THEN
   DO JK=1,D%NKT
-    DO J1D=1,IPROMA
-      ZG_O_THVREF(J1D,JK) = CST%XG * CST%XALPHAOC
+    DO JIJ=1,D%NIJT
+      ZG_O_THVREF(JIJ,JK) = CST%XG * CST%XALPHAOC
     END DO
   END DO
 ELSE !Atmosphere case
   DO JK=1,D%NKT
-    DO J1D=1,IPROMA
-      ZG_O_THVREF(J1D,JK) = CST%XG / PTHVREF(J1D,JK)
+    DO JIJ=1,D%NIJT
+      ZG_O_THVREF(JIJ,JK) = CST%XG / PTHVREF(JIJ,JK)
     END DO
   END DO
 END IF
 !
-!$mnh_expand_array(J1D=1:IPROMA,JK=1:D%NKT)
-ZSQRT_TKE(:,:) = SQRT(PTKEM(:,:))
-!$mnh_end_expand_array(J1D=1:IPROMA,JK=1:D%NKT)
+!$mnh_expand_array(JIJ=1:D%NIJT,JK=1:D%NKT)
+ZSQRT_TKE(1:D%NIJT,1:D%NKT) = SQRT(PTKEM(1:D%NIJT,1:D%NKT))
+!$mnh_end_expand_array(JIJ=1:D%NIJT,JK=1:D%NKT)
 !
 !ZBL89EXP is defined here because (and not in ini_cturb) because CSTURB%XCED is defined in read_exseg (depending on BL89/RM17)
 ZBL89EXP = LOG(16.)/(4.*LOG(CST%XKARMAN)+LOG(CSTURB%XCED)-3.*LOG(CSTURB%XCMFS))
@@ -158,18 +157,18 @@ ZUSRBL89 = 1./ZBL89EXP
 !              -----------------------------------------------
 !
 IF(KRR /= 0) THEN
-  ZSUM(:,:) = 0.
+  ZSUM(1:D%NIJT,1:D%NKT) = 0.
   DO JRR=1,KRR
-    !$mnh_expand_array(J1D=1:IPROMA,JK=1:D%NKT)
-    ZSUM(:,:) = ZSUM(:,:)+PRM(:,:,JRR)
-    !$mnh_end_expand_array(J1D=1:IPROMA,JK=1:D%NKT)
+    !$mnh_expand_array(JIJ=1:D%NIJT,JK=1:D%NKT)
+    ZSUM(1:D%NIJT,1:D%NKT) = ZSUM(1:D%NIJT,1:D%NKT)+PRM(1:D%NIJT,1:D%NKT,JRR)
+    !$mnh_end_expand_array(JIJ=1:D%NIJT,JK=1:D%NKT)
   ENDDO
-  !$mnh_expand_array(J1D=1:IPROMA,JK=1:D%NKT)
-  ZVPT(:,:)=PTHLM(:,:) * ( 1. + ZRVORD*PRM(:,:,1) )  &
-                           / ( 1. + ZSUM(:,:) )
-  !$mnh_end_expand_array(J1D=1:IPROMA,JK=1:D%NKT)
+  !$mnh_expand_array(JIJ=1:D%NIJT,JK=1:D%NKT)
+  ZVPT(1:D%NIJT,1:D%NKT)=PTHLM(1:D%NIJT,1:D%NKT) * ( 1. + ZRVORD*PRM(1:D%NIJT,1:D%NKT,1) )  &
+                           / ( 1. + ZSUM(1:D%NIJT,1:D%NKT) )
+  !$mnh_end_expand_array(JIJ=1:D%NIJT,JK=1:D%NKT)
 ELSE
-  ZVPT(:,:)=PTHLM(:,:)
+  ZVPT(1:D%NIJT,1:D%NKT)=PTHLM(1:D%NIJT,1:D%NKT)
 END IF
 !
 !!!!!!!!!!!!
@@ -184,23 +183,23 @@ END IF
 !!!!!!!!!!!!
 !
 DO JK=D%NKTB,D%NKTE
-  DO J1D=1,IPROMA
-    ZDELTVPT(J1D,JK) = ZVPT(J1D,JK) - ZVPT(J1D,JK-D%NKL)
-    ZHLVPT(J1D,JK) = 0.5 * ( ZVPT(J1D,JK) + ZVPT(J1D,JK-D%NKL) )
+  DO JIJ=1,D%NIJT
+    ZDELTVPT(JIJ,JK) = ZVPT(JIJ,JK) - ZVPT(JIJ,JK-D%NKL)
+    ZHLVPT(JIJ,JK) = 0.5 * ( ZVPT(JIJ,JK) + ZVPT(JIJ,JK-D%NKL) )
   END DO
 END DO
 !
-DO J1D=1,IPROMA
-  ZDELTVPT(J1D,D%NKU) = ZVPT(J1D,D%NKU) - ZVPT(J1D,D%NKU-D%NKL)
-  ZDELTVPT(J1D,D%NKA) = 0.
-  ZHLVPT(J1D,D%NKU) = 0.5 * ( ZVPT(J1D,D%NKU) + ZVPT(J1D,D%NKU-D%NKL) )
-  ZHLVPT(J1D,D%NKA) = ZVPT(J1D,D%NKA)
+DO JIJ=1,D%NIJT
+  ZDELTVPT(JIJ,D%NKU) = ZVPT(JIJ,D%NKU) - ZVPT(JIJ,D%NKU-D%NKL)
+  ZDELTVPT(JIJ,D%NKA) = 0.
+  ZHLVPT(JIJ,D%NKU) = 0.5 * ( ZVPT(JIJ,D%NKU) + ZVPT(JIJ,D%NKU-D%NKL) )
+  ZHLVPT(JIJ,D%NKA) = ZVPT(JIJ,D%NKA)
 END DO
 !
 DO JK=1,D%NKT
-  DO J1D=1,IPROMA
-    IF(ABS(ZDELTVPT(J1D,JK))<CSTURB%XLINF) THEN
-      ZDELTVPT(J1D,JK)=CSTURB%XLINF
+  DO JIJ=1,D%NIJT
+    IF(ABS(ZDELTVPT(JIJ,JK))<CSTURB%XLINF) THEN
+      ZDELTVPT(JIJ,JK)=CSTURB%XLINF
     END IF
   END DO
 END DO
@@ -216,38 +215,38 @@ DO JK=D%NKTB,D%NKTE
 !
 !*       4.  mixing length for a downwards displacement
 !            ------------------------------------------
-  ZINTE(:)=PTKEM(:,JK)
+  ZINTE(1:D%NIJT)=PTKEM(1:D%NIJT,JK)
   ZLWORK=0.
   ZTESTM=1.
   DO JKK=JK,D%NKB,-D%NKL
     IF(ZTESTM > 0.) THEN
       ZTESTM=0.
-      DO J1D=1,IPROMA
-        ZTEST0=0.5+SIGN(0.5,ZINTE(J1D))
+      DO JIJ=1,D%NIJT
+        ZTEST0=0.5+SIGN(0.5,ZINTE(JIJ))
         !--------- SHEAR + STABILITY -----------
         ZPOTE = ZTEST0* &
-                (-ZG_O_THVREF(J1D,JK)*(ZHLVPT(J1D,JKK)-ZVPT(J1D,JK)) &
-                + CSTURB%XRM17*PSHEAR(J1D,JKK)*ZSQRT_TKE(J1D,JK) &
-                )*PDZZ(J1D,JKK)
+                (-ZG_O_THVREF(JIJ,JK)*(ZHLVPT(JIJ,JKK)-ZVPT(JIJ,JK)) &
+                + CSTURB%XRM17*PSHEAR(JIJ,JKK)*ZSQRT_TKE(JIJ,JK) &
+                )*PDZZ(JIJ,JKK)
 
-        ZTEST =0.5+SIGN(0.5,ZINTE(J1D)-ZPOTE)
+        ZTEST =0.5+SIGN(0.5,ZINTE(JIJ)-ZPOTE)
         ZTESTM=ZTESTM+ZTEST0
-        ZLWORK1=PDZZ(J1D,JKK)
+        ZLWORK1=PDZZ(JIJ,JKK)
 
         !--------- SHEAR + STABILITY ----------- 
-        ZLWORK2 = (ZG_O_THVREF(J1D,JK) *(ZVPT(J1D,JKK) - ZVPT(J1D,JK))  & 
-          -CSTURB%XRM17*PSHEAR(J1D,JKK)*ZSQRT_TKE(J1D,JK) &
-          + sqrt(abs( (CSTURB%XRM17*PSHEAR(J1D,JKK)*ZSQRT_TKE(J1D,JK) &
-          + ( -ZG_O_THVREF(J1D,JK) * (ZVPT(J1D,JKK) - ZVPT(J1D,JK)) ))**2.0 + &
-          2. * ZINTE(J1D) * &
+        ZLWORK2 = (ZG_O_THVREF(JIJ,JK) *(ZVPT(JIJ,JKK) - ZVPT(JIJ,JK))  & 
+          -CSTURB%XRM17*PSHEAR(JIJ,JKK)*ZSQRT_TKE(JIJ,JK) &
+          + sqrt(abs( (CSTURB%XRM17*PSHEAR(JIJ,JKK)*ZSQRT_TKE(JIJ,JK) &
+          + ( -ZG_O_THVREF(JIJ,JK) * (ZVPT(JIJ,JKK) - ZVPT(JIJ,JK)) ))**2.0 + &
+          2. * ZINTE(JIJ) * &
 #ifdef REPRO48
-          ZG_O_THVREF(J1D,JK) * ZDELTVPT(J1D,JKK)/ PDZZ(J1D,JKK)))) / &
+          ZG_O_THVREF(JIJ,JK) * ZDELTVPT(JIJ,JKK)/ PDZZ(JIJ,JKK)))) / &
 #else
-          (ZG_O_THVREF(J1D,JK) * ZDELTVPT(J1D,JKK)/ PDZZ(J1D,JKK))))) / &
+          (ZG_O_THVREF(JIJ,JK) * ZDELTVPT(JIJ,JKK)/ PDZZ(JIJ,JKK))))) / &
 #endif
-          (ZG_O_THVREF(J1D,JK) * ZDELTVPT(J1D,JKK) / PDZZ(J1D,JKK))
-        ZLWORK(J1D)=ZLWORK(J1D)+ZTEST0*(ZTEST*ZLWORK1+(1-ZTEST)*ZLWORK2)
-        ZINTE(J1D) = ZINTE(J1D) - ZPOTE
+          (ZG_O_THVREF(JIJ,JK) * ZDELTVPT(JIJ,JKK) / PDZZ(JIJ,JKK))
+        ZLWORK(JIJ)=ZLWORK(JIJ)+ZTEST0*(ZTEST*ZLWORK1+(1-ZTEST)*ZLWORK2)
+        ZINTE(JIJ) = ZINTE(JIJ) - ZPOTE
       END DO
     ENDIF
   END DO
@@ -256,8 +255,8 @@ DO JK=D%NKTB,D%NKTE
 !*       5.  intermediate storage of the final mixing length
 !            -----------------------------------------------
 !
-  DO J1D=1,IPROMA
-    PLMDN(J1D,JK)=MIN(ZLWORK(J1D),0.5*(PZZ(J1D,JK)+PZZ(J1D,JK+D%NKL))-PZZ(J1D,D%NKB))
+  DO JIJ=1,D%NIJT
+    PLMDN(JIJ,JK)=MIN(ZLWORK(JIJ),0.5*(PZZ(JIJ,JK)+PZZ(JIJ,JK+D%NKL))-PZZ(JIJ,D%NKB))
   END DO
 !
 !-------------------------------------------------------------------------------
@@ -265,38 +264,38 @@ DO JK=D%NKTB,D%NKTE
 !*       6.  mixing length for an upwards displacement
 !            -----------------------------------------
 !
-  ZINTE(:)=PTKEM(:,JK)
-  ZLWORK(:)=0.
+  ZINTE(1:D%NIJT)=PTKEM(1:D%NIJT,JK)
+  ZLWORK(1:D%NIJT)=0.
   ZTESTM=1.
 !
   DO JKK=JK+D%NKL,D%NKE,D%NKL
     IF(ZTESTM > 0.) THEN
       ZTESTM=0.
-      DO J1D=1,D%NIT*D%NJT
-        ZTEST0=0.5+SIGN(0.5,ZINTE(J1D))
+      DO JIJ=1,D%NIJT
+        ZTEST0=0.5+SIGN(0.5,ZINTE(JIJ))
         !--------- SHEAR + STABILITY -----------
         ZPOTE = ZTEST0* &
-                (ZG_O_THVREF(J1D,JK)*(ZHLVPT(J1D,JKK)-ZVPT(J1D,JK)) &
-                +CSTURB%XRM17*PSHEAR(J1D,JKK)*ZSQRT_TKE(J1D,JK) &
-                )*PDZZ(J1D,JKK)
-        ZTEST =0.5+SIGN(0.5,ZINTE(J1D)-ZPOTE)
+                (ZG_O_THVREF(JIJ,JK)*(ZHLVPT(JIJ,JKK)-ZVPT(JIJ,JK)) &
+                +CSTURB%XRM17*PSHEAR(JIJ,JKK)*ZSQRT_TKE(JIJ,JK) &
+                )*PDZZ(JIJ,JKK)
+        ZTEST =0.5+SIGN(0.5,ZINTE(JIJ)-ZPOTE)
         ZTESTM=ZTESTM+ZTEST0
-        ZLWORK1=PDZZ(J1D,JKK)
+        ZLWORK1=PDZZ(JIJ,JKK)
         !--------- SHEAR + STABILITY ----------- 
-        ZLWORK2= ( - ZG_O_THVREF(J1D,JK) *(ZVPT(J1D,JKK-D%NKL) - ZVPT(J1D,JK) )  &
-                   - CSTURB%XRM17*PSHEAR(J1D,JKK)*ZSQRT_TKE(J1D,JK)  &
+        ZLWORK2= ( - ZG_O_THVREF(JIJ,JK) *(ZVPT(JIJ,JKK-D%NKL) - ZVPT(JIJ,JK) )  &
+                   - CSTURB%XRM17*PSHEAR(JIJ,JKK)*ZSQRT_TKE(JIJ,JK)  &
           + SQRT (ABS(                                                       &
-          (CSTURB%XRM17*PSHEAR(J1D,JKK)*ZSQRT_TKE(J1D,JK)   &
-            + ( ZG_O_THVREF(J1D,JK) * (ZVPT(J1D,JKK-D%NKL) - ZVPT(J1D,JK))) )**2    &
-            + 2. * ZINTE(J1D) * &
+          (CSTURB%XRM17*PSHEAR(JIJ,JKK)*ZSQRT_TKE(JIJ,JK)   &
+            + ( ZG_O_THVREF(JIJ,JK) * (ZVPT(JIJ,JKK-D%NKL) - ZVPT(JIJ,JK))) )**2    &
+            + 2. * ZINTE(JIJ) * &
 #ifdef REPRO48
-             ZG_O_THVREF(J1D,JK)* ZDELTVPT(J1D,JKK)/PDZZ(J1D,JKK)))) / &
+             ZG_O_THVREF(JIJ,JK)* ZDELTVPT(JIJ,JKK)/PDZZ(JIJ,JKK)))) / &
 #else
-            (ZG_O_THVREF(J1D,JK)* ZDELTVPT(J1D,JKK)/PDZZ(J1D,JKK))))) / &
+            (ZG_O_THVREF(JIJ,JK)* ZDELTVPT(JIJ,JKK)/PDZZ(JIJ,JKK))))) / &
 #endif
-            (ZG_O_THVREF(J1D,JK) * ZDELTVPT(J1D,JKK) / PDZZ(J1D,JKK))
-        ZLWORK(J1D)=ZLWORK(J1D)+ZTEST0*(ZTEST*ZLWORK1+(1-ZTEST)*ZLWORK2)
-        ZINTE(J1D) = ZINTE(J1D) - ZPOTE
+            (ZG_O_THVREF(JIJ,JK) * ZDELTVPT(JIJ,JKK) / PDZZ(JIJ,JKK))
+        ZLWORK(JIJ)=ZLWORK(JIJ)+ZTEST0*(ZTEST*ZLWORK1+(1-ZTEST)*ZLWORK2)
+        ZINTE(JIJ) = ZINTE(JIJ) - ZPOTE
       END DO
     ENDIF
   END DO
@@ -305,18 +304,18 @@ DO JK=D%NKTB,D%NKTE
 !
 !*       7.  final mixing length
 !
-  DO J1D=1,IPROMA
-    ZLWORK1=MAX(PLMDN(J1D,JK),1.E-10_MNHREAL)
-    ZLWORK2=MAX(ZLWORK(J1D),1.E-10_MNHREAL)
+  DO JIJ=1,D%NIJT
+    ZLWORK1=MAX(PLMDN(JIJ,JK),1.E-10_MNHREAL)
+    ZLWORK2=MAX(ZLWORK(JIJ),1.E-10_MNHREAL)
     ZPOTE = ZLWORK1 / ZLWORK2
 #ifdef REPRO48
     ZLWORK2=1.d0 + ZPOTE**(2./3.)
-    PLM(J1D,JK) = Z2SQRT2*ZLWORK1/(ZLWORK2*SQRT(ZLWORK2))
+    PLM(JIJ,JK) = Z2SQRT2*ZLWORK1/(ZLWORK2*SQRT(ZLWORK2))
 #else
     ZLWORK2=1.d0 + ZPOTE**ZBL89EXP
-    PLM(J1D,JK) = ZLWORK1*(2./ZLWORK2)**ZUSRBL89
+    PLM(JIJ,JK) = ZLWORK1*(2./ZLWORK2)**ZUSRBL89
 #endif
-    PLM(J1D,JK)=MAX(PLM(J1D,JK),CSTURB%XLINI)
+    PLM(JIJ,JK)=MAX(PLM(JIJ,JK),CSTURB%XLINI)
   END DO
 
 
@@ -331,9 +330,9 @@ END DO
 !*       9.  boundaries
 !            ----------
 !
-PLM(:,D%NKA)=PLM(:,D%NKB)
-PLM(:,D%NKE)=PLM(:,D%NKE-D%NKL)
-PLM(:,D%NKU)=PLM(:,D%NKE-D%NKL)
+PLM(1:D%NIJT,D%NKA)=PLM(1:D%NIJT,D%NKB)
+PLM(1:D%NIJT,D%NKE)=PLM(1:D%NIJT,D%NKE-D%NKL)
+PLM(1:D%NIJT,D%NKU)=PLM(1:D%NIJT,D%NKE-D%NKL)
 !
 !-------------------------------------------------------------------------------
 !