diff --git a/src/MNH/aircraft_balloon_evol.f90 b/src/MNH/aircraft_balloon_evol.f90 index 21552784ad055e87fbce0afc5a2994ef7e9e44fe..0f47accb881f03e038a0a80441231187f9675d64 100644 --- a/src/MNH/aircraft_balloon_evol.f90 +++ b/src/MNH/aircraft_balloon_evol.f90 @@ -931,7 +931,9 @@ USE MODD_PARAM_LIMA, ONLY: LSNOW_T_L => LSNOW_T, XALPHAG_L => XALPHAG, XNUG_L => XNUG, XALPHAI_L => XALPHAI, XNUI_L => XNUI, & XRTMIN_L => XRTMIN, XALPHAC_L => XALPHAC, XNUC_L => XNUC USE MODD_PARAM_LIMA_COLD, ONLY: XAI_L => XAI, XBI_L => XBI, XLBEXS_L => XLBEXS,XLBS_L => XLBS,XCCS_L => XCCS, & - XAS_L => XAS, XBS_L => XBS, XCXS_L => XCXS, XLBDAS_MAX, XLBDAS_MIN, XNS_L => XNS + XAS_L => XAS, XBS_L => XBS, XCXS_L => XCXS, & + XLBDAS_MAX_L => XLBDAS_MAX, XLBDAS_MIN_L => XLBDAS_MIN, & + XNS_L => XNS, XTRANS_MP_GAMMAS_L=>XTRANS_MP_GAMMAS USE MODD_PARAM_LIMA_MIXED, ONLY: XLBEXG_L => XLBEXG, XLBG_L => XLBG, XCCG_L => XCCG, XAG_L => XAG, XBG_L => XBG, XCXG_L => XCXG USE MODD_PARAM_LIMA_WARM, ONLY: XAC_L => XAC, XAR_L => XAR, XBC_L => XBC, XBR_L => XBR USE MODD_PARAM_n, ONLY: CCLOUD, CSURF @@ -945,7 +947,9 @@ USE MODD_RAIN_ICE_DESCR, ONLY: XALPHAR_I => XALPHAR, XNUR_I => XNUR, XLBEXR_I XLBG_I => XLBG, XCCG_I => XCCG, XAG_I => XAG, XBG_I => XBG, XCXG_I => XCXG, & XALPHAI_I => XALPHAI, XNUI_I => XNUI, XLBEXI_I => XLBEXI, & XLBI_I => XLBI, XAI_I => XAI, XBI_I => XBI, & - XNS_I => XNS, XRTMIN_I => XRTMIN, XCONC_LAND, XCONC_SEA + XNS_I => XNS, XRTMIN_I => XRTMIN, XCONC_LAND, XCONC_SEA, & + XLBDAS_MAX_I => XLBDAS_MAX, XLBDAS_MIN_I => XLBDAS_MIN, & + XTRANS_MP_GAMMAS_I => XTRANS_MP_GAMMAS USE MODE_FGAU, ONLY: GAULAG USE MODE_FSCATTER, ONLY: BHMIE, MOMG, MG, QEPSI, QEPSW @@ -1230,12 +1234,18 @@ IF (CCLOUD=="LIMA" .OR. CCLOUD=="ICE3" ) THEN ! only for ICE3 and LIMA ZLB=( ZA*ZCC*MOMG(ZALPHA,ZNU,ZB) )**(-ZLBEX) ENDIF END SELECT - ZLBDA=ZLB*(ZRHODREFZ(JK)*ZRZ(JK,JLOOP))**ZLBEX - IF ( JLOOP == 5 .AND. ( (CCLOUD=='LIMA'.AND.LSNOW_T_L) .OR. & - (CCLOUD=='ICE3'.AND.LSNOW_T_I) ) ) THEN - ZLBDA = MAX(MIN(XLBDAS_MAX, 10**(14.554-0.0423*(ZTEMPZ(JK)+273.15))),XLBDAS_MIN) + IF ( JLOOP == 5 .AND. CCLOUD=='LIMA'.AND.LSNOW_T_L ) THEN + IF (ZTEMPZ(JK)>XTT-10.) THEN + ZLBDA = MAX(MIN(XLBDAS_MAX_L, 10**(14.554-0.0423*ZTEMPZ(JK))),XLBDAS_MIN_L)*XTRANS_MP_GAMMAS_L ELSE - ZLBDA = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*(ZTEMPZ(JK)+273.15))),XLBDAS_MIN) + ZLBDA = MAX(MIN(XLBDAS_MAX_L, 10**(6.226-0.0106*ZTEMPZ(JK))),XLBDAS_MIN_L)*XTRANS_MP_GAMMAS_L + END IF + ZN=ZNS*ZRHODREFZ(JK)*ZRZ(JK,JLOOP)*ZLBDA**ZB + ELSE IF (JLOOP.EQ.5 .AND. (CCLOUD=='ICE3'.AND.LSNOW_T_I) ) THEN + IF (ZTEMPZ(JK)>XTT-10.) THEN + ZLBDA = MAX(MIN(XLBDAS_MAX_I, 10**(14.554-0.0423*ZTEMPZ(JK))),XLBDAS_MIN_I)*XTRANS_MP_GAMMAS_I + ELSE + ZLBDA = MAX(MIN(XLBDAS_MAX_I, 10**(6.226-0.0106*ZTEMPZ(JK))),XLBDAS_MIN_I)*XTRANS_MP_GAMMAS_I END IF ZN=ZNS*ZRHODREFZ(JK)*ZRZ(JK,JLOOP)*ZLBDA**ZB ELSE diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90 index b225ac270ce8058284c1c08224e26e2484159e55..b920b35daa6280d5fa94dc1b384b2a5745a0fef3 100644 --- a/src/MNH/ch_monitorn.f90 +++ b/src/MNH/ch_monitorn.f90 @@ -652,7 +652,6 @@ SELECT CASE (CCH_TDISCRETIZATION) END SELECT ! ! -IF (LEN_TRIM(CSPEC_BU_DIAG)/=0.OR.LEN_TRIM(CSPEC_DIAG)/=0) GSPLIT=.FALSE. ! Modif. for DIAG IF (CPROGRAM=='DIAG ') GSPLIT=.FALSE. ! Modif. for DIAG ! ! diff --git a/src/MNH/lidar.f90 b/src/MNH/lidar.f90 index be6756c48b54a2549553ce70e6dc6b068d66b30a..e838af284ef178dbc183326e7d8163ecd2e515be 100644 --- a/src/MNH/lidar.f90 +++ b/src/MNH/lidar.f90 @@ -17,7 +17,7 @@ REAL, INTENT(IN) :: PALT ! Altitude of the lidar source REAL, INTENT(IN) :: PWVL ! Wavelength of the lidar source REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Altitude REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! Air density -REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Air temperature (C) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Air temperature REAL, DIMENSION(:,:,:), INTENT(IN) :: PCLDFR ! Cloud fraction REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT ! Moist variables at t REAL, DIMENSION(:,:,:), INTENT(OUT) :: PLIDAROUT ! Lidar output @@ -101,10 +101,11 @@ USE MODD_PARAM_C2R2, ONLY : YALPHAC=>XALPHAC,YNUC=>XNUC, & YALPHAR=>XALPHAR,YNUR=>XNUR USE MODD_PARAM_ICE, ONLY: WSNOW_T=>LSNOW_T USE MODD_RAIN_ICE_DESCR, ONLY : XCCR, WLBEXR=>XLBEXR, XLBR, & - XCCS, XCXS, XLBEXS, XLBS, XNS, & + XCCS, XCXS, XLBEXS, XLBS, WNS=>XNS, WBS=>XBS, & XCCG, XCXG, XLBEXG, XLBG, & XCCH, XCXH, XLBEXH, XLBH, & - WRTMIN=>XRTMIN + WRTMIN=>XRTMIN, & + WLBDAS_MAX=>XLBDAS_MAX,WLBDAS_MIN=>XLBDAS_MIN,WTRANS_MP_GAMMAS=>XTRANS_MP_GAMMAS USE MODD_ICE_C1R3_DESCR, ONLY : XLBEXI, & YRTMIN=>XRTMIN, YCTMIN=>XCTMIN ! @@ -114,8 +115,8 @@ USE MODD_PARAM_LIMA, ONLY : URTMIN=>XRTMIN, UCTMIN=>XCTMIN, & UALPHAI=>XALPHAI,UNUI=>XNUI, & USNOW_T=>LSNOW_T USE MODD_PARAM_LIMA_COLD, ONLY : UCCS=>XCCS, UCXS=>XCXS, ULBEXS=>XLBEXS, & - ULBS=>XLBS, UNS=>XNS, & - XLBDAS_MAX,XLBDAS_MIN, UBS=>XBS + ULBS=>XLBS, UNS=>XNS, UBS=>XBS, & + ULBDAS_MAX=>XLBDAS_MAX,ULBDAS_MIN=>XLBDAS_MIN,UTRANS_MP_GAMMAS=>XTRANS_MP_GAMMAS USE MODD_PARAM_LIMA_MIXED,ONLY : UCCG=>XCCG, UCXG=>XCXG, ULBEXG=>XLBEXG, & ULBG=>XLBG @@ -134,7 +135,7 @@ REAL, INTENT(IN) :: PALT ! Altitude of the lidar source REAL, INTENT(IN) :: PWVL ! Wavelength of the lidar source REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Altitude REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO ! Air density -REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Air temperature (C) +REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Air temperature REAL, DIMENSION(:,:,:), INTENT(IN) :: PCLDFR ! Cloud fraction REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT ! Moist variables at t REAL, DIMENSION(:,:,:), INTENT(OUT) :: PLIDAROUT ! Lidar output @@ -273,7 +274,7 @@ SELECT CASE ( HCLOUD ) ZCXS = XCXS ZLBEXS = XLBEXS ZLBS = XLBS - ZNS = XNS + ZNS = WNS ZCCG = XCCG ZCXG = XCXG ZLBEXG = XLBEXG @@ -530,14 +531,20 @@ SELECT CASE ( HCLOUD ) ! YDSD = 'MONOD' ZIWC = PRHO(JI,JJ,JK)*PRT(JI,JJ,JK,5) - IF ( (HCLOUD=='LIMA' .AND. USNOW_T) .OR. & - (HCLOUD=='ICE3' .AND. WSNOW_T) ) THEN - IF (PT(JI,JJ,JK)>-10.) THEN - ZLBDAS = MAX(MIN(XLBDAS_MAX, 10**(14.554-0.0423*(PT(JI,JJ,JK)+273.15))),XLBDAS_MIN) + IF (HCLOUD=='LIMA' .AND. USNOW_T) THEN + IF (PT(JI,JJ,JK)>263.15) THEN + ZLBDAS = MAX(MIN(ULBDAS_MAX, 10**(14.554-0.0423*PT(JI,JJ,JK))),ULBDAS_MIN)*UTRANS_MP_GAMMAS ELSE - ZLBDAS = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*(PT(JI,JJ,JK)+273.15))),XLBDAS_MIN) + ZLBDAS = MAX(MIN(ULBDAS_MAX, 10**(6.226-0.0106*PT(JI,JJ,JK))),ULBDAS_MIN)*UTRANS_MP_GAMMAS END IF ZCONC=ZNS*ZIWC*ZLBDAS**UBS + ELSE IF (HCLOUD=='ICE3' .AND. WSNOW_T) THEN + IF (PT(JI,JJ,JK)>263.15) THEN + ZLBDAS = MAX(MIN(WLBDAS_MAX, 10**(14.554-0.0423*PT(JI,JJ,JK))),WLBDAS_MIN)*WTRANS_MP_GAMMAS + ELSE + ZLBDAS = MAX(MIN(WLBDAS_MAX, 10**(6.226-0.0106*PT(JI,JJ,JK))),WLBDAS_MIN)*WTRANS_MP_GAMMAS + END IF + ZCONC=ZNS*ZIWC*ZLBDAS**WBS ELSE ZLBDAS = ZLBS*(ZIWC)**ZLBEXS ZCONC = ZCCS*(ZLBDAS)**ZCXS diff --git a/src/MNH/profilern.f90 b/src/MNH/profilern.f90 index 0b8083a90ca0eccec04eb651ff5b41b7b3d77f83..904d5c71a3468f9d40cdc0b7a5fe79b5267b40a5 100644 --- a/src/MNH/profilern.f90 +++ b/src/MNH/profilern.f90 @@ -100,7 +100,9 @@ USE MODD_PARAM_LIMA, ONLY: LSNOW_T_L => LSNOW_T, XRTMIN_L => XRTMIN, XALPHAC_L => XALPHAC, XNUC_L => XNUC USE MODD_PARAM_LIMA_COLD, ONLY: XDI_L => XDI, XLBEXI_L => XLBEXI, XLBI_L => XLBI, XAI_L => XAI, XBI_L => XBI, XC_I_L => XC_I, & XLBEXS_L => XLBEXS, XLBS_L => XLBS, XCCS_L => XCCS, & - XAS_L => XAS, XBS_L => XBS, XCXS_L => XCXS, XLBDAS_MAX, XLBDAS_MIN, XNS_L => XNS + XAS_L => XAS, XBS_L => XBS, XCXS_L => XCXS, & + XLBDAS_MAX_L => XLBDAS_MAX, XLBDAS_MIN_L => XLBDAS_MIN, & + XNS_L => XNS, XTRANS_MP_GAMMAS_L=>XTRANS_MP_GAMMAS USE MODD_PARAM_LIMA_MIXED, ONLY: XDG_L => XDG, XLBEXG_L => XLBEXG, XLBG_L => XLBG, XCCG_L => XCCG, & XAG_L => XAG, XBG_L => XBG, XCXG_L => XCXG, XCG_L => XCG USE MODD_PARAM_LIMA_WARM, ONLY: XLBEXR_L => XLBEXR, XLBR_L => XLBR, XBR_L => XBR, XAR_L => XAR, & @@ -118,7 +120,9 @@ USE MODD_RAIN_ICE_DESCR, ONLY: XALPHAR_I => XALPHAR, XNUR_I => XNUR, XLBEXR_I XLBG_I => XLBG, XCCG_I => XCCG, XAG_I => XAG, XBG_I => XBG, XCXG_I => XCXG, XCG_I => XCG, & XALPHAI_I => XALPHAI, XNUI_I => XNUI, XDI_I => XDI, XLBEXI_I => XLBEXI, & XLBI_I => XLBI, XAI_I => XAI, XBI_I => XBI, XC_I_I => XC_I, & - XNS_I => XNS, XRTMIN_I => XRTMIN, XCONC_LAND, XCONC_SEA + XNS_I => XNS, XRTMIN_I => XRTMIN, XCONC_LAND, XCONC_SEA, & + XLBDAS_MAX_I => XLBDAS_MAX, XLBDAS_MIN_I => XLBDAS_MIN, & + XTRANS_MP_GAMMAS_I => XTRANS_MP_GAMMAS ! USE MODE_FGAU, ONLY: GAULAG USE MODE_FSCATTER, ONLY: BHMIE, QEPSI, QEPSW, MG, MOMG @@ -584,12 +588,18 @@ PROFILER: DO JP = 1, NUMBPROFILER_LOC ZLB=( ZA*ZCC*MOMG(ZALPHA,ZNU,ZB) )**(-ZLBEX) END IF END SELECT - IF ( JLOOP == 5 .AND. ( (CCLOUD=='LIMA'.AND.LSNOW_T_L).OR. & - (CCLOUD=='ICE3'.AND.LSNOW_T_I) ) ) THEN - IF (ZTEMPZ(JK)>-10.) THEN - ZLBDA = MAX(MIN(XLBDAS_MAX, 10**(14.554-0.0423*(ZTEMPZ(JK)+273.15))),XLBDAS_MIN) + IF ( JLOOP == 5 .AND. CCLOUD=='LIMA'.AND.LSNOW_T_L ) THEN + IF (ZTEMPZ(JK)>XTT-10.) THEN + ZLBDA = MAX(MIN(XLBDAS_MAX_L, 10**(14.554-0.0423*ZTEMPZ(JK))),XLBDAS_MIN_L)*XTRANS_MP_GAMMAS_L ELSE - ZLBDA = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*(ZTEMPZ(JK)+273.15))),XLBDAS_MIN) + ZLBDA = MAX(MIN(XLBDAS_MAX_L, 10**(6.226-0.0106*ZTEMPZ(JK))),XLBDAS_MIN_L)*XTRANS_MP_GAMMAS_L + END IF + ZN=ZNS*ZRHODREFZ(JK)*ZRZ(JK,JLOOP)*ZLBDA**ZB + ELSE IF (JLOOP.EQ.5 .AND. (CCLOUD=='ICE3'.AND.LSNOW_T_I) ) THEN + IF (ZTEMPZ(JK)>XTT-10.) THEN + ZLBDA = MAX(MIN(XLBDAS_MAX_I, 10**(14.554-0.0423*ZTEMPZ(JK))),XLBDAS_MIN_I)*XTRANS_MP_GAMMAS_I + ELSE + ZLBDA = MAX(MIN(XLBDAS_MAX_I, 10**(6.226-0.0106*ZTEMPZ(JK))),XLBDAS_MIN_I)*XTRANS_MP_GAMMAS_I END IF ZN=ZNS*ZRHODREFZ(JK)*ZRZ(JK,JLOOP)*ZLBDA**ZB ELSE diff --git a/src/MNH/radar_scattering.f90 b/src/MNH/radar_scattering.f90 index 2aa752e759dc9864de5a4b3cb350e0e26b833a25..6be39ef8d042385fe7c97c358f57857bcf23722e 100644 --- a/src/MNH/radar_scattering.f90 +++ b/src/MNH/radar_scattering.f90 @@ -116,12 +116,14 @@ USE MODD_RAIN_ICE_DESCR, ONLY: XALPHAR_I=>XALPHAR,XNUR_I=>XNUR,XDR_I=>XDR,XLBEXR XLBH_I=>XLBH,XCCH_I=>XCCH,XAH_I=>XAH,XBH_I=>XBH,XCXH_I=>XCXH,XCH_I=>XCH,& XALPHAI_I=>XALPHAI,XNUI_I=>XNUI,XDI_I=>XDI,XLBEXI_I=>XLBEXI,& XLBI_I=>XLBI,XAI_I=>XAI,XBI_I=>XBI,XC_I_I=>XC_I,& - XRTMIN_I=>XRTMIN + XRTMIN_I=>XRTMIN, & + XLBDAS_MAX_I=>XLBDAS_MAX,XLBDAS_MIN_I=>XLBDAS_MIN,XTRANS_MP_GAMMAS_I=>XTRANS_MP_GAMMAS !!LIMA USE MODD_PARAM_LIMA_WARM, ONLY: XDR_L=>XDR,XLBEXR_L=>XLBEXR,XLBR_L=>XLBR,XBR_L=>XBR,XCR_L=>XCR USE MODD_PARAM_LIMA_COLD, ONLY: XDI_L=>XDI,XLBEXI_L=>XLBEXI,XLBI_L=>XLBI,XAI_L=>XAI,XBI_L=>XBI,XC_I_L=>XC_I,& XDS_L=>XDS,XLBEXS_L=>XLBEXS,XLBS_L=>XLBS,XCCS_L=>XCCS,XNS_L=>XNS,XAS_L=>XAS,XBS_L=>XBS,& - XCXS_L=>XCXS,XCS_L=>XCS,XLBDAS_MIN,XLBDAS_MAX + XCXS_L=>XCXS,XCS_L=>XCS,& + XLBDAS_MAX_L=>XLBDAS_MAX,XLBDAS_MIN_L=>XLBDAS_MIN,XTRANS_MP_GAMMAS_L=>XTRANS_MP_GAMMAS USE MODD_PARAM_LIMA_MIXED, ONLY:XDG_L=>XDG,XLBEXG_L=>XLBEXG,XLBG_L=>XLBG,XCCG_L=>XCCG,XAG_L=>XAG,XBG_L=>XBG,XCXG_L=>XCXG,XCG_L=>XCG USE MODD_PARAM_LIMA, ONLY: XALPHAR_L=>XALPHAR,XNUR_L=>XNUR,XALPHAS_L=>XALPHAS,XNUS_L=>XNUS,& @@ -1287,11 +1289,22 @@ DO JI=1,INBRAD ZDMELT_FACT=6.*ZAS/(XPI*.92*XRHOLW) ZEXP=2.*ZBS !XBS = 1.9 in ini_radar.f90 (bj tab 2.1 p24) !dans ini_rain_ice.f90 : - IF ( (GLIMA .AND. LSNOW_T_L) .OR. (.NOT.GLIMA .AND. LSNOW_T_I) ) THEN - IF (PT_RAY(JI,JEL,JAZ,JL,JH,JV)>-10.) THEN - ZLBDA = MAX(MIN(XLBDAS_MAX, 10**(14.554-0.0423*(PT_RAY(JI,JEL,JAZ,JL,JH,JV)+273.15))),XLBDAS_MIN) + IF (GLIMA .AND. LSNOW_T_L) THEN + IF (PT_RAY(JI,JEL,JAZ,JL,JH,JV)>263.15) THEN + ZLBDA = MAX(MIN(XLBDAS_MAX_L, 10**(14.554-0.0423*PT_RAY(JI,JEL,JAZ,JL,JH,JV))),XLBDAS_MIN_L) & + *XTRANS_MP_GAMMAS_L ELSE - ZLBDA = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*(PT_RAY(JI,JEL,JAZ,JL,JH,JV)+273.15))),XLBDAS_MIN) + ZLBDA = MAX(MIN(XLBDAS_MAX_L, 10**(6.226-0.0106*PT_RAY(JI,JEL,JAZ,JL,JH,JV))),XLBDAS_MIN_L) & + *XTRANS_MP_GAMMAS_L + END IF + ZN=ZNS*ZM*ZLBDA**ZBS + ELSE IF (.NOT.GLIMA .AND. LSNOW_T_I) THEN + IF (PT_RAY(JI,JEL,JAZ,JL,JH,JV)>263.15) THEN + ZLBDA = MAX(MIN(XLBDAS_MAX_I, 10**(14.554-0.0423*PT_RAY(JI,JEL,JAZ,JL,JH,JV))),XLBDAS_MIN_I) & + *XTRANS_MP_GAMMAS_I + ELSE + ZLBDA = MAX(MIN(XLBDAS_MAX_I, 10**(6.226-0.0106*PT_RAY(JI,JEL,JAZ,JL,JH,JV))),XLBDAS_MIN_I) & + *XTRANS_MP_GAMMAS_I END IF ZN=ZNS*ZM*ZLBDA**ZBS ELSE diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90 index 0f2ceab346b4416ee5aa1546b9a018094fec621c..b00e4fff99a132b790f2ed8738286b87e05363e9 100644 --- a/src/MNH/read_exsegn.f90 +++ b/src/MNH/read_exsegn.f90 @@ -301,7 +301,7 @@ END MODULE MODI_READ_EXSEG_n ! P. Wautelet 09/03/2021: simplify allocation of scalar variable names ! P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv ! P. Wautelet 10/03/2021: move scalar variable name initializations to ini_nsv -! R. Honnert 23/04/2021: add ADAP mixing length and delete HRIO and BOUT from CMF_UPDRAFT +! R. Honnert 23/04/2021: add HM21 mixing length and delete HRIO and BOUT from CMF_UPDRAFT ! S. Riette 11/05/2021 HighLow cloud ! A. Costes 12/2021: add Blaze fire model ! P. Wautelet 27/04/2022: add namelist for profilers @@ -916,7 +916,7 @@ CALL TEST_NAM_VAR(ILUOUT,'CLBCY(1)',CLBCY(1),'CYCL','WALL','OPEN') CALL TEST_NAM_VAR(ILUOUT,'CLBCY(2)',CLBCY(2),'CYCL','WALL','OPEN') ! CALL TEST_NAM_VAR(ILUOUT,'CTURBDIM',CTURBDIM,'1DIM','3DIM') -CALL TEST_NAM_VAR(ILUOUT,'CTURBLEN',CTURBLEN,'DELT','BL89','RM17','DEAR','BLKR','ADAP') +CALL TEST_NAM_VAR(ILUOUT,'CTURBLEN',CTURBLEN,'DELT','BL89','RM17','DEAR','BLKR','HM21') CALL TEST_NAM_VAR(ILUOUT,'CTOM',CTOM,'NONE','TM06') CALL TEST_NAM_VAR(ILUOUT,'CSUBG_AUCV',CSUBG_AUCV,'NONE','CLFR','SIGM','PDF','ADJU') CALL TEST_NAM_VAR(ILUOUT,'CSUBG_AUCV_RI',CSUBG_AUCV_RI,'NONE','CLFR','ADJU') @@ -1670,7 +1670,7 @@ ELSE END IF END IF ! -IF(CTURBLEN=='RM17' .OR. CTURBLEN=='ADAP') THEN +IF(CTURBLEN=='RM17' .OR. CTURBLEN=='HM21') THEN XCEDIS=0.34 ELSE XCEDIS=0.84 diff --git a/src/PHYEX/micro/ini_lima_cold_mixed.f90 b/src/PHYEX/micro/ini_lima_cold_mixed.f90 index e8af15d58d1d3803bc3d0a555402fb5fe8e3eaf1..2e3d956a46102eb75e5707369aed815f7f9bb798 100644 --- a/src/PHYEX/micro/ini_lima_cold_mixed.f90 +++ b/src/PHYEX/micro/ini_lima_cold_mixed.f90 @@ -343,8 +343,8 @@ IF (GFLAG) THEN WRITE(UNIT=ILUOUT0,FMT='(" XLBEXH =",E13.6," XLBH =",E13.6)') XLBEXH,XLBH END IF ! -XLBDAS_MAX = 500000. ! used only before transforming lambda for non MP PSD -XLBDAS_MIN = 1000. *1.E-10 +XLBDAS_MAX = 1.E7 ! (eq to r~1E-7kg/kg) (for non MP PSD, use conversion XTRANS_MP_GAMMAS) +XLBDAS_MIN = 1. ! (eq to r~0.18kg/kg) (for non MP PSD, use conversion XTRANS_MP_GAMMAS) XLBDAG_MAX = 100000.0 ! ZCONC_MAX = 1.E6 ! Maximal concentration for falling particules set to 1 per cc diff --git a/src/PHYEX/micro/ini_rain_ice.f90 b/src/PHYEX/micro/ini_rain_ice.f90 index 38f8fed026c66cf7102942d0cb5d9ed0d25fc317..2f3b2b1c4aee01a9703c23f5351d0c27835246ec 100644 --- a/src/PHYEX/micro/ini_rain_ice.f90 +++ b/src/PHYEX/micro/ini_rain_ice.f90 @@ -442,11 +442,11 @@ XLBH = ( XAH*XCCH*MOMG(XALPHAH,XNUH,XBH) )**(-XLBEXH) XLBDAS_MAX = 100000.0 ! ZCONC_MAX = 1.E6 ! Maximal concentration for falling particules set to 1 per cc -#if defined(REPRO48) || defined(REPRO55) IF(XCCS>0. .AND. XCXS>0. )XLBDAS_MAX = ( ZCONC_MAX/XCCS )**(1./XCXS) +#if defined(REPRO48) || defined(REPRO55) #else -XLBDAS_MAX = 1.E6 -XLBDAS_MIN = 1000. +IF (LSNOW_T) XLBDAS_MAX = 1.E6 +XLBDAS_MIN = 1.E-10 #endif ! XCONC_SEA=1E8 ! 100/cm3 diff --git a/src/PHYEX/micro/lima.f90 b/src/PHYEX/micro/lima.f90 index 9859c4bd02f194d19caae1e7e1cbd7c522344a7c..0ed11fe4885abca003bda12c21d85a861f293d43 100644 --- a/src/PHYEX/micro/lima.f90 +++ b/src/PHYEX/micro/lima.f90 @@ -419,6 +419,8 @@ ZHOMFT(:,:,:) = 0. ZHOMFS(:,:,:) = 0. if ( lbu_enable ) then + Z_RR_CVRC(:,:,:) = 0. + Z_CR_CVRC(:,:,:) = 0. allocate( ZTOT_CR_BRKU (size( ptht, 1), size( ptht, 2), size( ptht, 3) ) ); ZTOT_CR_BRKU(:,:,:) = 0. allocate( ZTOT_TH_HONR (size( ptht, 1), size( ptht, 2), size( ptht, 3) ) ); ZTOT_TH_HONR(:,:,:) = 0. allocate( ZTOT_RR_HONR (size( ptht, 1), size( ptht, 2), size( ptht, 3) ) ); ZTOT_RR_HONR(:,:,:) = 0. @@ -679,6 +681,13 @@ ZT(:,:,:) = ZTHT(:,:,:) * ZEXN(:,:,:) ! ------------- ! ! +PINPRC=0. +PINDEP=0. +PINPRR=0. +PINPRI=0. +PINPRS=0. +PINPRG=0. +PINPRH=0. if ( lbu_enable ) then if ( lbudget_th ) call Budget_store_init( tbudgets(NBUDGET_TH), 'SEDI', zths(:, :, :) * prhodj(:, :, :) ) if ( lbudget_rc .and. lwarm .and. lsedc ) call Budget_store_init( tbudgets(NBUDGET_RC), 'SEDI', zrcs(:, :, :) * prhodj(:, :, :) ) @@ -767,8 +776,6 @@ IF (LWARM .AND. LDEPOC) THEN END IF ! ! -!!$Z_RR_CVRC(:,:,:) = 0. -!!$Z_CR_CVRC(:,:,:) = 0. !!$IF (LWARM .AND. LRAIN) THEN !!$ if( lbu_enable ) then !!$ if ( lbudget_rc ) call Budget_store_init( tbudgets(NBUDGET_RC), 'R2C1', zrcs(:, :, :) * prhodj(:, :, :) ) diff --git a/src/PHYEX/micro/lima_collisional_ice_breakup.f90 b/src/PHYEX/micro/lima_collisional_ice_breakup.f90 index 3c22bf960b56fca62f3387524493a3a62438cdf8..a6848d14345bcdf23a70338347f5b8ab66940e7b 100644 --- a/src/PHYEX/micro/lima_collisional_ice_breakup.f90 +++ b/src/PHYEX/micro/lima_collisional_ice_breakup.f90 @@ -128,7 +128,8 @@ REAL :: ZFACT1_XNDEBRIS, ZFACT2_XNDEBRIS ! !------------------------------------------------------------------------------- -GCIBU(:) = LCIBU .AND. (PRST(:)>XRTMIN(5)) .AND. (PRGT(:)>XRTMIN(6)) .AND. LDCOMPUTE(:) +GCIBU(:) = LCIBU .AND. PRST(:)>XRTMIN(5) .AND. PRGT(:)>XRTMIN(6) .AND. & + LDCOMPUTE(:) .AND. PCST(:)>XCTMIN(5) .AND. PCGT(:)>XCTMIN(6) ICIBU = COUNT( GCIBU(:) ) ! P_RI_CIBU(:)=0. diff --git a/src/PHYEX/micro/lima_conversion_melting_snow.f90 b/src/PHYEX/micro/lima_conversion_melting_snow.f90 index 454df3eba33b2ef1b975c33c3de003a0c6ac9c64..ef46c794f37aee347aa52ea5bf8c338502b53801 100644 --- a/src/PHYEX/micro/lima_conversion_melting_snow.f90 +++ b/src/PHYEX/micro/lima_conversion_melting_snow.f90 @@ -64,7 +64,7 @@ END MODULE MODI_LIMA_CONVERSION_MELTING_SNOW ! ------------ ! USE MODD_CST, ONLY : XTT, XMV, XMD, XLVTT, XCPV, XCL, XESTT, XRV -USE MODD_PARAM_LIMA, ONLY : XRTMIN, XNUS, XALPHAS +USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, XNUS, XALPHAS USE MODD_PARAM_LIMA_MIXED, ONLY : XFSCVMG USE MODD_PARAM_LIMA_COLD, ONLY : X0DEPS, XEX0DEPS, X1DEPS, XEX1DEPS, XBS, XFVELOS ! @@ -104,7 +104,7 @@ P_RS_CMEL(:)=0. P_CS_CMEL(:)=0. ! ZW(:) = 0.0 -WHERE( (PRST(:)>XRTMIN(5)) .AND. (PT(:)>XTT) .AND. LDCOMPUTE(:) ) +WHERE( PRST(:)>XRTMIN(5) .AND. PCST(:)>XCTMIN(5) .AND. PT(:)>XTT .AND. LDCOMPUTE(:) ) ZW(:) = PRVT(:)*PPRES(:)/((XMV/XMD)+PRVT(:)) ! Vapor pressure ZW(:) = PKA(:)*(XTT-PT(:)) + & ( PDV(:)*(XLVTT + ( XCPV - XCL ) * ( PT(:) - XTT )) & diff --git a/src/PHYEX/micro/lima_droplets_accretion.f90 b/src/PHYEX/micro/lima_droplets_accretion.f90 index c7a4232fdaf6fc57a7051f15d3c2c6e58afea091..d183953cd21da3563c87d7fc851af9bd76d10539 100644 --- a/src/PHYEX/micro/lima_droplets_accretion.f90 +++ b/src/PHYEX/micro/lima_droplets_accretion.f90 @@ -116,6 +116,7 @@ ZW4(:) = 0.0 IF ( LKHKO ) THEN ! GACCR(:) = PRRT(:)>XRTMIN(3) .AND. & + PCRT(:)>XCTMIN(3) .AND. & PRCT(:)>XRTMIN(2) .AND. & PCCT(:)>XCTMIN(2) ! @@ -130,8 +131,8 @@ 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) + GACCR(:) = PRRT(:)>XRTMIN(3) .AND. PCRT(:)>XCTMIN(3) .AND. & + PRCT(:)>XRTMIN(2) .AND. PCCT(:)>XCTMIN(2) WHERE ( GACCR(:) ) P_RC_ACCR(:) = - XFCACCR * PRCT(:) & * PLBDR(:)**XEXCACCR & diff --git a/src/PHYEX/micro/lima_droplets_hom_freezing.f90 b/src/PHYEX/micro/lima_droplets_hom_freezing.f90 index 58e12b5f14f1739266ea459c622a3b40a75b81a9..b33d7a3501fdf56c3925db691f50a11af30b2e5f 100644 --- a/src/PHYEX/micro/lima_droplets_hom_freezing.f90 +++ b/src/PHYEX/micro/lima_droplets_hom_freezing.f90 @@ -98,7 +98,7 @@ P_TH_HONC(:) = 0. P_RC_HONC(:) = 0. P_CC_HONC(:) = 0. ! -WHERE ( (PT(:)<XTT-35.0) .AND. (PCCT(:)>XCTMIN(2)) .AND. (PRCT(:)>XRTMIN(2)) ) +WHERE ( PT(:)<XTT-35.0 .AND. PCCT(:)>XCTMIN(2) .AND. PRCT(:)>XRTMIN(2) ) ZTCELSIUS(:) = PT(:)-XTT ! T [°C] ! ZZW(:) = 0.0 diff --git a/src/PHYEX/micro/lima_droplets_riming_snow.f90 b/src/PHYEX/micro/lima_droplets_riming_snow.f90 index b9d76536589f3b8752802dc34b3efcc8eb41433e..cd46682388de1ab48cd16f98169998029eb2dca6 100644 --- a/src/PHYEX/micro/lima_droplets_riming_snow.f90 +++ b/src/PHYEX/micro/lima_droplets_riming_snow.f90 @@ -76,7 +76,7 @@ END MODULE MODI_LIMA_DROPLETS_RIMING_SNOW ! ------------ ! USE MODD_CST, ONLY : XTT -USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCEXVT, XNUS, XALPHAS, LMURAKAMI +USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, XCEXVT, XNUS, XALPHAS, LMURAKAMI USE MODD_PARAM_LIMA_MIXED, ONLY : NGAMINC, XRIMINTP1, XRIMINTP2, XGAMINC_RIM1, XGAMINC_RIM2, XGAMINC_RIM4, & XCRIMSS, XEXCRIMSS, XSRIMCG, XEXSRIMCG, XSRIMCG2, XSRIMCG3, XEXSRIMCG2, & XHMLINTP1, XHMLINTP2, XGAMINC_HMC, XHM_FACTS, XHMTMIN, XHMTMAX @@ -129,7 +129,8 @@ DO JI = 1, SIZE(PRCT) !* Cloud droplet riming of the aggregates ! -------------------------------------- ! - IF ( PRCT(JI)>XRTMIN(2) .AND. PRST(JI)>XRTMIN(5) .AND. PT(JI)<XTT .AND. LDCOMPUTE(JI) ) THEN + IF ( PRCT(JI)>XRTMIN(2) .AND. PRST(JI)>XRTMIN(5) .AND. PT(JI)<XTT .AND. & + PCCT(JI)>XCTMIN(2) .AND. PCST(JI)>XCTMIN(5) .AND. LDCOMPUTE(JI) ) THEN ! ZVEC1(JI) = PLBDS(JI) ZVEC1W(JI)= ( XFVELOS**XALPHAS + PLBDS(JI)**XALPHAS ) ** (1./XALPHAS) ! modified equivalent lambda @@ -200,8 +201,8 @@ DO JI = 1, SIZE(PRCT) !* Hallett-Mossop ice production (HMS) ! ----------------------------------- ! - IF ( PT(JI)<XHMTMAX .AND. PT(JI)>XHMTMIN .AND. & - PRST(JI)>XRTMIN(5) .AND. PRCT(JI)>XRTMIN(2) .AND. LDCOMPUTE(JI) ) THEN + IF ( PRST(JI)>XRTMIN(5) .AND. PRCT(JI)>XRTMIN(2) .AND. PT(JI)<XHMTMAX .AND. PT(JI)>XHMTMIN .AND. & + PCST(JI)>XCTMIN(5) .AND. PCCT(JI)>XCTMIN(2) .AND. LDCOMPUTE(JI) ) THEN ! ZVEC1(JI) = PLBDC(JI) ZVEC2(JI) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001, & diff --git a/src/PHYEX/micro/lima_drops_self_collection.f90 b/src/PHYEX/micro/lima_drops_self_collection.f90 index 042cde0842bf74116c47e156ce7d85ed03d5522a..3f064dfcdc0f19a5124562e4d8a5658f2a31a7c5 100644 --- a/src/PHYEX/micro/lima_drops_self_collection.f90 +++ b/src/PHYEX/micro/lima_drops_self_collection.f90 @@ -105,12 +105,12 @@ ZW1(:) = 0.0 ZW2(:) = 0.0 ZW3(:) = 0.0 ! -WHERE (PCRT(:)>XCTMIN(3) .AND. (ZW4(:)>1.E-4) .AND. LDCOMPUTE(:)) ! analytical integration +WHERE ( PCRT(:)>XCTMIN(3) .AND. ZW4(:)>1.E-4 .AND. LDCOMPUTE(:)) ! analytical integration ZW1(:) = XSCBU2 * PCRT(:)**2 / PLBDR3(:) ! D>100 10-6 m ZW3(:) = ZW1(:)*ZSCBU(:) END WHERE ! -WHERE (PCRT(:)>XCTMIN(3) .AND. (ZW4(:)<=1.E-4) .AND. LDCOMPUTE(:)) +WHERE ( PCRT(:)>XCTMIN(3) .AND. ZW4(:)<=1.E-4 .AND. LDCOMPUTE(:)) ZW2(:) = XSCBU3 *(PCRT(:) / PLBDR3(:))**2 ! D<100 10-6 m ZW3(:) = ZW2(:) END WHERE diff --git a/src/PHYEX/micro/lima_graupel.f90 b/src/PHYEX/micro/lima_graupel.f90 index 00ad1646afd9a083366e53b0bcab3406a243666e..8c96d2e0957a34003e2c4ff6ff5bf10b7bebcda1 100644 --- a/src/PHYEX/micro/lima_graupel.f90 +++ b/src/PHYEX/micro/lima_graupel.f90 @@ -146,7 +146,7 @@ END MODULE MODI_LIMA_GRAUPEL ! ------------ ! USE MODD_CST, ONLY : XTT, XMD, XMV, XRD, XRV, XLVTT, XLMTT, XESTT, XCL, XCI, XCPV -USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCEXVT, LHAIL +USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, XCEXVT, LHAIL USE MODD_PARAM_LIMA_MIXED, ONLY : XCXG, XDG, X0DEPG, X1DEPG, NGAMINC, & XFCDRYG, XFIDRYG, XCOLIG, XCOLSG, XCOLEXIG, XCOLEXSG, & XFSDRYG, XLBSDRYG1, XLBSDRYG2, XLBSDRYG3, XKER_SDRYG, & @@ -323,7 +323,7 @@ END WHERE !* 1.b Collection of rs in the dry mode ! ------------------------------------ ! -GDRY(:) = PRST(:)>XRTMIN(5) .AND. PRGT(:)>XRTMIN(6) .AND. LDCOMPUTE(:) +GDRY(:) = PRST(:)>XRTMIN(5) .AND. PCST(:)>XCTMIN(5) .AND. PRGT(:)>XRTMIN(6) .AND. PCGT(:)>XCTMIN(6) .AND. LDCOMPUTE(:) ! WHERE( GDRY ) ! @@ -389,7 +389,7 @@ END WHERE !* 1.c Collection of rr in the dry mode ! ------------------------------------- ! -GDRY(:) = PRRT(:)>XRTMIN(3) .AND. PRGT(:)>XRTMIN(6) .AND. LDCOMPUTE(:) +GDRY(:) = PRRT(:)>XRTMIN(3) .AND. PCRT(:)>XCTMIN(3) .AND. PRGT(:)>XRTMIN(6) .AND. PCGT(:)>XCTMIN(6) .AND. LDCOMPUTE(:) ! WHERE( GDRY ) ! @@ -462,7 +462,7 @@ ZRDRYG(:) = ZZW1(:) + ZZW2(:) + ZZW3(:) + ZZW4(:) ! ------------------------------ ! ZZW(:) = 0.0 -WHERE( PRGT(:)>XRTMIN(6) .AND. LDCOMPUTE(:) ) +WHERE( PRGT(:)>XRTMIN(6) .AND. PCGT(:)>XCTMIN(6) .AND. LDCOMPUTE(:) ) ZZW5(:) = ZZW2(:) / (XCOLIG*EXP(XCOLEXIG*(PT(:)-XTT)) ) ! RIWETG ZZW6(:) = ZZW3(:) / (XCOLSG*EXP(XCOLEXSG*(PT(:)-XTT)) ) ! RSWETG ZZW6N(:)= ZZW3N(:)/ (XCOLSG*EXP(XCOLEXSG*(PT(:)-XTT)) ) ! NSWETG @@ -488,7 +488,7 @@ END WHERE ZZW(:) = 0.0 NHAIL = 0. IF (LHAIL) NHAIL = 1. -WHERE( LDCOMPUTE(:) .AND. PRGT(:)>XRTMIN(6) .AND. PT(:)<XTT .AND. & +WHERE( LDCOMPUTE(:) .AND. PRGT(:)>XRTMIN(6) .AND. PCGT(:)>XCTMIN(6) .AND. PT(:)<XTT .AND. & (ZRDRYG(:)-ZZW2(:)-ZZW3(:))>=(ZRWETG(:)-ZZW5(:)-ZZW6(:)) .AND. ZRWETG(:)-ZZW5(:)-ZZW6(:)>0.0 ) ! ! Mass of rain and cloud droplets frozen by graupel in wet mode : RCWETG + RRWETG = RWETG - RIWETG - RSWETG @@ -517,7 +517,7 @@ END WHERE ! 1.g Dry mode ! ------------ ! -WHERE( LDCOMPUTE(:) .AND. PRGT(:)>XRTMIN(6) .AND. PT(:)<XTT .AND. & +WHERE( LDCOMPUTE(:) .AND. PRGT(:)>XRTMIN(6) .AND. PCGT(:)>XCTMIN(6) .AND. PT(:)<XTT .AND. & (ZRDRYG(:)-ZZW2(:)-ZZW3(:))<(ZRWETG(:)-ZZW5(:)-ZZW6(:)) .AND. ZRDRYG(:)>0.0 ) ! P_RC_DRYG(:) = - ZZW1(:) @@ -540,7 +540,7 @@ END WHERE ! BVIE test ZRDRYG<ZZW ????????????????????????? !GDRY(:) = (PT(:)<XHMTMAX) .AND. (PT(:)>XHMTMIN) .AND. (ZRDRYG(:)<ZZW(:))& GDRY(:) = PT(:)<XHMTMAX .AND. PT(:)>XHMTMIN .AND. PRGT(:)>XRTMIN(6) .AND. PRCT(:)>XRTMIN(2) .AND. LDCOMPUTE(:) .AND. & - (ZRDRYG(:)-ZZW2(:)-ZZW3(:))<(ZRWETG(:)-ZZW5(:)-ZZW6(:)) + PCGT(:)>XCTMIN(6) .AND. PCCT(:)>XCTMIN(2) .AND. (ZRDRYG(:)-ZZW2(:)-ZZW3(:))<(ZRWETG(:)-ZZW5(:)-ZZW6(:)) ZZX(:)=9999. ZVEC1(:)=0. @@ -571,7 +571,7 @@ END WHERE ! ------------------- ! ZZX(:) = 0.0 -WHERE( (PRGT(:)>XRTMIN(6)) .AND. (PT(:)>XTT) .AND. LDCOMPUTE(:) ) +WHERE( PRGT(:)>XRTMIN(6) .AND. PCGT(:)>XCTMIN(6) .AND. PT(:)>XTT .AND. LDCOMPUTE(:) ) ZZX(:) = PRVT(:)*PPRES(:)/((XMV/XMD)+PRVT(:)) ! Vapor pressure ZZX(:) = PKA(:)*(XTT-PT(:)) + & ( PDV(:)*(XLVTT + ( XCPV - XCL ) * ( PT(:) - XTT )) & diff --git a/src/PHYEX/micro/lima_rain_accr_snow.f90 b/src/PHYEX/micro/lima_rain_accr_snow.f90 index 7be5e1b4c13a52e8649a1bacf8f686c0f959700a..a63ac24a4b9c776d316c18074682e61dddff53ed 100644 --- a/src/PHYEX/micro/lima_rain_accr_snow.f90 +++ b/src/PHYEX/micro/lima_rain_accr_snow.f90 @@ -70,7 +70,7 @@ END MODULE MODI_LIMA_RAIN_ACCR_SNOW ! ------------ ! USE MODD_CST, ONLY : XTT -USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCEXVT +USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, XCEXVT USE MODD_PARAM_LIMA_WARM, ONLY : XBR USE MODD_PARAM_LIMA_COLD, ONLY : XBS, XTRANS_MP_GAMMAS USE MODD_PARAM_LIMA_MIXED, ONLY : NACCLBDAS, XACCINTP1S, XACCINTP2S, & @@ -134,6 +134,12 @@ ZZW3(:) = 0. ZZW4(:) = 0. ZZW5(:) = 0. ! +ZZWC1(:) = 0. +ZZWC2(:) = 0. +ZZWC3(:) = 0. +ZZWC4(:) = 0. +ZZWC5(:) = 0. +! IVEC1(:) = 0 IVEC2(:) = 0 ZVEC1(:) = 0. @@ -145,7 +151,8 @@ ZVEC3(:) = 0. ! ! GACC(:) = .False. -GACC(:) = (PRRT(:)>XRTMIN(3)) .AND. (PRST(:)>XRTMIN(5)) .AND. (PT(:)<XTT) .AND. LDCOMPUTE(:) +GACC(:) = (PRRT(:)>XRTMIN(3)) .AND. (PRST(:)>XRTMIN(5)) .AND. (PT(:)<XTT) .AND. LDCOMPUTE(:) .AND. & + (PCRT(:)>XCTMIN(3)) .AND. (PCST(:)>XCTMIN(5)) ! WHERE( GACC ) ! @@ -288,7 +295,7 @@ WHERE( GACC ) XLBSACCR2/( PLBDR(:) * PLBDS(:) ) + & XLBSACCR3/( PLBDS(:)**2 ) ) ! - ZZWC5(:)= XFNSACCRG * ZZW3(:) * PCRT(:) * & ! RSACCRG + ZZWC5(:)= XFNSACCRG * ZZWC3(:) * PCRT(:) * & ! RSACCRG PCST(:) * PRHODREF(:)**(1-XCEXVT) * & ( XLBNSACCR1/( PLBDR(:)**2 ) + & XLBNSACCR2/( PLBDR(:) * PLBDS(:) ) + & @@ -303,7 +310,6 @@ WHERE( GACC ) ! END WHERE ! -! !------------------------------------------------------------------------------- ! CONTAINS diff --git a/src/PHYEX/micro/lima_rain_freezing.f90 b/src/PHYEX/micro/lima_rain_freezing.f90 index a5a9225bc78a8382920f419595afa8b0c4b87b65..a6c9504a1cef696a5003a099c293a41060ed4fa7 100644 --- a/src/PHYEX/micro/lima_rain_freezing.f90 +++ b/src/PHYEX/micro/lima_rain_freezing.f90 @@ -65,7 +65,7 @@ END MODULE MODI_LIMA_RAIN_FREEZING ! ------------ ! USE MODD_CST, ONLY : XTT -USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCEXVT +USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, XCEXVT USE MODD_PARAM_LIMA_MIXED, ONLY : XICFRR, XEXICFRR, XRCFRI, XEXRCFRI ! IMPLICIT NONE @@ -111,7 +111,8 @@ P_CI_CFRZ(:)=0. ZW1(:)=0. ZW2(:)=0. ! -WHERE( (PRIT(:)>XRTMIN(4)) .AND. (PRRT(:)>XRTMIN(3)) .AND. (PT(:)<XTT) .AND. LDCOMPUTE(:) ) +WHERE( PRIT(:)>XRTMIN(4) .AND. PRRT(:)>XRTMIN(3) .AND. PT(:)<XTT .AND. & + PCIT(:)>XCTMIN(4) .AND. PCRT(:)>XCTMIN(3) .AND. LDCOMPUTE(:) ) ! ZW1(:) = XICFRR * PRIT(:) * PCRT(:) & ! RICFRRG * PLBDR(:)**XEXICFRR & diff --git a/src/PHYEX/micro/radar_rain_ice.f90 b/src/PHYEX/micro/radar_rain_ice.f90 index c8ff0e2d5852f8aa36322e6ea2ae6718cf2ee9be..cf97a981ade422f5d257a46c93a48cf234056ce1 100644 --- a/src/PHYEX/micro/radar_rain_ice.f90 +++ b/src/PHYEX/micro/radar_rain_ice.f90 @@ -112,13 +112,14 @@ USE MODD_RAIN_ICE_DESCR, ONLY: XALPHAR_I=>XALPHAR,XNUR_I=>XNUR,XLBEXR_I=>XLBEXR, XLBI_I=>XLBI,XAI_I=>XAI,XBI_I=>XBI,XC_I_I=>XC_I,XCS_I=>XCS,XDS_I=>XDS,& XRTMIN_I=>XRTMIN,XCONC_LAND,XCONC_SEA,XCR_I=>XCR,XDR_I=>XDR,& XAH_I=>XAH,XLBH_I=>XLBH,XLBEXH_I=>XLBEXH,XCCH_I=>XCCH,& - XALPHAH_I=>XALPHAH,XNUH_I=>XNUH,XCXH_I=>XCXH,XDH_I=>XDH,XCH_I=>XCH,XBH_I=>XBH + XALPHAH_I=>XALPHAH,XNUH_I=>XNUH,XCXH_I=>XCXH,XDH_I=>XDH,XCH_I=>XCH,XBH_I=>XBH, & + XLBDAS_MAX_I=>XLBDAS_MAX,XLBDAS_MIN_I=>XLBDAS_MIN,XTRANS_MP_GAMMAS_I=>XTRANS_MP_GAMMAS USE MODD_PARAM_LIMA_WARM, ONLY: XLBEXR_L=>XLBEXR,XLBR_L=>XLBR,XBR_L=>XBR,XAR_L=>XAR,& XBC_L=>XBC,XAC_L=>XAC,XCR_L=>XCR,XDR_L=>XDR USE MODD_PARAM_LIMA_COLD, ONLY: XDI_L=>XDI,XLBEXI_L=>XLBEXI,XLBI_L=>XLBI,XAI_L=>XAI,XBI_L=>XBI,XC_I_L=>XC_I,& XLBEXS_L=>XLBEXS,XLBS_L=>XLBS,XCCS_L=>XCCS,XNS_L=>XNS,& XAS_L=>XAS,XBS_L=>XBS,XCXS_L=>XCXS,XCS_L=>XCS,XDS_L=>XDS,& - XLBDAS_MIN,XLBDAS_MAX + XLBDAS_MAX_L=>XLBDAS_MAX,XLBDAS_MIN_L=>XLBDAS_MIN,XTRANS_MP_GAMMAS_L=>XTRANS_MP_GAMMAS USE MODD_PARAM_LIMA_MIXED, ONLY:XDG_L=>XDG,XLBEXG_L=>XLBEXG,XLBG_L=>XLBG,XCCG_L=>XCCG,& XAG_L=>XAG,XBG_L=>XBG,XCXG_L=>XCXG,XCG_L=>XCG,& @@ -335,41 +336,43 @@ END IF ! IF (SIZE(PRT,4) >= 5) THEN IF ( (CCLOUD=='LIMA' .AND. LSNOW_T_L) ) THEN - ZDMELT_FACT = ( (6.0*XAS_L)/(XPI*XRHOLW) )**(2.0) - ZEXP = 2.0*XBS_L - WHERE(PTEMP(:,:,:)>-10. .AND. PRT(:,:,:,5).GT.XRTMIN_L(5)) - ZLBDA(:,:,:) = MAX(MIN(XLBDAS_MAX, 10**(14.554-0.0423*(PTEMP(:,:,:)+273.15))),XLBDAS_MIN) - END WHERE - WHERE(PTEMP(:,:,:)<=-10 .AND. PRT(:,:,:,5).GT.XRTMIN_L(5)) - ZLBDA(:,:,:) = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*(PTEMP(:,:,:)+273.15))),XLBDAS_MIN) - END WHERE - IF (NMOM_S.GE.2) THEN - ZN(:,:,:)=PCST(:,:,:) - ELSE - ZN(:,:,:)=XNS_L*PRHODREF(:,:,:)*PRT(:,:,:,5)*ZLBDA(:,:,:)**XBS_L - END IF - WHERE( PRT(:,:,:,5).GT.XRTMIN_L(5) ) - ZW(:,:,:) = ZEQICE*ZDMELT_FACT & - *1.E18*ZN(:,:,:)*(ZLBDA(:,:,:)**(-ZEXP))*MOMG(XALPHAS_L,XNUS_L,ZEXP) - PVDOP(:,:,:) = PVDOP(:,:,:)+ZEQICE*ZDMELT_FACT*MOMG(XALPHAS_L,XNUS_L,ZEXP+XDS_L) & - *1.E18*ZN(:,:,:)*XCS_L*(ZLBDA(:,:,:)**(-ZEXP-XDS_L)) - PRARE(:,:,:) = PRARE(:,:,:) + ZW(:,:,:) - END WHERE + ZDMELT_FACT = ( (6.0*XAS_L)/(XPI*XRHOLW) )**(2.0) + ZEXP = 2.0*XBS_L + WHERE(PTEMP(:,:,:)>263.15 .AND. PRT(:,:,:,5).GT.XRTMIN_L(5)) + ZLBDA(:,:,:) = MAX(MIN(XLBDAS_MAX_L, 10**(14.554-0.0423*PTEMP(:,:,:))),XLBDAS_MIN_L)*XTRANS_MP_GAMMAS_L + END WHERE + WHERE(PTEMP(:,:,:)<=263.15 .AND. PRT(:,:,:,5).GT.XRTMIN_L(5)) + ZLBDA(:,:,:) = MAX(MIN(XLBDAS_MAX_L, 10**(6.226 -0.0106*PTEMP(:,:,:))),XLBDAS_MIN_L)*XTRANS_MP_GAMMAS_L + END WHERE + IF (NMOM_S.GE.2) THEN + ZN(:,:,:)=PCST(:,:,:) + ELSE + WHERE( PRT(:,:,:,5).GT.XRTMIN_L(5) ) + ZN(:,:,:)=XNS_L*PRHODREF(:,:,:)*PRT(:,:,:,5)*ZLBDA(:,:,:)**XBS_L + END WHERE + END IF + WHERE( PRT(:,:,:,5).GT.XRTMIN_L(5) ) + ZW(:,:,:) = ZEQICE*ZDMELT_FACT & + *1.E18*PRHODREF(:,:,:)*ZN(:,:,:)*(ZLBDA(:,:,:)**(-ZEXP))*MOMG(XALPHAS_L,XNUS_L,ZEXP) + PVDOP(:,:,:) = PVDOP(:,:,:)+ZEQICE*ZDMELT_FACT*MOMG(XALPHAS_L,XNUS_L,ZEXP+XDS_L) & + *1.E18*PRHODREF(:,:,:)*ZN(:,:,:)*XCS_L*(ZLBDA(:,:,:)**(-ZEXP-XDS_L)) + PRARE(:,:,:) = PRARE(:,:,:) + ZW(:,:,:) + END WHERE ELSEIF ( (CCLOUD=='ICE3' .AND. LSNOW_T_I) ) THEN ZDMELT_FACT = ( (6.0*XAS_I)/(XPI*XRHOLW) )**(2.0) ZEXP = 2.0*XBS_I - WHERE(PTEMP(:,:,:)>-10. .AND. PRT(:,:,:,5).GT.XRTMIN_I(5)) - ZLBDA(:,:,:) = MAX(MIN(XLBDAS_MAX, 10**(14.554-0.0423*(PTEMP(:,:,:)+273.15))),XLBDAS_MIN) + WHERE(PTEMP(:,:,:)>263.15 .AND. PRT(:,:,:,5).GT.XRTMIN_I(5)) + ZLBDA(:,:,:) = MAX(MIN(XLBDAS_MAX_I, 10**(14.554-0.0423*PTEMP(:,:,:))),XLBDAS_MIN_I)*XTRANS_MP_GAMMAS_I END WHERE - WHERE(PTEMP(:,:,:)<=-10 .AND. PRT(:,:,:,5).GT.XRTMIN_I(5)) - ZLBDA(:,:,:) = MAX(MIN(XLBDAS_MAX, 10**(6.226-0.0106*(PTEMP(:,:,:)+273.15))),XLBDAS_MIN) + WHERE(PTEMP(:,:,:)<=263.15 .AND. PRT(:,:,:,5).GT.XRTMIN_I(5)) + ZLBDA(:,:,:) = MAX(MIN(XLBDAS_MAX_I, 10**(6.226- 0.0106*PTEMP(:,:,:))),XLBDAS_MIN_I)*XTRANS_MP_GAMMAS_I END WHERE ZN(:,:,:)=XNS_I*PRHODREF(:,:,:)*PRT(:,:,:,5)*ZLBDA(:,:,:)**XBS_I WHERE( PRT(:,:,:,5).GT.XRTMIN_I(5) ) ZW(:,:,:) = ZEQICE*ZDMELT_FACT & - *1.E18*ZN(:,:,:)*(ZLBDA(:,:,:)**(-ZEXP))*MOMG(XALPHAS_I,XNUS_I,ZEXP) + *1.E18*PRHODREF(:,:,:)*ZN(:,:,:)*(ZLBDA(:,:,:)**(-ZEXP))*MOMG(XALPHAS_I,XNUS_I,ZEXP) PVDOP(:,:,:) = PVDOP(:,:,:)+ZEQICE*ZDMELT_FACT*MOMG(XALPHAS_I,XNUS_I,ZEXP+XDS_I) & - *1.E18*ZN(:,:,:)*XCS_I*(ZLBDA(:,:,:)**(-ZEXP-XDS_I)) + *1.E18*PRHODREF(:,:,:)*ZN(:,:,:)*XCS_I*(ZLBDA(:,:,:)**(-ZEXP-XDS_I)) PRARE(:,:,:) = PRARE(:,:,:) + ZW(:,:,:) END WHERE ELSEIF (CCLOUD=='LIMA') THEN diff --git a/src/PHYEX/turb/turb.f90 b/src/PHYEX/turb/turb.f90 index dd5029524d292cc0350d5121c4a5c42984aef2d2..2a8a60e323301d8d5ffcdb501c46ef57fe56c552 100644 --- a/src/PHYEX/turb/turb.f90 +++ b/src/PHYEX/turb/turb.f90 @@ -532,7 +532,7 @@ ZEXPL = 1.- TURBN%XIMPL ZRVORD= CST%XRV / CST%XRD ! !Copy data into ZTHLM and ZRM only if needed -IF (TURBN%CTURBLEN=='BL89' .OR. TURBN%CTURBLEN=='RM17' .OR. TURBN%CTURBLEN=='ADAP' .OR. TURBN%LRMC01) THEN +IF (TURBN%CTURBLEN=='BL89' .OR. TURBN%CTURBLEN=='RM17' .OR. TURBN%CTURBLEN=='HM21' .OR. TURBN%LRMC01) THEN ZTHLM(IIJB:IIJE,1:IKT) = PTHLT(IIJB:IIJE,1:IKT) ZRM(IIJB:IIJE,1:IKT,:) = PRT(IIJB:IIJE,1:IKT,:) END IF @@ -749,7 +749,7 @@ SELECT CASE (TURBN%CTURBLEN) !* 3.3 Grey-zone combined RM17 & Deardorff mixing lengths ! -------------------------------------------------- - CASE ('ADAP') + CASE ('HM21') CALL GZ_U_UW_PHY(D,PUT,PDZZ,ZWORK1) CALL MZF_PHY(D,ZWORK1,ZWORK2) CALL MXF_PHY(D,ZWORK2,ZDUDZ) @@ -852,8 +852,8 @@ IF (TURBN%LRMC01) THEN CALL RMC01(D,CST,CSTURB,TURBN%CTURBLEN,PZZ,PDXX,PDYY,PDZZ,PDIRCOSZW,PSBL_DEPTH,ZLMO,ZLM,ZLEPS) END IF ! -!RMC01 is only applied on RM17 in ADAP -IF (TURBN%CTURBLEN=='ADAP') THEN +!RMC01 is only applied on RM17 in HM21 +IF (TURBN%CTURBLEN=='HM21') THEN !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ZLEPS(IIJB:IIJE,1:IKT) = MIN(ZLEPS(IIJB:IIJE,1:IKT),ZLMW(IIJB:IIJE,1:IKT)*TURBN%XCADAP) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) @@ -1955,7 +1955,7 @@ ELSE ! !* 3.1 BL89 mixing length ! ------------------ - CASE ('BL89','RM17','ADAP') + CASE ('BL89','RM17','HM21') ZSHEAR(:,:)=0. CALL BL89(D,CST,CSTURB,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD,OOCEAN,HPROGRAM) !