diff --git a/src/MNH/ice_adjust.f90 b/src/MNH/ice_adjust.f90
index 1571bc2741f977d4f5903c3392b4fdb2767b7654..a14de1b887439c44344d059270a9d73809d13d69 100644
--- a/src/MNH/ice_adjust.f90
+++ b/src/MNH/ice_adjust.f90
@@ -290,9 +290,6 @@ LOGICAL,DIMENSION(SIZE(PEXNREF,1),SIZE(PEXNREF,2),SIZE(PEXNREF,3)) :: GTEMP
 !
 !$acc declare device_resident(ZEXNS,ZT,ZCPH,ZLV,ZLS,ZW1,ZW2,ZW3,ZW4,ZW5,ZW6,ZW7,ZCND,GTEMP)
 !
-#ifdef _OPENACC
-PRINT *,'OPENACC: ICE_ADJUST being implemented'
-#endif
 !-------------------------------------------------------------------------------
 !
 !*       1.     PRELIMINARIES
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index 87026443097eb2156b3ec7e61d049957dc6b286f..b30c13cc500b24933470b561c0d88332b8bd34d8 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -1,3 +1,4 @@
+#define NOKRR7
 !MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
@@ -454,29 +455,41 @@ REAL, DIMENSION(SIZE(XRTMIN))     :: ZRTMIN
 !
 INTEGER , DIMENSION(SIZE(GMICRO)) :: I1,I2,I3 ! Used to replace the COUNT
 INTEGER                           :: JL       ! and PACK intrinsics
-!$acc declare create(GMICRO,GWET,GHAIL,GDEP,                                      &
-!$acc &              IVEC1,IVEC2,ZVEC1,ZVEC2,ZVEC3,ZW,                            &
+!acc declare create(GMICRO,GWET,GHAIL,GDEP,                                      &
+!acc &              IVEC1,IVEC2,ZVEC1,ZVEC2,ZVEC3,ZW,                            &
+!acc &              ZPRCS,ZPRRS,ZPRSS,ZPRGS,ZPRHS,                               &
+!acc &              ZWSED,ZWSEDW1,ZWSEDW2,ZCONC_TMP,ZT,ZRAY,ZLBC,ZFSEDC,         &
+!acc &              ZRVT,ZRCT,ZRRT,ZRIT,ZRST,ZRGT,ZRHT,ZCIT,                     &
+!acc &              ZRVS,ZRCS,ZRRS,ZRIS,ZRSS,ZRGS,ZRHS,ZTHS,                     &
+!acc &              ZRHODREF,                                                    &
+!acc &              ZRHODJ,ZZT,ZPRES,ZZW,ZLSFACT,ZLVFACT,                        &
+!acc &              ZUSW,ZSSI,ZLBDAS,ZLBDAG,ZLBDAH,                       &
+!acc &              ZAI,ZCJ,ZKA,ZDV,ZZW1,ZRTMIN)                                 &
+!acc & device_resident(GSEDIMR,GSEDIMC,GSEDIMI,GSEDIMS,GSEDIMG,GSEDIMH,          &
+!acc &                 GNEGT,GRIM,GACC,GDRY,GWORK,                               &
+!acc &                 ZCRIAUTI,ZEXNREF,ZLBDAR,ZRDRYG,ZRWETG,ZSIGMA_RC,ZCF,             &
+!acc &                 I1,I2,I3)
+
+!$acc data create(GMICRO,GDEP,                                      &
+!$acc &              ZW,                            &
 !$acc &              ZPRCS,ZPRRS,ZPRSS,ZPRGS,ZPRHS,                               &
 !$acc &              ZWSED,ZWSEDW1,ZWSEDW2,ZCONC_TMP,ZT,ZRAY,ZLBC,ZFSEDC,         &
-!$acc &              ZRVT,ZRCT,ZRRT,ZRIT,ZRST,ZRGT,ZRHT,ZCIT,                     &
-!$acc &              ZRVS,ZRCS,ZRRS,ZRIS,ZRSS,ZRGS,ZRHS,ZTHS,                     &
-!$acc &              ZRHODREF,                                                    &
-!$acc &              ZRHODJ,ZZT,ZPRES,ZZW,ZLSFACT,ZLVFACT,                        &
-!$acc &              ZUSW,ZSSI,ZLBDAS,ZLBDAG,ZLBDAH,                       &
-!$acc &              ZAI,ZCJ,ZKA,ZDV,ZZW1,ZRTMIN)                                 &
-!$acc & device_resident(GSEDIMR,GSEDIMC,GSEDIMI,GSEDIMS,GSEDIMG,GSEDIMH,          &
-!$acc &                 GNEGT,GRIM,GACC,GDRY,GWORK,                               &
-!$acc &                 ZCRIAUTI,ZEXNREF,ZLBDAR,ZRDRYG,ZRWETG,ZSIGMA_RC,ZCF,             &
-!$acc &                 I1,I2,I3)
+!$acc &              ZRTMIN,                                 &
+!$acc &                 GSEDIMR,GSEDIMC,GSEDIMI,GSEDIMS,GSEDIMG,GSEDIMH,          &
+!$acc &                 GNEGT,I1,I2,I3)
 
 !
 #ifdef _OPENACC
-PRINT *,'OPENACC: RAIN_ICE being implemented'
-#endif
-#ifdef _OPENACC
 IF ( KRR == 7 ) THEN
   PRINT *,'OPENACC: RAIN_ICE: KRR=7 being implemented'
-  PRINT *,'OPENACC: RAIN_ICE: KRR=7 not yet tested'
+  CALL ABORT
+END IF
+#endif
+#ifdef NOKRR7
+IF ( KRR == 7 ) THEN
+!PW: warning: KRR=7 use optional arguments that are problematic
+!             for the PGI compiler (at least up to 17.3)
+  PRINT *,'OPENACC: RAIN_ICE: KRR=7 is commented out'
   CALL ABORT
 END IF
 #endif
@@ -509,6 +522,7 @@ CALL RAIN_ICE_NUCLEATION
 GMICRO(:,:,:) = .FALSE.
 
  IF ( KRR == 7 ) THEN
+#ifndef NOKRR7
   GMICRO(IIB:IIE,IJB:IJE,IKTB:IKTE) =                          &
                 PRCT(IIB:IIE,IJB:IJE,IKTB:IKTE)>XRTMIN(2) .OR. &
                 PRRT(IIB:IIE,IJB:IJE,IKTB:IKTE)>XRTMIN(3) .OR. &
@@ -516,6 +530,7 @@ GMICRO(:,:,:) = .FALSE.
                 PRST(IIB:IIE,IJB:IJE,IKTB:IKTE)>XRTMIN(5) .OR. &
                 PRGT(IIB:IIE,IJB:IJE,IKTB:IKTE)>XRTMIN(6) .OR. &
                 PRHT(IIB:IIE,IJB:IJE,IKTB:IKTE)>XRTMIN(7)
+#endif
  ELSE IF( KRR == 6 ) THEN
   GMICRO(IIB:IIE,IJB:IJE,IKTB:IKTE) =                          &
                 PRCT(IIB:IIE,IJB:IJE,IKTB:IKTE)>XRTMIN(2) .OR. &
@@ -540,7 +555,9 @@ IF( IMICRO >= 0 ) THEN
   ALLOCATE(ZRIT(IMICRO))
   ALLOCATE(ZRST(IMICRO))
   ALLOCATE(ZRGT(IMICRO))
+#ifndef NOKRR7
   IF ( KRR == 7 ) ALLOCATE(ZRHT(IMICRO))
+#endif
   ALLOCATE(ZCIT(IMICRO))
   ALLOCATE(ZRVS(IMICRO))
   ALLOCATE(ZRCS(IMICRO))
@@ -548,7 +565,9 @@ IF( IMICRO >= 0 ) THEN
   ALLOCATE(ZRIS(IMICRO))
   ALLOCATE(ZRSS(IMICRO))
   ALLOCATE(ZRGS(IMICRO))
+#ifndef NOKRR7
   IF ( KRR == 7 ) ALLOCATE(ZRHS(IMICRO))
+#endif
   ALLOCATE(ZTHS(IMICRO))
   ALLOCATE(ZRHODREF(IMICRO))
   ALLOCATE(ZZT(IMICRO))
@@ -567,7 +586,9 @@ IF( IMICRO >= 0 ) THEN
   ALLOCATE(ZLBDAR(IMICRO))
   ALLOCATE(ZLBDAS(IMICRO))
   ALLOCATE(ZLBDAG(IMICRO))
+#ifndef NOKRR7
   IF ( KRR == 7 ) ALLOCATE(ZLBDAH(IMICRO))
+#endif
   ALLOCATE(ZRDRYG(IMICRO))
   ALLOCATE(ZRWETG(IMICRO))
   ALLOCATE(ZAI(IMICRO))
@@ -577,12 +598,23 @@ IF( IMICRO >= 0 ) THEN
   ALLOCATE(GWORK(IMICRO))
 !
   IF ( KRR == 7 ) THEN
+#ifndef NOKRR7
     ALLOCATE(ZZW1(IMICRO,7))
+#endif
   ELSE IF( KRR == 6 ) THEN
     ALLOCATE(ZZW1(IMICRO,6))
   ENDIF
+!$acc data create(ZRVT,ZRCT,ZRRT,ZRIT,ZRST,ZRGT,ZRHT,ZCIT,                     &
+!$acc &              ZRVS,ZRCS,ZRRS,ZRIS,ZRSS,ZRGS,ZRHS,ZTHS,                     &
+!$acc &              ZRHODREF,                                                    &
+!$acc &              ZZT,ZPRES,ZZW,ZLSFACT,ZLVFACT,                        &
+!$acc &              ZUSW,ZSSI,ZLBDAS,ZLBDAG,ZLBDAH,                       &
+!$acc &              ZAI,ZCJ,ZKA,ZDV,ZZW1,                                 &
+!$acc &                 GWORK,                               &
+!$acc &                 ZEXNREF,ZLBDAR,ZRDRYG,ZRWETG,ZSIGMA_RC,ZCF)
 !
 !$acc kernels
+!$acc loop independent
   DO JL=1,IMICRO
     ZRVT(JL) = PRVT(I1(JL),I2(JL),I3(JL))
     ZRCT(JL) = PRCT(I1(JL),I2(JL),I3(JL))
@@ -606,12 +638,14 @@ IF( IMICRO >= 0 ) THEN
     ZEXNREF(JL) = PEXNREF(I1(JL),I2(JL),I3(JL))
   ENDDO
   !
+#ifndef NOKRR7
   IF (KRR == 7 ) THEN
     DO JL=1,IMICRO
       ZRHT(JL) = PRHT(I1(JL),I2(JL),I3(JL))
       ZRHS(JL) = PRHS(I1(JL),I2(JL),I3(JL))
     ENDDO
   ENDIF
+#endif
 !
   IF ( HSUBG_AUCV == 'SIGM') THEN
     DO JL=1,IMICRO
@@ -694,9 +728,11 @@ IF( IMICRO >= 0 ) THEN
 !*       6.     COMPUTES THE FAST COLD PROCESS SOURCES FOR r_h
 !               ----------------------------------------------
 !
+#ifndef NOKRR7
  IF ( KRR == 7 ) THEN
   CALL RAIN_ICE_FAST_RH
  END IF
+#endif
 !
 !-------------------------------------------------------------------------------
 !
@@ -724,16 +760,19 @@ IF( IMICRO >= 0 ) THEN
   PRSS(:,:,:) = UNPACK( ZRSS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
   ZW(:,:,:) = PRGS(:,:,:)
   PRGS(:,:,:) = UNPACK( ZRGS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+#ifndef NOKRR7
   IF ( KRR == 7 ) THEN
     ZW(:,:,:) = PRHS(:,:,:)
     PRHS(:,:,:) = UNPACK( ZRHS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
   END IF
+#endif
   ZW(:,:,:) = PTHS(:,:,:)
   PTHS(:,:,:) = UNPACK( ZTHS(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
   ZW(:,:,:) = PCIT(:,:,:)
   PCIT(:,:,:) = UNPACK( ZCIT(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
 #else
 !$acc kernels
+!$acc loop independent
   DO JL=1,IMICRO
     PRVS(I1(JL),I2(JL),I3(JL)) = ZRVS(JL)
     PRCS(I1(JL),I2(JL),I3(JL)) = ZRCS(JL)
@@ -745,6 +784,7 @@ IF( IMICRO >= 0 ) THEN
     PCIT(I1(JL),I2(JL),I3(JL)) = ZCIT(JL)
   END DO
 !$acc end kernels
+#ifndef NOKRR7
   IF ( KRR == 7 ) THEN
 !$acc kernels
     DO JL=1,IMICRO
@@ -752,10 +792,12 @@ IF( IMICRO >= 0 ) THEN
     END DO
 !$acc end kernels
   END IF
+#endif
 #endif  
 !
 !
 !
+!$acc end data
   DEALLOCATE(ZZW1)
   DEALLOCATE(GWORK)
   DEALLOCATE(ZDV)
@@ -763,7 +805,9 @@ IF( IMICRO >= 0 ) THEN
   DEALLOCATE(ZRDRYG)
   DEALLOCATE(ZRWETG)
   DEALLOCATE(ZLBDAG)
+#ifndef NOKRR7
   IF ( KRR == 7 ) DEALLOCATE(ZLBDAH)
+#endif
   DEALLOCATE(ZLBDAS)
   DEALLOCATE(ZLBDAR)
   DEALLOCATE(ZSSI)
@@ -777,7 +821,9 @@ IF( IMICRO >= 0 ) THEN
   DEALLOCATE(ZZT)
   IF(LBU_ENABLE .OR. LLES_CALL) DEALLOCATE(ZRHODJ)
   DEALLOCATE(ZTHS)
+#ifndef NOKRR7
   IF ( KRR == 7 ) DEALLOCATE(ZRHS)
+#endif
   DEALLOCATE(ZRGS)
   DEALLOCATE(ZRSS)
   DEALLOCATE(ZRIS)
@@ -786,7 +832,9 @@ IF( IMICRO >= 0 ) THEN
   DEALLOCATE(ZRVS)
   DEALLOCATE(ZCIT)
   DEALLOCATE(ZRGT)
+#ifndef NOKRR7
   IF ( KRR == 7 ) DEALLOCATE(ZRHT)
+#endif
   DEALLOCATE(ZRST)
   DEALLOCATE(ZRIT)
   DEALLOCATE(ZRRT)
@@ -865,6 +913,7 @@ IF( IMICRO >= 0 ) THEN
  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'GMLT_BU_RRR')
  IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'GMLT_BU_RRG')
 
+#ifndef NOKRR7
  IF(KRR==7) THEN ! rain_ice_fast_rh
    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'WETH_BU_RTH')
    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7,'WETH_BU_RRC')
@@ -879,6 +928,7 @@ IF( IMICRO >= 0 ) THEN
    IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8,'HMLT_BU_RRR')
    IF (LBUDGET_RH) CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'HMLT_BU_RRH')
  ENDIF
+#endif
 
  !rain_ice_fast_ri
  IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'IMLT_BU_RTH')
@@ -911,6 +961,7 @@ ELSE
   STOP
 END IF
 !
+!$acc end data
 !
 !-------------------------------------------------------------------------------
 !
@@ -964,7 +1015,9 @@ PINPRR (:,:) = 0.
 PINPRR3D (:,:,:) = 0.
 PINPRS (:,:) = 0.
 PINPRG (:,:) = 0.
+#ifndef NOKRR7
 IF ( KRR == 7 ) PINPRH (:,:) = 0.   
+#endif
 !$acc end kernels
 !
 !*       1. Parameters for cloud sedimentation
@@ -1006,11 +1059,27 @@ IF ( KRR == 7 ) PINPRH (:,:) = 0.
 !$acc kernels
 ZRTMIN(:)    = XRTMIN(:) * ZINVTSTEP
 IF (OSEDIC) GSEDIMC(:,:,:) = .FALSE.
+#if 0
 GSEDIMR(:,:,:) = .FALSE.
 GSEDIMI(:,:,:) = .FALSE.
 GSEDIMS(:,:,:) = .FALSE.
 GSEDIMG(:,:,:) = .FALSE.
+#else
+!$acc loop collapse(3) independent
+DO JK=1,SIZE(GSEDIMR,3)
+  DO JJ=1,SIZE(GSEDIMR,2)
+    DO JI=1,SIZE(GSEDIMR,1)
+      GSEDIMR(JI,JJ,JK) = .FALSE.
+      GSEDIMI(JI,JJ,JK) = .FALSE.
+      GSEDIMS(JI,JJ,JK) = .FALSE.
+      GSEDIMG(JI,JJ,JK) = .FALSE.
+    END DO
+  END DO
+END DO
+#endif
+#ifndef NOKRR7
 IF ( KRR == 7 ) GSEDIMH(:,:,:) = .FALSE.
+#endif
 !
 ! ZPiS = Specie i source creating during the current time step
 ! PRiS = Source of the previous time step
@@ -1019,14 +1088,47 @@ IF (OSEDIC) THEN
   ZPRCS(:,:,:) = PRCS(:,:,:)-PRCT(:,:,:)* ZINVTSTEP
   PRCS(:,:,:)  = PRCT(:,:,:)* ZINVTSTEP
 END IF
+#if 0
 ZPRRS(:,:,:) = PRRS(:,:,:)-PRRT(:,:,:)* ZINVTSTEP
 ZPRSS(:,:,:) = PRSS(:,:,:)-PRST(:,:,:)* ZINVTSTEP
 ZPRGS(:,:,:) = PRGS(:,:,:)-PRGT(:,:,:)* ZINVTSTEP
+#ifndef NOKRR7
 IF ( KRR == 7 ) ZPRHS(:,:,:) = PRHS(:,:,:)-PRHT(:,:,:)* ZINVTSTEP
+#endif
 PRRS(:,:,:)  = PRRT(:,:,:)* ZINVTSTEP
 PRSS(:,:,:)  = PRST(:,:,:)* ZINVTSTEP
 PRGS(:,:,:)  = PRGT(:,:,:)* ZINVTSTEP
+#ifndef NOKRR7
 IF ( KRR == 7 ) PRHS(:,:,:)  = PRHT(:,:,:)* ZINVTSTEP
+#endif
+#else
+!$acc loop collapse(3) independent
+DO JK=IKTB,IKTE
+  DO JJ=IJB,IJE
+    DO JI=IIB,IIE
+      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
+#ifndef NOKRR7
+IF ( KRR == 7 ) THEN
+!$acc loop collapse(3) independent
+  DO JK=IKTB,IKTE
+    DO JJ=IJB,IJE
+      DO JI=IIB,IIE
+        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 IF
+#endif
+#endif
 !$acc end kernels
 !
 ! PRiS = Source of the previous time step + source created during the subtime
@@ -1039,7 +1141,9 @@ DO JN = 1 , KSPLITR
    PRRS(:,:,:) = PRRS(:,:,:) + ZPRRS(:,:,:)/KSPLITR
    PRSS(:,:,:) = PRSS(:,:,:) + ZPRSS(:,:,:)/KSPLITR
    PRGS(:,:,:) = PRGS(:,:,:) + ZPRGS(:,:,:)/KSPLITR
+#ifndef NOKRR7
    IF ( KRR == 7 ) PRHS(:,:,:) = PRHS(:,:,:) + ZPRHS(:,:,:)/KSPLITR
+#endif
    DO JK = IKTB , IKTE
      ZW(:,:,JK) =ZTSPLITR/(PRHODREF(:,:,JK)* PDZZ(:,:,JK))
    END DO
@@ -1048,8 +1152,11 @@ DO JN = 1 , KSPLITR
    PRRS(:,:,:) = PRRS(:,:,:) + ZPRRS(:,:,:)*ZTSPLITR
    PRSS(:,:,:) = PRSS(:,:,:) + ZPRSS(:,:,:)*ZTSPLITR
    PRGS(:,:,:) = PRGS(:,:,:) + ZPRGS(:,:,:)*ZTSPLITR
+#ifndef NOKRR7
    IF ( KRR == 7 ) PRHS(:,:,:) = PRHS(:,:,:) + ZPRHS(:,:,:)*ZTSPLITR
+#endif
  END IF
+#if 0
  IF (OSEDIC) GSEDIMC(IIB:IIE,IJB:IJE,IKTB:IKTE) =                &
                   PRCS(IIB:IIE,IJB:IJE,IKTB:IKTE)>ZRTMIN(2)
  GSEDIMR(IIB:IIE,IJB:IJE,IKTB:IKTE) =                            &
@@ -1060,8 +1167,45 @@ DO JN = 1 , KSPLITR
                   PRSS(IIB:IIE,IJB:IJE,IKTB:IKTE)>ZRTMIN(5)
  GSEDIMG(IIB:IIE,IJB:IJE,IKTB:IKTE) =                            &
                   PRGS(IIB:IIE,IJB:IJE,IKTB:IKTE)>ZRTMIN(6)
+#ifndef NOKRR7
  IF ( KRR == 7 ) GSEDIMH(IIB:IIE,IJB:IJE,IKTB:IKTE) =            &
                   PRHS(IIB:IIE,IJB:IJE,IKTB:IKTE)>ZRTMIN(7)
+#endif
+#else
+ IF (OSEDIC) THEN
+!$acc loop collapse(3) independent
+   DO JK=IKTB,IKTE
+     DO JJ=IJB,IJE
+       DO JI=IIB,IIE
+         GSEDIMC(JI,JJ,JK) = PRCS(JI,JJ,JK)>ZRTMIN(2)
+       END DO
+     END DO
+   END DO
+ END IF
+!$acc loop collapse(3) independent
+ DO JK=IKTB,IKTE
+   DO JJ=IJB,IJE
+     DO JI=IIB,IIE
+       GSEDIMR(JI,JJ,JK) = PRRS(JI,JJ,JK)>ZRTMIN(3)
+       GSEDIMI(JI,JJ,JK) = PRIS(JI,JJ,JK)>ZRTMIN(4)
+       GSEDIMS(JI,JJ,JK) = PRSS(JI,JJ,JK)>ZRTMIN(5)
+       GSEDIMG(JI,JJ,JK) = PRGS(JI,JJ,JK)>ZRTMIN(6)
+     END DO
+   END DO
+ END DO
+#ifndef NOKRR7
+IF ( KRR == 7 ) THEN
+!$acc loop collapse(3) independent
+   DO JK=IKTB,IKTE
+     DO JJ=IJB,IJE
+       DO JI=IIB,IIE
+         GSEDIMH(JI,JJ,JK) = PRHS(JI,JJ,JK)>ZRTMIN(7)
+       END DO
+     END DO
+   END DO
+ END IF
+#endif
+#endif
 !$acc end kernels
 !
 #ifndef _OPENACC
@@ -1077,8 +1221,10 @@ DO JN = 1 , KSPLITR
  CALL COUNTJV3D_DEVICE(GSEDIMI,II1,II2,II3,ISEDIMI)
  CALL COUNTJV3D_DEVICE(GSEDIMS,IS1,IS2,IS3,ISEDIMS)
  CALL COUNTJV3D_DEVICE(GSEDIMG,IG1,IG2,IG3,ISEDIMG)
+#ifndef NOKRR7
  IF ( KRR == 7 ) CALL COUNTJV3D_DEVICE(GSEDIMH,IH1,IH2,IH3,ISEDIMH)
 #endif
+#endif
 !
 !*       2.1   for cloud
 !
@@ -1087,6 +1233,7 @@ DO JN = 1 , KSPLITR
     ZWSED(:,:,:) = 0.
     IF( JN==1 ) PRCS(:,:,:) = PRCS(:,:,:) * PTSTEP
 !
+!$acc loop independent
     DO JL=1,ISEDIMC
       ZRSLOC = PRCS(IC1(JL),IC2(JL),IC3(JL))
       ZRTLOC = PRCT(IC1(JL),IC2(JL),IC3(JL))
@@ -1122,6 +1269,7 @@ DO JN = 1 , KSPLITR
       END IF
     END DO
 !
+!$acc loop independent
     DO JK = IKTB , IKTE
       PRCS(:,:,JK) = PRCS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
     END DO
@@ -1136,6 +1284,7 @@ DO JN = 1 , KSPLITR
   IF( JN==1 ) PRRS(:,:,:) = PRRS(:,:,:) * PTSTEP
   ZWSED(:,:,:) = 0.
 !
+!$acc loop independent
   DO JL=1,ISEDIMR
     ZRSLOC = PRRS(IR1(JL),IR2(JL),IR3(JL))
     IF( ZRSLOC .GT. ZRTMIN(3) ) THEN
@@ -1150,6 +1299,7 @@ DO JN = 1 , KSPLITR
     END IF
   END DO
 !
+!$acc loop independent
   DO JK = IKTB , IKTE
     PRRS(:,:,JK) = PRRS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
   END DO
@@ -1164,6 +1314,7 @@ DO JN = 1 , KSPLITR
   IF( JN==1 ) PRIS(:,:,:) = PRIS(:,:,:) * PTSTEP
   ZWSED(:,:,:) = 0.
 !
+!$acc loop independent
   DO JL=1,ISEDIMI
     ZRSLOC = PRIS(II1(JL),II2(JL),II3(JL))
     IF( ZRSLOC .GT.  MAX(ZRTMIN(4),1.0E-7 )) THEN ! limitation of the McF&H formula
@@ -1182,6 +1333,7 @@ DO JN = 1 , KSPLITR
     END IF
   END DO
 !
+!$acc loop independent
   DO JK = IKTB , IKTE
     PRIS(:,:,JK) = PRIS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
   END DO
@@ -1194,6 +1346,7 @@ DO JN = 1 , KSPLITR
   IF( JN==1 ) PRSS(:,:,:) = PRSS(:,:,:) * PTSTEP
   ZWSED(:,:,:) = 0.
 !
+!$acc loop independent
   DO JL=1,ISEDIMS
     ZRSLOC = PRSS(IS1(JL),IS2(JL),IS3(JL))
     IF( ZRSLOC .GT. ZRTMIN(5) ) THEN
@@ -1208,6 +1361,7 @@ DO JN = 1 , KSPLITR
     END IF
   END DO
 !
+!$acc loop independent
   DO JK = IKTB , IKTE
     PRSS(:,:,JK) = PRSS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
   END DO
@@ -1221,6 +1375,7 @@ DO JN = 1 , KSPLITR
   ZWSED(:,:,:) = 0.
   IF( JN==1 ) PRGS(:,:,:) = PRGS(:,:,:) * PTSTEP
 !
+!$acc loop independent
   DO JL=1,ISEDIMG
     ZRSLOC = PRGS(IG1(JL),IG2(JL),IG3(JL))
     IF( ZRSLOC .GT. ZRTMIN(6) ) THEN
@@ -1235,6 +1390,7 @@ DO JN = 1 , KSPLITR
     END IF
   END DO
 !
+!$acc loop independent
   DO JK = IKTB , IKTE
     PRGS(:,:,JK) = PRGS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
   END DO
@@ -1245,10 +1401,12 @@ DO JN = 1 , KSPLITR
 !
 !*       2.6   for hail
 !
+#ifndef NOKRR7
   IF ( KRR == 7 ) THEN
   IF( JN==1 ) PRHS(:,:,:) = PRHS(:,:,:) * PTSTEP
   ZWSED(:,:,:) = 0.
 !
+!$acc loop independent
   DO JL=1,ISEDIMH
     ZRSLOC = PRHS(IH1(JL),IH2(JL),IH3(JL))
     IF( ZRSLOC .GT. ZRTMIN(7) ) THEN
@@ -1263,6 +1421,7 @@ DO JN = 1 , KSPLITR
     END IF
   END DO
 !
+!$acc loop independent
   DO JK = IKTB , IKTE
     PRHS(:,:,JK) = PRHS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
   END DO
@@ -1271,6 +1430,7 @@ DO JN = 1 , KSPLITR
     PRHS(:,:,:) = PRHS(:,:,:) * ZINVTSTEP
   END IF
   END IF ! KRR==7
+#endif
 !$acc end kernels
 !
 END DO
@@ -1297,10 +1457,12 @@ IF (LBUDGET_RG) THEN
 !$acc update self(PRGS)
   CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'SEDI_BU_RRG')
 END IF
+#ifndef NOKRR7
 IF ( KRR == 7 .AND. LBUDGET_RH) THEN
 !$acc update self(PRHS)
   CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'SEDI_BU_RRH')
 END IF
+#endif
 !
 !
 !*       2.4  DROPLET DEPOSITION AT THE 1ST LEVEL ABOVE GROUND
@@ -1361,7 +1523,9 @@ PINPRR (:,:) = 0.
 PINPRR3D (:,:,:) = 0.
 PINPRS (:,:) = 0.
 PINPRG (:,:) = 0.
+#ifndef NOKRR7
 IF ( KRR == 7 ) PINPRH (:,:) = 0.          
+#endif
 ! 
 !
 !*       1. Parameters for cloud sedimentation
@@ -1405,22 +1569,30 @@ END IF
 ZPRRS(:,:,:) = 0.0
 ZPRSS(:,:,:) = 0.0
 ZPRGS(:,:,:) = 0.0
+#ifndef NOKRR7
 IF ( KRR == 7 ) ZPRHS(:,:,:) = 0.0
+#endif
 !
 ZPRRS(:,:,:) = PRRS(:,:,:)-PRRT(:,:,:)* ZINVTSTEP
 ZPRSS(:,:,:) = PRSS(:,:,:)-PRST(:,:,:)* ZINVTSTEP
 ZPRGS(:,:,:) = PRGS(:,:,:)-PRGT(:,:,:)* ZINVTSTEP
+#ifndef NOKRR7
 IF ( KRR == 7 ) ZPRHS(:,:,:) = PRHS(:,:,:)-PRHT(:,:,:)* ZINVTSTEP
+#endif
 PRRS(:,:,:)  = PRRT(:,:,:)* ZINVTSTEP
 PRSS(:,:,:)  = PRST(:,:,:)* ZINVTSTEP
 PRGS(:,:,:)  = PRGT(:,:,:)* ZINVTSTEP
+#ifndef NOKRR7
 IF ( KRR == 7 ) PRHS(:,:,:)  = PRHT(:,:,:)* ZINVTSTEP
+#endif
 !
 IF (OSEDIC) PRCS(:,:,:) = PRCS(:,:,:) + ZPRCS(:,:,:)
 PRRS(:,:,:) = PRRS(:,:,:) + ZPRRS(:,:,:)
 PRSS(:,:,:) = PRSS(:,:,:) + ZPRSS(:,:,:)
 PRGS(:,:,:) = PRGS(:,:,:) + ZPRGS(:,:,:)
+#ifndef NOKRR7
 IF ( KRR == 7 ) PRHS(:,:,:) = PRHS(:,:,:) + ZPRHS(:,:,:)
+#endif
 DO JK = IKTB , IKTE
   ZW(:,:,JK) =PTSTEP/(PRHODREF(:,:,JK)* PDZZ(:,:,JK) )
 END DO
@@ -1772,6 +1944,7 @@ END DO
 !
 !*       2.6   for hail
 !
+#ifndef NOKRR7
  IF ( KRR == 7 ) THEN
      PRHS(:,:,:) = PRHS(:,:,:) * PTSTEP       
      ZWSED(:,:,:) = 0.
@@ -1831,6 +2004,7 @@ END DO
      PRHS(:,:,:) = PRHS(:,:,:) * ZINVTSTEP
 
  ENDIF
+#endif
 !
 
 !
@@ -1842,9 +2016,10 @@ IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'SEDI_BU_RRR')
 IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9 ,'SEDI_BU_RRI')
 IF (LBUDGET_RS) CALL BUDGET (PRSS(:,:,:)*PRHODJ(:,:,:),10,'SEDI_BU_RRS')
 IF (LBUDGET_RG) CALL BUDGET (PRGS(:,:,:)*PRHODJ(:,:,:),11,'SEDI_BU_RRG')
+#ifndef NOKRR7
 IF ( KRR == 7 .AND. LBUDGET_RH) &     
                 CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'SEDI_BU_RRH')
-
+#endif
 !
 !
 !*       2.4  DROPLET DEPOSITION AT THE 1ST LEVEL ABOVE GROUND
@@ -1900,7 +2075,18 @@ ZT(:,:,:) = PTHT(:,:,:) * BR_POW(PPABST(:,:,:)/XP00,XRD/XCPD)
 !  the temperature is negative only !!!
 !
 GNEGT(:,:,:) = .FALSE.
+#if 0
 GNEGT(IIB:IIE,IJB:IJE,IKTB:IKTE) = ZT(IIB:IIE,IJB:IJE,IKTB:IKTE)<XTT
+#else
+!$acc loop collapse(3) independent
+DO JK=IKTB,IKTE
+  DO JJ=IJB,IJE
+    DO JI=IIB,IIE
+      GNEGT(JI,JJ,JK) = ZT(JI,JJ,JK)<XTT
+    END DO
+  END DO
+END DO
+#endif
 !$acc end kernels
 #ifndef _OPENACC
 INEGT = COUNTJV3D( GNEGT(:,:,:),I1(:),I2(:),I3(:))
@@ -1979,9 +2165,11 @@ IF( INEGT >= 1 ) THEN
     PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
     PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
     IF ( KRR == 7 ) THEN
+#ifndef NOKRR7
       PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(XLSTT+(XCPV-XCI)*(ZT(:,:,:)-XTT))   &
                    /( (XCPD + XCPV*PRVT(:,:,:) + XCL*(PRCT(:,:,:)+PRRT(:,:,:))   &
        + XCI*(PRIT(:,:,:)+PRST(:,:,:)+PRGT(:,:,:)+PRHT(:,:,:)))*PEXNREF(:,:,:) )
+#endif
     ELSE IF( KRR == 6 ) THEN
       PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(XLSTT+(XCPV-XCI)*(ZT(:,:,:)-XTT))   &
                    /( (XCPD + XCPV*PRVT(:,:,:) + XCL*(PRCT(:,:,:)+PRRT(:,:,:))   &
@@ -2413,6 +2601,7 @@ REAL :: ZCRIAUTC             ! Critical cloud mixing ratio
     PEVAP3D(:,:,:)=UNPACK(ZZW(:),MASK=GMICRO(:,:,:),FIELD=0.0)
 #else
 !$acc kernels
+!$acc loop independent
   DO JL=1,IMICRO
     PEVAP3D(I1(JL),I2(JL),I3(JL)) = ZZW(JL)
   END DO
@@ -2442,6 +2631,7 @@ REAL,DIMENSION(SIZE(ZZW1,1)) :: ZTMP
 !
   ALLOCATE(GRIM(IMICRO))
   ALLOCATE(I1(IMICRO)) !I1 is bigger than necessary but it easier to do it now (instead of computing IGRIM before allocating I1)
+!$acc data create(GRIM)
 !
 !$acc kernels
   ZZW1(:,:) = 0.0
@@ -2463,6 +2653,7 @@ REAL,DIMENSION(SIZE(ZZW1,1)) :: ZTMP
     ALLOCATE(ZVEC2(IGRIM))
     ALLOCATE(IVEC1(IGRIM))
     ALLOCATE(IVEC2(IGRIM))
+!$acc data create(IVEC1,IVEC2,ZVEC1,ZVEC2)
 !
 !        5.1.1  select the ZLBDAS
 !
@@ -2568,6 +2759,7 @@ REAL,DIMENSION(SIZE(ZZW1,1)) :: ZTMP
       ZTHS(:) = ZTHS(:) + ZZW1(:,2)*(ZLSFACT(:)-ZLVFACT(:)) ! f(L_f*(RCRIMSG))
     END WHERE
 !$acc end kernels
+!$acc end data
     DEALLOCATE(IVEC2)
     DEALLOCATE(IVEC1)
     DEALLOCATE(ZVEC2)
@@ -2589,11 +2781,13 @@ REAL,DIMENSION(SIZE(ZZW1,1)) :: ZTMP
 !$acc update self(ZRGS)
     CALL BUDGET (UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),     11,'RIM_BU_RRG')
   END IF
+!$acc end data
   DEALLOCATE(GRIM)
 !
 !*       5.2    rain accretion onto the aggregates
 !
   ALLOCATE(GACC(IMICRO))
+!$acc data create(GACC)
 !$acc kernels
   ZZW1(:,2:3) = 0.0
   GACC(:) = (ZRRT(:)>XRTMIN(3)) .AND. (ZRST(:)>XRTMIN(5)) .AND.            &
@@ -2614,6 +2808,7 @@ REAL,DIMENSION(SIZE(ZZW1,1)) :: ZTMP
     ALLOCATE(ZVEC3(IGACC))
     ALLOCATE(IVEC1(IGACC))
     ALLOCATE(IVEC2(IGACC))
+!$acc data create(IVEC1,IVEC2,ZVEC1,ZVEC2,ZVEC3)
 !
 !        5.2.1  select the (ZLBDAS,ZLBDAR) couplet
 !
@@ -2774,12 +2969,14 @@ END DO
                  ! f(L_f*(RRACCSG))
     END WHERE
 !$acc end kernels
+!$acc end data
     DEALLOCATE(IVEC2)
     DEALLOCATE(IVEC1)
     DEALLOCATE(ZVEC3)
     DEALLOCATE(ZVEC2)
     DEALLOCATE(ZVEC1)
   END IF
+!$acc end data
   DEALLOCATE(GACC)
   DEALLOCATE(I1)
   IF (LBUDGET_TH) THEN
@@ -2859,11 +3056,12 @@ IMPLICIT NONE
 !
 INTEGER                          :: JL
 INTEGER,DIMENSION(:),ALLOCATABLE :: I1
-!$acc declare device_resident(I1)
+!acc declare device_resident(I1)
 !
 !-------------------------------------------------------------------------------
   ALLOCATE(GDRY(IMICRO))
   ALLOCATE(I1(IMICRO)) !I1 is bigger than necessary but it easier to do it now (instead of computing IGDRY before allocating I1)
+!$acc data create(GDRY,I1)
 !
 !*       6.1    rain contact freezing
 !
@@ -2913,7 +3111,7 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
 !
 !*       6.2    compute the Dry growth case
 !
-!$acc kernels copyin(XRTMIN) default(none) &
+!$acc kernels copyin(XRTMIN) &
 !$acc & present(ZZW1,GWORK,ZRGT,ZRCT,ZRCS,ZRIT,ZRIS,ZLBDAG,ZRHODREF,ZZW)
   ZZW1(:,:) = 0.0
   GWORK(:) = (ZRGT(:)>XRTMIN(6)) .AND. ((ZRCT(:)>XRTMIN(2) .AND. ZRCS(:)>0.0))
@@ -2957,6 +3155,7 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
     ALLOCATE(ZVEC3(IGDRY))
     ALLOCATE(IVEC1(IGDRY))
     ALLOCATE(IVEC2(IGDRY))
+!$acc data create(IVEC1,IVEC2,ZVEC1,ZVEC2,ZVEC3)
 !
 !*       6.2.3  select the (ZLBDAG,ZLBDAS) couplet
 !
@@ -3034,6 +3233,7 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
 #endif
     END WHERE
 !$acc end kernels
+!$acc end data
     DEALLOCATE(IVEC2)
     DEALLOCATE(IVEC1)
     DEALLOCATE(ZVEC3)
@@ -3043,7 +3243,7 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
 !
 !*       6.2.6  accretion of raindrops on the graupeln
 !
-!$acc kernels
+!$acc kernels present(GDRY)
   GDRY(:) = (ZRRT(:)>XRTMIN(3)) .AND. (ZRGT(:)>XRTMIN(6)) .AND. (ZRRS(:)>0.0)
 !$acc end kernels
 #ifndef _OPENACC
@@ -3061,6 +3261,7 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
     ALLOCATE(ZVEC3(IGDRY))
     ALLOCATE(IVEC1(IGDRY))
     ALLOCATE(IVEC2(IGDRY))
+!$acc data create(IVEC1,IVEC2,ZVEC1,ZVEC2,ZVEC3)
 !
 !*       6.2.8  select the (ZLBDAG,ZLBDAR) couplet
 !
@@ -3136,6 +3337,7 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
 #endif
     END WHERE
 !$acc end kernels
+!$acc end data
     DEALLOCATE(IVEC2)
     DEALLOCATE(IVEC1)
     DEALLOCATE(ZVEC3)
@@ -3143,7 +3345,9 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
     DEALLOCATE(ZVEC1)
   END IF
 !
+!$acc end data
   DEALLOCATE(GDRY)
+  DEALLOCATE(I1)
 !
 !$acc kernels copyin(XRTMIN,XEX0DEPG,XEX1DEPG) &
 !$acc & present(ZZW,ZRWETG,ZRGT,ZZW1,ZRIS,ZRSS,ZRVT,ZZT,ZPRES,ZKA,ZDV,ZLBDAG,ZCJ)
@@ -3194,6 +3398,7 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
 !
   ZZW(:) = 0.0
   IF     ( KRR == 7 ) THEN
+#ifndef NOKRR7
     GWORK(:) = ZRGT(:)>XRTMIN(6) .AND. ZZT(:)<XTT .AND. & ! Wet
                ZRDRYG(:)>=ZRWETG(:) .AND. ZRWETG(:)>0.0   ! case
     WHERE( GWORK(:) )
@@ -3222,6 +3427,7 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
      ZTHS(:) = ZTHS(:) + ZZW1(:,7)*(ZLSFACT(:)-ZLVFACT(:))
                                                  ! f(L_f*(RCWETG+RRWETG))
     END WHERE
+#endif
   ELSE IF( KRR == 6 ) THEN
     GWORK(:) = ZRGT(:)>XRTMIN(6) .AND. ZZT(:)<XTT .AND. & ! Wet
                ZRDRYG(:)>=ZRWETG(:) .AND. ZRWETG(:)>0.0   ! case
@@ -3262,13 +3468,14 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
 !$acc update self(ZRGS)
     CALL BUDGET  (UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),    11,'WETG_BU_RRG')
   END IF
+#ifndef NOKRR7
   IF ( KRR == 7 ) THEN
     IF (LBUDGET_RH) THEN
 !$acc update self(ZRHS)
       CALL BUDGET(UNPACK(ZRHS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),    12,'WETG_BU_RRH')
     END IF
   END IF
-
+#endif
 !
 !$acc kernels
   GWORK(:) = ZRGT(:)>XRTMIN(6) .AND. ZZT(:)<XTT .AND. &
@@ -3315,7 +3522,7 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
 !
 !*       6.5    Melting of the graupeln
 !
-!$acc kernels default(none) copyin(XRTMIN,XEX0DEPG,XEX1DEPG) &
+!$acc kernels copyin(XRTMIN,XEX0DEPG,XEX1DEPG) &
 !$acc & present(ZZW,ZRRS,ZRGT,ZTHS,ZRGS,ZZW1,ZRVT,ZZT,ZPRES,ZKA,ZDV,ZLBDAG,ZCJ,ZLSFACT,ZLVFACT)
   ZZW(:) = 0.0
   GWORK(:) = (ZRGT(:)>XRTMIN(6)) .AND. (ZRGS(:)>0.0) .AND. (ZZT(:)>XTT)
@@ -3360,13 +3567,13 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: I1
       CALL BUDGET (UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:,:),FIELD=0.0),    11,'GMLT_BU_RRG')
     END IF
 !
-  DEALLOCATE(I1)
 !
   END SUBROUTINE RAIN_ICE_FAST_RG
 !
 !-------------------------------------------------------------------------------
 !
 !
+#ifndef NOKRR7
   SUBROUTINE RAIN_ICE_FAST_RH
 !
 !*      0. DECLARATIONS
@@ -3417,6 +3624,7 @@ CALL ABORT
       ALLOCATE(ZVEC3(IGWET))
       ALLOCATE(IVEC1(IGWET))
       ALLOCATE(IVEC2(IGWET))
+!$acc data create(IVEC1,IVEC2,ZVEC1,ZVEC2,ZVEC3)
 !
 !*       7.2.3  select the (ZLBDAH,ZLBDAS) couplet
 !
@@ -3466,6 +3674,7 @@ CALL ABORT
                             XLBSWETH2/( ZLBDAH(:)   * ZLBDAS(:)   ) + &
                             XLBSWETH3/(               ZLBDAS(:)**2) ) )
       END WHERE
+!$acc end data
       DEALLOCATE(IVEC2)
       DEALLOCATE(IVEC1)
       DEALLOCATE(ZVEC3)
@@ -3487,6 +3696,7 @@ CALL ABORT
       ALLOCATE(ZVEC3(IGWET))
       ALLOCATE(IVEC1(IGWET))
       ALLOCATE(IVEC2(IGWET))
+!$acc data create(IVEC1,IVEC2,ZVEC1,ZVEC2,ZVEC3)
 !
 !*       7.2.8  select the (ZLBDAH,ZLBDAG) couplet
 !
@@ -3536,6 +3746,7 @@ CALL ABORT
                             XLBGWETH2/( ZLBDAH(:)   * ZLBDAG(:)   ) + &
                             XLBGWETH3/(               ZLBDAG(:)**2) ) ),0. )
       END WHERE
+!$acc end data
       DEALLOCATE(IVEC2)
       DEALLOCATE(IVEC1)
       DEALLOCATE(ZVEC3)
@@ -3680,6 +3891,7 @@ IF (LBUDGET_RH) CALL BUDGET (                                                  &
                                                                12,'HMLT_BU_RRH')
 !
 END SUBROUTINE RAIN_ICE_FAST_RH
+#endif
 !
 !-------------------------------------------------------------------------------
 !
@@ -3806,20 +4018,24 @@ INTEGER,                   INTENT(OUT) :: IC       ! Count
 !
 !*       0.2  declaration of local variables
 !
-INTEGER :: JI,JJ,JK
+INTEGER :: JI,JJ,JK,IDX
 !
 !-------------------------------------------------------------------------------
 !
 !$acc kernels
 IC = 0
+!$acc loop collapse(3) private(IDX) independent 
 DO JK = 1,SIZE(LTAB,3)
   DO JJ = 1,SIZE(LTAB,2)
     DO JI = 1,SIZE(LTAB,1)
       IF( LTAB(JI,JJ,JK) ) THEN
+!$acc atomic capture
         IC = IC +1
-        I1(IC) = JI
-        I2(IC) = JJ
-        I3(IC) = JK
+        IDX = IC
+!$acc end atomic
+        I1(IDX) = JI
+        I2(IDX) = JJ
+        I3(IDX) = JK
       END IF
     END DO
   END DO
@@ -3877,18 +4093,22 @@ INTEGER,                 INTENT(OUT) :: IC    ! Count
 !
 !*       0.2  declaration of local variables
 !
-INTEGER :: JI,JJ
+INTEGER :: JI,JJ,IDX
 !
 !-------------------------------------------------------------------------------
 !
 !$acc kernels
 IC = 0
+!$acc loop collapse(2) private(IDX) independent 
 DO JJ = 1,SIZE(LTAB,2)
   DO JI = 1,SIZE(LTAB,1)
     IF( LTAB(JI,JJ) ) THEN
+!$acc atomic capture
       IC = IC +1
-      I1(IC) = JI
-      I2(IC) = JJ
+      IDX = IC
+!$acc end atomic
+      I1(IDX) = JI
+      I2(IDX) = JJ
     END IF
   END DO
 END DO
@@ -3942,16 +4162,20 @@ INTEGER,               INTENT(OUT) :: IC       ! Count
 !
 !*       0.2  declaration of local variables
 !
-INTEGER :: JI
+INTEGER :: JI,IDX
 !
 !-------------------------------------------------------------------------------
 !
 !$acc kernels
 IC = 0
+!$acc loop private(IDX) independent 
 DO JI = 1,SIZE(LTAB,1)
   IF( LTAB(JI) ) THEN
+!$acc atomic capture
     IC = IC +1
-    I1(IC) = JI
+    IDX = IC
+!$acc end atomic
+    I1(IDX) = JI
   END IF
 END DO
 !$acc end kernels
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index 99d742e83b0909aa0aff31e5130234e720463d5c..b743ca0f94428f8ac45d7ea6d9e1786a7b3568dc 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -1026,9 +1026,6 @@ CALL ABORT
    END IF
 !
   CASE ('ICE3')
-#ifdef _OPENACC
-PRINT *,'OPENACC: RESOLVED_CLOUD::ICE3 being implemented'
-#endif
 !
 !*       9.     MIXED-PHASE MICROPHYSICAL SCHEME (WITH 3 ICE SPECIES)
 !               -----------------------------------------------------