From 5be77485d17e3c84a665d06ca4624837311ae29c Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Fri, 29 Sep 2023 11:30:02 +0200 Subject: [PATCH] Quentin 29/09/2023: fix remove of nested WHERE --- src/common/turb/mode_compute_updraft.F90 | 21 ++++++++++++++----- src/common/turb/mode_compute_updraft_raha.F90 | 6 +----- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/common/turb/mode_compute_updraft.F90 b/src/common/turb/mode_compute_updraft.F90 index caf7c4081..e9554a42f 100644 --- a/src/common/turb/mode_compute_updraft.F90 +++ b/src/common/turb/mode_compute_updraft.F90 @@ -588,7 +588,7 @@ DO JK=IKB,IKE-IKL,IKL PRSAT_UP(IIJB:IIJE,JK+IKL) = ZRSATW(IIJB:IIJE)*(1-PFRAC_ICE_UP(IIJB:IIJE,JK+IKL)) + & & ZRSATI(IIJB:IIJE)*PFRAC_ICE_UP(IIJB:IIJE,JK+IKL) ENDWHERE - + !$mnh_end_expand_where(JIJ=IIJB:IIJE) ! Compute the updraft theta_v, buoyancy and w**2 for level JK+KKL DO JIJ=IIJB,IIJE IF(GTEST(JIJ)) THEN @@ -609,14 +609,17 @@ DO JK=IKB,IKE-IKL,IKL END DO ! Test if the updraft has reach the ETL + !$mnh_expand_where(JIJ=IIJB:IIJE) WHERE (GTEST(IIJB:IIJE).AND.(PBUO_INTEG(IIJB:IIJE,JK)<=0.)) KKETL(IIJB:IIJE) = JK+IKL GTESTETL(IIJB:IIJE)=.TRUE. ELSEWHERE GTESTETL(IIJB:IIJE)=.FALSE. ENDWHERE + !$mnh_end_expand_where(JIJ=IIJB:IIJE) ! Test is we have reached the top of the updraft + !$mnh_expand_where(JIJ=IIJB:IIJE) WHERE (GTEST(IIJB:IIJE).AND.((ZW_UP2(IIJB:IIJE,JK+IKL)<=0.).OR.(PEMF(IIJB:IIJE,JK+IKL)<=0.))) ZW_UP2(IIJB:IIJE,JK+IKL)=0. PEMF(IIJB:IIJE,JK+IKL)=0. @@ -630,28 +633,36 @@ DO JK=IKB,IKE-IKL,IKL PFRAC_UP(IIJB:IIJE,JK+IKL)=0. KKCTL(IIJB:IIJE)=JK+IKL ENDWHERE + !$mnh_end_expand_where(JIJ=IIJB:IIJE) ! compute frac_up at JK+KKL + !$mnh_expand_where(JIJ=IIJB:IIJE) WHERE (GTEST(IIJB:IIJE)) PFRAC_UP(IIJB:IIJE,JK+IKL)=PEMF(IIJB:IIJE,JK+IKL)/& &(SQRT(ZW_UP2(IIJB:IIJE,JK+IKL))*ZRHO_F(IIJB:IIJE,JK+IKL)) ENDWHERE + !$mnh_end_expand_where(JIJ=IIJB:IIJE) ! Updraft fraction must be smaller than XFRAC_UP_MAX + !$mnh_expand_where(JIJ=IIJB:IIJE) WHERE (GTEST(IIJB:IIJE)) PFRAC_UP(IIJB:IIJE,JK+IKL)=MIN(PARAMMF%XFRAC_UP_MAX,PFRAC_UP(IIJB:IIJE,JK+IKL)) ENDWHERE + !$mnh_end_expand_where(JIJ=IIJB:IIJE) ! When cloudy and non-buoyant, updraft fraction must decrease + !$mnh_expand_where(JIJ=IIJB:IIJE) WHERE ((GTEST(IIJB:IIJE).AND.GTESTETL(IIJB:IIJE)).AND.GTESTLCL(IIJB:IIJE)) PFRAC_UP(IIJB:IIJE,JK+IKL)=MIN(PFRAC_UP(IIJB:IIJE,JK+IKL),PFRAC_UP(IIJB:IIJE,JK)) ENDWHERE + !$mnh_end_expand_where(JIJ=IIJB:IIJE) ! Mass flux is updated with the new updraft fraction + + !$mnh_expand_array(JIJ=IIJB:IIJE) IF (OENTR_DETR) PEMF(IIJB:IIJE,JK+IKL)=PFRAC_UP(IIJB:IIJE,JK+IKL)*SQRT(ZW_UP2(IIJB:IIJE,JK+IKL))* & &ZRHO_F(IIJB:IIJE,JK+IKL) - !$mnh_end_expand_where(JIJ=IIJB:IIJE) - + !$mnh_end_expand_array(JIJ=IIJB:IIJE) END IF !OENTR_DETR ENDDO @@ -695,8 +706,6 @@ ENDIF IF (LHOOK) CALL DR_HOOK('COMPUTE_UPDRAFT',1,ZHOOK_HANDLE) CONTAINS -INCLUDE "th_r_from_thl_rt.func.h" -INCLUDE "compute_frac_ice.func.h" SUBROUTINE COMPUTE_ENTR_DETR(D, CST, NEBN, PARAMMF,& KK,KKB,KKE,KKL,OTEST,OTESTLCL,& PFRAC_ICE,PRHODREF,& @@ -1106,6 +1115,8 @@ DO JIJ=IIJB,IIJE ENDDO END SUBROUTINE COMPUTE_ENTR_DETR +INCLUDE "th_r_from_thl_rt.func.h" +INCLUDE "compute_frac_ice.func.h" END SUBROUTINE COMPUTE_UPDRAFT END MODULE MODE_COMPUTE_UPDRAFT diff --git a/src/common/turb/mode_compute_updraft_raha.F90 b/src/common/turb/mode_compute_updraft_raha.F90 index b6f611720..a92c40616 100644 --- a/src/common/turb/mode_compute_updraft_raha.F90 +++ b/src/common/turb/mode_compute_updraft_raha.F90 @@ -581,11 +581,8 @@ PEMF(IIJB:IIJE,IKB+IKL) = ZRHO_F(IIJB:IIJE,IKB+IKL)*PFRAC_UP(IIJB:IIJE,IKB+IKL)* !$mnh_end_expand_where(JIJ=IIJB:IIJE) DO JK=IKB+IKL,IKE-IKL,IKL ! Vertical loop - !$mnh_expand_where(JIJ=IIJB:IIJE) - - GTEST(IIJB:IIJE) = (ZW_UP2(IIJB:IIJE,JK) > ZEPS) - DO JIJ=IIJB,IIJE + GTEST(JIJ) = (ZW_UP2(JIJ,JK) > ZEPS) IF(GTEST(JIJ)) THEN IF(JK<IALIM(JIJ)) THEN PEMF(JIJ,JK+IKL) = MAX(0.,PEMF(JIJ,JK) + ZPHI(JIJ)*ZZDZ(JIJ,JK)* & @@ -603,7 +600,6 @@ DO JK=IKB+IKL,IKE-IKL,IKL ! Vertical loop & SQRT(ZW_UP2(JIJ,JK+IKL)) END IF END DO - !$mnh_end_expand_where(JIJ=IIJB:IIJE) ENDDO !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) -- GitLab