diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index 8ac7c1bb954f625b6b2eda2be6b94017c308c4d8..b2f17b80877353258360b2b7cd19aad84379b0a6 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -1894,7 +1894,8 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) )
          - ZDRVSATDT(:,:,:)                                                  &
         )
 #else
-DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+!$acc_nv loop independent collapse(3)
+DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
  PATHETA(JI,JJ,JK)= PAMOIST(JI,JJ,JK) * PEXN(JI,JJ,JK) *                             &
         ( ( ZRVSAT(JI,JJ,JK) - PRT(JI,JJ,JK,1) ) * PLOCPEXN(JI,JJ,JK) /              &
           ( 1. + ZDRVSATDT(JI,JJ,JK) * PLOCPEXN(JI,JJ,JK) )        *                 &
@@ -1908,13 +1909,16 @@ DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU)
         )
 ENDDO
 #endif
+!$acc end kernels
 !*      1.7 Lv/Cph/Exner at t-1
 !
-  PLOCPEXN(:,:,:) = PLOCPEXN(:,:,:) / PEXN(:,:,:)
+!$acc kernels present(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)
+END DO
 !$acc end kernels
 
-
-
   if ( mppdb_initialized ) then
     !Check all out arrays
     call Mppdb_check( plocpexn, "Compute_function_thermo end:plocpexn" )
@@ -2038,7 +2042,7 @@ ELSE
 !*         3.1 BL89 mixing length
 !           ------------------
   CASE ('BL89','RM17')
-!$acc kernels
+!$acc kernels present(ZSHEAR)
     ZSHEAR(:, :, : ) = 0.
 !$acc end kernels
     CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD)
diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90
index 30c95d75eb99c3235eef0d5e00beccdd907d07ad..b4a4fff2c118bea73d1f0c2b74556ab5007ce139 100644
--- a/src/ZSOLVER/turb.f90
+++ b/src/ZSOLVER/turb.f90
@@ -1875,7 +1875,7 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) )
   END DO
 #endif
 !$acc end kernels  
-!$acc kernels present(ZRVSAT,ZDRVSATDT)  
+!$acc kernels present_cr(ZRVSAT,ZDRVSATDT) 
 !
 !*      1.3 saturation  mixing ratio at t
 !
@@ -1906,7 +1906,8 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) )
          - ZDRVSATDT(:,:,:)                                                  &
         )
 #else
-DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+!$acc_nv loop independent collapse(3)
+DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
  PATHETA(JI,JJ,JK)= PAMOIST(JI,JJ,JK) * PEXN(JI,JJ,JK) *                             &
         ( ( ZRVSAT(JI,JJ,JK) - PRT(JI,JJ,JK,1) ) * PLOCPEXN(JI,JJ,JK) /              &
           ( 1. + ZDRVSATDT(JI,JJ,JK) * PLOCPEXN(JI,JJ,JK) )        *                 &
@@ -1920,13 +1921,16 @@ DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU)
         )
 ENDDO
 #endif
+!$acc end kernels
 !*      1.7 Lv/Cph/Exner at t-1
 !
-  PLOCPEXN(:,:,:) = PLOCPEXN(:,:,:) / PEXN(:,:,:)
+!$acc kernels present(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)
+END DO
 !$acc end kernels
 
-
-
   if ( mppdb_initialized ) then
     !Check all out arrays
     call Mppdb_check( plocpexn, "Compute_function_thermo end:plocpexn" )
@@ -2050,7 +2054,7 @@ ELSE
 !*         3.1 BL89 mixing length
 !           ------------------
   CASE ('BL89','RM17')
-!$acc kernels
+!$acc kernels present(ZSHEAR)
     ZSHEAR(:, :, : ) = 0.
 !$acc end kernels
     CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD)