From be045b6fe797bfb45b31b3a66638dd1c7ae4550e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Vi=C3=A9?= <benoit.vie@meteo.fr> Date: Wed, 6 Jul 2022 11:30:07 +0200 Subject: [PATCH] bugfix riming array syntax conversion add ICE3 droplet accretion formulation in LIMA1M --- src/MNH/ini_lima_warm.f90 | 5 +++++ src/MNH/lima_droplets_accretion.f90 | 13 +++++++++++-- src/MNH/lima_droplets_riming_snow.f90 | 22 +++++++++++----------- src/MNH/modd_param_lima_warm.f90 | 3 ++- 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/MNH/ini_lima_warm.f90 b/src/MNH/ini_lima_warm.f90 index 08d1e85a5..5ef1977aa 100644 --- a/src/MNH/ini_lima_warm.f90 +++ b/src/MNH/ini_lima_warm.f90 @@ -361,6 +361,11 @@ XACCR_CSMALL2 = XKERA1*ZGAMR(3) XACCR_RSMALL1 = XKERA1*ZGAMC(5)*XRHOLW*(XPI/6.0) XACCR_RSMALL2 = XKERA1*ZGAMC(2)*ZGAMR(3)*XRHOLW*(XPI/6.0) ! +! ICE3 accretion of cloud droplets by rain drops +! +XFCACCR = (XPI/4.0)*XCCR*XCR*(ZRHO00**XCEXVT)*MOMG(XALPHAR,XNUR,XDR+2.0) +XEXCACCR = -XDR-3.0 +! ! Cst for the raindrop self-collection/breakup process ! XSCBU2 = XKERA2*ZGAMR(2) diff --git a/src/MNH/lima_droplets_accretion.f90 b/src/MNH/lima_droplets_accretion.f90 index d97d99d3e..f7e518b64 100644 --- a/src/MNH/lima_droplets_accretion.f90 +++ b/src/MNH/lima_droplets_accretion.f90 @@ -64,11 +64,12 @@ END MODULE MODI_LIMA_DROPLETS_ACCRETION !* 0. DECLARATIONS ! ------------ ! -USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, LKHKO +USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, LKHKO, NMOM_C, NMOM_R, XCEXVT USE MODD_PARAM_LIMA_WARM, ONLY : XLAUTR, XAUTO1, XLAUTR_THRESHOLD, & XACCR4, XACCR5, XACCR3, XACCR2, XACCR1, & XACCR_CLARGE1, XACCR_CLARGE2, XACCR_RLARGE1, XACCR_RLARGE2, & - XACCR_CSMALL1, XACCR_CSMALL2, XACCR_RSMALL1, XACCR_RSMALL2 + XACCR_CSMALL1, XACCR_CSMALL2, XACCR_RSMALL1, XACCR_RSMALL2, & + XFCACCR, XEXCACCR ! IMPLICIT NONE ! @@ -128,6 +129,14 @@ IF ( LKHKO ) THEN ! END WHERE ! +ELSE IF (NMOM_C.EQ.1 .AND. NMOM_R.EQ.1) THEN + GACCR(:) = PRRT(:)>XRTMIN(3) .AND. & + PRCT(:)>XRTMIN(2) + WHERE ( GACCR(:) ) + P_RC_ACCR(:) = XFCACCR * PRCT(:) & + * PLBDR(:)**XEXCACCR & + * PRHODREF(:)**(-XCEXVT) + END WHERE ELSE ! WHERE( PRCT(:)>XRTMIN(2) .AND. PCCT(:)>XCTMIN(2) .AND. PRRT(:)>XRTMIN(3) .AND. PCRT(:)>XCTMIN(3) .AND. LDCOMPUTE(:) ) diff --git a/src/MNH/lima_droplets_riming_snow.f90 b/src/MNH/lima_droplets_riming_snow.f90 index d5d32ad8f..4e650743e 100644 --- a/src/MNH/lima_droplets_riming_snow.f90 +++ b/src/MNH/lima_droplets_riming_snow.f90 @@ -185,11 +185,11 @@ DO JI = 1, SIZE(PRCT) ! P_TH_RIM(JI) = - P_RC_RIM(JI)*(PLSFACT(JI)-PLVFACT(JI)) ELSE - P_TH_RIM(:) = 0. - P_RC_RIM(:) = 0. - P_CC_RIM(:) = 0. - P_RS_RIM(:) = 0. - P_RG_RIM(:) = 0. + P_TH_RIM(JI) = 0. + P_RC_RIM(JI) = 0. + P_CC_RIM(JI) = 0. + P_RS_RIM(JI) = 0. + P_RG_RIM(JI) = 0. END IF ! !* Hallett-Mossop ice production (HMS) @@ -214,14 +214,14 @@ DO JI = 1, SIZE(PRCT) P_RI_HMS(JI) = P_CI_HMS(JI) * XMNU0 ! RCHMSI P_RS_HMS(JI) = - P_RI_HMS(JI) ELSE - P_RI_HMS(:) = 0. - P_CI_HMS(:) = 0. - P_RS_HMS(:) = 0. + P_RI_HMS(JI) = 0. + P_CI_HMS(JI) = 0. + P_RS_HMS(JI) = 0. END IF ELSE - P_RI_HMS(:) = 0. - P_CI_HMS(:) = 0. - P_RS_HMS(:) = 0. + P_RI_HMS(JI) = 0. + P_CI_HMS(JI) = 0. + P_RS_HMS(JI) = 0. END IF END DO ! diff --git a/src/MNH/modd_param_lima_warm.f90 b/src/MNH/modd_param_lima_warm.f90 index aafcb4ed6..8089a5f5d 100644 --- a/src/MNH/modd_param_lima_warm.f90 +++ b/src/MNH/modd_param_lima_warm.f90 @@ -96,7 +96,8 @@ REAL,SAVE :: XAUTO1, XAUTO2, XCAUTR, & ! Constants for cloud droplet REAL,SAVE :: XACCR1, XACCR2, XACCR3, & ! Constants for the accretion XACCR4, XACCR5, XACCR6, & ! process XACCR_CLARGE1, XACCR_CLARGE2, XACCR_RLARGE1, XACCR_RLARGE2, & - XACCR_CSMALL1, XACCR_CSMALL2, XACCR_RSMALL1, XACCR_RSMALL2 + XACCR_CSMALL1, XACCR_CSMALL2, XACCR_RSMALL1, XACCR_RSMALL2, & + XFCACCR, XEXCACCR ! REAL,SAVE :: XSCBU2, XSCBU3, & ! Constants for the raindrop XSCBU_EFF1, XSCBU_EFF2, XSCBUEXP1 ! breakup-selfcollection: SCBU -- GitLab