diff --git a/src/common/micro/mode_ice4_sedimentation_stat.F90 b/src/common/micro/mode_ice4_sedimentation_stat.F90 index d4e52e8fd67ffdf5e28063512ace6f6e7f2e14a5..1da68847dd22e34e17551a9cf95ded4096462d76 100644 --- a/src/common/micro/mode_ice4_sedimentation_stat.F90 +++ b/src/common/micro/mode_ice4_sedimentation_stat.F90 @@ -173,7 +173,11 @@ DO JK = D%NKE , D%NKB, -1*D%NKL ELSEIF (JRR==5) THEN !* 2.4 for aggregates/snow +#ifdef REPRO48 CALL OTHER_SPECIES(ICEP%XFSEDS,ICEP%XEXSEDS,PRST(:,:,JK)) +#else + CALL SNOW(PRST(:,:,JK)) +#endif ELSEIF (JRR==6) THEN @@ -352,6 +356,55 @@ CONTAINS END SUBROUTINE PRISTINE_ICE + SUBROUTINE SNOW(PRXT) + + REAL, INTENT(IN) :: PRXT(D%NIT,D%NJT) ! mr of specy X + + REAL(KIND=JPRB) :: ZHOOK_HANDLE + + !!IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION_STAT:SNOW',0,ZHOOK_HANDLE) + + ! ******* for snow + DO JJ = D%NJB, D%NJE + DO JI = D%NIB, D%NIE + ZQP=ZSED(JI,JJ,IKPLUS,JRR)*ZTSORHODZ(JI,JJ) + IF ((PRXT(JI,JJ) > ICED%XRTMIN(JRR)) .OR. (ZQP > ICED%XRTMIN(JRR))) THEN + !calculation of w + IF ( PRXT(JI,JJ) > ICED%XRTMIN(JRR) ) THEN + ZWSEDW1(JI)= ICEP%XFSEDS * & + & PRHODREF(JI,JJ,JK)**(-ICED%XCEXVT) * & + & (1+(ICED%XFVELOS/PLBDAS(JI,JJ,JK))**ICED%XALPHAS)**(-ICED%XNUS+ICEP%XEXSEDS/ICED%XALPHAS)* & + & PLBDAS(JI,JJ,JK)**(ICED%XBS+ICEP%XEXSEDS) + ELSE + ZWSEDW1(JI)=0. + ENDIF + IF ( ZQP > ICED%XRTMIN(JRR) ) THEN + ZWSEDW2(JI)= ICEP%XFSEDS * & + & PRHODREF(JI,JJ,JK)**(-ICED%XCEXVT) * & + & (1+(ICED%XFVELOS/PLBDAS(JI,JJ,JK))**ICED%XALPHAS)**(-ICED%XNUS+ICEP%XEXSEDS/ICED%XALPHAS)* & + & PLBDAS(JI,JJ,JK)**(ICED%XBS+ICEP%XEXSEDS) + ELSE + ZWSEDW2(JI)=0. + ENDIF + ELSE + ZWSEDW1(JI)=0. + ZWSEDW2(JI)=0. + ENDIF +!- duplicated code ------------------------------------------------------------------------- + IF (ZWSEDW2(JI) /= 0.) THEN + ZSED(JI,JJ,IK,JRR)=FWSED1(ZWSEDW1(JI),PTSTEP,PDZZ(JI,JJ,JK),PRHODREF(JI,JJ,JK),PRXT(JI,JJ),ZINVTSTEP) & + & + FWSED2(ZWSEDW2(JI),PTSTEP,PDZZ(JI,JJ,JK),ZSED(JI,JJ,IKPLUS,JRR)) + ELSE + ZSED(JI,JJ,IK,JRR)=FWSED1(ZWSEDW1(JI),PTSTEP,PDZZ(JI,JJ,JK),PRHODREF(JI,JJ,JK),PRXT(JI,JJ),ZINVTSTEP) + ENDIF +!------------------------------------------------------------------------------------------- + ENDDO + ENDDO + + !!IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION_STAT:SNOW',1,ZHOOK_HANDLE) + + END SUBROUTINE SNOW + SUBROUTINE OTHER_SPECIES(PFSED,PEXSED,PRXT) REAL, INTENT(IN) :: PFSED diff --git a/src/common/micro/rain_ice.F90 b/src/common/micro/rain_ice.F90 index 01ef96e1ef93ad79703128d510910217e3ab756d..7c46fcaafc8148351fe478297a544494318a8d05 100644 --- a/src/common/micro/rain_ice.F90 +++ b/src/common/micro/rain_ice.F90 @@ -529,6 +529,7 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, & &PTSTEP, KRR, OSEDIC, PDZZ, & &PRHODREF, PPABST, PTHT, PRHODJ, & + &ZLBDAS, & &PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,& &PRSS, ZRST, PRGS, ZRGT,& &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & @@ -547,6 +548,7 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, & &PTSTEP, KRR, OSEDIC, PDZZ, & &PRHODREF, PPABST, PTHT, PRHODJ, & + &ZLBDAS, & &PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,& &PRSS, ZRST, PRGS, ZRGT,& &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & @@ -1208,10 +1210,15 @@ IF(BUCONF%LBU_ENABLE) THEN ZW(JIJ,JK)=ZW(JIJ,JK)+ZZ_RVHENI(JIJ,JK) ENDDO ENDDO +#ifdef REPRO48 IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'HENU', ZW(:, :)*ZZ_LSFACT(:, :)*PRHODJ(:, :)) IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'HENU', -ZW(:, :) *PRHODJ(:, :)) IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'HENU', ZW(:, :) *PRHODJ(:, :)) - +#else + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'HIN', ZW(:, :)*ZZ_LSFACT(:, :)*PRHODJ(:, :)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'HIN', -ZW(:, :) *PRHODJ(:, :)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'HIN', ZW(:, :) *PRHODJ(:, :)) +#endif ZW(:,:) = 0. DO JL=1, KSIZE ZW(I1TOT(JL), I2TOT(JL)) = ZTOT_RCHONI(JL) * ZINV_TSTEP @@ -1611,6 +1618,7 @@ IF(PARAMI%LSEDIM_AFTER) THEN CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, & &PTSTEP, KRR, OSEDIC, PDZZ, & &PRHODREF, PPABST, PTHT, PRHODJ, & + &ZLBDAS, & &PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,& &PRSS, ZRST, PRGS, ZRGT,& &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & @@ -1629,6 +1637,7 @@ IF(PARAMI%LSEDIM_AFTER) THEN CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, & &PTSTEP, KRR, OSEDIC, PDZZ, & &PRHODREF, PPABST, PTHT, PRHODJ, & + &ZLBDAS, & &PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,& &PRSS, ZRST, PRGS, ZRGT,& &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, &