diff --git a/src/MNH/ice4_compute_pdf.f90 b/src/MNH/ice4_compute_pdf.f90
index b95d226ed0f51a0908d1f745af69bf93631d9d57..2d56d0908c2da8c52818f7b79616b4318438b56f 100644
--- a/src/MNH/ice4_compute_pdf.f90
+++ b/src/MNH/ice4_compute_pdf.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 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
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_COMPUTE_PDF
 INTERFACE
 SUBROUTINE ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV, HSUBG_PR_PDF, &
@@ -93,10 +94,10 @@ REAL :: ZCOEFFRCM
 !
 !$acc declare create(GWORK,GWORK2,GWORK3,ZRCRAUTC,ZHLC_RCMAX,ZHLC_LRCLOCAL,ZHLC_HRCLOCAL,ZCOEFFRCM)
 !
-!$acc declare copyin(XCRIAUTC,XRTMIN)
-!
 !-------------------------------------------------------------------------------
-!
+
+!$acc data copyin( XCRIAUTC, XRTMIN )
+
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
   CALL MPPDB_CHECK1D(PRHODREF,"ICE4_COMPUTE_PDF beg:PRHODREF",PRECISION)
@@ -359,5 +360,7 @@ IF (MPPDB_INITIALIZED) THEN
   CALL MPPDB_CHECK1D(PHLC_LRC,"ICE4_COMPUTE_PDF end:PHLC_LRC",PRECISION)
   CALL MPPDB_CHECK1D(PRF,"ICE4_COMPUTE_PDF end:PRF",PRECISION)
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_COMPUTE_PDF
diff --git a/src/MNH/ice4_fast_rg.f90 b/src/MNH/ice4_fast_rg.f90
index 90f968144039a8d75f53503389af1e92f3b7511e..fbd1f5140d3163ef01266783d2e8b07657672da9 100644
--- a/src/MNH/ice4_fast_rg.f90
+++ b/src/MNH/ice4_fast_rg.f90
@@ -190,13 +190,13 @@ REAL, DIMENSION(SIZE(PRHODREF))    :: ZZW,         &
 !
 !$acc declare create(IGDRY,I1,IVEC1,IVEC2,GDRY,GLDRYG,GMASK,ZVEC1,ZVEC2,ZVEC3,ZZW,ZRDRYG_INIT,ZRWETG_INIT)
 !
-!$acc declare copyin(XALPI,XALPW,XBETAI,XBETAW,XGAMW,XCI,XCL,XCPV,XESTT,XGAMI,XLMTT,XLVTT,XMD,XMV,XRV,XTT,   &
-!$acc&               LCRFLIMIT,LEVLIMIT,LNULLWETG,LWETGPOST,                                                 &
-!$acc&               XBS,XCEXVT,XCXG,XCXS,XDG,XRTMIN,                                                        &
-!$acc&               NDRYLBDAG,NDRYLBDAR,NDRYLBDAS,X0DEPG,X1DEPG,XCOLEXIG,XCOLEXSG,XCOLIG,XCOLSG,XDRYINTP1G, &
-!$acc&               XDRYINTP1R,XDRYINTP1S,XDRYINTP2G,XDRYINTP2R,XDRYINTP2S,XEX0DEPG,XEX1DEPG,XEXICFRR,      &
-!$acc&               XEXRCFRI,XFCDRYG,XFIDRYG,XFRDRYG,XFSDRYG,XICFRR,XKER_RDRYG,XKER_SDRYG,XLBRDRYG1,        &
-!$acc&               XLBRDRYG2,XLBRDRYG3,XLBSDRYG1,XLBSDRYG2,XLBSDRYG3,XRCFRI)
+!$acc data copyin( XALPI, XALPW, XBETAI, XBETAW, XGAMW, XCI, XCL, XCPV, XESTT, XGAMI, XLMTT, XLVTT, XMD, XMV, XRV, XTT, &
+!$acc&             LCRFLIMIT, LEVLIMIT, LNULLWETG, LWETGPOST,                                                           &
+!$acc&             XBS, XCEXVT, XCXG, XCXS, XDG, XRTMIN,                                                                &
+!$acc&             NDRYLBDAG, NDRYLBDAR, NDRYLBDAS, X0DEPG, X1DEPG, XCOLEXIG, XCOLEXSG, XCOLIG, XCOLSG, XDRYINTP1G,     &
+!$acc&             XDRYINTP1R, XDRYINTP1S, XDRYINTP2G, XDRYINTP2R, XDRYINTP2S, XEX0DEPG, XEX1DEPG, XEXICFRR,            &
+!$acc&             XEXRCFRI, XFCDRYG, XFIDRYG, XFRDRYG, XFSDRYG, XICFRR, XKER_RDRYG, XKER_SDRYG, XLBRDRYG1,             &
+!$acc&             XLBRDRYG2, XLBRDRYG3, XLBSDRYG1, XLBSDRYG2, XLBSDRYG3, XRCFRI )
 !
 !-------------------------------------------------------------------------------
 !
@@ -256,6 +256,7 @@ IRR       = KRR
 !*       6.1    rain contact freezing
 !
 !$acc kernels
+#if 1
 GMASK(:)=PRIT(:)>XRTMIN(4) .AND. PRRT(:)>XRTMIN(3) .AND. LDCOMPUTE(:)
 IF(GDSOFT) THEN
   WHERE(.NOT. GMASK(:))
@@ -301,6 +302,7 @@ PA_RI(:) = PA_RI(:) - PRICFRRG(:) - PRICFRR(:)
 PA_RR(:) = PA_RR(:) - PRRCFRIG(:) + PRICFRR(:)
 PA_RG(:) = PA_RG(:) + PRICFRRG(:) + PRRCFRIG(:)
 PA_TH(:) = PA_TH(:) + (PRRCFRIG(:) - PRICFRR(:))*(PLSFACT(:)-PLVFACT(:))
+#endif
 !
 !
 !*       6.3    compute the graupel growth
@@ -734,5 +736,7 @@ IF (MPPDB_INITIALIZED) THEN
   CALL MPPDB_CHECK1D(PRWETGH,"ICE4_FAST_RG end:PRWETGH",PRECISION)
   CALL MPPDB_CHECK1D(PRWETGH_MR,"ICE4_FAST_RG end:PRWETGH_MR",PRECISION)
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_FAST_RG
diff --git a/src/MNH/ice4_fast_rh.f90 b/src/MNH/ice4_fast_rh.f90
index 35122273ec8b9aeb9f287b82f8c1e5d38c159938..4d27b08cb86d6489185b0741c47393ac3f680ac0 100644
--- a/src/MNH/ice4_fast_rh.f90
+++ b/src/MNH/ice4_fast_rh.f90
@@ -175,13 +175,13 @@ REAL, DIMENSION(SIZE(PRHODREF))    :: ZZW, &
 !$acc declare create(IHAIL,IGWET,I1,IVEC1,IVEC2,GHAIL,GWET,GMASK,LLWETH,LLDRYH, &
 !$acc&               ZVEC1,ZVEC2,ZVEC3,ZZW,ZRDRYH_INIT,ZRWETH_INIT,ZRDRYHG)
 !
-!$acc declare copyin(XALPI,XALPW,XBETAI,XBETAW,XGAMW,XCI,XCL,XCPV,XESTT,XGAMI,XLMTT,XLVTT,XMD,XMV,XRV,XTT,           &
-!$acc&               LCONVHG,LEVLIMIT,LNULLWETH,LWETHPOST,                                                           &
-!$acc&               XBG,XBS,XCEXVT,XCXG,XCXH,XCXS,XDH,XRTMIN,                                                       &
-!$acc&               NWETLBDAG,NWETLBDAH,NWETLBDAR,NWETLBDAS,X0DEPH,X1DEPH,XCOLEXGH,XCOLEXIH,XCOLGH,XCOLIH,XCOLEXSH, &
-!$acc&               XCOLSH,XEX0DEPH,XEX1DEPH,XFGWETH,XFRWETH,XFSWETH,XFWETH,XKER_GWETH,XKER_RWETH,XKER_SWETH,       &
-!$acc&               XLBGWETH1,XLBGWETH2,XLBGWETH3,XLBRWETH1,XLBRWETH2,XLBRWETH3,XLBSWETH1,XLBSWETH2,XLBSWETH3,      &
-!$acc&               XWETINTP1G,XWETINTP1H,XWETINTP1R,XWETINTP1S,XWETINTP2G,XWETINTP2H,XWETINTP2R,XWETINTP2S)
+!$acc data copyin( XALPI, XALPW, XBETAI, XBETAW, XGAMW, XCI, XCL, XCPV, XESTT, XGAMI, XLMTT, XLVTT, XMD, XMV, XRV, XTT,      &
+!$acc&             LCONVHG, LEVLIMIT, LNULLWETH, LWETHPOST,                                                                  &
+!$acc&             XBG, XBS, XCEXVT, XCXG, XCXH, XCXS, XDH, XRTMIN,                                                          &
+!$acc&             NWETLBDAG, NWETLBDAH, NWETLBDAR, NWETLBDAS, X0DEPH, X1DEPH, XCOLEXGH, XCOLEXIH, XCOLGH, XCOLIH, XCOLEXSH, &
+!$acc&             XCOLSH, XEX0DEPH, XEX1DEPH, XFGWETH, XFRWETH, XFSWETH, XFWETH, XKER_GWETH, XKER_RWETH, XKER_SWETH,        &
+!$acc&             XLBGWETH1, XLBGWETH2, XLBGWETH3, XLBRWETH1, XLBRWETH2, XLBRWETH3, XLBSWETH1, XLBSWETH2, XLBSWETH3,        &
+!$acc&             XWETINTP1G, XWETINTP1H, XWETINTP1R, XWETINTP1S, XWETINTP2G, XWETINTP2H, XWETINTP2R, XWETINTP2S )
 !
 !-------------------------------------------------------------------------------
 !
@@ -768,5 +768,7 @@ IF (MPPDB_INITIALIZED) THEN
   CALL MPPDB_CHECK1D(PRGDRYH,"ICE4_FAST_RH end:PRGDRYH",PRECISION)
   CALL MPPDB_CHECK1D(PRDRYHG,"ICE4_FAST_RH end:PRDRYHG",PRECISION)
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_FAST_RH
diff --git a/src/MNH/ice4_fast_rs.f90 b/src/MNH/ice4_fast_rs.f90
index a1689ce7dd5e39766097f12deedc02d39fa49031..837b581c98d1087dd6922e26bbf74ea620eea5f0 100644
--- a/src/MNH/ice4_fast_rs.f90
+++ b/src/MNH/ice4_fast_rs.f90
@@ -134,11 +134,6 @@ REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PA_RR
 REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PA_RS
 REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PA_RG
 !
-!$acc declare present(KSIZE,LDSOFT,LDCOMPUTE,PRHODREF,PLVFACT,PLSFACT,PPRES,PDV,PKA,PCJ,       &
-!$acc&                PLBDAR,PLBDAS,PT,PRVT,PRCT,PRRT,PRST,PRIAGGS,PRCRIMSS,PRCRIMSG,PRSRIMCG, &
-!$acc&                PRRACCSS,PRRACCSG,PRSACCRG,PRSMLTG,PRCMLTSR,PRS_TEND,PA_TH,              &
-!$acc&                PA_RC,PA_RR,PA_RS,PA_RG)
-!
 !*       0.2  declaration of local variables
 !
 INTEGER, PARAMETER :: IRCRIMS=1, IRCRIMSS=2, IRSRIMCG=3, IRRACCS=4, IRRACCSS=5, IRSACCRG=6
@@ -152,17 +147,22 @@ LOGICAL                            :: GDSOFT,GEVLIMIT !Workaround of PGI bug wit
 LOGICAL, DIMENSION(SIZE(PRHODREF)) :: GRIM, GACC, GMASK
 REAL, DIMENSION(SIZE(PRHODREF))    :: ZVEC1, ZVEC2, ZVEC3
 REAL, DIMENSION(SIZE(PRHODREF))    :: ZZW, ZZW2, ZZW6, ZFREEZ_RATE
+
+!$acc data present( KSIZE, LDSOFT, LDCOMPUTE, PRHODREF, PLVFACT, PLSFACT, PPRES, PDV, PKA, PCJ,                           &
+!$acc&              PLBDAR, PLBDAS, PT, PRVT, PRCT, PRRT, PRST, PRIAGGS, PRCRIMSS, PRCRIMSG, PRSRIMCG,                    &
+!$acc&              PRRACCSS, PRRACCSG, PRSACCRG, PRSMLTG, PRCMLTSR, PRS_TEND, PA_TH,                                     &
+!$acc&              PA_RC, PA_RR, PA_RS, PA_RG )                                                                          &
 !
-!$acc declare create(IGRIM,IGACC,I1,IVEC1,IVEC2,GRIM,GACC,GMASK,ZVEC1,ZVEC2,ZVEC3,ZZW,ZZW2,ZZW6,ZFREEZ_RATE)
+!$acc&     create( IGRIM, IGACC, I1, IVEC1, IVEC2, GRIM, GACC, GMASK, ZVEC1, ZVEC2, ZVEC3, ZZW, ZZW2, ZZW6, ZFREEZ_RATE ) &
 !
-!$acc declare copyin(XALPI,XALPW,XBETAI,XBETAW,XCI,XCL,XCPV,XESTT,XGAMI,XGAMW,XLMTT,XLVTT,XMD,XMV,XRV,XTT,  &
-!$acc&               LEVLIMIT, CSNOWRIMING,                                                                 &
-!$acc&               XBS,XCEXVT,XCXS,XRTMIN,                                                                &
-!$acc&               NACCLBDAR,NACCLBDAS,NGAMINC,X0DEPS,X1DEPS,XACCINTP1R,XACCINTP1S,XACCINTP2R,XACCINTP2S, &
-!$acc&               XCRIMSG,XCRIMSS,XEX0DEPS,XEX1DEPS,XEXCRIMSG,XEXCRIMSS,XEXSRIMCG,XEXSRIMCG2,XFRACCSS,   &
-!$acc&               XFSACCRG,XFSCVMG,XGAMINC_RIM1,XGAMINC_RIM1,XGAMINC_RIM2,XGAMINC_RIM4,XKER_RACCS,       &
-!$acc&               XKER_RACCSS,XKER_SACCRG,XLBRACCS1,XLBRACCS2,XLBRACCS3,XLBSACCR1,XLBSACCR2,XLBSACCR3,   &
-!$acc&               XRIMINTP1,XRIMINTP2,XSRIMCG,XSRIMCG2,XSRIMCG3)
+!$acc&     copyin( XALPI, XALPW, XBETAI, XBETAW, XCI, XCL, XCPV, XESTT, XGAMI, XGAMW, XLMTT, XLVTT, XMD, XMV, XRV, XTT,   &
+!$acc&             LEVLIMIT,  CSNOWRIMING,                                                                                &
+!$acc&             XBS, XCEXVT, XCXS, XRTMIN,                                                                             &
+!$acc&             NACCLBDAR, NACCLBDAS, NGAMINC, X0DEPS, X1DEPS, XACCINTP1R, XACCINTP1S, XACCINTP2R, XACCINTP2S,         &
+!$acc&             XCRIMSG, XCRIMSS, XEX0DEPS, XEX1DEPS, XEXCRIMSG, XEXCRIMSS, XEXSRIMCG, XEXSRIMCG2, XFRACCSS,           &
+!$acc&             XFSACCRG, XFSCVMG, XGAMINC_RIM1, XGAMINC_RIM2, XGAMINC_RIM4, XKER_RACCS,                               &
+!$acc&             XKER_RACCSS, XKER_SACCRG, XLBRACCS1, XLBRACCS2, XLBRACCS3, XLBSACCR1, XLBSACCR2, XLBSACCR3,            &
+!$acc&             XRIMINTP1, XRIMINTP2, XSRIMCG, XSRIMCG2, XSRIMCG3 )
 !
 !-------------------------------------------------------------------------------
 !
@@ -671,5 +671,7 @@ IF (MPPDB_INITIALIZED) THEN
   CALL MPPDB_CHECK1D(PRRACCSG,"ICE4_FAST_RS end:PRRACCSG",PRECISION)
   CALL MPPDB_CHECK1D(PRSACCRG,"ICE4_FAST_RS end:PRSACCRG",PRECISION)
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_FAST_RS
diff --git a/src/MNH/ice4_nucleation.f90 b/src/MNH/ice4_nucleation.f90
index 73c5f20b16b67a78cd13b82bbfb7c88e2d8fc5c1..c03d530d5a5f4d0fed5689fabce5692e5c0e46ea 100644
--- a/src/MNH/ice4_nucleation.f90
+++ b/src/MNH/ice4_nucleation.f90
@@ -2,6 +2,7 @@
 !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
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_NUCLEATION
 INTERFACE
 SUBROUTINE ICE4_NUCLEATION(KSIZE, ODSOFT, ODCOMPUTE, &
@@ -94,10 +95,10 @@ REAL, DIMENSION(KSIZE)    :: ZZW,      & ! Work array
 !
 !$acc declare create(JI,GNEGT,GWORK,GWORK2,ZW,ZZW,ZUSW,ZSSI)
 !
-!$acc declare copyin(XALPI,XALPW,XBETAI,XBETAW,XGAMI,XGAMW,XMD,XMV,XTT, &
-!$acc&               LFEEDBACKT,                                        &
-!$acc&               XALPHA1,XALPHA2,XBETA1,XBETA2,XMNU0,XNU10,XNU20,   &
-!$acc&               XRTMIN)
+!$acc data copyin( XALPI, XALPW, XBETAI, XBETAW, XGAMI, XGAMW, XMD, XMV, XTT, &
+!$acc&             LFEEDBACKT,                                                &
+!$acc&             XALPHA1, XALPHA2, XBETA1, XBETA2, XMNU0, XNU10, XNU20,     &
+!$acc&             XRTMIN )
 !
 !-------------------------------------------------------------------------------
 !
@@ -239,5 +240,7 @@ IF (MPPDB_INITIALIZED) THEN
   CALL MPPDB_CHECK(PB_RV,"ICE4_NUCLEATION end:PB_RV")
   CALL MPPDB_CHECK(PB_RI,"ICE4_NUCLEATION end:PB_RI")
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_NUCLEATION
diff --git a/src/MNH/ice4_nucleation_wrapper.f90 b/src/MNH/ice4_nucleation_wrapper.f90
index 328fd5f3c2f38f482f78796a9237ffbbef9ed28e..c9718a9887c7d021cf4b03a841a3efe023034040 100644
--- a/src/MNH/ice4_nucleation_wrapper.f90
+++ b/src/MNH/ice4_nucleation_wrapper.f90
@@ -96,7 +96,7 @@ REAL, DIMENSION(:), ALLOCATABLE    :: ZZT,       & ! Temperature
 !$acc declare create(IDX,JI,JJ,JK,JL,GDSOFT,GLDCOMPUTE,GNEGT,INEGT,INEGT_TMP,I1,I2,I3,ZZT,ZPRES,ZRVT,ZCIT,ZTHT, &
 !$acc&               ZRHODREF,ZEXN,ZLSFACT,ZRVHENI_MR,ZB_TH,ZB_RV,ZB_RI)
 !
-!$acc declare copyin(XTT)
+!$acc data copyin( XTT )
 !-------------------------------------------------------------------------------
 !
 IF (MPPDB_INITIALIZED) THEN
@@ -192,5 +192,7 @@ IF (MPPDB_INITIALIZED) THEN
   !Check all OUT arrays
   CALL MPPDB_CHECK(PRVHENI_MR,"ICE4_NUCLEATION_WRAPPER end:PRVHENI_MR")
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_NUCLEATION_WRAPPER
diff --git a/src/MNH/ice4_rainfr_vert.f90 b/src/MNH/ice4_rainfr_vert.f90
index 6229d39801060c37b4d5b1c991170a5576b6381d..d0787c12f69adb451f87ead33914329a7811c86f 100644
--- a/src/MNH/ice4_rainfr_vert.f90
+++ b/src/MNH/ice4_rainfr_vert.f90
@@ -2,6 +2,7 @@
 !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
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_RAINFR_VERT
 INTERFACE
 SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PPRFR, PRR)
@@ -49,7 +50,7 @@ REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)    :: PRR   !Rain field
 !
 INTEGER :: JI, JJ, JK
 !
-!$acc declare copyin(XRTMIN)
+!$acc data copyin( XRTMIN )
 !
 !-------------------------------------------------------------------------------
 !
@@ -81,5 +82,7 @@ END DO
 !
 !Check all INOUT arrays
 CALL MPPDB_CHECK3D(PPRFR,"ICE4_RAINFR_VERT end:PPRFR",PRECISION)
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_RAINFR_VERT
diff --git a/src/MNH/ice4_rimltc.f90 b/src/MNH/ice4_rimltc.f90
index 65968cf75b4134a1324525800126d25e1b4dd456..026fc4afc35a07869e9381aa048f2bfb6010c165 100644
--- a/src/MNH/ice4_rimltc.f90
+++ b/src/MNH/ice4_rimltc.f90
@@ -2,6 +2,7 @@
 !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
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_RIMLTC
 INTERFACE
 SUBROUTINE ICE4_RIMLTC(KSIZE, LDSOFT, LDCOMPUTE, &
@@ -80,7 +81,7 @@ LOGICAL :: GDSOFT, GFEEDBACKT !Workaround of PGI bug with OpenACC (at least up t
 LOGICAL, DIMENSION(KSIZE) :: GMASK
 !$acc declare create(GMASK)
 !
-!$acc declare copyin(XTT,LFEEDBACKT)
+!$acc data copyin( XTT, LFEEDBACKT )
 !-------------------------------------------------------------------------------
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
@@ -131,5 +132,7 @@ IF (MPPDB_INITIALIZED) THEN
   !Check all OUT arrays
   CALL MPPDB_CHECK(PRIMLTC_MR,"ICE4_RIMLTC end:PRIMLTC_MR")
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_RIMLTC
diff --git a/src/MNH/ice4_rrhong.f90 b/src/MNH/ice4_rrhong.f90
index 92eff5e436c5d27326256e68118de7c75ca8525b..be99b28cc60f96eada9d38ee17a07cf8d5595201 100644
--- a/src/MNH/ice4_rrhong.f90
+++ b/src/MNH/ice4_rrhong.f90
@@ -2,6 +2,7 @@
 !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
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_RRHONG
 INTERFACE
 SUBROUTINE ICE4_RRHONG(KSIZE, LDSOFT, LDCOMPUTE, &
@@ -81,7 +82,7 @@ LOGICAL :: GDSOFT, GFEEDBACKT !Workaround of PGI bug with OpenACC (at least up t
 LOGICAL, DIMENSION(SIZE(PRRT)) :: GMASK
 !$acc declare create(GMASK)
 !
-!$acc declare copyin(XTT,XRTMIN,LFEEDBACKT)
+!$acc data copyin( XTT, XRTMIN, LFEEDBACKT )
 !
 !-------------------------------------------------------------------------------
 IF (MPPDB_INITIALIZED) THEN
@@ -132,5 +133,7 @@ IF (MPPDB_INITIALIZED) THEN
   !Check all OUT arrays
   CALL MPPDB_CHECK(PRRHONG_MR,"ICE4_RRHONG end:PRRHONG_MR")
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_RRHONG
diff --git a/src/MNH/ice4_rsrimcg_old.f90 b/src/MNH/ice4_rsrimcg_old.f90
index 19022b11d3a83a9af3eabca5d3a3a14439c83837..ea1c477b967dbfe6e1bdf5f77258b25bd0ea6744 100644
--- a/src/MNH/ice4_rsrimcg_old.f90
+++ b/src/MNH/ice4_rsrimcg_old.f90
@@ -91,7 +91,7 @@ REAL, DIMENSION(SIZE(PRHODREF))    :: ZZW
 !
 !$acc declare create(IGRIM, IVEC1, IVEC2, GRIM, ZVEC1, ZVEC2, ZZW)
 !
-!$acc declare copyin(XTT,CSNOWRIMING,XRTMIN,NGAMINC,XEXSRIMCG,XGAMINC_RIM2,XRIMINTP1,XRIMINTP2,XSRIMCG)
+!$acc data copyin( XTT, CSNOWRIMING, XRTMIN, NGAMINC, XEXSRIMCG, XGAMINC_RIM2, XRIMINTP1, XRIMINTP2, XSRIMCG )
 !
 !-------------------------------------------------------------------------------
 !
@@ -191,5 +191,7 @@ IF (MPPDB_INITIALIZED) THEN
   !Check all OUT arrays
   CALL MPPDB_CHECK(PRSRIMCG_MR,"ICE4_RSRIMCG_OLD end:PRSRIMCG_MR")
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_RSRIMCG_OLD
diff --git a/src/MNH/ice4_sedimentation_split.f90 b/src/MNH/ice4_sedimentation_split.f90
index 15f5b718984ef4bda5069d96df34a45dda5c63e0..be8781cd4addd092870e2b9075d6fcd8c2fc2394 100644
--- a/src/MNH/ice4_sedimentation_split.f90
+++ b/src/MNH/ice4_sedimentation_split.f90
@@ -442,9 +442,9 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),0:SIZE(PRHODREF,3)+1) :: ZWSED
 !$acc declare create(I1,I2,I3,ZINVTSTEP,   &
 !$acc               ZFSED,ZEXSED,ZMAX_TSTEP,ZRSMIN,ZREMAINT,ZWSED)
 !
-!$acc declare copyin(XCPD,XP00,XRD,                                                             &
-!$acc&               XCC,XCEXVT,XDC,XLBEXC,XRTMIN,                                              &
-!$acc&               XEXCSEDI,XEXSEDG,XEXSEDH,XEXSEDR,XEXSEDS,XFSEDG,XFSEDH,XFSEDI,XFSEDR,XFSEDS)
+!$acc data copyin( XCPD, XP00, XRD,                                                                     &
+!$acc&             XCC, XCEXVT, XDC, XLBEXC, XRTMIN,                                                    &
+!$acc&             XEXCSEDI, XEXSEDG, XEXSEDH, XEXSEDR, XEXSEDS, XFSEDG, XFSEDH, XFSEDI, XFSEDR, XFSEDS )
 !
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
@@ -661,7 +661,9 @@ IF (MPPDB_INITIALIZED) THEN
   !Check all OUT arrays
   CALL MPPDB_CHECK(PINPRX,"INTERNAL_SEDIM_SPLI end:PINPRX")
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE INTERNAL_SEDIM_SPLI
 !
 END SUBROUTINE ICE4_SEDIMENTATION_SPLIT
diff --git a/src/MNH/ice4_slow.f90 b/src/MNH/ice4_slow.f90
index 5459558e3a479ab075b4be0737e0aa6ee6a8a7d1..38416765ef19c18c60529d4d4a157a65ff8e5b77 100644
--- a/src/MNH/ice4_slow.f90
+++ b/src/MNH/ice4_slow.f90
@@ -2,6 +2,7 @@
 !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
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_SLOW
 INTERFACE
 SUBROUTINE ICE4_SLOW(KSIZE, LDSOFT, LDCOMPUTE, PRHODREF, PT,&
@@ -125,10 +126,10 @@ REAL                               :: ZTIMAUTIC
 !
 !$acc declare create(ZCRIAUTI,ZTIMAUTIC,GMASK)
 !
-!$acc declare copyin(XTT,                                                                              &
-!$acc&               XCEXVT,XRTMIN,                                                                    &
-!$acc&               X0DEPG,X0DEPS,X1DEPG,X1DEPS,XACRIAUTI,XALPHA3,XBCRIAUTI,XBETA3,XCOLEXIS,XCRIAUTI, &
-!$acc&               XEX0DEPG,XEX0DEPS,XEX1DEPG,XEX1DEPS,XEXIAGGS,XFIAGGS,XHON,XTEXAUTI,XTIMAUTI       )
+!$acc data copyin( XTT,                                                                                       &
+!$acc&             XCEXVT, XRTMIN,                                                                            &
+!$acc&             X0DEPG, X0DEPS, X1DEPG, X1DEPS, XACRIAUTI, XALPHA3, XBCRIAUTI, XBETA3, XCOLEXIS, XCRIAUTI, &
+!$acc&             XEX0DEPG, XEX0DEPS, XEX1DEPG, XEX1DEPS, XEXIAGGS, XFIAGGS, XHON, XTEXAUTI, XTIMAUTI        )
 !
 !-------------------------------------------------------------------------------
 !
@@ -319,5 +320,7 @@ IF (MPPDB_INITIALIZED) THEN
   CALL MPPDB_CHECK(PA_RS,"ICE4_SLOW end:PA_RS")
   CALL MPPDB_CHECK(PA_RG,"ICE4_SLOW end:PA_RG")
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_SLOW
diff --git a/src/MNH/ice4_tendencies.f90 b/src/MNH/ice4_tendencies.f90
index e819001b0b1e0b69ecd32e66c676777b6297927e..377b3cce2b4b646a38a00263f1116dc8bb25f87f 100644
--- a/src/MNH/ice4_tendencies.f90
+++ b/src/MNH/ice4_tendencies.f90
@@ -329,9 +329,9 @@ REAL, DIMENSION(KIT,KJT,KKT) :: ZRRT3D
 !$acc declare create(ZRVT,ZRCT,ZRRT,ZRIT,ZRST,ZRGT,ZT,ZTHT,ZZW,ZSSI,ZKA,ZDV,ZAI,ZCJ,ZRF,               &
 !$acc&               ZLBDAR,ZLBDAS,ZLBDAG,ZLBDAH,ZLBDAR_RF,ZRGSI,ZRGSI_MR,ZRRT3D,IDX,JI,JJ,JK,JL,LLWETG)
 !
-!$acc declare copyin(XALPI,XBETAI,XCI,XCPV,XGAMI,XLSTT,XMD,XMV,XP00,XRV,XTT,          &
-!$acc&               XSCFAC,                                                          &
-!$acc&               XLBDAS_MAX,XLBEXG,XLBEXH,XLBEXR,XLBEXS,XLBG,XLBH,XLBR,XLBS,XRTMIN)
+!$acc data copyin( XALPI, XBETAI, XCI, XCPV, XGAMI, XLSTT, XMD, XMV, XP00, XRV, XTT,          &
+!$acc&             XSCFAC,                                                                    &
+!$acc&             XLBDAS_MAX, XLBEXG, XLBEXH, XLBEXR, XLBEXS, XLBG, XLBH, XLBR, XLBS, XRTMIN )
 !
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
@@ -787,5 +787,7 @@ IF (MPPDB_INITIALIZED) THEN
   CALL MPPDB_CHECK(PHLC_LRC,"ICE4_TENDENCIES end:PHLC_LRC")
   CALL MPPDB_CHECK(PRAINFR,"ICE4_TENDENCIES end:PRAINFR")
 END IF
-!
+
+!$acc end data
+
 END SUBROUTINE ICE4_TENDENCIES
diff --git a/src/MNH/rain_ice_fast_rg.f90 b/src/MNH/rain_ice_fast_rg.f90
index 0924e73c589bb411b571101b959c59e324a12ac4..9825fb51b494f1d8c84f64e372ed4885e9aa0aa0 100644
--- a/src/MNH/rain_ice_fast_rg.f90
+++ b/src/MNH/rain_ice_fast_rg.f90
@@ -101,7 +101,6 @@ REAL,    DIMENSION(:,:), ALLOCATABLE :: ZZW1              ! Work arrays
 !$acc declare device_resident(I1, IVEC1, IVEC2, GWORK, ZZW, ZVEC1, ZVEC2, ZVEC3, &
 !$acc &                       ZVECLBDAG, ZVECLBDAR, ZVECLBDAS, ZZW1)
 !
-!$acc declare copyin(XKER_RDRYG, XKER_SDRYG)
 !-------------------------------------------------------------------------------
 !
 ! IN variables
@@ -116,7 +115,9 @@ REAL,    DIMENSION(:,:), ALLOCATABLE :: ZZW1              ! Work arrays
 !
 ! OUT variables
 !
-!$acc &             PRDRYG, PRWETG )
+!$acc &             PRDRYG, PRWETG ) &
+
+!$acc &     copyin( XKER_RDRYG, XKER_SDRYG )
 
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
diff --git a/src/MNH/rain_ice_fast_rh.f90 b/src/MNH/rain_ice_fast_rh.f90
index a3453162b256cc56048f74242069ad7da641b90c..ca176ca9c8d3cf11885ef54d5c828e0a1c7277dc 100644
--- a/src/MNH/rain_ice_fast_rh.f90
+++ b/src/MNH/rain_ice_fast_rh.f90
@@ -96,8 +96,6 @@ REAL,    DIMENSION(:,:), ALLOCATABLE :: ZZW1              ! Work arrays
 !$acc declare device_resident(I1H, I1W, IVEC1, IVEC2, GWORK, ZVEC1, ZVEC2, ZVEC3, &
 !$acc &                       ZVECLBDAG, ZVECLBDAH, ZVECLBDAS, ZZW, ZZW1)
 !
-!$acc declare copyin(XKER_GWETH, XKER_SWETH)
-!
 !-------------------------------------------------------------------------------
 !
 ! IN variables
@@ -108,12 +106,14 @@ REAL,    DIMENSION(:,:), ALLOCATABLE :: ZZW1              ! Work arrays
 !
 ! INOUT variables
 !
-!$acc &             PLBDAH, PRCS, PRRS, PRIS, PRSS, PRGS, PRHS, PTHS, PUSW )
+!$acc &             PLBDAH, PRCS, PRRS, PRIS, PRSS, PRGS, PRHS, PTHS, PUSW ) &
 !
 ! OUT variables
 !
 !NONE
 
+!$acc &     copyin( XKER_GWETH, XKER_SWETH )
+
 #ifdef _OPENACC
 CALL PRINT_MSG(NVERB_WARNING,'GEN','RAIN_ICE_FAST_RH','OPENACC: not yet tested')
 #endif
diff --git a/src/MNH/rain_ice_fast_rs.f90 b/src/MNH/rain_ice_fast_rs.f90
index 4e44cff750c540b203b7482a0627f763a366be3a..83c303da75282605475e2ca013efdf2089a4eaf4 100644
--- a/src/MNH/rain_ice_fast_rs.f90
+++ b/src/MNH/rain_ice_fast_rs.f90
@@ -92,7 +92,6 @@ REAL,    DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays
 !$acc declare device_resident(I1, IVEC1, IVEC2, GWORK, ZZW, ZVEC1, ZVEC2, ZVEC3, &
 !$acc &                       ZVECLBDAR, ZVECLBDAS, ZZW1, ZZW2, ZZW3, ZZW4)
 !
-!$acc declare copyin(XKER_RACCS, XKER_RACCSS, XKER_SACCRG)
 !-------------------------------------------------------------------------------
 !
 ! IN variables
@@ -103,12 +102,14 @@ REAL,    DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays
 !
 ! INOUT variables
 !
-!$acc &             PRCS, PRRS, PRSS, PRGS, PTHS )
+!$acc &             PRCS, PRRS, PRSS, PRGS, PTHS )                    &
 !
 ! OUT variables
 !
 !NONE
 
+!$acc &     copyin( XKER_RACCS, XKER_RACCSS, XKER_SACCRG )
+
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
   CALL MPPDB_CHECK(OMICRO,"RAIN_ICE_FAST_RS beg:OMICRO")
diff --git a/src/MNH/rain_ice_nucleation.f90 b/src/MNH/rain_ice_nucleation.f90
index 4c87404cca360f3c059ed47e99df82696f6bff01..8b7367d2a69c3ce58006c49464d2d9bce7f3326f 100644
--- a/src/MNH/rain_ice_nucleation.f90
+++ b/src/MNH/rain_ice_nucleation.f90
@@ -89,7 +89,6 @@ REAL,    DIMENSION(SIZE(PEXNREF,1),SIZE(PEXNREF,2),SIZE(PEXNREF,3))   &
 !$acc declare device_resident(ZRVT, ZCIT, ZZT, ZPRES, ZZW, ZUSW, ZSSI, ZW)
 !$acc declare device_resident(I1, I2, I3, GNEGT)
 
-!$acc declare copyin(XALPHA1)
 !-------------------------------------------------------------------------------
 !
 ! IN variables
@@ -103,7 +102,9 @@ REAL,    DIMENSION(SIZE(PEXNREF,1),SIZE(PEXNREF,2),SIZE(PEXNREF,3))   &
 !
 ! OUT variables
 !
-!$acc &             PT )
+!$acc &             PT )                                        &
+
+!$acc &     copyin( XALPHA1 )
 
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90
index 94140e264bebc1691c34e03a05a35e30aaa1086f..d9cdc2a85cdd826e7b66aa81e59ca9de05c41c32 100644
--- a/src/MNH/rain_ice_red.f90
+++ b/src/MNH/rain_ice_red.f90
@@ -516,18 +516,18 @@ REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: &
 !$acc &              ZINV_TSTEP,ZRS_TEND,ZRG_TEND,ZRH_TEND,ZW_RVS,ZW_RCS,ZW_RRS,ZW_RIS,ZW_RSS,ZW_RGS,ZW_RHS,ZW_THS)
 !
 !acc declare copyin(JPVEXT,XUNDEF) !These are parameters
-!$acc declare copyin(XCI,XCL,XCPD,XCPV,XLSTT,XLVTT,XTT,                                                                &
-!$acc&               XRTMIN,                                                                                           &
-!$acc&               CSUBG_PR_PDF,CSUBG_RC_RR_ACCR,CSUBG_RR_EVAP,LDEPOSC,LFEEDBACKT,LSEDIM_AFTER,                      &
-!$acc&               NMAXITER,XMRSTEP,XTSTEP_TS,XVDEPOSC,                                                              &
-!$acc&               LBU_ENABLE,LBUDGET_RC,LBUDGET_RR,LBUDGET_RI,LBUDGET_RS,LBUDGET_RG,LBUDGET_RH,LBUDGET_RV,LBUDGET_TH)
-!
 
 !$acc data present( OSEDIC, HSEDIM, HSUBG_AUCV_RC, OWARM, KKA, KKU, KKL, PTSTEP, KRR,                 &
 !$acc &             ODMICRO, PEXN, PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, PTHT, PRVT, &
 !$acc &             PRCT, PRRT, PRIT, PRST, PRGT, PSIGS, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,    &
 !$acc &             PINPRC, PINDEP, PINPRR, PEVAP3D, PINPRS, PINPRG, PRAINFR,                         &
-!$acc &             PSEA, PTOWN, PRHT, PRHS, PINPRH, PFPR )
+!$acc &             PSEA, PTOWN, PRHT, PRHS, PINPRH, PFPR )                                           &
+
+!$acc &     copyin( XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT,                                                                   &
+!$acc &             XRTMIN,                                                                                                    &
+!$acc &             CSUBG_PR_PDF, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, LDEPOSC, LFEEDBACKT, LSEDIM_AFTER,                          &
+!$acc &             NMAXITER, XMRSTEP, XTSTEP_TS, XVDEPOSC,                                                                    &
+!$acc &             LBU_ENABLE, LBUDGET_RC, LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_RV, LBUDGET_TH )
 
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
diff --git a/src/MNH/rain_ice_sedimentation_split.f90 b/src/MNH/rain_ice_sedimentation_split.f90
index 4e7561b5271d8e2b056a4c13f55f2f3eb52de624..7df6680ec71418ea4d9814272f8a8e60dcf49b78 100644
--- a/src/MNH/rain_ice_sedimentation_split.f90
+++ b/src/MNH/rain_ice_sedimentation_split.f90
@@ -141,7 +141,6 @@ REAL,    DIMENSION(:,:,:), ALLOCATABLE :: ZWSED       ! sedimentation fluxes
 !$acc &                       ZRAY, ZLBC, ZFSEDC,                                                                       &
 !$acc &                       ZPRCS, ZPRRS, ZPRSS, ZPRGS, ZPRHS, ZW, ZWSED)
 !
-!$acc declare copyin(XFSEDC, XLBC, XLBEXC, XRTMIN)
 !-------------------------------------------------------------------------------
 !
 ! IN variables
@@ -155,7 +154,9 @@ REAL,    DIMENSION(:,:,:), ALLOCATABLE :: ZWSED       ! sedimentation fluxes
 !
 ! OUT variables
 !
-!$acc &             PINPRR, PINPRS, PINPRG, PINPRR3D, PINPRH, PFPR )
+!$acc &             PINPRR, PINPRS, PINPRG, PINPRR3D, PINPRH, PFPR )                    &
+
+!$acc &     copyin( XFSEDC, XLBC, XLBEXC, XRTMIN )
 
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index f4e5fbb0131c6dbec2c7952b182442cefa68be43..a131a553bc62caa433b86a8035865e123b6d200e 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -488,8 +488,7 @@ REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHSSTEP
 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRSSTEP
 !
 !$acc declare create(ZDZZ,ZEXN,ZLV,ZLS,ZCPH,ZZZ,ZSVT,ZSVS) create(ZT) create(ZCOR,ZRSMIN) &
-!$acc &       create(ZTHSSTEP,ZRSSTEP,LLMICRO) &
-!$acc &       copyin(XRTMIN)
+!$acc &       create(ZTHSSTEP,ZRSSTEP,LLMICRO)
 !
 !------------------------------------------------------------------------------
 !
@@ -509,8 +508,10 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRSSTEP
 !
 ! OUT variables
 !
-!$acc &            PSRCS, PRAINFR )
-!
+!$acc &            PSRCS, PRAINFR )                                                   &
+
+!$acc &    copyin( XRTMIN )
+
 !*       1.     PRELIMINARY COMPUTATIONS
 !               ------------------------
 !
diff --git a/src/MNH/slow_terms.f90 b/src/MNH/slow_terms.f90
index 266cd9d6e6730e19bcff710178e83a5c0e173b46..b3f760f52cc725f91b65c06023e47b377a600d26 100644
--- a/src/MNH/slow_terms.f90
+++ b/src/MNH/slow_terms.f90
@@ -218,13 +218,13 @@ INTEGER                              :: JI,JJ,IC,JL ! loop control for packed ar
 
 !$acc declare create( ZT, ZW, ZW1, ZW2, ZW3, ZEXNT, ZDZZ, G3D )
 
-!$acc declare copyin( XC1RC, XC2RC, XC1RE, XC2RE, XCEXRA, XCEXRE, XCEXRS, XCEXVT, XCRA, XCRS, XDIVA, XTHCO, &
-!$acc &               XALPW, XBETAW, XGAMW, XCL, XCPD, XCPV, XLVTT, XMD, XMV, XP00, XRD, XRHOLW, XRV, XTT)
-
 !-------------------------------------------------------------------------------
 
-!$acc data present( PZZ, PRHODJ, PRHODREF, PCLDFR, PTHT, PRVT, PRCT, PRRT,    &
-!$acc &             PPABST, PTHS, PRVS, PRCS, PRRS, PINPRR, PINPRR3D, PEVAP3D )
+!$acc data present( PZZ, PRHODJ, PRHODREF, PCLDFR, PTHT, PRVT, PRCT, PRRT,      &
+!$acc &             PPABST, PTHS, PRVS, PRCS, PRRS, PINPRR, PINPRR3D, PEVAP3D ) &
+
+!$acc &     copyin( XC1RC, XC2RC, XC1RE, XC2RE, XCEXRA, XCEXRE, XCEXRS, XCEXVT, XCRA, XCRS, XDIVA, XTHCO, &
+!$acc &             XALPW, XBETAW, XGAMW, XCL, XCPD, XCPV, XLVTT, XMD, XMV, XP00, XRD, XRHOLW, XRV, XTT )
 
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays