diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90
index f9f9048a49d7a723af04a64642527b1509fda5a1..36ea18b0a8b986f52e92652df46d8c75c217fb8a 100644
--- a/src/MNH/advection_uvw.f90
+++ b/src/MNH/advection_uvw.f90
@@ -195,6 +195,8 @@ TYPE(LIST_ll), POINTER      :: TZFIELDS0_ll ! list of fields to exchange
 !
 INTEGER :: IIU,IJU,IKU
 !
+INTEGER :: JI,JJ,JK
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.     INITIALIZATION
@@ -433,21 +435,31 @@ DO JSPL=1,ISPLIT
 ! Tendencies on wind
 !$acc update device(ZRUS_ADV,ZRVS_ADV,ZRWS_ADV)
 !$acc kernels
-  PRUS(:,:,:) = PRUS(:,:,:) + ZRUS_ADV(:,:,:) / ISPLIT
-  PRVS(:,:,:) = PRVS(:,:,:) + ZRVS_ADV(:,:,:) / ISPLIT
-  PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_ADV(:,:,:) / ISPLIT
-
+#ifdef MNH_COMPILER_NVHPC  
+!$acc loop independent collapse(3)
+#endif     
+DO CONCURRENT (JI=1:IIU , JJ=1:IJU , JK=1:IKU )
+  PRUS(JI,JJ,JK) = PRUS(JI,JJ,JK) + ZRUS_ADV(JI,JJ,JK) / ISPLIT
+  PRVS(JI,JJ,JK) = PRVS(JI,JJ,JK) + ZRVS_ADV(JI,JJ,JK) / ISPLIT
+  PRWS(JI,JJ,JK) = PRWS(JI,JJ,JK) + ZRWS_ADV(JI,JJ,JK) / ISPLIT
+END DO
   IF (JSPL<ISPLIT) THEN
 !
 ! Guesses for next time splitting loop
 !
-  ZU(:,:,:) = ZU(:,:,:) + ZTSTEP / ZMXM_RHODJ *  &
-              (ZRUS_OTHER(:,:,:) + ZRUS_ADV(:,:,:))
-  ZV(:,:,:) = ZV(:,:,:) + ZTSTEP / ZMYM_RHODJ *  &
-              (ZRVS_OTHER(:,:,:) + ZRVS_ADV(:,:,:))
-  ZW(:,:,:) = ZW(:,:,:) + ZTSTEP / ZMZM_RHODJ *  &
-              (ZRWS_OTHER(:,:,:) + ZRWS_ADV(:,:,:))
- END IF
+!
+#ifdef MNH_COMPILER_NVHPC  
+!$acc loop independent collapse(3)
+#endif     
+DO CONCURRENT (JI=1:IIU , JJ=1:IJU , JK=1:IKU )
+  ZU(JI,JJ,JK) = ZU(JI,JJ,JK) + ZTSTEP / ZMXM_RHODJ(JI,JJ,JK) *  &
+              (ZRUS_OTHER(JI,JJ,JK) + ZRUS_ADV(JI,JJ,JK))
+  ZV(JI,JJ,JK) = ZV(JI,JJ,JK) + ZTSTEP / ZMYM_RHODJ(JI,JJ,JK) *  &
+              (ZRVS_OTHER(JI,JJ,JK) + ZRVS_ADV(JI,JJ,JK))
+  ZW(JI,JJ,JK) = ZW(JI,JJ,JK) + ZTSTEP / ZMZM_RHODJ(JI,JJ,JK) *  &
+              (ZRWS_OTHER(JI,JJ,JK) + ZRWS_ADV(JI,JJ,JK))
+END DO
+END IF
 !$acc end kernels
 !
 ! Top and bottom Boundaries 
diff --git a/src/MNH/gravity_impl.f90 b/src/MNH/gravity_impl.f90
index a5f7acadc521a75aaf480c5552660465c7fc40d6..fb02de4bdd1abef5893e64754de57f8d80b07079 100644
--- a/src/MNH/gravity_impl.f90
+++ b/src/MNH/gravity_impl.f90
@@ -200,7 +200,9 @@ END DO
 CALL GRAVITY ( KRR,KRRL, KRRI, ZTH, ZR, PRHODJ, PTHVREF, ZRWS_GRAV(:,:,:) )
 !
 !$acc kernels
-PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_GRAV(:,:,:)
+DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU )
+   PRWS(JI,JJ,JK) = PRWS(JI,JJ,JK) + ZRWS_GRAV(JI,JJ,JK)
+END DO
 !$acc end kernels
 !
 if ( lbudget_w ) then
diff --git a/src/MNH/rain_ice_sedimentation_split.f90 b/src/MNH/rain_ice_sedimentation_split.f90
index 7e9471339418294952e1541d9a733ce7d80d0260..9e9f29c71a43446517645a4bdd0e6b175c6dc69a 100644
--- a/src/MNH/rain_ice_sedimentation_split.f90
+++ b/src/MNH/rain_ice_sedimentation_split.f90
@@ -326,9 +326,10 @@ IF ( OSEDIC ) THEN
   ZTMP2 = 0.5 * GAMMA( XNUC2 + 1.0 / XALPHAC2 ) / ( GAMMA( XNUC2 ) )
 
   IF ( GPRESENT_PSEA ) THEN
- !$acc loop independent collapse(2)
-    DO JJ = 1, SIZE( PRCS, 2 )
-      DO JI = 1, SIZE( PRCS, 1 )
+#ifdef MNH_COMPILER_NVHPC
+     !$acc loop independent collapse(2)
+#endif
+     DO CONCURRENT ( JI=1:SIZE( PRCS, 1 ) ,  JJ = 1: SIZE( PRCS, 2 ) )
         ZOMPSEA  (JI,JJ) = 1.-PSEA(JI,JJ)
         ZTMP1_2D (JI,JJ) = PSEA(JI,JJ)*XLBC(2)  +ZOMPSEA(JI,JJ)*XLBC(1)
         ZTMP2_2D (JI,JJ) = PSEA(JI,JJ)*XFSEDC(2)+ZOMPSEA(JI,JJ)*XFSEDC(1)
@@ -336,19 +337,15 @@ IF ( OSEDIC ) THEN
         ZTMP3_2D (JI,JJ) = (1.-PTOWN(JI,JJ))*ZCONC_TMP(JI,JJ)+PTOWN(JI,JJ)*XCONC_URBAN
         ZTMP4_2D (JI,JJ) = MAX( 1. , ZOMPSEA(JI,JJ)*ZTMP1 + PSEA(JI,JJ)*ZTMP2 )
       END DO
-    END DO
-
-!$acc loop independent collapse(3)
-    DO JK = KKTB, KKTE
-      DO JJ = 1, SIZE( PRCS, 2 )
-        DO JI = 1, SIZE( PRCS, 1 )
+#ifdef MNH_COMPILER_NVHPC
+      !$acc loop independent collapse(3)
+#endif
+      DO CONCURRENT ( JI=1:SIZE( PRCS, 1 ) ,  JJ = 1:SIZE( PRCS, 2 ) , JK=KKTB:KKTE )  
           ZLBC   (JI,JJ,JK) = ZTMP1_2D(JI,JJ)
           ZFSEDC (JI,JJ,JK) = ZTMP2_2D(JI,JJ)
           ZCONC3D(JI,JJ,JK) = ZTMP3_2D(JI,JJ)
           ZRAY   (JI,JJ,JK) = ZTMP4_2D(JI,JJ)
-        END DO
       END DO
-    END DO
   ELSE
     ZLBC   (:,:,:) = XLBC(1)
     ZFSEDC (:,:,:) = XFSEDC(1)
@@ -390,29 +387,25 @@ PRSS(:,:,:)  = PRST(:,:,:)* ZINVTSTEP
 PRGS(:,:,:)  = PRGT(:,:,:)* ZINVTSTEP
 IF ( KRR == 7 ) PRHS(:,:,:)  = PRHT(:,:,:)* ZINVTSTEP
 #else
+#ifdef MNH_COMPILER_NVHPC
 !$acc loop collapse(3) independent
-DO JK = 1, SIZE( PRRS, 3 )
-  DO JJ = 1, SIZE( PRRS, 2 )
-    DO JI = 1, SIZE( PRRS, 1 )
+#endif
+DO CONCURRENT ( JI=1:SIZE( PRRS, 1 ) , JJ=1:SIZE( PRRS, 2 ) , JK=1:SIZE( PRRS, 3 ) )
       ZPRRS(JI,JJ,JK) = PRRS(JI,JJ,JK) - PRRT(JI,JJ,JK) * ZINVTSTEP
       ZPRSS(JI,JJ,JK) = PRSS(JI,JJ,JK) - PRST(JI,JJ,JK) * ZINVTSTEP
       ZPRGS(JI,JJ,JK) = PRGS(JI,JJ,JK) - PRGT(JI,JJ,JK) * ZINVTSTEP
       PRRS (JI,JJ,JK) =                  PRRT(JI,JJ,JK) * ZINVTSTEP
       PRSS (JI,JJ,JK) =                  PRST(JI,JJ,JK) * ZINVTSTEP
       PRGS (JI,JJ,JK) =                  PRGT(JI,JJ,JK) * ZINVTSTEP
-    END DO
-  END DO
 END DO
 IF ( KRR == 7 ) THEN
+#ifdef MNH_COMPILER_NVHPC   
 !$acc loop collapse(3) independent
-DO JK = 1, SIZE( PRHS, 3 )
-  DO JJ = 1, SIZE( PRHS, 2 )
-    DO JI = 1, SIZE( PRHS, 1 )
+#endif
+DO CONCURRENT ( JI=1:SIZE( PRRS, 1 ) , JJ=1:SIZE( PRRS, 2 ) , JK=1:SIZE( PRRS, 3 ) )   
         ZPRHS(JI,JJ,JK) = PRHS(JI,JJ,JK) - PRHT(JI,JJ,JK) * ZINVTSTEP
         PRHS (JI,JJ,JK) =                  PRHT(JI,JJ,JK) * ZINVTSTEP
-      END DO
-    END DO
-  END DO
+END DO
 END IF
 #endif
 !$acc end kernels
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index e8e69e2f54f6b85944b4d83e2f2302d45b27b253..d57fd7eb5548d469a02337e18a80ad2c44447171 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -676,9 +676,9 @@ DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU ,JRR = 1:KRR )
 END DO ! CONCURRENT
 !
 IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') THEN
-  DO JSV = ISVBEG, ISVEND
-    PSVS(:,:,:,JSV) = PSVS(:,:,:,JSV) / PRHODJ(:,:,:)
-  ENDDO
+   DO CONCURRENT ( JI=1:JIU , JJ=1:JJU,JK=1:JKU , JSV=ISVBEG:ISVEND )  
+    PSVS(JI,JJ,JK,JSV) = PSVS(JI,JJ,JK,JSV) / PRHODJ(JI,JJ,JK)
+   ENDDO
 ENDIF
 !
 !  complete the lateral boundaries to avoid possible problems