From fa8e0455f4d33cdcc50b55315da92f6c18fa24f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Vi=C3=A9?= <benoit.vie@meteo.fr>
Date: Tue, 24 May 2022 11:37:55 +0200
Subject: [PATCH] bugfix RAIN_ICE_RED LSNOW=T - ongoing work

---
 src/MNH/ice4_slow.f90       | 12 +++++++-----
 src/MNH/ice4_tendencies.f90 |  8 ++++++--
 src/MNH/rain_ice_red.f90    |  4 +++-
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/src/MNH/ice4_slow.f90 b/src/MNH/ice4_slow.f90
index e08dd1e77..b9e202b14 100644
--- a/src/MNH/ice4_slow.f90
+++ b/src/MNH/ice4_slow.f90
@@ -173,11 +173,13 @@ IF(LDSOFT) THEN
   ENDDO
 ELSE
   PRVDEPS(:) = 0.
-  WHERE(ZMASK(:)==1.)
-    PRVDEPS(:) = ( PRST(:)*PSSI(:)/PAI(:)) *                               &
-         ( X0DEPS*PLBDAS(:)**XEX0DEPS + (X1DEPS*PCJ(:)*(1+(PLBDAS(:)/(2*XFVELOS)**XALPHAS))**(-XNUS+XEX1DEPS) &
-         *(PLBDAS(:))**(XBS+XEX1DEPS)))
-  END WHERE
+  DO JL=1, KSIZE
+     IF (ZMASK(JL)==1.) THEN
+        PRVDEPS(JL) = ( PRST(JL)*PSSI(JL)/PAI(JL) ) * &
+             ( X0DEPS*PLBDAS(JL)**XEX0DEPS + X1DEPS*PCJ(JL) * (1+(XFVELOS/(2*PLBDAS(JL)))**XALPHAS)**(-XNUS+XEX1DEPS) &
+             *(PLBDAS(JL))**(XBS+XEX1DEPS) )
+     END IF
+  END DO
 ENDIF
 DO JL=1, KSIZE
   PA_RS(JL) = PA_RS(JL) + PRVDEPS(JL)
diff --git a/src/MNH/ice4_tendencies.f90 b/src/MNH/ice4_tendencies.f90
index ec33e100c..2832464bf 100644
--- a/src/MNH/ice4_tendencies.f90
+++ b/src/MNH/ice4_tendencies.f90
@@ -411,7 +411,9 @@ ELSE
            ZLBDAS(:) = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*ZT(:))),XLBDAS_MIN)*XTRANS_MP_GAMMAS
         END WHERE
      ELSE
-        ZLBDAS(:)  = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(:)*ZRST(:))**XLBEXS),XLBDAS_MIN)
+        WHERE (ZRST(:).GE.XRTMIN(5))
+           ZLBDAS(:)  = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(:)*ZRST(:))**XLBEXS),XLBDAS_MIN)
+        END WHERE
      END IF
      CALL ICE4_RSRIMCG_OLD(KSIZE, ODSOFT, PCOMPUTE==1., &
                           &PRHODREF, &
@@ -487,7 +489,9 @@ IF(KSIZE>0) THEN
         ZLBDAS(:) = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*ZT(:))),XLBDAS_MIN)*XTRANS_MP_GAMMAS
      END WHERE
   ELSE
-     ZLBDAS(:)  = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(:)*ZRST(:))**XLBEXS),XLBDAS_MIN)
+     WHERE (ZRST(:).GE.XRTMIN(5))
+        ZLBDAS(:)  = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(:)*ZRST(:))**XLBEXS),XLBDAS_MIN)
+     END WHERE
   END IF
   ZLBDAG(:)=0.
   WHERE(ZRGT(:)>0.)
diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90
index 137cfce6d..d5b71cb0c 100644
--- a/src/MNH/rain_ice_red.f90
+++ b/src/MNH/rain_ice_red.f90
@@ -590,7 +590,9 @@ DO JK = 1, KKT
                END IF
             END IF
          ELSE
-            ZLBDAS(JI,JJ,JK)  = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(JI,JJ,JK)*PRST(JI,JJ,JK))**XLBEXS),XLBDAS_MIN)
+            IF (PRST(JI,JJ,JK).GT.XRTMIN(5)) THEN
+               ZLBDAS(JI,JJ,JK)  = MAX(MIN(XLBDAS_MAX,XLBS*(PRHODREF(JI,JJ,JK)*PRST(JI,JJ,JK))**XLBEXS),XLBDAS_MIN)
+            END IF
          END IF
       END DO
    END DO
-- 
GitLab