From ed46944249f0f9117c1510b6489c455ae2d9c6aa Mon Sep 17 00:00:00 2001 From: JUan ESCOBAR <juan.escobar@aero.obs-mip.fr> Date: Fri, 16 Oct 2020 15:10:18 +0200 Subject: [PATCH] Juan 16/10/2020: rain_ice_fast_rs.f90 , OpenACC opti -> DO CONCURRENT for BR_POW etc ... --- src/MNH/rain_ice_fast_rs.f90 | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/MNH/rain_ice_fast_rs.f90 b/src/MNH/rain_ice_fast_rs.f90 index a64fb281d..76f5e6789 100644 --- a/src/MNH/rain_ice_fast_rs.f90 +++ b/src/MNH/rain_ice_fast_rs.f90 @@ -520,32 +520,34 @@ END IF ! !$acc kernels GWORK(:) = PRST(:)>XRTMIN(5) .AND. PRSS(:)>0.0 .AND. PZT(:)>XTT - WHERE( GWORK(:) ) - ZZW(:) = PRVT(:)*PPRES(:)/((XMV/XMD)+PRVT(:)) ! Vapor pressure - ZZW(:) = PKA(:)*(XTT-PZT(:)) + & - ( PDV(:)*(XLVTT + ( XCPV - XCL ) * ( PZT(:) - XTT )) & - *(XESTT-ZZW(:))/(XRV*PZT(:)) ) + DO CONCURRENT (JJ=1:IGACC) + IF ( GWORK(JJ) ) THEN + ZZW(JJ) = PRVT(JJ)*PPRES(JJ)/((XMV/XMD)+PRVT(JJ)) ! Vapor pressure + ZZW(JJ) = PKA(JJ)*(XTT-PZT(JJ)) + & + ( PDV(JJ)*(XLVTT + ( XCPV - XCL ) * ( PZT(JJ) - XTT )) & + *(XESTT-ZZW(JJ))/(XRV*PZT(JJ)) ) ! ! compute RSMLT ! #ifndef MNH_BITREP - ZZW(:) = MIN( PRSS(:), XFSCVMG*MAX( 0.0,( -ZZW(:) * & - ( X0DEPS* PLBDAS(:)**XEX0DEPS + & - X1DEPS*PCJ(:)*PLBDAS(:)**XEX1DEPS ) ) / & - ( PRHODREF(:)*XLMTT ) ) ) + ZZW(JJ) = MIN( PRSS(JJ), XFSCVMG*MAX( 0.0,( -ZZW(JJ) * & + ( X0DEPS* PLBDAS(JJ)**XEX0DEPS + & + X1DEPS*PCJ(JJ)*PLBDAS(JJ)**XEX1DEPS ) ) / & + ( PRHODREF(JJ)*XLMTT ) ) ) #else - ZZW(:) = MIN( PRSS(:), XFSCVMG*MAX( 0.0,( -ZZW(:) * & - ( X0DEPS* BR_POW(PLBDAS(:),XEX0DEPS) + & - X1DEPS*PCJ(:)*BR_POW(PLBDAS(:),XEX1DEPS) ) ) / & - ( PRHODREF(:)*XLMTT ) ) ) + ZZW(JJ) = MIN( PRSS(JJ), XFSCVMG*MAX( 0.0,( -ZZW(JJ) * & + ( X0DEPS* BR_POW(PLBDAS(JJ),XEX0DEPS) + & + X1DEPS*PCJ(JJ)*BR_POW(PLBDAS(JJ),XEX1DEPS) ) ) / & + ( PRHODREF(JJ)*XLMTT ) ) ) #endif ! ! note that RSCVMG = RSMLT*XFSCVMG but no heat is exchanged (at the rate RSMLT) ! because the graupeln produced by this process are still icy!!! ! - PRSS(:) = PRSS(:) - ZZW(:) - PRGS(:) = PRGS(:) + ZZW(:) - END WHERE + PRSS(JJ) = PRSS(JJ) - ZZW(JJ) + PRGS(JJ) = PRGS(JJ) + ZZW(JJ) + END IF + END DO ! CONCURRENT !$acc end kernels IF (LBUDGET_RS) THEN !$acc update self(PRSS) -- GitLab