From be031d48d05d11f47818af44f297cd74e627e9fa Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Thu, 15 Jun 2023 16:31:12 +0200
Subject: [PATCH] Quentin 15/06/2023: remove nested WHERE

---
 src/common/turb/mode_compute_updraft.F90      | 32 ++++++++++---------
 src/common/turb/mode_compute_updraft_raha.F90 | 30 +++++++++--------
 2 files changed, 33 insertions(+), 29 deletions(-)

diff --git a/src/common/turb/mode_compute_updraft.F90 b/src/common/turb/mode_compute_updraft.F90
index 825ef4c6e..caf7c4081 100644
--- a/src/common/turb/mode_compute_updraft.F90
+++ b/src/common/turb/mode_compute_updraft.F90
@@ -590,21 +590,23 @@ DO JK=IKB,IKE-IKL,IKL
     ENDWHERE
 
     ! Compute the updraft theta_v, buoyancy and w**2 for level JK+KKL
-    WHERE(GTEST(IIJB:IIJE))
-      PTHV_UP(IIJB:IIJE,JK+IKL) = ZTH_UP(IIJB:IIJE,JK+IKL)* &
-                                    & ((1+ZRVORD*PRV_UP(IIJB:IIJE,JK+IKL))/(1+PRT_UP(IIJB:IIJE,JK+IKL)))
-      WHERE (ZBUO_INTEG_DRY(IIJB:IIJE,JK)>0.)
-        ZW_UP2(IIJB:IIJE,JK+IKL)  = ZW_UP2(IIJB:IIJE,JK) + 2.*(PARAMMF%XABUO-PARAMMF%XBENTR*PARAMMF%XENTR_DRY)* &
-                                                                &ZBUO_INTEG_DRY(IIJB:IIJE,JK)
-      ELSEWHERE
-        ZW_UP2(IIJB:IIJE,JK+IKL)  = ZW_UP2(IIJB:IIJE,JK) + 2.*PARAMMF%XABUO* ZBUO_INTEG_DRY(IIJB:IIJE,JK)
-      ENDWHERE
-      ZW_UP2(IIJB:IIJE,JK+IKL)  = ZW_UP2(IIJB:IIJE,JK+IKL)*(1.-(PARAMMF%XBDETR*ZMIX3_CLD(IIJB:IIJE)+ &
-                                                                       &PARAMMF%XBENTR*ZMIX2_CLD(IIJB:IIJE)))&
-              /(1.+(PARAMMF%XBDETR*ZMIX3_CLD(IIJB:IIJE)+PARAMMF%XBENTR*ZMIX2_CLD(IIJB:IIJE))) &
-              +2.*(PARAMMF%XABUO)*ZBUO_INTEG_CLD(IIJB:IIJE,JK)/ &
-              &(1.+(PARAMMF%XBDETR*ZMIX3_CLD(IIJB:IIJE)+PARAMMF%XBENTR*ZMIX2_CLD(IIJB:IIJE)))
-    ENDWHERE
+  DO JIJ=IIJB,IIJE
+    IF(GTEST(JIJ)) THEN
+      PTHV_UP(JIJ,JK+IKL) = ZTH_UP(JIJ,JK+IKL)* &
+                                    & ((1+ZRVORD*PRV_UP(JIJ,JK+IKL))/(1+PRT_UP(JIJ,JK+IKL)))
+      IF (ZBUO_INTEG_DRY(JIJ,JK)>0.) THEN
+        ZW_UP2(JIJ,JK+IKL)  = ZW_UP2(JIJ,JK) + 2.*(PARAMMF%XABUO-PARAMMF%XBENTR*PARAMMF%XENTR_DRY)* &
+                                                                &ZBUO_INTEG_DRY(JIJ,JK)
+      ELSE
+        ZW_UP2(JIJ,JK+IKL)  = ZW_UP2(JIJ,JK) + 2.*PARAMMF%XABUO* ZBUO_INTEG_DRY(JIJ,JK)
+      END IF
+      ZW_UP2(JIJ,JK+IKL)  = ZW_UP2(JIJ,JK+IKL)*(1.-(PARAMMF%XBDETR*ZMIX3_CLD(JIJ)+ &
+                                                                       &PARAMMF%XBENTR*ZMIX2_CLD(JIJ)))&
+              /(1.+(PARAMMF%XBDETR*ZMIX3_CLD(JIJ)+PARAMMF%XBENTR*ZMIX2_CLD(JIJ))) &
+              +2.*(PARAMMF%XABUO)*ZBUO_INTEG_CLD(JIJ,JK)/ &
+              &(1.+(PARAMMF%XBDETR*ZMIX3_CLD(JIJ)+PARAMMF%XBENTR*ZMIX2_CLD(JIJ)))
+    END IF
+  END DO
 
     ! Test if the updraft has reach the ETL
     WHERE (GTEST(IIJB:IIJE).AND.(PBUO_INTEG(IIJB:IIJE,JK)<=0.))
diff --git a/src/common/turb/mode_compute_updraft_raha.F90 b/src/common/turb/mode_compute_updraft_raha.F90
index 1c7731867..b6f611720 100644
--- a/src/common/turb/mode_compute_updraft_raha.F90
+++ b/src/common/turb/mode_compute_updraft_raha.F90
@@ -585,22 +585,24 @@ DO JK=IKB+IKL,IKE-IKL,IKL !  Vertical loop
      
   GTEST(IIJB:IIJE) = (ZW_UP2(IIJB:IIJE,JK) > ZEPS)  
 
-  WHERE (GTEST(IIJB:IIJE))
-    WHERE(JK<IALIM(IIJB:IIJE))
-      PEMF(IIJB:IIJE,JK+IKL) = MAX(0.,PEMF(IIJB:IIJE,JK) + ZPHI(IIJB:IIJE)*ZZDZ(IIJB:IIJE,JK)* &
-                                                                & (PENTR(IIJB:IIJE,JK) - PDETR(IIJB:IIJE,JK)))
-    ELSEWHERE
-      ZMIX1(IIJB:IIJE)=ZZDZ(IIJB:IIJE,JK)*(PENTR(IIJB:IIJE,JK)-PDETR(IIJB:IIJE,JK))
-      PEMF(IIJB:IIJE,JK+IKL)=PEMF(IIJB:IIJE,JK)*EXP(ZMIX1(IIJB:IIJE))
-    ENDWHERE
+  DO JIJ=IIJB,IIJE
+    IF(GTEST(JIJ)) THEN
+      IF(JK<IALIM(JIJ)) THEN
+      PEMF(JIJ,JK+IKL) = MAX(0.,PEMF(JIJ,JK) + ZPHI(JIJ)*ZZDZ(JIJ,JK)* &
+                                                                & (PENTR(JIJ,JK) - PDETR(JIJ,JK)))
+    ELSE
+      ZMIX1(JIJ)=ZZDZ(JIJ,JK)*(PENTR(JIJ,JK)-PDETR(JIJ,JK))
+      PEMF(JIJ,JK+IKL)=PEMF(JIJ,JK)*EXP(ZMIX1(JIJ))
+    END IF
 
 ! Updraft fraction must be smaller than XFRAC_UP_MAX
-    PFRAC_UP(IIJB:IIJE,JK+IKL)=PEMF(IIJB:IIJE,JK+IKL)/&
-                                    &(SQRT(ZW_UP2(IIJB:IIJE,JK+IKL))*ZRHO_F(IIJB:IIJE,JK+IKL))
-    PFRAC_UP(IIJB:IIJE,JK+IKL)=MIN(PARAMMF%XFRAC_UP_MAX,PFRAC_UP(IIJB:IIJE,JK+IKL))
-    PEMF(IIJB:IIJE,JK+IKL) = ZRHO_F(IIJB:IIJE,JK+IKL)*PFRAC_UP(IIJB:IIJE,JK+IKL)*&
-                                 & SQRT(ZW_UP2(IIJB:IIJE,JK+IKL))
-  ENDWHERE
+    PFRAC_UP(JIJ,JK+IKL)=PEMF(JIJ,JK+IKL)/&
+                                    &(SQRT(ZW_UP2(JIJ,JK+IKL))*ZRHO_F(JIJ,JK+IKL))
+    PFRAC_UP(JIJ,JK+IKL)=MIN(PARAMMF%XFRAC_UP_MAX,PFRAC_UP(JIJ,JK+IKL))
+    PEMF(JIJ,JK+IKL) = ZRHO_F(JIJ,JK+IKL)*PFRAC_UP(JIJ,JK+IKL)*&
+                                 & SQRT(ZW_UP2(JIJ,JK+IKL))
+  END IF
+ END DO
   !$mnh_end_expand_where(JIJ=IIJB:IIJE)
 ENDDO
 
-- 
GitLab