diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90 index 08087ac3197bceb54ac3fbd02d688d0ced79377b..d5b59fc5658280833dd0e15d095bc14a6c46f21d 100644 --- a/src/MNH/advection_metsv.f90 +++ b/src/MNH/advection_metsv.f90 @@ -466,7 +466,7 @@ END IF !PW: not necessary: data already on device due to contrav_device !$acc update device(ZRUCPPM,ZRVCPPM,ZRWCPPM) !$acc kernels IF (.NOT. L1D) THEN - ZCFLU = 0.0 ; ZCFLV = 0.0 ; ZCFLW = 0.0 + ZCFLU(:,:,:) = 0.0 ; ZCFLV(:,:,:) = 0.0 ; ZCFLW(:,:,:) = 0.0 ZCFLU(IIB:IIE,IJB:IJE,:) = ABS(ZRUCPPM(IIB:IIE,IJB:IJE,:) * PTSTEP) ZCFLV(IIB:IIE,IJB:IJE,:) = ABS(ZRVCPPM(IIB:IIE,IJB:IJE,:) * PTSTEP) ZCFLW(IIB:IIE,IJB:IJE,:) = ABS(ZRWCPPM(IIB:IIE,IJB:IJE,:) * PTSTEP) @@ -648,8 +648,8 @@ ZRWCPPM = ZRWCPPM*ZTSTEP_PPM ! Clouds related processes from previous time-step are taken into account in PRTHS_CLD ! Advection related processes from previous time-step will be taken into account in ZRTHS_PPM ! -ZRTHS_OTHER = PRTHS - PTHT * PRHODJ / PTSTEP -IF (GTKE) ZRTKES_OTHER = PRTKES - PTKET * PRHODJ / PTSTEP +ZRTHS_OTHER(:,:,:) = PRTHS(:,:,:) - PTHT(:,:,:) * PRHODJ(:,:,:) / PTSTEP +IF (GTKE) ZRTKES_OTHER(:,:,:) = PRTKES(:,:,:) - PTKET(:,:,:) * PRHODJ(:,:,:) / PTSTEP DO JR = 1, KRR ZRRS_OTHER(:,:,:,JR) = PRRS(:,:,:,JR) - PRT(:,:,:,JR) * PRHODJ(:,:,:) / PTSTEP END DO @@ -776,9 +776,9 @@ DO JSPL=1,KSPLIT ! ! Guesses of the field inside the time splitting loop ! - ZTH = ZTH + ( ZRTHS_PPM(:,:,:) + ZRTHS_OTHER(:,:,:) + PRTHS_CLD(:,:,:)) * & + ZTH(:,:,:) = ZTH(:,:,:) + ( ZRTHS_PPM(:,:,:) + ZRTHS_OTHER(:,:,:) + PRTHS_CLD(:,:,:)) * & ZTSTEP_PPM / PRHODJ(:,:,:) - IF (GTKE) ZTKE = ZTKE + ( ZRTKES_PPM(:,:,:) + ZRTKES_OTHER(:,:,:) ) * ZTSTEP_PPM / PRHODJ(:,:,:) + IF (GTKE) ZTKE(:,:,:) = ZTKE(:,:,:) + ( ZRTKES_PPM(:,:,:) + ZRTKES_OTHER(:,:,:) ) * ZTSTEP_PPM / PRHODJ(:,:,:) DO JR = 1, KRR ZR(:,:,:,JR) = ZR(:,:,:,JR) + ( ZRRS_PPM(:,:,:,JR) + ZRRS_OTHER(:,:,:,JR) + PRRS_CLD(:,:,:,JR) ) & * ZTSTEP_PPM / PRHODJ(:,:,:) diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90 index 8a6746c023ea4ca70eb9dab942252e6401d3539f..690aa32030b77f45cdd22c6816f007e4e05c34c8 100644 --- a/src/MNH/advection_uvw.f90 +++ b/src/MNH/advection_uvw.f90 @@ -332,9 +332,9 @@ CALL MZM_DEVICE(PRHODJ,ZMZM_RHODJ) ! ------------------------------------- ! !$acc kernels -ZRUT = PUT(:,:,:) * ZMXM_RHODJ -ZRVT = PVT(:,:,:) * ZMYM_RHODJ -ZRWT = PWT(:,:,:) * ZMZM_RHODJ +ZRUT(:,:,:) = PUT(:,:,:) * ZMXM_RHODJ(:,:,:) +ZRVT(:,:,:) = PVT(:,:,:) * ZMYM_RHODJ(:,:,:) +ZRWT(:,:,:) = PWT(:,:,:) * ZMZM_RHODJ(:,:,:) !$acc end kernels !$acc update self(ZRUT,ZRVT) ! @@ -373,9 +373,9 @@ NULLIFY(TZFIELDS_ll) ! !$acc update device(PRUS,PRVS,PRWS) !$acc kernels -ZRUS_OTHER = PRUS - ZRUT / PTSTEP + PRUS_PRES -ZRVS_OTHER = PRVS - ZRVT / PTSTEP + PRVS_PRES -ZRWS_OTHER = PRWS - ZRWT / PTSTEP + PRWS_PRES +ZRUS_OTHER(:,:,:) = PRUS(:,:,:) - ZRUT(:,:,:) / PTSTEP + PRUS_PRES(:,:,:) +ZRVS_OTHER(:,:,:) = PRVS(:,:,:) - ZRVT(:,:,:) / PTSTEP + PRVS_PRES(:,:,:) +ZRWS_OTHER(:,:,:) = PRWS(:,:,:) - ZRWT(:,:,:) / PTSTEP + PRWS_PRES(:,:,:) !$acc end kernels ! ! Top and bottom Boundaries @@ -420,9 +420,9 @@ ZTSTEP = PTSTEP / REAL(ISPLIT) !------------------------------------------------------------------------------- ! !$acc kernels -ZU = PUT -ZV = PVT -ZW = PWT +ZU(:,:,:) = PUT(:,:,:) +ZV(:,:,:) = PVT(:,:,:) +ZW(:,:,:) = PWT(:,:,:) !$acc end kernels !$acc update self(ZU,ZV,ZW) ! diff --git a/src/MNH/advection_uvw_cen.f90 b/src/MNH/advection_uvw_cen.f90 index 8004ee8a67dd0303ba83a869c06ec87adca8a471..2c99a0b94c6643a0ba9847c95d50afaac7b1c454 100644 --- a/src/MNH/advection_uvw_cen.f90 +++ b/src/MNH/advection_uvw_cen.f90 @@ -239,19 +239,19 @@ CALL MZM_DEVICE(PRHODJ,ZMZM_RHODJ) ! ------------------------------------- ! !$acc kernels present(ZRUT,ZRVT,ZRWT,PUT,PVT,PWT,ZMXM_RHODJ,ZMYM_RHODJ,ZMZM_RHODJ) -ZRUT = PUT(:,:,:) * ZMXM_RHODJ -ZRVT = PVT(:,:,:) * ZMYM_RHODJ -ZRWT = PWT(:,:,:) * ZMZM_RHODJ +ZRUT(:,:,:) = PUT(:,:,:) * ZMXM_RHODJ(:,:,:) +ZRVT(:,:,:) = PVT(:,:,:) * ZMYM_RHODJ(:,:,:) +ZRWT(:,:,:) = PWT(:,:,:) * ZMZM_RHODJ(:,:,:) !$acc end kernels ! #ifndef _OPENACC -IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN +IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT,2) ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN CALL CONTRAV (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT,4) END IF #else -IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN +IF (HUVW_ADV_SCHEME=='CEN2ND' ) THEN CALL CONTRAV_DEVICE (HLBCX,HLBCY,ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT,2, & ZT3D(:,:,:,IZ1),ZT3D(:,:,:,IZ2),ODATA_ON_DEVICE=.TRUE.) ELSEIF (HUVW_ADV_SCHEME=='CEN4TH') THEN @@ -277,9 +277,9 @@ NULLIFY(TZFIELDS_ll) ! ---------------------------- ! !$acc kernels present(ZRUS,ZRVS,ZRWS,PUM,PVM,PWM,ZMXM_RHODJ,ZMYM_RHODJ,ZMZM_RHODJ) -ZRUS(:,:,:) = PUM(:,:,:) * ZMXM_RHODJ/(2.*PTSTEP) -ZRVS(:,:,:) = PVM(:,:,:) * ZMYM_RHODJ/(2.*PTSTEP) -ZRWS(:,:,:) = PWM(:,:,:) * ZMZM_RHODJ/(2.*PTSTEP) +ZRUS(:,:,:) = PUM(:,:,:) * ZMXM_RHODJ(:,:,:)/(2.*PTSTEP) +ZRVS(:,:,:) = PVM(:,:,:) * ZMYM_RHODJ(:,:,:)/(2.*PTSTEP) +ZRWS(:,:,:) = PWM(:,:,:) * ZMZM_RHODJ(:,:,:)/(2.*PTSTEP) !$acc end kernels ! !------------------------------------------------------------------------------- @@ -306,21 +306,21 @@ END IF !$acc kernels present(ZRUS,ZRVS,ZRWS) present(ZUS,ZVS,ZWS) present(PUM,PVM,PWM) & !$acc & present(ZMXM_RHODJ,ZMYM_RHODJ,ZMZM_RHODJ) pcopy(PDUM,PDVM,PDWM,PRUS,PRVS,PRWS) !default added in OpenACC 2.5 !!$acc & default(none) -ZUS = ZRUS(:,:,:)/ZMXM_RHODJ*2.*PTSTEP -ZVS = ZRVS(:,:,:)/ZMYM_RHODJ*2.*PTSTEP -ZWS = ZRWS(:,:,:)/ZMZM_RHODJ*2.*PTSTEP +ZUS(:,:,:) = ZRUS(:,:,:)/ZMXM_RHODJ(:,:,:)*2.*PTSTEP +ZVS(:,:,:) = ZRVS(:,:,:)/ZMYM_RHODJ(:,:,:)*2.*PTSTEP +ZWS(:,:,:) = ZRWS(:,:,:)/ZMZM_RHODJ(:,:,:)*2.*PTSTEP !------------------------------------------------------------------------------- ! !* 5. Extracts the variation between current and future time step ! ----------------------------------------------------------- ! -PRUS(:,:,:) = PRUS(:,:,:) + ( ZUS(:,:,:) - PUM(:,:,:) - 0.5* PDUM) * ZMXM_RHODJ/(PTSTEP) -PRVS(:,:,:) = PRVS(:,:,:) + ( ZVS(:,:,:) - PVM(:,:,:) - 0.5* PDVM) * ZMYM_RHODJ/(PTSTEP) -PRWS(:,:,:) = PRWS(:,:,:) + ( ZWS(:,:,:) - PWM(:,:,:) - 0.5* PDWM) * ZMZM_RHODJ/(PTSTEP) +PRUS(:,:,:) = PRUS(:,:,:) + ( ZUS(:,:,:) - PUM(:,:,:) - 0.5* PDUM(:,:,:)) * ZMXM_RHODJ(:,:,:)/(PTSTEP) +PRVS(:,:,:) = PRVS(:,:,:) + ( ZVS(:,:,:) - PVM(:,:,:) - 0.5* PDVM(:,:,:)) * ZMYM_RHODJ(:,:,:)/(PTSTEP) +PRWS(:,:,:) = PRWS(:,:,:) + ( ZWS(:,:,:) - PWM(:,:,:) - 0.5* PDWM(:,:,:)) * ZMZM_RHODJ(:,:,:)/(PTSTEP) ! -PDUM = ZUS(:,:,:) - PUM(:,:,:) -PDVM = ZVS(:,:,:) - PVM(:,:,:) -PDWM = ZWS(:,:,:) - PWM(:,:,:) +PDUM(:,:,:) = ZUS(:,:,:) - PUM(:,:,:) +PDVM(:,:,:) = ZVS(:,:,:) - PVM(:,:,:) +PDWM(:,:,:) = ZWS(:,:,:) - PWM(:,:,:) !$acc end kernels ! IF (LBUDGET_U) CALL BUDGET (PRUS,1,'ADV_BU_RU')