diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90 index 1f7313ea2cb0994dfdd2513695fec75b3580ee0a..6b5041b15ae0c10ad520cbef907dc069da84c0ff 100644 --- a/src/MNH/advection_metsv.f90 +++ b/src/MNH/advection_metsv.f90 @@ -20,7 +20,7 @@ INTERFACE USE MODD_IO, ONLY: TFILEDATA USE MODD_TYPE_DATE, ONLY: DATE_TIME ! -TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE ! Output file +TYPE(TFILEDATA), INTENT(INOUT):: TPFILE ! Output file CHARACTER(LEN=6), INTENT(IN) :: HMET_ADV_SCHEME, & ! Control of the HSV_ADV_SCHEME, & ! scheme applied HUVW_ADV_SCHEME @@ -908,12 +908,12 @@ DO JSPL=1,KSPLIT ! ! Guesses of the field inside the time splitting loop ! - !$acc kernels + !$acc kernels present_cr(ZTH) ZTH(:,:,:) = ZTH(:,:,:) + ( ZRTHS_PPM(:,:,:) + ZRTHS_OTHER(:,:,:) + PRTHS_CLD(:,:,:)) * & ZTSTEP_PPM / PRHODJ(:,:,:) !$acc end kernels IF (GTKE) THEN - !$acc kernels + !$acc kernels present_cr(ZTKE) ZTKE(:,:,:) = ZTKE(:,:,:) + ( ZRTKES_PPM(:,:,:) + ZRTKES_OTHER(:,:,:) ) * ZTSTEP_PPM / PRHODJ(:,:,:) !$acc end kernels END IF diff --git a/src/MNH/rain_ice_fast_rg.f90 b/src/MNH/rain_ice_fast_rg.f90 index 753a537cd626a1cca52fce7ca6f42f5ed23f35a9..cf0279cfa3eb017b93925b83a9c01fa020c292c8 100644 --- a/src/MNH/rain_ice_fast_rg.f90 +++ b/src/MNH/rain_ice_fast_rg.f90 @@ -373,7 +373,7 @@ END IF END DO ! CONCURRENT ! !$acc_nv loop independent , private (JL) - DO JJ = 1, IGDRY + DO CONCURRENT (JJ=1:IGDRY) JL = I1(JJ) #ifndef MNH_BITREP ZZW1(JL,3) = MIN( PRSS(JL),XFSDRYG*ZVEC3(JJ) & ! RSDRYG @@ -493,7 +493,7 @@ END IF END DO ! CONCURRENT ! !$acc_nv loop independent , private (JL) - DO JJ = 1, IGDRY + DO CONCURRENT (JJ=1:IGDRY) JL = I1(JJ) #ifndef MNH_BITREP ZZW1(JL,4) = MIN( PRRS(JL),XFRDRYG*ZVEC3(JJ) & ! RRDRYG diff --git a/src/MNH/rain_ice_sedimentation_split.f90 b/src/MNH/rain_ice_sedimentation_split.f90 index b5171424242035e8f71a0b0abfbda98933ebd4df..82688b8ea1c4952a1ef18fcfab80fe66f5a795b2 100644 --- a/src/MNH/rain_ice_sedimentation_split.f90 +++ b/src/MNH/rain_ice_sedimentation_split.f90 @@ -326,9 +326,7 @@ IF ( OSEDIC ) THEN ZTMP2 = 0.5 * GAMMA( XNUC2 + 1.0 / XALPHAC2 ) / ( GAMMA( XNUC2 ) ) IF ( GPRESENT_PSEA ) THEN -#ifdef MNH_COMPILER_NVHPC - !$acc loop independent collapse(2) -#endif + !$acc_nv loop independent collapse(2) DO CONCURRENT ( JI=1:SIZE( PRCS, 1 ) , JJ = 1: SIZE( PRCS, 2 ) ) ZOMPSEA (JI,JJ) = 1.-PSEA(JI,JJ) ZTMP1_2D (JI,JJ) = PSEA(JI,JJ)*XLBC(2) +ZOMPSEA(JI,JJ)*XLBC(1) @@ -337,9 +335,7 @@ IF ( OSEDIC ) THEN ZTMP3_2D (JI,JJ) = (1.-PTOWN(JI,JJ))*ZCONC_TMP(JI,JJ)+PTOWN(JI,JJ)*XCONC_URBAN ZTMP4_2D (JI,JJ) = MAX( 1. , ZOMPSEA(JI,JJ)*ZTMP1 + PSEA(JI,JJ)*ZTMP2 ) END DO -#ifdef MNH_COMPILER_NVHPC - !$acc loop independent collapse(3) -#endif + !$acc_nv loop independent collapse(3) DO CONCURRENT ( JI=1:SIZE( PRCS, 1 ) , JJ = 1:SIZE( PRCS, 2 ) , JK=KKTB:KKTE ) ZLBC (JI,JJ,JK) = ZTMP1_2D(JI,JJ) ZFSEDC (JI,JJ,JK) = ZTMP2_2D(JI,JJ) @@ -387,9 +383,7 @@ PRSS(:,:,:) = PRST(:,:,:)* ZINVTSTEP PRGS(:,:,:) = PRGT(:,:,:)* ZINVTSTEP IF ( KRR == 7 ) PRHS(:,:,:) = PRHT(:,:,:)* ZINVTSTEP #else -#ifdef MNH_COMPILER_NVHPC -!$acc loop collapse(3) independent -#endif +!$acc_nv loop collapse(3) independent DO CONCURRENT ( JI=1:SIZE( PRRS, 1 ) , JJ=1:SIZE( PRRS, 2 ) , JK=1:SIZE( PRRS, 3 ) ) ZPRRS(JI,JJ,JK) = PRRS(JI,JJ,JK) - PRRT(JI,JJ,JK) * ZINVTSTEP ZPRSS(JI,JJ,JK) = PRSS(JI,JJ,JK) - PRST(JI,JJ,JK) * ZINVTSTEP @@ -399,9 +393,7 @@ DO CONCURRENT ( JI=1:SIZE( PRRS, 1 ) , JJ=1:SIZE( PRRS, 2 ) , JK=1:SIZE( PRRS, 3 PRGS (JI,JJ,JK) = PRGT(JI,JJ,JK) * ZINVTSTEP END DO IF ( KRR == 7 ) THEN -#ifdef MNH_COMPILER_NVHPC -!$acc loop collapse(3) independent -#endif +!$acc_nv loop collapse(3) independent DO CONCURRENT ( JI=1:SIZE( PRRS, 1 ) , JJ=1:SIZE( PRRS, 2 ) , JK=1:SIZE( PRRS, 3 ) ) ZPRHS(JI,JJ,JK) = PRHS(JI,JJ,JK) - PRHT(JI,JJ,JK) * ZINVTSTEP PRHS (JI,JJ,JK) = PRHT(JI,JJ,JK) * ZINVTSTEP @@ -432,9 +424,7 @@ DO JN = 1 , KSPLITR IF ( KRR == 7 ) PRHS(:,:,:) = PRHS(:,:,:) + ZPRHS(:,:,:) * ZTSPLITR END IF ! -#ifdef MNH_COMPILER_NVHPC - !$acc loop independent collapse(3) -#endif + !$acc_nv loop independent collapse(3) DO CONCURRENT ( JI=KIB:KIE,JJ=KJB:KJE,JK=KKTB:KKTE ) IF ( OSEDIC ) GSEDIMC(JI,JJ,JK) = & PRCS(JI,JJ,JK) > ZRTMIN(2) @@ -473,8 +463,8 @@ DO JN = 1 , KSPLITR IF ( OSEDIC ) THEN ZWSED(:,:,:) = 0. IF( JN==1 ) PRCS(:,:,:) = PRCS(:,:,:) * PTSTEP -!$acc loop independent - DO JL=1,ISEDIMC +!$acc_nv loop independent + DO CONCURRENT (JL=1:ISEDIMC) ZRSLOC = PRCS(IC1(JL),IC2(JL),IC3(JL)) ZRTLOC = PRCT(IC1(JL),IC2(JL),IC3(JL)) IF (ZRSLOC > ZRTMIN(2) .AND. ZRTLOC > XRTMIN(2)) THEN @@ -532,8 +522,8 @@ DO JN = 1 , KSPLITR ! IF( JN==1 ) PRRS(:,:,:) = PRRS(:,:,:) * PTSTEP ZWSED(:,:,:) = 0. -!$acc loop independent - DO JL=1,ISEDIMR +!$acc_nv loop independent + DO CONCURRENT (JL=1:ISEDIMR) ZRSLOC = PRRS(IR1(JL),IR2(JL),IR3(JL)) IF( ZRSLOC > ZRTMIN(3) ) THEN ZRHODREFLOC = PRHODREF(IR1(JL),IR2(JL),IR3(JL)) @@ -565,8 +555,8 @@ DO JN = 1 , KSPLITR ! IF( JN==1 ) PRIS(:,:,:) = PRIS(:,:,:) * PTSTEP ZWSED(:,:,:) = 0. -!$acc loop independent - DO JL=1,ISEDIMI +!$acc_nv loop independent + DO CONCURRENT (JL=1:ISEDIMI) ZRSLOC = PRIS(II1(JL),II2(JL),II3(JL)) IF( ZRSLOC > MAX(ZRTMIN(4),1.0E-7 )) THEN ! limitation of the McF&H formula ZRHODREFLOC = PRHODREF(II1(JL),II2(JL),II3(JL)) @@ -599,8 +589,8 @@ DO JN = 1 , KSPLITR ! IF( JN==1 ) PRSS(:,:,:) = PRSS(:,:,:) * PTSTEP ZWSED(:,:,:) = 0. -!$acc loop independent - DO JL=1,ISEDIMS +!$acc_nv loop independent + DO CONCURRENT (JL=1:ISEDIMS) ZRSLOC = PRSS(IS1(JL),IS2(JL),IS3(JL)) IF( ZRSLOC > ZRTMIN(5) ) THEN ZRHODREFLOC = PRHODREF(IS1(JL),IS2(JL),IS3(JL)) @@ -630,8 +620,8 @@ DO JN = 1 , KSPLITR ! ZWSED(:,:,:) = 0. IF( JN==1 ) PRGS(:,:,:) = PRGS(:,:,:) * PTSTEP -!$acc loop independent - DO JL=1,ISEDIMG +!$acc_nv loop independent + DO CONCURRENT (JL=1:ISEDIMG) ZRSLOC = PRGS(IG1(JL),IG2(JL),IG3(JL)) IF( ZRSLOC > ZRTMIN(6) ) THEN ZRHODREFLOC = PRHODREF(IG1(JL),IG2(JL),IG3(JL)) @@ -662,8 +652,8 @@ DO JN = 1 , KSPLITR IF ( KRR == 7 ) THEN IF( JN==1 ) PRHS(:,:,:) = PRHS(:,:,:) * PTSTEP ZWSED(:,:,:) = 0. -!$acc loop independent - DO JL=1,ISEDIMH +!$acc_nv loop independent + DO CONCURRENT (JL=1:ISEDIMH) ZRSLOC = PRHS(IH1(JL),IH2(JL),IH3(JL)) IF( ZRSLOC > ZRTMIN(7) ) THEN ZRHODREFLOC = PRHODREF(IH1(JL),IH2(JL),IH3(JL)) diff --git a/src/MNH/rain_ice_slow.f90 b/src/MNH/rain_ice_slow.f90 index 22818930dc457e29007062f431f16f1dd62c456b..5d5cf206840dbad012c02153fce1494aa5e6fa8d 100644 --- a/src/MNH/rain_ice_slow.f90 +++ b/src/MNH/rain_ice_slow.f90 @@ -180,14 +180,16 @@ ENDDO !* 3.3 compute the spontaneous freezing source: RRHONG ! !$acc kernels - ZZW(:) = 0.0 - GWORK(:) = PZT(:)<XTT-35.0 .AND. PRRT(:)>XRTMIN(3) .AND. PRRS(:)>0. - WHERE( GWORK(:) ) - ZZW(:) = MIN( PRRS(:),PRRT(:)* PINVTSTEP ) - PRGS(:) = PRGS(:) + ZZW(:) - PRRS(:) = PRRS(:) - ZZW(:) - PTHS(:) = PTHS(:) + ZZW(:) * zz_diff(:) ! f(L_f*(RRHONG)) - ENDWHERE +DO CONCURRENT (JL=1:JLU) + ZZW(JL) = 0.0 + GWORK(JL) = PZT(JL)<XTT-35.0 .AND. PRRT(JL)>XRTMIN(3) .AND. PRRS(JL)>0. + IF( GWORK(JL) )THEN + ZZW(JL) = MIN( PRRS(JL),PRRT(JL)* PINVTSTEP ) + PRGS(JL) = PRGS(JL) + ZZW(JL) + PRRS(JL) = PRRS(JL) - ZZW(JL) + PTHS(JL) = PTHS(JL) + ZZW(JL) * zz_diff(JL) ! f(L_f*(RRHONG)) + ENDIF +ENDDO !$acc end kernels if ( lbudget_th ) call Budget_store_add( tbudgets(NBUDGET_TH), 'SFR', & diff --git a/src/MNH/rain_ice_warm.f90 b/src/MNH/rain_ice_warm.f90 index ed6907b42e0cd8ef6a99c4af3881c2bb4411961b..205138b735258b6ba9b009b7493868033b7959c1 100644 --- a/src/MNH/rain_ice_warm.f90 +++ b/src/MNH/rain_ice_warm.f90 @@ -179,14 +179,16 @@ CALL MNH_MEM_GET( ZZW4, JLU ) !* 4.2 compute the autoconversion of r_c for r_r production: RCAUTR ! !$acc kernels - zzw(:) = 0. - GWORK(:) = PRCS(:)>0.0 .AND. PHLC_HCF(:)>0.0 - WHERE( GWORK(:) ) - ZZW(:) = XTIMAUTC*MAX( PHLC_HRC(:)/PHLC_HCF(:) - XCRIAUTC/PRHODREF(:),0.0) - ZZW(:) = MIN( PRCS(:),PHLC_HCF(:)*ZZW(:)) - PRCS(:) = PRCS(:) - ZZW(:) - PRRS(:) = PRRS(:) + ZZW(:) - END WHERE +DO CONCURRENT (JL=1:JLU) +zzw(JL) = 0. + GWORK(JL) = PRCS(JL)>0.0 .AND. PHLC_HCF(JL)>0.0 + IF( GWORK(JL) )THEN + ZZW(JL) = XTIMAUTC*MAX( PHLC_HRC(JL)/PHLC_HCF(JL) - XCRIAUTC/PRHODREF(JL),0.0) + ZZW(JL) = MIN( PRCS(JL),PHLC_HCF(JL)*ZZW(JL)) + PRCS(JL) = PRCS(JL) - ZZW(JL) + PRRS(JL) = PRRS(JL) + ZZW(JL) + ENDIF +ENDDO !$acc end kernels if ( lbudget_rc ) call Budget_store_add( tbudgets(NBUDGET_RC), 'AUTO', &