diff --git a/src/MNH/ini_lima_cold_mixed.f90 b/src/MNH/ini_lima_cold_mixed.f90 index 8aaa67fb33df1ede4e7acbb8228c7fade4bb052d..9ab0c872ec2804a1489eb910318277e774ceb52a 100644 --- a/src/MNH/ini_lima_cold_mixed.f90 +++ b/src/MNH/ini_lima_cold_mixed.f90 @@ -204,10 +204,8 @@ XDS = 0.27 XFVELOS = 0. END IF -IF (.NOT. LSNOW_T) THEN - XCCS = 5.0 - XCXS = 1.0 -END IF +XCCS = 5.0 +XCXS = 1.0 XF0S = 0.86 XF1S = 0.28 @@ -242,8 +240,8 @@ XDH = 0.64 !XCCH = 5.E-4 !XCXH = 2.0 !!!!!!!!!!!! - XCCH = 4.E4 ! Test of Ziegler (1988) - XCXH = -1.0 ! Test of Ziegler (1988) +XCCH = 4.E4 ! Test of Ziegler (1988) +XCXH = -1.0 ! Test of Ziegler (1988) !!! XCCH = 5.E5 ! Graupel_like !!! XCXH = -0.5 ! Graupel_like !!!!!!!!!!!! @@ -289,15 +287,30 @@ XNUH = 8.0 ! Gamma law with little dispersion XLBEXI = 1.0/XBI XLBI = XAI*MOMG(XALPHAI,XNUI,XBI) ! -XNS = 1.0/(XAS*MOMG(XALPHAS,XNUS,XBS)) -XLBEXS = 1.0/(XCXS-XBS) -XLBS = ( XAS*XCCS*MOMG(XALPHAS,XNUS,XBS) )**(-XLBEXS) +IF (NMOM_S.EQ.1) THEN + XNS = 1.0/(XAS*MOMG(XALPHAS,XNUS,XBS)) + XLBEXS = 1.0/(XCXS-XBS) + XLBS = ( XAS*XCCS*MOMG(XALPHAS,XNUS,XBS) )**(-XLBEXS) +ELSE + XLBEXS = 1./XBS + XLBS = XAS * MOMG(XALPHAS,XNUS,XBS) +END IF ! -XLBEXG = 1.0/(XCXG-XBG) -XLBG = ( XAG*XCCG*MOMG(XALPHAG,XNUG,XBG))**(-XLBEXG) +IF (NMOM_G.EQ.1) THEN + XLBEXG = 1.0/(XCXG-XBG) + XLBG = ( XAG*XCCG*MOMG(XALPHAG,XNUG,XBG))**(-XLBEXG) +ELSE + XLBEXG = 1./XBG + XLBG = XAG * MOMG(XALPHAG,XNUG,XBG) +END IF ! -XLBEXH = 1.0/(XCXH-XBH) -XLBH = ( XAH*XCCH*MOMG(XALPHAH,XNUH,XBH) )**(-XLBEXH) +IF (NMOM_H.EQ.1) THEN + XLBEXH = 1.0/(XCXH-XBH) + XLBH = ( XAH*XCCH*MOMG(XALPHAH,XNUH,XBH) )**(-XLBEXH) +ELSE + XLBEXH = 1./XBH + XLBH = XAH * MOMG(XALPHAH,XNUH,XBH) +END IF ! GFLAG = .TRUE. IF (GFLAG) THEN diff --git a/src/MNH/ini_lima_warm.f90 b/src/MNH/ini_lima_warm.f90 index 842552d8131dbe99f954f8c1aeaae70b8ea8f353..a8e8cdcce77f9db93c9ee01dbe4036df9bfb147b 100644 --- a/src/MNH/ini_lima_warm.f90 +++ b/src/MNH/ini_lima_warm.f90 @@ -162,8 +162,16 @@ ZGAMR(6) = MOMG(XALPHAR,XNUR,3.)**(2./3.)/MOMG(XALPHAR,XNUR,2.) ! XLBC = XAR*ZGAMC(2) XLBEXC = 1.0/XBC -XLBR = XAR*ZGAMR(2) -XLBEXR = 1.0/XBR +! +IF (NMOM_R.EQ.1) THEN + XLBEXR = 1.0/XBR + XLBR = ( XAR*XCCR*MOMG(XALPHAR,XNUR,XBR) )**(-XLBEXR) + XCCR = 8.E6 + XCXR = -1. +ELSE + XLBR = XAR*ZGAMR(2) + XLBEXR = 1.0/XBR +END IF ! ! !------------------------------------------------------------------------------ diff --git a/src/MNH/lima.f90 b/src/MNH/lima.f90 index 218eee65ca22aa88d4ebd4f3dd416062779661a6..66e16a895633d04c62e1b3baca948dd1a07d429c 100644 --- a/src/MNH/lima.f90 +++ b/src/MNH/lima.f90 @@ -1119,44 +1119,44 @@ DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKTB:IKTE)<PTSTEP)) ZB_IFNN, & ZCF1D, ZIF1D, ZPF1D ) - CALL LIMA_TENDENCIES (PTSTEP, LLCOMPUTE1D, & - ZEXNREF1D, ZRHODREF1D, ZP1D, ZTHT1D, & - ZRVT1D, ZRCT1D, ZRRT1D, ZRIT1D, ZRST1D, ZRGT1D, ZRHT1D,& - ZCCT1D, ZCRT1D, ZCIT1D, & - Z_TH_HONC, Z_RC_HONC, Z_CC_HONC, & - Z_CC_SELF, & - Z_RC_AUTO, Z_CC_AUTO, Z_CR_AUTO, & - Z_RC_ACCR, Z_CC_ACCR, & - Z_CR_SCBU, & - Z_TH_EVAP, Z_RR_EVAP, Z_CR_EVAP, & - Z_RI_CNVI, Z_CI_CNVI, & - Z_TH_DEPS, Z_RS_DEPS, & - Z_TH_DEPI, Z_RI_DEPI, & - Z_RI_CNVS, Z_CI_CNVS, & - Z_RI_AGGS, Z_CI_AGGS, & - Z_TH_DEPG, Z_RG_DEPG, & - Z_TH_BERFI, Z_RC_BERFI, & - Z_TH_RIM, Z_RC_RIM, Z_CC_RIM, Z_RS_RIM, Z_RG_RIM, & - Z_RI_HMS, Z_CI_HMS, Z_RS_HMS, & - Z_TH_ACC, Z_RR_ACC, Z_CR_ACC, Z_RS_ACC, Z_RG_ACC, & - Z_RS_CMEL, & - Z_TH_CFRZ, Z_RR_CFRZ, Z_CR_CFRZ, Z_RI_CFRZ, Z_CI_CFRZ, & - Z_RI_CIBU, Z_CI_CIBU, & - Z_RI_RDSF, Z_CI_RDSF, & - Z_TH_WETG, Z_RC_WETG, Z_CC_WETG, Z_RR_WETG, Z_CR_WETG, & - Z_RI_WETG, Z_CI_WETG, Z_RS_WETG, Z_RG_WETG, Z_RH_WETG, & - Z_TH_DRYG, Z_RC_DRYG, Z_CC_DRYG, Z_RR_DRYG, Z_CR_DRYG, & - Z_RI_DRYG, Z_CI_DRYG, Z_RS_DRYG, Z_RG_DRYG, & - Z_RI_HMG, Z_CI_HMG, Z_RG_HMG, & - Z_TH_GMLT, Z_RR_GMLT, Z_CR_GMLT, & + CALL LIMA_TENDENCIES (PTSTEP, LLCOMPUTE1D, & + ZEXNREF1D, ZRHODREF1D, ZP1D, ZTHT1D, & + ZRVT1D, ZRCT1D, ZRRT1D, ZRIT1D, ZRST1D, ZRGT1D, ZRHT1D, & + ZCCT1D, ZCRT1D, ZCIT1D, ZCST1D, ZCGT1D, ZCHT1D, & + Z_TH_HONC, Z_RC_HONC, Z_CC_HONC, & + Z_CC_SELF, & + Z_RC_AUTO, Z_CC_AUTO, Z_CR_AUTO, & + Z_RC_ACCR, Z_CC_ACCR, & + Z_CR_SCBU, & + Z_TH_EVAP, Z_RR_EVAP, Z_CR_EVAP, & + Z_RI_CNVI, Z_CI_CNVI, & + Z_TH_DEPS, Z_RS_DEPS, & + Z_TH_DEPI, Z_RI_DEPI, & + Z_RI_CNVS, Z_CI_CNVS, & + Z_RI_AGGS, Z_CI_AGGS, & + Z_TH_DEPG, Z_RG_DEPG, & + Z_TH_BERFI, Z_RC_BERFI, & + Z_TH_RIM, Z_RC_RIM, Z_CC_RIM, Z_RS_RIM, Z_RG_RIM, & + Z_RI_HMS, Z_CI_HMS, Z_RS_HMS, & + Z_TH_ACC, Z_RR_ACC, Z_CR_ACC, Z_RS_ACC, Z_RG_ACC, & + Z_RS_CMEL, & + Z_TH_CFRZ, Z_RR_CFRZ, Z_CR_CFRZ, Z_RI_CFRZ, Z_CI_CFRZ, & + Z_RI_CIBU, Z_CI_CIBU, & + Z_RI_RDSF, Z_CI_RDSF, & + Z_TH_WETG, Z_RC_WETG, Z_CC_WETG, Z_RR_WETG, Z_CR_WETG, & + Z_RI_WETG, Z_CI_WETG, Z_RS_WETG, Z_RG_WETG, Z_RH_WETG, & + Z_TH_DRYG, Z_RC_DRYG, Z_CC_DRYG, Z_RR_DRYG, Z_CR_DRYG, & + Z_RI_DRYG, Z_CI_DRYG, Z_RS_DRYG, Z_RG_DRYG, & + Z_RI_HMG, Z_CI_HMG, Z_RG_HMG, & + Z_TH_GMLT, Z_RR_GMLT, Z_CR_GMLT, & !!! Z_RC_WETH, Z_CC_WETH, Z_RR_WETH, Z_CR_WETH, & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th !!! Z_RI_WETH, Z_CI_WETH, Z_RS_WETH, Z_RG_WETH, Z_RH_WETH, & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th !!! Z_RG_COHG, & ! conversion of hail into graupel (COHG) : rg, rh !!! Z_RR_HMLT, Z_CR_HMLT ! hail melting (HMLT) : rr, Nr, rh=-rr, th - ZA_TH, ZA_RV, ZA_RC, ZA_CC, ZA_RR, ZA_CR, & - ZA_RI, ZA_CI, ZA_RS, ZA_RG, ZA_RH, & - ZEVAP1D, & - ZCF1D, ZIF1D, ZPF1D ) + ZA_TH, ZA_RV, ZA_RC, ZA_CC, ZA_RR, ZA_CR, & + ZA_RI, ZA_CI, ZA_RS, ZA_CS, ZA_RG, ZA_CG, ZA_RH, ZA_CH, & + ZEVAP1D, & + ZCF1D, ZIF1D, ZPF1D ) ! !*** 4.2 Integration time diff --git a/src/MNH/lima_tendencies.f90 b/src/MNH/lima_tendencies.f90 index 06e9252c437c067408c197489bc3aaa24e2e8ffd..4977e2109f9ca781f5670f72df8a1ddba248078d 100644 --- a/src/MNH/lima_tendencies.f90 +++ b/src/MNH/lima_tendencies.f90 @@ -7,44 +7,44 @@ MODULE MODI_LIMA_TENDENCIES !############################### INTERFACE - SUBROUTINE LIMA_TENDENCIES (PTSTEP, LDCOMPUTE, & - PEXNREF, PRHODREF, PPABST, PTHT, & - PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT, & - PCCT, PCRT, PCIT, & - P_TH_HONC, P_RC_HONC, P_CC_HONC, & - P_CC_SELF, & - P_RC_AUTO, P_CC_AUTO, P_CR_AUTO, & - P_RC_ACCR, P_CC_ACCR, & - P_CR_SCBU, & - P_TH_EVAP, P_RR_EVAP, P_CR_EVAP, & - P_RI_CNVI, P_CI_CNVI, & - P_TH_DEPS, P_RS_DEPS, & - P_TH_DEPI, P_RI_DEPI, & - P_RI_CNVS, P_CI_CNVS, & - P_RI_AGGS, P_CI_AGGS, & - P_TH_DEPG, P_RG_DEPG, & - P_TH_BERFI, P_RC_BERFI, & - P_TH_RIM, P_RC_RIM, P_CC_RIM, P_RS_RIM, P_RG_RIM, & - P_RI_HMS, P_CI_HMS, P_RS_HMS, & - P_TH_ACC, P_RR_ACC, P_CR_ACC, P_RS_ACC, P_RG_ACC, & - P_RS_CMEL, & - P_TH_CFRZ, P_RR_CFRZ, P_CR_CFRZ, P_RI_CFRZ, P_CI_CFRZ, & - P_RI_CIBU, P_CI_CIBU, & - P_RI_RDSF, P_CI_RDSF, & - P_TH_WETG, P_RC_WETG, P_CC_WETG, P_RR_WETG, P_CR_WETG, & - P_RI_WETG, P_CI_WETG, P_RS_WETG, P_RG_WETG, P_RH_WETG, & - P_TH_DRYG, P_RC_DRYG, P_CC_DRYG, P_RR_DRYG, P_CR_DRYG, & - P_RI_DRYG, P_CI_DRYG, P_RS_DRYG, P_RG_DRYG, & - P_RI_HMG, P_CI_HMG, P_RG_HMG, & - P_TH_GMLT, P_RR_GMLT, P_CR_GMLT, & + SUBROUTINE LIMA_TENDENCIES (PTSTEP, LDCOMPUTE, & + PEXNREF, PRHODREF, PPABST, PTHT, & + PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT, & + PCCT, PCRT, PCIT, PCST, PCGT, PCHT, & + P_TH_HONC, P_RC_HONC, P_CC_HONC, & + P_CC_SELF, & + P_RC_AUTO, P_CC_AUTO, P_CR_AUTO, & + P_RC_ACCR, P_CC_ACCR, & + P_CR_SCBU, & + P_TH_EVAP, P_RR_EVAP, P_CR_EVAP, & + P_RI_CNVI, P_CI_CNVI, & + P_TH_DEPS, P_RS_DEPS, & + P_TH_DEPI, P_RI_DEPI, & + P_RI_CNVS, P_CI_CNVS, & + P_RI_AGGS, P_CI_AGGS, & + P_TH_DEPG, P_RG_DEPG, & + P_TH_BERFI, P_RC_BERFI, & + P_TH_RIM, P_RC_RIM, P_CC_RIM, P_RS_RIM, P_RG_RIM, & + P_RI_HMS, P_CI_HMS, P_RS_HMS, & + P_TH_ACC, P_RR_ACC, P_CR_ACC, P_RS_ACC, P_RG_ACC, & + P_RS_CMEL, & + P_TH_CFRZ, P_RR_CFRZ, P_CR_CFRZ, P_RI_CFRZ, P_CI_CFRZ, & + P_RI_CIBU, P_CI_CIBU, & + P_RI_RDSF, P_CI_RDSF, & + P_TH_WETG, P_RC_WETG, P_CC_WETG, P_RR_WETG, P_CR_WETG, & + P_RI_WETG, P_CI_WETG, P_RS_WETG, P_RG_WETG, P_RH_WETG, & + P_TH_DRYG, P_RC_DRYG, P_CC_DRYG, P_RR_DRYG, P_CR_DRYG, & + P_RI_DRYG, P_CI_DRYG, P_RS_DRYG, P_RG_DRYG, & + P_RI_HMG, P_CI_HMG, P_RG_HMG, & + P_TH_GMLT, P_RR_GMLT, P_CR_GMLT, & !!! Z_RC_WETH, Z_CC_WETH, Z_RR_WETH, Z_CR_WETH, & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th !!! Z_RI_WETH, Z_CI_WETH, Z_RS_WETH, Z_RG_WETH, Z_RH_WETH, & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th !!! Z_RG_COHG, & ! conversion of hail into graupel (COHG) : rg, rh !!! Z_RR_HMLT, Z_CR_HMLT ! hail melting (HMLT) : rr, Nr, rh=-rr, th - PA_TH, PA_RV, PA_RC, PA_CC, PA_RR, PA_CR, & - PA_RI, PA_CI, PA_RS, PA_RG, PA_RH, & - PEVAP3D, & - PCF1D, PIF1D, PPF1D ) + PA_TH, PA_RV, PA_RC, PA_CC, PA_RR, PA_CR, & + PA_RI, PA_CI, PA_RS, PA_CS, PA_RG, PA_CG, PA_RH, PA_CH, & + PEVAP3D, & + PCF1D, PIF1D, PPF1D ) ! REAL, INTENT(IN) :: PTSTEP LOGICAL, DIMENSION(:),INTENT(IN) :: LDCOMPUTE @@ -64,7 +64,10 @@ REAL, DIMENSION(:), INTENT(IN) :: PRHT ! Mixing ratios (kg/kg) ! REAL, DIMENSION(:), INTENT(IN) :: PCCT ! REAL, DIMENSION(:), INTENT(IN) :: PCRT ! -REAL, DIMENSION(:), INTENT(IN) :: PCIT ! Number concentrations (/kg) +REAL, DIMENSION(:), INTENT(IN) :: PCIT ! +REAL, DIMENSION(:), INTENT(IN) :: PCST ! +REAL, DIMENSION(:), INTENT(IN) :: PCGT ! +REAL, DIMENSION(:), INTENT(IN) :: PCHT ! Number concentrations (/kg) ! REAL, DIMENSION(:), INTENT(INOUT) :: P_TH_HONC REAL, DIMENSION(:), INTENT(INOUT) :: P_RC_HONC @@ -174,8 +177,11 @@ REAL, DIMENSION(:), INTENT(INOUT) :: PA_CR REAL, DIMENSION(:), INTENT(INOUT) :: PA_RI REAL, DIMENSION(:), INTENT(INOUT) :: PA_CI REAL, DIMENSION(:), INTENT(INOUT) :: PA_RS +REAL, DIMENSION(:), INTENT(INOUT) :: PA_CS REAL, DIMENSION(:), INTENT(INOUT) :: PA_RG +REAL, DIMENSION(:), INTENT(INOUT) :: PA_CG REAL, DIMENSION(:), INTENT(INOUT) :: PA_RH +REAL, DIMENSION(:), INTENT(INOUT) :: PA_CH ! REAL, DIMENSION(:), INTENT(INOUT) :: PEVAP3D ! @@ -189,44 +195,44 @@ END MODULE MODI_LIMA_TENDENCIES !##################################################################### ! !##################################################################### -SUBROUTINE LIMA_TENDENCIES (PTSTEP, LDCOMPUTE, & - PEXNREF, PRHODREF, PPABST, PTHT, & - PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT, & - PCCT, PCRT, PCIT, & - P_TH_HONC, P_RC_HONC, P_CC_HONC, & - P_CC_SELF, & - P_RC_AUTO, P_CC_AUTO, P_CR_AUTO, & - P_RC_ACCR, P_CC_ACCR, & - P_CR_SCBU, & - P_TH_EVAP, P_RR_EVAP, P_CR_EVAP, & - P_RI_CNVI, P_CI_CNVI, & - P_TH_DEPS, P_RS_DEPS, & - P_TH_DEPI, P_RI_DEPI, & - P_RI_CNVS, P_CI_CNVS, & - P_RI_AGGS, P_CI_AGGS, & - P_TH_DEPG, P_RG_DEPG, & - P_TH_BERFI, P_RC_BERFI, & - P_TH_RIM, P_RC_RIM, P_CC_RIM, P_RS_RIM, P_RG_RIM, & - P_RI_HMS, P_CI_HMS, P_RS_HMS, & - P_TH_ACC, P_RR_ACC, P_CR_ACC, P_RS_ACC, P_RG_ACC, & - P_RS_CMEL, & - P_TH_CFRZ, P_RR_CFRZ, P_CR_CFRZ, P_RI_CFRZ, P_CI_CFRZ, & - P_RI_CIBU, P_CI_CIBU, & - P_RI_RDSF, P_CI_RDSF, & - P_TH_WETG, P_RC_WETG, P_CC_WETG, P_RR_WETG, P_CR_WETG, & - P_RI_WETG, P_CI_WETG, P_RS_WETG, P_RG_WETG, P_RH_WETG, & - P_TH_DRYG, P_RC_DRYG, P_CC_DRYG, P_RR_DRYG, P_CR_DRYG, & - P_RI_DRYG, P_CI_DRYG, P_RS_DRYG, P_RG_DRYG, & - P_RI_HMG, P_CI_HMG, P_RG_HMG, & - P_TH_GMLT, P_RR_GMLT, P_CR_GMLT, & +SUBROUTINE LIMA_TENDENCIES (PTSTEP, LDCOMPUTE, & + PEXNREF, PRHODREF, PPABST, PTHT, & + PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT, & + PCCT, PCRT, PCIT, PCST, PCGT, PCHT, & + P_TH_HONC, P_RC_HONC, P_CC_HONC, & + P_CC_SELF, & + P_RC_AUTO, P_CC_AUTO, P_CR_AUTO, & + P_RC_ACCR, P_CC_ACCR, & + P_CR_SCBU, & + P_TH_EVAP, P_RR_EVAP, P_CR_EVAP, & + P_RI_CNVI, P_CI_CNVI, & + P_TH_DEPS, P_RS_DEPS, & + P_TH_DEPI, P_RI_DEPI, & + P_RI_CNVS, P_CI_CNVS, & + P_RI_AGGS, P_CI_AGGS, & + P_TH_DEPG, P_RG_DEPG, & + P_TH_BERFI, P_RC_BERFI, & + P_TH_RIM, P_RC_RIM, P_CC_RIM, P_RS_RIM, P_RG_RIM, & + P_RI_HMS, P_CI_HMS, P_RS_HMS, & + P_TH_ACC, P_RR_ACC, P_CR_ACC, P_RS_ACC, P_RG_ACC, & + P_RS_CMEL, & + P_TH_CFRZ, P_RR_CFRZ, P_CR_CFRZ, P_RI_CFRZ, P_CI_CFRZ, & + P_RI_CIBU, P_CI_CIBU, & + P_RI_RDSF, P_CI_RDSF, & + P_TH_WETG, P_RC_WETG, P_CC_WETG, P_RR_WETG, P_CR_WETG, & + P_RI_WETG, P_CI_WETG, P_RS_WETG, P_RG_WETG, P_RH_WETG, & + P_TH_DRYG, P_RC_DRYG, P_CC_DRYG, P_RR_DRYG, P_CR_DRYG, & + P_RI_DRYG, P_CI_DRYG, P_RS_DRYG, P_RG_DRYG, & + P_RI_HMG, P_CI_HMG, P_RG_HMG, & + P_TH_GMLT, P_RR_GMLT, P_CR_GMLT, & !!! Z_RC_WETH, Z_CC_WETH, Z_RR_WETH, Z_CR_WETH, & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th !!! Z_RI_WETH, Z_CI_WETH, Z_RS_WETH, Z_RG_WETH, Z_RH_WETH, & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th !!! Z_RG_COHG, & ! conversion of hail into graupel (COHG) : rg, rh !!! Z_RR_HMLT, Z_CR_HMLT ! hail melting (HMLT) : rr, Nr, rh=-rr, th - PA_TH, PA_RV, PA_RC, PA_CC, PA_RR, PA_CR, & - PA_RI, PA_CI, PA_RS, PA_RG, PA_RH, & - PEVAP3D, & - PCF1D, PIF1D, PPF1D ) + PA_TH, PA_RV, PA_RC, PA_CC, PA_RR, PA_CR, & + PA_RI, PA_CI, PA_RS, PA_CS, PA_RG, PA_CG, PA_RH, PA_CH, & + PEVAP3D, & + PCF1D, PIF1D, PPF1D ) ! ###################################################################### !! !! PURPOSE @@ -253,11 +259,12 @@ SUBROUTINE LIMA_TENDENCIES (PTSTEP, LDCOMPUTE, USE MODD_CST, ONLY : XP00, XRD, XRV, XMD, XMV, XCPD, XCPV, XCL, XCI, XLVTT, XLSTT, XTT, & XALPW, XBETAW, XGAMW, XALPI, XBETAI, XGAMI USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, XNUS, LCIBU, LRDSF, & - LCOLD, LNUCL, LSNOW, LHAIL, LWARM, LACTI, LRAIN, LKHKO, LSNOW_T, NMOM_I -USE MODD_PARAM_LIMA_WARM, ONLY : XLBC, XLBEXC, XLBR, XLBEXR -USE MODD_PARAM_LIMA_MIXED, ONLY : XLBG, XLBEXG, XLBH, XLBEXH, XLBDAG_MAX + LCOLD, LNUCL, LSNOW, LHAIL, LWARM, LACTI, LRAIN, LKHKO, LSNOW_T, & + NMOM_C, NMOM_R, NMOM_I, NMOM_S, NMOM_G, NMOM_H +USE MODD_PARAM_LIMA_WARM, ONLY : XLBC, XLBEXC, XLBR, XLBEXR, XCCR, XCXR +USE MODD_PARAM_LIMA_MIXED, ONLY : XLBG, XLBEXG, XCCG, XCXG, XLBH, XLBEXH, XCCH, XCXH, XLBDAG_MAX USE MODD_PARAM_LIMA_COLD, ONLY : XSCFAC, XLBI, XLBEXI, XLBS, XLBEXS, XLBDAS_MAX, XTRANS_MP_GAMMAS, & - XFVELOS, XLBDAS_MIN + XFVELOS, XLBDAS_MIN, XCCS, XCXS, XBS, XNS ! USE MODI_LIMA_DROPLETS_HOM_FREEZING USE MODI_LIMA_DROPLETS_SELF_COLLECTION @@ -300,8 +307,11 @@ REAL, DIMENSION(:), INTENT(IN) :: PRGT ! REAL, DIMENSION(:), INTENT(IN) :: PRHT ! Mixing ratios (kg/kg) ! REAL, DIMENSION(:), INTENT(IN) :: PCCT ! -REAL, DIMENSION(:), INTENT(IN) :: PCRT ! -REAL, DIMENSION(:), INTENT(IN) :: PCIT ! Number concentrations (/kg) +REAL, DIMENSION(:), INTENT(INOUT) :: PCRT ! +REAL, DIMENSION(:), INTENT(IN) :: PCIT ! +REAL, DIMENSION(:), INTENT(INOUT) :: PCST ! +REAL, DIMENSION(:), INTENT(INOUT) :: PCGT ! +REAL, DIMENSION(:), INTENT(INOUT) :: PCHT ! Number concentrations (/kg) ! REAL, DIMENSION(:), INTENT(INOUT) :: P_TH_HONC REAL, DIMENSION(:), INTENT(INOUT) :: P_RC_HONC @@ -411,8 +421,11 @@ REAL, DIMENSION(:), INTENT(INOUT) :: PA_CR REAL, DIMENSION(:), INTENT(INOUT) :: PA_RI REAL, DIMENSION(:), INTENT(INOUT) :: PA_CI REAL, DIMENSION(:), INTENT(INOUT) :: PA_RS +REAL, DIMENSION(:), INTENT(INOUT) :: PA_CS REAL, DIMENSION(:), INTENT(INOUT) :: PA_RG +REAL, DIMENSION(:), INTENT(INOUT) :: PA_CG REAL, DIMENSION(:), INTENT(INOUT) :: PA_RH +REAL, DIMENSION(:), INTENT(INOUT) :: PA_CH ! REAL, DIMENSION(:), INTENT(INOUT) :: PEVAP3D ! @@ -510,47 +523,81 @@ WHERE (LDCOMPUTE(:)) ! END WHERE ! -! +! Cloud droplets : same formula for 1 and 2 moments, but using real or fixed Nc value ZLBDC(:) = 1.E10 ZLBDC3(:) = 1.E30 WHERE (PRCT(:)>XRTMIN(2) .AND. PCCT(:)>XCTMIN(2) .AND. LDCOMPUTE(:)) ZLBDC3(:) = XLBC*PCCT(:) / PRCT(:) ZLBDC(:) = ZLBDC3(:)**XLBEXC END WHERE +! +! Rain drops ZLBDR(:) = 1.E10 ZLBDR3(:) = 1.E30 -WHERE (PRRT(:)>XRTMIN(3) .AND. PCRT(:)>XCTMIN(3) .AND. LDCOMPUTE(:)) - ZLBDR3(:) = XLBR*PCRT(:) / PRRT(:) - ZLBDR(:) = ZLBDR3(:)**XLBEXR -END WHERE +IF (NMOM_R.EQ.1) THEN + WHERE (PRRT(:)>XRTMIN(3) .AND. LDCOMPUTE(:) ) + ZLBDR(:) = XLBR*(PRHODREF(:)*PRRT(:) )**XLBEXR + ZLBDR3(:) = ZLBDR(:)**3. + END WHERE + PCRT(:) = XCCR * ZLBDR(:)**XCXR / PRHODREF(:) +ELSE + WHERE (PRRT(:)>XRTMIN(3) .AND. PCRT(:)>XCTMIN(3) .AND. LDCOMPUTE(:)) + ZLBDR3(:) = XLBR*PCRT(:) / PRRT(:) + ZLBDR(:) = ZLBDR3(:)**XLBEXR + END WHERE +END IF +! +! Pristine ice : same formula for 1 and 2 moments, using real or diagnosed Ni ZLBDI(:) = 1.E10 WHERE (PRIT(:)>XRTMIN(4) .AND. PCIT(:)>XCTMIN(4) .AND. LDCOMPUTE(:)) ZLBDI(:) = ( XLBI*PCIT(:) / PRIT(:) )**XLBEXI END WHERE +! +! Snow : additional option for LSNOW_T if NMOM_S=1 ZLBDS(:) = 1.E10 -IF (LSNOW_T) THEN - WHERE (PRST(:)>XRTMIN(5) .AND. LDCOMPUTE(:) ) - WHERE(ZT(:)>263.15) - ZLBDS(:) = MAX(MIN(XLBDAS_MAX, 10**(14.554-0.0423*ZT(:))),XLBDAS_MIN) +IF (NMOM_S.EQ.1) THEN + IF (LSNOW_T) THEN + WHERE (PRST(:)>XRTMIN(5) .AND. LDCOMPUTE(:) ) + WHERE(ZT(:)>263.15) + ZLBDS(:) = MAX(MIN(XLBDAS_MAX, 10**(14.554-0.0423*ZT(:))),XLBDAS_MIN) + END WHERE + WHERE(ZT(:)<=263.15) + ZLBDS(:) = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*ZT(:))),XLBDAS_MIN) + END WHERE END WHERE - WHERE(ZT(:)<=263.15) - ZLBDS(:) = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*ZT(:))),XLBDAS_MIN) + ZLBDS(:) = ZLBDS(:) * XTRANS_MP_GAMMAS + PCST(:) = XNS * PRST(:) * ZLBDS(:)**XBS + ELSE + WHERE (PRST(:)>XRTMIN(5) .AND. LDCOMPUTE(:) ) + ZLBDS(:) = XLBS*( PRHODREF(:)*PRST(:) )**XLBEXS END WHERE - END WHERE - ZLBDS(:) = ZLBDS(:) * XTRANS_MP_GAMMAS + PCST(:) = XCCS * ZLBDS(:)**XCXS / PRHODREF(:) + END IF ELSE - WHERE (PRST(:)>XRTMIN(5) .AND. LDCOMPUTE(:) ) - ZLBDS(:) = XLBS*( PRHODREF(:)*PRST(:) )**XLBEXS - END WHERE + ZLBDS(:) = (XLBS*PCST(:)/PRST(:))**XLBEXS END IF +! +! Graupel ZLBDG(:) = 1.E10 -WHERE (PRGT(:)>XRTMIN(6) .AND. LDCOMPUTE(:) ) - ZLBDG(:) = XLBG*( PRHODREF(:)*PRGT(:) )**XLBEXG -END WHERE +IF (NMOM_G.EQ.1) THEN + WHERE (PRGT(:)>XRTMIN(6) .AND. LDCOMPUTE(:) ) + ZLBDG(:) = XLBG*( PRHODREF(:)*PRGT(:) )**XLBEXG + END WHERE + PCGT(:) = XCCG * ZLBDG(:)**XCXG / PRHODREF(:) +ELSE + ZLBDG(:) = (XLBG*PCGT(:)/PRGT(:))**XLBEXG +END IF +! +! Hail ZLBDH(:) = 1.E10 -WHERE (PRHT(:)>XRTMIN(7) .AND. LDCOMPUTE(:) ) - ZLBDH(:) = XLBH*( PRHODREF(:)*PRHT(:) )**XLBEXH -END WHERE +IF (NMOM_H.EQ.1) THEN + WHERE (PRHT(:)>XRTMIN(7) .AND. LDCOMPUTE(:) ) + ZLBDH(:) = XLBH*( PRHODREF(:)*PRHT(:) )**XLBEXH + PCHT(:) = XCCH * ZLBDH(:)**XCXH / PRHODREF(:) + END WHERE +ELSE + ZLBDH(:) = (XLBH*PCHT(:)/PRHT(:))**XLBEXH +END IF ! !------------------------------------------------------------------------------- ! Call microphysical processes diff --git a/src/MNH/modd_param_lima_warm.f90 b/src/MNH/modd_param_lima_warm.f90 index 2c182b6e986a346fb9d61594316501cba7577cd9..aafcb4ed6e052fc1dbc695c8cf1b0ff4403a0124 100644 --- a/src/MNH/modd_param_lima_warm.f90 +++ b/src/MNH/modd_param_lima_warm.f90 @@ -32,7 +32,7 @@ REAL,SAVE :: XLBC, XLBEXC, & ! shape parameters of the cloud droplets XLBR, XLBEXR ! shape parameters of the raindrops ! REAL,SAVE :: XAR,XBR,XCR,XDR,XF0R,XF1R, & ! Raindrop charact. - XCCR, & !For diagnostics + XCCR,XCXR, & !For diagnostics XAC,XBC,XCC,XDC,XF0C,XF2C,XC1C ! Cloud droplet charact. ! !