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