diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
index a6ca733c2cfc8334fa1f09b4423d5152e57adbe4..1f1fd7500428cee90002ec948c8dbf31e019f6da 100644
--- a/src/MNH/advection_metsv.f90
+++ b/src/MNH/advection_metsv.f90
@@ -23,16 +23,16 @@ USE MODD_TYPE_DATE, ONLY: DATE_TIME
 LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
                                                       ! file opening
 TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
-CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the 
-                                        HSV_ADV_SCHEME, &  ! scheme applied 
+CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the
+                                        HSV_ADV_SCHEME, &  ! scheme applied
                                         HUVW_ADV_SCHEME
-CHARACTER (LEN=4),      INTENT(IN)   :: HCLOUD      ! Kind of cloud parameterization                                
+CHARACTER (LEN=4),      INTENT(IN)   :: HCLOUD      ! Kind of cloud parameterization
 !
 INTEGER,                INTENT(INOUT):: KSPLIT       ! Number of time splitting
                                                      ! for PPM advection
 LOGICAL,                INTENT(IN)   :: OSPLIT_CFL   ! flag to automatically chose number of iterations
 REAL,                   INTENT(IN)   :: PSPLIT_CFL   ! maximum CFL to automatically chose number of iterations
-LOGICAL,                INTENT(IN)   :: OCFL_WRIT    ! flag to write CFL fields in output files            
+LOGICAL,                INTENT(IN)   :: OCFL_WRIT    ! flag to write CFL fields in output files
 !
 CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
 !
@@ -44,7 +44,7 @@ REAL,                     INTENT(IN)    :: PTSTEP
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT , PVT  , PWT
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET, PRHODJ
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST                 
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT , PSVT
                                                   ! Variables at t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHVREF   ! Virtual Temperature
@@ -193,16 +193,16 @@ IMPLICIT NONE
 LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for synchronous
                                                       ! file opening
 TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
-CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the 
-                                        HSV_ADV_SCHEME, &  ! scheme applied 
+CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the
+                                        HSV_ADV_SCHEME, &  ! scheme applied
                                         HUVW_ADV_SCHEME
-CHARACTER (LEN=4),      INTENT(IN)   :: HCLOUD      ! Kind of cloud parameterization                                
+CHARACTER (LEN=4),      INTENT(IN)   :: HCLOUD      ! Kind of cloud parameterization
 !
 INTEGER,                INTENT(INOUT):: KSPLIT       ! Number of time splitting
                                                      ! for PPM advection
 LOGICAL,                INTENT(IN)   :: OSPLIT_CFL   ! flag to automatically chose number of iterations
 REAL,                   INTENT(IN)   :: PSPLIT_CFL   ! maximum CFL to automatically chose number of iterations
-LOGICAL,                INTENT(IN)   :: OCFL_WRIT    ! flag to write CFL fields in output files            
+LOGICAL,                INTENT(IN)   :: OCFL_WRIT    ! flag to write CFL fields in output files
 !
 CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
 !
@@ -418,8 +418,8 @@ IF(LBLOWSNOW) THEN    ! Put 2D Canopy blowing snow variables into a 3D array for
 #ifdef MNH_OPENACC
   call Print_msg( NVERB_ERROR, 'GEN', 'ADVECTION_METSV', 'OpenACC: LBLOWSNOW not yet implemented' )
 #endif
-  ZSNWC_INIT = 0.
-  ZRSNWCS = 0.
+  ZSNWC_INIT(:,:,:,:) = 0.
+  ZRSNWCS(:,:,:,:) = 0.
 
   DO JSV=1,(NBLOWSNOW_2D)
      ZSNWC_INIT(:,:,IKB,JSV) = XSNWCANO(:,:,JSV)
@@ -465,22 +465,22 @@ IF (.NOT. L1D) THEN
   IF (.NOT. L2D) THEN
     ZCFL(:,:,:)  = SQRT(ZCFLU(:,:,:)**2+ZCFLV(:,:,:)**2+ZCFLW(:,:,:)**2)
   ELSE
-    ZCFL  = SQRT(ZCFLU(:,:,:)**2+ZCFLW(:,:,:)**2)
+    ZCFL(:,:,:)  = SQRT(ZCFLU(:,:,:)**2+ZCFLW(:,:,:)**2)
   END IF
 #else
   IF (.NOT. L2D) THEN
     ZCFL(:,:,:)  = SQRT(BR_P2(ZCFLU(:,:,:))+BR_P2(ZCFLV(:,:,:))+BR_P2(ZCFLW(:,:,:)))
   ELSE
-    ZCFL  = SQRT(BR_P2(ZCFLU(:,:,:))+BR_P2(ZCFLW(:,:,:)))
+    ZCFL(:,:,:)  = SQRT(BR_P2(ZCFLU(:,:,:))+BR_P2(ZCFLW(:,:,:)))
   END IF
 #endif
 ELSE
-   ZCFLU = 0.0 ; ZCFLV = 0.0 ;  ZCFLW = 0.0 
+   ZCFLU(:,:,:) = 0.0 ; ZCFLV(:,:,:) = 0.0 ;  ZCFLW(:,:,:) = 0.0
    ZCFLW(IIB:IIE,IJB:IJE,:) = ABS(ZRWCPPM(IIB:IIE,IJB:IJE,:) * PTSTEP)
 #ifndef MNH_BITREP
-   ZCFL = SQRT(ZCFLW**2)
+   ZCFL(:,:,:) = SQRT(ZCFLW(:,:,:)**2)
 #else
-   ZCFL = SQRT(BR_P2(ZCFLW))
+   ZCFL(:,:,:) = SQRT(BR_P2(ZCFLW(:,:,:)))
 #endif
 END IF
 !$acc end kernels
@@ -623,9 +623,9 @@ ZTSTEP_PPM = PTSTEP / REAL(KSPLIT)
 !*      2.4 normalized contravariant components for splitted PPM time-step
 !
 !$acc kernels
-ZRUCPPM = ZRUCPPM*ZTSTEP_PPM
-ZRVCPPM = ZRVCPPM*ZTSTEP_PPM
-ZRWCPPM = ZRWCPPM*ZTSTEP_PPM
+ZRUCPPM(:,:,:) = ZRUCPPM(:,:,:)*ZTSTEP_PPM
+ZRVCPPM(:,:,:) = ZRVCPPM(:,:,:)*ZTSTEP_PPM
+ZRWCPPM(:,:,:) = ZRWCPPM(:,:,:)*ZTSTEP_PPM
 !
 !
 !-------------------------------------------------------------------------------
@@ -648,7 +648,7 @@ DO JSV = 1, KSV
 END DO
 !$acc end kernels
 IF(LBLOWSNOW) THEN
-   DO JSV = 1, (NBLOWSNOW_2D)        
+   DO JSV = 1, (NBLOWSNOW_2D)
      ZRSNWCS_OTHER(:,:,:,JSV) = ZRSNWCS(:,:,:,JSV) - ZSNWC_INIT(:,:,:,JSV) * PRHODJ / PTSTEP
    END DO   
 ENDIF
@@ -676,7 +676,7 @@ DO JSV = 1, KSV
 END DO
 #endif
 IF(LBLOWSNOW) THEN
-  DO JSV = 1, (NBLOWSNOW_2D)        
+  DO JSV = 1, (NBLOWSNOW_2D)
     CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZRSNWCS_OTHER(:,:,:,JSV))
   END DO 
 END IF
@@ -722,7 +722,7 @@ IF(LBLOWSNOW) THEN
         ZSNWC(:,:,:,JSV) = ZRSNWCS(:,:,:,JSV)* PTSTEP/ PRHODJ
         CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZSNWC(:,:,:,JSV))
     END DO
-    ZSNWC_INIT=ZSNWC
+    ZSNWC_INIT(:,:,:,:)=ZSNWC(:,:,:,:)
 ENDIF
 !
 !* time splitting loop
@@ -736,8 +736,8 @@ DO JSPL=1,KSPLIT
    IF (LNEUTRAL) THEN
      !Must be done in a kernels region
 !$acc kernels
-     ZTH=ZTH-PTHVREF  !* To be removed with the new PPM scheme ?
-     !$acc end kernels
+     ZTH(:,:,:)=ZTH(:,:,:)-PTHVREF(:,:,:)  !* To be removed with the new PPM scheme ?
+!$acc end kernels
    END IF
    CALL PPM_MET (HLBCX,HLBCY, KRR, TPDTCUR, ZRUCPPM, ZRVCPPM, ZRWCPPM, PTSTEP,ZTSTEP_PPM, &
               PRHODJ,  ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2,  ZRHOZ1, ZRHOZ2,                   &
@@ -745,8 +745,8 @@ DO JSPL=1,KSPLIT
    IF (LNEUTRAL) THEN
      !Must be done in a kernels region
 !$acc kernels
-     ZTH=ZTH+PTHVREF  !* To be removed with the new PPM scheme ?
-     !$acc end kernels
+     ZTH(:,:,:) = ZTH(:,:,:) + PTHVREF(:,:,:)  !* To be removed with the new PPM scheme ?
+!$acc end kernels
    END IF
 !
    CALL PPM_SCALAR (HLBCX,HLBCY, KSV, TPDTCUR, ZRUCPPM, ZRVCPPM, ZRWCPPM, PTSTEP,     &
@@ -795,7 +795,7 @@ DO JSPL=1,KSPLIT
      CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZSV(:,:,:,JSV), PSVT(:,:,:,JSV))
    END DO
 #else
-   CALL ADV_BOUNDARIES_DEVICE (HLBCX, HLBCY, ZTH, PTHT )    
+   CALL ADV_BOUNDARIES_DEVICE (HLBCX, HLBCY, ZTH, PTHT )
    IF (GTKE) CALL ADV_BOUNDARIES_DEVICE (HLBCX, HLBCY, ZTKE, PTKET)
    DO JR = 1, KRR
      CALL ADV_BOUNDARIES_DEVICE (HLBCX, HLBCY, ZR(:,:,:,JR), PRT(:,:,:,JR))
@@ -819,7 +819,7 @@ DO JSPL=1,KSPLIT
       ZRSNWCS(:,:,:,:)        =    ZRSNWCS(:,:,:,:)  + ZRSNWCS_PPM (:,:,:,:)   / KSPLIT
 !  Guesses of the field inside the time splitting loop 
       DO JSV = 1, ( NBLOWSNOW_2D)
-          ZSNWC(:,:,:,JSV) = ZSNWC(:,:,:,JSV) + ZRSNWCS_PPM(:,:,:,JSV)*ZTSTEP_PPM/ PRHODJ(:,:,:)  
+          ZSNWC(:,:,:,JSV) = ZSNWC(:,:,:,JSV) + ZRSNWCS_PPM(:,:,:,JSV)*ZTSTEP_PPM/ PRHODJ(:,:,:)
       END DO
 
 ! Top and bottom Boundaries and LBC for the guesses      
@@ -864,7 +864,7 @@ END IF
 ! 
 IF(LBLOWSNOW) THEN
 
-    DO JSV=1,(NBLOWSNOW_2D) 
+    DO JSV=1,(NBLOWSNOW_2D)
        DO JI=1,SIZE(PSVT,1)
          DO JJ=1,SIZE(PSVT,2)
              XRSNWCANOS(JI,JJ,JSV) = SUM(ZRSNWCS(JI,JJ,IKB:IKE,JSV))
diff --git a/src/MNH/gradient_u.f90 b/src/MNH/gradient_u.f90
index 8f1992b2cd25c2ce22fba2ec189bcd3022250292..0adafdab8283d6d583010b20bb6ae06f3507ae23 100644
--- a/src/MNH/gradient_u.f90
+++ b/src/MNH/gradient_u.f90
@@ -246,22 +246,22 @@ IF (.NOT. LFLAT) THEN
   CALL DXF_DEVICE(PA,ZTMP1_DEVICE)
   CALL DZM_DEVICE(KKA,KKU,KL,PA,ZTMP2_DEVICE)
   !$acc kernels
-  ZTMP3_DEVICE = PDZX * ZTMP2_DEVICE
+  ZTMP3_DEVICE(:,:,:) = PDZX(:,:,:) * ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
   CALL MXF_DEVICE(ZTMP3_DEVICE,ZTMP2_DEVICE)
   !$acc kernels
-  ZTMP3_DEVICE = ZTMP2_DEVICE / PDZZ
+  ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:) / PDZZ(:,:,:)
   !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KL,ZTMP3_DEVICE,ZTMP2_DEVICE)
   CALL MXF_DEVICE(PDXX,ZTMP3_DEVICE)
   !$acc kernels
-  PGX_U_M_DEVICE(:,:,:)= ( ZTMP1_DEVICE - ZTMP2_DEVICE ) / ZTMP3_DEVICE
+  PGX_U_M_DEVICE(:,:,:)= ( ZTMP1_DEVICE(:,:,:) - ZTMP2_DEVICE(:,:,:) ) / ZTMP3_DEVICE(:,:,:)
   !$acc end kernels
 ELSE
   CALL DXF_DEVICE(PA,ZTMP1_DEVICE)
   CALL MXF_DEVICE(PDXX,ZTMP2_DEVICE)
   !$acc kernels
-  PGX_U_M_DEVICE(:,:,:)= ZTMP1_DEVICE /  ZTMP2_DEVICE
+  PGX_U_M_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:) /  ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
 END IF
 
@@ -423,24 +423,24 @@ IF (.NOT. LFLAT) THEN
   CALL DZM_DEVICE(KKA,KKU,KL,PA,ZTMP1_DEVICE)
   CALL MXM_DEVICE(PDZZ,ZTMP2_DEVICE)
   !$acc kernels
-  ZTMP3_DEVICE = ZTMP1_DEVICE/ZTMP2_DEVICE
+  ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)/ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
   CALL MYM_DEVICE(ZTMP3_DEVICE,ZTMP1_DEVICE)
   CALL MXM_DEVICE(PDZY,ZTMP2_DEVICE)
   !$acc kernels
-  ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+  ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KL, ZTMP3_DEVICE,ZTMP2_DEVICE )
   CALL DYM_DEVICE(PA,ZTMP1_DEVICE)
   CALL MXM_DEVICE(PDYY,ZTMP3_DEVICE)
   !$acc kernels
-  PGY_U_UV_DEVICE(:,:,:)=  ( ZTMP1_DEVICE - ZTMP2_DEVICE ) / ZTMP3_DEVICE
+  PGY_U_UV_DEVICE(:,:,:)=  ( ZTMP1_DEVICE(:,:,:) - ZTMP2_DEVICE(:,:,:) ) / ZTMP3_DEVICE(:,:,:)
   !$acc end kernels
 ELSE
   CALL DYM_DEVICE(PA,ZTMP1_DEVICE)
   CALL MXM_DEVICE(PDYY,ZTMP2_DEVICE)
   !$acc kernels
-  PGY_U_UV_DEVICE(:,:,:)= ZTMP1_DEVICE / ZTMP2_DEVICE
+  PGY_U_UV_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:) / ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
 END IF
 
@@ -582,7 +582,7 @@ allocate( ztmp2_device(size( pa, 1 ), size( pa, 2 ), size( pa, 3 ) ) )
 CALL DZM_DEVICE(KKA,KKU,KL,PA,ZTMP1_DEVICE)
 CALL MXM_DEVICE(PDZZ,ZTMP2_DEVICE)
 !$acc kernels
-PGZ_U_UW_DEVICE(:,:,:)= ZTMP1_DEVICE / ZTMP2_DEVICE
+PGZ_U_UW_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:) / ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 
 !$acc end data
diff --git a/src/MNH/gradient_v.f90 b/src/MNH/gradient_v.f90
index 95c3c0f07e294dffdb9ae6cdd733c6e57b47b200..40fefe5fe0879b3f03a19a1772ed70b02cea25fb 100644
--- a/src/MNH/gradient_v.f90
+++ b/src/MNH/gradient_v.f90
@@ -248,22 +248,22 @@ IF (.NOT. LFLAT) THEN
   CALL DYF_DEVICE(PA,ZTMP1_DEVICE)
   CALL DZM_DEVICE(KKA,KKU,KL,PA,ZTMP2_DEVICE)
 !$acc kernels
-  ZTMP3_DEVICE = PDZY*ZTMP2_DEVICE
+  ZTMP3_DEVICE(:,:,:) = PDZY(:,:,:)*ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
   CALL MYF_DEVICE(ZTMP3_DEVICE,ZTMP2_DEVICE)
 !$acc kernels
-  ZTMP3_DEVICE = ZTMP2_DEVICE/PDZZ
+  ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)/PDZZ(:,:,:)
 !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KL,ZTMP3_DEVICE,ZTMP2_DEVICE)
   CALL MYF_DEVICE(PDYY,ZTMP3_DEVICE)
 !$acc kernels
-  PGY_V_M_DEVICE(:,:,:)= (ZTMP1_DEVICE - ZTMP2_DEVICE) / ZTMP3_DEVICE
+  PGY_V_M_DEVICE(:,:,:)= (ZTMP1_DEVICE(:,:,:) - ZTMP2_DEVICE(:,:,:)) / ZTMP3_DEVICE(:,:,:)
 !$acc end kernels
 ELSE
   CALL DYF_DEVICE(PA,ZTMP1_DEVICE)
   CALL MYF_DEVICE(PDYY,ZTMP2_DEVICE)
 !$acc kernels
-  PGY_V_M_DEVICE(:,:,:)= ZTMP1_DEVICE / ZTMP2_DEVICE
+  PGY_V_M_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:) / ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 END IF
 
@@ -427,23 +427,23 @@ IF (.NOT. LFLAT) THEN
   CALL MYM_DEVICE(PDZZ,ZTMP2_DEVICE)
   CALL DZM_DEVICE(KKA,KKU,KL,PA,ZTMP3_DEVICE)
 !$acc kernels
-  ZTMP4_DEVICE = ZTMP3_DEVICE / ZTMP2_DEVICE
+  ZTMP4_DEVICE(:,:,:) = ZTMP3_DEVICE(:,:,:) / ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
   CALL MXM_DEVICE(ZTMP4_DEVICE,ZTMP2_DEVICE)
   CALL MYM_DEVICE(PDZX,ZTMP3_DEVICE)
 !$acc kernels
-  ZTMP4_DEVICE = ZTMP2_DEVICE *ZTMP3_DEVICE
+  ZTMP4_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:) *ZTMP3_DEVICE(:,:,:)
 !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KL,ZTMP4_DEVICE,ZTMP2_DEVICE)
   CALL MYM_DEVICE(PDXX,ZTMP3_DEVICE)
 !$acc kernels
-  PGX_V_UV_DEVICE(:,:,:)= ( ZTMP1_DEVICE - ZTMP2_DEVICE ) / ZTMP3_DEVICE
+  PGX_V_UV_DEVICE(:,:,:)= ( ZTMP1_DEVICE(:,:,:) - ZTMP2_DEVICE(:,:,:) ) / ZTMP3_DEVICE(:,:,:)
 !$acc end kernels
 ELSE
   CALL DXM_DEVICE(PA,ZTMP1_DEVICE)
   CALL MYM_DEVICE(PDXX,ZTMP2_DEVICE)
 !$acc kernels
-  PGX_V_UV_DEVICE(:,:,:)= ZTMP1_DEVICE / ZTMP2_DEVICE
+  PGX_V_UV_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:) / ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 END IF
 
@@ -585,7 +585,7 @@ allocate( ztmp2_device(size( pa, 1 ), size( pa, 2 ), size( pa, 3 ) ) )
 CALL DZM_DEVICE(KKA,KKU,KL,PA,ZTMP1_DEVICE)
 CALL MYM_DEVICE(PDZZ,ZTMP2_DEVICE)
 !$acc kernels
-PGZ_V_VW_DEVICE(:,:,:)= ZTMP1_DEVICE / ZTMP2_DEVICE
+PGZ_V_VW_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:) / ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 
 !$acc end data
diff --git a/src/MNH/gradient_w.f90 b/src/MNH/gradient_w.f90
index 70fda231043e16fb2b0c561c604c56dbd87d77e2..c73b40743e5947a3f826881c45bf3c94c8da2abb 100644
--- a/src/MNH/gradient_w.f90
+++ b/src/MNH/gradient_w.f90
@@ -222,7 +222,7 @@ allocate( ztmp2_device(size( pa, 1 ), size( pa, 2 ), size( pa, 3 ) ) )
 CALL DZF_DEVICE(KKA,KKU,KL,PA(:,:,:),ZTMP1_DEVICE)
 CALL MZF_DEVICE(KKA,KKU,KL,PDZZ(:,:,:),ZTMP2_DEVICE)
 !$acc kernels
-PGZ_W_M_DEVICE(:,:,:)= ZTMP1_DEVICE/ZTMP2_DEVICE
+PGZ_W_M_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:)/ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 
 !$acc end data
@@ -379,15 +379,15 @@ IF (.NOT. LFLAT) THEN
   CALL MZM_DEVICE(PDXX(:,:,:),ZTMP4_DEVICE)
   CALL MXM_DEVICE(PDZZ(:,:,:),ZTMP5_DEVICE)
 !$acc kernels
-  PGX_W_UW_DEVICE(:,:,:)= ZTMP1_DEVICE/ZTMP2_DEVICE    &
-                 -ZTMP3_DEVICE*PDZX(:,:,:)  &
-                  /( ZTMP4_DEVICE*ZTMP5_DEVICE )
+  PGX_W_UW_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:)/ZTMP2_DEVICE(:,:,:)    &
+                 -ZTMP3_DEVICE(:,:,:)*PDZX(:,:,:)  &
+                  /( ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:) )
 !$acc end kernels
 ELSE
   CALL DXM_DEVICE(PA(:,:,:),ZTMP1_DEVICE)
   CALL MZM_DEVICE(PDXX(:,:,:),ZTMP2_DEVICE)
 !$acc kernels
-  PGX_W_UW_DEVICE(:,:,:)= ZTMP1_DEVICE/ZTMP2_DEVICE
+  PGX_W_UW_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:)/ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 END IF
 
@@ -545,15 +545,15 @@ IF (.NOT. LFLAT) THEN
   CALL MZM_DEVICE(PDYY(:,:,:),ZTMP4_DEVICE)
   CALL MYM_DEVICE(PDZZ(:,:,:),ZTMP5_DEVICE)
 !$acc kernels
-  PGY_W_VW_DEVICE(:,:,:)= ZTMP1_DEVICE/ZTMP2_DEVICE    &
-                 -ZTMP3_DEVICE*PDZY(:,:,:)  &
-                  /( ZTMP4_DEVICE*ZTMP5_DEVICE )
+  PGY_W_VW_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:)/ZTMP2_DEVICE(:,:,:)    &
+                 -ZTMP3_DEVICE(:,:,:)*PDZY(:,:,:)  &
+                  /( ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:) )
 !$acc end kernels
 ELSE
   CALL DYM_DEVICE(PA(:,:,:),ZTMP1_DEVICE)
   CALL MZM_DEVICE(PDYY(:,:,:),ZTMP2_DEVICE)
 !$acc kernels
-  PGY_W_VW_DEVICE(:,:,:)= ZTMP1_DEVICE/ZTMP2_DEVICE
+  PGY_W_VW_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:)/ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 END IF
 
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 54636764ba583fd27a551b26f06caed5a35390a7..e899bd8643c90b18400a35843c5a05231f528c84 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -1762,9 +1762,9 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
     ZWT_ACT_NUC(:,:,:) = 0.
   END IF
 !
-  XRTHS_CLD  = XRTHS
-  XRRS_CLD   = XRRS
-  XRSVS_CLD  = XRSVS
+  XRTHS_CLD(:, :, : )    = XRTHS(:, :, : )
+  XRRS_CLD (:, :, :, : ) = XRRS(:, :, :, : )
+  XRSVS_CLD(:, :, :, : ) = XRSVS(:, :, :, : )
 !$acc data present(XRHODJ)                                                                       &
 !$acc &    copyin (NRR, LSEDIC, CSUBG_AUCV, XTSTEP, KWARM,                                       &
 !$acc &            XZZ, XRHODREF, XEXNREF, ZPABST, XTHT, XSIGS, VSIGQSAT, XMFCONV, XTHM, XPABSM, &
@@ -1823,9 +1823,9 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO, XRAINFR        )
   END IF
 !$acc end data
-  XRTHS_CLD  = XRTHS - XRTHS_CLD
-  XRRS_CLD   = XRRS  - XRRS_CLD
-  XRSVS_CLD  = XRSVS - XRSVS_CLD
+  XRTHS_CLD(:, :, : )    = XRTHS(:, :, : )    - XRTHS_CLD(:, :, : )
+  XRRS_CLD (:, :, :, : ) = XRRS (:, :, :, : ) - XRRS_CLD (:, :, :, : )
+  XRSVS_CLD(:, :, :, : ) = XRSVS(:, :, :, : ) - XRSVS_CLD(:, :, :, : )
 !
   IF (CCLOUD /= 'REVE' ) THEN
     XACPRR = XACPRR + XINPRR * XTSTEP
diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90
index ea3497e30c3ee7b1d65ac7f8692e155a5db5933a..d56af95657364365e909ec206719181ede476157 100644
--- a/src/MNH/tke_eps_sources.f90
+++ b/src/MNH/tke_eps_sources.f90
@@ -340,9 +340,9 @@ ZKEFF(:,:,:) = PLM(:,:,:) * SQRT(PTKEM(:,:,:))
 ! Complete the sources of TKE with the horizontal turbulent explicit transport
 !
 IF (HTURBDIM=='3DIM') THEN
-  PTR=PTRH
+  PTR(:,:,:) = PTRH(:,:,:)
 ELSE
-  PTR=0.
+  PTR(:,:,:) = 0.
 END IF
 !
 !
@@ -371,18 +371,18 @@ ZSOURCE(:,:,:) = PRTKES(:,:,:) / PRHODJ(:,:,:)  +  PRTKESM(:,:,:) / PRHODJ(:,:,:
 #ifndef MNH_OPENACC
 ZA(:,:,:)     = - PTSTEP * XCET * &
 #ifndef MNH_BITREP
-                MZM(KKA,KKU,KKL,ZKEFF) * MZM(KKA,KKU,KKL,PRHODJ) / PDZZ**2
+                MZM(KKA,KKU,KKL,ZKEFF) * MZM(KKA,KKU,KKL,PRHODJ) / PDZZ(:,:,:)**2
 #else
-                MZM(KKA,KKU,KKL,ZKEFF) * MZM(KKA,KKU,KKL,PRHODJ) / BR_P2(PDZZ)
+                MZM(KKA,KKU,KKL,ZKEFF) * MZM(KKA,KKU,KKL,PRHODJ) / BR_P2(PDZZ(:,:,:))
 #endif
 #else
 CALL MZM_DEVICE(ZKEFF, ZTMP1_DEVICE) !Warning: re-used later
 CALL MZM_DEVICE(PRHODJ,ZTMP2_DEVICE) !Warning: re-used later
 !$acc kernels
 #ifndef MNH_BITREP
-ZA(:,:,:)     = - PTSTEP * XCET * ZTMP1_DEVICE * ZTMP2_DEVICE / PDZZ**2
+ZA(:,:,:)     = - PTSTEP * XCET * ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) / PDZZ(:,:,:)**2
 #else
-ZA(:,:,:)     = - PTSTEP * XCET * ZTMP1_DEVICE * ZTMP2_DEVICE / BR_P2(PDZZ)
+ZA(:,:,:)     = - PTSTEP * XCET * ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) / BR_P2(PDZZ(:,:,:))
 #endif
 !$acc end kernels
 #endif
@@ -395,7 +395,7 @@ CALL TRIDIAG_TKE(KKA,KKU,KKL,PTKEM,ZA,PTSTEP,PEXPL,PIMPL,PRHODJ,&
 CALL GET_HALO(ZRES)
 #else
 !$acc kernels
-ZTMP3_DEVICE = PTSTEP*ZFLX
+ZTMP3_DEVICE(:,:,:) = PTSTEP*ZFLX(:,:,:)
 !$acc end kernels
 CALL TRIDIAG_TKE(KKA,KKU,KKL,PTKEM,ZA,PTSTEP,PEXPL,PIMPL,PRHODJ,&
             & ZSOURCE,ZTMP3_DEVICE,ZRES)
@@ -431,14 +431,14 @@ IF ( LLES_CALL .OR.                         &
 !
 #ifndef MNH_OPENACC
   ZFLX(:,:,:)   = - XCET * MZM(KKA,KKU,KKL,ZKEFF) *   &
-                  DZM(KKA,KKU,KKL,PIMPL * ZRES + PEXPL * PTKEM ) / PDZZ
+                  DZM(KKA,KKU,KKL,PIMPL * ZRES + PEXPL * PTKEM ) / PDZZ(:,:,:)
 #else
 !$acc kernels
-  ZTMP3_DEVICE = PIMPL * ZRES + PEXPL * PTKEM
+  ZTMP3_DEVICE(:,:,:) = PIMPL * ZRES(:,:,:) + PEXPL * PTKEM(:,:,:)
 !$acc end kernels
   CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE,ZTMP4_DEVICE)
 !$acc kernels
-  ZFLX(:,:,:)   = - XCET * ZTMP1_DEVICE * ZTMP4_DEVICE / PDZZ !Re-use of ZTMP1_DEVICE
+  ZFLX(:,:,:)   = - XCET * ZTMP1_DEVICE(:,:,:) * ZTMP4_DEVICE(:,:,:) / PDZZ(:,:,:) !Re-use of ZTMP1_DEVICE
 #endif
 !
   ZFLX(:,:,IKB) = 0.
@@ -449,11 +449,11 @@ IF ( LLES_CALL .OR.                         &
 #ifndef MNH_OPENACC
   PTR(:,:,:)= PTR - DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL,PRHODJ) * ZFLX / PDZZ ) /PRHODJ
 #else
-  ZTMP1_DEVICE = ZTMP2_DEVICE * ZFLX / PDZZ !Re-use of ZTMP2_DEVICE
+  ZTMP1_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:) * ZFLX(:,:,:) / PDZZ(:,:,:) !Re-use of ZTMP2_DEVICE
 !$acc end kernels
   CALL DZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
 !$acc kernels
-  PTR(:,:,:)= PTR - ZTMP2_DEVICE / PRHODJ
+  PTR(:,:,:)= PTR(:,:,:) - ZTMP2_DEVICE(:,:,:) / PRHODJ(:,:,:)
 !$acc end kernels
 #endif
 !
@@ -468,7 +468,7 @@ IF ( LLES_CALL .OR.                         &
     CALL MZF_DEVICE(KKA,KKU,KKL,ZFLX,ZTMP1_DEVICE)
     CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_WTke )
 !$acc kernels
-    ZTMP1_DEVICE = -PTR
+    ZTMP1_DEVICE(:,:,:) = -PTR(:,:,:)
 !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_ddz_WTke )
 !$acc end data
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index 8e7b61a10c55185dc3350f0974e3ea857f9bb3f0..3cf06ade78de9d27a03e5a00081163200e2b9a6d 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -765,7 +765,7 @@ SELECT CASE (HTURBLEN)
 #ifdef MNH_OPENACC
     call Print_msg( NVERB_FATAL, 'GEN', 'TURB', 'OpenACC: HTURBLEN=BL89 not yet implemented' )
 #endif
-    ZSHEAR=0.
+    ZSHEAR(:, :, : ) = 0.
     CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,PLEM)
 !
 !*      3.2 RM17 mixing length
@@ -1742,7 +1742,7 @@ ELSE
 !*         3.1 BL89 mixing length
 !           ------------------
   CASE ('BL89','RM17')
-    ZSHEAR=0.
+    ZSHEAR(:, :, : ) = 0.
     CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD)
 !
 !*         3.2 Delta mixing length
diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90
index 4b26c5d5ad80b47e1114d825f145b095d9167554..19e163c6aaa7350c2c2d2dcce04e262b90024911 100644
--- a/src/MNH/turb_hor_thermo_corr.f90
+++ b/src/MNH/turb_hor_thermo_corr.f90
@@ -324,7 +324,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
     CALL GY_M_M_DEVICE(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY,ZTMP2_DEVICE)
 !$acc kernels
 #ifndef MNH_BITREP
-    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE**2 + ZTMP2_DEVICE**2 )
+    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE(:,:,:)**2 + ZTMP2_DEVICE(:,:,:)**2 )
 #else
     ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE) + BR_P2(ZTMP2_DEVICE) )
 #endif
@@ -333,7 +333,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
     CALL GX_M_M_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
 !$acc kernels
 #ifndef MNH_BITREP
-    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE**2
+    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE(:,:,:)**2
 #else
     ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE)
 #endif
@@ -424,11 +424,11 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
     CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
     CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_Thl2, .TRUE. ) 
-    CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX, X_LES_RES_W_SBG_Thl2, .TRUE. ) 
-    CALL LES_MEAN_SUBGRID( -2.*XCTD*SQRT(PTKEM)*ZFLX/PLEPS ,X_LES_SUBGRID_DISS_Thl2, .TRUE. )
+    CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX(:,:,:), X_LES_RES_W_SBG_Thl2, .TRUE. )
+    CALL LES_MEAN_SUBGRID( -2.*XCTD*SQRT(PTKEM(:,:,:))*ZFLX(:,:,:)/PLEPS(:,:,:) ,X_LES_SUBGRID_DISS_Thl2, .TRUE. )
     ZA(:,:,:)   =  ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM)
-    CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_ThlThv, .TRUE. ) 
-    CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_ThlPz, .TRUE. )
+    CALL LES_MEAN_SUBGRID( ZA(:,:,:)*ZFLX(:,:,:), X_LES_SUBGRID_ThlThv, .TRUE. )
+    CALL LES_MEAN_SUBGRID( -XG/PTHVREF(:,:,:)/3.*ZA(:,:,:)*ZFLX(:,:,:), X_LES_SUBGRID_ThlPz, .TRUE. )
 #else
 !$acc data copy(X_LES_SUBGRID_Thl2,X_LES_RES_W_SBG_Thl2,X_LES_SUBGRID_DISS_Thl2, &
 !$acc &         X_LES_SUBGRID_ThlThv,X_LES_SUBGRID_ThlPz)
@@ -437,23 +437,23 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
     !
     CALL MZF_DEVICE(1,IKU,1,PWM, ZTMP1_DEVICE)
 !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLX
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_RES_W_SBG_Thl2, .TRUE. ) 
     !
 !$acc kernels
-    ZTMP1_DEVICE = -2.*XCTD*SQRT(PTKEM)*ZFLX/PLEPS
+    ZTMP1_DEVICE(:,:,:) = -2.*XCTD*SQRT(PTKEM(:,:,:))*ZFLX(:,:,:)/PLEPS(:,:,:)
 !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE ,X_LES_SUBGRID_DISS_Thl2, .TRUE. )
     !
     CALL ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM, ZA(:,:,:))
 !$acc kernels
-    ZTMP1_DEVICE = ZA*ZFLX
+    ZTMP1_DEVICE(:,:,:) = ZA(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_ThlThv, .TRUE. ) 
     !
 !$acc kernels
-    ZTMP1_DEVICE = -XG/PTHVREF/3.*ZA*ZFLX
+    ZTMP1_DEVICE(:,:,:) = -XG/PTHVREF(:,:,:)/3.*ZA(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_ThlPz, .TRUE. )
     !
@@ -489,13 +489,13 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
       CALL GY_M_M_DEVICE(1,IKU,1,PTHLM       ,PDYY,PDZZ,PDZY,ZTMP3_DEVICE)
       CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP4_DEVICE)
 !$acc kernels
-      ZFLX(:,:,:)=PLM(:,:,:) * PLEPS(:,:,:) * (ZTMP1_DEVICE*ZTMP2_DEVICE+ZTMP3_DEVICE*ZTMP4_DEVICE ) * (XCHT1+XCHT2)
+      ZFLX(:,:,:)=PLM(:,:,:) * PLEPS(:,:,:) * (ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)+ZTMP3_DEVICE(:,:,:)*ZTMP4_DEVICE(:,:,:) ) * (XCHT1+XCHT2)
 !$acc end kernels
     ELSE
       CALL GX_M_M_DEVICE(1,IKU,1,PTHLM       ,PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
       CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP2_DEVICE)
 !$acc kernels
-      ZFLX(:,:,:)=PLM(:,:,:) * PLEPS(:,:,:) * (ZTMP1_DEVICE*ZTMP2_DEVICE) * (XCHT1+XCHT2)
+      ZFLX(:,:,:)=PLM(:,:,:) * PLEPS(:,:,:) * (ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)) * (XCHT1+XCHT2)
 !$acc end kernels
     END IF
 #endif
@@ -622,13 +622,13 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
       CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
       CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_ThlRt, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX, X_LES_RES_W_SBG_ThlRt, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( -XCTD*SQRT(PTKEM)*ZFLX/PLEPS ,X_LES_SUBGRID_DISS_ThlRt, .TRUE. )
-      CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_RtThv, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_RtPz,.TRUE.)
+      CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX(:,:,:), X_LES_RES_W_SBG_ThlRt, .TRUE. )
+      CALL LES_MEAN_SUBGRID( -XCTD*SQRT(PTKEM(:,:,:))*ZFLX(:,:,:)/PLEPS(:,:,:) ,X_LES_SUBGRID_DISS_ThlRt, .TRUE. )
+      CALL LES_MEAN_SUBGRID( ZA(:,:,:)*ZFLX(:,:,:), X_LES_SUBGRID_RtThv, .TRUE. )
+      CALL LES_MEAN_SUBGRID( -XG/PTHVREF(:,:,:)/3.*ZA(:,:,:)*ZFLX(:,:,:), X_LES_SUBGRID_RtPz,.TRUE.)
       ZA(:,:,:)   =  EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM)
-      CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_ThlThv, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_ThlPz,.TRUE.)
+      CALL LES_MEAN_SUBGRID( ZA(:,:,:)*ZFLX(:,:,:), X_LES_SUBGRID_ThlThv, .TRUE. )
+      CALL LES_MEAN_SUBGRID( -XG/PTHVREF(:,:,:)/3.*ZA(:,:,:)*ZFLX(:,:,:), X_LES_SUBGRID_ThlPz,.TRUE.)
 #else
 !$acc data copy(X_LES_SUBGRID_ThlRt,X_LES_RES_W_SBG_ThlRt,X_LES_SUBGRID_DISS_ThlRt, &
 !$acc &         X_LES_SUBGRID_RtThv,X_LES_SUBGRID_RtPz,X_LES_SUBGRID_ThlThv,X_LES_SUBGRID_ThlPz)
@@ -637,33 +637,33 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
       !
       CALL MZF_DEVICE(1,IKU,1,PWM,ZTMP1_DEVICE)
 !$acc kernels
-      ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLX
+      ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_RES_W_SBG_ThlRt, .TRUE. ) 
       !
 !$acc kernels
-      ZTMP1_DEVICE = -XCTD*SQRT(PTKEM)*ZFLX/PLEPS
+      ZTMP1_DEVICE(:,:,:) = -XCTD*SQRT(PTKEM(:,:,:))*ZFLX(:,:,:)/PLEPS(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE ,X_LES_SUBGRID_DISS_ThlRt, .TRUE. )
       !
 !$acc kernels
-      ZTMP1_DEVICE = ZA*ZFLX
+      ZTMP1_DEVICE(:,:,:) = ZA(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_RtThv, .TRUE. ) 
       !
 !$acc kernels
-      ZTMP1_DEVICE = -XG/PTHVREF/3.*ZA*ZFLX
+      ZTMP1_DEVICE(:,:,:) = -XG/PTHVREF(:,:,:)/3.*ZA(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_RtPz,.TRUE.)
       !
       CALL EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,ZA(:,:,:))
 !$acc kernels
-      ZTMP1_DEVICE = ZA*ZFLX
+      ZTMP1_DEVICE(:,:,:) = ZA(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_ThlThv, .TRUE. ) 
       !
 !$acc kernels
-      ZTMP1_DEVICE = -XG/PTHVREF/3.*ZA*ZFLX
+      ZTMP1_DEVICE(:,:,:) = -XG/PTHVREF(:,:,:)/3.*ZA(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_ThlPz,.TRUE.)
       !
@@ -700,7 +700,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
       CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP2_DEVICE)
 !$acc kernels
 #ifndef MNH_BITREP
-      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE**2 + ZTMP2_DEVICE**2 )
+      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE(:,:,:)**2 + ZTMP2_DEVICE(:,:,:)**2 )
 #else
       ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE) + BR_P2(ZTMP2_DEVICE) )
 #endif
@@ -709,7 +709,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
       CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
 !$acc kernels
 #ifndef MNH_BITREP
-      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE**2
+      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE(:,:,:)**2
 #else
       ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE)
 #endif
@@ -798,10 +798,10 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
       CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
       CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_Rt2, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX, X_LES_RES_W_SBG_Rt2, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_RtThv, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_RtPz,.TRUE.)
-      CALL LES_MEAN_SUBGRID( -2.*XCTD*SQRT(PTKEM)*ZFLX/PLEPS, X_LES_SUBGRID_DISS_Rt2, .TRUE. )
+      CALL LES_MEAN_SUBGRID( MZF(1,IKU,1,PWM)*ZFLX(:,:,:), X_LES_RES_W_SBG_Rt2, .TRUE. )
+      CALL LES_MEAN_SUBGRID( ZA(:,:,:)*ZFLX(:,:,:), X_LES_SUBGRID_RtThv, .TRUE. )
+      CALL LES_MEAN_SUBGRID( -XG/PTHVREF(:,:,:)/3.*ZA(:,:,:)*ZFLX(:,:,:), X_LES_SUBGRID_RtPz,.TRUE.)
+      CALL LES_MEAN_SUBGRID( -2.*XCTD*SQRT(PTKEM(:,:,:))*ZFLX(:,:,:)/PLEPS, X_LES_SUBGRID_DISS_Rt2, .TRUE. )
 #else
 !$acc data copy(X_LES_SUBGRID_Rt2,X_LES_RES_W_SBG_Rt2,X_LES_SUBGRID_RtThv, &
 !$acc &         X_LES_SUBGRID_RtPz,X_LES_SUBGRID_DISS_Rt2)
@@ -810,22 +810,22 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
       !
       CALL MZF_DEVICE(1,IKU,1,PWM,ZTMP1_DEVICE)
 !$acc kernels    
-      ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLX
+      ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_RES_W_SBG_Rt2, .TRUE. ) 
       !
 !$acc kernels    
-      ZTMP1_DEVICE = ZA*ZFLX
+      ZTMP1_DEVICE(:,:,:) = ZA(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_RtThv, .TRUE. ) 
       !
 !$acc kernels    
-      ZTMP1_DEVICE = -XG/PTHVREF/3.*ZA*ZFLX
+      ZTMP1_DEVICE(:,:,:) = -XG/PTHVREF(:,:,:)/3.*ZA(:,:,:)*ZFLX(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_RtPz,.TRUE.)
       !
 !$acc kernels    
-      ZTMP1_DEVICE = -2.*XCTD*SQRT(PTKEM)*ZFLX/PLEPS
+      ZTMP1_DEVICE(:,:,:) = -2.*XCTD*SQRT(PTKEM(:,:,:))*ZFLX(:,:,:)/PLEPS(:,:,:)
 !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_DISS_Rt2, .TRUE. )
       !
diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90
index bdc9809ebdfe7c067bf301708d0eff81d295c254..80f98aea6e34cd47c5826f5421dd43272d253389 100644
--- a/src/MNH/turb_hor_thermo_flux.f90
+++ b/src/MNH/turb_hor_thermo_flux.f90
@@ -315,7 +315,7 @@ ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE)
 CALL MXM_DEVICE( PK, ZTMP1_DEVICE )
 CALL GX_M_U_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP2_DEVICE)
 !$acc kernels
-ZFLX(:,:,:)     = -XCSHF * ZTMP1_DEVICE * ZTMP2_DEVICE
+ZFLX(:,:,:)     = -XCSHF * ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
 ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
 !$acc end kernels
 #endif
@@ -366,42 +366,42 @@ ZFLX(:,:,IKB-1:IKB-1) = 2. * MXM(  SPREAD( PSFTHM(:,:)* PDIRCOSXW(:,:), 3,1) )
 !
 #ifndef MNH_OPENACC
 IF (.NOT. LFLAT) THEN
-  PRTHLS(:,:,:) =  PRTHLS                                                   &
-                - DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX )                          &
-                + DZF(1,IKU,1, PMZM_PRHODJ *MXF(PDZX*(MZM(1,IKU,1,ZFLX * PINV_PDXX))) * PINV_PDZZ )
+  PRTHLS(:,:,:) =  PRTHLS(:,:,:)                                                   &
+                - DXF( MXM(PRHODJ) * ZFLX(:,:,:) * PINV_PDXX(:,:,:) )                          &
+                + DZF(1,IKU,1, PMZM_PRHODJ(:,:,:) *MXF(PDZX*(MZM(1,IKU,1,ZFLX(:,:,:) * PINV_PDXX(:,:,:)))) * PINV_PDZZ(:,:,:) )
 ELSE
-  PRTHLS(:,:,:) =  PRTHLS - DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX )
+  PRTHLS(:,:,:) =  PRTHLS(:,:,:) - DXF( MXM(PRHODJ) * ZFLX(:,:,:) * PINV_PDXX(:,:,:) )
 END IF
 #else
 IF (.NOT. LFLAT) THEN
   CALL MXM_DEVICE(PRHODJ, ZTMP1_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX * PINV_PDXX
+  ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLX(:,:,:) * PINV_PDXX(:,:,:)
 !$acc end kernels
   CALL DXF_DEVICE(ZTMP2_DEVICE, ZTMP3_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = ZFLX * PINV_PDXX
+  ZTMP2_DEVICE(:,:,:) = ZFLX(:,:,:) * PINV_PDXX(:,:,:)
 !$acc end kernels
   CALL MZM_DEVICE(ZTMP2_DEVICE,ZTMP4_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = PDZX*ZTMP4_DEVICE
+  ZTMP2_DEVICE(:,:,:) = PDZX(:,:,:)*ZTMP4_DEVICE(:,:,:)
 !$acc end kernels
   CALL MXF_DEVICE(ZTMP2_DEVICE, ZTMP4_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = PMZM_PRHODJ * ZTMP4_DEVICE * PINV_PDZZ
+  ZTMP2_DEVICE(:,:,:) = PMZM_PRHODJ(:,:,:) * ZTMP4_DEVICE(:,:,:) * PINV_PDZZ(:,:,:)
 !$acc end kernels
   CALL DZF_DEVICE(1,IKU,1,ZTMP2_DEVICE,ZTMP4_DEVICE )
 !$acc kernels
-  PRTHLS(:,:,:) = PRTHLS - ZTMP3_DEVICE + ZTMP4_DEVICE
+  PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:)
 !$acc end kernels
 ELSE
   CALL MXM_DEVICE(PRHODJ, ZTMP1_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX * PINV_PDXX
+  ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLX(:,:,:) * PINV_PDXX(:,:,:)
 !$acc end kernels
   CALL DXF_DEVICE(ZTMP2_DEVICE, ZTMP3_DEVICE)
 !$acc kernels
-  PRTHLS(:,:,:) =  PRTHLS - ZTMP3_DEVICE
+  PRTHLS(:,:,:) =  PRTHLS(:,:,:) - ZTMP3_DEVICE(:,:,:)
 !$acc end kernels
 END IF
 #endif
@@ -411,38 +411,41 @@ END IF
 #ifndef MNH_OPENACC
 IF ( KRRL >= 1 ) THEN
   IF (.NOT. LFLAT) THEN
-    ZFLXC = 2.*( MXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX )                       &
-                +MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PATHETA*PSRCM )*MXF(                         &
-                                               PDZX*(MZM(1,IKU,1, ZFLX*PINV_PDXX )) ) )&
+    ZFLXC(:,:,:) = 2.*( MXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) )                       &
+                +MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MXF(                         &
+                                               PDZX*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) ) )&
                )
     IF ( KRRI >= 1 ) THEN
       PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                    &
-        (- DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PATHETA*PSRCM )*MXF( PDZX*(MZM(1,IKU,1, ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
+        (- DXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )                   &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )* &
+           MXF( PDZX*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )&
+                                           *PINV_PDZZ(:,:,:) )                        &
         )*(1.0-PFRAC_ICE(:,:,:))
       PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. *                                    &
-        (- DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PATHETA*PSRCM )*MXF( PDZX*(MZM(1,IKU,1, ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
+        (- DXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )                   &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )* &
+           MXF( PDZX*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )&
+                                           *PINV_PDZZ(:,:,:) )                        &
         )*PFRAC_ICE(:,:,:)
     ELSE
       PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                    &
-        (- DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PATHETA*PSRCM )*MXF( PDZX*(MZM(1,IKU,1, ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
+        (- DXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )                   &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )* &
+           MXF( PDZX*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )&
+                                           *PINV_PDZZ(:,:,:) )                        &
         )
     END IF
   ELSE
-    ZFLXC = 2.*MXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX )
+    ZFLXC(:,:,:) = 2.*MXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX )
     IF ( KRRI >= 1 ) THEN
       PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. *                                    &
-        DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )*(1.0-PFRAC_ICE(:,:,:))
+        DXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )*(1.0-PFRAC_ICE(:,:,:))
       PRRS(:,:,:,4) = PRRS(:,:,:,4) -  2. *                                    &
-        DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )*PFRAC_ICE(:,:,:)
+        DXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )*PFRAC_ICE(:,:,:)
     ELSE
       PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. *                                    &
-        DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )
+        DXF( MXM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )
     END IF
   END IF
 END IF
@@ -450,91 +453,91 @@ END IF
 IF ( KRRL >= 1 ) THEN
   IF (.NOT. LFLAT) THEN
     !$acc kernels
-    ZTMP1_DEVICE = PRHODJ*PATHETA*PSRCM
+    ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:)
     !$acc end kernels
     CALL MZM_DEVICE( ZTMP1_DEVICE, ZTMP4_DEVICE )
     CALL MXM_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
     !$acc kernels
-    ZTMP1_DEVICE = ZTMP2_DEVICE *ZFLX
+    ZTMP1_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:) *ZFLX(:,:,:)
     !$acc end kernels
     CALL MXF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP1_DEVICE = ZFLX*PINV_PDXX
+    ZTMP1_DEVICE(:,:,:) = ZFLX(:,:,:)*PINV_PDXX(:,:,:)
     !$acc end kernels
     CALL MZM_DEVICE( ZTMP1_DEVICE, ZTMP5_DEVICE )
     !$acc kernels
-    ZTMP6_DEVICE = PDZX*ZTMP5_DEVICE
+    ZTMP6_DEVICE(:,:,:) = PDZX(:,:,:)*ZTMP5_DEVICE(:,:,:)
     !$acc end kernels
     CALL MXF_DEVICE( ZTMP6_DEVICE, ZTMP5_DEVICE )
     !$acc kernels
-    ZTMP6_DEVICE =  ZTMP4_DEVICE*ZTMP5_DEVICE
+    ZTMP6_DEVICE(:,:,:) =  ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)
     !$acc end kernels
     CALL MZF_DEVICE(1,IKU,1, ZTMP6_DEVICE,ZTMP7_DEVICE )
     !$acc kernels
-    ZFLXC = 2.*( ZTMP2_DEVICE +ZTMP7_DEVICE )
+    ZFLXC(:,:,:) = 2.*( ZTMP2_DEVICE(:,:,:) +ZTMP7_DEVICE(:,:,:) )
     !$acc end kernels
     IF ( KRRI >= 1 ) THEN
       !$acc kernels
-      ZTMP1_DEVICE = PRHODJ*PATHETA*PSRCM
+      ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:)
       !$acc end kernels
       CALL MXM_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) 
       !$acc kernels
-      ZTMP6_DEVICE = ZTMP2_DEVICE*ZFLX*PINV_PDXX
+      ZTMP6_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)*PINV_PDXX(:,:,:)
       !$acc end kernels
       CALL DXF_DEVICE( ZTMP6_DEVICE, ZTMP2_DEVICE)
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP4_DEVICE*ZTMP5_DEVICE*PINV_PDZZ
+      ZTMP3_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)*PINV_PDZZ(:,:,:)
       !$acc end kernels
       CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP4_DEVICE )
 !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP2_DEVICE + ZTMP4_DEVICE )*(1.0-PFRAC_ICE(:,:,:))
-      PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. * (- ZTMP2_DEVICE + ZTMP4_DEVICE )*PFRAC_ICE(:,:,:)
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP2_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*(1.0-PFRAC_ICE(:,:,:))
+      PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. * (- ZTMP2_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*PFRAC_ICE(:,:,:)
 !$acc end kernels
     ELSE
       !$acc kernels
-      ZTMP1_DEVICE = PRHODJ*PATHETA*PSRCM
+      ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:)
       !$acc end kernels
       CALL MXM_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
       !$acc kernels
-      ZTMP1_DEVICE = ZTMP2_DEVICE *ZFLX*PINV_PDXX
+      ZTMP1_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:) *ZFLX(:,:,:)*PINV_PDXX(:,:,:)
       !$acc end kernels
       CALL DXF_DEVICE( ZTMP6_DEVICE, ZTMP2_DEVICE)
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP4_DEVICE*ZTMP5_DEVICE*PINV_PDZZ
+      ZTMP3_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)*PINV_PDZZ(:,:,:)
       !$acc end kernels
       CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP4_DEVICE )
 !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP2_DEVICE + ZTMP4_DEVICE )
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP2_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )
 !$acc end kernels
     END IF
   ELSE
     !$acc kernels
-    ZTMP1_DEVICE = PRHODJ*PATHETA*PSRCM
+    ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:)
     !$acc end kernels
     CALL MXM_DEVICE( ZTMP1_DEVICE,ZTMP2_DEVICE )
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP2_DEVICE*ZFLX
+    ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)
     !$acc end kernels
     CALL MXF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE )
     !$acc kernels
-    ZFLXC = 2.*ZTMP4_DEVICE
+    ZFLXC(:,:,:) = 2.*ZTMP4_DEVICE(:,:,:)
     !$acc end kernels
     IF ( KRRI >= 1 ) THEN
       !$acc kernels
-      ZTMP1_DEVICE =  ZTMP2_DEVICE*ZFLX*PINV_PDXX
+      ZTMP1_DEVICE(:,:,:) =  ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)*PINV_PDXX(:,:,:)
       !$acc end kernels
       CALL DXF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
       !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE*(1.0-PFRAC_ICE(:,:,:))
-      PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. * ZTMP2_DEVICE*PFRAC_ICE(:,:,:)
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE(:,:,:)*(1.0-PFRAC_ICE(:,:,:))
+      PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. * ZTMP2_DEVICE(:,:,:)*PFRAC_ICE(:,:,:)
       !$acc end kernels
     ELSE
       !$acc kernels
-      ZTMP1_DEVICE =  ZTMP2_DEVICE*ZFLX*PINV_PDXX
+      ZTMP1_DEVICE(:,:,:) =  ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)*PINV_PDXX(:,:,:)
       !$acc end kernels
       CALL DXF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
       !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
     END IF
   END IF
@@ -557,7 +560,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   TZFIELD%NDIMS      = 3
   TZFIELD%LTIMEDEP   = .TRUE.
 !$acc update self(ZFLX)
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLX)
+  CALL IO_Field_write(TPFILE,TZFIELD,ZFLX(:,:,:))
 END IF
 !
 IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -582,7 +585,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN
   CALL GX_W_UW_DEVICE(1,IKU,1,PWM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
   CALL MZM_DEVICE(ZFLX,ZTMP2_DEVICE)
   !$acc kernels
-  ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+  ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
   CALL MXF_DEVICE(ZTMP3_DEVICE,ZTMP1_DEVICE)
   CALL MZF_DEVICE(1,IKU,1,ZTMP1_DEVICE,ZTMP2_DEVICE)
@@ -591,14 +594,14 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN
   CALL GX_M_M_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
   CALL MXF_DEVICE(ZFLX,ZTMP2_DEVICE)
   !$acc kernels
-  ZTMP3_DEVICE = ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
   CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE,X_LES_RES_ddxa_Thl_SBG_UaThl , .TRUE. )
   !
   IF (KRR>=1) THEN
     CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE * ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE,X_LES_RES_ddxa_Rt_SBG_UaThl , .TRUE. )
   END IF
@@ -635,49 +638,52 @@ IF (KRR/=0) THEN
   !
   IF (.NOT. LFLAT) THEN
     PRRS(:,:,:,1) = PRRS(:,:,:,1)                                             &
-                  - DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX )                          &
-                  + DZF(1,IKU,1, PMZM_PRHODJ *MXF(PDZX*(MZM(1,IKU,1,ZFLX * PINV_PDXX))) * PINV_PDZZ )
+                  - DXF( MXM(PRHODJ) * ZFLX(:,:,:) * PINV_PDXX(:,:,:) )                          &
+                  + DZF(1,IKU,1, PMZM_PRHODJ(:,:,:) *MXF(PDZX*(MZM(1,IKU,1,ZFLX * PINV_PDXX(:,:,:)))) * PINV_PDZZ(:,:,:) )
   ELSE
-    PRRS(:,:,:,1) = PRRS(:,:,:,1) - DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX )
+    PRRS(:,:,:,1) = PRRS(:,:,:,1) - DXF( MXM(PRHODJ) * ZFLX(:,:,:) * PINV_PDXX(:,:,:) )
   END IF
   !
   ! Compute the equivalent tendancy for Rc and Ri
   !
   IF ( KRRL >= 1 ) THEN
     IF (.NOT. LFLAT) THEN
-      ZFLXC = ZFLXC            &
-            + 2.*( MXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX )                     &
-                  +MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PAMOIST*PSRCM )*MXF(                       &
-                                               PDZX*(MZM(1,IKU,1, ZFLX*PINV_PDXX )) ) )&
+      ZFLXC(:,:,:) = ZFLXC(:,:,:)            &
+            + 2.*( MXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) )                     &
+                  +MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF(                       &
+                                               PDZX(:,:,:)*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) ) )&
                  )
       IF ( KRRI >= 1 ) THEN
         PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PAMOIST*PSRCM )*MXF( PDZX*(MZM(1,IKU,1, ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
+        (- DXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )                   &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( PDZX(:,:,:)* &
+           (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )&
+                                           *PINV_PDZZ(:,:,:) )                        &
         )*(1.0-PFRAC_ICE(:,:,:))
         PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PAMOIST*PSRCM )*MXF( PDZX*(MZM(1,IKU,1, ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
+        (- DXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )                   &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( PDZX(:,:,:)* &
+           (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )&
+                                           *PINV_PDZZ(:,:,:) )                        &
         )*PFRAC_ICE(:,:,:)
       ELSE
         PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PAMOIST*PSRCM )*MXF( PDZX*(MZM(1,IKU,1, ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
+        (- DXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )                   &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MXF( PDZX(:,:,:)* &
+           (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDXX(:,:,:) )) )&
+                                           *PINV_PDZZ(:,:,:) )                        &
         )
       END IF
     ELSE
-      ZFLXC = ZFLXC + 2.*MXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX )
+      ZFLXC(:,:,:) = ZFLXC(:,:,:) + 2.*MXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) )
       IF ( KRRI >= 1 ) THEN
         PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. *                                  &
-        DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )*(1.0-PFRAC_ICE(:,:,:))
+        DXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )*(1.0-PFRAC_ICE(:,:,:))
         PRRS(:,:,:,4) = PRRS(:,:,:,4) -  2. *                                  &
-        DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )*PFRAC_ICE(:,:,:)
+        DXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )*PFRAC_ICE(:,:,:)
       ELSE
         PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. *                                  &
-        DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )
+        DXF( MXM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDXX(:,:,:) )
       END IF
     END IF
   END IF
@@ -694,7 +700,7 @@ IF (KRR/=0) THEN
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
     TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_Field_write(TPFILE,TZFIELD,ZFLX)
+    CALL IO_Field_write(TPFILE,TZFIELD,ZFLX(:,:,:))
   END IF
   !
   IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -723,7 +729,7 @@ END IF
   CALL MXM_DEVICE( PK, ZTMP1_DEVICE )
   CALL GX_M_U_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP2_DEVICE)
 !$acc kernels
-  ZFLX(:,:,:)     = -XCHF * ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZFLX(:,:,:)     = -XCHF * ZTMP1_DEVICE * ZTMP2_DEVICE(:,:,:)
   ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
 !$acc end kernels
 !
@@ -759,32 +765,32 @@ END IF
   IF (.NOT. LFLAT) THEN
     CALL MXM_DEVICE(PRHODJ,ZTMP1_DEVICE)
     !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX * PINV_PDXX
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLX(:,:,:) * PINV_PDXX(:,:,:)
     !$acc end kernels
     CALL DXF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
     !$acc kernels
-    ZTMP2_DEVICE = ZFLX * PINV_PDXX
+    ZTMP2_DEVICE(:,:,:) = ZFLX(:,:,:) * PINV_PDXX(:,:,:)
     !$acc end kernels
     CALL MZM_DEVICE(ZTMP2_DEVICE,ZTMP4_DEVICE)
     !$acc kernels
-    ZTMP2_DEVICE = PDZX*ZTMP4_DEVICE
+    ZTMP2_DEVICE(:,:,:) = PDZX(:,:,:)*ZTMP4_DEVICE(:,:,:)
     !$acc end kernels
     CALL MXF_DEVICE(ZTMP2_DEVICE,ZTMP4_DEVICE)
     !$acc kernels
-    ZTMP2_DEVICE = PMZM_PRHODJ * ZTMP4_DEVICE * PINV_PDZZ
+    ZTMP2_DEVICE(:,:,:) = PMZM_PRHODJ(:,:,:) * ZTMP4_DEVICE(:,:,:) * PINV_PDZZ(:,:,:)
     !$acc end kernels
     CALL DZF_DEVICE(1,IKU,1, ZTMP2_DEVICE, ZTMP4_DEVICE)
     !$acc kernels
-    PRRS(:,:,:,1) = PRRS(:,:,:,1) - ZTMP3_DEVICE + ZTMP4_DEVICE
+    PRRS(:,:,:,1) = PRRS(:,:,:,1) - ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:)
     !$acc end kernels
   ELSE
     CALL MXM_DEVICE(PRHODJ,ZTMP1_DEVICE)
     !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX * PINV_PDXX
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLX(:,:,:) * PINV_PDXX(:,:,:)
     !$acc end kernels
     CALL DXF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
     !$acc kernels
-    PRRS(:,:,:,1) = PRRS(:,:,:,1) - ZTMP3_DEVICE
+    PRRS(:,:,:,1) = PRRS(:,:,:,1) - ZTMP3_DEVICE(:,:,:)
     !$acc end kernels
   END IF
   !
@@ -792,69 +798,69 @@ END IF
   !
   IF ( KRRL >= 1 ) THEN
     !$acc kernels
-    ZTMP1_DEVICE = PRHODJ*PAMOIST*PSRCM
-    ZTMP2_DEVICE = ZFLX*PINV_PDXX
+    ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:)
+    ZTMP2_DEVICE(:,:,:) = ZFLX(:,:,:)*PINV_PDXX(:,:,:)
     !$acc end kernels
     CALL MXM_DEVICE( ZTMP1_DEVICE, ZTMP8_DEVICE )
     IF (.NOT. LFLAT) THEN
       !$acc kernels
-      ZTMP4_DEVICE = ZTMP8_DEVICE * ZFLX
+      ZTMP4_DEVICE(:,:,:) = ZTMP8_DEVICE(:,:,:) * ZFLX(:,:,:)
       !$acc end kernels
       CALL MXF_DEVICE( ZTMP4_DEVICE, ZTMP3_DEVICE )
       CALL MZM_DEVICE( ZTMP1_DEVICE, ZTMP4_DEVICE )
       CALL MZM_DEVICE( ZTMP2_DEVICE, ZTMP5_DEVICE )
       !$acc kernels
-      ZTMP6_DEVICE = PDZX*ZTMP5_DEVICE
+      ZTMP6_DEVICE(:,:,:) = PDZX(:,:,:)*ZTMP5_DEVICE(:,:,:)
       !$acc end kernels
       CALL MXF_DEVICE( ZTMP6_DEVICE, ZTMP5_DEVICE )
       !$acc kernels
-      ZTMP6_DEVICE = ZTMP4_DEVICE*ZTMP5_DEVICE
+      ZTMP6_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)
       !$acc end kernels
       CALL MZF_DEVICE(1,IKU,1, ZTMP6_DEVICE, ZTMP7_DEVICE )
       !$acc kernels
-      ZFLXC = ZFLXC + 2.*( ZTMP3_DEVICE + ZTMP7_DEVICE )
+      ZFLXC(:,:,:) = ZFLXC(:,:,:) + 2.*( ZTMP3_DEVICE(:,:,:) + ZTMP7_DEVICE(:,:,:) )
       !$acc end kernels
       !
       !
       !$acc kernels
-      ZTMP6_DEVICE = ZTMP4_DEVICE*ZTMP5_DEVICE*PINV_PDZZ
+      ZTMP6_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)*PINV_PDZZ(:,:,:)
       !$acc end kernels
       CALL DZF_DEVICE(1,IKU,1, ZTMP6_DEVICE, ZTMP3_DEVICE )
       !$acc kernels
-      ZTMP4_DEVICE = ZTMP8_DEVICE * ZFLX*PINV_PDXX
+      ZTMP4_DEVICE(:,:,:) = ZTMP8_DEVICE(:,:,:) * ZFLX(:,:,:)*PINV_PDXX(:,:,:)
       !$acc end kernels
       CALL DXF_DEVICE(ZTMP4_DEVICE, ZTMP5_DEVICE)
       !
       IF ( KRRI >= 1 ) THEN
         !$acc kernels
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP5_DEVICE+ ZTMP3_DEVICE)*(1.0-PFRAC_ICE(:,:,:))
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP5_DEVICE+ ZTMP3_DEVICE)*PFRAC_ICE(:,:,:)
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP5_DEVICE(:,:,:)+ ZTMP3_DEVICE(:,:,:))*(1.0-PFRAC_ICE(:,:,:))
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP5_DEVICE(:,:,:)+ ZTMP3_DEVICE(:,:,:))*PFRAC_ICE(:,:,:)
         !$acc end kernels
       ELSE
         !$acc kernels
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP5_DEVICE + ZTMP3_DEVICE)
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP5_DEVICE(:,:,:) + ZTMP3_DEVICE(:,:,:))
         !$acc end kernels
       END IF
     ELSE
       !$acc kernels
-      ZTMP4_DEVICE = ZTMP8_DEVICE*ZTMP2_DEVICE
+      ZTMP4_DEVICE(:,:,:) = ZTMP8_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
       CALL DXF_DEVICE(ZTMP4_DEVICE, ZTMP5_DEVICE)
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP8_DEVICE*ZFLX
+      ZTMP3_DEVICE(:,:,:) = ZTMP8_DEVICE(:,:,:)*ZFLX(:,:,:)
       !$acc end kernels
       CALL MXF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE )
       !$acc kernels
-      ZFLXC = ZFLXC + 2.*ZTMP4_DEVICE
+      ZFLXC(:,:,:) = ZFLXC(:,:,:) + 2.*ZTMP4_DEVICE(:,:,:)
       !$acc end kernels
       IF ( KRRI >= 1 ) THEN
         !$acc kernels
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. * ZTMP5_DEVICE*(1.0-PFRAC_ICE(:,:,:))
-        PRRS(:,:,:,4) = PRRS(:,:,:,4) -  2. * ZTMP5_DEVICE*PFRAC_ICE(:,:,:)
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. * ZTMP5_DEVICE(:,:,:)*(1.0-PFRAC_ICE(:,:,:))
+        PRRS(:,:,:,4) = PRRS(:,:,:,4) -  2. * ZTMP5_DEVICE(:,:,:)*PFRAC_ICE(:,:,:)
         !$acc end kernels
       ELSE
         !$acc kernels
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. * ZTMP5_DEVICE
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. * ZTMP5_DEVICE(:,:,:)
         !$acc end kernels
       END IF
     END IF
@@ -873,7 +879,7 @@ END IF
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
     TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_Field_write(TPFILE,TZFIELD,ZFLX)
+    CALL IO_Field_write(TPFILE,TZFIELD,ZFLX(:,:,:))
   END IF
   !
   IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -888,7 +894,7 @@ END IF
     CALL GX_W_UW_DEVICE(1,IKU,1,PWM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
     CALL MZM_DEVICE(ZFLX,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL MXF_DEVICE(ZTMP3_DEVICE,ZTMP4_DEVICE)
     CALL MZF_DEVICE(1,IKU,1,ZTMP4_DEVICE,ZTMP3_DEVICE)
@@ -897,14 +903,14 @@ END IF
     CALL GX_M_M_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
     CALL MXF_DEVICE(ZFLX,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. )
     !
     CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
     CALL MXF_DEVICE(ZFLX,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Rt_SBG_UaRt , .TRUE. )
     !
@@ -995,11 +1001,11 @@ ZFLX(:,:,IKB-1:IKB-1) = 2. * MYM(  SPREAD( PSFTHM(:,:)* PDIRCOSYW(:,:), 3,1) ) &
 !
 IF (.NOT. L2D) THEN 
   IF (.NOT. LFLAT) THEN
-    PRTHLS(:,:,:) =  PRTHLS                                                         &
-                  - DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY )                           &
-                  + DZF(1,IKU,1, PMZM_PRHODJ *MYF(PDZY*(MZM(1,IKU,1,ZFLX * PINV_PDYY))) * PINV_PDZZ )
+    PRTHLS(:,:,:) =  PRTHLS(:,:,:)                                                         &
+                  - DYF( MYM(PRHODJ) * ZFLX(:,:,:) * PINV_PDYY(:,:,:) )                           &
+                  + DZF(1,IKU,1, PMZM_PRHODJ *MYF(PDZY(:,:,:)*(MZM(1,IKU,1,ZFLX(:,:,:) * PINV_PDYY(:,:,:)))) * PINV_PDZZ(:,:,:) )
   ELSE
-    PRTHLS(:,:,:) =  PRTHLS - DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY )
+    PRTHLS(:,:,:) =  PRTHLS(:,:,:) - DYF( MYM(PRHODJ) * ZFLX(:,:,:) * PINV_PDYY(:,:,:) )
   END IF
 END IF
 !
@@ -1008,38 +1014,41 @@ END IF
 !IF ( OSUBG_COND .AND. KRRL > 0 .AND. .NOT. L2D) THEN
 IF ( KRRL >= 1 .AND. .NOT. L2D) THEN
   IF (.NOT. LFLAT) THEN
-    ZFLXC = 2.*( MYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX )                       &
-                +MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PATHETA*PSRCM )*MYF(                         &
-                                               PDZY*(MZM(1,IKU,1, ZFLX*PINV_PDYY )) ) )&
+    ZFLXC(:,:,:) = 2.*( MYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) )                       &
+                +MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF(                         &
+                                               PDZY(:,:,:)*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) ) )&
                )
     IF ( KRRI >= 1 ) THEN
       PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. *                                     &
-        (- DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )                   &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PATHETA*PSRCM )*MYF( PDZY*(MZM(1,IKU,1, ZFLX*PINV_PDYY )) )&
-                                           *PINV_PDZZ )                        &
+        (- DYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY(:,:,:) )                   &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* &
+           (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )&
+                                           *PINV_PDZZ(:,:,:) )                        &
         )*(1.0-PFRAC_ICE(:,:,:))
       PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. *                                     &
-        (- DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )                   &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PATHETA*PSRCM )*MYF( PDZY*(MZM(1,IKU,1, ZFLX*PINV_PDYY )) )&
-                                           *PINV_PDZZ )                        &
+        (- DYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY(:,:,:) )                   &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* &
+           (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )&
+                                           *PINV_PDZZ(:,:,:) )                        &
         )*PFRAC_ICE(:,:,:)
     ELSE
       PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. *                                     &
-        (- DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )                   &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PATHETA*PSRCM )*MYF( PDZY*(MZM(1,IKU,1, ZFLX*PINV_PDYY )) )&
-                                           *PINV_PDZZ )                        &
+        (- DYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY(:,:,:) )                   &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* &
+           (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )&
+                                           *PINV_PDZZ(:,:,:) )                        &
         )
     END IF
   ELSE
-    ZFLXC = 2.*MYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX )
+    ZFLXC(:,:,:) = 2.*MYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) )
     IF ( KRRI >= 1 ) THEN
       PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. *                                     &
-        DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )*(1.0-PFRAC_ICE(:,:,:))
+        DYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY(:,:,:) )*(1.0-PFRAC_ICE(:,:,:))
       PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. *                                     &
-        DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )*PFRAC_ICE(:,:,:)
+        DYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY(:,:,:) )*PFRAC_ICE(:,:,:)
     ELSE
       PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. *                                     &
-        DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )
+        DYF( MYM( PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY(:,:,:) )
     END IF
   END IF
 END IF
@@ -1059,7 +1068,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   TZFIELD%NTYPE      = TYPEREAL
   TZFIELD%NDIMS      = 3
   TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLX)
+  CALL IO_Field_write(TPFILE,TZFIELD,ZFLX(:,:,:))
 END IF
 !
 IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -1080,7 +1089,7 @@ END IF
   CALL MYM_DEVICE( PK, ZTMP1_DEVICE )
   CALL GY_M_V_DEVICE(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY,ZTMP2_DEVICE)
   !$acc kernels
-  ZFLX(:,:,:)     = -XCSHF * ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZFLX(:,:,:)     = -XCSHF * ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
   ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
   !$acc end kernels
 ELSE
@@ -1124,32 +1133,32 @@ IF (.NOT. L2D) THEN
   IF (.NOT. LFLAT) THEN
     CALL MYM_DEVICE(PRHODJ, ZTMP1_DEVICE)
     !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX * PINV_PDYY
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLX(:,:,:) * PINV_PDYY(:,:,:)
     !$acc end kernels
     CALL DYF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
     !$acc kernels
-    ZTMP1_DEVICE = ZFLX * PINV_PDYY
+    ZTMP1_DEVICE(:,:,:) = ZFLX(:,:,:) * PINV_PDYY(:,:,:)
     !$acc end kernels
     CALL MZM_DEVICE(ZTMP1_DEVICE, ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP1_DEVICE = PDZY*ZTMP2_DEVICE
+    ZTMP1_DEVICE(:,:,:) = PDZY(:,:,:)*ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL MYF_DEVICE(ZTMP1_DEVICE, ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP1_DEVICE = PMZM_PRHODJ * ZTMP2_DEVICE * PINV_PDZZ
+    ZTMP1_DEVICE(:,:,:) = PMZM_PRHODJ(:,:,:) * ZTMP2_DEVICE(:,:,:) * PINV_PDZZ(:,:,:)
     !$acc end kernels
     CALL DZF_DEVICE(1,IKU,1, ZTMP1_DEVICE, ZTMP2_DEVICE )
     !$acc kernels
-    PRTHLS(:,:,:) = PRTHLS - ZTMP3_DEVICE + ZTMP2_DEVICE
+    PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZTMP3_DEVICE(:,:,:) + ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
   ELSE
     CALL MYM_DEVICE(PRHODJ, ZTMP1_DEVICE)
     !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX * PINV_PDYY
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLX(:,:,:) * PINV_PDYY(:,:,:)
     !$acc end kernels
     CALL DYF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
     !$acc kernels
-    PRTHLS(:,:,:) =  PRTHLS - ZTMP3_DEVICE
+    PRTHLS(:,:,:) =  PRTHLS(:,:,:) - ZTMP3_DEVICE(:,:,:)
     !$acc end kernels
   END IF
 END IF
@@ -1160,80 +1169,80 @@ END IF
 IF ( KRRL >= 1 .AND. .NOT. L2D) THEN
   IF (.NOT. LFLAT) THEN
     !$acc kernels
-    ZTMP1_DEVICE = PRHODJ*PATHETA*PSRCM
+    ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:)
     !$acc end kernels
     CALL MYM_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
     !$acc kernels
-    ZTMP4_DEVICE = ZTMP2_DEVICE*ZFLX
+    ZTMP4_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)
     !$acc end kernels
     CALL MYF_DEVICE( ZTMP4_DEVICE, ZTMP3_DEVICE )
     !$acc kernels
-    ZTMP4_DEVICE = ZFLX*PINV_PDYY
+    ZTMP4_DEVICE(:,:,:) = ZFLX(:,:,:)*PINV_PDYY(:,:,:)
     !$acc end kernels
     CALL MZM_DEVICE( ZTMP4_DEVICE, ZTMP5_DEVICE )
     !$acc kernels
-    ZTMP4_DEVICE = PDZY*ZTMP5_DEVICE
+    ZTMP4_DEVICE(:,:,:) = PDZY(:,:,:)*ZTMP5_DEVICE(:,:,:)
     !$acc end kernels
     CALL MYF_DEVICE( ZTMP4_DEVICE, ZTMP5_DEVICE)
     CALL MZM_DEVICE( ZTMP1_DEVICE, ZTMP4_DEVICE )
     !$acc kernels
-    ZTMP6_DEVICE = ZTMP4_DEVICE*ZTMP5_DEVICE
+    ZTMP6_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)
     !$acc end kernels
     CALL MZF_DEVICE(1,IKU,1, ZTMP6_DEVICE, ZTMP4_DEVICE )
     !$acc kernels
-    ZFLXC = 2.*( ZTMP3_DEVICE + ZTMP4_DEVICE )
+    ZFLXC(:,:,:) = 2.*( ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )
     !$acc end kernels
     IF ( KRRI >= 1 ) THEN
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP2_DEVICE*ZFLX*PINV_PDYY
+      ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)*PINV_PDYY(:,:,:)
       !$acc end kernels
       CALL DYF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE )
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP6_DEVICE*PINV_PDZZ
+      ZTMP3_DEVICE(:,:,:) = ZTMP6_DEVICE(:,:,:)*PINV_PDZZ(:,:,:)
       !$acc end kernels
       CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP5_DEVICE )
       !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP4_DEVICE + ZTMP5_DEVICE )*(1.0-PFRAC_ICE(:,:,:))
-      PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * (- ZTMP4_DEVICE + ZTMP5_DEVICE )*PFRAC_ICE(:,:,:)
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP4_DEVICE(:,:,:) + ZTMP5_DEVICE(:,:,:) )*(1.0-PFRAC_ICE(:,:,:))
+      PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * (- ZTMP4_DEVICE(:,:,:) + ZTMP5_DEVICE(:,:,:) )*PFRAC_ICE(:,:,:)
       !$acc end kernels
     ELSE
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP2_DEVICE*ZFLX*PINV_PDYY
+      ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)*PINV_PDYY(:,:,:)
       !$acc end kernels
       CALL DYF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE )
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP6_DEVICE*PINV_PDZZ
+      ZTMP3_DEVICE(:,:,:) = ZTMP6_DEVICE(:,:,:)*PINV_PDZZ(:,:,:)
       !$acc end kernels
       CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP5_DEVICE )
       !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP4_DEVICE + ZTMP5_DEVICE )
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP4_DEVICE(:,:,:) + ZTMP5_DEVICE(:,:,:) )
       !$acc end kernels
     END IF
   ELSE
     !$acc kernels
-    ZTMP1_DEVICE = PRHODJ*PATHETA*PSRCM
+    ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PATHETA(:,:,:)*PSRCM(:,:,:)
     !$acc end kernels
     CALL MYM_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
     !$acc kernels
-    ZTMP1_DEVICE = ZTMP2_DEVICE*ZFLX
+    ZTMP1_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)
     !$acc end kernels
     CALL MYF_DEVICE( ZTMP1_DEVICE, ZTMP3_DEVICE )
     !$acc kernels
-    ZFLXC = 2.*ZTMP3_DEVICE
+    ZFLXC(:,:,:) = 2.*ZTMP3_DEVICE(:,:,:)
     !$acc end kernels
     !
     !$acc kernels
-    ZTMP1_DEVICE = ZTMP2_DEVICE*ZFLX*PINV_PDYY
+    ZTMP1_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)*PINV_PDYY(:,:,:)
     !$acc end kernels
     CALL DYF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
     IF ( KRRI >= 1 ) THEN
       !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE*(1.0-PFRAC_ICE(:,:,:))
-      PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. * ZTMP2_DEVICE*PFRAC_ICE(:,:,:)
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE(:,:,:)*(1.0-PFRAC_ICE(:,:,:))
+      PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. * ZTMP2_DEVICE(:,:,:)*PFRAC_ICE(:,:,:)
       !$acc end kernels
     ELSE
       !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
     END IF
   END IF
@@ -1254,7 +1263,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   TZFIELD%NTYPE      = TYPEREAL
   TZFIELD%NDIMS      = 3
   TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLX)
+  CALL IO_Field_write(TPFILE,TZFIELD,ZFLX(:,:,:))
 END IF
 !
 IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -1268,7 +1277,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN
   CALL GY_W_VW_DEVICE(1,IKU,1,PWM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
   CALL MZM_DEVICE(ZFLX,ZTMP2_DEVICE)
   !$acc kernels
-  ZTMP3_DEVICE = ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
   CALL MYF_DEVICE(ZTMP3_DEVICE, ZTMP4_DEVICE)
   CALL MZF_DEVICE(1,IKU,1,ZTMP4_DEVICE, ZTMP1_DEVICE)
@@ -1277,7 +1286,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN
   CALL GY_M_M_DEVICE(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
   CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE)
   !$acc kernels
-  ZTMP3_DEVICE = ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
   CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaThl , .TRUE. )
                          !
@@ -1288,7 +1297,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN
     CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
     CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE * ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE,X_LES_RES_ddxa_Rt_SBG_UaThl , .TRUE. )
 !$acc end data
@@ -1333,11 +1342,11 @@ IF (KRR/=0) THEN
   IF (.NOT. L2D) THEN 
     IF (.NOT. LFLAT) THEN
       PRRS(:,:,:,1) = PRRS(:,:,:,1)                                              &
-                    - DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY )                           &
-
-                    + DZF(1,IKU,1, PMZM_PRHODJ *MYF(PDZY*(MZM(1,IKU,1,ZFLX * PINV_PDYY))) * PINV_PDZZ )
+                    - DYF( MYM(PRHODJ) * ZFLX(:,:,:) * PINV_PDYY(:,:,:) )                           &
+                    + DZF(1,IKU,1, PMZM_PRHODJ(:,:,:) *MYF(PDZY(:,:,:)* &
+                      (MZM(1,IKU,1,ZFLX(:,:,:) * PINV_PDYY(:,:,:)))) * PINV_PDZZ(:,:,:) )
     ELSE
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) - DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY )
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) - DYF( MYM(PRHODJ) * ZFLX(:,:,:) * PINV_PDYY(:,:,:) )
     END IF
   END IF
   !
@@ -1345,39 +1354,42 @@ IF (KRR/=0) THEN
   !
   IF ( KRRL >= 1 .AND. .NOT. L2D) THEN   ! Sub-grid condensation
     IF (.NOT. LFLAT) THEN
-      ZFLXC = ZFLXC            &
-            + 2.*( MXF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX )                     &
-                +  MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PAMOIST*PSRCM )*MYF(                       &
-                                               PDZY*(MZM(1,IKU,1, ZFLX*PINV_PDYY )) ) )&
+      ZFLXC(:,:,:) = ZFLXC(:,:,:)            &
+            + 2.*( MXF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) )                     &
+                +  MZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF(                       &
+                                               PDZY(:,:,:)*(MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) ) )&
                  )
       IF ( KRRI >= 1 ) THEN
         PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )                        &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PAMOIST*PSRCM )*MYF( PDZY*(MZM(1,IKU,1, ZFLX*PINV_PDYY )) )&
-                                           * PINV_PDZZ )                       &
+        (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )                        &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* &
+           (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )&
+                                           * PINV_PDZZ(:,:,:) )                       &
         )*(1.0-PFRAC_ICE(:,:,:))
         PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. *                                  &
-        (- DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )                        &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PAMOIST*PSRCM )*MYF( PDZY*(MZM(1,IKU,1, ZFLX*PINV_PDYY )) )&
-                                           * PINV_PDZZ )                       &
+        (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )                        &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* &
+           (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )&
+                                           * PINV_PDZZ(:,:,:) )                       &
         )*PFRAC_ICE(:,:,:)
       ELSE
         PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )                        &
-         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ*PAMOIST*PSRCM )*MYF( PDZY*(MZM(1,IKU,1, ZFLX*PINV_PDYY )) )&
-                                           * PINV_PDZZ )                       &
+        (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )                        &
+         + DZF(1,IKU,1, MZM(1,IKU,1, PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* &
+           (MZM(1,IKU,1, ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )&
+                                           * PINV_PDZZ(:,:,:) )                       &
         )
       END IF
     ELSE
-      ZFLXC = ZFLXC + 2.*MXF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX )
+      ZFLXC(:,:,:) = ZFLXC(:,:,:) + 2.*MXF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX )
       IF ( KRRI >= 1 ) THEN
         PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. *                                   &
-        DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )*(1.0-PFRAC_ICE(:,:,:))
+        DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )*(1.0-PFRAC_ICE(:,:,:))
         PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. *                                   &
-        DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )*PFRAC_ICE(:,:,:)
+        DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )*PFRAC_ICE(:,:,:)
       ELSE
         PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. *                                   &
-        DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )
+        DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )
       END IF
     END IF
   END IF
@@ -1394,7 +1406,7 @@ IF (KRR/=0) THEN
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
     TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_Field_write(TPFILE,TZFIELD,ZFLX)
+    CALL IO_Field_write(TPFILE,TZFIELD,ZFLX(:,:,:))
   END IF
   !
   IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -1426,7 +1438,7 @@ IF (KRR/=0) THEN
     CALL MYM_DEVICE( PK, ZTMP1_DEVICE )
     CALL GY_M_V_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY, ZTMP2_DEVICE)
     !$acc kernels
-    ZFLX(:,:,:)     = -XCHF * ZTMP1_DEVICE * ZTMP2_DEVICE
+    ZFLX(:,:,:)     = -XCHF * ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
     ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
     !$acc end kernels
   ELSE
@@ -1469,34 +1481,34 @@ IF (KRR/=0) THEN
     IF (.NOT. LFLAT) THEN
       CALL MYM_DEVICE(PRHODJ, ZTMP1_DEVICE)
       !$acc kernels
-      ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX * PINV_PDYY
+      ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLX(:,:,:) * PINV_PDYY(:,:,:)
       !$acc end kernels
       CALL DYF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
       !
       !$acc kernels
-      ZTMP1_DEVICE = ZFLX * PINV_PDYY
+      ZTMP1_DEVICE(:,:,:) = ZFLX(:,:,:) * PINV_PDYY(:,:,:)
       !$acc end kernels
       CALL MZM_DEVICE(ZTMP1_DEVICE,ZTMP2_DEVICE)
       !$acc kernels
-      ZTMP1_DEVICE = PDZY*ZTMP2_DEVICE
+      ZTMP1_DEVICE(:,:,:) = PDZY(:,:,:)*ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
       CALL MYF_DEVICE(ZTMP1_DEVICE,ZTMP2_DEVICE)
       !$acc kernels
-      ZTMP1_DEVICE = PMZM_PRHODJ * ZTMP2_DEVICE * PINV_PDZZ
+      ZTMP1_DEVICE(:,:,:) = PMZM_PRHODJ(:,:,:) * ZTMP2_DEVICE(:,:,:) * PINV_PDZZ(:,:,:)
       !$acc end kernels
       CALL DZF_DEVICE(1,IKU,1,ZTMP1_DEVICE,ZTMP2_DEVICE )
       !
       !$acc kernels
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) - ZTMP3_DEVICE + ZTMP2_DEVICE
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) - ZTMP3_DEVICE(:,:,:) + ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
     ELSE
       CALL MYM_DEVICE(PRHODJ, ZTMP1_DEVICE)
       !$acc kernels
-      ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX * PINV_PDYY
+      ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLX(:,:,:) * PINV_PDYY(:,:,:)
       !$acc end kernels
       CALL DYF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
       !$acc kernels
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) - ZTMP3_DEVICE
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) - ZTMP3_DEVICE(:,:,:)
       !$acc end kernels
     END IF
   END IF
@@ -1506,72 +1518,72 @@ IF (KRR/=0) THEN
   IF ( KRRL >= 1 .AND. .NOT. L2D) THEN   ! Sub-grid condensation
     IF (.NOT. LFLAT) THEN
       !$acc kernels
-      ZTMP1_DEVICE = PRHODJ*PAMOIST*PSRCM
+      ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:)
       !$acc end kernels
       CALL MYM_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP2_DEVICE*ZFLX
+      ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)
       !$acc end kernels
       CALL MXF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE )
       CALL MZM_DEVICE( ZTMP1_DEVICE, ZTMP5_DEVICE )
       !$acc kernels
-      ZTMP1_DEVICE = ZFLX*PINV_PDYY
+      ZTMP1_DEVICE(:,:,:) = ZFLX(:,:,:)*PINV_PDYY(:,:,:)
       !$acc end kernels
       CALL MZM_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
       !$acc kernels
-      ZTMP1_DEVICE = PDZY*ZTMP2_DEVICE
+      ZTMP1_DEVICE(:,:,:) = PDZY(:,:,:)*ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
       CALL MYF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
       !$acc kernels
-      ZTMP1_DEVICE = ZTMP5_DEVICE*ZTMP2_DEVICE
+      ZTMP1_DEVICE(:,:,:) = ZTMP5_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
       CALL MZF_DEVICE(1,IKU,1, ZTMP1_DEVICE, ZTMP2_DEVICE )
       !$acc kernels
-      ZFLXC = ZFLXC + 2.*( ZTMP4_DEVICE + ZTMP2_DEVICE )
+      ZFLXC(:,:,:) = ZFLXC(:,:,:) + 2.*( ZTMP4_DEVICE(:,:,:) + ZTMP2_DEVICE(:,:,:) )
       !$acc end kernels
       IF ( KRRI >= 1 ) THEN
         !$acc kernels
-        ZTMP2_DEVICE = ZTMP3_DEVICE/PDYY
+        ZTMP2_DEVICE(:,:,:) = ZTMP3_DEVICE(:,:,:) * PINV_PDYY(:,:,:)
         !$acc end kernels
         CALL DYF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
         !$acc kernels
-        ZTMP2_DEVICE = ZTMP1_DEVICE* PINV_PDZZ
+        ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)* PINV_PDZZ(:,:,:)
         !$acc end kernels
         CALL DZF_DEVICE(1,IKU,1, ZTMP2_DEVICE, ZTMP4_DEVICE )
         !$acc kernels
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP3_DEVICE + ZTMP4_DEVICE )*(1.0-PFRAC_ICE(:,:,:))
-        PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. * (- ZTMP3_DEVICE + ZTMP4_DEVICE )*PFRAC_ICE(:,:,:)
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*(1.0-PFRAC_ICE(:,:,:))
+        PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. * (- ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*PFRAC_ICE(:,:,:)
         !$acc end kernels
       ELSE
         !$acc kernels
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP3_DEVICE + ZTMP4_DEVICE )
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. * (- ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )
         !$acc end kernels
       END IF
     ELSE
       !$acc kernels
-      ZTMP1_DEVICE = PRHODJ*PAMOIST*PSRCM
+      ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:)
       !$acc end kernels
       CALL MYM_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP2_DEVICE*ZFLX
+      ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLX(:,:,:)
       !$acc end kernels
       CALL MXF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE )
       !$acc kernels
-      ZFLXC = ZFLXC + 2.*ZTMP4_DEVICE
+      ZFLXC(:,:,:) = ZFLXC(:,:,:) + 2.*ZTMP4_DEVICE(:,:,:)
       !$acc end kernels
       !
       !$acc kernels
-      ZTMP1_DEVICE = ZTMP3_DEVICE/PDYY
+      ZTMP1_DEVICE(:,:,:) = ZTMP3_DEVICE(:,:,:)* PINV_PDYY(:,:,:)
       !$acc end kernels
       CALL DYF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )
       IF ( KRRI >= 1 ) THEN
         !$acc kernels
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE*(1.0-PFRAC_ICE(:,:,:))
-        PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. * ZTMP2_DEVICE*PFRAC_ICE(:,:,:)
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE(:,:,:)*(1.0-PFRAC_ICE(:,:,:))
+        PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. * ZTMP2_DEVICE(:,:,:)*PFRAC_ICE(:,:,:)
         !$acc end kernels
       ELSE
         !$acc kernels
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. * ZTMP2_DEVICE(:,:,:)
         !$acc end kernels
       END IF
     END IF
@@ -1590,7 +1602,7 @@ IF (KRR/=0) THEN
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
     TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_Field_write(TPFILE,TZFIELD,ZFLX)
+    CALL IO_Field_write(TPFILE,TZFIELD,ZFLX(:,:,:))
   END IF
   !
   IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -1605,7 +1617,7 @@ IF (KRR/=0) THEN
     CALL GY_W_VW_DEVICE(1,IKU,1,PWM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
     CALL MZM_DEVICE(ZFLX,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE * ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL MYF_DEVICE(ZTMP3_DEVICE, ZTMP4_DEVICE)
     CALL MZF_DEVICE(1,IKU,1,ZTMP4_DEVICE,ZTMP1_DEVICE)
@@ -1614,14 +1626,14 @@ IF (KRR/=0) THEN
     CALL GY_M_M_DEVICE(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
     CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE * ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. )
     !
     CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
     CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE * ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Rt_SBG_UaRt , .TRUE. )
     !
diff --git a/src/MNH/turb_ver.f90 b/src/MNH/turb_ver.f90
index afbe862078bfd754f9190356e6799c9de684ad27..80fd1717f9f254de4b37931eba63e759135c9faa 100644
--- a/src/MNH/turb_ver.f90
+++ b/src/MNH/turb_ver.f90
@@ -605,28 +605,28 @@ CALL PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_FLX,        &
 ! Buoyancy coefficient
 !
 !$acc kernels
-ZBETA = XG/PTHVREF
+ZBETA(:,:,:) = XG/PTHVREF(:,:,:)
 !
 ! Square root of Tke
 !
-ZSQRT_TKE = SQRT(PTKEM)
+ZSQRT_TKE(:,:,:) = SQRT(PTKEM(:,:,:))
 !$acc end kernels
 !
 ! gradients of mean quantities at previous time-step
 !
 #ifndef MNH_OPENACC
-ZDTH_DZ = GZ_M_W(KKA,KKU,KKL,PTHLM(:,:,:),PDZZ)
-ZDR_DZ  = 0.
+ZDTH_DZ(:,:,:) = GZ_M_W(KKA,KKU,KKL,PTHLM(:,:,:),PDZZ(:,:,:))
+ZDR_DZ(:,:,:)  = 0.
 IF (KRR>0) THEN
-ZDR_DZ  = GZ_M_W(KKA,KKU,KKL,PRM(:,:,:,1),PDZZ)
+ZDR_DZ(:,:,:)  = GZ_M_W(KKA,KKU,KKL,PRM(:,:,:,1),PDZZ(:,:,:))
 ENDIF
 #else
-CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PTHLM(:,:,:),PDZZ,ZDTH_DZ)
+CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PTHLM(:,:,:),PDZZ(:,:,:),ZDTH_DZ(:,:,:))
 !$acc kernels
-ZDR_DZ  = 0.
+ZDR_DZ(:,:,:)  = 0.
 !$acc end kernels
 IF (KRR>0) THEN
-CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDZZ,ZDR_DZ)
+CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDZZ(:,:,:),ZDR_DZ(:,:,:))
 ENDIF
 #endif
 !
@@ -634,7 +634,7 @@ ENDIF
 ! Denominator factor in 3rd order terms
 !
 !$acc kernels
-ZD(:,:,:) = (1.+ZREDTH1+ZREDR1) * (1.+0.5*(ZREDTH1+ZREDR1))
+ZD(:,:,:) = (1.+ZREDTH1(:,:,:)+ZREDR1(:,:,:)) * (1.+0.5*(ZREDTH1(:,:,:)+ZREDR1(:,:,:)))
 !$acc end kernels
 !
 ! Phi3 and Psi3 Prandtl numbers
@@ -642,9 +642,9 @@ ZD(:,:,:) = (1.+ZREDTH1+ZREDR1) * (1.+0.5*(ZREDTH1+ZREDR1))
 GUSERV = KRR/=0
 !
 #ifndef MNH_OPENACC
-ZPHI3 = PHI3(ZREDTH1,ZREDR1,ZRED2TH3,ZRED2R3,ZRED2THR3,HTURBDIM,GUSERV)
+ZPHI3(:,:,:) = PHI3(ZREDTH1,ZREDR1,ZRED2TH3,ZRED2R3,ZRED2THR3,HTURBDIM,GUSERV)
 IF(KRR/=0) THEN
-ZPSI3 = PSI3(ZREDR1,ZREDTH1,ZRED2R3,ZRED2TH3,ZRED2THR3,HTURBDIM,GUSERV)
+ZPSI3(:,:,:) = PSI3(ZREDR1,ZREDTH1,ZRED2R3,ZRED2TH3,ZRED2THR3,HTURBDIM,GUSERV)
 ENDIF
 #else
 CALL PHI3(ZREDTH1,ZREDR1,ZRED2TH3,ZRED2R3,ZRED2THR3,HTURBDIM,GUSERV,ZPHI3)
@@ -658,7 +658,7 @@ ENDIF
 ! Prandtl numbers for scalars
 !
 #ifndef MNH_OPENACC
-ZPSI_SV = PSI_SV(ZREDTH1,ZREDR1,ZREDS1,ZRED2THS,ZRED2RS,ZPHI3,ZPSI3)
+ZPSI_SV(:,:,:,:) = PSI_SV(ZREDTH1,ZREDR1,ZREDS1,ZRED2THS,ZRED2RS,ZPHI3,ZPSI3)
 #else
 CALL PSI_SV(ZREDTH1,ZREDR1,ZREDS1,ZRED2THS,ZRED2RS,ZPHI3,ZPSI3,ZPSI_SV)
 #endif
diff --git a/src/MNH/turb_ver_dyn_flux.f90 b/src/MNH/turb_ver_dyn_flux.f90
index 36919afe8039a7d09fcef3630363a163040d3fec..15f1e793cf88319b5d579d333d190de87b26c061 100644
--- a/src/MNH/turb_ver_dyn_flux.f90
+++ b/src/MNH/turb_ver_dyn_flux.f90
@@ -477,8 +477,6 @@ allocate( ztmp4_device(size( pthlm, 1 ), size( pthlm, 2 ), size( pthlm, 3 ) ) )
                                     !
 !*       1.   PRELIMINARIES
 !             -------------
-ZA=XUNDEF
-PDP=XUNDEF
 !
 IIU=SIZE(PUM,1)
 IJU=SIZE(PUM,2)
@@ -490,6 +488,8 @@ IKTB=1+JPVEXT_TURB
 IKTE=IKT-JPVEXT_TURB
 !
 !$acc kernels
+ZA(:,:,:)  = XUNDEF
+PDP(:,:,:) = XUNDEF
 ZSOURCE(:,:,:) = 0.
 !
 #ifndef MNH_BITREP
@@ -503,7 +503,7 @@ ZDIRSINZW(:,:) = SQRT(1.-BR_P2(PDIRCOSZW(:,:)))
 #ifndef MNH_OPENACC
 ZKEFF(:,:,:) = MZM(KKA,KKU,KKL, PLM(:,:,:) * SQRT(PTKEM(:,:,:)) )
 #else
-ZTMP1_DEVICE = PLM(:,:,:) * SQRT(PTKEM(:,:,:))
+ZTMP1_DEVICE(:,:,:) = PLM(:,:,:) * SQRT(PTKEM(:,:,:))
 !$acc end kernels
 CALL MZM_DEVICE(ZTMP1_DEVICE,ZKEFF)
 #endif
@@ -538,9 +538,9 @@ CALL MXM_DEVICE(ZTMP2_DEVICE,ZTMP3_DEVICE)
 CALL MXM_DEVICE( PDZZ, ZTMP4_DEVICE )
 !$acc kernels
 #ifndef MNH_BITREP
-ZA(:,:,:) = -PTSTEP * XCMFS * ZTMP1_DEVICE * ZTMP3_DEVICE / ZTMP4_DEVICE**2
+ZA(:,:,:) = -PTSTEP * XCMFS * ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE(:,:,:) / ZTMP4_DEVICE(:,:,:)**2
 #else
-ZA(:,:,:) = -PTSTEP * XCMFS * ZTMP1_DEVICE * ZTMP3_DEVICE / BR_P2(ZTMP4_DEVICE)
+ZA(:,:,:) = -PTSTEP * XCMFS * ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE(:,:,:) / BR_P2(ZTMP4_DEVICE(:,:,:))
 #endif
 !$acc end kernels
 #endif
@@ -627,7 +627,7 @@ CALL TRIDIAG_WIND(KKA,KKU,KKL,PUM,ZA,ZCOEFS(:,:,1),PTSTEP,PEXPL,PIMPL,   &
 PRUS(:,:,:)=PRUS(:,:,:)+MXM(PRHODJ(:,:,:))*(ZRES(:,:,:)-PUM(:,:,:))/PTSTEP
 #else
 !$acc kernels
-PRUS(:,:,:)=PRUS(:,:,:)+ZTMP1_DEVICE*(ZRES(:,:,:)-PUM(:,:,:))/PTSTEP
+PRUS(:,:,:)=PRUS(:,:,:)+ZTMP1_DEVICE(:,:,:)*(ZRES(:,:,:)-PUM(:,:,:))/PTSTEP
 #endif
 !
 !
@@ -637,15 +637,15 @@ PRUS(:,:,:)=PRUS(:,:,:)+ZTMP1_DEVICE*(ZRES(:,:,:)-PUM(:,:,:))/PTSTEP
 !
 #ifndef MNH_OPENACC
 ZFLXZ(:,:,:)     = -XCMFS * MXM(ZKEFF) * &
-                  DZM (KKA,KKU,KKL,PIMPL*ZRES + PEXPL*PUM) / MXM(PDZZ)
+                  DZM (KKA,KKU,KKL,PIMPL*ZRES(:,:,:) + PEXPL*PUM(:,:,:)) / MXM(PDZZ)
 #else
-ZTMP2_DEVICE = PIMPL*ZRES + PEXPL*PUM
+ZTMP2_DEVICE(:,:,:) = PIMPL*ZRES(:,:,:) + PEXPL*PUM(:,:,:)
 !$acc end kernels
 CALL MXM_DEVICE(ZKEFF,ZTMP1_DEVICE)
 CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP3_DEVICE)
 CALL MXM_DEVICE(PDZZ,ZTMP4_DEVICE)
 !$acc kernels
-ZFLXZ(:,:,:)     = -XCMFS * ZTMP1_DEVICE * ZTMP3_DEVICE / ZTMP4_DEVICE
+ZFLXZ(:,:,:)     = -XCMFS * ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE(:,:,:) / ZTMP4_DEVICE(:,:,:)
 !$acc end kernels
 #endif
 !
@@ -696,16 +696,16 @@ PWU(:,:,:) = ZFLXZ(:,:,:)
 ! compute the dynamic production at the mass point
 !
 #ifndef MNH_OPENACC
-PDP(:,:,:) = - MZF(KKA,KKU,KKL, MXF ( ZFLXZ * GZ_U_UW(KKA,KKU,KKL,PUM,PDZZ) )  )
+PDP(:,:,:) = - MZF(KKA,KKU,KKL, MXF ( ZFLXZ(:,:,:) * GZ_U_UW(KKA,KKU,KKL,PUM,PDZZ) )  )
 #else
 CALL GZ_U_UW_DEVICE(KKA,KKU,KKL,PUM,PDZZ,ZTMP1_DEVICE)
 !$acc kernels
-ZTMP2_DEVICE = ZFLXZ * ZTMP1_DEVICE
+ZTMP2_DEVICE(:,:,:) = ZFLXZ(:,:,:) * ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
 CALL MXF_DEVICE( ZTMP2_DEVICE,ZTMP3_DEVICE )
 CALL MZF_DEVICE(KKA,KKU,KKL, ZTMP3_DEVICE, ZTMP4_DEVICE )
 !$acc kernels
-PDP(:,:,:) = - ZTMP4_DEVICE
+PDP(:,:,:) = - ZTMP4_DEVICE(:,:,:)
 !$acc end kernels
 #endif
 !
@@ -734,8 +734,8 @@ IF (LLES_CALL) THEN
 #ifndef MNH_OPENACC
   CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MXF(ZFLXZ)), X_LES_SUBGRID_WU ) 
   CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MXF(GZ_U_UW(KKA,KKU,KKL,PUM,PDZZ) &
-                          & *ZFLXZ)), X_LES_RES_ddxa_U_SBG_UaU )
-  CALL LES_MEAN_SUBGRID( XCMFS * ZKEFF, X_LES_SUBGRID_Km )
+                          & *ZFLXZ(:,:,:))), X_LES_RES_ddxa_U_SBG_UaU )
+  CALL LES_MEAN_SUBGRID( XCMFS * ZKEFF(:,:,:), X_LES_SUBGRID_Km )
 #else
 !$acc data copy(X_LES_SUBGRID_WU,X_LES_RES_ddxa_U_SBG_UaU,X_LES_SUBGRID_Km)
   !
@@ -745,14 +745,14 @@ IF (LLES_CALL) THEN
   !
   CALL GZ_U_UW_DEVICE(KKA,KKU,KKL,PUM,PDZZ,ZTMP1_DEVICE)
   !$acc kernels
-  ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLXZ
+  ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:)
   !$acc end kernels
   CALL MXF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
   CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE,ZTMP4_DEVICE)
   CALL LES_MEAN_SUBGRID( ZTMP4_DEVICE, X_LES_RES_ddxa_U_SBG_UaU )
   !
   !$acc kernels
-  ZTMP1_DEVICE = XCMFS * ZKEFF
+  ZTMP1_DEVICE(:,:,:) = XCMFS * ZKEFF(:,:,:)
   !$acc end kernels
   CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_Km )
   !
@@ -775,43 +775,43 @@ IF(HTURBDIM=='3DIM') THEN
 #ifndef MNH_OPENACC
   IF (.NOT. LFLAT) THEN
     PRWS(:,:,:)= PRWS                                      &
-                -DXF( MZM(KKA,KKU,KKL, MXM(PRHODJ) /PDXX )  * ZFLXZ )  &
+                -DXF( MZM(KKA,KKU,KKL, MXM(PRHODJ) /PDXX(:,:,:) )  * ZFLXZ(:,:,:) )  &
                 +DZM(KKA,KKU,KKL, PRHODJ / MZF(KKA,KKU,KKL,PDZZ ) *                &
-                      MXF( MZF(KKA,KKU,KKL, ZFLXZ*PDZX ) / PDXX )      &
+                      MXF( MZF(KKA,KKU,KKL, ZFLXZ(:,:,:)*PDZX(:,:,:) ) / PDXX(:,:,:) )      &
                     )
   ELSE
-    PRWS(:,:,:)= PRWS -DXF( MZM(KKA,KKU,KKL, MXM(PRHODJ) /PDXX )  * ZFLXZ )
+    PRWS(:,:,:)= PRWS(:,:,:) -DXF( MZM(KKA,KKU,KKL, MXM(PRHODJ) /PDXX(:,:,:) )  * ZFLXZ(:,:,:) )
   END IF
 #else
   CALL MXM_DEVICE(PRHODJ,ZTMP1_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = ZTMP1_DEVICE /PDXX
+  ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) /PDXX(:,:,:)
 !$acc end kernels
   CALL MZM_DEVICE(ZTMP2_DEVICE,ZTMP3_DEVICE )
 !$acc kernels
-  ZTMP2_DEVICE = ZTMP3_DEVICE * ZFLXZ
+  ZTMP2_DEVICE(:,:,:) = ZTMP3_DEVICE(:,:,:) * ZFLXZ(:,:,:)
 !$acc end kernels
   CALL DXF_DEVICE( ZTMP2_DEVICE,ZTMP1_DEVICE )
   IF (.NOT. LFLAT) THEN
     CALL MZF_DEVICE(KKA,KKU,KKL,PDZZ,ZTMP2_DEVICE )
     !$acc kernels
-    ZTMP3_DEVICE = ZFLXZ*PDZX
+    ZTMP3_DEVICE(:,:,:) = ZFLXZ(:,:,:)*PDZX(:,:,:)
     !$acc end kernels
     CALL MZF_DEVICE(KKA,KKU,KKL, ZTMP3_DEVICE,ZTMP4_DEVICE )
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP4_DEVICE / PDXX
+    ZTMP3_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:) / PDXX(:,:,:)
     !$acc end kernels
     CALL MXF_DEVICE( ZTMP3_DEVICE,ZTMP4_DEVICE )
     !$acc kernels
-    ZTMP3_DEVICE = PRHODJ / ZTMP2_DEVICE * ZTMP4_DEVICE
+    ZTMP3_DEVICE(:,:,:) = PRHODJ(:,:,:) / ZTMP2_DEVICE(:,:,:) * ZTMP4_DEVICE(:,:,:)
     !$acc end kernels
     CALL DZM_DEVICE(KKA,KKU,KKL, ZTMP3_DEVICE,ZTMP2_DEVICE)
     !$acc kernels
-    PRWS(:,:,:)= PRWS - ZTMP1_DEVICE + ZTMP2_DEVICE
+    PRWS(:,:,:)= PRWS(:,:,:) - ZTMP1_DEVICE(:,:,:) + ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
   ELSE
     !$acc kernels
-    PRWS(:,:,:)= PRWS -ZTMP1_DEVICE
+    PRWS(:,:,:)= PRWS(:,:,:) -ZTMP1_DEVICE(:,:,:)
     !$acc end kernels
   END IF
 #endif
@@ -819,16 +819,16 @@ IF(HTURBDIM=='3DIM') THEN
   ! Complete the Dynamical production with the W wind component 
   !
 #ifndef MNH_OPENACC
-  ZA(:,:,:)=-MZF(KKA,KKU,KKL, MXF ( ZFLXZ * GX_W_UW(KKA,KKU,KKL, PWM,PDXX,PDZZ,PDZX) )  )
+  ZA(:,:,:)=-MZF(KKA,KKU,KKL, MXF ( ZFLXZ(:,:,:) * GX_W_UW(KKA,KKU,KKL, PWM,PDXX,PDZZ,PDZX) )  )
 #else
   CALL GX_W_UW_DEVICE(KKA,KKU,KKL, PWM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = ZFLXZ * ZTMP1_DEVICE
+  ZTMP2_DEVICE(:,:,:) = ZFLXZ(:,:,:) * ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
   CALL MXF_DEVICE(ZTMP2_DEVICE,ZTMP1_DEVICE)
   CALL MZF_DEVICE(KKA,KKU,KKL, ZTMP1_DEVICE,ZTMP2_DEVICE )
 !$acc kernels
-  ZA(:,:,:)=-ZTMP2_DEVICE
+  ZA(:,:,:)=-ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 #endif
   !
@@ -874,7 +874,7 @@ IF(HTURBDIM=='3DIM') THEN
     CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
     CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MXF(GX_W_UW(KKA,KKU,KKL,PWM,PDXX,&
-      PDZZ,PDZX)*ZFLXZ)), X_LES_RES_ddxa_W_SBG_UaW )
+      PDZZ,PDZX)*ZFLXZ(:,:,:))), X_LES_RES_ddxa_W_SBG_UaW )
     CALL LES_MEAN_SUBGRID( MXF(GX_M_U(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX)&
       * MZF(KKA,KKU,KKL,ZFLXZ)), X_LES_RES_ddxa_Thl_SBG_UaW )
     IF (KRR>=1) THEN
@@ -891,7 +891,7 @@ IF(HTURBDIM=='3DIM') THEN
     !
     CALL GX_W_UW_DEVICE(KKA,KKU,KKL,PWM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
     !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLXZ
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL MXF_DEVICE(ZTMP2_DEVICE,ZTMP3_DEVICE)
     CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE,ZTMP4_DEVICE)
@@ -900,7 +900,7 @@ IF(HTURBDIM=='3DIM') THEN
     CALL GX_M_U_DEVICE(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
     CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL MXF_DEVICE(ZTMP3_DEVICE,ZTMP4_DEVICE)
     CALL LES_MEAN_SUBGRID( ZTMP4_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaW )
@@ -909,7 +909,7 @@ IF(HTURBDIM=='3DIM') THEN
       CALL GX_U_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
       CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP2_DEVICE)
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+      ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
       CALL MXF_DEVICE(ZTMP3_DEVICE,ZTMP4_DEVICE)
       CALL LES_MEAN_SUBGRID(ZTMP4_DEVICE,X_LES_RES_ddxa_Rt_SBG_UaW )
@@ -919,7 +919,7 @@ IF(HTURBDIM=='3DIM') THEN
       CALL GX_U_M_DEVICE(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE)
       CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP2_DEVICE)
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+      ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
       CALL MXF_DEVICE(ZTMP3_DEVICE,ZTMP4_DEVICE)
       CALL LES_MEAN_SUBGRID( ZTMP4_DEVICE,X_LES_RES_ddxa_Sv_SBG_UaW(:,:,:,JSV) )
@@ -957,9 +957,9 @@ CALL MZM_DEVICE(PRHODJ, ZTMP3_DEVICE )
 CALL MYM_DEVICE(ZTMP3_DEVICE,ZTMP4_DEVICE)
 !$acc kernels
 #ifndef MNH_BITREP
-ZA(:,:,:)    = - PTSTEP * XCMFS * ZTMP1_DEVICE * ZTMP4_DEVICE / ZTMP2_DEVICE**2
+ZA(:,:,:)    = - PTSTEP * XCMFS * ZTMP1_DEVICE(:,:,:) * ZTMP4_DEVICE(:,:,:) / ZTMP2_DEVICE(:,:,:)**2
 #else
-ZA(:,:,:)    = - PTSTEP * XCMFS * ZTMP1_DEVICE * ZTMP4_DEVICE / BR_P2(ZTMP2_DEVICE)
+ZA(:,:,:)    = - PTSTEP * XCMFS * ZTMP1_DEVICE(:,:,:) * ZTMP4_DEVICE(:,:,:) / BR_P2(ZTMP2_DEVICE(:,:,:))
 #endif
 #endif
 !
@@ -1063,13 +1063,13 @@ ZFLXZ(:,:,IKB:IKB)   =   MYM(PDZZ(:,:,IKB:IKB))  *                       &
   ) / 0.5 / ( 1. + MYM(PRHODJ(:,:,KKA:KKA)) / MYM(PRHODJ(:,:,IKB:IKB)) )
 #else
 !$acc kernels
-ZTMP1_DEVICE = PIMPL*ZRES + PEXPL*PVM
+ZTMP1_DEVICE(:,:,:) = PIMPL*ZRES(:,:,:) + PEXPL*PVM(:,:,:)
 !$acc end kernels
 CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
 CALL MYM_DEVICE(PDZZ,ZTMP3_DEVICE)
 CALL MYM_DEVICE(ZKEFF,ZTMP1_DEVICE)
 !$acc kernels
-ZFLXZ(:,:,:)   = -XCMFS * ZTMP1_DEVICE * ZTMP2_DEVICE / ZTMP3_DEVICE
+ZFLXZ(:,:,:)   = -XCMFS * ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) / ZTMP3_DEVICE(:,:,:)
 !$acc end kernels
 !
 CALL MYM_DEVICE(PDZZ(:,:,IKB:IKB),ZTMP1_DEVICE(:,:,1:1))
@@ -1115,12 +1115,12 @@ ZA(:,:,:) = - MZF(KKA,KKU,KKL, MYF ( ZFLXZ * GZ_V_VW(KKA,KKU,KKL,PVM,PDZZ) ) )
 #else
 CALL GZ_V_VW_DEVICE(KKA,KKU,KKL,PVM,PDZZ,ZTMP1_DEVICE)
 !$acc kernels
-ZTMP2_DEVICE = ZFLXZ * ZTMP1_DEVICE
+ZTMP2_DEVICE(:,:,:) = ZFLXZ(:,:,:) * ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
 CALL MYF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
 CALL MZF_DEVICE(KKA,KKU,KKL, ZTMP3_DEVICE, ZTMP1_DEVICE )
 !$acc kernels
-ZA(:,:,:) = - ZTMP1_DEVICE
+ZA(:,:,:) = - ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
 #endif
 !
@@ -1161,7 +1161,7 @@ IF (LLES_CALL) THEN
   !
   CALL GZ_V_VW_DEVICE(KKA,KKU,KKL,PVM,PDZZ,ZTMP1_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLXZ
+  ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:)
 !$acc end kernels
   CALL MYF_DEVICE(ZTMP2_DEVICE,ZTMP3_DEVICE)
   CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE,ZTMP4_DEVICE)
@@ -1198,33 +1198,33 @@ IF(HTURBDIM=='3DIM') THEN
   IF (.NOT. L2D) THEN 
     CALL MYM_DEVICE(PRHODJ,ZTMP1_DEVICE)
 !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE /PDYY
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) /PDYY(:,:,:)
 !$acc end kernels
     CALL MZM_DEVICE(ZTMP2_DEVICE,ZTMP1_DEVICE)
 !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLXZ
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLXZ(:,:,:)
 !$acc end kernels
     CALL DYF_DEVICE( ZTMP2_DEVICE,ZTMP1_DEVICE )
     IF (.NOT. LFLAT) THEN
       CALL MZF_DEVICE(KKA,KKU,KKL,PDZZ,ZTMP2_DEVICE )
       !$acc kernels
-      ZTMP3_DEVICE = ZFLXZ*PDZY
+      ZTMP3_DEVICE(:,:,:) = ZFLXZ(:,:,:)*PDZY(:,:,:)
       !$acc end kernels
       CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE,ZTMP4_DEVICE)
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP4_DEVICE / PDYY
+      ZTMP3_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:) / PDYY(:,:,:)
       !$acc end kernels
       CALL MYF_DEVICE(ZTMP3_DEVICE,ZTMP4_DEVICE)
       !$acc kernels
-      ZTMP3_DEVICE =  PRHODJ / ZTMP2_DEVICE * ZTMP4_DEVICE
+      ZTMP3_DEVICE(:,:,:) =  PRHODJ(:,:,:) / ZTMP2_DEVICE(:,:,:) * ZTMP4_DEVICE(:,:,:)
       !$acc end kernels
       CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE, ZTMP4_DEVICE)
       !$acc kernels
-      PRWS(:,:,:)= PRWS(:,:,:) - ZTMP1_DEVICE + ZTMP4_DEVICE
+      PRWS(:,:,:)= PRWS(:,:,:) - ZTMP1_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:)
       !$acc end kernels
     ELSE
       !$acc kernels
-      PRWS(:,:,:)= PRWS(:,:,:) - ZTMP1_DEVICE
+      PRWS(:,:,:)= PRWS(:,:,:) - ZTMP1_DEVICE(:,:,:)
       !$acc end kernels
     END IF
   END IF
@@ -1233,16 +1233,16 @@ IF(HTURBDIM=='3DIM') THEN
   ! Complete the Dynamical production with the W wind component 
   IF (.NOT. L2D) THEN
 #ifndef MNH_OPENACC
-    ZA(:,:,:) = - MZF(KKA,KKU,KKL, MYF ( ZFLXZ * GY_W_VW(KKA,KKU,KKL, PWM,PDYY,PDZZ,PDZY) )  )
+    ZA(:,:,:) = - MZF(KKA,KKU,KKL, MYF ( ZFLXZ(:,:,:) * GY_W_VW(KKA,KKU,KKL, PWM,PDYY,PDZZ,PDZY) )  )
 #else
     CALL GY_W_VW_DEVICE(KKA,KKU,KKL, PWM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
 !$acc kernels
-    ZTMP2_DEVICE = ZFLXZ * ZTMP1_DEVICE
+    ZTMP2_DEVICE(:,:,:) = ZFLXZ(:,:,:) * ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
     CALL MYF_DEVICE(ZTMP2_DEVICE,ZTMP1_DEVICE)
     CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE  )
 !$acc kernels
-    ZA(:,:,:) = - ZTMP2_DEVICE
+    ZA(:,:,:) = - ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 #endif
   !
@@ -1289,7 +1289,7 @@ IF(HTURBDIM=='3DIM') THEN
     CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
     CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MYF(GY_W_VW(KKA,KKU,KKL,PWM,PDYY,&
-    PDZZ,PDZY)*ZFLXZ)), X_LES_RES_ddxa_W_SBG_UaW , .TRUE. )
+    PDZZ,PDZY)*ZFLXZ(:,:,:))), X_LES_RES_ddxa_W_SBG_UaW , .TRUE. )
     CALL LES_MEAN_SUBGRID( MYF(GY_M_V(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY)&
     *MZF(KKA,KKU,KKL,ZFLXZ)), X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE. )
     IF (KRR>=1) THEN
@@ -1301,7 +1301,7 @@ IF(HTURBDIM=='3DIM') THEN
     !
     CALL GY_W_VW_DEVICE(KKA,KKU,KKL,PWM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
     !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLXZ
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL MYF_DEVICE(ZTMP2_DEVICE,ZTMP3_DEVICE)
     CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE,ZTMP4_DEVICE)
@@ -1310,7 +1310,7 @@ IF(HTURBDIM=='3DIM') THEN
     CALL GY_M_V_DEVICE(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
     CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
     !$acc end kernels
     CALL MYF_DEVICE(ZTMP3_DEVICE,ZTMP4_DEVICE)
     CALL LES_MEAN_SUBGRID( ZTMP4_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE. )
@@ -1319,7 +1319,7 @@ IF(HTURBDIM=='3DIM') THEN
       CALL GY_V_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE)
       CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP2_DEVICE)
       !$acc kernels
-      ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE
+      ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
       CALL MYF_DEVICE(ZTMP3_DEVICE,ZTMP4_DEVICE)
       CALL LES_MEAN_SUBGRID( ZTMP4_DEVICE,X_LES_RES_ddxa_Rt_SBG_UaW , .TRUE. )
@@ -1347,7 +1347,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT .AND. HTURBDIM == '1DIM') THEN
   CALL GZ_W_M_DEVICE(KKA,KKU,KKL,PWM,PDZZ,ZTMP1_DEVICE)
 !$acc kernels
   ZFLXZ(:,:,:)= (2./3.) * PTKEM(:,:,:)                     &
-     -XCMFS*PLM(:,:,:)*SQRT(PTKEM(:,:,:))*ZTMP1_DEVICE
+     -XCMFS*PLM(:,:,:)*SQRT(PTKEM(:,:,:))*ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
 #endif
   ! stores the W variance
@@ -1362,7 +1362,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT .AND. HTURBDIM == '1DIM') THEN
   TZFIELD%NDIMS      = 3
   TZFIELD%LTIMEDEP   = .TRUE.
 !$acc update self(ZFLXZ)
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ(:,:,:))
 END IF
 
 if ( mppdb_initialized ) then
diff --git a/src/MNH/turb_ver_thermo_corr.f90 b/src/MNH/turb_ver_thermo_corr.f90
index 8c5ac0d9cfa67c8c5effcbbd5d24c92054758e35..cf0d494c96c6308239eef36d7f8099e852571abc 100644
--- a/src/MNH/turb_ver_thermo_corr.f90
+++ b/src/MNH/turb_ver_thermo_corr.f90
@@ -507,9 +507,9 @@ ZCOEFF(:,:,IKB)= - (PDZZ(:,:,IKB+2*KKL)+2.*PDZZ(:,:,IKB+KKL)) /      &
 #ifndef MNH_OPENACC
 ZKEFF(:,:,:) = MZM(KKA,KKU,KKL, PLM(:,:,:) * SQRT(PTKEM(:,:,:)) )
 #else
-ZTMP1_DEVICE = PLM(:,:,:) * SQRT(PTKEM(:,:,:))
+ZTMP1_DEVICE(:,:,:) = PLM(:,:,:) * SQRT(PTKEM(:,:,:))
 !$acc end kernels
-CALL MZM_DEVICE(ZTMP1_DEVICE, ZKEFF)
+CALL MZM_DEVICE(ZTMP1_DEVICE(:,:,:), ZKEFF(:,:,:))
 #endif
 !
 ! Flags for 3rd order quantities
@@ -521,11 +521,11 @@ GFWTH = .FALSE.
 GFWR  = .FALSE.
 !
 IF (HTOM/='NONE') THEN
-  GFTH2 = ANY(PFTH2/=0.)
-  GFR2  = ANY(PFR2 /=0.) .AND. GUSERV
-  GFTHR = ANY(PFTHR/=0.) .AND. GUSERV
-  GFWTH = ANY(PFWTH/=0.)
-  GFWR  = ANY(PFWR /=0.) .AND. GUSERV
+  GFTH2 = ANY(PFTH2(:,:,:)/=0.)
+  GFR2  = ANY(PFR2(:,:,:) /=0.) .AND. GUSERV
+  GFTHR = ANY(PFTHR(:,:,:)/=0.) .AND. GUSERV
+  GFWTH = ANY(PFWTH(:,:,:)/=0.)
+  GFWR  = ANY(PFWR(:,:,:) /=0.) .AND. GUSERV
 END IF
 !----------------------------------------------------------------------------
 !
@@ -539,22 +539,22 @@ END IF
 ! Compute the turbulent variance F and F' at time t-dt.
 #ifndef MNH_OPENACC
 #ifndef MNH_BITREP
-  ZF      (:,:,:) = XCTV*PLM*PLEPS*MZF(KKA,KKU,KKL,PPHI3*PDTH_DZ**2)
+  ZF      (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,PPHI3(:,:,:)*PDTH_DZ(:,:,:)**2)
 #else
-  ZF      (:,:,:) = XCTV*PLM*PLEPS*MZF(KKA,KKU,KKL,PPHI3*BR_P2(PDTH_DZ))
+  ZF      (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,PPHI3(:,:,:)*BR_P2(PDTH_DZ(:,:,:)))
 #endif
   ZDFDDTDZ(:,:,:) = 0.     ! this term, because of discretization, is treated separately
 #else
   !$acc kernels
 #ifndef MNH_BITREP
-  ZTMP1_DEVICE = PPHI3*PDTH_DZ**2
+  ZTMP1_DEVICE(:,:,:) = PPHI3(:,:,:)*PDTH_DZ(:,:,:)**2
 #else
-  ZTMP1_DEVICE = PPHI3*BR_P2(PDTH_DZ)
+  ZTMP1_DEVICE(:,:,:) = PPHI3(:,:,:)*BR_P2(PDTH_DZ(:,:,:))
 #endif
   !$acc end kernels
-  CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
+  CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE(:,:,:),ZTMP2_DEVICE(:,:,:))
   !$acc kernels
-  ZF      (:,:,:) = XCTV*PLM*PLEPS*ZTMP2_DEVICE
+  ZF      (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*ZTMP2_DEVICE(:,:,:)
   ZDFDDTDZ(:,:,:) = 0.     ! this term, because of discretization, is treated separately
   !$acc end kernels
 #endif
@@ -564,21 +564,21 @@ END IF
   ! d(w'th'2)/dz
 #ifndef MNH_OPENACC
   IF (GFTH2) THEN
-    ZF       = ZF       + M3_TH2_WTH2(KKA,KKU,KKL,PREDTH1,PREDR1,PD,PLEPS,&
-     & PSQRT_TKE) * PFTH2
-    ZDFDDTDZ = ZDFDDTDZ + D_M3_TH2_WTH2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-     & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) * PFTH2
+    ZF(:,:,:)       = ZF(:,:,:)       + M3_TH2_WTH2(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),PLEPS(:,:,:),&
+     & PSQRT_TKE(:,:,:)) * PFTH2(:,:,:)
+    ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_TH2_WTH2_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+     & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:)) * PFTH2(:,:,:)
   END IF
 #else
   IF (GFTH2) THEN
-    CALL M3_TH2_WTH2(KKA,KKU,KKL,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,ZTMP1_DEVICE)
+    CALL M3_TH2_WTH2(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),ZTMP1_DEVICE(:,:,:))
     !$acc kernels
-    ZF       = ZF       + ZTMP1_DEVICE * PFTH2
+    ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFTH2(:,:,:)
     !$acc end kernels
-    CALL D_M3_TH2_WTH2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-     & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,ZTMP2_DEVICE)
+    CALL D_M3_TH2_WTH2_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+     & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),ZTMP2_DEVICE(:,:,:))
     !$acc kernels
-    ZDFDDTDZ = ZDFDDTDZ + ZTMP2_DEVICE * PFTH2
+    ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * PFTH2(:,:,:)
     !$acc end kernels
   END IF
 #endif
@@ -586,23 +586,23 @@ END IF
   ! d(w'2th')/dz
 #ifndef MNH_OPENACC
   IF (GFWTH) THEN
-    ZF       = ZF       + M3_TH2_W2TH(KKA,KKU,KKL,PREDTH1,PREDR1,PD,PDTH_DZ,&
-     & PLM,PLEPS,PTKEM) * MZF(KKA,KKU,KKL,PFWTH)
-    ZDFDDTDZ = ZDFDDTDZ + D_M3_TH2_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
-     & PLM,PLEPS,PTKEM,GUSERV) * MZF(KKA,KKU,KKL,PFWTH)
+    ZF(:,:,:)       = ZF(:,:,:)       + M3_TH2_W2TH(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),PDTH_DZ(:,:,:),&
+     & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:))
+    ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_TH2_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),&
+     & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),GUSERV) * MZF(KKA,KKU,KKL,PFWTH(:,:,:))
   END IF
 #else
   IF (GFWTH) THEN
-    CALL MZF_DEVICE(KKA,KKU,KKL,PFWTH,ZTMP1_DEVICE)
-    CALL M3_TH2_W2TH(KKA,KKU,KKL,PREDTH1,PREDR1,PD,PDTH_DZ,&
-     & PLM,PLEPS,PTKEM,ZTMP2_DEVICE)
+    CALL MZF_DEVICE(KKA,KKU,KKL,PFWTH(:,:,:),ZTMP1_DEVICE(:,:,:))
+    CALL M3_TH2_W2TH(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),PDTH_DZ(:,:,:),&
+     & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),ZTMP2_DEVICE(:,:,:))
     !$acc kernels
-    ZF       = ZF       + ZTMP2_DEVICE * ZTMP1_DEVICE
+    ZF(:,:,:)       = ZF(:,:,:)       + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
     !$acc end kernels
-    CALL D_M3_TH2_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
-     & PLM,PLEPS,PTKEM,GUSERV,ZTMP2_DEVICE)
+    CALL D_M3_TH2_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),&
+     & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),GUSERV,ZTMP2_DEVICE(:,:,:))
     !$acc kernels
-    ZDFDDTDZ = ZDFDDTDZ + ZTMP2_DEVICE * ZTMP1_DEVICE
+    ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
     !$acc end kernels
   END IF
 #endif
@@ -611,22 +611,22 @@ END IF
     ! d(w'r'2)/dz
 #ifndef MNH_OPENACC
     IF (GFR2) THEN
-      ZF       = ZF       + M3_TH2_WR2(KKA,KKU,KKL,PD,PLEPS,PSQRT_TKE,PBLL_O_E,&
-       & PEMOIST,PDTH_DZ) * PFR2
-      ZDFDDTDZ = ZDFDDTDZ + D_M3_TH2_WR2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
-       & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ) * PFR2
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_TH2_WR2(KKA,KKU,KKL,PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),&
+       & PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * PFR2(:,:,:)
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_TH2_WR2_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),&
+       & PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * PFR2(:,:,:)
     END IF
 #else
     IF (GFR2) THEN
-      CALL M3_TH2_WR2(KKA,KKU,KKL,PD,PLEPS,PSQRT_TKE,PBLL_O_E,&
-       & PEMOIST,PDTH_DZ,ZTMP1_DEVICE)
+      CALL M3_TH2_WR2(KKA,KKU,KKL,PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),&
+       & PEMOIST(:,:,:),PDTH_DZ(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP1_DEVICE * PFR2
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFR2(:,:,:)
       !$acc end kernels
-      CALL D_M3_TH2_WR2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
-       & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ,ZTMP2_DEVICE)
+      CALL D_M3_TH2_WR2_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),&
+       & PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:),ZTMP2_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDTDZ = ZDFDDTDZ + ZTMP2_DEVICE * PFR2
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * PFR2(:,:,:)
       !$acc end kernels
     END IF
 #endif
@@ -634,23 +634,23 @@ END IF
     ! d(w'2r')/dz
 #ifndef MNH_OPENACC
     IF (GFWR) THEN
-      ZF       = ZF       + M3_TH2_W2R(KKA,KKU,KKL,PD,PLM,PLEPS,PTKEM,PBLL_O_E,&
-       & PEMOIST,PDTH_DZ) * MZF(KKA,KKU,KKL,PFWR)
-      ZDFDDTDZ = ZDFDDTDZ + D_M3_TH2_W2R_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
-       & PLM,PLEPS,PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ) * MZF(KKA,KKU,KKL,PFWR)
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_TH2_W2R(KKA,KKU,KKL,PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),&
+       & PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:))
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_TH2_W2R_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),&
+       & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:))
     END IF
 #else
     IF (GFWR) THEN
-      CALL MZF_DEVICE(KKA,KKU,KKL,PFWR,ZTMP1_DEVICE)
-      CALL M3_TH2_W2R(KKA,KKU,KKL,PD,PLM,PLEPS,PTKEM,PBLL_O_E,&
-       & PEMOIST,PDTH_DZ,ZTMP2_DEVICE)
-      CALL D_M3_TH2_W2R_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
-       & PLM,PLEPS,PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ,ZTMP3_DEVICE)
+      CALL MZF_DEVICE(KKA,KKU,KKL,PFWR(:,:,:),ZTMP1_DEVICE(:,:,:))
+      CALL M3_TH2_W2R(KKA,KKU,KKL,PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),&
+       & PEMOIST(:,:,:),PDTH_DZ(:,:,:),ZTMP2_DEVICE(:,:,:))
+      CALL D_M3_TH2_W2R_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),&
+       & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:),ZTMP3_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP2_DEVICE * ZTMP1_DEVICE
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
       !$acc end kernels
       !$acc kernels
-      ZDFDDTDZ = ZDFDDTDZ + ZTMP3_DEVICE * ZTMP1_DEVICE
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP3_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
       !$acc end kernels
     END IF
 #endif
@@ -658,22 +658,22 @@ END IF
     ! d(w'th'r')/dz
 #ifndef MNH_OPENACC
     IF (GFTHR) THEN
-      ZF       = ZF       + M3_TH2_WTHR(KKA,KKU,KKL,PREDR1,PD,PLEPS,PSQRT_TKE,&
-       & PBLL_O_E,PEMOIST,PDTH_DZ) * PFTHR
-      ZDFDDTDZ = ZDFDDTDZ + D_M3_TH2_WTHR_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ) * PFTHR
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_TH2_WTHR(KKA,KKU,KKL,PREDR1(:,:,:),PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),&
+       & PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * PFTHR(:,:,:)
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_TH2_WTHR_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * PFTHR(:,:,:)
     END IF
 #else
     IF (GFTHR) THEN
-      CALL M3_TH2_WTHR(KKA,KKU,KKL,PREDR1,PD,PLEPS,PSQRT_TKE,&
-       & PBLL_O_E,PEMOIST,PDTH_DZ,ZTMP1_DEVICE)
+      CALL M3_TH2_WTHR(KKA,KKU,KKL,PREDR1(:,:,:),PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),&
+       & PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP1_DEVICE * PFTHR
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFTHR(:,:,:)
       !$acc end kernels
-      CALL D_M3_TH2_WTHR_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ,ZTMP2_DEVICE)
+      CALL D_M3_TH2_WTHR_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:),ZTMP2_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDTDZ = ZDFDDTDZ + ZTMP2_DEVICE * PFTHR
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * PFTHR(:,:,:)
       !$acc end kernels
     END IF
 #endif
@@ -681,20 +681,21 @@ END IF
   END IF
   !
 #ifndef MNH_OPENACC
-  ZFLXZ(:,:,:)   = ZF                                                              &
-  !     + PIMPL * XCTV*PLM*PLEPS                                                   &
-  !        *MZF(KKA,KKU,KKL,D_PHI3DTDZ2_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,PDTH_DZ,HTURBDIM,GUSERV)   &
-  !             *DZM(KKA,KKU,KKL,PTHLP - PTHLM) / PDZZ                                        ) &
-        + PIMPL * ZDFDDTDZ * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PTHLP - PTHLM) / PDZZ )
+  ZFLXZ(:,:,:)   = ZF(:,:,:)                                                              &
+  !     + PIMPL * XCTV*PLM(:,:,:)*PLEPS(:,:,:)                                                   &
+  !        *MZF(KKA,KKU,KKL,D_PHI3DTDZ2_O_DDTDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:),PRED2TH3(:,:,:),&
+  !                                             PRED2THR3(:,:,:),PDTH_DZ(:,:,:),HTURBDIM,GUSERV)   &
+  !             *DZM(KKA,KKU,KKL,PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:)                                        ) &
+        + PIMPL * ZDFDDTDZ(:,:,:) * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) )
 #else
-  ZTMP1_DEVICE = PTHLP - PTHLM
-  CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
-  ZTMP3_DEVICE = ZTMP2_DEVICE / PDZZ
-  CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE,ZTMP4_DEVICE )
+  ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:)
+  CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE(:,:,:),ZTMP2_DEVICE(:,:,:))
+  ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:) / PDZZ(:,:,:)
+  CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE(:,:,:),ZTMP4_DEVICE(:,:,:) )
   
 !$acc kernels
-  ZFLXZ(:,:,:)   = ZF                                                              &
-        + PIMPL * ZDFDDTDZ * ZTMP4_DEVICE
+  ZFLXZ(:,:,:)   = ZF(:,:,:)                                                              &
+        + PIMPL * ZDFDDTDZ(:,:,:) * ZTMP4_DEVICE(:,:,:)
 #endif
   !
   ! special case near the ground ( uncentred gradient )
@@ -726,7 +727,7 @@ END IF
   !
   ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) 
   !
-  ZFLXZ = MAX(0., ZFLXZ)
+  ZFLXZ(:,:,:) = MAX(0., ZFLXZ(:,:,:))
   !
   IF (KRRL > 0)  THEN
 #ifndef MNH_BITREP
@@ -751,7 +752,7 @@ END IF
     TZFIELD%NDIMS      = 3
     TZFIELD%LTIMEDEP   = .TRUE.
 !$acc update self(ZFLXZ)
-    CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+    CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ(:,:,:))
   END IF
 !
 ! and we store in LES configuration
@@ -759,36 +760,36 @@ END IF
   IF (LLES_CALL) THEN
     CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
-    CALL LES_MEAN_SUBGRID( ZFLXZ, X_LES_SUBGRID_Thl2 ) 
-    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM)*ZFLXZ, X_LES_RES_W_SBG_Thl2 )
-    CALL LES_MEAN_SUBGRID( -2.*XCTD*PSQRT_TKE*ZFLXZ/PLEPS, X_LES_SUBGRID_DISS_Thl2 ) 
-    CALL LES_MEAN_SUBGRID( PETHETA*ZFLXZ, X_LES_SUBGRID_ThlThv ) 
-    CALL LES_MEAN_SUBGRID( -XA3*PBETA*PETHETA*ZFLXZ, X_LES_SUBGRID_ThlPz, .TRUE. ) 
+    CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_Thl2 )
+    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:))*ZFLXZ(:,:,:), X_LES_RES_W_SBG_Thl2 )
+    CALL LES_MEAN_SUBGRID( -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:), X_LES_SUBGRID_DISS_Thl2 )
+    CALL LES_MEAN_SUBGRID( PETHETA(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_ThlThv )
+    CALL LES_MEAN_SUBGRID( -XA3*PBETA(:,:,:)*PETHETA(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_ThlPz, .TRUE. )
 #else
 !$acc data copy(X_LES_SUBGRID_Thl2,X_LES_RES_W_SBG_Thl2,X_LES_SUBGRID_DISS_Thl2, &
 !$acc &         X_LES_SUBGRID_ThlThv,X_LES_SUBGRID_ThlPz)
-    CALL LES_MEAN_SUBGRID( ZFLXZ, X_LES_SUBGRID_Thl2 ) 
+    CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_Thl2 )
     !
-    CALL  MZF_DEVICE(KKA,KKU,KKL,PWM,ZTMP1_DEVICE)
+    CALL  MZF_DEVICE(KKA,KKU,KKL,PWM(:,:,:),ZTMP1_DEVICE(:,:,:))
     !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLXZ
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
-    CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_RES_W_SBG_Thl2 )
+    CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE(:,:,:), X_LES_RES_W_SBG_Thl2 )
     !
     !$acc kernels
-    ZTMP1_DEVICE = -2.*XCTD*PSQRT_TKE*ZFLXZ/PLEPS
+    ZTMP1_DEVICE(:,:,:) = -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:)
     !$acc end kernels
-    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_DISS_Thl2 ) 
+    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_DISS_Thl2 )
     !
     !$acc kernels
-    ZTMP1_DEVICE = PETHETA*ZFLXZ
+    ZTMP1_DEVICE(:,:,:) = PETHETA(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
-    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_ThlThv ) 
+    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_ThlThv )
     !
     !$acc kernels
-    ZTMP1_DEVICE = -XA3*PBETA*PETHETA*ZFLXZ
+    ZTMP1_DEVICE(:,:,:) = -XA3*PBETA(:,:,:)*PETHETA(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
-    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_ThlPz, .TRUE. ) 
+    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_ThlPz, .TRUE. )
     !
 !$acc end data
 #endif
@@ -803,14 +804,14 @@ END IF
 !
     ! Compute the turbulent variance F and F' at time t-dt.
 #ifndef MNH_OPENACC
-    ZF      (:,:,:) = XCTV*PLM*PLEPS*MZF(KKA,KKU,KKL,0.5*(PPHI3+PPSI3)*PDTH_DZ*PDR_DZ)
+    ZF      (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,0.5*(PPHI3(:,:,:)+PPSI3(:,:,:))*PDTH_DZ(:,:,:)*PDR_DZ(:,:,:))
 #else
 !$acc kernels
-    ZTMP1_DEVICE = 0.5*(PPHI3+PPSI3)*PDTH_DZ*PDR_DZ
+    ZTMP1_DEVICE(:,:,:) = 0.5*(PPHI3(:,:,:)+PPSI3(:,:,:))*PDTH_DZ(:,:,:)*PDR_DZ(:,:,:)
 !$acc end kernels
-    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
+    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE(:,:,:),ZTMP2_DEVICE(:,:,:))
 !$acc kernels
-    ZF      (:,:,:) = XCTV*PLM*PLEPS*ZTMP2_DEVICE
+    ZF      (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*ZTMP2_DEVICE(:,:,:)
 #endif
     ZDFDDTDZ(:,:,:) = 0.     ! this term, because of discretization, is treated separately
     ZDFDDRDZ(:,:,:) = 0.     ! this term, because of discretization, is treated separately
@@ -821,29 +822,29 @@ END IF
     ! d(w'th'2)/dz
 #ifndef MNH_OPENACC
     IF (GFTH2) THEN
-      ZF       = ZF       + M3_THR_WTH2(KKA,KKU,KKL,PREDR1,PD,PLEPS,PSQRT_TKE,&
-       & PBLL_O_E,PETHETA,PDR_DZ) * PFTH2
-      ZDFDDTDZ = ZDFDDTDZ + D_M3_THR_WTH2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ) * PFTH2
-      ZDFDDRDZ = ZDFDDRDZ + D_M3_THR_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) * PFTH2
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_THR_WTH2(KKA,KKU,KKL,PREDR1(:,:,:),PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),&
+       & PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) * PFTH2(:,:,:)
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_THR_WTH2_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) * PFTH2(:,:,:)
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_THR_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:)) * PFTH2(:,:,:)
     END IF
 #else
     IF (GFTH2) THEN
-      CALL M3_THR_WTH2(KKA,KKU,KKL,PREDR1,PD,PLEPS,PSQRT_TKE,&
-       & PBLL_O_E,PETHETA,PDR_DZ,ZTMP1_DEVICE)
+      CALL M3_THR_WTH2(KKA,KKU,KKL,PREDR1(:,:,:),PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),&
+       & PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP1_DEVICE * PFTH2
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFTH2(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_WTH2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ,ZTMP1_DEVICE)
+      CALL D_M3_THR_WTH2_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDTDZ = ZDFDDTDZ + ZTMP1_DEVICE * PFTH2
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFTH2(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,ZTMP1_DEVICE)
+      CALL D_M3_THR_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDRDZ = ZDFDDRDZ + ZTMP1_DEVICE * PFTH2
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFTH2(:,:,:)
       !$acc end kernels
     END IF
 #endif
@@ -851,30 +852,30 @@ END IF
     ! d(w'2th')/dz
 #ifndef MNH_OPENACC
     IF (GFWTH) THEN
-      ZF       = ZF       + M3_THR_W2TH(KKA,KKU,KKL,PREDR1,PD,PLM,PLEPS,PTKEM,&
-       & PDR_DZ) * MZF(KKA,KKU,KKL,PFWTH)
-      ZDFDDTDZ = ZDFDDTDZ + D_M3_THR_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLM,PLEPS,PTKEM,PBLL_O_E,PDR_DZ,PETHETA) * MZF(KKA,KKU,KKL,PFWTH)
-      ZDFDDRDZ = ZDFDDRDZ + D_M3_THR_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLM,PLEPS,PTKEM) * MZF(KKA,KKU,KKL,PFWTH)
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_THR_W2TH(KKA,KKU,KKL,PREDR1(:,:,:),PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),&
+       PDR_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:))
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_THR_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PDR_DZ(:,:,:),PETHETA(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:))
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_THR_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:))
     END IF
 #else
     IF (GFWTH) THEN
-      CALL M3_THR_W2TH(KKA,KKU,KKL,PREDR1,PD,PLM,PLEPS,PTKEM,&
-       & PDR_DZ,ZTMP1_DEVICE)
-      CALL MZF_DEVICE(KKA,KKU,KKL,PFWTH,ZTMP2_DEVICE)
+      CALL M3_THR_W2TH(KKA,KKU,KKL,PREDR1(:,:,:),PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),&
+       & PDR_DZ(:,:,:),ZTMP1_DEVICE(:,:,:))
+      CALL MZF_DEVICE(KKA,KKU,KKL,PFWTH(:,:,:),ZTMP2_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP1_DEVICE * ZTMP2_DEVICE
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLM,PLEPS,PTKEM,PBLL_O_E,PDR_DZ,PETHETA,ZTMP1_DEVICE)
+      CALL D_M3_THR_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       & PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PDR_DZ(:,:,:),PETHETA(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDTDZ = ZDFDDTDZ + ZTMP1_DEVICE * ZTMP2_DEVICE
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-       & PD,PLM,PLEPS,PTKEM,ZTMP1_DEVICE)
+      CALL D_M3_THR_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+       & PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDRDZ = ZDFDDRDZ + ZTMP1_DEVICE * ZTMP2_DEVICE
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
       !$acc end kernels
     END IF
 #endif
@@ -882,29 +883,29 @@ END IF
     ! d(w'r'2)/dz
 #ifndef MNH_OPENACC
     IF (GFR2) THEN
-      ZF       = ZF       + M3_THR_WR2(KKA,KKU,KKL,PREDTH1,PD,PLEPS,PSQRT_TKE,&
-       & PBLL_O_E,PEMOIST,PDTH_DZ) * PFR2
-      ZDFDDTDZ = ZDFDDTDZ + D_M3_THR_WR2_O_DDTDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
-       & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) * PFR2
-      ZDFDDRDZ = ZDFDDRDZ + D_M3_THR_WR2_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
-       & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ) * PFR2
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_THR_WR2(KKA,KKU,KKL,PREDTH1(:,:,:),PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),&
+       & PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * PFR2(:,:,:)
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_THR_WR2_O_DDTDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),&
+       & PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:)) * PFR2(:,:,:)
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_THR_WR2_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),&
+       & PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:)) * PFR2(:,:,:)
     END IF
 #else
     IF (GFR2) THEN
-      CALL M3_THR_WR2(KKA,KKU,KKL,PREDTH1,PD,PLEPS,PSQRT_TKE,&
-       & PBLL_O_E,PEMOIST,PDTH_DZ,ZTMP1_DEVICE)
+      CALL M3_THR_WR2(KKA,KKU,KKL,PREDTH1(:,:,:),PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),&
+       & PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP1_DEVICE * PFR2
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFR2(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_WR2_O_DDTDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
-       & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,ZTMP1_DEVICE)
+      CALL D_M3_THR_WR2_O_DDTDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),&
+       & PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDTDZ = ZDFDDTDZ + ZTMP1_DEVICE * PFR2
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFR2(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_WR2_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
-       & PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTH_DZ,ZTMP1_DEVICE)
+      CALL D_M3_THR_WR2_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),&
+       & PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),PDTH_DZ(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDRDZ = ZDFDDRDZ + ZTMP1_DEVICE * PFR2
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFR2(:,:,:)
       !$acc end kernels
     END IF
 #endif
@@ -912,30 +913,30 @@ END IF
       ! d(w'2r')/dz
 #ifndef MNH_OPENACC
     IF (GFWR) THEN
-      ZF       = ZF       + M3_THR_W2R(KKA,KKU,KKL,PREDTH1,PD,PLM,PLEPS,PTKEM,&
-      & PDTH_DZ) * MZF(KKA,KKU,KKL,PFWR)
-      ZDFDDTDZ = ZDFDDTDZ + D_M3_THR_W2R_O_DDTDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
-      & PLM,PLEPS,PTKEM) * MZF(KKA,KKU,KKL,PFWR)
-      ZDFDDRDZ = ZDFDDRDZ + D_M3_THR_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
-      & PLM,PLEPS,PTKEM,PBLL_O_E,PDTH_DZ,PEMOIST) * MZF(KKA,KKU,KKL,PFWR)
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_THR_W2R(KKA,KKU,KKL,PREDTH1(:,:,:),PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),&
+      & PDTH_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:))
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_THR_W2R_O_DDTDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),&
+      & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:))
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_THR_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),&
+      & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PDTH_DZ(:,:,:),PEMOIST(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:))
     END IF
 #else
     IF (GFWR) THEN
-      CALL MZF_DEVICE(KKA,KKU,KKL,PFWR,ZTMP1_DEVICE)
-      CALL M3_THR_W2R(KKA,KKU,KKL,PREDTH1,PD,PLM,PLEPS,PTKEM,&
-      & PDTH_DZ,ZTMP2_DEVICE)
+      CALL MZF_DEVICE(KKA,KKU,KKL,PFWR(:,:,:),ZTMP1_DEVICE(:,:,:))
+      CALL M3_THR_W2R(KKA,KKU,KKL,PREDTH1(:,:,:),PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),&
+      & PDTH_DZ(:,:,:),ZTMP2_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP2_DEVICE * ZTMP1_DEVICE
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_W2R_O_DDTDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
-      & PLM,PLEPS,PTKEM,ZTMP2_DEVICE)
+      CALL D_M3_THR_W2R_O_DDTDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),&
+      & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),ZTMP2_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDTDZ = ZDFDDTDZ + ZTMP2_DEVICE * ZTMP1_DEVICE
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
-      & PLM,PLEPS,PTKEM,PBLL_O_E,PDTH_DZ,PEMOIST,ZTMP2_DEVICE)
+      CALL D_M3_THR_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),&
+      & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PDTH_DZ(:,:,:),PEMOIST(:,:,:),ZTMP2_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDRDZ = ZDFDDRDZ + ZTMP2_DEVICE * ZTMP1_DEVICE
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
       !$acc end kernels
     END IF
 #endif
@@ -943,91 +944,99 @@ END IF
     ! d(w'th'r')/dz
 #ifndef MNH_OPENACC
     IF (GFTHR) THEN
-      ZF       = ZF       + M3_THR_WTHR(KKA,KKU,KKL,PREDTH1,PREDR1,PD,PLEPS,&
-      & PSQRT_TKE) * PFTHR
-      ZDFDDTDZ = ZDFDDTDZ + D_M3_THR_WTHR_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-      & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA) * PFTHR
-      ZDFDDRDZ = ZDFDDRDZ + D_M3_THR_WTHR_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-      & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) * PFTHR
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_THR_WTHR(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),PLEPS(:,:,:),&
+      & PSQRT_TKE(:,:,:)) * PFTHR(:,:,:)
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_THR_WTHR_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+      & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:)) * PFTHR(:,:,:)
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_THR_WTHR_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+      & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:)) * PFTHR(:,:,:)
     END IF
 #else
     IF (GFTHR) THEN
-      CALL M3_THR_WTHR(KKA,KKU,KKL,PREDTH1,PREDR1,PD,PLEPS,&
-      & PSQRT_TKE,ZTMP1_DEVICE)
+      CALL M3_THR_WTHR(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),PD(:,:,:),PLEPS(:,:,:),&
+      & PSQRT_TKE(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP1_DEVICE * PFTHR
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFTHR(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_WTHR_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-      & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,ZTMP1_DEVICE)
+      CALL D_M3_THR_WTHR_O_DDTDZ(KKA,KKU,KKL,PREDTH1(:,:,:),PREDR1(:,:,:),&
+      & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDTDZ = ZDFDDTDZ + ZTMP1_DEVICE * PFTHR
+      ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFTHR(:,:,:)
       !$acc end kernels
-      CALL D_M3_THR_WTHR_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-      & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,ZTMP1_DEVICE)
+      CALL D_M3_THR_WTHR_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+      & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDRDZ = ZDFDDRDZ + ZTMP1_DEVICE * PFTHR
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFTHR(:,:,:)
       !$acc end kernels
     END IF
 #endif
     !
 #ifndef MNH_OPENACC
-    ZFLXZ(:,:,:)   = ZF                                                     &
-        + PIMPL * XCTV*PLM*PLEPS*0.5                                        &
-          * MZF(KKA,KKU,KKL, ( D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV) & ! d(phi3*dthdz)/ddthdz term
-                  +D_PSI3DTDZ_O_DDTDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV) & ! d(psi3*dthdz)/ddthdz term
-                 ) *PDR_DZ  *DZM(KKA,KKU,KKL,PTHLP - PTHLM       ) / PDZZ               &
-                +( D_PHI3DRDZ_O_DDRDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV) & ! d(phi3*drdz )/ddrdz term
-                  +D_PSI3DRDZ_O_DDRDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV) & ! d(psi3*drdz )/ddrdz term
-                 ) *PDTH_DZ *DZM(KKA,KKU,KKL,PRP   - PRM(:,:,:,1)) / PDZZ               &
+    ZFLXZ(:,:,:)   = ZF(:,:,:)                                                     &
+        + PIMPL * XCTV*PLM(:,:,:)*PLEPS(:,:,:)*0.5                                        &
+          * MZF(KKA,KKU,KKL, ( D_PHI3DTDZ_O_DDTDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:), &
+                                                  PRED2TH3(:,:,:),PRED2THR3(:,:,:),HTURBDIM,GUSERV) & ! d(phi3*dthdz)/ddthdz term
+                  +D_PSI3DTDZ_O_DDTDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:), &
+                                      PRED2THR3(:,:,:),HTURBDIM,GUSERV) & ! d(psi3*dthdz)/ddthdz term
+                 ) *PDR_DZ(:,:,:)  *DZM(KKA,KKU,KKL,PTHLP(:,:,:) - PTHLM(:,:,:)       ) / PDZZ(:,:,:)               &
+                +( D_PHI3DRDZ_O_DDRDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:),PRED2TH3(:,:,:), &
+                                      PRED2THR3(:,:,:),HTURBDIM,GUSERV) & ! d(phi3*drdz )/ddrdz term
+                  +D_PSI3DRDZ_O_DDRDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:), &
+                                      PRED2THR3(:,:,:),HTURBDIM,GUSERV) & ! d(psi3*drdz )/ddrdz term
+                 ) *PDTH_DZ(:,:,:) *DZM(KKA,KKU,KKL,PRP(:,:,:)   - PRM(:,:,:,1)) / PDZZ(:,:,:)               &
                )                                                            &
-        + PIMPL * ZDFDDTDZ * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PTHLP - PTHLM(:,:,:)) / PDZZ )         &
-        + PIMPL * ZDFDDRDZ * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PRP   - PRM(:,:,:,1)) / PDZZ )
+        + PIMPL * ZDFDDTDZ(:,:,:) * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) )         &
+        + PIMPL * ZDFDDRDZ(:,:,:) * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PRP(:,:,:)   - PRM(:,:,:,1)) / PDZZ(:,:,:) )
 #else
     !$acc kernels
-    ZTMP1_DEVICE = PTHLP - PTHLM
-    ZTMP2_DEVICE = PRP   - PRM(:,:,:,1)
+    ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:)
+    ZTMP2_DEVICE(:,:,:) = PRP(:,:,:)   - PRM(:,:,:,1)
     !$acc end kernels
-    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP3_DEVICE)
-    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP4_DEVICE)
+    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE(:,:,:),ZTMP3_DEVICE(:,:,:))
+    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE(:,:,:),ZTMP4_DEVICE(:,:,:))
     !$acc kernels
-    ZTMP1_DEVICE = ZTMP3_DEVICE / PDZZ
-    ZTMP2_DEVICE = ZTMP4_DEVICE / PDZZ
+    ZTMP1_DEVICE(:,:,:) = ZTMP3_DEVICE(:,:,:) / PDZZ(:,:,:)
+    ZTMP2_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:) / PDZZ(:,:,:)
     !$acc end kernels
-    CALL D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV,ZTMP3_DEVICE) ! d(phi3*dthdz)/ddthdz term
-    CALL D_PSI3DTDZ_O_DDTDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV,ZTMP4_DEVICE)  ! d(psi3*dthdz)/ddthdz term
-    CALL D_PHI3DRDZ_O_DDRDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV,ZTMP5_DEVICE) ! d(phi3*drdz )/ddrdz term
-    CALL D_PSI3DRDZ_O_DDRDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV,ZTMP6_DEVICE)  ! d(psi3*drdz )/ddrdz term
+    CALL D_PHI3DTDZ_O_DDTDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:),PRED2TH3(:,:,:),PRED2THR3(:,:,:), &
+                            HTURBDIM,GUSERV,ZTMP3_DEVICE(:,:,:)) ! d(phi3*dthdz)/ddthdz term
+    CALL D_PSI3DTDZ_O_DDTDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:),PRED2THR3(:,:,:), &
+                            HTURBDIM,GUSERV,ZTMP4_DEVICE(:,:,:))  ! d(psi3*dthdz)/ddthdz term
+    CALL D_PHI3DRDZ_O_DDRDZ(PPHI3(:,:,:),PREDTH1(:,:,:),PREDR1(:,:,:),PRED2TH3(:,:,:),PRED2THR3(:,:,:), &
+                            HTURBDIM,GUSERV,ZTMP5_DEVICE(:,:,:)) ! d(phi3*drdz )/ddrdz term
+    CALL D_PSI3DRDZ_O_DDRDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:),PRED2THR3(:,:,:), &
+                            HTURBDIM,GUSERV,ZTMP6_DEVICE(:,:,:))  ! d(psi3*drdz )/ddrdz term
     !$acc kernels
-    ZTMP1_DEVICE = PTHLP - PTHLM
-    ZTMP8_DEVICE = PRP   - PRM(:,:,:,1)
+    ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:)
+    ZTMP8_DEVICE(:,:,:) = PRP(:,:,:)   - PRM(:,:,:,1)
     !$acc end kernels
-    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
-    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP8_DEVICE,ZTMP1_DEVICE)
+    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE(:,:,:),ZTMP2_DEVICE(:,:,:))
+    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP8_DEVICE(:,:,:),ZTMP1_DEVICE(:,:,:))
     !!!
     !$acc kernels
-    ZTMP7_DEVICE =   ( ZTMP3_DEVICE + ZTMP4_DEVICE) * PDR_DZ  * ZTMP2_DEVICE / PDZZ &
-                   + ( ZTMP5_DEVICE + ZTMP6_DEVICE) * PDTH_DZ * ZTMP1_DEVICE / PDZZ
+    ZTMP7_DEVICE(:,:,:) =   ( ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:)) * PDR_DZ(:,:,:)  * ZTMP2_DEVICE(:,:,:) / PDZZ(:,:,:) &
+                   + ( ZTMP5_DEVICE(:,:,:) + ZTMP6_DEVICE(:,:,:)) * PDTH_DZ(:,:,:) * ZTMP1_DEVICE(:,:,:) / PDZZ(:,:,:)
     !$acc end kernels
     !!!
     !$acc kernels
-    ZTMP1_DEVICE = PTHLP - PTHLM
-    ZTMP2_DEVICE = PRP   - PRM(:,:,:,1)
+    ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:)
+    ZTMP2_DEVICE(:,:,:) = PRP(:,:,:)   - PRM(:,:,:,1)
     !$acc end kernels
-    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP3_DEVICE)
-    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP4_DEVICE)
+    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE(:,:,:),ZTMP3_DEVICE(:,:,:))
+    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE(:,:,:),ZTMP4_DEVICE(:,:,:))
     !$acc kernels
-    ZTMP1_DEVICE = ZTMP3_DEVICE / PDZZ
-    ZTMP2_DEVICE = ZTMP4_DEVICE /PDZZ
+    ZTMP1_DEVICE(:,:,:) = ZTMP3_DEVICE(:,:,:) / PDZZ(:,:,:)
+    ZTMP2_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:) /PDZZ(:,:,:)
     !$acc end kernels
     !!!
-    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP7_DEVICE,ZTMP3_DEVICE)
-    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE, ZTMP4_DEVICE )
-    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE, ZTMP5_DEVICE )
+    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP7_DEVICE(:,:,:),ZTMP3_DEVICE(:,:,:))
+    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE(:,:,:), ZTMP4_DEVICE(:,:,:) )
+    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE(:,:,:), ZTMP5_DEVICE(:,:,:) )
     !$acc kernels
-    ZFLXZ(:,:,:)   = ZF                           &
-        + PIMPL * XCTV*PLM*PLEPS*0.5 * ZTMP3_DEVICE  &
-        + PIMPL * ZDFDDTDZ * ZTMP4_DEVICE            &
-        + PIMPL * ZDFDDRDZ * ZTMP5_DEVICE
+    ZFLXZ(:,:,:)   = ZF(:,:,:)                           &
+        + PIMPL * XCTV*PLM(:,:,:)*PLEPS(:,:,:)*0.5 * ZTMP3_DEVICE(:,:,:)  &
+        + PIMPL * ZDFDDTDZ(:,:,:) * ZTMP4_DEVICE(:,:,:)            &
+        + PIMPL * ZDFDDRDZ(:,:,:) * ZTMP5_DEVICE(:,:,:)
 #endif
     !
     ! special case near the ground ( uncentred gradient )
@@ -1069,7 +1078,7 @@ END IF
       TZFIELD%NDIMS      = 3
       TZFIELD%LTIMEDEP   = .TRUE.
 !$acc update self(ZFLXZ)
-      CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+      CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ(:,:,:))
     END IF
 !
 ! and we store in LES configuration
@@ -1077,49 +1086,49 @@ END IF
     IF (LLES_CALL) THEN
       CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
-      CALL LES_MEAN_SUBGRID( ZFLXZ, X_LES_SUBGRID_THlRt ) 
-      CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM)*ZFLXZ, X_LES_RES_W_SBG_ThlRt )
-      CALL LES_MEAN_SUBGRID( -2.*XCTD*PSQRT_TKE*ZFLXZ/PLEPS, X_LES_SUBGRID_DISS_ThlRt ) 
-      CALL LES_MEAN_SUBGRID( PETHETA*ZFLXZ, X_LES_SUBGRID_RtThv ) 
-      CALL LES_MEAN_SUBGRID( -XA3*PBETA*PETHETA*ZFLXZ, X_LES_SUBGRID_RtPz, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( PEMOIST*ZFLXZ, X_LES_SUBGRID_ThlThv , .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( -XA3*PBETA*PEMOIST*ZFLXZ, X_LES_SUBGRID_ThlPz, .TRUE. ) 
+      CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_THlRt )
+      CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:))*ZFLXZ(:,:,:), X_LES_RES_W_SBG_ThlRt )
+      CALL LES_MEAN_SUBGRID( -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:), X_LES_SUBGRID_DISS_ThlRt )
+      CALL LES_MEAN_SUBGRID( PETHETA(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_RtThv )
+      CALL LES_MEAN_SUBGRID( -XA3*PBETA(:,:,:)*PETHETA(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_RtPz, .TRUE. )
+      CALL LES_MEAN_SUBGRID( PEMOIST(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_ThlThv , .TRUE. )
+      CALL LES_MEAN_SUBGRID( -XA3*PBETA(:,:,:)*PEMOIST(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_ThlPz, .TRUE. )
 #else
 !$acc data copy(X_LES_SUBGRID_THlRt,X_LES_RES_W_SBG_ThlRt,X_LES_SUBGRID_DISS_ThlRt, &
 !$acc &         X_LES_SUBGRID_RtThv,X_LES_SUBGRID_RtPz,X_LES_SUBGRID_ThlThv,X_LES_SUBGRID_ThlPz)
       !
-      CALL LES_MEAN_SUBGRID( ZFLXZ, X_LES_SUBGRID_THlRt ) 
+      CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_THlRt )
       !
-      CALL MZF_DEVICE(KKA,KKU,KKL,PWM,ZTMP1_DEVICE)
+      CALL MZF_DEVICE(KKA,KKU,KKL,PWM(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLXZ
+      ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
-      CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_RES_W_SBG_ThlRt )
+      CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE(:,:,:), X_LES_RES_W_SBG_ThlRt )
       !
       !$acc kernels
-      ZTMP1_DEVICE = -2.*XCTD*PSQRT_TKE*ZFLXZ/PLEPS
+      ZTMP1_DEVICE(:,:,:) = -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:)
       !$acc end kernels
-      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_DISS_ThlRt ) 
+      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_DISS_ThlRt )
       !
       !$acc kernels
-      ZTMP1_DEVICE = PETHETA*ZFLXZ
+      ZTMP1_DEVICE(:,:,:) = PETHETA(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
-      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_RtThv ) 
+      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_RtThv )
       !
       !$acc kernels
-      ZTMP1_DEVICE = -XA3*PBETA*PETHETA*ZFLXZ
+      ZTMP1_DEVICE(:,:,:) = -XA3*PBETA(:,:,:)*PETHETA(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
-      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_RtPz, .TRUE. ) 
+      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_RtPz, .TRUE. )
       !
       !$acc kernels
-      ZTMP1_DEVICE = PEMOIST*ZFLXZ
+      ZTMP1_DEVICE(:,:,:) = PEMOIST(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
-      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_ThlThv , .TRUE. ) 
+      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_ThlThv , .TRUE. )
       !
       !$acc kernels
-      ZTMP1_DEVICE = -XA3*PBETA*PEMOIST*ZFLXZ
+      ZTMP1_DEVICE(:,:,:) = -XA3*PBETA(:,:,:)*PEMOIST(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
-      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_ThlPz, .TRUE. ) 
+      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_ThlPz, .TRUE. )
       !
 !$acc end data
 #endif
@@ -1134,21 +1143,21 @@ END IF
     ! Compute the turbulent variance F and F' at time t-dt.
 #ifndef MNH_OPENACC
 #ifndef MNH_BITREP
-    ZF      (:,:,:) = XCTV*PLM*PLEPS*MZF(KKA,KKU,KKL,PPSI3*PDR_DZ**2)
+    ZF      (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,PPSI3(:,:,:)*PDR_DZ(:,:,:)**2)
 #else
-    ZF      (:,:,:) = XCTV*PLM*PLEPS*MZF(KKA,KKU,KKL,PPSI3*BR_P2(PDR_DZ))
+    ZF      (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*MZF(KKA,KKU,KKL,PPSI3(:,:,:)*BR_P2(PDR_DZ(:,:,:)))
 #endif
 #else
     !$acc kernels
 #ifndef MNH_BITREP
-    ZTMP1_DEVICE = PPSI3*PDR_DZ**2
+    ZTMP1_DEVICE(:,:,:) = PPSI3(:,:,:)*PDR_DZ(:,:,:)**2
 #else
-    ZTMP1_DEVICE = PPSI3*BR_P2(PDR_DZ)
+    ZTMP1_DEVICE(:,:,:) = PPSI3(:,:,:)*BR_P2(PDR_DZ(:,:,:))
 #endif
     !$acc end kernels
-    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
+    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE(:,:,:),ZTMP2_DEVICE(:,:,:))
     !$acc kernels
-    ZF      (:,:,:) = XCTV*PLM*PLEPS*ZTMP2_DEVICE
+    ZF      (:,:,:) = XCTV*PLM(:,:,:)*PLEPS(:,:,:)*ZTMP2_DEVICE(:,:,:)
 #endif
     ZDFDDRDZ(:,:,:) = 0.     ! this term, because of discretization, is treated separately
     !$acc end kernels
@@ -1158,22 +1167,22 @@ END IF
     ! d(w'r'2)/dz
 #ifndef MNH_OPENACC
     IF (GFR2) THEN
-      ZF       = ZF       + M3_R2_WR2(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,&
-      & PSQRT_TKE) * PFR2
-      ZDFDDRDZ = ZDFDDRDZ + D_M3_R2_WR2_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-      & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST) * PFR2
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_R2_WR2(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),PLEPS(:,:,:),&
+      & PSQRT_TKE(:,:,:)) * PFR2(:,:,:)
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_R2_WR2_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+      & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:)) * PFR2(:,:,:)
     END IF
 #else
     IF (GFR2) THEN
-      CALL M3_R2_WR2(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,&
-      & PSQRT_TKE,ZTMP1_DEVICE)
+      CALL M3_R2_WR2(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),PLEPS(:,:,:),&
+      & PSQRT_TKE(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP1_DEVICE * PFR2
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFR2(:,:,:)
       !$acc end kernels
-      CALL D_M3_R2_WR2_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-      & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,ZTMP1_DEVICE)
+      CALL D_M3_R2_WR2_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+      & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PEMOIST(:,:,:),ZTMP1_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDRDZ = ZDFDDRDZ + ZTMP1_DEVICE * PFR2
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFR2(:,:,:)
       !$acc end kernels
     END IF
 #endif
@@ -1181,23 +1190,23 @@ END IF
     ! d(w'2r')/dz
 #ifndef MNH_OPENACC
     IF (GFWR) THEN
-      ZF       = ZF       + M3_R2_W2R(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PDR_DZ,&
-      & PLM,PLEPS,PTKEM) * MZF(KKA,KKU,KKL,PFWR)
-      ZDFDDRDZ = ZDFDDRDZ + D_M3_R2_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-      & PD,PLM,PLEPS,PTKEM,GUSERV) * MZF(KKA,KKU,KKL,PFWR)
+      ZF(:,:,:)       = ZF(:,:,:)       + M3_R2_W2R(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),PDR_DZ(:,:,:),&
+      & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:)) * MZF(KKA,KKU,KKL,PFWR(:,:,:))
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_R2_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+      & PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),GUSERV) * MZF(KKA,KKU,KKL,PFWR(:,:,:))
     END IF
 #else
     IF (GFWR) THEN
-      CALL MZF_DEVICE(KKA,KKU,KKL,PFWR,ZTMP1_DEVICE)
-      CALL M3_R2_W2R(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PDR_DZ,&
-      & PLM,PLEPS,PTKEM,ZTMP2_DEVICE)
+      CALL MZF_DEVICE(KKA,KKU,KKL,PFWR(:,:,:),ZTMP1_DEVICE(:,:,:))
+      CALL M3_R2_W2R(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),PD(:,:,:),PDR_DZ(:,:,:),&
+      & PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),ZTMP2_DEVICE(:,:,:))
       !$acc kernels
-      ZF       = ZF       + ZTMP2_DEVICE * ZTMP1_DEVICE
+      ZF(:,:,:)       = ZF(:,:,:)       + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
       !$acc end kernels
-      CALL D_M3_R2_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-      & PD,PLM,PLEPS,PTKEM,GUSERV,ZTMP3_DEVICE)
+      CALL D_M3_R2_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+      & PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),GUSERV,ZTMP3_DEVICE(:,:,:))
       !$acc kernels
-      ZDFDDRDZ = ZDFDDRDZ + ZTMP3_DEVICE * ZTMP1_DEVICE
+      ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP3_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
       !$acc end kernels
     END IF
 #endif
@@ -1206,22 +1215,22 @@ END IF
       ! d(w'r'2)/dz
 #ifndef MNH_OPENACC
       IF (GFTH2) THEN
-        ZF       = ZF       + M3_R2_WTH2(KKA,KKU,KKL,PD,PLEPS,PSQRT_TKE,&
-        & PBLL_O_E,PETHETA,PDR_DZ) * PFTH2
-        ZDFDDRDZ = ZDFDDRDZ + D_M3_R2_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDR1,&
-        & PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ) * PFTH2
+        ZF(:,:,:)       = ZF(:,:,:)       + M3_R2_WTH2(KKA,KKU,KKL,PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),&
+        & PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) * PFTH2(:,:,:)
+        ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_R2_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),&
+        & PREDTH1(:,:,:),PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) * PFTH2(:,:,:)
       END IF
 #else
       IF (GFTH2) THEN
-        CALL M3_R2_WTH2(KKA,KKU,KKL,PD,PLEPS,PSQRT_TKE,&
-        & PBLL_O_E,PETHETA,PDR_DZ,ZTMP1_DEVICE)
+        CALL M3_R2_WTH2(KKA,KKU,KKL,PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),&
+        & PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:),ZTMP1_DEVICE(:,:,:))
         !$acc kernels
-        ZF       = ZF       + ZTMP1_DEVICE * PFTH2
+        ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFTH2(:,:,:)
         !$acc end kernels
-        CALL D_M3_R2_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDR1,&
-        & PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ,ZTMP2_DEVICE)
+        CALL D_M3_R2_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),&
+        & PREDTH1(:,:,:),PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:),ZTMP2_DEVICE(:,:,:))
         !$acc kernels
-        ZDFDDRDZ = ZDFDDRDZ + ZTMP2_DEVICE * PFTH2
+        ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * PFTH2(:,:,:)
         !$acc end kernels
       END IF
 #endif
@@ -1229,23 +1238,24 @@ END IF
       ! d(w'2r')/dz
 #ifndef MNH_OPENACC
       IF (GFWTH) THEN
-        ZF       = ZF       + M3_R2_W2TH(KKA,KKU,KKL,PD,PLM,PLEPS,PTKEM,&
-        & PBLL_O_E,PETHETA,PDR_DZ) * MZF(KKA,KKU,KKL,PFWTH)
-        ZDFDDRDZ = ZDFDDRDZ + D_M3_R2_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-        & PD,PLM,PLEPS,PTKEM,PBLL_O_E,PETHETA,PDR_DZ) * MZF(KKA,KKU,KKL,PFWTH)
+        ZF(:,:,:)       = ZF(:,:,:)       + M3_R2_W2TH(KKA,KKU,KKL,PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),&
+          PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) * MZF(KKA,KKU,KKL,PFWTH(:,:,:))
+        ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_R2_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+          PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:))  &
+          * MZF(KKA,KKU,KKL,PFWTH(:,:,:))
       END IF
 #else
       IF (GFWTH) THEN
-        CALL MZF_DEVICE(KKA,KKU,KKL,PFWTH,ZTMP1_DEVICE)
-        CALL M3_R2_W2TH(KKA,KKU,KKL,PD,PLM,PLEPS,PTKEM,&
-        & PBLL_O_E,PETHETA,PDR_DZ,ZTMP2_DEVICE)
+        CALL MZF_DEVICE(KKA,KKU,KKL,PFWTH(:,:,:),ZTMP1_DEVICE(:,:,:))
+        CALL M3_R2_W2TH(KKA,KKU,KKL,PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),&
+        & PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:),ZTMP2_DEVICE(:,:,:))
         !$acc kernels
-        ZF       = ZF       + ZTMP2_DEVICE * ZTMP1_DEVICE
+        ZF(:,:,:)       = ZF(:,:,:)       + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
         !$acc end kernels
-        CALL D_M3_R2_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-        & PD,PLM,PLEPS,PTKEM,PBLL_O_E,PETHETA,PDR_DZ,ZTMP3_DEVICE)
+        CALL D_M3_R2_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+        & PD(:,:,:),PLM(:,:,:),PLEPS(:,:,:),PTKEM(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:),ZTMP3_DEVICE(:,:,:))
         !$acc kernels
-        ZDFDDRDZ = ZDFDDRDZ + ZTMP3_DEVICE * ZTMP1_DEVICE
+        ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP3_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
         !$acc end kernels
       END IF
 #endif
@@ -1253,22 +1263,22 @@ END IF
       ! d(w'th'r')/dz
 #ifndef MNH_OPENACC
       IF (GFTHR) THEN
-        ZF       = ZF       + M3_R2_WTHR(KKA,KKU,KKL,PREDTH1,PD,PLEPS,&
-        & PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ) * PFTHR
-        ZDFDDRDZ = ZDFDDRDZ + D_M3_R2_WTHR_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-        & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ) * PFTHR
+        ZF(:,:,:)       = ZF(:,:,:)       + M3_R2_WTHR(KKA,KKU,KKL,PREDTH1(:,:,:),PD(:,:,:),PLEPS(:,:,:),&
+        & PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) * PFTHR(:,:,:)
+        ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_R2_WTHR_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+        & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:)) * PFTHR(:,:,:)
       END IF
 #else
       IF (GFTHR) THEN
-        CALL M3_R2_WTHR(KKA,KKU,KKL,PREDTH1,PD,PLEPS,&
-        & PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ,ZTMP1_DEVICE)
+        CALL M3_R2_WTHR(KKA,KKU,KKL,PREDTH1(:,:,:),PD(:,:,:),PLEPS(:,:,:),&
+        & PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:),ZTMP1_DEVICE(:,:,:))
         !$acc kernels
-        ZF       = ZF       + ZTMP1_DEVICE * PFTHR
+        ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFTHR(:,:,:)
         !$acc end kernels
-        CALL D_M3_R2_WTHR_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
-        & PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDR_DZ,ZTMP2_DEVICE)
+        CALL D_M3_R2_WTHR_O_DDRDZ(KKA,KKU,KKL,PREDR1(:,:,:),PREDTH1(:,:,:),&
+        & PD(:,:,:),PLEPS(:,:,:),PSQRT_TKE(:,:,:),PBLL_O_E(:,:,:),PETHETA(:,:,:),PDR_DZ(:,:,:),ZTMP2_DEVICE(:,:,:))
         !$acc kernels
-        ZDFDDRDZ = ZDFDDRDZ + ZTMP2_DEVICE * PFTHR
+        ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * PFTHR(:,:,:)
         !$acc end kernels
       END IF
 #endif
@@ -1276,29 +1286,31 @@ END IF
     END IF
     !
 #ifndef MNH_OPENACC
-    ZFLXZ(:,:,:)   = ZF                                                              &
-          + PIMPL * XCTV*PLM*PLEPS                                                   &
-            *MZF(KKA,KKU,KKL,D_PSI3DRDZ2_O_DDRDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDR_DZ,HTURBDIM,GUSERV)    &
-                 *DZM(KKA,KKU,KKL,PRP - PRM(:,:,:,1)) / PDZZ                                   ) &
-          + PIMPL * ZDFDDRDZ * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PRP - PRM(:,:,:,1)) / PDZZ )
+    ZFLXZ(:,:,:)   = ZF(:,:,:)                                                              &
+          + PIMPL * XCTV*PLM(:,:,:)*PLEPS(:,:,:)                                                   &
+            *MZF(KKA,KKU,KKL,D_PSI3DRDZ2_O_DDRDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:),PRED2THR3(:,:,:), &
+                                                 PDR_DZ(:,:,:),HTURBDIM,GUSERV)    &
+                 *DZM(KKA,KKU,KKL,PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:)                                   ) &
+          + PIMPL * ZDFDDRDZ(:,:,:) * MZF(KKA,KKU,KKL,DZM(KKA,KKU,KKL,PRP(:,:,:) - PRM(:,:,:,1)) / PDZZ(:,:,:) )
 #else
-    CALL D_PSI3DRDZ2_O_DDRDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDR_DZ,HTURBDIM,GUSERV,ZTMP1_DEVICE)
+    CALL D_PSI3DRDZ2_O_DDRDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:),PRED2THR3(:,:,:),PDR_DZ(:,:,:), &
+                             HTURBDIM,GUSERV,ZTMP1_DEVICE(:,:,:))
     !$acc kernels
-    ZTMP2_DEVICE = PRP - PRM(:,:,:,1)
+    ZTMP2_DEVICE(:,:,:) = PRP(:,:,:) - PRM(:,:,:,1)
     !$acc end kernels
-    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP3_DEVICE)
+    CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE(:,:,:),ZTMP3_DEVICE(:,:,:))
     !$acc kernels
-    ZTMP2_DEVICE = ZTMP1_DEVICE * ZTMP3_DEVICE / PDZZ
+    ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE(:,:,:) / PDZZ(:,:,:)
     !$acc end kernels
-    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP1_DEVICE)
+    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE(:,:,:),ZTMP1_DEVICE(:,:,:))
     !$acc kernels
-    ZTMP2_DEVICE = ZTMP3_DEVICE / PDZZ
+    ZTMP2_DEVICE(:,:,:) = ZTMP3_DEVICE(:,:,:) / PDZZ(:,:,:)
     !$acc end kernels
-    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP3_DEVICE)
+    CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE(:,:,:),ZTMP3_DEVICE(:,:,:))
     !$acc kernels
-    ZFLXZ(:,:,:)   = ZF                        &
-          + PIMPL * XCTV*PLM*PLEPS * ZTMP1_DEVICE &
-          + PIMPL * ZDFDDRDZ * ZTMP3_DEVICE
+    ZFLXZ(:,:,:)   = ZF(:,:,:)                        &
+          + PIMPL * XCTV*PLM(:,:,:)*PLEPS(:,:,:) * ZTMP1_DEVICE(:,:,:) &
+          + PIMPL * ZDFDDRDZ(:,:,:) * ZTMP3_DEVICE(:,:,:)
 #endif
     !
     ! special case near the ground ( uncentred gradient )
@@ -1351,7 +1363,7 @@ END IF
       TZFIELD%NDIMS      = 3
       TZFIELD%LTIMEDEP   = .TRUE.
 !$acc update self(ZFLXZ)
-      CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+      CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ(:,:,:))
     END IF
     !
     ! and we store in LES configuration
@@ -1359,29 +1371,29 @@ END IF
     IF (LLES_CALL) THEN
       CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
-      CALL LES_MEAN_SUBGRID( ZFLXZ, X_LES_SUBGRID_Rt2 ) 
-      CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM)*ZFLXZ, X_LES_RES_W_SBG_Rt2 )
-      CALL LES_MEAN_SUBGRID( PEMOIST*ZFLXZ, X_LES_SUBGRID_RtThv , .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( -XA3*PBETA*PEMOIST*ZFLXZ, X_LES_SUBGRID_RtPz, .TRUE. )
-      CALL LES_MEAN_SUBGRID( -2.*XCTD*PSQRT_TKE*ZFLXZ/PLEPS, X_LES_SUBGRID_DISS_Rt2 ) 
+      CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_Rt2 )
+      CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:))*ZFLXZ(:,:,:), X_LES_RES_W_SBG_Rt2 )
+      CALL LES_MEAN_SUBGRID( PEMOIST(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_RtThv , .TRUE. )
+      CALL LES_MEAN_SUBGRID( -XA3*PBETA(:,:,:)*PEMOIST(:,:,:)*ZFLXZ(:,:,:), X_LES_SUBGRID_RtPz, .TRUE. )
+      CALL LES_MEAN_SUBGRID( -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:), X_LES_SUBGRID_DISS_Rt2 )
 #else
 !$acc data copy(X_LES_SUBGRID_Rt2,X_LES_RES_W_SBG_Rt2,X_LES_SUBGRID_RtThv, &
 !$acc &         X_LES_SUBGRID_RtPz,X_LES_SUBGRID_DISS_Rt2)
       !
-      CALL LES_MEAN_SUBGRID( ZFLXZ, X_LES_SUBGRID_Rt2 ) 
+      CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_Rt2 )
       !
-      CALL MZF_DEVICE(KKA,KKU,KKL,PWM,ZTMP1_DEVICE)
-      ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLXZ
-      CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_RES_W_SBG_Rt2 )
+      CALL MZF_DEVICE(KKA,KKU,KKL,PWM(:,:,:),ZTMP1_DEVICE(:,:,:))
+      ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLXZ(:,:,:)
+      CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE(:,:,:), X_LES_RES_W_SBG_Rt2 )
       !
-      ZTMP1_DEVICE = PEMOIST*ZFLXZ
-      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_RtThv , .TRUE. ) 
+      ZTMP1_DEVICE(:,:,:) = PEMOIST(:,:,:)*ZFLXZ(:,:,:)
+      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_RtThv , .TRUE. )
       !
-      ZTMP1_DEVICE = -XA3*PBETA*PEMOIST*ZFLXZ
-      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_RtPz, .TRUE. )
+      ZTMP1_DEVICE(:,:,:) = -XA3*PBETA(:,:,:)*PEMOIST(:,:,:)*ZFLXZ(:,:,:)
+      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_RtPz, .TRUE. )
       !
-      ZTMP1_DEVICE = -2.*XCTD*PSQRT_TKE*ZFLXZ/PLEPS
-      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_DISS_Rt2 ) 
+      ZTMP1_DEVICE(:,:,:) = -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:)
+      CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_DISS_Rt2 )
       !
 !$acc end data
 #endif
diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90
index 7334345af5b12804f7b76195bd821923aa578a0b..b5b7355cea1e24394b3623be1c1258a5b18d18a7 100644
--- a/src/MNH/turb_ver_thermo_flux.f90
+++ b/src/MNH/turb_ver_thermo_flux.f90
@@ -570,7 +570,7 @@ GUSERV = (KRR/=0)
 ZKEFF(:,:,:) = MZM(KKA,KKU,KKL, PLM(:,:,:) * SQRT(PTKEM(:,:,:)) )
 #else
 !$acc kernels
-ZTMP1_DEVICE = PLM(:,:,:) * SQRT(PTKEM(:,:,:))
+ZTMP1_DEVICE(:,:,:) = PLM(:,:,:) * SQRT(PTKEM(:,:,:))
 !$acc end kernels
 CALL MZM_DEVICE(ZTMP1_DEVICE, ZKEFF)
 #endif
@@ -584,11 +584,11 @@ GFWTH = .FALSE.
 GFWR  = .FALSE.
 !
 IF (HTOM/='NONE') THEN
-  GFTH2 = ANY(PFTH2/=0.)
-  GFR2  = ANY(PFR2 /=0.) .AND. GUSERV
-  GFTHR = ANY(PFTHR/=0.) .AND. GUSERV
-  GFWTH = ANY(PFWTH/=0.)
-  GFWR  = ANY(PFWR /=0.) .AND. GUSERV
+  GFTH2 = ANY(PFTH2(:,:,:)/=0.)
+  GFR2  = ANY(PFR2 (:,:,:)/=0.) .AND. GUSERV
+  GFTHR = ANY(PFTHR(:,:,:)/=0.) .AND. GUSERV
+  GFWTH = ANY(PFWTH(:,:,:)/=0.)
+  GFWR  = ANY(PFWR (:,:,:)/=0.) .AND. GUSERV
 END IF
 !----------------------------------------------------------------------------
 !
@@ -601,17 +601,17 @@ END IF
 ! Compute the turbulent flux F and F' at time t-dt.
 !
 #ifndef MNH_OPENACC
-ZF      (:,:,:) = -XCSHF*PPHI3*ZKEFF*DZM(KKA,KKU,KKL,PTHLM)/PDZZ
-ZDFDDTDZ(:,:,:) = -XCSHF*ZKEFF*D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV)
+ZF      (:,:,:) = -XCSHF*PPHI3(:,:,:)*ZKEFF(:,:,:)*DZM(KKA,KKU,KKL,PTHLM)/PDZZ(:,:,:)
+ZDFDDTDZ(:,:,:) = -XCSHF*ZKEFF(:,:,:)*D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV)
 #else
 CALL DZM_DEVICE(KKA,KKU,KKL,PTHLM,ZTMP1_DEVICE)
 !$acc kernels
-ZF      (:,:,:) = -XCSHF*PPHI3*ZKEFF*ZTMP1_DEVICE/PDZZ
+ZF      (:,:,:) = -XCSHF*PPHI3(:,:,:)*ZKEFF(:,:,:)*ZTMP1_DEVICE(:,:,:)/PDZZ(:,:,:)
 !$acc end kernels
 !
 CALL D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV,ZTMP2_DEVICE)
 !$acc kernels
-ZDFDDTDZ(:,:,:) = -XCSHF*ZKEFF*ZTMP2_DEVICE
+ZDFDDTDZ(:,:,:) = -XCSHF*ZKEFF(:,:,:)*ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 #endif
 !
@@ -620,23 +620,23 @@ ZDFDDTDZ(:,:,:) = -XCSHF*ZKEFF*ZTMP2_DEVICE
 ! d(w'2th')/dz
 #ifndef MNH_OPENACC
 IF (GFWTH) THEN
-  Z3RDMOMENT= M3_WTH_W2TH(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,PTKEM)
+  Z3RDMOMENT(:,:,:)= M3_WTH_W2TH(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,PTKEM)
 !
-  ZF       = ZF       + Z3RDMOMENT * PFWTH
-  ZDFDDTDZ = ZDFDDTDZ + D_M3_WTH_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-   & PD,PBLL_O_E,PETHETA,ZKEFF,PTKEM) * PFWTH
+  ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * PFWTH(:,:,:)
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_WTH_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
+   & PD,PBLL_O_E,PETHETA,ZKEFF,PTKEM) * PFWTH(:,:,:)
 END IF
 #else
 IF (GFWTH) THEN
   CALL M3_WTH_W2TH(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,PTKEM,Z3RDMOMENT)
 !
 !$acc kernels
-  ZF       = ZF       + Z3RDMOMENT * PFWTH
+  ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * PFWTH(:,:,:)
 !$acc end kernels
   CALL D_M3_WTH_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
    & PD,PBLL_O_E,PETHETA,ZKEFF,PTKEM,ZTMP1_DEVICE)
 !$acc kernels
-  ZDFDDTDZ = ZDFDDTDZ + ZTMP1_DEVICE * PFWTH
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFWTH(:,:,:)
 !$acc end kernels
 END IF
 #endif
@@ -644,10 +644,10 @@ END IF
 ! d(w'th'2)/dz
 #ifndef MNH_OPENACC
 IF (GFTH2) THEN
-  Z3RDMOMENT= M3_WTH_WTH2(PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA)
+  Z3RDMOMENT(:,:,:)= M3_WTH_WTH2(PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA)
 !
-  ZF       = ZF       + Z3RDMOMENT * MZM(KKA,KKU,KKL,PFTH2)
-  ZDFDDTDZ = ZDFDDTDZ + D_M3_WTH_WTH2_O_DDTDZ(Z3RDMOMENT,PREDTH1,PREDR1,&
+  ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * MZM(KKA,KKU,KKL,PFTH2)
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_WTH_WTH2_O_DDTDZ(Z3RDMOMENT,PREDTH1,PREDR1,&
     & PD,PBLL_O_E,PETHETA) * MZM(KKA,KKU,KKL,PFTH2)
 END IF
 #else
@@ -656,13 +656,13 @@ IF (GFTH2) THEN
 !
   CALL MZM_DEVICE(PFTH2,ZTMP1_DEVICE)
 !$acc kernels
-  ZF       = ZF       + Z3RDMOMENT * ZTMP1_DEVICE
+  ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
   CALL D_M3_WTH_WTH2_O_DDTDZ(Z3RDMOMENT,PREDTH1,PREDR1,&
     & PD,PBLL_O_E,PETHETA,ZTMP1_DEVICE)
   CALL MZM_DEVICE(PFTH2,ZTMP2_DEVICE)
 !$acc kernels
-  ZDFDDTDZ = ZDFDDTDZ + ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 END IF
 #endif
@@ -670,22 +670,22 @@ END IF
 ! d(w'2r')/dz
 #ifndef MNH_OPENACC
 IF (GFWR) THEN
-  ZF       = ZF       + M3_WTH_W2R(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,&
-    & PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ) * PFWR
-  ZDFDDTDZ = ZDFDDTDZ + D_M3_WTH_W2R_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
-    & PD,ZKEFF,PTKEM,PBLL_O_E,PEMOIST) * PFWR
+  ZF(:,:,:)       = ZF(:,:,:)       + M3_WTH_W2R(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,&
+    & PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ) * PFWR(:,:,:)
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_WTH_W2R_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
+    & PD,ZKEFF,PTKEM,PBLL_O_E,PEMOIST) * PFWR(:,:,:)
 END IF
 #else
 IF (GFWR) THEN
   CALL M3_WTH_W2R(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,&
     & PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ,ZTMP1_DEVICE)
 !$acc kernels
-  ZF       = ZF       + ZTMP1_DEVICE * PFWR
+  ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFWR(:,:,:)
 !$acc end kernels
   CALL D_M3_WTH_W2R_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
     & PD,ZKEFF,PTKEM,PBLL_O_E,PEMOIST,ZTMP2_DEVICE)
 !$acc kernels
-  ZDFDDTDZ = ZDFDDTDZ + ZTMP2_DEVICE * PFWR
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * PFWR(:,:,:)
 !$acc end kernels
 END IF
 #endif
@@ -693,9 +693,9 @@ END IF
 ! d(w'r'2)/dz
 #ifndef MNH_OPENACC
 IF (GFR2) THEN
-  ZF       = ZF       + M3_WTH_WR2(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,PTKEM,&
+  ZF(:,:,:)       = ZF(:,:,:)       + M3_WTH_WR2(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,PTKEM,&
     & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTH_DZ) * MZM(KKA,KKU,KKL,PFR2)
-  ZDFDDTDZ = ZDFDDTDZ + D_M3_WTH_WR2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_WTH_WR2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
     & ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST) * MZM(KKA,KKU,KKL,PFR2)
 END IF
 #else
@@ -704,13 +704,13 @@ IF (GFR2) THEN
     & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTH_DZ,ZTMP1_DEVICE)
   CALL MZM_DEVICE(PFR2,ZTMP2_DEVICE)
 !$acc kernels
-  ZF       = ZF       + ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
   CALL D_M3_WTH_WR2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
     & ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,ZTMP1_DEVICE)
   CALL MZM_DEVICE(PFR2,ZTMP2_DEVICE)
 !$acc kernels
-  ZDFDDTDZ = ZDFDDTDZ + ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 END IF
 #endif
@@ -718,10 +718,10 @@ END IF
 ! d(w'th'r')/dz
 #ifndef MNH_OPENACC
 IF (GFTHR) THEN
-  Z3RDMOMENT= M3_WTH_WTHR(KKA,KKU,KKL,PREDR1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,PLEPS,PEMOIST)
+  Z3RDMOMENT(:,:,:)= M3_WTH_WTHR(KKA,KKU,KKL,PREDR1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,PLEPS,PEMOIST)
 !
-  ZF       = ZF       + Z3RDMOMENT * MZM(KKA,KKU,KKL,PFTHR)
-  ZDFDDTDZ = ZDFDDTDZ + D_M3_WTH_WTHR_O_DDTDZ(Z3RDMOMENT,PREDTH1,&
+  ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * MZM(KKA,KKU,KKL,PFTHR)
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + D_M3_WTH_WTHR_O_DDTDZ(Z3RDMOMENT,PREDTH1,&
     & PREDR1,PD,PBLL_O_E,PETHETA) * MZM(KKA,KKU,KKL,PFTHR)
 END IF
 #else
@@ -731,12 +731,12 @@ IF (GFTHR) THEN
 !
   CALL MZM_DEVICE(PFTHR,ZTMP1_DEVICE)
 !$acc kernels
-  ZF       = ZF       + Z3RDMOMENT * ZTMP1_DEVICE
+  ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
   CALL D_M3_WTH_WTHR_O_DDTDZ(Z3RDMOMENT,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,ZTMP1_DEVICE)
   CALL MZM_DEVICE(PFTHR,ZTMP2_DEVICE)
 !$acc kernels
-  ZDFDDTDZ = ZDFDDTDZ + ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZDFDDTDZ(:,:,:) = ZDFDDTDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
 END IF
 #endif
@@ -775,15 +775,15 @@ PRTHLS(:,:,:)= PRTHLS(:,:,:)  +    &
 !  Conservative potential temperature flux : 
 !
 #ifndef MNH_OPENACC
-ZFLXZ(:,:,:)   = ZF                                                &
-               + PIMPL * ZDFDDTDZ * DZM(KKA,KKU,KKL,PTHLP - PTHLM) / PDZZ
+ZFLXZ(:,:,:)   = ZF(:,:,:)                                                &
+               + PIMPL * ZDFDDTDZ(:,:,:) * DZM(KKA,KKU,KKL,PTHLP - PTHLM(:,:,:)) / PDZZ(:,:,:)
 #else
 !$acc kernels
-ZTMP1_DEVICE = PTHLP - PTHLM
+ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:)
 !$acc end kernels
 CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
 !$acc kernels
-ZFLXZ(:,:,:)   = ZF + PIMPL * ZDFDDTDZ * ZTMP2_DEVICE / PDZZ 
+ZFLXZ(:,:,:)   = ZF(:,:,:) + PIMPL * ZDFDDTDZ(:,:,:) * ZTMP2_DEVICE(:,:,:) / PDZZ(:,:,:)
 #endif
 !
 ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) 
@@ -815,28 +815,28 @@ END IF
 ! Contribution of the conservative temperature flux to the buoyancy flux
 #ifndef MNH_OPENACC
 IF (KRR /= 0) THEN
-  PTP(:,:,:)  =  PBETA * MZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL,PETHETA) * ZFLXZ )
+  PTP(:,:,:)  =  PBETA(:,:,:) * MZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL,PETHETA) * ZFLXZ(:,:,:) )
   PTP(:,:,IKB)=  PBETA(:,:,IKB) * PETHETA(:,:,IKB) *   &
-                 0.5 * ( ZFLXZ (:,:,IKB) + ZFLXZ (:,:,IKB+KKL) )  
+                 0.5 * ( ZFLXZ(:,:,IKB) + ZFLXZ(:,:,IKB+KKL) )
 ELSE
-  PTP(:,:,:)=  PBETA * MZF(KKA,KKU,KKL, ZFLXZ )
+  PTP(:,:,:)=  PBETA(:,:,:) * MZF(KKA,KKU,KKL, ZFLXZ )
 END IF
 #else
 IF (KRR /= 0) THEN
   CALL MZM_DEVICE(PETHETA,ZTMP1_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLXZ
+  ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLXZ(:,:,:)
 !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KKL, ZTMP2_DEVICE,ZTMP3_DEVICE)
 !$acc kernels
-  PTP(:,:,:)  =  PBETA * ZTMP3_DEVICE
+  PTP(:,:,:)  =  PBETA(:,:,:) * ZTMP3_DEVICE(:,:,:)
   PTP(:,:,IKB)=  PBETA(:,:,IKB) * PETHETA(:,:,IKB) *   &
-                 0.5 * ( ZFLXZ (:,:,IKB) + ZFLXZ (:,:,IKB+KKL) ) 
+                 0.5 * ( ZFLXZ(:,:,IKB) + ZFLXZ(:,:,IKB+KKL) )
 !$acc end kernels 
 ELSE
   CALL MZF_DEVICE(KKA,KKU,KKL, ZFLXZ,ZTMP1_DEVICE)
 !$acc kernels
-  PTP(:,:,:)=  PBETA * ZTMP1_DEVICE
+  PTP(:,:,:)=  PBETA(:,:,:) * ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
 END IF
 #endif
@@ -844,11 +844,11 @@ END IF
 ! Buoyancy flux at flux points
 ! 
 #ifndef MNH_OPENACC
-PWTHV = MZM(KKA,KKU,KKL,PETHETA) * ZFLXZ
+PWTHV(:,:,:) = MZM(KKA,KKU,KKL,PETHETA) * ZFLXZ(:,:,:)
 #else
 CALL MZM_DEVICE(PETHETA,ZTMP1_DEVICE)
 !$acc kernels
-PWTHV = ZTMP1_DEVICE * ZFLXZ
+PWTHV(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLXZ(:,:,:)
 #endif
 PWTHV(:,:,IKB) = PETHETA(:,:,IKB) * ZFLXZ(:,:,IKB)
 !$acc end kernels
@@ -859,42 +859,42 @@ PWTHV(:,:,IKB) = PETHETA(:,:,IKB) * ZFLXZ(:,:,IKB)
 IF ( KRRL >= 1 ) THEN
   IF ( KRRI >= 1 ) THEN
     PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
-                    DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ*PATHETA*2.*PSRCM )*ZFLXZ/PDZZ )       &
+                    DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) &
                     *(1.0-PFRAC_ICE(:,:,:))
     PRRS(:,:,:,4) = PRRS(:,:,:,4) -                                        &
-                    DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ*PATHETA*2.*PSRCM )*ZFLXZ/PDZZ )       &
+                    DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) &
                     *PFRAC_ICE(:,:,:)
   ELSE
     PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
-                    DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ*PATHETA*2.*PSRCM )*ZFLXZ/PDZZ ) 
+                    DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) )
   END IF
 END IF
 #else
 IF ( KRRL >= 1 ) THEN
   IF ( KRRI >= 1 ) THEN
 !$acc kernels
-    ZTMP1_DEVICE = PRHODJ*PATHETA*2.*PSRCM
+    ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:)
 !$acc end kernels
     CALL MZM_DEVICE(ZTMP1_DEVICE,ZTMP2_DEVICE )
 !$acc kernels
-    ZTMP1_DEVICE = ZTMP2_DEVICE*ZFLXZ/PDZZ
+    ZTMP1_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLXZ(:,:,:)/PDZZ(:,:,:)
 !$acc end kernels
-    CALL DZF_DEVICE(KKA,KKU,KKL, ZTMP1_DEVICE,ZTMP3_DEVICE ) 
+    CALL DZF_DEVICE(KKA,KKU,KKL, ZTMP1_DEVICE,ZTMP3_DEVICE )
 !$acc kernels
-    PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP3_DEVICE * (1.0-PFRAC_ICE(:,:,:))
-    PRRS(:,:,:,4) = PRRS(:,:,:,4) - ZTMP3_DEVICE * PFRAC_ICE(:,:,:)
+    PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP3_DEVICE(:,:,:) * (1.0-PFRAC_ICE(:,:,:))
+    PRRS(:,:,:,4) = PRRS(:,:,:,4) - ZTMP3_DEVICE(:,:,:) * PFRAC_ICE(:,:,:)
 !$acc end kernels
   ELSE
 !$acc kernels
-  ZTMP1_DEVICE = PRHODJ*PATHETA*2.*PSRCM
+  ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PATHETA(:,:,:)*2.*PSRCM(:,:,:)
 !$acc end kernels
     CALL MZM_DEVICE(ZTMP1_DEVICE,ZTMP2_DEVICE )
 !$acc kernels
-  ZTMP1_DEVICE = ZTMP2_DEVICE*ZFLXZ/PDZZ
+  ZTMP1_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLXZ(:,:,:)/PDZZ(:,:,:)
 !$acc end kernels
-    CALL DZF_DEVICE(KKA,KKU,KKL, ZTMP1_DEVICE,ZTMP3_DEVICE ) 
+    CALL DZF_DEVICE(KKA,KKU,KKL, ZTMP1_DEVICE,ZTMP3_DEVICE )
 !$acc kernels
-    PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP3_DEVICE 
+    PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP3_DEVICE(:,:,:)
 !$acc end kernels
   END IF
 END IF
@@ -906,58 +906,58 @@ IF (LLES_CALL) THEN
   CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
   CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_WThl ) 
-  CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM*ZFLXZ), X_LES_RES_W_SBG_WThl )
+  CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_W_SBG_WThl )
   CALL LES_MEAN_SUBGRID( GZ_W_M(KKA,KKU,KKL,PWM,PDZZ)*MZF(KKA,KKU,KKL,ZFLXZ),&
       & X_LES_RES_ddxa_W_SBG_UaThl )
-  CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDTH_DZ*ZFLXZ), X_LES_RES_ddxa_Thl_SBG_UaThl )
-  CALL LES_MEAN_SUBGRID( -XCTP*PSQRT_TKE/PLM*MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_ThlPz ) 
-  CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MZM(KKA,KKU,KKL,PETHETA)*ZFLXZ), X_LES_SUBGRID_WThv ) 
+  CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDTH_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Thl_SBG_UaThl )
+  CALL LES_MEAN_SUBGRID( -XCTP*PSQRT_TKE(:,:,:)/PLM(:,:,:)*MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_ThlPz )
+  CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MZM(KKA,KKU,KKL,PETHETA)*ZFLXZ(:,:,:)), X_LES_SUBGRID_WThv )
   IF (KRR>=1) THEN
-    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDR_DZ*ZFLXZ), X_LES_RES_ddxa_Rt_SBG_UaThl )
+    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDR_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Rt_SBG_UaThl )
   END IF
   !* diagnostic of mixing coefficient for heat
-  ZA = DZM(KKA,KKU,KKL,PTHLP)
-  WHERE (ZA==0.) ZA=1.E-6
-  ZA = - ZFLXZ / ZA * PDZZ
+  ZA(:,:,:) = DZM(KKA,KKU,KKL,PTHLP)
+  WHERE (ZA(:,:,:)==0.) ZA(:,:,:)=1.E-6
+  ZA(:,:,:) = - ZFLXZ(:,:,:) / ZA(:,:,:) * PDZZ(:,:,:)
   ZA(:,:,IKB) = XCSHF*PPHI3(:,:,IKB)*ZKEFF(:,:,IKB)
-  ZA = MZF(KKA,KKU,KKL, ZA )
-  ZA = MIN(MAX(ZA,-1000.),1000.)
+  ZA(:,:,:) = MZF(KKA,KKU,KKL, ZA )
+  ZA(:,:,:) = MIN(MAX(ZA(:,:,:),-1000.),1000.)
   CALL LES_MEAN_SUBGRID( ZA, X_LES_SUBGRID_Kh   )
 #else
 !$acc data copy(X_LES_SUBGRID_WThl,X_LES_RES_W_SBG_WThl,X_LES_RES_ddxa_W_SBG_UaThl,X_LES_RES_ddxa_Thl_SBG_UaThl,&
 !$acc &         X_LES_SUBGRID_ThlPz,X_LES_SUBGRID_WThv,X_LES_RES_ddxa_Rt_SBG_UaThl,X_LES_SUBGRID_Kh)
   CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ, ZTMP1_DEVICE)
-  CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_WThl ) 
+  CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_WThl )
 !$acc kernels
-  ZTMP1_DEVICE = PWM*ZFLXZ
+  ZTMP1_DEVICE(:,:,:) = PWM(:,:,:)*ZFLXZ(:,:,:)
 !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE, ZTMP2_DEVICE)
   CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_RES_W_SBG_WThl )
   CALL GZ_W_M_DEVICE(KKA,KKU,KKL,PWM,PDZZ,ZTMP1_DEVICE )
   CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP2_DEVICE)
 !$acc kernels
-  ZTMP3_DEVICE = ZTMP1_DEVICE * ZTMP2_DEVICE
+  ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
 !$acc end kernels
   CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_W_SBG_UaThl )
 !$acc kernels
-  ZTMP1_DEVICE = PDTH_DZ*ZFLXZ
+  ZTMP1_DEVICE(:,:,:) = PDTH_DZ(:,:,:)*ZFLXZ(:,:,:)
 !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
   CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaThl )
   CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP1_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = -XCTP*PSQRT_TKE/PLM*ZTMP1_DEVICE
+  ZTMP2_DEVICE(:,:,:) = -XCTP*PSQRT_TKE(:,:,:)/PLM(:,:,:)*ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
   CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_SUBGRID_ThlPz ) 
   CALL MZM_DEVICE(PETHETA,ZTMP1_DEVICE)
 !$acc kernels
-  ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLXZ
+  ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:)
 !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP3_DEVICE)
   CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_SUBGRID_WThv ) 
   IF (KRR>=1) THEN
 !$acc kernels
-    ZTMP1_DEVICE = PDR_DZ*ZFLXZ
+    ZTMP1_DEVICE(:,:,:) = PDR_DZ(:,:,:)*ZFLXZ(:,:,:)
 !$acc end kernels
     CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
     CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_RES_ddxa_Rt_SBG_UaThl )
@@ -965,13 +965,13 @@ IF (LLES_CALL) THEN
   !* diagnostic of mixing coefficient for heat
   CALL DZM_DEVICE(KKA,KKU,KKL,PTHLP,ZA)
 !$acc kernels
-  WHERE (ZA==0.) ZA=1.E-6
-  ZA = - ZFLXZ / ZA * PDZZ
+  WHERE (ZA(:,:,:)==0.) ZA(:,:,:)=1.E-6
+  ZA(:,:,:) = - ZFLXZ(:,:,:) / ZA(:,:,:) * PDZZ(:,:,:)
   ZA(:,:,IKB) = XCSHF*PPHI3(:,:,IKB)*ZKEFF(:,:,IKB)
 !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KKL, ZA, ZA )
 !$acc kernels
-  ZA = MIN(MAX(ZA,-1000.),1000.)
+  ZA(:,:,:) = MIN(MAX(ZA(:,:,:),-1000.),1000.)
 !$acc end kernels
   CALL LES_MEAN_SUBGRID( ZA, X_LES_SUBGRID_Kh   ) 
 !$acc end data
@@ -999,17 +999,17 @@ IF (KRR /= 0) THEN
   ! Compute the turbulent flux F and F' at time t-dt.
   !
 #ifndef MNH_OPENACC
-  ZF      (:,:,:) = -XCSHF*PPSI3*ZKEFF*DZM(KKA,KKU,KKL,PRM(:,:,:,1))/PDZZ
-  ZDFDDRDZ(:,:,:) = -XCSHF*ZKEFF*D_PSI3DRDZ_O_DDRDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV)
+  ZF      (:,:,:) = -XCSHF*PPSI3(:,:,:)*ZKEFF(:,:,:)*DZM(KKA,KKU,KKL,PRM(:,:,:,1))/PDZZ(:,:,:)
+  ZDFDDRDZ(:,:,:) = -XCSHF*ZKEFF(:,:,:)*D_PSI3DRDZ_O_DDRDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV)
 #else
   CALL DZM_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),ZTMP1_DEVICE)
   !$acc kernels
-  ZF      (:,:,:) = -XCSHF*PPSI3*ZKEFF*ZTMP1_DEVICE/PDZZ
+  ZF      (:,:,:) = -XCSHF*PPSI3(:,:,:)*ZKEFF(:,:,:)*ZTMP1_DEVICE(:,:,:)/PDZZ(:,:,:)
   !$acc end kernels
   CALL D_PSI3DRDZ_O_DDRDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV,ZTMP1_DEVICE)
 !CALL D_PHI3DRDZ_O_DDRDZ_DEVICE(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV,ZTMP1_DEVICE)
   !$acc kernels
-  ZDFDDRDZ(:,:,:) = -XCSHF*ZKEFF*ZTMP1_DEVICE
+  ZDFDDRDZ(:,:,:) = -XCSHF*ZKEFF(:,:,:)*ZTMP1_DEVICE(:,:,:)
   !$acc end kernels
 #endif
   !
@@ -1018,23 +1018,23 @@ IF (KRR /= 0) THEN
   ! d(w'2r')/dz
 #ifndef MNH_OPENACC
   IF (GFWR) THEN
-    Z3RDMOMENT= M3_WR_W2R(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,PTKEM)
+    Z3RDMOMENT(:,:,:)= M3_WR_W2R(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,PTKEM)
   !
-    ZF       = ZF       + Z3RDMOMENT * PFWR
-    ZDFDDRDZ = ZDFDDRDZ + D_M3_WR_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
-     & PBLL_O_E,PEMOIST,ZKEFF,PTKEM) * PFWR
+    ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * PFWR(:,:,:)
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_WR_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
+     & PBLL_O_E,PEMOIST,ZKEFF,PTKEM) * PFWR(:,:,:)
   END IF
 #else
   IF (GFWR) THEN
     CALL M3_WR_W2R(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,PTKEM,Z3RDMOMENT)
   !
   !$acc kernels
-    ZF       = ZF       + Z3RDMOMENT * PFWR
+    ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * PFWR(:,:,:)
   !$acc end kernels
     CALL D_M3_WR_W2R_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
      & PBLL_O_E,PEMOIST,ZKEFF,PTKEM,ZTMP1_DEVICE)
   !$acc kernels
-    ZDFDDRDZ = ZDFDDRDZ + ZTMP1_DEVICE * PFWR
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFWR(:,:,:)
   !$acc end kernels
   END IF
 #endif
@@ -1042,10 +1042,10 @@ IF (KRR /= 0) THEN
   ! d(w'r'2)/dz
 #ifndef MNH_OPENACC
   IF (GFR2) THEN
-    Z3RDMOMENT= M3_WR_WR2(PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST)
+    Z3RDMOMENT(:,:,:)= M3_WR_WR2(PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST)
   !
-    ZF       = ZF       + Z3RDMOMENT * MZM(KKA,KKU,KKL,PFR2)
-    ZDFDDRDZ = ZDFDDRDZ + D_M3_WR_WR2_O_DDRDZ(Z3RDMOMENT,PREDR1,&
+    ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * MZM(KKA,KKU,KKL,PFR2)
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_WR_WR2_O_DDRDZ(Z3RDMOMENT,PREDR1,&
      & PREDTH1,PD,PBLL_O_E,PEMOIST) * MZM(KKA,KKU,KKL,PFR2)
   END IF
 #else
@@ -1054,12 +1054,12 @@ IF (KRR /= 0) THEN
   !
     CALL MZM_DEVICE(PFR2,ZTMP1_DEVICE)
   !$acc kernels
-    ZF       = ZF       + Z3RDMOMENT * ZTMP1_DEVICE
+    ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * ZTMP1_DEVICE(:,:,:)
   !$acc end kernels
     CALL D_M3_WR_WR2_O_DDRDZ(Z3RDMOMENT,PREDR1,&
      & PREDTH1,PD,PBLL_O_E,PEMOIST,ZTMP2_DEVICE)
   !$acc kernels
-    ZDFDDRDZ = ZDFDDRDZ + ZTMP2_DEVICE * ZTMP1_DEVICE
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
   !$acc end kernels
   END IF
 #endif
@@ -1067,22 +1067,22 @@ IF (KRR /= 0) THEN
   ! d(w'2th')/dz
 #ifndef MNH_OPENACC
   IF (GFWTH) THEN
-    ZF       = ZF       + M3_WR_W2TH(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,&
-     & PTKEM,PBLL_O_E,PETHETA,PDR_DZ) * PFWTH
-    ZDFDDRDZ = ZDFDDRDZ + D_M3_WR_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,& 
-     & PD,ZKEFF,PTKEM,PBLL_O_E,PETHETA) * PFWTH
+    ZF(:,:,:)       = ZF(:,:,:)       + M3_WR_W2TH(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,&
+     & PTKEM,PBLL_O_E,PETHETA,PDR_DZ) * PFWTH(:,:,:)
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_WR_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,&
+     & PD,ZKEFF,PTKEM,PBLL_O_E,PETHETA) * PFWTH(:,:,:)
   END IF
 #else
   IF (GFWTH) THEN
     CALL M3_WR_W2TH(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,&
      & PTKEM,PBLL_O_E,PETHETA,PDR_DZ,ZTMP1_DEVICE)
   !$acc kernels
-    ZF       = ZF       + ZTMP1_DEVICE * PFWTH
+    ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * PFWTH(:,:,:)
   !$acc end kernels
     CALL D_M3_WR_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,& 
      & PD,ZKEFF,PTKEM,PBLL_O_E,PETHETA,ZTMP1_DEVICE)
   !$acc kernels
-    ZDFDDRDZ = ZDFDDRDZ + ZTMP1_DEVICE * PFWTH
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * PFWTH(:,:,:)
   !$acc end kernels
   END IF
 #endif
@@ -1090,9 +1090,9 @@ IF (KRR /= 0) THEN
   ! d(w'th'2)/dz
 #ifndef MNH_OPENACC
   IF (GFTH2) THEN
-    ZF       = ZF       + M3_WR_WTH2(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,PTKEM,&
+    ZF(:,:,:)       = ZF(:,:,:)       + M3_WR_WTH2(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,PTKEM,&
     & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDR_DZ) * MZM(KKA,KKU,KKL,PFTH2)
-    ZDFDDRDZ = ZDFDDRDZ + D_M3_WR_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_WR_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
      &ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA) * MZM(KKA,KKU,KKL,PFTH2)
   END IF
 #else
@@ -1101,12 +1101,12 @@ IF (KRR /= 0) THEN
     & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDR_DZ,ZTMP1_DEVICE)
     CALL MZM_DEVICE(PFTH2,ZTMP2_DEVICE)
   !$acc kernels
-    ZF       = ZF       + ZTMP1_DEVICE * ZTMP2_DEVICE
+    ZF(:,:,:)       = ZF(:,:,:)       + ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
     CALL D_M3_WR_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
      &ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,ZTMP1_DEVICE)
   !$acc kernels
-    ZDFDDRDZ = ZDFDDRDZ + ZTMP1_DEVICE * ZTMP2_DEVICE
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)
   !$acc end kernels
   END IF
 #endif
@@ -1114,11 +1114,11 @@ IF (KRR /= 0) THEN
   ! d(w'th'r')/dz
 #ifndef MNH_OPENACC
   IF (GFTHR) THEN
-    Z3RDMOMENT= M3_WR_WTHR(KKA,KKU,KKL,PREDTH1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,&
+    Z3RDMOMENT(:,:,:)= M3_WR_WTHR(KKA,KKU,KKL,PREDTH1,PD,ZKEFF,PTKEM,PSQRT_TKE,PBETA,&
      & PLEPS,PETHETA)
   !
-    ZF       = ZF       + Z3RDMOMENT * MZM(KKA,KKU,KKL,PFTHR)
-    ZDFDDRDZ = ZDFDDRDZ + D_M3_WR_WTHR_O_DDRDZ(KKA,KKU,KKL,Z3RDMOMENT,PREDR1, &
+    ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * MZM(KKA,KKU,KKL,PFTHR)
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + D_M3_WR_WTHR_O_DDRDZ(KKA,KKU,KKL,Z3RDMOMENT,PREDR1, &
      & PREDTH1,PD,PBLL_O_E,PEMOIST) * MZM(KKA,KKU,KKL,PFTHR)
   END IF
 #else
@@ -1128,12 +1128,12 @@ IF (KRR /= 0) THEN
   !
     CALL MZM_DEVICE(PFTHR,ZTMP1_DEVICE)
   !$acc kernels
-    ZF       = ZF       + Z3RDMOMENT * ZTMP1_DEVICE
+    ZF(:,:,:)       = ZF(:,:,:)       + Z3RDMOMENT(:,:,:) * ZTMP1_DEVICE(:,:,:)
   !$acc end kernels
     CALL D_M3_WR_WTHR_O_DDRDZ(KKA,KKU,KKL,Z3RDMOMENT,PREDR1, &
      & PREDTH1,PD,PBLL_O_E,PEMOIST,ZTMP2_DEVICE)
   !$acc kernels
-    ZDFDDRDZ = ZDFDDRDZ + ZTMP2_DEVICE * ZTMP1_DEVICE
+    ZDFDDRDZ(:,:,:) = ZDFDDRDZ(:,:,:) + ZTMP2_DEVICE(:,:,:) * ZTMP1_DEVICE(:,:,:)
   !$acc end kernels
   END IF
 #endif
@@ -1172,15 +1172,15 @@ IF (KRR /= 0) THEN
   ! cons. mixing ratio flux :
   !
 #ifndef MNH_OPENACC
-  ZFLXZ(:,:,:)   = ZF                                                &
-                 + PIMPL * ZDFDDRDZ * DZM(KKA,KKU,KKL,PRP - PRM(:,:,:,1)) / PDZZ
+  ZFLXZ(:,:,:)   = ZF(:,:,:)                                                &
+                 + PIMPL * ZDFDDRDZ(:,:,:) * DZM(KKA,KKU,KKL,PRP - PRM(:,:,:,1)) / PDZZ(:,:,:)
 #else
 !$acc kernels
-  ZTMP1_DEVICE = PRP - PRM(:,:,:,1)
+  ZTMP1_DEVICE(:,:,:) = PRP(:,:,:) - PRM(:,:,:,1)
 !$acc end kernels
   CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
 !$acc kernels
-  ZFLXZ(:,:,:)   = ZF + PIMPL * ZDFDDRDZ *ZTMP2_DEVICE / PDZZ 
+  ZFLXZ(:,:,:)   = ZF(:,:,:) + PIMPL * ZDFDDRDZ(:,:,:) *ZTMP2_DEVICE(:,:,:) / PDZZ(:,:,:)
 !$acc end kernels
 #endif
   !
@@ -1214,15 +1214,15 @@ IF (KRR /= 0) THEN
   !
   ! Contribution of the conservative water flux to the Buoyancy flux
 #ifndef MNH_OPENACC
-  ZA(:,:,:)   =  PBETA * MZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL,PEMOIST) * ZFLXZ )
+  ZA(:,:,:)   =  PBETA(:,:,:) * MZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL,PEMOIST) * ZFLXZ(:,:,:) )
 #else
   CALL MZM_DEVICE(PEMOIST,ZTMP1_DEVICE)
   !$acc kernels
-  ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLXZ
+  ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZFLXZ(:,:,:)
   !$acc end kernels
   CALL MZF_DEVICE(KKA,KKU,KKL, ZTMP2_DEVICE, ZTMP3_DEVICE )
   !$acc kernels
-  ZA(:,:,:)   =  PBETA * ZTMP3_DEVICE
+  ZA(:,:,:)   =  PBETA(:,:,:) * ZTMP3_DEVICE(:,:,:)
 #endif
   ZA(:,:,IKB) =  PBETA(:,:,IKB) * PEMOIST(:,:,IKB) *   &
                  0.5 * ( ZFLXZ (:,:,IKB) + ZFLXZ (:,:,IKB+KKL) )
@@ -1232,11 +1232,11 @@ IF (KRR /= 0) THEN
   ! Buoyancy flux at flux points
   ! 
 #ifndef MNH_OPENACC
-  PWTHV          = PWTHV          + MZM(KKA,KKU,KKL,PEMOIST) * ZFLXZ
+  PWTHV(:,:,:)          = PWTHV(:,:,:)          + MZM(KKA,KKU,KKL,PEMOIST) * ZFLXZ(:,:,:)
 #else
   CALL MZM_DEVICE(PEMOIST,ZTMP1_DEVICE)
   !$acc kernels
-  PWTHV          = PWTHV          + ZTMP1_DEVICE * ZFLXZ
+  PWTHV(:,:,:)          = PWTHV(:,:,:)          + ZTMP1_DEVICE(:,:,:) * ZFLXZ(:,:,:)
 #endif
   PWTHV(:,:,IKB) = PWTHV(:,:,IKB) + PEMOIST(:,:,IKB) * ZFLXZ(:,:,IKB)
   !$acc end kernels
@@ -1247,42 +1247,42 @@ IF (KRR /= 0) THEN
   IF ( KRRL >= 1 ) THEN
     IF ( KRRI >= 1 ) THEN
       PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
-                      DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ*PAMOIST*2.*PSRCM )*ZFLXZ/PDZZ )       &
+                      DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) &
                       *(1.0-PFRAC_ICE(:,:,:))
       PRRS(:,:,:,4) = PRRS(:,:,:,4) -                                        &
-                      DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ*PAMOIST*2.*PSRCM )*ZFLXZ/PDZZ )       &
+                      DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) ) &
                       *PFRAC_ICE(:,:,:)
     ELSE
       PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
-                      DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ*PAMOIST*2.*PSRCM )*ZFLXZ/PDZZ ) 
+                      DZF(KKA,KKU,KKL, MZM(KKA,KKU,KKL, PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) )*ZFLXZ(:,:,:)/PDZZ(:,:,:) )
     END IF
   END IF
 #else
   IF ( KRRL >= 1 ) THEN
     IF ( KRRI >= 1 ) THEN
 !$acc kernels
-      ZTMP1_DEVICE = PRHODJ*PAMOIST*2.*PSRCM
+      ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:)
 !$acc end kernels
       CALL MZM_DEVICE(ZTMP1_DEVICE, ZTMP2_DEVICE )
 !$acc kernels
-      ZTMP3_DEVICE = ZTMP2_DEVICE*ZFLXZ/PDZZ
+      ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLXZ(:,:,:)/PDZZ(:,:,:)
 !$acc end kernels
       CALL DZF_DEVICE(KKA,KKU,KKL, ZTMP3_DEVICE, ZTMP4_DEVICE )
 !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP4_DEVICE * (1.0-PFRAC_ICE(:,:,:))
-      PRRS(:,:,:,4) = PRRS(:,:,:,4) - ZTMP4_DEVICE * PFRAC_ICE(:,:,:)
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP4_DEVICE(:,:,:) * (1.0-PFRAC_ICE(:,:,:))
+      PRRS(:,:,:,4) = PRRS(:,:,:,4) - ZTMP4_DEVICE(:,:,:) * PFRAC_ICE(:,:,:)
 !$acc end kernels
     ELSE
 !$acc kernels
-      ZTMP1_DEVICE = PRHODJ*PAMOIST*2.*PSRCM
+      ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:)
 !$acc end kernels
       CALL MZM_DEVICE(ZTMP1_DEVICE, ZTMP2_DEVICE )
 !$acc kernels
-      ZTMP3_DEVICE = ZTMP2_DEVICE*ZFLXZ/PDZZ
+      ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLXZ(:,:,:)/PDZZ(:,:,:)
 !$acc end kernels
       CALL DZF_DEVICE(KKA,KKU,KKL, ZTMP3_DEVICE, ZTMP4_DEVICE )
 !$acc kernels
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP4_DEVICE 
+      PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP4_DEVICE(:,:,:)
 !$acc end kernels
     END IF
   END IF
@@ -1294,55 +1294,55 @@ IF (KRR /= 0) THEN
     CALL SECOND_MNH(ZTIME1)
 #ifndef MNH_OPENACC
     CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_WRt ) 
-    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM*ZFLXZ), X_LES_RES_W_SBG_WRt )
+    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PWM(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_W_SBG_WRt )
     CALL LES_MEAN_SUBGRID( GZ_W_M(KKA,KKU,KKL,PWM,PDZZ)*MZF(KKA,KKU,KKL,ZFLXZ),&
     & X_LES_RES_ddxa_W_SBG_UaRt )
-    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDTH_DZ*ZFLXZ), X_LES_RES_ddxa_Thl_SBG_UaRt )
-    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDR_DZ*ZFLXZ), X_LES_RES_ddxa_Rt_SBG_UaRt )
-    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MZM(KKA,KKU,KKL,PEMOIST)*ZFLXZ), X_LES_SUBGRID_WThv , .TRUE. ) 
-    CALL LES_MEAN_SUBGRID( -XCTP*PSQRT_TKE/PLM*MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_RtPz ) 
+    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDTH_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Thl_SBG_UaRt )
+    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,PDR_DZ(:,:,:)*ZFLXZ(:,:,:)), X_LES_RES_ddxa_Rt_SBG_UaRt )
+    CALL LES_MEAN_SUBGRID( MZF(KKA,KKU,KKL,MZM(KKA,KKU,KKL,PEMOIST)*ZFLXZ(:,:,:)), X_LES_SUBGRID_WThv , .TRUE. )
+    CALL LES_MEAN_SUBGRID( -XCTP*PSQRT_TKE(:,:,:)/PLM(:,:,:)*MZF(KKA,KKU,KKL,ZFLXZ), X_LES_SUBGRID_RtPz )
 #else
 !$acc data copy(X_LES_SUBGRID_WRt,X_LES_RES_W_SBG_WRt,X_LES_RES_ddxa_W_SBG_UaRt,X_LES_RES_ddxa_Thl_SBG_UaRt,&
 !$acc &         X_LES_RES_ddxa_Rt_SBG_UaRt,X_LES_SUBGRID_WThv,X_LES_SUBGRID_RtPz)
     CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP1_DEVICE)
-    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_WRt ) 
+    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_WRt )
     !
     !$acc kernels
-    ZTMP2_DEVICE = PWM*ZFLXZ
+    ZTMP2_DEVICE(:,:,:) = PWM(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP3_DEVICE)
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_W_SBG_WRt )
     !
     !$acc kernels
-    ZTMP1_DEVICE = PWM*ZFLXZ
+    ZTMP1_DEVICE(:,:,:) = PWM(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL GZ_W_M_DEVICE(KKA,KKU,KKL,PWM,PDZZ,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP2_DEVICE*ZTMP1_DEVICE
+    ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZTMP1_DEVICE(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_W_SBG_UaRt )
     !
     !$acc kernels
-    ZTMP2_DEVICE = PDTH_DZ*ZFLXZ
+    ZTMP2_DEVICE(:,:,:) = PDTH_DZ(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP3_DEVICE)
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaRt )
     !
     !$acc kernels
-    ZTMP2_DEVICE = PDR_DZ*ZFLXZ
+    ZTMP2_DEVICE(:,:,:) = PDR_DZ(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP2_DEVICE,ZTMP3_DEVICE)
     CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Rt_SBG_UaRt )
     !
     CALL MZM_DEVICE(PEMOIST,ZTMP2_DEVICE)
     !$acc kernels
-    ZTMP3_DEVICE = ZTMP2_DEVICE*ZFLXZ
+    ZTMP3_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL MZF_DEVICE(KKA,KKU,KKL,ZTMP3_DEVICE,ZTMP4_DEVICE)
     CALL LES_MEAN_SUBGRID( ZTMP4_DEVICE, X_LES_SUBGRID_WThv , .TRUE. ) 
     !
     !$acc kernels
-    ZTMP2_DEVICE = -XCTP*PSQRT_TKE/PLM*ZTMP1_DEVICE
+    ZTMP2_DEVICE(:,:,:) = -XCTP*PSQRT_TKE(:,:,:)/PLM(:,:,:)*ZTMP1_DEVICE(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_SUBGRID_RtPz ) 
 !$acc end data
@@ -1366,39 +1366,39 @@ IF ( ((OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
   !  
   ! recover the Conservative potential temperature flux : 
 #ifndef MNH_OPENACC
-  ZA(:,:,:)   = DZM(KKA,KKU,KKL,PIMPL * PTHLP + PEXPL * PTHLM) / PDZZ *       &
-                  (-PPHI3*MZM(KKA,KKU,KKL,PLM*PSQRT_TKE)) * XCSHF 
+  ZA(:,:,:)   = DZM(KKA,KKU,KKL,PIMPL * PTHLP(:,:,:) + PEXPL * PTHLM(:,:,:)) / PDZZ(:,:,:) *       &
+                  (-PPHI3(:,:,:)*MZM(KKA,KKU,KKL,PLM(:,:,:)*PSQRT_TKE(:,:,:))) * XCSHF
 #else
 !$acc kernels
-  ZTMP1_DEVICE = PIMPL * PTHLP + PEXPL * PTHLM
+  ZTMP1_DEVICE(:,:,:) = PIMPL * PTHLP(:,:,:) + PEXPL * PTHLM(:,:,:)
 !$acc end kernels
   CALL DZM_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE)
 !$acc kernels
-  ZTMP3_DEVICE = PLM*PSQRT_TKE
+  ZTMP3_DEVICE(:,:,:) = PLM(:,:,:)*PSQRT_TKE(:,:,:)
 !$acc end kernels
   CALL MZM_DEVICE(ZTMP3_DEVICE,ZTMP4_DEVICE)
 !$acc kernels
-  ZA(:,:,:)   = ZTMP2_DEVICE / PDZZ * (-PPHI3*ZTMP4_DEVICE) * XCSHF 
+  ZA(:,:,:)   = ZTMP2_DEVICE(:,:,:) / PDZZ(:,:,:) * (-PPHI3(:,:,:)*ZTMP4_DEVICE(:,:,:)) * XCSHF
 #endif
   ZA(:,:,IKB) = ( PIMPL*PSFTHP(:,:) + PEXPL*PSFTHM(:,:) ) * PDIRCOSZW(:,:)
 !$acc end kernels
   !  
   ! compute <w Rc>
 #ifndef MNH_OPENACC
-  ZFLXZ(:,:,:) = MZM(KKA,KKU,KKL, PAMOIST * 2.* PSRCM ) * ZFLXZ(:,:,:) + &
-                 MZM(KKA,KKU,KKL, PATHETA * 2.* PSRCM ) * ZA(:,:,:)
+  ZFLXZ(:,:,:) = MZM(KKA,KKU,KKL, PAMOIST(:,:,:) * 2.* PSRCM(:,:,:) ) * ZFLXZ(:,:,:) + &
+                 MZM(KKA,KKU,KKL, PATHETA(:,:,:) * 2.* PSRCM(:,:,:) ) * ZA(:,:,:)
 #else
   !$acc kernels
-  ZTMP1_DEVICE = PAMOIST * 2.* PSRCM
+  ZTMP1_DEVICE(:,:,:) = PAMOIST(:,:,:) * 2.* PSRCM(:,:,:)
   !$acc end kernels
   CALL MZM_DEVICE(ZTMP1_DEVICE, ZTMP2_DEVICE )
   !$acc kernels
-  ZTMP3_DEVICE =PATHETA * 2.* PSRCM
+  ZTMP3_DEVICE(:,:,:) =PATHETA(:,:,:) * 2.* PSRCM(:,:,:)
   !$acc end kernels
   CALL MZM_DEVICE(ZTMP3_DEVICE, ZTMP4_DEVICE )
   !$acc kernels
-  ZFLXZ(:,:,:) = ZTMP2_DEVICE * ZFLXZ(:,:,:) + &
-                 ZTMP4_DEVICE * ZA(:,:,:)
+  ZFLXZ(:,:,:) = ZTMP2_DEVICE(:,:,:) * ZFLXZ(:,:,:) + &
+                 ZTMP4_DEVICE(:,:,:) * ZA(:,:,:)
 #endif
   ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) 
   !$acc end kernels
@@ -1428,7 +1428,7 @@ IF ( ((OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
 #else
 !$acc data copy(X_LES_SUBGRID_WRc)
     CALL MZF_DEVICE(KKA,KKU,KKL,ZFLXZ,ZTMP1_DEVICE)
-    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_WRc ) 
+    CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_SUBGRID_WRc )
 !$acc end data
 #endif
     CALL SECOND_MNH(ZTIME2)