diff --git a/src/MNH/condensation.f90 b/src/MNH/condensation.f90
index a92e8dc74e71b26338cd3b7d2baee72750022920..a11aa885844b8275acc19f7ada5fa0da08fa305d 100644
--- a/src/MNH/condensation.f90
+++ b/src/MNH/condensation.f90
@@ -399,7 +399,7 @@ IKTB=1+JPVEXT
 IKTE=KKU-JPVEXT
 !
 !
-!$acc kernels
+!$acc kernels present_cr(zrt)
 PCLDFR(:,:,:) = 0. ! Initialize values
 PSIGRC(:,:,:) = 0. ! Initialize values
 !
@@ -412,13 +412,13 @@ PSIGRC(:,:,:) = 0. ! Initialize values
 ! latent heat of vaporisation/sublimation
 IF(GPRESENT_PLV .AND. GPRESENT_PLS) THEN
 !$acc data present( PLV, PLS )
-!$acc kernels
+!$acc kernels present_cr(zlv,zls)
   ZLV(:,:,:)=PLV(:,:,:)
   ZLS(:,:,:)=PLS(:,:,:)
 !$acc end kernels
 !$acc end data
 ELSE
-!$acc kernels
+!$acc kernels present_cr(zlv,zls)
   ! latent heat of vaporisation/sublimation
   ZLV(KIB:KIE,KJB:KJE,IKTB:IKTE) = XLVTT + ( XCPV - XCL ) * ( PT(KIB:KIE,KJB:KJE,IKTB:IKTE) - XTT )
   ZLS(KIB:KIE,KJB:KJE,IKTB:IKTE) = XLSTT + ( XCPV - XCI ) * ( PT(KIB:KIE,KJB:KJE,IKTB:IKTE) - XTT )
@@ -426,12 +426,12 @@ ELSE
 ENDIF
 IF(GPRESENT_PCPH) THEN
 !$acc data present( PCPH )
-!$acc kernels
+!$acc kernels present_cr(zcpd)
   ZCPD(:,:,:)=PCPH(:,:,:)
 !$acc end kernels
 !$acc end data
 ELSE
-!$acc kernels
+!$acc kernels present_cr(zcpd)
      ZCPD(KIB:KIE,KJB:KJE,IKTB:IKTE) = XCPD + XCPV*PRV(KIB:KIE,KJB:KJE,IKTB:IKTE) &
               + XCL*PRC(KIB:KIE,KJB:KJE,IKTB:IKTE) + XCI*PRI(KIB:KIE,KJB:KJE,IKTB:IKTE) &
               + XCI*(PRS(KIB:KIE,KJB:KJE,IKTB:IKTE) + PRG(KIB:KIE,KJB:KJE,IKTB:IKTE) )
@@ -441,7 +441,7 @@ ENDIF
 !acc kernels
 ! Preliminary calculations needed for computing the "turbulent part" of Sigma_s
 IF ( .NOT. OSIGMAS ) THEN
-!$acc kernels
+!$acc kernels present_cr(ztmin,zzzp)
   ! store temperature at saturation
   ZTLK(KIB:KIE,KJB:KJE,IKTB:IKTE) =  PT(KIB:KIE,KJB:KJE,IKTB:IKTE) &
               - ZLV(KIB:KIE,KJB:KJE,IKTB:IKTE)*PRC(KIB:KIE,KJB:KJE,IKTB:IKTE)/ZCPD(KIB:KIE,KJB:KJE,IKTB:IKTE) &
diff --git a/src/MNH/sources_neg_correct.f90 b/src/MNH/sources_neg_correct.f90
index d27079dd00da2092e883ce0ba6d696d80beec495..f08c426fa5cbf672b38da78df30c33a1e0abb2e3 100644
--- a/src/MNH/sources_neg_correct.f90
+++ b/src/MNH/sources_neg_correct.f90
@@ -276,7 +276,7 @@ CLOUD: select case ( hcloud )
     jrmax = Size( prrs, 4 )
     do jr = 2, jrmax
 !PW: kernels directive inside do loop on jr because compiler bug... (NVHPC 21.7)
-!$acc kernels
+!$acc kernels present_cr(zexn,zcph,zlv)
       where ( prrs(:, :, :, jr) < 0. )
         prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, jr)
         prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, jr) * zlv(:, :, :) /  &
@@ -286,7 +286,7 @@ CLOUD: select case ( hcloud )
 !$acc end kernels
     end do
 
-!$acc kernels
+!$acc kernels present_cr(zexn,zcph,zlv)
     where ( prrs(:, :, :, 1) < 0. .and. prrs(:, :, :, 2) > 0. )
       prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 2)
       prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 2) * zlv(:, :, :) /  &
@@ -368,7 +368,7 @@ CLOUD: select case ( hcloud )
     end where
 !$acc end kernels
     do jsv = 2, 3
-!$acc kernels
+!$acc kernels present_cr(zexn,zcph,zlv)
 !PW: kernels directive inside do loop on jr because compiler bug... (NVHPC 21.7)
       where ( prrs(:, :, :, jsv) < 0. .or. prsvs(:, :, :, nsv_c2r2beg - 1 + jsv) < 0. )
         prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, jsv)
@@ -379,7 +379,7 @@ CLOUD: select case ( hcloud )
       end where
 !$acc end kernels
     end do
-!$acc kernels
+!$acc kernels present_cr(zexn,zcph,zlv)
     where ( prrs(:, :, :, 1) < 0. .and. prrs(:, :, :, 2) > 0. )
       prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 2)
       prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 2) * zlv(:, :, :) /  &
@@ -391,7 +391,7 @@ CLOUD: select case ( hcloud )
 !
 !
   case( 'LIMA' )
-!$acc kernels
+!$acc kernels present_cr(zexn,zcph,zlv)
 ! Correction where rc<0 or Nc<0
     if ( lwarm_lima ) then
       where ( prrs(:, :, :, 2) < xrtmin_lima(2) / ptstep .or. prsvs(:, :, :, nsv_lima_nc) < xctmin_lima(2) / ptstep )
@@ -422,7 +422,7 @@ CLOUD: select case ( hcloud )
 !$acc end kernels
 ! Correction where ri<0 or Ni<0
     if ( lcold_lima ) then
-!$acc kernels
+!$acc kernels present_cr(zexn,zcph,zls)
       where ( prrs(:, :, :, 4) < xrtmin_lima(4) / ptstep .or. prsvs(:, :, :, nsv_lima_ni) < xctmin_lima(4) / ptstep )
         prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, 4)
         prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, 4) * zls(:, :, :) /  &
@@ -434,7 +434,7 @@ CLOUD: select case ( hcloud )
       if ( hbudname /= 'NETUR' ) then
         do jr = 5, Size( prrs, 4 )
 !PW: kernels directive inside do loop on jr because compiler bug... (NVHPC 21.7)
-!$acc kernels
+!$acc kernels present_cr(zexn,zcph,zls)
           where ( prrs(:, :, :, jr) < 0. )
             prrs(:, :, :, 1) = prrs(:, :, :, 1) + prrs(:, :, :, jr)
             prths(:, :, :) = prths(:, :, :) - prrs(:, :, :, jr) * zls(:, :, :) /  &
@@ -445,7 +445,7 @@ CLOUD: select case ( hcloud )
         end do
       end if
       if(krr > 3) then
-!$acc kernels
+!$acc kernels present_cr(zcor,zexn,zcph,zls)
         where ( prrs(:, :, :, 1) < 0. .and. prrs(:, :, :, 4) > 0. )
           zcor(:, :, :) = Min( -prrs(:, :, :, 1), prrs(:, :, :, 4) )
           prrs(:, :, :, 1) = prrs(:, :, :, 1) + zcor(:, :, :)
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index 7ff9e29c6ac83295cab74bcf501e001167e185f5..f26a7b23ea08818f6338911fdc7c8e3ab197eb0d 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -712,7 +712,7 @@ GTURBLEN_BL89_TURBLEN_RM17_TURBLEN_ADAP_ORMC01 = &
      HTURBLEN=='BL89' .OR. HTURBLEN=='RM17' .OR. HTURBLEN == 'ADAP' .OR. ORMC01
 !
 !$acc update device(PTHLT,PRT)
-!$acc kernels present_cr(ZCOEF_DISS,ZTHLM,ZRM)
+!$acc kernels present_cr(ZCOEF_DISS,ZTHLM,ZRM,zcp)
 !Copy data into ZTHLM and ZRM only if needed
 IF (HTURBLEN=='BL89' .OR. HTURBLEN=='RM17' .OR. HTURBLEN=='ADAP' .OR. ORMC01) THEN
   DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
diff --git a/src/MNH/turb_ver_thermo_corr.f90 b/src/MNH/turb_ver_thermo_corr.f90
index a97503d7cbd8d6eb37bdc193b8c8dad8318d1742..993a048fc250e3829cf477033ed45232b54e4f2e 100644
--- a/src/MNH/turb_ver_thermo_corr.f90
+++ b/src/MNH/turb_ver_thermo_corr.f90
@@ -715,7 +715,7 @@ END IF
   !             *DZM(PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:)                                        ) &
         + PIMPL * ZDFDDTDZ(:,:,:) * MZF(DZM(PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) )
 #else
-  !$acc kernels  
+  !$acc kernels present_cr(ztmp1_device)
   ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:)
   !$acc end kernels
   CALL DZM_DEVICE( ZTMP1_DEVICE(:,:,:), ZTMP2_DEVICE(:,:,:) )
@@ -820,22 +820,22 @@ END IF
     CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_Thl2 )
     !
     CALL  MZF_DEVICE( PWM(:,:,:), ZTMP1_DEVICE(:,:,:) )
-    !$acc kernels
+    !$acc kernels present_cr(ztmp2_device)
     ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE(:,:,:), X_LES_RES_W_SBG_Thl2 )
     !
-    !$acc kernels
+    !$acc kernels present_cr(ztmp1_device)
     ZTMP1_DEVICE(:,:,:) = -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_DISS_Thl2 )
     !
-    !$acc kernels
+    !$acc kernels present_cr(ztmp1_device)
     ZTMP1_DEVICE(:,:,:) = PETHETA(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_ThlThv )
     !
-    !$acc kernels
+    !$acc kernels present_cr(ztmp1_device)
     ZTMP1_DEVICE(:,:,:) = -XA3*PBETA(:,:,:)*PETHETA(:,:,:)*ZFLXZ(:,:,:)
     !$acc end kernels
     CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_ThlPz, .TRUE. )
@@ -1045,7 +1045,7 @@ END IF
         + PIMPL * ZDFDDTDZ(:,:,:) * MZF(DZM(PTHLP(:,:,:) - PTHLM(:,:,:)) / PDZZ(:,:,:) )         &
         + PIMPL * ZDFDDRDZ(:,:,:) * MZF(DZM(PRP(:,:,:)   - PRM(:,:,:,1)) / PDZZ(:,:,:) )
 #else
-    !$acc kernels
+    !$acc kernels present_cr(ztmp1_device,ztmp2_device)
     ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:)
     ZTMP2_DEVICE(:,:,:) = PRP(:,:,:)   - PRM(:,:,:,1)
     !$acc end kernels
@@ -1069,7 +1069,7 @@ END IF
                             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
+    !$acc kernels present_cr(ztmp1_device,ztmp8_device)
     ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:)
     ZTMP8_DEVICE(:,:,:) = PRP(:,:,:)   - PRM(:,:,:,1)
     !$acc end kernels
@@ -1088,7 +1088,7 @@ END IF
     END DO
     !$acc end kernels
     !!!
-    !$acc kernels
+    !$acc kernels present_cr(ztmp1_device,ztmp2_device)
     ZTMP1_DEVICE(:,:,:) = PTHLP(:,:,:) - PTHLM(:,:,:)
     ZTMP2_DEVICE(:,:,:) = PRP(:,:,:)   - PRM(:,:,:,1)
     !$acc end kernels
@@ -1107,7 +1107,7 @@ END IF
     CALL MZF_DEVICE( ZTMP7_DEVICE(:,:,:), ZTMP3_DEVICE(:,:,:) )
     CALL MZF_DEVICE( ZTMP1_DEVICE(:,:,:), ZTMP4_DEVICE(:,:,:) )
     CALL MZF_DEVICE( ZTMP2_DEVICE(:,:,:), ZTMP5_DEVICE(:,:,:) )
-    !$acc kernels
+    !$acc kernels  present_cr(zflxz)
 #ifdef MNH_COMPILER_NVHPC
     !$acc loop independent collapse(3)
 #endif
@@ -1185,32 +1185,32 @@ END IF
       CALL LES_MEAN_SUBGRID( ZFLXZ(:,:,:), X_LES_SUBGRID_THlRt )
       !
       CALL MZF_DEVICE( PWM(:,:,:), ZTMP1_DEVICE(:,:,:) )
-      !$acc kernels
+      !$acc kernels present_cr(ztmp2_device)
       ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE(:,:,:), X_LES_RES_W_SBG_ThlRt )
       !
-      !$acc kernels
+      !$acc kernels present_cr(ztmp1_device)
       ZTMP1_DEVICE(:,:,:) = -2.*XCTD*PSQRT_TKE(:,:,:)*ZFLXZ(:,:,:)/PLEPS(:,:,:)
       !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_DISS_ThlRt )
       !
-      !$acc kernels
+      !$acc kernels present_cr(ztmp1_device)
       ZTMP1_DEVICE(:,:,:) = PETHETA(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_RtThv )
       !
-      !$acc kernels
+      !$acc kernels present_cr(ztmp1_device)
       ZTMP1_DEVICE(:,:,:) = -XA3*PBETA(:,:,:)*PETHETA(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_RtPz, .TRUE. )
       !
-      !$acc kernels
+      !$acc kernels present_cr(ztmp1_device)
       ZTMP1_DEVICE(:,:,:) = PEMOIST(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_ThlThv , .TRUE. )
       !
-      !$acc kernels
+      !$acc kernels present_cr(ztmp1_device)
       ZTMP1_DEVICE(:,:,:) = -XA3*PBETA(:,:,:)*PEMOIST(:,:,:)*ZFLXZ(:,:,:)
       !$acc end kernels
       CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE(:,:,:), X_LES_SUBGRID_ThlPz, .TRUE. )
@@ -1391,7 +1391,7 @@ END IF
 #else
     CALL D_PSI3DRDZ2_O_DDRDZ(PPSI3(:,:,:),PREDR1(:,:,:),PREDTH1(:,:,:),PRED2R3(:,:,:),PRED2THR3(:,:,:),PDR_DZ(:,:,:), &
                              HTURBDIM,GUSERV,ZTMP1_DEVICE(:,:,:))
-    !$acc kernels
+    !$acc kernels present_cr(ztmp2_device)
     ZTMP2_DEVICE(:,:,:) = PRP(:,:,:) - PRM(:,:,:,1)
     !$acc end kernels
     CALL DZM_DEVICE( ZTMP2_DEVICE(:,:,:), ZTMP3_DEVICE(:,:,:) )
diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90
index 62bff9543488fe3c66f1293995e814969a17bead..bf4f25c3eebe12f619637c6f5343249d176d59e2 100644
--- a/src/MNH/turb_ver_thermo_flux.f90
+++ b/src/MNH/turb_ver_thermo_flux.f90
@@ -703,7 +703,7 @@ IF(LHGRAD) THEN
 #ifdef MNH_OPENACC
   call Print_msg( NVERB_FATAL, 'GEN', 'TURB_VER_THERMO_FLUX', 'OpenACC: LHGRAD=T not yet implemented' )
 #endif
-!$acc kernels
+!$acc kernels present_cr(zcld_thold)
   IF ( KRRL >= 1 ) THEN
     IF ( KRRI >= 1 ) THEN
       ZCLD_THOLD(:,:,:) = PRM(:,:,:,2) + PRM(:,:,:,4)
@@ -929,7 +929,7 @@ ELSE  ! No coupling O and A cases
   END IF
 !
   IF (GOCEAN) THEN
-!$acc kernels
+!$acc kernels present_cr(zf)
     ZF(:,:,IKE) = XSSTFL(:,:) *0.5*(1. + PRHODJ(:,:,KKU) / PRHODJ(:,:,IKE))
 !$acc end kernels
   ELSE !end ocean case (in nocoupled case)
@@ -1427,13 +1427,13 @@ IF (KRR /= 0) THEN
     ! is taken into account in the vertical part
     !
     IF (HTURBDIM=='3DIM') THEN
-!$acc kernels present_cr(ZF)
+!$acc kernels present_cr(zf)
       ZF(:,:,IKB) = ( PIMPL*PSFRP(:,:) + PEXPL*PSFRM(:,:) )       &
                            * PDIRCOSZW(:,:)                       &
                          * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
 !$acc end kernels
     ELSE
-!$acc kernels
+!$acc kernels present_cr(zf)
       ZF(:,:,IKB) = ( PIMPL*PSFRP(:,:) + PEXPL*PSFRM(:,:) )     &
                          / PDIRCOSZW(:,:)                       &
                          * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
@@ -1503,7 +1503,7 @@ END DO
   !
   ! replace the flux by the Leonard terms above ZALT and ZCLD_THOLD
   IF (LHGRAD) THEN
-!$acc kernels
+!$acc kernels present_cr(zf_new,zflxz)
    WHERE ( (ZCLD_THOLD(:,:,:) >= ZCLDTHOLD ) .AND. ( ZALT(:,:,:) >= ZALTHGRAD ) )
     ZFLXZ(:,:,:) = ZF_NEW(:,:,:)
    END WHERE
@@ -1736,7 +1736,7 @@ IF ( ((OTURB_FLX .AND. tpfile%lopened) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
   ZA(:,:,:)   = DZM(PIMPL * PTHLP(:,:,:) + PEXPL * PTHLM(:,:,:)) / PDZZ(:,:,:) *       &
                   (-PPHI3(:,:,:)*MZM(PLM(:,:,:)*PSQRT_TKE(:,:,:))) * XCSHF
 #else
-!$acc kernels
+!$acc kernels present_cr(ztmp1_device)
   ZTMP1_DEVICE(:,:,:) = PIMPL * PTHLP(:,:,:) + PEXPL * PTHLM(:,:,:)
 !$acc end kernels
   CALL DZM_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE )