diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90
index f9e1c3202f6c79bf8072022d49d6c39dc19b0a4c..2ef2f3d1a5d6b98119c56f3e886b163eb47c033c 100644
--- a/src/MNH/turb_hor_thermo_flux.f90
+++ b/src/MNH/turb_hor_thermo_flux.f90
@@ -152,9 +152,8 @@ USE MODI_LES_MEAN_SUBGRID
 USE MODI_SECOND_MNH
 !
 #ifdef MNH_OPENACC
-USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D, &
-     MNH_ALLOCATE_ZT4D , MNH_REL_ZT4D, &
-     MNH_CHECK_IN_ZT3D,MNH_CHECK_OUT_ZT3D
+USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_FLAT, MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP, &
+                            MNH_RELEASE_FLAT, MNH_CHECK_IN_ZT3D, MNH_CHECK_OUT_ZT3D
 #endif
 !
 IMPLICIT NONE
@@ -286,8 +285,8 @@ allocate( zflxc(JIU,JJU,JKU) )
 allocate( zcoeff(JIU,JJU, 1 + jpvext : 3 + jpvext ) )
 #else
 CALL  MNH_CHECK_IN_ZT3D("TURB_HOR_THERMO_FLUX")
-izflx  = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU )
-izflxc = MNH_ALLOCATE_ZT3D( zflxc,JIU,JJU,JKU )
+izflx  = MNH_ALLOCATE_FLAT( zflx,  1, JIU, 1, JJU,1, JKU )
+izflxc = MNH_ALLOCATE_FLAT( zflxc, 1, JIU, 1, JJU,1, JKU )
 ! izvptv= MNH_ALLOCATE_ZT3D( zvptv,JIU,JJU,JKU )
 
 izcoeff= MNH_ALLOCATE_ZT3DP( zcoeff,JIU,JJU, 1 + jpvext , 3 + jpvext )
@@ -1449,7 +1448,7 @@ IF (KRR/=0) THEN
            +ZCOEFF(:,:,IKB  :IKB  )*PRM(:,:,IKB  :IKB  ,1) )     &
            *0.5* ( PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB))      &
           * PINV_PDYY(:,:,IKB:IKB) )
-! extrapolates the flux under the ground so that the vertical average with 
+! extrapolates the flux under the ground so that the vertical average with
 ! the IKB flux gives the ground value  ( warning the tangential surface
 ! flux has been set to 0 for the moment !!  to be improved )
   ZFLX(:,:,IKB-1:IKB-1) = 2. * MYM(  SPREAD( PSFRM(:,:)* PDIRCOSYW(:,:), 3,1) ) &
@@ -1472,42 +1471,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( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF(                       &
-                                               PDZY(:,:,:)*(MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) ) )&
+      ZFLXC(:,:,:) = ZFLXC(:,:,:)                                                                    &
+            + 2.*( MXF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:) )               &
+                +  MZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF(                        &
+                                               PDZY(:,:,:)*(MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) ) ) &
                  )
       IF ( KRRI >= 1 ) THEN
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )                        &
-         + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* &
-           (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )&
-                                           * PINV_PDZZ(:,:,:) )                       &
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                            &
+        (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY ) &
+         + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)*       &
+           (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )                                       &
+                                           * PINV_PDZZ(:,:,:) )                          &
         )*(1.0-PFRAC_ICE(:,:,:))
-        PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. *                                  &
-        (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )                        &
-         + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* &
-           (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )&
-                                           * PINV_PDZZ(:,:,:) )                       &
+        PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. *                                            &
+        (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY ) &
+         + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)*       &
+           (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )                                       &
+                                           * PINV_PDZZ(:,:,:) )                          &
         )*PFRAC_ICE(:,:,:)
       ELSE
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )                        &
-         + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)* &
-           (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )&
-                                           * PINV_PDZZ(:,:,:) )                       &
+        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                            &
+        (- DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY ) &
+         + DZF( MZM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*MYF( PDZY(:,:,:)*       &
+           (MZM( ZFLX(:,:,:)*PINV_PDYY(:,:,:) )) )                                       &
+                                           * PINV_PDZZ(:,:,:) )                          &
         )
       END IF
     ELSE
       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(:,:,:)*PINV_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(:,:,:)*PINV_PDYY )*PFRAC_ICE(:,:,:)
       ELSE
         PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. *                                   &
-        DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)/PDYY )
+        DYF( MYM( PRHODJ(:,:,:)*PAMOIST(:,:,:)*PSRCM(:,:,:) )*ZFLX(:,:,:)*PINV_PDYY )
       END IF
     END IF
   END IF
@@ -1587,7 +1586,7 @@ IF (KRR/=0) THEN
                  *0.5* ( PDZY(:,:,IKB+1)+PDZY(:,:,IKB))  &
                  * PINV_PDYY(:,:,IKB) )
   !$acc end kernels
-! extrapolates the flux under the ground so that the vertical average with 
+! extrapolates the flux under the ground so that the vertical average with
 ! the IKB flux gives the ground value  ( warning the tangential surface
 ! flux has been set to 0 for the moment !!  to be improved )
   !$acc kernels
@@ -1597,7 +1596,7 @@ IF (KRR/=0) THEN
   !$acc kernels
   ZFLX(:,:,IKB-1) = 2. * ZTMP2_DEVICE(:,:,1) - ZFLX(:,:,IKB)
   !$acc end kernels
-  !
+!
   ! Add this source to the conservative mixing ratio sources
   !
   IF (.NOT. L2D) THEN 
@@ -1854,7 +1853,9 @@ end if
 #ifndef MNH_OPENACC
 deallocate (zflx,zflxc,zcoeff)
 #else
-CALL MNH_REL_ZT3D ( IZFLX, IZFLXC, IZCOEFF,                                    &
+CALL MNH_RELEASE_FLAT( IZFLXC )
+CALL MNH_RELEASE_FLAT( IZFLX  )
+CALL MNH_REL_ZT3D ( IZCOEFF,                                    &
                     IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, &
                     IZTMP5_DEVICE, IZTMP6_DEVICE, IZTMP7_DEVICE, IZTMP8_DEVICE  )
 CALL MNH_CHECK_OUT_ZT3D("TURB_HOR_THERMO_FLUX")
diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90
index e3545d44f0954600dbaff802e26679e1aa1c4d80..4ddaec46cce4aea2524111b817e8efd38c67979c 100644
--- a/src/MNH/turb_ver_thermo_flux.f90
+++ b/src/MNH/turb_ver_thermo_flux.f90
@@ -992,6 +992,9 @@ IF (LOCEAN) THEN
   ZFLXZ(:,:,KKU) = ZFLXZ(:,:,IKE)
 END IF
 !  
+PWTH(:,:,:IKTB) = XUNDEF
+PWTH(:,:,IKTE:) = XUNDEF
+!
 DO JK=IKTB+1,IKTE-1
   PWTH(:,:,JK)=0.5*(ZFLXZ(:,:,JK)+ZFLXZ(:,:,JK+KKL))
 END DO
@@ -1548,6 +1551,8 @@ END DO
     DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU)
       ZA(JI,JJ,JK)   =  PBETA(JI,JJ,JK) * ZTMP3_DEVICE(JI,JJ,JK)
     END DO
+!$acc end kernels
+!$acc kernels
 #endif
     ZA(:,:,IKB) =  PBETA(:,:,IKB) * PEMOIST(:,:,IKB) *   &
                    0.5 * ( ZFLXZ (:,:,IKB) + ZFLXZ (:,:,IKB+KKL) )