From 9eb49a814eabc03a1ef6d1280df526dd8623c9e1 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 18 Jun 2020 17:32:44 +0200 Subject: [PATCH] =?UTF-8?q?Philippe=20+=20Benoit=20Vi=C3=A9=2018/06/2020:?= =?UTF-8?q?=20improve=20removal=20of=20negative=20scalar=20variables:=20us?= =?UTF-8?q?e=20ZEXN=20instead=20of=20PEXNREF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MNH/resolved_cloud.f90 | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90 index 04789477b..090d6f691 100644 --- a/src/MNH/resolved_cloud.f90 +++ b/src/MNH/resolved_cloud.f90 @@ -273,6 +273,7 @@ END MODULE MODI_RESOLVED_CLOUD ! P. Wautelet 11/06/2020: bugfix: correct ZSVS array indices ! P. Wautelet 11/06/2020: bugfix: add "Non local correction for precipitating species" for ICE4 ! P. Wautelet + Benoit Vié 11/06/2020: improve removal of negative scalar variables + adapt the corresponding budgets +! P. Wautelet + Benoit Vié 18/06/2020: improve removal of negative scalar variables: use ZEXN instead of PEXNREF !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -632,7 +633,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,2) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,2) = 0.0 END WHERE ! @@ -660,7 +661,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,4) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLS(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,4) = 0. END WHERE ! @@ -668,7 +669,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,2) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,2) = 0. END WHERE ! @@ -677,7 +678,7 @@ SELECT CASE ( HCLOUD ) WHERE ((PRS(:,:,:,1) <0.) .AND. (PRS(:,:,:,2)> 0.) ) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,2) = 0. END WHERE ! ice @@ -686,7 +687,7 @@ SELECT CASE ( HCLOUD ) ZCOR(:,:,:)=MIN(-PRS(:,:,:,1),PRS(:,:,:,4)) PRS(:,:,:,1) = PRS(:,:,:,1) + ZCOR(:,:,:) PTHS(:,:,:) = PTHS(:,:,:) - ZCOR(:,:,:) * ZLS(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,4) = PRS(:,:,:,4) -ZCOR(:,:,:) END WHERE END IF @@ -701,7 +702,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,JSV) = 0.0 ZSVS(:,:,:,JSV) = 0.0 END WHERE @@ -710,7 +711,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,4) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,4) = 0.0 ZSVS(:,:,:,4) = 0.0 END WHERE @@ -718,7 +719,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,2) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,2) = 0.0 ZSVS(:,:,:,2) = 0.0 END WHERE @@ -1143,7 +1144,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,2) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,2) = 0.0 END WHERE ! @@ -1153,7 +1154,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,4) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLS(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,4) = 0. END WHERE ! @@ -1161,7 +1162,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,2) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,2) = 0. END WHERE ! @@ -1170,7 +1171,7 @@ SELECT CASE ( HCLOUD ) WHERE ((PRS(:,:,:,1) <0.) .AND. (PRS(:,:,:,2)> 0.) ) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,2) = 0. END WHERE ! ice @@ -1179,7 +1180,7 @@ SELECT CASE ( HCLOUD ) ZCOR(:,:,:)=MIN(-PRS(:,:,:,1),PRS(:,:,:,4)) PRS(:,:,:,1) = PRS(:,:,:,1) + ZCOR(:,:,:) PTHS(:,:,:) = PTHS(:,:,:) - ZCOR(:,:,:) * ZLS(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,4) = PRS(:,:,:,4) -ZCOR(:,:,:) END WHERE END IF @@ -1194,7 +1195,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,JSV) = 0.0 ZSVS(:,:,:,JSV) = 0.0 END WHERE @@ -1210,7 +1211,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,JSV) = 0.0 ZSVS(:,:,:,JSV) = 0.0 END WHERE @@ -1219,7 +1220,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,4) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,4) = 0.0 ZSVS(:,:,:,4) = 0.0 END WHERE @@ -1227,7 +1228,7 @@ SELECT CASE ( HCLOUD ) WHERE (PRS(:,:,:,2) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & - ZCPH(:,:,:) / PEXNREF(:,:,:) + ZCPH(:,:,:) / ZEXN(:,:,:) PRS(:,:,:,2) = 0.0 ZSVS(:,:,:,2) = 0.0 END WHERE -- GitLab