diff --git a/src/ZSOLVER/advection_metsv.f90 b/src/ZSOLVER/advection_metsv.f90
index e7b76ef20d5abcb4f2c7d6d183c1474cf5e8c8bd..69e17922982cf95d6ab8f49d94c0b981b50eb1f5 100644
--- a/src/ZSOLVER/advection_metsv.f90
+++ b/src/ZSOLVER/advection_metsv.f90
@@ -191,7 +191,7 @@ USE MODI_ADV_BOUNDARIES
 #if defined(MNH_BITREP) || defined(MNH_BITREP_OMP)
 USE MODI_BITREP
 #endif
-#ifdef MNH_BITREP_OMP
+#ifdef MNH_COMPILER_CCE
 !$mnh_undef(LOOP)
 !$mnh_undef(OPENACC)
 #endif
diff --git a/src/ZSOLVER/advecuvw_rk.f90 b/src/ZSOLVER/advecuvw_rk.f90
index 783da5c8106d8c50a9f5df5731e3c18f7f18b866..e702792924df7aca7e38368376c30c4c3ffb0b34 100644
--- a/src/ZSOLVER/advecuvw_rk.f90
+++ b/src/ZSOLVER/advecuvw_rk.f90
@@ -463,7 +463,7 @@ INBVAR = 3
 CALL INIT_HALO2_ll(TZHALO2MT_ll,INBVAR,SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3))
 #endif
 !
-!$acc kernels
+!$acc kernels present_cr(ZRUS,ZRVS,ZRWS)
 ZRUS(:, :, :, : ) = 0.
 ZRVS(:, :, :, : ) = 0.
 ZRWS(:, :, :, : ) = 0.
diff --git a/src/ZSOLVER/modeln.f90 b/src/ZSOLVER/modeln.f90
index ce37ab13b86dab14b34389ce438acddfa791483b..4f635b6ff3a2f6bceebe945be752984869292266 100644
--- a/src/ZSOLVER/modeln.f90
+++ b/src/ZSOLVER/modeln.f90
@@ -1690,7 +1690,7 @@ CALL GRAVITY_IMPL ( CLBCX, CLBCY, NRR, NRRL, NRRI,XTSTEP,            &
 ! compensated by the pressure gradient
 !
 IF (KTCOUNT == 1 .AND. CCONF=='START') THEN
-!$acc kernels present( ZRWS )
+!$acc kernels present( ZRWS,XRWS_PRES)
   XRWS_PRES(:,:,:) = ZRWS(:,:,:) - XRWS(:,:,:)
 !$acc end kernels
 END IF
@@ -1852,7 +1852,7 @@ ZPABST(:,:,:) = XPABST(:,:,:)
 !
 IF(.NOT. L1D) THEN
 !
-   !$acc kernels ! present(XRUS_PRES,XRVS_PRES,XRWS_PRES)   
+   !$acc kernels present(XRUS,XRVS,XRWS) !present(XRUS_PRES,XRVS_PRES,XRWS_PRES)   
    XRUS_PRES(:,:,:) = XRUS(:,:,:)
    XRVS_PRES(:,:,:) = XRVS(:,:,:)
    XRWS_PRES(:,:,:) = XRWS(:,:,:)
@@ -1871,7 +1871,7 @@ IF(.NOT. L1D) THEN
                   XA_K,XB_K,XC_K,XD_K) !JUAN FULL ZSOLVER
    !
    !$acc update host(XPABST)
-   !$acc kernels ! present(XRUS_PRES,XRVS_PRES,XRWS_PRES)  
+   !$acc kernels present(XRUS,XRVS,XRWS) !present(XRUS_PRES,XRVS_PRES,XRWS_PRES)  
    XRUS_PRES(:,:,:) = XRUS(:,:,:) - XRUS_PRES(:,:,:) + ZRUS(:,:,:)
    XRVS_PRES(:,:,:) = XRVS(:,:,:) - XRVS_PRES(:,:,:) + ZRVS(:,:,:)
    XRWS_PRES(:,:,:) = XRWS(:,:,:) - XRWS_PRES(:,:,:) + ZRWS(:,:,:)
diff --git a/src/ZSOLVER/pressurez.f90 b/src/ZSOLVER/pressurez.f90
index 16e5cded61f9ab76926de0ce89f6b4912e50c49f..b91bb89c2dfe822b9629183f617ef126a68c9922 100644
--- a/src/ZSOLVER/pressurez.f90
+++ b/src/ZSOLVER/pressurez.f90
@@ -537,9 +537,18 @@ END IF
 !              --------------------------------------------------
 !
 IF (LIBM) THEN
-  WHERE(XIBM_LS(:,:,:,2).GT.-XIBM_EPSI) PRUS(:,:,:) = 0.
-  WHERE(XIBM_LS(:,:,:,3).GT.-XIBM_EPSI) PRVS(:,:,:) = 0.
-  WHERE(XIBM_LS(:,:,:,4).GT.-XIBM_EPSI) PRWS(:,:,:) = 0.
+  WHERE(XIBM_LS(:,:,:,2).GT.-XIBM_EPSI)
+         !dir$ safe_address
+          PRUS(:,:,:) = 0.
+  ENDWHERE
+  WHERE(XIBM_LS(:,:,:,3).GT.-XIBM_EPSI) 
+          !dir$ safe_address
+          PRVS(:,:,:) = 0.
+  ENDWHERE
+  WHERE(XIBM_LS(:,:,:,4).GT.-XIBM_EPSI)
+         !dir$ safe_address
+          PRWS(:,:,:) = 0.
+  ENDWHERE
 ENDIF
 !
 IF (MPPDB_INITIALIZED) THEN
diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90
index a7d1b3cc7d148954f83cb688fa99003bdad3a5b5..a173a86c6f031343af90f2246e7002e168755fd8 100644
--- a/src/ZSOLVER/turb.f90
+++ b/src/ZSOLVER/turb.f90
@@ -14,7 +14,7 @@ module mode_turb
 #if defined(MNH_BITREP) || defined(MNH_BITREP_OMP)
 use modi_bitrep
 #endif
-#ifdef MNH_BITREP_OMP
+#ifdef MNH_COMPILER_CCE
 !$mnh_undef(LOOP)
 !$mnh_undef(OPENACC)  
 #endif
@@ -714,15 +714,18 @@ 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,zcp)
 !Copy data into ZTHLM and ZRM only if needed
 IF (GTURBLEN_BL89_TURBLEN_RM17_TURBLEN_ADAP_ORMC01) THEN
-   DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) 
-      ZTHLM(JI,JJ,JK) = PTHLT(JI,JJ,JK)
-      ZRM(JI,JJ,JK,:) = PRT(JI,JJ,JK,:)
-   END DO
+!$acc kernels present_cr(ZTHLM,ZRM)
+  ZTHLM(:,:,:) = PTHLT(:,:,:)
+  ZRM(:,:,:,:) = PRT(:,:,:,:)
+  !DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) 
+      !ZTHLM(JI,JJ,JK) = PTHLT(JI,JJ,JK)
+      !ZRM(JI,JJ,JK,:) = PRT(JI,JJ,JK,:)
+  !END DO
+!$acc end kernels
 END IF
-!
+!$acc kernels present_cr(ZTRH,ZCOEF_DISS,ZTHLM,ZRM,zcp)
 ZTRH(:, :, : ) = XUNDEF
 !
 !----------------------------------------------------------------------------
@@ -807,7 +810,7 @@ IF (KRRL >=1) THEN
     CALL COMPUTE_FUNCTION_THERMO(XALPI,XBETAI,XGAMI,XLSTT,XCI,ZT,ZEXN,ZCP, &
                                  ZLSOCPEXNM,ZAMOIST_ICE,ZATHETA_ICE)
 !
-!$acc kernels present( zamoist, zatheta, zlocpexnm, zlvocpexnm, zlsocpexnm, zamoist_ice, zatheta_ice )    
+!$acc kernels present_cr( zamoist, zatheta, zlocpexnm, zlvocpexnm, zlsocpexnm, zamoist_ice, zatheta_ice )    
     DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
        IF (PRT(JI,JJ,JK,2)+PRT(JI,JJ,JK,4)>0.0) THEN
           ZFRAC_ICE(JI,JJ,JK) = PRT(JI,JJ,JK,4) / ( PRT(JI,JJ,JK,2)+PRT(JI,JJ,JK,4) )
@@ -863,7 +866,7 @@ IF (KRRL >=1) THEN
   END IF
 !
 ELSE
-!$acc kernels present( zlocpexnm )
+!$acc kernels present_cr( zlocpexnm )
   ZLOCPEXNM=0.
 !$acc end kernels
 END IF              ! loop end on KRRL >= 1
@@ -872,7 +875,7 @@ END IF              ! loop end on KRRL >= 1
 !
 !$acc update device(PRRS,PRTHLS)
 IF ( KRRL >= 1 ) THEN
-!$acc kernels present( zlocpexnm )
+!$acc kernels present_cr( zlocpexnm )
   IF ( KRRI >= 1 ) THEN
     DO CONCURRENT (JI=1:JIU,JJ=1:JJU,JK=1:JKU)
        ! Rnp at t
@@ -909,7 +912,7 @@ SELECT CASE (HTURBLEN)
 !           ------------------
 
   CASE ('BL89')
-!$acc kernels
+!$acc kernels present_cr(ZSHEAR)
     ZSHEAR(:, :, : ) = 0.
 !$acc end kernels
     CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,PLEM)
@@ -1000,7 +1003,7 @@ END IF
 !*      3.6 Dissipative length
 !           ------------------
 !
-!$acc kernels
+!$acc kernels present_cr(ZLEPS)
 ZLEPS(:,:,:)=PLEM(:,:,:)
 !
 !*      3.7 Correction in the Surface Boundary Layer (Redelsperger 2001)
@@ -1066,7 +1069,7 @@ ENDIF
 !
     CALL UPDATE_ROTATE_WIND(ZUSLOPE,ZVSLOPE)
   ELSE
-!$acc kernels
+!$acc kernels present_cr(ZUSLOPE,ZVSLOPE)
     ZUSLOPE=PUT(:,:,KKA)
     ZVSLOPE=PVT(:,:,KKA)
 !$acc end kernels
@@ -1129,7 +1132,7 @@ IF (HTOM=='TM06') THEN
   CALL GZ_W_M_DEVICE(ZMTH2,PDZZ,ZFTH2)    ! -d(w'th'2 )/dz
   !CALL GZ_W_M_DEVICE(ZMR2, PDZZ,ZFR2)     ! -d(w'r'2  )/dz
   !CALL GZ_W_M_DEVICE(ZMTHR,PDZZ,ZFTHR)    ! -d(w'th'r')/dz
-!$acc kernels
+!$acc kernels present_cr(ZFWTH,ZFTH2,ZFWR,ZFR2,ZFTHR)
   ZFWTH = -ZFWTH
   !ZFWR  = -ZFWR
   ZFTH2 = -ZFTH2
@@ -1152,7 +1155,7 @@ IF (HTOM=='TM06') THEN
   ZFTHR = 0.
 !$acc end kernels
 ELSE
-!$acc kernels
+!$acc kernels present_cr(ZFWTH,ZFWR,ZFTH2,ZFR2,ZFTHR)
   ZFWTH(:,:,:) = 0.
   ZFWR(:,:,:)  = 0.
   ZFTH2(:,:,:) = 0.
@@ -1172,13 +1175,13 @@ if ( lbudget_w )  call Budget_store_init( tbudgets(NBUDGET_W ), 'VTURB', prws  (
 
 if ( lbudget_th ) then
    if ( krri >= 1 .and. krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) =  prthls(:, :, :) + zlvocpexnm(:, :, :) * prrs(:, :, :, 2) &
                                           + zlsocpexnm(:, :, :) * prrs(:, :, :, 4) 
       !$acc end kernels
       call Budget_store_init( tbudgets(NBUDGET_TH), 'VTURB', ZTEMP_BUD(:,:,:) )
    else if ( krrl >= 1 ) then
-      !$acc kernels present( ZTEMP_BUD, zlocpexnm )
+      !$acc kernels present_cr( ZTEMP_BUD, zlocpexnm )
       ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlocpexnm(:, :, :) * prrs(:, :, :, 2)
       !$acc end kernels
       call Budget_store_init( tbudgets(NBUDGET_TH), 'VTURB', ZTEMP_BUD(:,:,:) )
@@ -1189,12 +1192,12 @@ end if
 
 if ( lbudget_rv ) then
    if ( krri >= 1 .and. krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) - prrs(:, :, :, 4)
       !$acc end kernels
       call Budget_store_init( tbudgets(NBUDGET_RV), 'VTURB', ZTEMP_BUD(:,:,:) )
    else if ( krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) =  prrs(:, :, :, 1) - prrs(:, :, :, 2) 
       !$acc end kernels
     call Budget_store_init( tbudgets(NBUDGET_RV), 'VTURB', ZTEMP_BUD(:,:,:) )
@@ -1238,13 +1241,13 @@ if ( lbudget_w ) call Budget_store_end( tbudgets(NBUDGET_W), 'VTURB', prws(:, :,
 
 if ( lbudget_th ) then
    if ( krri >= 1 .and. krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) =  prthls(:, :, :) + zlvocpexnm(:, :, :) * prrs(:, :, :, 2) &
                                           + zlsocpexnm(:, :, :) * prrs(:, :, :, 4) 
       !$acc end kernels      
       call Budget_store_end( tbudgets(NBUDGET_TH), 'VTURB', ZTEMP_BUD(:,:,:) )
    else if ( krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD, zlocpexnm )
+      !$acc kernels present_cr(ZTEMP_BUD, zlocpexnm )
       ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlocpexnm(:, :, :) * prrs(:, :, :, 2)
       !$acc end kernels    
     call Budget_store_end( tbudgets(NBUDGET_TH), 'VTURB', ZTEMP_BUD(:,:,:) )
@@ -1255,12 +1258,12 @@ end if
 
 if ( lbudget_rv ) then
    if ( krri >= 1 .and. krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) - prrs(:, :, :, 4)
       !$acc end kernels      
       call Budget_store_end( tbudgets(NBUDGET_RV), 'VTURB', ZTEMP_BUD(:,:,:) )
    else if ( krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) =  prrs(:, :, :, 1) - prrs(:, :, :, 2) 
       !$acc end kernels      
       call Budget_store_end( tbudgets(NBUDGET_RV), 'VTURB', ZTEMP_BUD(:,:,:) )
@@ -1285,13 +1288,13 @@ if ( hturbdim == '3DIM' ) then
 
   if (lbudget_th)  then
      if ( krri >= 1 .and. krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) =  prthls(:, :, :) + zlvocpexnm(:, :, :) * prrs(:, :, :, 2) &
                                           + zlsocpexnm(:, :, :) * prrs(:, :, :, 4) 
       !$acc end kernels        
       call Budget_store_init( tbudgets(NBUDGET_TH), 'HTURB', ZTEMP_BUD(:,:,:) )
    else if ( krrl >= 1 ) then
-     !$acc kernels present(ZTEMP_BUD, zlocpexnm )
+     !$acc kernels present_cr(ZTEMP_BUD, zlocpexnm )
       ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlocpexnm(:, :, :) * prrs(:, :, :, 2)
       !$acc end kernels      
       call Budget_store_init( tbudgets(NBUDGET_TH), 'HTURB', ZTEMP_BUD(:,:,:) )
@@ -1302,12 +1305,12 @@ if ( hturbdim == '3DIM' ) then
 
   if ( lbudget_rv ) then
      if ( krri >= 1 .and. krrl >= 1 ) then
-        !$acc kernels present(ZTEMP_BUD)
+        !$acc kernels present_cr(ZTEMP_BUD)
         ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) - prrs(:, :, :, 4)
         !$acc end kernels       
         call Budget_store_init( tbudgets(NBUDGET_RV), 'HTURB', ZTEMP_BUD(:,:,:) )
      else if ( krrl >= 1 ) then
-        !$acc kernels present(ZTEMP_BUD)
+        !$acc kernels present_cr(ZTEMP_BUD)
         ZTEMP_BUD(:,:,:) =  prrs(:, :, :, 1) - prrs(:, :, :, 2) 
         !$acc end kernels       
         call Budget_store_init( tbudgets(NBUDGET_RV), 'HTURB', ZTEMP_BUD(:,:,:) )
@@ -1347,13 +1350,13 @@ if ( hturbdim == '3DIM' ) then
 
   if ( lbudget_th ) then
      if ( krri >= 1 .and. krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) =  prthls(:, :, :) + zlvocpexnm(:, :, :) * prrs(:, :, :, 2) &
                                           + zlsocpexnm(:, :, :) * prrs(:, :, :, 4) 
       !$acc end kernels        
       call Budget_store_end( tbudgets(NBUDGET_TH), 'HTURB', ZTEMP_BUD(:,:,:) )
    else if ( krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD, zlocpexnm )
+      !$acc kernels present_cr(ZTEMP_BUD, zlocpexnm )
       ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlocpexnm(:, :, :) * prrs(:, :, :, 2)
       !$acc end kernels     
       call Budget_store_end( tbudgets(NBUDGET_TH), 'HTURB', ZTEMP_BUD(:,:,:) )
@@ -1364,12 +1367,12 @@ if ( hturbdim == '3DIM' ) then
 
   if ( lbudget_rv ) then
      if ( krri >= 1 .and. krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) - prrs(:, :, :, 4)
       !$acc end kernels        
       call Budget_store_end( tbudgets(NBUDGET_RV), 'HTURB', ZTEMP_BUD(:,:,:) )
    else if ( krrl >= 1 ) then
-      !$acc kernels present(ZTEMP_BUD)
+      !$acc kernels present_cr(ZTEMP_BUD)
       ZTEMP_BUD(:,:,:) =  prrs(:, :, :, 1) - prrs(:, :, :, 2) 
       !$acc end kernels     
       call Budget_store_end( tbudgets(NBUDGET_RV), 'HTURB', ZTEMP_BUD(:,:,:) )
@@ -1401,7 +1404,7 @@ end if
        PTHP = PTHP + XG / PTHVREF * MZF( PFLXZTHVMF )
 #else
       CALL MZF_DEVICE( PFLXZTHVMF, ZTMP1_DEVICE )
-!$acc kernels
+!$acc kernels present_cr(PTHP)
       PTHP(:,:,:) = PTHP(:,:,:) + XG / PTHVREF(:,:,:) * ZTMP1_DEVICE(:,:,:)
 !$acc end kernels
 #endif
@@ -1483,7 +1486,7 @@ END IF
 !
 IF ( KRRL >= 1 ) THEN
   IF ( KRRI >= 1 ) THEN
-!$acc kernels
+!$acc kernels present_cr(PRT,PRRS,PTHLT,PRTHLS)
     PRT(:,:,:,1)  = PRT(:,:,:,1)  - PRT(:,:,:,2)  - PRT(:,:,:,4)
     PRRS(:,:,:,1) = PRRS(:,:,:,1) - PRRS(:,:,:,2) - PRRS(:,:,:,4)
     PTHLT(:,:,:)  = PTHLT(:,:,:)  + ZLVOCPEXNM(:,:,:) * PRT(:,:,:,2) &
@@ -1501,7 +1504,7 @@ IF ( KRRL >= 1 ) THEN
     CALL MNH_MEM_RELEASE()
 #endif
   ELSE
-!$acc kernels present( zlocpexnm )
+!$acc kernels present_cr(PRT,PRRS,PTHLT,PRTHLS, zlocpexnm )
     PRT(:,:,:,1)  = PRT(:,:,:,1)  - PRT(:,:,:,2) 
     PRRS(:,:,:,1) = PRRS(:,:,:,1) - PRRS(:,:,:,2)
     PTHLT(:,:,:)  = PTHLT(:,:,:)  + ZLOCPEXNM(:,:,:) * PRT(:,:,:,2)
@@ -1535,7 +1538,7 @@ IF (LLES_CALL) THEN
 #ifndef MNH_OPENACC
   CALL LES_MEAN_SUBGRID((PSFU*PSFU+PSFV*PSFV)**0.25,X_LES_USTAR)
 #else
-!$acc kernels
+!$acc kernels present_cr(ZTMP1_DEVICE)
   ZTMP1_DEVICE(:,:,1) = (PSFU*PSFU+PSFV*PSFV)**0.25
 !$acc end kernels
   CALL LES_MEAN_SUBGRID(ZTMP1_DEVICE(:,:,1),X_LES_USTAR)
@@ -1581,17 +1584,17 @@ IF (LLES_CALL) THEN
 #else
   IF (HTURBDIM=="1DIM") THEN
 !$acc data copy(X_LES_SUBGRID_U2,X_LES_SUBGRID_V2,X_LES_SUBGRID_W2,X_LES_RES_ddz_Thl_SBG_W2)
-!$acc kernels
+!$acc kernels present_cr(ZTMP1_DEVICE)
     ZTMP1_DEVICE = 2./3.*PTKET
 !$acc end kernels
     CALL LES_MEAN_SUBGRID(ZTMP1_DEVICE,X_LES_SUBGRID_U2)
-!$acc kernels
+!$acc kernels present_cr(X_LES_SUBGRID_V2,X_LES_SUBGRID_W2)
     X_LES_SUBGRID_V2(:,:,:) = X_LES_SUBGRID_U2(:,:,:)
     X_LES_SUBGRID_W2(:,:,:) = X_LES_SUBGRID_U2(:,:,:)
 !$acc end kernels
     CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PTHLT,PDZZ,ZTMP2_DEVICE)
     CALL MZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
-!$acc kernels
+!$acc kernels present_cr(ZTMP2_DEVICE)
       ZTMP2_DEVICE = ZTMP1_DEVICE*ZTMP3_DEVICE
 !$acc end kernels
     CALL LES_MEAN_SUBGRID(ZTMP2_DEVICE,X_LES_RES_ddz_Thl_SBG_W2)
@@ -1600,7 +1603,7 @@ IF (LLES_CALL) THEN
 !$acc data copy(X_LES_RES_ddz_Rt_SBG_W2)
       CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PRT(:,:,:,1),PDZZ,ZTMP2_DEVICE)
       CALL MZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
-!$acc kernels
+!$acc kernels present_cr(ZTMP2_DEVICE)
       ZTMP2_DEVICE = ZTMP1_DEVICE*PTKET*ZTMP3_DEVICE
 !$acc end kernels
       CALL LES_MEAN_SUBGRID(ZTMP2_DEVICE,X_LES_RES_ddz_Rt_SBG_W2)
@@ -1610,7 +1613,7 @@ IF (LLES_CALL) THEN
     DO JSV=1,NSV
       CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PSVT(:,:,:,JSV),PDZZ,ZTMP2_DEVICE)
       CALL MZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE )
-!$acc kernels
+!$acc kernels present_cr(ZTMP2_DEVICE)
       ZTMP2_DEVICE = ZTMP1_DEVICE*PTKET*ZTMP3_DEVICE
 !$acc end kernels
       CALL LES_MEAN_SUBGRID(ZTMP2_DEVICE,X_LES_RES_ddz_Sv_SBG_W2(:,:,:,JSV))
@@ -1629,7 +1632,7 @@ IF (LLES_CALL) THEN
 !
 !* presso-correlations for subgrid Tke are equal to zero.
 !
-!$acc kernels
+!$acc kernels present_cr(ZLEPS)
   ZLEPS = 0. !ZLEPS is used as a work array (not used anymore)
 !$acc end kernels
   CALL LES_MEAN_SUBGRID(ZLEPS,X_LES_SUBGRID_WP)
@@ -1769,7 +1772,7 @@ geast  = HLBCX(2) /= "CYCL" .AND. LEAST_ll()
 gsouth = HLBCY(1) /= "CYCL" .AND. LSOUTH_ll()
 gnorth = HLBCY(2) /= "CYCL" .AND. LNORTH_ll()
 
-!$acc kernels
+!$acc kernels present_cr(PUSLOPE,PVSLOPE)
 IF ( gwest ) THEN
   PUSLOPE(IIB-1,:)=PUSLOPE(IIB,:)
   PVSLOPE(IIB-1,:)=PVSLOPE(IIB,:)
@@ -1865,7 +1868,7 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) )
 !
 !*       1.1 Lv/Cph at  t
 !
-!$acc kernels ! present(ZRVSAT,ZDRVSATDT) ! present(PLOCPEXN) ! present ZDRVSATDT)
+!$acc kernels present_cr(PLOCPEXN)  ! present(ZRVSAT,ZDRVSATDT) ! present(PLOCPEXN) ! present ZDRVSATDT)
   PLOCPEXN(:,:,:) = ( PLTT + (XCPV-PC) *  (PT(:,:,:)-XTT) ) / PCP(:,:,:)
 !
 !*      1.2 Saturation vapor pressure at t
@@ -1930,7 +1933,7 @@ ENDDO
 !$acc end kernels
 !*      1.7 Lv/Cph/Exner at t-1
 !
-!$acc kernels present(PLOCPEXN)
+!$acc kernels present_cr(PLOCPEXN)
 !$acc_nv loop independent collapse(3)
 DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
    PLOCPEXN(JI,JJ,JK) = PLOCPEXN(JI,JJ,JK) / PEXN(JI,JJ,JK)
@@ -2240,7 +2243,7 @@ GOCEAN = LOCEAN
 !$acc      present( ztmp1_device, ztmp2_device )
 
 IF (ODZ) THEN
-!$acc kernels
+!$acc kernels present_cr(PLM)
   ! Dz is take into account in the computation
   DO JK = KKTB,KKTE ! 1D turbulence scheme
     PLM(:,:,JK) = PZZ(:,:,JK+KKL) - PZZ(:,:,JK)
@@ -2254,7 +2257,7 @@ IF (ODZ) THEN
       PLM(:,:,:) = SQRT( PLM(:,:,:)*MXF(PDXX(:,:,:)) )
 #else
       CALL MXF_DEVICE( PDXX, ZTMP1_DEVICE )
-!$acc kernels
+!$acc kernels present_cr(PLM)
       PLM(:,:,:) = SQRT( PLM(:,:,:) * ZTMP1_DEVICE(:,:,:) )
 !$acc end kernels
 #endif
@@ -2282,7 +2285,7 @@ ENDDO
   END IF
 ELSE
   ! Dz not taken into account in computation to assure invariability with vertical grid mesh
-!$acc kernels
+!$acc kernels present_cr(PLM)
   PLM(:,:,:)=1.E10
 !$acc end kernels
   IF ( HTURBDIM /= '1DIM' ) THEN  ! 3D turbulence scheme
@@ -2523,7 +2526,7 @@ CALL MNH_MEM_GET( ZTMP2_DEVICE, JIU, JJU, JKU )
 
 !
 !   initialize the mixing length with the mesh grid
-!$acc kernels
+!$acc kernels present_cr(PLM)
 ! 1D turbulence scheme
 PLM(:,:,KKTB:KKTE) = PZZ(:,:,KKTB+KKL:KKTE+KKL) - PZZ(:,:,KKTB:KKTE)
 PLM(:,:,KKU) = PLM(:,:,KKE)
@@ -2535,7 +2538,7 @@ IF ( HTURBDIM /= '1DIM' ) THEN  ! 3D turbulence scheme
     PLM(:,:,:) = SQRT( PLM(:,:,:)*MXF(PDXX(:,:,:)) )
 #else
     CALL MXF_DEVICE(PDXX,ZTMP1_DEVICE)
-!$acc kernels
+!$acc kernels present_cr(PLM)
     PLM(:,:,:) = SQRT( PLM(:,:,:)*ZTMP1_DEVICE )
 !$acc end kernels
     if ( mppdb_initialized ) then
@@ -2554,7 +2557,7 @@ IF ( HTURBDIM /= '1DIM' ) THEN  ! 3D turbulence scheme
 #else
     CALL MXF_DEVICE(PDXX,ZTMP1_DEVICE)
     CALL MYF_DEVICE(PDYY,ZTMP2_DEVICE)
-!$acc kernels
+!$acc kernels present_cr(PLM)
     PLM(:,:,:) = (PLM(:,:,:)*ZTMP1_DEVICE*ZTMP2_DEVICE ) ** (1./3.)
 !$acc end kernels
     if ( mppdb_initialized ) then