diff --git a/src/MNH/ice4_fast_rg.f90 b/src/MNH/ice4_fast_rg.f90
index 4847d925cd0e5ef53211ee64bbe9f6522089b5a0..8a49ae40f56303340297e2e990e70552cca9e69d 100644
--- a/src/MNH/ice4_fast_rg.f90
+++ b/src/MNH/ice4_fast_rg.f90
@@ -277,7 +277,7 @@ CALL MNH_MEM_GET( zrwetg_init, isize )
 !
 !*       6.1    rain contact freezing
 !
-!$acc kernels
+!$acc kernels present_cr( GDRY, PCOMPUTE, PRGT, PRST, XRTMIN, ZDRY )
 DO JL=1, ISIZE
   ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(4)-PRIT(JL))) * & ! WHERE(PRIT(:)>XRTMIN(4))
            &MAX(0., -SIGN(1., XRTMIN(3)-PRRT(JL))) * & ! WHERE(PRRT(:)>XRTMIN(3))
@@ -403,8 +403,9 @@ ENDIF
 
 ! Wet and dry collection of rs on graupel (6.2.1)
 IGDRY = 0
-!$acc loop private(IDX) independent
-DO JJ = 1, SIZE(GDRY)
+!$acc end kernels
+!$acc parallel loop private(idx) independent
+DO CONCURRENT( JJ = 1 : SIZE( GDRY ) )
   ZDRY(JJ)=MAX(0., -SIGN(1., XRTMIN(5)-PRST(JJ))) * & ! WHERE(PRST(:)>XRTMIN(5))
           &MAX(0., -SIGN(1., XRTMIN(6)-PRGT(JJ))) * & ! WHERE(PRGT(:)>XRTMIN(6))
           &PCOMPUTE(JJ)
@@ -419,7 +420,6 @@ DO JJ = 1, SIZE(GDRY)
     GDRY(JJ) = .FALSE.
   END IF
 END DO
-!$acc end kernels
 ! !$acc kernels
 IF(LDSOFT) THEN
 !$acc kernels
@@ -513,13 +513,13 @@ ELSE
 !$acc end kernels
   ENDIF
 ENDIF
-!$acc kernels
+!acc kernels present_cr( GDRY, PCOMPUTE, PRGT, PRRT, XRTMIN, ZDRY )
 !
 !*       6.2.6  accretion of raindrops on the graupeln
 !
 IGDRY = 0
-!$acc loop private(IDX) independent
-DO JJ = 1, SIZE(GDRY)
+!$acc parallel loop private(idx) independent
+DO CONCURRENT( JJ = 1 : SIZE( GDRY ) )
   ZDRY(JJ)=MAX(0., -SIGN(1., XRTMIN(3)-PRRT(JJ))) * & ! WHERE(PRRT(:)>XRTMIN(3))
           &MAX(0., -SIGN(1., XRTMIN(6)-PRGT(JJ))) * & ! WHERE(PRGT(:)>XRTMIN(6))
           &PCOMPUTE(JJ)
@@ -534,7 +534,6 @@ DO JJ = 1, SIZE(GDRY)
     GDRY(JJ) = .FALSE.
   END IF
 END DO
-!$acc end kernels
 
 IF(LDSOFT) THEN
 !$acc kernels
diff --git a/src/MNH/ice4_fast_rs.f90 b/src/MNH/ice4_fast_rs.f90
index bba6ba67b3c4aeca38ce8ff1935525186b2e7b34..94a0ad92c338d299574c904da60c39c317555690 100644
--- a/src/MNH/ice4_fast_rs.f90
+++ b/src/MNH/ice4_fast_rs.f90
@@ -291,8 +291,9 @@ ENDDO
 !*       5.1    cloud droplet riming of the aggregates
 !
 IGRIM = 0
-!$acc loop private(IDX) independent
-DO JJ = 1, SIZE(GRIM)
+!$acc end kernels
+!$acc parallel loop private(idx) independent present_cr( I1, GRIM, PCOMPUTE, PRCT, PRST, XRTMIN, ZRIM )
+DO CONCURRENT( JJ = 1 : SIZE( GRIM ) )
   ZRIM(JJ)=MAX(0., -SIGN(1., XRTMIN(2)-PRCT(JJ))) * & !WHERE(PRCT(:)>XRTMIN(2))
           &MAX(0., -SIGN(1., XRTMIN(5)-PRST(JJ))) * & !WHERE(PRST(:)>XRTMIN(5))
           &PCOMPUTE(JJ)
@@ -307,8 +308,6 @@ DO JJ = 1, SIZE(GRIM)
     GRIM(JJ) = .FALSE.
   END IF
 END DO
-!$acc end kernels
-!
 ! Collection of cloud droplets by snow: this rate is used for riming (T<0) and for conversion/melting (T>0)
 IF(LDSOFT) THEN
 !$acc kernels
@@ -466,8 +465,9 @@ ENDDO
 !*       5.2    rain accretion onto the aggregates
 !
 IGACC = 0
-!$acc loop private(IDX) independent
-DO JJ = 1, SIZE(GACC)
+!$acc end kernels
+!$acc parallel loop private(idx) independent present_cr( I1, GACC, PCOMPUTE, PRRT, PRST, XRTMIN, ZACC )
+DO CONCURRENT( JJ = 1 : SIZE( GACC ) )
   ZACC(JJ)=MAX(0., -SIGN(1., XRTMIN(3)-PRRT(JJ))) * & !WHERE(PRRT(:)>XRTMIN(3))
           &MAX(0., -SIGN(1., XRTMIN(5)-PRST(JJ))) * & !WHERE(PRST(:)>XRTMIN(5))
           &PCOMPUTE(JJ)
@@ -482,8 +482,6 @@ DO JJ = 1, SIZE(GACC)
     GACC(JJ) = .FALSE.
   END IF
 END DO
-!$acc end kernels
-
 IF(LDSOFT) THEN
 !$acc kernels
   DO JL=1, ISIZE
diff --git a/src/MNH/ice4_sedimentation_split.f90 b/src/MNH/ice4_sedimentation_split.f90
index cd6c6e0c0298f825e3dad8dd06363130e42a62b0..ebd23fb6923ef2b023b899d7014d0252693ad348 100644
--- a/src/MNH/ice4_sedimentation_split.f90
+++ b/src/MNH/ice4_sedimentation_split.f90
@@ -285,6 +285,7 @@ IF (OSEDIC) THEN
 !$acc kernels
    ZCONC_TMP(:,:)=PSEA(:,:)*XCONC_SEA+(1.-PSEA(:,:))*XCONC_LAND
 !$acc end kernels
+#if 0
 !$acc kernels
 !$acc loop independent collapse(3)
     DO JK = KKTB, KKTE
@@ -300,6 +301,20 @@ IF (OSEDIC) THEN
       END DO
     END DO
 !$acc end kernels
+#else
+!$acc kernels present_cr( PSEA, PTOWN, ZCONC3D, ZFSEDC, ZLBC, ZRAY )
+!$acc loop independent
+    DO CONCURRENT( JI = 1 : KIT, JJ = 1 : KJT, JK = KKTB : KKTE )
+      ZLBC(JI,JJ,JK)   = PSEA(JI,JJ)*XLBC(2)+(1.-PSEA(JI,JJ))*XLBC(1)
+      ZFSEDC(JI,JJ,JK) = (PSEA(JI,JJ)*XFSEDC(2)+(1.-PSEA(JI,JJ))*XFSEDC(1))
+      ZFSEDC(JI,JJ,JK) = MAX(MIN(XFSEDC(1),XFSEDC(2)),ZFSEDC(JI,JJ,JK))
+      ZCONC3D(JI,JJ,JK)= (1.-PTOWN(JI,JJ))*ZCONC_TMP(JI,JJ)+PTOWN(JI,JJ)*XCONC_URBAN
+      ZRAY(JI,JJ,JK)   = 0.5*((1.-PSEA(JI,JJ))*GAMMA(XNUC+1.0/XALPHAC)/(GAMMA(XNUC)) + &
+              PSEA(JI,JJ)*GAMMA(XNUC2+1.0/XALPHAC2)/(GAMMA(XNUC2)))
+
+    END DO
+!$acc end kernels
+#endif
   ELSE
 !$acc kernels
         ZCONC3D(:,:,:) = XCONC_LAND
@@ -591,9 +606,8 @@ ZREMAINT(:,:) = PTSTEP
 !$acc update self(ZREMAINT)
 !
 DO WHILE (ANY(ZREMAINT>0.))
-!$acc kernels copyout( ISEDIM )
   ISEDIM = 0
-!$acc loop independent private(IDX)
+!$acc parallel loop private(idx) independent
   DO JK = KKTB,KKTE
 !$acc loop independent collapse(2)
     DO JJ = KJB,KJE
@@ -612,7 +626,6 @@ DO WHILE (ANY(ZREMAINT>0.))
       END DO
     END DO
   END DO
-!$acc end kernels
 !
   !
   !
diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90
index 9253680da88c79e936e3f31a35bcbf559323563b..0ee449851e549714e199b0c4831f77c23a036306 100644
--- a/src/MNH/rain_ice_red.f90
+++ b/src/MNH/rain_ice_red.f90
@@ -1236,6 +1236,7 @@ IF(KRR==7) THEN
     ENDDO
   ENDDO
 ELSE
+#if 0
 !$acc loop independent collapse(3)
   DO JK = 1, KKT
     DO JJ = 1, KJT
@@ -1250,6 +1251,17 @@ ELSE
       ENDDO
     ENDDO
   ENDDO
+#else
+DO CONCURRENT( JI = 1 : KIT, JJ = 1 : KJT, JK = 1 : KKT )
+  ZT(JI,JJ,JK) = PTHT(JI,JJ,JK) * PEXN(JI,JJ,JK)
+  ZZ_LSFACT(JI,JJ,JK)=(XLSTT+(XCPV-XCI)*(ZT(JI,JJ,JK)-XTT))   &
+                   /( XCPD + XCPV*PRVT(JI,JJ,JK) + XCL*(PRCT(JI,JJ,JK)+PRRT(JI,JJ,JK))   &
+                   + XCI*(PRIT(JI,JJ,JK)+PRST(JI,JJ,JK)+PRGT(JI,JJ,JK)))
+  ZZ_LVFACT(JI,JJ,JK)=(XLVTT+(XCPV-XCL)*(ZT(JI,JJ,JK)-XTT))   &
+                   /( XCPD + XCPV*PRVT(JI,JJ,JK) + XCL*(PRCT(JI,JJ,JK)+PRRT(JI,JJ,JK))   &
+                   + XCI*(PRIT(JI,JJ,JK)+PRST(JI,JJ,JK)+PRGT(JI,JJ,JK)))
+END DO
+#endif
 ENDIF
 !$acc end kernels
 !
@@ -1956,6 +1968,7 @@ CALL ICE4_NUCLEATION_WRAPPER(KIT, KJT, KKT, GDNOTMICRO, &
                              PTHT, PPABST, PRHODREF, PEXN, ZLSFACT3D, ZT, &
                              PRVT, &
                              PCIT, ZZ_RVHENI_MR)
+#if 0
 !$acc kernels
 !$acc loop independent collapse(3)
 DO JK = 1, KKT
@@ -1971,6 +1984,18 @@ DO JK = 1, KKT
   ENDDO
 ENDDO
 !$acc end kernels
+#else
+!$acc kernels present_cr( PEXNREF, PRIS, PRVS, PTHS, ZZ_LSFACT, ZZ_LVFACT, ZZ_RVHENI )
+DO CONCURRENT( JI = 1 : KIT, JJ = 1 : KJT, JK = 1 : KKT )
+  ZZ_LSFACT(JI,JJ,JK)=ZZ_LSFACT(JI,JJ,JK)/PEXNREF(JI,JJ,JK)
+  ZZ_LVFACT(JI,JJ,JK)=ZZ_LVFACT(JI,JJ,JK)/PEXNREF(JI,JJ,JK)
+  ZZ_RVHENI(JI,JJ,JK) = MIN(PRVS(JI,JJ,JK), ZZ_RVHENI_MR(JI,JJ,JK)/PTSTEP)
+  PRIS(JI,JJ,JK)=PRIS(JI,JJ,JK)+ZZ_RVHENI(JI,JJ,JK)
+  PRVS(JI,JJ,JK)=PRVS(JI,JJ,JK)-ZZ_RVHENI(JI,JJ,JK)
+  PTHS(JI,JJ,JK)=PTHS(JI,JJ,JK) + ZZ_RVHENI(JI,JJ,JK)*ZZ_LSFACT(JI,JJ,JK)
+END DO
+!$acc end kernels
+#endif
 !$acc update self(PRIS,PRVS,PTHS)
 !
 if ( lbu_enable ) then