diff --git a/src/common/micro/mode_ice4_sedimentation.F90 b/src/common/micro/mode_ice4_sedimentation.F90 index 15e613adf495cac69546055037bdc7b69e7998b0..f6fc795edff66ad05a393e199992dfb0fb4955d5 100644 --- a/src/common/micro/mode_ice4_sedimentation.F90 +++ b/src/common/micro/mode_ice4_sedimentation.F90 @@ -123,64 +123,34 @@ IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDG IF (BUCONF%LBUDGET_RH .AND. KRR==7) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:, :) * PRHODJ(:, :)) IF(PARAMI%CSEDIM=='STAT') THEN - IF (KRR==7) THEN - DO JK = IKTB,IKTE - DO JIJ = IIJB,IIJE - ZRCT(JIJ,JK)=PRCS(JIJ,JK)*PTSTEP - ZRRT(JIJ,JK)=PRRS(JIJ,JK)*PTSTEP - ZRIT(JIJ,JK)=PRIS(JIJ,JK)*PTSTEP - ZRST(JIJ,JK)=PRSS(JIJ,JK)*PTSTEP - ZRGT(JIJ,JK)=PRGS(JIJ,JK)*PTSTEP - ZRHT(JIJ,JK)=PRHS(JIJ,JK)*PTSTEP - ENDDO + DO JK = IKTB,IKTE + DO JIJ = IIJB,IIJE + ZRCT(JIJ,JK)=PRCS(JIJ,JK)*PTSTEP + ZRRT(JIJ,JK)=PRRS(JIJ,JK)*PTSTEP + ZRIT(JIJ,JK)=PRIS(JIJ,JK)*PTSTEP + ZRST(JIJ,JK)=PRSS(JIJ,JK)*PTSTEP + ZRGT(JIJ,JK)=PRGS(JIJ,JK)*PTSTEP + IF (KRR==7) ZRHT(JIJ,JK)=PRHS(JIJ,JK)*PTSTEP ENDDO - CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, PARAMI, & - &PTSTEP, KRR, PDZZ, & - &PRHODREF, PPABST, PTHT, PT, PRHODJ, & - &PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,& - &PRSS, ZRST, PRGS, ZRGT,& - &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & - &PSEA=PSEA, PTOWN=PTOWN, & - &PINPRH=PINPRH, PRHT=ZRHT, PRHS=PRHS, PFPR=PFPR) - ELSE - DO JK = IKTB,IKTE - DO JIJ = IIJB,IIJE - ZRCT(JIJ,JK)=PRCS(JIJ,JK)*PTSTEP - ZRRT(JIJ,JK)=PRRS(JIJ,JK)*PTSTEP - ZRIT(JIJ,JK)=PRIS(JIJ,JK)*PTSTEP - ZRST(JIJ,JK)=PRSS(JIJ,JK)*PTSTEP - ZRGT(JIJ,JK)=PRGS(JIJ,JK)*PTSTEP - ENDDO - ENDDO - CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, PARAMI, & - &PTSTEP, KRR, PDZZ, & - &PRHODREF, PPABST, PTHT, PT, PRHODJ, & - &PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,& - &PRSS, ZRST, PRGS, ZRGT,& - &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & - &PSEA=PSEA, PTOWN=PTOWN, & - &PFPR=PFPR) - ENDIF + ENDDO + CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, PARAMI, & + &PTSTEP, KRR, PDZZ, & + &PRHODREF, PPABST, PTHT, PT, PRHODJ, & + &PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,& + &PRSS, ZRST, PRGS, ZRGT,& + &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & + &PSEA=PSEA, PTOWN=PTOWN, & + &PINPRH=PINPRH, PRHT=ZRHT, PRHS=PRHS, PFPR=PFPR) PINPRS(IIJB:IIJE) = PINPRS(IIJB:IIJE) + ZINPRI(IIJB:IIJE) !No negativity correction here as we apply sedimentation on PR.S*PTSTEP variables ELSEIF(PARAMI%CSEDIM=='SPLI') THEN - IF(KRR==7) THEN - CALL ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, & - &PTSTEP, KRR, PDZZ, & - &PRHODREF, PPABST, PTHT, PT, PRHODJ, & - &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& - &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & - &PSEA=PSEA, PTOWN=PTOWN, & - &PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR) - ELSE - CALL ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, & - &PTSTEP, KRR, PDZZ, & - &PRHODREF, PPABST, PTHT, PT, PRHODJ, & - &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& - &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & - &PSEA=PSEA, PTOWN=PTOWN, & - &PFPR=PFPR) - ENDIF + CALL ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, & + &PTSTEP, KRR, PDZZ, & + &PRHODREF, PPABST, PTHT, PT, PRHODJ, & + &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& + &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & + &PSEA=PSEA, PTOWN=PTOWN, & + &PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR) PINPRS(IIJB:IIJE) = PINPRS(IIJB:IIJE) + ZINPRI(IIJB:IIJE) !We correct negativities with conservation !SPLI algorith uses a time-splitting. Inside the loop a temporary m.r. is used. diff --git a/src/common/micro/mode_ice4_sedimentation_stat.F90 b/src/common/micro/mode_ice4_sedimentation_stat.F90 index 5d64266c1c84008bcaad0f3cbcb54baeb0f8221b..52183c8547782f2507b58d01a61d7428a6564822 100644 --- a/src/common/micro/mode_ice4_sedimentation_stat.F90 +++ b/src/common/micro/mode_ice4_sedimentation_stat.F90 @@ -216,7 +216,7 @@ DO JK = IKE , IKB, -1*IKL PRIS(JIJ,JK) = PRIS(JIJ,JK)+ZTSORHODZ(JIJ)*(ZSED(JIJ,IKPLUS,4)-ZSED(JIJ,IK,4))*ZINVTSTEP PRSS(JIJ,JK) = PRSS(JIJ,JK)+ZTSORHODZ(JIJ)*(ZSED(JIJ,IKPLUS,5)-ZSED(JIJ,IK,5))*ZINVTSTEP PRGS(JIJ,JK) = PRGS(JIJ,JK)+ZTSORHODZ(JIJ)*(ZSED(JIJ,IKPLUS,6)-ZSED(JIJ,IK,6))*ZINVTSTEP - IF (PRESENT(PRHS)) THEN + IF (PRESENT(PRHS) .AND. KRR==7) THEN PRHS(JIJ,JK) = PRHS(JIJ,JK)+ZTSORHODZ(JIJ)*(ZSED(JIJ,IKPLUS,7)-ZSED(JIJ,IK,7))*ZINVTSTEP ENDIF ENDDO @@ -228,7 +228,7 @@ DO JK = IKE , IKB, -1*IKL PINPRI(JIJ) = ZSED(JIJ,IK,4)/CST%XRHOLW PINPRS(JIJ) = ZSED(JIJ,IK,5)/CST%XRHOLW PINPRG(JIJ) = ZSED(JIJ,IK,6)/CST%XRHOLW - IF (PRESENT(PINPRH)) THEN + IF (PRESENT(PINPRH) .AND. KRR==7) THEN PINPRH(JIJ) = ZSED(JIJ,IK,7)/CST%XRHOLW ENDIF ENDDO diff --git a/src/common/micro/rain_ice.F90 b/src/common/micro/rain_ice.F90 index d17b45a36ffc3ae39103bc33237dbdb60b3547f8..38e184690c2ba208c34501d2f4cc932fa3b0313e 100644 --- a/src/common/micro/rain_ice.F90 +++ b/src/common/micro/rain_ice.F90 @@ -336,25 +336,14 @@ ENDDO ! ------------------------------------- ! IF(.NOT. PARAMI%LSEDIM_AFTER) THEN - IF(KRR==7) THEN - CALL ICE4_SEDIMENTATION(D, CST, ICEP, ICED, PARAMI, BUCONF, & - &PTSTEP, KRR, PDZZ, & - &ZZ_LVFACT, ZZ_LSFACT, PRHODREF, PPABST, PTHT, ZT, PRHODJ, & - &PTHS, PRVS, PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& - &PINPRC, PINPRR, PINPRS, PINPRG, & - &TBUDGETS, KBUDGETS, & - &PSEA=PSEA, PTOWN=PTOWN, & - &PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR) - ELSE - CALL ICE4_SEDIMENTATION(D, CST, ICEP, ICED, PARAMI, BUCONF, & - &PTSTEP, KRR, PDZZ, & - &ZZ_LVFACT, ZZ_LSFACT, PRHODREF, PPABST, PTHT, ZT, PRHODJ, & - &PTHS, PRVS, PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& - &PINPRC, PINPRR, PINPRS, PINPRG, & - &TBUDGETS, KBUDGETS, & - &PSEA=PSEA, PTOWN=PTOWN, & - &PFPR=PFPR) - ENDIF + CALL ICE4_SEDIMENTATION(D, CST, ICEP, ICED, PARAMI, BUCONF, & + &PTSTEP, KRR, PDZZ, & + &ZZ_LVFACT, ZZ_LSFACT, PRHODREF, PPABST, PTHT, ZT, PRHODJ, & + &PTHS, PRVS, PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& + &PINPRC, PINPRR, PINPRS, PINPRG, & + &TBUDGETS, KBUDGETS, & + &PSEA=PSEA, PTOWN=PTOWN, & + &PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR) ENDIF ! ! @@ -526,33 +515,32 @@ END IF ! ------------------------------------- ! IF(PARAMI%LSEDIM_AFTER) THEN - IF(KRR==7) THEN - CALL ICE4_SEDIMENTATION(D, CST, ICEP, ICED, PARAMI, BUCONF, & - &PTSTEP, KRR, PDZZ, & - &ZZ_LVFACT, ZZ_LSFACT, PRHODREF, PPABST, PTHT, ZT, PRHODJ, & - &PTHS, PRVS, PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& - &PINPRC, PINPRR, PINPRS, PINPRG, & - &TBUDGETS, KBUDGETS, & - &PSEA=PSEA, PTOWN=PTOWN, & - &PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR) - ELSE - CALL ICE4_SEDIMENTATION(D, CST, ICEP, ICED, PARAMI, BUCONF, & - &PTSTEP, KRR, PDZZ, & - &ZZ_LVFACT, ZZ_LSFACT, PRHODREF, PPABST, PTHT, ZT, PRHODJ, & - &PTHS, PRVS, PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& - &PINPRC, PINPRR, PINPRS, PINPRG, & - &TBUDGETS, KBUDGETS, & - &PSEA=PSEA, PTOWN=PTOWN, & - &PFPR=PFPR) - ENDIF + CALL ICE4_SEDIMENTATION(D, CST, ICEP, ICED, PARAMI, BUCONF, & + &PTSTEP, KRR, PDZZ, & + &ZZ_LVFACT, ZZ_LSFACT, PRHODREF, PPABST, PTHT, ZT, PRHODJ, & + &PTHS, PRVS, PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& + &PINPRC, PINPRR, PINPRS, PINPRG, & + &TBUDGETS, KBUDGETS, & + &PSEA=PSEA, PTOWN=PTOWN, & + &PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR) !"sedimentation" of rain fraction + DO JK = IKTB, IKTE + DO JIJ=IIJB,IIJE + ZWR(JIJ,JK,IRR)=PRRS(JIJ,JK)*PTSTEP + ZWR(JIJ,JK,IRS)=PRSS(JIJ,JK)*PTSTEP + ZWR(JIJ,JK,IRG)=PRGS(JIJ,JK)*PTSTEP + IF(KRR==7) THEN + ZWR(JIJ,JK,IRH)=PRHS(JIJ,JK)*PTSTEP + ENDIF + ENDDO + ENDDO IF (PRESENT(PRHS)) THEN - CALL ICE4_RAINFR_VERT(D, ICED, PRAINFR, PRRS(:,:)*PTSTEP, & - &PRSS(:,:)*PTSTEP, PRGS(:,:)*PTSTEP, PRHS(:,:)*PTSTEP) + CALL ICE4_RAINFR_VERT(D, ICED, PRAINFR, ZWR(:,:,IRR), & + &ZWR(:,:,IRS), ZWR(:,:,IRG), ZWR(:,:,IRH)) ELSE - CALL ICE4_RAINFR_VERT(D, ICED, PRAINFR, PRRS(:,:)*PTSTEP, & - &PRSS(:,:)*PTSTEP, PRGS(:,:)*PTSTEP) + CALL ICE4_RAINFR_VERT(D, ICED, PRAINFR, ZWR(:,:,IRR), & + &ZWR(:,:,IRS), ZWR(:,:,IRG)) ENDIF ENDIF !