diff --git a/src/MNH/ice4_fast_rs.f90 b/src/MNH/ice4_fast_rs.f90 index d44b1bcc74d9c632b038c8a3937c3c3d4fbc1efa..d7cab9c9d0847ec3ff452a4311d04eb2accbe7eb 100644 --- a/src/MNH/ice4_fast_rs.f90 +++ b/src/MNH/ice4_fast_rs.f90 @@ -502,7 +502,7 @@ ELSE ! PRSMLTG(:) = XFSCVMG*MAX( 0.0,( -PRSMLTG(:) * & PRST(:)*PRHODREF(:) * & - ( X0DEPS *PLBDAS(:)**XEX0DEPS + & + ( X0DEPS *PLBDAS(:)**(XBS+XEX0DEPS) + & X1DEPS*PCJ(:)*(1+0.5*(XFVELOS/PLBDAS(:))**XALPHAS)**(XNUS+XEX1DEPS/XALPHAS)*PLBDAS(:)**(XBS+XEX1DEPS)) - & ( PRS_TEND(:, IRCRIMS) + PRS_TEND(:, IRRACCS)) * & ( PRHODREF(:)*XCL*(XTT-PT(:))) ) / & diff --git a/src/MNH/ice4_slow.f90 b/src/MNH/ice4_slow.f90 index b9325050f16faa13ba945c3624755d55b89672bc..e712f77405646e80b4373bcdf542173ed7e3f28b 100644 --- a/src/MNH/ice4_slow.f90 +++ b/src/MNH/ice4_slow.f90 @@ -176,7 +176,7 @@ ELSE 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+0.5*(XFVELOS/PLBDAS(JL))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS) & + ( X0DEPS*PLBDAS(JL)**(XBS+XEX0DEPS) + X1DEPS*PCJ(JL) * (1+0.5*(XFVELOS/PLBDAS(JL))**XALPHAS)**(-XNUS+XEX1DEPS/XALPHAS) & *(PLBDAS(JL))**(XBS+XEX1DEPS) ) END IF END DO diff --git a/src/MNH/ini_rain_ice.f90 b/src/MNH/ini_rain_ice.f90 index 2b1a683b85f1603ddeea5f8bbd50bb2d00e80178..c20b57f38a29c7031fedf1993b1572b0ef04e307 100644 --- a/src/MNH/ini_rain_ice.f90 +++ b/src/MNH/ini_rain_ice.f90 @@ -507,20 +507,15 @@ XEXCSEDI =-0.9324*3.0 WRITE (KLUOUT,FMT=*)' PRISTINE ICE SEDIMENTATION for columns XFSEDI =',XFSEDI ! ! -!IF (LSNOW_T) THEN -!HOUZE/HAIC - !XEXSEDS = -XDS !(2*XBS+XDS) - !XFSEDS = XCS*MOMG(XALPHAS,XNUS,XBS+XDS)/(MOMG(XALPHAS,XNUS,XBS)) & - ! *(ZRHO00)**XCEXVT -!LH_EXTENDED +IF (LRED) THEN XEXSEDS = -XDS-XBS XFSEDS = XCS*MOMG(XALPHAS,XNUS,XBS+XDS)/(MOMG(XALPHAS,XNUS,XBS)) & *(ZRHO00)**XCEXVT -!ELSE -! XEXSEDS = (XBS+XDS-XCXS)/(XBS-XCXS) -! XFSEDS = XCS*XAS*XCCS*MOMG(XALPHAS,XNUS,XBS+XDS)* & -! (XAS*XCCS*MOMG(XALPHAS,XNUS,XBS))**(-XEXSEDS)*(ZRHO00)**XCEXVT -!END IF +ELSE + XEXSEDS = (XBS+XDS-XCXS)/(XBS-XCXS) + XFSEDS = XCS*XAS*XCCS*MOMG(XALPHAS,XNUS,XBS+XDS)* & + (XAS*XCCS*MOMG(XALPHAS,XNUS,XBS))**(-XEXSEDS)*(ZRHO00)**XCEXVT +END IF ! XEXSEDG = (XBG+XDG-XCXG)/(XBG-XCXG) XFSEDG = XCG*XAG*XCCG*MOMG(XALPHAG,XNUG,XBG+XDG)* & diff --git a/src/MNH/rain_ice_fast_rg.f90 b/src/MNH/rain_ice_fast_rg.f90 index c3366b66a594dc41bcab358149d5ded79270d59d..b8a7b480ae57a727adeaa3e04888ea61a9db5586 100644 --- a/src/MNH/rain_ice_fast_rg.f90 +++ b/src/MNH/rain_ice_fast_rg.f90 @@ -204,8 +204,8 @@ REAL, DIMENSION(size(PRHODREF),7) :: ZZW1 ! Work arrays JL = I1(JJ) ZZW1(JL,3) = MIN( PRSS(JL),XFSDRYG*ZVEC3(JJ) & ! RSDRYG * EXP( XCOLEXSG*(PZT(JL)-XTT) ) & - *( ZVECLBDAS(JJ)**(XCXS-XBS) )*( ZVECLBDAG(JJ)**XCXG ) & - *( PRHODREF(JL)**(-XCEXVT-1.) ) & + *PRST(JL)*( ZVECLBDAG(JJ)**XCXG ) & + *( PRHODREF(JL)**(-XCEXVT) ) & *( XLBSDRYG1/( ZVECLBDAG(JJ)**2 ) + & XLBSDRYG2/( ZVECLBDAG(JJ) * ZVECLBDAS(JJ) ) + & XLBSDRYG3/( ZVECLBDAS(JJ)**2) ) ) diff --git a/src/MNH/rain_ice_fast_rh.f90 b/src/MNH/rain_ice_fast_rh.f90 index 1710f8b157114ebd6cd2d256fcca23d39d7e3571..58446c16979afbc514d69da50796323a870f3e33 100644 --- a/src/MNH/rain_ice_fast_rh.f90 +++ b/src/MNH/rain_ice_fast_rh.f90 @@ -186,8 +186,8 @@ REAL, DIMENSION(size(PRHODREF),6) :: ZZW1 ! Work arrays DO JJ = 1, IGWET JL = I1W(JJ) ZZW1(JL,3) = MIN( PRSS(JL),XFSWETH*ZVEC3(JJ) & ! RSWETH - *( ZVECLBDAS(JJ)**(XCXS-XBS) )*( ZVECLBDAH(JJ)**XCXH ) & - *( PRHODREF(JL)**(-XCEXVT-1.) ) & + *PRST(JL)*( ZVECLBDAH(JJ)**XCXH ) & + *( PRHODREF(JL)**(-XCEXVT) ) & *( XLBSWETH1/( ZVECLBDAH(JJ)**2 ) + & XLBSWETH2/( ZVECLBDAH(JJ) * ZVECLBDAS(JJ) ) + & XLBSWETH3/( ZVECLBDAS(JJ)**2) ) ) diff --git a/src/MNH/rain_ice_fast_rs.f90 b/src/MNH/rain_ice_fast_rs.f90 index a4750d01d1319c619f9266ad41b2b1fff39ba43a..2acc9b0e0101635f8baebf80e9e2fa5dea82aad3 100644 --- a/src/MNH/rain_ice_fast_rs.f90 +++ b/src/MNH/rain_ice_fast_rs.f90 @@ -136,9 +136,9 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays DO JJ = 1, IGRIM JL = I1(JJ) ZZW1(JJ) = MIN( PRCS(JL), & - XCRIMSS * ZVEC1(JJ) * PRCT(JL) & ! RCRIMSS - * ZVECLBDAS(JJ)**XEXCRIMSS & - * PRHODREF(JL)**(-XCEXVT) ) + XCRIMSS * ZVEC1(JJ) * PRCT(JL) * PRST(JL) & ! RCRIMSS + * ZVECLBDAS(JJ)**(XBS+XEXCRIMSS) & + * PRHODREF(JL)**(-XCEXVT+1) ) PRCS(JL) = PRCS(JL) - ZZW1(JJ) PRSS(JL) = PRSS(JL) + ZZW1(JJ) PTHS(JL) = PTHS(JL) + ZZW1(JJ)*(PLSFACT(JL)-PLVFACT(JL)) ! f(L_f*(RCRIMSS)) @@ -157,12 +157,12 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays JL = I1(JJ) IF ( PRSS(JL) > 0.0 ) THEN ZZW2(JJ) = MIN( PRCS(JL), & - XCRIMSG * PRCT(JL) & ! RCRIMSG - * ZVECLBDAS(JJ)**XEXCRIMSG & - * PRHODREF(JL)**(-XCEXVT) & + XCRIMSG * PRCT(JL) *PRST(JL) & ! RCRIMSG + * ZVECLBDAS(JJ)**(XBS+XEXCRIMSG) & + * PRHODREF(JL)**(-XCEXVT+1) & - ZZW1(JJ) ) ZZW3(JJ) = MIN( PRSS(JL), & - XSRIMCG * ZVECLBDAS(JJ)**XEXSRIMCG & ! RSRIMCG + PRST(JL) * PRHODREF(JL) * XSRIMCG * ZVECLBDAS(JJ)**(XBS+XEXSRIMCG) & ! RSRIMCG * (1.0 - ZVEC1(JJ) )/(PTSTEP*PRHODREF(JL)) ) PRCS(JL) = PRCS(JL) - ZZW2(JJ) PRSS(JL) = PRSS(JL) - ZZW3(JJ) @@ -260,7 +260,7 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays DO JJ = 1, IGACC JL = I1(JJ) ZZW2(JJ) = & !! coef of RRACCS - XFRACCSS*( ZVECLBDAS(JJ)**XCXS )*( PRHODREF(JL)**(-XCEXVT-1.) ) & + XFRACCSS*( PRST(JL)*ZVECLBDAS(JJ)**XBS )*( PRHODREF(JL)**(-XCEXVT) ) & *( XLBRACCS1/((ZVECLBDAS(JJ)**2) ) + & XLBRACCS2/( ZVECLBDAS(JJ) * ZVECLBDAR(JJ) ) + & XLBRACCS3/( (ZVECLBDAR(JJ)**2)) )/ZVECLBDAR(JJ)**4 @@ -306,7 +306,7 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays ZZW2(JJ) = MAX( MIN( PRRS(JL),ZZW2(JJ)-ZZW4(JJ) ),0.0 ) ! RRACCSG IF ( ZZW2(JJ) > 0.0 ) THEN ZZW3(JJ) = MIN( PRSS(JL),XFSACCRG*ZVEC3(JJ)* & ! RSACCRG - ( ZVECLBDAS(JJ)**(XCXS-XBS) )*( PRHODREF(JL)**(-XCEXVT-1.) ) & + PRST(JL)*( PRHODREF(JL)**(-XCEXVT) ) & *( XLBSACCR1/((ZVECLBDAR(JJ)**2) ) + & XLBSACCR2/( ZVECLBDAR(JJ) * ZVECLBDAS(JJ) ) + & XLBSACCR3/( (ZVECLBDAS(JJ)**2)) )/ZVECLBDAR(JJ) ) @@ -353,9 +353,9 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZZW1, ZZW2, ZZW3, ZZW4 ! Work arrays ! ! compute RSMLT ! - ZZW(:) = MIN( PRSS(:), XFSCVMG*MAX( 0.0,( -ZZW(:) * & - ( X0DEPS* PLBDAS(:)**XEX0DEPS + & - X1DEPS*PCJ(:)*PLBDAS(:)**XEX1DEPS ) ) / & + ZZW(:) = MIN( PRSS(:), XFSCVMG*MAX( 0.0,( -ZZW(:) * PRST(:) * PRHODREF(:) * & + ( X0DEPS* PLBDAS(:)**(XBS+XEX0DEPS) + & + X1DEPS*PCJ(:)*PLBDAS(:)**(XBS+XEX1DEPS) ) ) / & ( PRHODREF(:)*XLMTT ) ) ) ! ! note that RSCVMG = RSMLT*XFSCVMG but no heat is exchanged (at the rate RSMLT) diff --git a/src/MNH/rain_ice_slow.f90 b/src/MNH/rain_ice_slow.f90 index 8ed0b10ac71174f783ce4c47eecf16e4587fc1ae..142b2d46b06eb447569a86e961c354c152187dd3 100644 --- a/src/MNH/rain_ice_slow.f90 +++ b/src/MNH/rain_ice_slow.f90 @@ -147,7 +147,7 @@ real, dimension(size(plsfact)) :: zz_diff END WHERE ZZW(:) = 0.0 WHERE ( (PRST(:)>XRTMIN(5)) .AND. (PRSS(:)>0.0) ) - ZZW(:) = ( PSSI(:)/(PRHODREF(:)*PAI(:)) ) * & + ZZW(:) = ( PRST(:) * PLBDAS(JL)**XBS * PSSI(:)/PAI(:) ) * & ( X0DEPS*PLBDAS(:)**XEX0DEPS + X1DEPS*PCJ(:)*PLBDAS(:)**XEX1DEPS ) ZZW(:) = MIN( PRVS(:),ZZW(:) )*(0.5+SIGN(0.5,ZZW(:))) & - MIN( PRSS(:),ABS(ZZW(:)) )*(0.5-SIGN(0.5,ZZW(:))) @@ -169,8 +169,8 @@ real, dimension(size(plsfact)) :: zz_diff WHERE ( (PRIT(:)>XRTMIN(4)) .AND. (PRST(:)>XRTMIN(5)) .AND. (PRIS(:)>0.0) ) ZZW(:) = MIN( PRIS(:),XFIAGGS * EXP( XCOLEXIS*(PZT(:)-XTT) ) & * PRIT(:) & - * PLBDAS(:)**XEXIAGGS & - * PRHODREF(:)**(-XCEXVT) ) + * PRST(:) * PLBDAS(:)**(XBS+XEXIAGGS) & + * PRHODREF(:)**(-XCEXVT+1) ) PRSS(:) = PRSS(:) + ZZW(:) PRIS(:) = PRIS(:) - ZZW(:) END WHERE