From 3cfb80f270ef209d5d150ac22f52c4cde1692f2e Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Mon, 5 Sep 2022 13:47:57 +0200
Subject: [PATCH] Benoit V. 05/09/2022: bugfix LIMA + revert LSNOW_T default
 value to FALSE (modifs of snow scheme)

---
 src/MNH/default_desfmn.f90            |  2 +-
 src/MNH/lima_mixed_fast_processes.f90 | 52 ++++++++++++++-------------
 2 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 51b902548..e9cb91145 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -1029,7 +1029,7 @@ IF (KMI == 1) THEN
   LSEDI  = .TRUE.
   LSNOW  = .TRUE.
   LHAIL  = .FALSE.
-  YSNOW_T = .TRUE.
+  YSNOW_T = .FALSE.
   LMURAKAMI = .TRUE.
   CPRISTINE_ICE_LIMA = 'PLAT'
   CHEVRIMED_ICE_LIMA = 'GRAU'
diff --git a/src/MNH/lima_mixed_fast_processes.f90 b/src/MNH/lima_mixed_fast_processes.f90
index 056386015..d8b553474 100644
--- a/src/MNH/lima_mixed_fast_processes.f90
+++ b/src/MNH/lima_mixed_fast_processes.f90
@@ -869,7 +869,7 @@ IF( IGACC>0 .AND. LRAIN) THEN
 !
   WHERE ( GACC(:) .AND. (PRSS1D(:)>XRTMIN(5)/PTSTEP) )
     ZZW1(:,2) = MAX( MIN( PRRS1D(:),ZZW1(:,2)-ZZW1(:,4) ) , 0. )      ! RRACCSG
-    ZZW1(:,3) = MIN( PRSS1D(:),XFSACCRG*ZZW(:)*                     & ! RSACCRG
+    ZZW1(:,3) = MIN( PRSS1D(:),PCRT1D(:)*XFSACCRG*ZZW(:)*           & ! RSACCRG
             ( PRST1D(:) )*( PRHODREF(:)**(1-XCEXVT) ) &
            *( XLBSACCR1/((PLBDAR(:)**2)               ) +           &
               XLBSACCR2/( PLBDAR(:)    * PLBDAS(:)    ) +           &
@@ -1293,39 +1293,41 @@ END WHERE
 !
 ZZW(:) = 0.0
 NHAIL = 0.
-IF (LHAIL) NHAIL = 1. 
-WHERE( PRGT1D(:)>XRTMIN(6) .AND. PZT(:)<XTT .AND. &
-       (ZRDRYG(:)-ZZW1(:,2)-ZZW1(:,3))>=(ZRWETG(:)-ZZW1(:,5)-ZZW1(:,6)) .AND. ZRWETG(:)>0.0 ) 
-!   
-  ZZW(:) = ZRWETG(:) - ZZW1(:,5) - ZZW1(:,6) ! RCWETG+RRWETG
+IF (LHAIL) NHAIL = 1.
+DO JJ=1, SIZE(PRGT1D)
+   IF ( PRGT1D(JJ)>XRTMIN(6) .AND. PZT(JJ)<XTT .AND. &
+        (ZRDRYG(JJ)-ZZW1(JJ,2)-ZZW1(JJ,3))>(ZRWETG(JJ)-ZZW1(JJ,5)-ZZW1(JJ,6)) .AND. (ZRWETG(JJ)-ZZW1(JJ,5)-ZZW1(JJ,6))>0.0 ) THEN
+      !
+      ZZW(JJ) = ZRWETG(JJ) - ZZW1(JJ,5) - ZZW1(JJ,6) ! RCWETG+RRWETG
 !   
 ! limitation of the available rainwater mixing ratio (RRWETH < RRS !)
 !   
-  ZZW1(:,7) = MAX( 0.0,MIN( ZZW(:),PRRS1D(:)+ZZW1(:,1) ) )
-  ZZX(:)    = ZZW1(:,7) / ZZW(:)
-  ZZW1(:,5) = ZZW1(:,5)*ZZX(:)
-  ZZW1(:,6) = ZZW1(:,6)*ZZX(:)
-  ZRWETG(:) = ZZW1(:,7) + ZZW1(:,5) + ZZW1(:,6)
+      ZZW1(JJ,7) = MAX( 0.0,MIN( ZZW(JJ),PRRS1D(JJ)+ZZW1(JJ,1) ) )
+      ZZX(JJ)    = ZZW1(JJ,7) / ZZW(JJ)
+      ZZW1(JJ,5) = ZZW1(JJ,5)*ZZX(JJ)
+      ZZW1(JJ,6) = ZZW1(JJ,6)*ZZX(JJ)
+      ZRWETG(JJ) = ZZW1(JJ,7) + ZZW1(JJ,5) + ZZW1(JJ,6)
 !   
-  PRCS1D(:) = PRCS1D(:) - ZZW1(:,1)
-  PRIS1D(:) = PRIS1D(:) - ZZW1(:,5)
-  PRSS1D(:) = PRSS1D(:) - ZZW1(:,6)
+      PRCS1D(JJ) = PRCS1D(JJ) - ZZW1(JJ,1)
+      PRIS1D(JJ) = PRIS1D(JJ) - ZZW1(JJ,5)
+      PRSS1D(JJ) = PRSS1D(JJ) - ZZW1(JJ,6)
 !
 ! assume a linear percent of conversion of graupel into hail
 !
-  PRGS1D(:) = PRGS1D(:) + ZRWETG(:)
-  ZZW(:)  = PRGS1D(:)*ZRDRYG(:)*NHAIL/(ZRWETG(:)+ZRDRYG(:)) 
-  PRGS1D(:) = PRGS1D(:) - ZZW(:)                        
-  PRHS1D(:) = PRHS1D(:) + ZZW(:)
-  PRRS1D(:) = MAX( 0.0,PRRS1D(:) - ZZW1(:,7) + ZZW1(:,1) )
-  PTHS1D(:) = PTHS1D(:) + ZZW1(:,7) * (PLSFACT(:) - PLVFACT(:))
+      PRGS1D(JJ) = PRGS1D(JJ) + ZRWETG(JJ)
+      ZZW(JJ)  = PRGS1D(JJ)*ZRDRYG(JJ)*NHAIL/(ZRWETG(JJ)+ZRDRYG(JJ)) 
+      PRGS1D(JJ) = PRGS1D(JJ) - ZZW(JJ)                        
+      PRHS1D(JJ) = PRHS1D(JJ) + ZZW(JJ)
+      PRRS1D(JJ) = MAX( 0.0,PRRS1D(JJ) - ZZW1(JJ,7) + ZZW1(JJ,1) )
+      PTHS1D(JJ) = PTHS1D(JJ) + ZZW1(JJ,7) * (PLSFACT(JJ) - PLVFACT(JJ))
                                                 ! f(L_f*(RCWETG+RRWETG))
 !
-  PCCS1D(:) = MAX( PCCS1D(:)-ZZW1(:,1)*(PCCT1D(:)/MAX(PRCT1D(:),XRTMIN(2))),0.0 )
-  PCIS1D(:) = MAX( PCIS1D(:)-ZZW1(:,5)*(PCIT1D(:)/MAX(PRIT1D(:),XRTMIN(4))),0.0 )
-  PCRS1D(:) = MAX( PCRS1D(:)-MAX( ZZW1(:,7)-ZZW1(:,1),0.0 )                 &
-                        *(PCRT1D(:)/MAX(PRRT1D(:),XRTMIN(3))),0.0 )
-END WHERE
+      PCCS1D(JJ) = MAX( PCCS1D(JJ)-ZZW1(JJ,1)*(PCCT1D(JJ)/MAX(PRCT1D(JJ),XRTMIN(2))),0.0 )
+      PCIS1D(JJ) = MAX( PCIS1D(JJ)-ZZW1(JJ,5)*(PCIT1D(JJ)/MAX(PRIT1D(JJ),XRTMIN(4))),0.0 )
+      PCRS1D(JJ) = MAX( PCRS1D(JJ)-MAX( ZZW1(JJ,7)-ZZW1(JJ,1),0.0 )                 &
+                                      *(PCRT1D(JJ)/MAX(PRRT1D(JJ),XRTMIN(3))),0.0 )
+   END IF
+END DO
 !
 ! Budget storage
 if ( nbumod == kmi .and. lbu_enable ) then
-- 
GitLab