From b89c129662fb0e6d2b75e98b0d1629078f31cb6a Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Mon, 9 Oct 2023 11:28:29 +0200
Subject: [PATCH] Quentin 09/10/2023: add control in mean_field for computation
 with water vapor (for IBM/EOL dry KTEST)

---
 src/MNH/mean_field.f90 | 96 +++++++++++++++++++++---------------------
 1 file changed, 48 insertions(+), 48 deletions(-)

diff --git a/src/MNH/mean_field.f90 b/src/MNH/mean_field.f90
index 346311d2a..e91972c77 100644
--- a/src/MNH/mean_field.f90
+++ b/src/MNH/mean_field.f90
@@ -58,6 +58,7 @@ END MODULE MODI_MEAN_FIELD
 !              ------------
 !
 USE MODE_ll
+USE MODD_CONF_n, ONLY: LUSERV
 USE MODD_MEAN_FIELD_n
 USE MODD_PARAM_n
 USE MODD_MEAN_FIELD
@@ -125,56 +126,55 @@ IKE=IKU-JPVEXT
 !
 !*       1. MEAN
 !
-   ZTEMPT = PTHT*(((PPABST)/XP00)**(XRD/XCPD))
+ZTEMPT = PTHT*(((PPABST)/XP00)**(XRD/XCPD))
 !
 !
-! Calculation of saturation specific humidity over water/ice
-!
-ZQSAT_W = QSAT (ZTEMPT, PPABST)
-ZQSAT_I = QSATI(ZTEMPT, PPABST)
-!
-! Conversion mixing ratio -> specfic humidity
-!
-ZRT(:,:,:) = -9999.0
-WHERE (PRT(:,:,:).LT.1.0E-6)
-   ZRT(:,:,:) = 1.0E-6
-ELSEWHERE
-   ZRT(:,:,:) = PRT(:,:,:)
-ENDWHERE
-!
-ZQACT(:,:,:) = 1.0 / ( 1.0 + 1.0/ZRT(:,:,:) )
-!
-! Calculation of relative humidity with respect to water/ice
-!
-ZRH_W(:,:,:) = 100.0*ZQACT(:,:,:)/ZQSAT_W(:,:,:)
-ZRH_I(:,:,:) = 100.0*ZQACT(:,:,:)/ZQSAT_I(:,:,:)
-!
-! Fractional partitioning between liquid and solid cloud water
-! as assumed in condensations
-!
-ZFRAC(:,:,:) = ( XTT - ZTEMPT(:,:,:) ) / 20.
-ZFRAC(:,:,:) = MAX( 0., MIN(1., ZFRAC(:,:,:) ) )
-!
-! Calculation of weighted average between water and ice value
-!
-ZRH_P(:,:,:) = ZFRAC(:,:,:) * ZRH_I(:,:,:) + (1.0-ZFRAC(:,:,:)) * ZRH_W(:,:,:)
-!
-! Calculation of the column maximum of relative humidity
-!
-ZRH_W_MAXCOL(:,:) = MAXVAL(ZRH_W(:,:,:),DIM=3)
-ZRH_I_MAXCOL(:,:) = MAXVAL(ZRH_I(:,:,:),DIM=3)
-ZRH_P_MAXCOL(:,:) = MAXVAL(ZRH_P(:,:,:),DIM=3)
-!
-   IF (LPASPOL)  XSVT_MEAN  = PSVT + XSVT_MEAN
-   IF (CTURB/='NONE') XTKEM_MEAN = PTKET + XTKEM_MEAN
-   XQ_MEAN     = XQ_MEAN + ZQACT
-   XRH_W_MEAN    = XRH_W_MEAN + ZRH_W
-   XRH_I_MEAN    = XRH_I_MEAN + ZRH_I
-   XRH_P_MEAN    = XRH_P_MEAN + ZRH_P
-   XRH_W_MAXCOL_MEAN = XRH_W_MAXCOL_MEAN + ZRH_W_MAXCOL
-   XRH_I_MAXCOL_MEAN = XRH_I_MAXCOL_MEAN + ZRH_I_MAXCOL
-   XRH_P_MAXCOL_MEAN = XRH_P_MAXCOL_MEAN + ZRH_P_MAXCOL
-   
+IF(LUSERV) THEN
+  ! Calculation of saturation specific humidity over water/ice
+  !
+  ZQSAT_W = QSAT (ZTEMPT, PPABST)
+  ZQSAT_I = QSATI(ZTEMPT, PPABST)
+  !
+  ! Conversion mixing ratio -> specfic humidity
+  !
+  ZRT(:,:,:) = -9999.0
+  WHERE (PRT(:,:,:).LT.1.0E-6)
+     ZRT(:,:,:) = 1.0E-6
+  ELSEWHERE
+     ZRT(:,:,:) = PRT(:,:,:)
+  ENDWHERE
+  !
+  ZQACT(:,:,:) = 1.0 / ( 1.0 + 1.0/ZRT(:,:,:) )
+  !
+  ! Calculation of relative humidity with respect to water/ice
+  !
+  ZRH_W(:,:,:) = 100.0*ZQACT(:,:,:)/ZQSAT_W(:,:,:)
+  ZRH_I(:,:,:) = 100.0*ZQACT(:,:,:)/ZQSAT_I(:,:,:)
+  !
+  ! Fractional partitioning between liquid and solid cloud water
+  ! as assumed in condensations
+  !
+  ZFRAC(:,:,:) = ( XTT - ZTEMPT(:,:,:) ) / 20.
+  ZFRAC(:,:,:) = MAX( 0., MIN(1., ZFRAC(:,:,:) ) )
+  !
+  ! Calculation of weighted average between water and ice value
+  !
+  ZRH_P(:,:,:) = ZFRAC(:,:,:) * ZRH_I(:,:,:) + (1.0-ZFRAC(:,:,:)) * ZRH_W(:,:,:)
+  !
+  ! Calculation of the column maximum of relative humidity
+  !
+  ZRH_W_MAXCOL(:,:) = MAXVAL(ZRH_W(:,:,:),DIM=3)
+  ZRH_I_MAXCOL(:,:) = MAXVAL(ZRH_I(:,:,:),DIM=3)
+  ZRH_P_MAXCOL(:,:) = MAXVAL(ZRH_P(:,:,:),DIM=3)
+  XQ_MEAN     = XQ_MEAN + ZQACT
+  XRH_W_MEAN    = XRH_W_MEAN + ZRH_W
+  XRH_I_MEAN    = XRH_I_MEAN + ZRH_I
+  XRH_P_MEAN    = XRH_P_MEAN + ZRH_P
+  XRH_W_MAXCOL_MEAN = XRH_W_MAXCOL_MEAN + ZRH_W_MAXCOL
+  XRH_I_MAXCOL_MEAN = XRH_I_MAXCOL_MEAN + ZRH_I_MAXCOL
+  XRH_P_MAXCOL_MEAN = XRH_P_MAXCOL_MEAN + ZRH_P_MAXCOL
+END IF   
+
    IF (LPASPOL)  XSVT_MEAN  = PSVT + XSVT_MEAN
    IF (CTURB/='NONE') XTKEM_MEAN = PTKET + XTKEM_MEAN
 !
-- 
GitLab