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