diff --git a/docs/TODO b/docs/TODO index e2a31546ca562f10efa82c6ca56fab7f941413f9..b515f177423cec09fbf2e8d7ffdb3832d0c25f7e 100644 --- a/docs/TODO +++ b/docs/TODO @@ -33,7 +33,7 @@ Merge pb: src/mesonh/micro/ice_adjust_elec.f90 et src/mesonh/micro/lima_adjust_split.f90 mais non testés - arp_shallow_mf non phasé - - LIMA à faire + - LIMA à faire dans AROME (récupérer code dans mesonh) - KFB ? Pb identifiés à corriger plus tard: @@ -48,9 +48,6 @@ Pb identifiés à corriger plus tard: - th_r_from_thl_rt appelée partout, il faudrait limiter à OTEST - sedimentation momentum non branchée - si possible, modifier ice4_sedimentation_split* dans le même esprit que stat - - il faudrait nettoyer les interfaces pour supprimer les clés passées directement - alors qu'elles sont également disponibles dans les structures (ex: HMF_UPDRAFT) - - il faudrait harmoniser l'utilisation des variables D% (cad faire IKT=D%NKT en haut ou utiliser directement D%NKT) - La taille du buffer utilisé pour th_r_from_thl_rt doit être mise en module et utilisée pour déclarer le buffer dans les routines appelantes et dans th_r_from_thl_rt - shallow_mf_pack devrait être récrit pour appeler directement shallow_mf sans recopier les tableaux pour les changer de forme diff --git a/src/arome/ext/aro_adjust.F90 b/src/arome/ext/aro_adjust.F90 index 1541b7d0c2e1a1fc36f36998e3b0909accd1e449..71d307a6e69d3e056f2b6f9e160b0f4b0c2c3b9e 100644 --- a/src/arome/ext/aro_adjust.F90 +++ b/src/arome/ext/aro_adjust.F90 @@ -393,9 +393,8 @@ ZZZ(KIDIA:KFDIA,:,:) = PZZF(KIDIA:KFDIA,:,:) ! IF (KRR==6) THEN CALL ICE_ADJUST ( YLDIMPHYEX, CST=CST, ICEP=RAIN_ICE_PARAM, NEB=NEB, TURBN=TURBN, BUCONF=TBUCONF, KRR=KRR,& - & HFRAC_ICE=HFRAC_ICE, HCONDENS=HCONDENS, HLAMBDA3=HLAMBDA3, HBUNAME=HBUNAME, & - & OSUBG_COND=OSUBG_COND, OSIGMAS=OSIGMAS, & - & OCND2=OCND2, LHGT_QS=LHGT_QS, HSUBG_MF_PDF=HSUBG_MF_PDF, & + & HFRAC_ICE=HFRAC_ICE, HBUNAME=HBUNAME, & + & OCND2=OCND2, LHGT_QS=LHGT_QS, & & PTSTEP=ZTWOTSTEP,PSIGQSAT=ZSIGQSAT, & & PRHODJ=PRHODJ ,PEXNREF=PEXNREF, PRHODREF=PRHODREF, & & PSIGS=PSIGS, LMFCONV=.TRUE., PMFCONV=PMFCONV, PPABST=PPABSM, PZZ=ZZZ, & @@ -415,9 +414,8 @@ IF (KRR==6) THEN & PHLI_HRI=PHLI_HRI(:,:,:), PHLI_HCF=PHLI_HCF(:,:,:)) ELSE CALL ICE_ADJUST ( YLDIMPHYEX, CST=CST, ICEP=RAIN_ICE_PARAM, NEB=NEB, TURBN=TURBN, BUCONF=TBUCONF, KRR=KRR,& - & HFRAC_ICE=HFRAC_ICE, HCONDENS=HCONDENS, HLAMBDA3=HLAMBDA3, HBUNAME=HBUNAME, & - & OSUBG_COND=OSUBG_COND, OSIGMAS=OSIGMAS, & - & OCND2=OCND2, LHGT_QS=LHGT_QS, HSUBG_MF_PDF=HSUBG_MF_PDF, & + & HFRAC_ICE=HFRAC_ICE, HBUNAME=HBUNAME, & + & OCND2=OCND2, LHGT_QS=LHGT_QS, & & PTSTEP=ZTWOTSTEP,PSIGQSAT=ZSIGQSAT, & & PRHODJ=PRHODJ ,PEXNREF=PEXNREF, PRHODREF=PRHODREF, & & PSIGS=PSIGS, LMFCONV=.TRUE., PMFCONV=PMFCONV, PPABST=PPABSM, PZZ=ZZZ, & diff --git a/src/arome/ext/aro_rain_ice.F90 b/src/arome/ext/aro_rain_ice.F90 index 249f2c0f7c291fb14629119d6ce7810038fad61a..27d50fab443de6ffc92c2557c31969f641113e8c 100644 --- a/src/arome/ext/aro_rain_ice.F90 +++ b/src/arome/ext/aro_rain_ice.F90 @@ -398,9 +398,8 @@ IF (CMICRO=='ICE4') THEN CALL RAIN_ICE( YLDIMPHYEX, CST, PARAM_ICE, RAIN_ICE_PARAM, & & RAIN_ICE_DESCR, TBUCONF, & & IPROMA, ISIZE, & - & OSEDIC=OSEDIC, OCND2=OCND2, HSEDIM=CSEDIM, & + & OCND2=OCND2, & & HSUBG_AUCV_RC=CSUBG_AUCV_RC, HSUBG_AUCV_RI=CSUBG_AUCV_RI,& - & OWARM=OWARM, & & PTSTEP=2*PTSTEP, & & KRR=KRR, ODMICRO=LLMICRO, PEXN=PEXNREF, & & PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF, PEXNREF=PEXNREF,& @@ -424,9 +423,8 @@ ELSEIF (CMICRO=='ICE3') THEN CALL RAIN_ICE( YLDIMPHYEX, CST, PARAM_ICE, RAIN_ICE_PARAM, & & RAIN_ICE_DESCR, TBUCONF, & & IPROMA, ISIZE, & - & OSEDIC=OSEDIC, OCND2=OCND2, HSEDIM=CSEDIM, & + & OCND2=OCND2, & & HSUBG_AUCV_RC=CSUBG_AUCV_RC, HSUBG_AUCV_RI=CSUBG_AUCV_RI,& - & OWARM=OWARM, & & PTSTEP=2*PTSTEP, & & KRR=KRR, ODMICRO=LLMICRO, PEXN=PEXNREF, & & PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF,PEXNREF=PEXNREF,& diff --git a/src/arome/ext/aro_shallow_mf.F90 b/src/arome/ext/aro_shallow_mf.F90 index 07a504ab1863f53983b3aa16e34862760d5802c3..a6750efd89818b3e3cd210b0405f2c15ec7e90ce 100644 --- a/src/arome/ext/aro_shallow_mf.F90 +++ b/src/arome/ext/aro_shallow_mf.F90 @@ -202,16 +202,14 @@ ZIMPL=1. !------------------------------------------------------------------------------ ! ! -!* 4. APPEL DE LA TURBULENCE MESONH +!* 4. APPEL DE LA CONVECTION PEU PROFONDE MESONH ! ! --------------------------------- ! OSTATNW = .FALSE. CALL SHALLOW_MF(YLDIMPHYEX, CST, NEB, PARAM_MFSHALLN, TURBN, CSTURB, & &KRR=KRR, KRRL=KRRL, KRRI=KRRI, KSV=KSV, & - &HMF_UPDRAFT=HMF_UPDRAFT, HMF_CLOUD=HMF_CLOUD,HFRAC_ICE=HFRAC_ICE,OMIXUV=OMIXUV, & - &OSTATNW=OSTATNW, & - &ONOMIXLG=ONOMIXLG,KSV_LGBEG=KSV_LGBEG,KSV_LGEND=KSV_LGEND, & + &HFRAC_ICE=HFRAC_ICE, ONOMIXLG=ONOMIXLG,KSV_LGBEG=KSV_LGBEG,KSV_LGEND=KSV_LGEND, & &PIMPL_MF=ZIMPL, PTSTEP=PTSTEP, & &PDZZ=PDZZF,PZZ=PZZ, & &PRHODJ=PRHODJ,PRHODREF=PRHODREF, & diff --git a/src/common/micro/ice_adjust.F90 b/src/common/micro/ice_adjust.F90 index 03020cfe18d9cf9802729e09d06bdc10fbfa3f7d..deec98d8ef92cda88971c6eb49b4b497ea1caac5 100644 --- a/src/common/micro/ice_adjust.F90 +++ b/src/common/micro/ice_adjust.F90 @@ -5,9 +5,8 @@ !----------------------------------------------------------------- ! ########################################################################## SUBROUTINE ICE_ADJUST (D, CST, ICEP, NEB, TURBN, BUCONF, KRR, & - &HFRAC_ICE, HCONDENS, HLAMBDA3,& - &HBUNAME, OSUBG_COND, OSIGMAS, OCND2, LHGT_QS, & - &HSUBG_MF_PDF, PTSTEP, PSIGQSAT, & + &HFRAC_ICE, HBUNAME, OCND2, LHGT_QS, & + &PTSTEP, PSIGQSAT, & &PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,& &PPABST, PZZ, & &PEXN, PCF_MF, PRC_MF, PRI_MF, & @@ -137,19 +136,11 @@ TYPE(TURB_t), INTENT(IN) :: TURBN TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KRR ! Number of moist variables CHARACTER(LEN=1), INTENT(IN) :: HFRAC_ICE -CHARACTER(LEN=80), INTENT(IN) :: HCONDENS -CHARACTER(LEN=4), INTENT(IN) :: HLAMBDA3 ! formulation for lambda3 coeff CHARACTER(LEN=4), INTENT(IN) :: HBUNAME ! Name of the budget -LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for Subgrid - ! Condensation -LOGICAL, INTENT(IN) :: OSIGMAS ! Switch for Sigma_s: - ! use values computed in CONDENSATION - ! or that from turbulence scheme LOGICAL, INTENT(IN) :: OCND2 ! logical switch to separate liquid ! and ice ! more rigid (DEFAULT value : .FALSE.) LOGICAL, INTENT(IN) :: LHGT_QS ! logical switch for height dependent VQSIGSAT -CHARACTER(LEN=80), INTENT(IN) :: HSUBG_MF_PDF REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) REAL, DIMENSION(D%NIJT), INTENT(IN) :: PSIGQSAT ! coeff applied to qsat variance contribution @@ -158,8 +149,8 @@ REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRHODJ ! Dry density * Jacobia REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEXNREF ! Reference Exner function REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRHODREF ! -REAL, DIMENSION(MERGE(D%NIJT,0,OSUBG_COND),& - MERGE(D%NKT,0,OSUBG_COND)), INTENT(IN) :: PSIGS ! Sigma_s at time t +REAL, DIMENSION(MERGE(D%NIJT,0,TURBN%LSUBG_COND),& + MERGE(D%NKT,0,TURBN%LSUBG_COND)), INTENT(IN) :: PSIGS ! Sigma_s at time t LOGICAL, INTENT(IN) :: LMFCONV ! =SIZE(PMFCONV)!=0 REAL, DIMENSION(MERGE(D%NIJT,0,LMFCONV),& MERGE(D%NKT,0,LMFCONV)), INTENT(IN) :: PMFCONV ! convective mass flux @@ -320,7 +311,7 @@ DO JK=IKTB,IKTE ! !* 5.2 compute the cloud fraction PCLDFR ! - IF ( .NOT. OSUBG_COND ) THEN + IF ( .NOT. TURBN%LSUBG_COND ) THEN DO JIJ=IIJB,IIJE IF (PRCS(JIJ,JK) + PRIS(JIJ,JK) > 1.E-12 / PTSTEP) THEN PCLDFR(JIJ,JK) = 1. @@ -331,7 +322,7 @@ DO JK=IKTB,IKTE PSRCS(JIJ,JK) = PCLDFR(JIJ,JK) END IF ENDDO - ELSE !OSUBG_COND case + ELSE !TURBN%LSUBG_COND case DO JIJ=IIJB,IIJE !We limit PRC_MF+PRI_MF to PRVS*PTSTEP to avoid negative humidity ZW1=PRC_MF(JIJ,JK)/PTSTEP @@ -349,12 +340,12 @@ DO JK=IKTB,IKTE ! IF(PRESENT(PHLC_HRC) .AND. PRESENT(PHLC_HCF)) THEN ZCRIAUT=ICEP%XCRIAUTC/PRHODREF(JIJ,JK) - IF(HSUBG_MF_PDF=='NONE')THEN + IF(TURBN%CSUBG_MF_PDF=='NONE')THEN IF(ZW1*PTSTEP>PCF_MF(JIJ,JK) * ZCRIAUT) THEN PHLC_HRC(JIJ,JK)=PHLC_HRC(JIJ,JK)+ZW1*PTSTEP PHLC_HCF(JIJ,JK)=MIN(1.,PHLC_HCF(JIJ,JK)+PCF_MF(JIJ,JK)) ENDIF - ELSEIF(HSUBG_MF_PDF=='TRIANGLE')THEN + ELSEIF(TURBN%CSUBG_MF_PDF=='TRIANGLE')THEN !ZHCF is the precipitating part of the *cloud* and not of the grid cell IF(ZW1*PTSTEP>PCF_MF(JIJ,JK)*ZCRIAUT) THEN ZHCF=1.-.5*(ZCRIAUT*PCF_MF(JIJ,JK) / MAX(1.E-20, ZW1*PTSTEP))**2 @@ -377,12 +368,12 @@ DO JK=IKTB,IKTE ENDIF IF(PRESENT(PHLI_HRI) .AND. PRESENT(PHLI_HCF)) THEN ZCRIAUT=MIN(ICEP%XCRIAUTI,10**(ICEP%XACRIAUTI*(ZT(JIJ,JK)-CST%XTT)+ICEP%XBCRIAUTI)) - IF(HSUBG_MF_PDF=='NONE')THEN + IF(TURBN%CSUBG_MF_PDF=='NONE')THEN IF(ZW2*PTSTEP>PCF_MF(JIJ,JK) * ZCRIAUT) THEN PHLI_HRI(JIJ,JK)=PHLI_HRI(JIJ,JK)+ZW2*PTSTEP PHLI_HCF(JIJ,JK)=MIN(1.,PHLI_HCF(JIJ,JK)+PCF_MF(JIJ,JK)) ENDIF - ELSEIF(HSUBG_MF_PDF=='TRIANGLE')THEN + ELSEIF(TURBN%CSUBG_MF_PDF=='TRIANGLE')THEN !ZHCF is the precipitating part of the *cloud* and not of the grid cell IF(ZW2*PTSTEP>PCF_MF(JIJ,JK)*ZCRIAUT) THEN ZHCF=1.-.5*(ZCRIAUT*PCF_MF(JIJ,JK) / (ZW2*PTSTEP))**2 @@ -418,7 +409,7 @@ DO JK=IKTB,IKTE (ZW1 * ZLV(JIJ,JK) + ZW2 * ZLS(JIJ,JK)) / ZCPH(JIJ,JK) ENDDO ENDIF - ENDIF !OSUBG_COND + ENDIF !TURBN%LSUBG_COND ENDDO ! IF(PRESENT(POUT_RV)) POUT_RV=ZRV @@ -475,7 +466,7 @@ DO JK=IKTB,IKTE ENDDO ENDDO ! -IF ( OSUBG_COND ) THEN +IF ( TURBN%LSUBG_COND ) THEN ! !* 3. SUBGRID CONDENSATION SCHEME ! --------------------------- @@ -483,10 +474,10 @@ IF ( OSUBG_COND ) THEN ! PSRC= s'rci'/Sigma_s^2 ! ZT is INOUT CALL CONDENSATION(D, CST, ICEP, NEB, TURBN, & - HFRAC_ICE, HCONDENS, HLAMBDA3, & + HFRAC_ICE,TURBN%CCONDENS, TURBN%CLAMBDA3, & PPABST, PZZ, PRHODREF, ZT, PRV_IN, PRV_OUT, PRC_IN, PRC_OUT, PRI_IN, PRI_OUT, & PRR, PRS, PRG, PSIGS, LMFCONV, PMFCONV, PCLDFR, & - PSRCS, .TRUE., OSIGMAS, OCND2, LHGT_QS, & + PSRCS, .TRUE., TURBN%LSIGMAS,OCND2, LHGT_QS, & PICLDFR, PWCLDFR, PSSIO, PSSIU, PIFR, PSIGQSAT, & PLV=ZLV, PLS=ZLS, PCPH=ZCPH, & PHLC_HRC=PHLC_HRC, PHLC_HCF=PHLC_HCF, PHLI_HRI=PHLI_HRI, PHLI_HCF=PHLI_HCF,& @@ -502,7 +493,7 @@ ELSE !We use ZSRCS because in Méso-NH, PSRCS can be a zero-length array in this case !ZT is INOUT CALL CONDENSATION(D, CST, ICEP, NEB, TURBN, & - HFRAC_ICE, HCONDENS, HLAMBDA3, & + HFRAC_ICE,TURBN%CCONDENS, TURBN%CLAMBDA3, & PPABST, PZZ, PRHODREF, ZT, PRV_IN, PRV_OUT, PRC_IN, PRC_OUT, PRI_IN, PRI_OUT, & PRR, PRS, PRG, ZSIGS, LMFCONV, PMFCONV, PCLDFR, & ZSRCS, .TRUE., .TRUE., OCND2, LHGT_QS, & diff --git a/src/common/micro/mode_ice4_sedimentation_split.F90 b/src/common/micro/mode_ice4_sedimentation_split.F90 index a7cb831295e8e673e3c35ec936c66489c020113d..e7b90b3d4ae6dd7f2c3b4ba22908543ab8e152e1 100644 --- a/src/common/micro/mode_ice4_sedimentation_split.F90 +++ b/src/common/micro/mode_ice4_sedimentation_split.F90 @@ -7,7 +7,7 @@ MODULE MODE_ICE4_SEDIMENTATION_SPLIT IMPLICIT NONE CONTAINS SUBROUTINE ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, & - &PTSTEP, KRR, OSEDIC, PDZZ, & + &PTSTEP, KRR, PDZZ, & &PRHODREF, PPABST, PTHT, PT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& &PINPRC, PINPRR, PINPRI, PINPRS, PINPRG, & @@ -56,7 +56,6 @@ TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED TYPE(PARAM_ICE_t), INTENT(IN) :: PARAMI REAL, INTENT(IN) :: PTSTEP ! Double Time step (single if cold start) INTEGER, INTENT(IN) :: KRR ! Number of moist variable -LOGICAL, INTENT(IN) :: OSEDIC ! Switch for droplet sedim. REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDZZ ! Layer thikness (m) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRHODREF! Reference density REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPABST ! absolute pressure at t @@ -114,7 +113,7 @@ IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION_SPLIT', 0, ZHOOK_HANDLE) !------------------------------------------------------------------------------- ! ! -GSEDIC = OSEDIC +GSEDIC = PARAMI%LSEDIC IRR = KRR ! IKTB=D%NKTB diff --git a/src/common/micro/mode_ice4_sedimentation_split_momentum.F90 b/src/common/micro/mode_ice4_sedimentation_split_momentum.F90 index 498375058494a79d840b508deb57b099087ccab4..a3f926903a098abf3031746f98f485a2ee21fab3 100644 --- a/src/common/micro/mode_ice4_sedimentation_split_momentum.F90 +++ b/src/common/micro/mode_ice4_sedimentation_split_momentum.F90 @@ -7,7 +7,7 @@ MODULE MODE_ICE4_SEDIMENTATION_SPLIT_MOMENTUM IMPLICIT NONE CONTAINS SUBROUTINE ICE4_SEDIMENTATION_SPLIT_MOMENTUM(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT, KKL, & - &PTSTEP, KRR, OSEDIC, OMOMENTUM, PDZZ, & + &PTSTEP, KRR, PARAMI%LSEDIC, OMOMENTUM, PDZZ, & &PRHODREF, PPABST, PTHT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& &PINPRC, PINPRR, PINPRI, PINPRS, PINPRG, & @@ -51,7 +51,7 @@ INTEGER, INTENT(IN) :: KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO REAL, INTENT(IN) :: PTSTEP ! Double Time step (single if cold start) INTEGER, INTENT(IN) :: KRR ! Number of moist variable -LOGICAL, INTENT(IN) :: OSEDIC ! Switch for droplet sedim. +LOGICAL, INTENT(IN) :: PARAMI%LSEDIC ! Switch for droplet sedim. LOGICAL, INTENT(IN) :: OMOMENTUM ! Switch to use momentum flux REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PDZZ ! Layer thikness (m) REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRHODREF! Reference density @@ -119,7 +119,7 @@ REAL, DIMENSION(SIZE(XRTMIN)) :: ZRSMIN ! ZINVTSTEP=1./PTSTEP ZRSMIN(:) = XRTMIN(:) * ZINVTSTEP -IF (OSEDIC) PINPRC (:,:) = 0. +IF (PARAMI%LSEDIC) PINPRC (:,:) = 0. PINPRR (:,:) = 0. PINPRI (:,:) = 0. PINPRS (:,:) = 0. @@ -129,7 +129,7 @@ IF (PRESENT(PFPR)) PFPR(:,:,:,:) = 0. ! !* 1. Parameters for cloud sedimentation ! -IF (OSEDIC) THEN +IF (PARAMI%LSEDIC) THEN ZRAY(:,:,:) = 0. ZLBC(:,:,:) = XLBC(1) ZFSEDC(:,:,:) = XFSEDC(1) @@ -160,7 +160,7 @@ ENDIF ! For optimization we consider each variable separately ! ! External tendecies -IF (OSEDIC) THEN +IF (PARAMI%LSEDIC) THEN ZPRCS(:,:,:) = PRCS(:,:,:)-PRCT(:,:,:)*ZINVTSTEP ENDIF ZPRRS(:,:,:) = PRRS(:,:,:)-PRRT(:,:,:)*ZINVTSTEP @@ -188,7 +188,7 @@ END DO ! !* 2.1 for cloud ! -IF (OSEDIC) THEN +IF (PARAMI%LSEDIC) THEN ZREMAINT(:,:) = PTSTEP FIRST = .TRUE. DO WHILE (ANY(ZREMAINT>0.)) diff --git a/src/common/micro/mode_ice4_sedimentation_stat.F90 b/src/common/micro/mode_ice4_sedimentation_stat.F90 index 33e4e6e01e7ff5992ce919206038b62e0647a2e3..6768a606f98892aacbedd424aff15ff0b1cb14bc 100644 --- a/src/common/micro/mode_ice4_sedimentation_stat.F90 +++ b/src/common/micro/mode_ice4_sedimentation_stat.F90 @@ -7,7 +7,7 @@ MODULE MODE_ICE4_SEDIMENTATION_STAT IMPLICIT NONE CONTAINS SUBROUTINE ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, & - &PTSTEP, KRR, OSEDIC, PDZZ, & + &PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, & &PRHODREF, PPABST, PTHT, PRHODJ, & &PLBDAS, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, & @@ -57,7 +57,7 @@ TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED REAL, INTENT(IN) :: PTSTEP ! Double Time step (single if cold start) INTEGER, INTENT(IN) :: KRR ! Number of moist variable -LOGICAL, INTENT(IN) :: OSEDIC ! Switch for droplet sedim. +LOGICAL, INTENT(IN) :: PARAMI%LSEDIC ! Switch for droplet sedim. REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDZZ ! Layer thikness (m) REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRHODREF! Reference density REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPABST ! absolute pressure at t @@ -166,7 +166,7 @@ DO JK = IKE , IKB, -1*IKL IF (JRR==2) THEN !******* for cloud - IF (OSEDIC) THEN + IF (PARAMI%LSEDIC) THEN CALL CLOUD(PRCT(:,:,JK)) ELSE ZSED(:,:,IK,JRR)=0. @@ -230,7 +230,7 @@ DO JK = IKE , IKB, -1*IKL IF (JK==IKB) THEN DO JJ = IJB, IJE DO JI = IIB, IIE - IF(OSEDIC) PINPRC(JI,JJ) = ZSED(JI,JJ,IK,2)/CST%XRHOLW + IF(PARAMI%LSEDIC) PINPRC(JI,JJ) = ZSED(JI,JJ,IK,2)/CST%XRHOLW PINPRR(JI,JJ) = ZSED(JI,JJ,IK,3)/CST%XRHOLW PINPRI(JI,JJ) = ZSED(JI,JJ,IK,4)/CST%XRHOLW PINPRS(JI,JJ) = ZSED(JI,JJ,IK,5)/CST%XRHOLW diff --git a/src/common/micro/mode_ice4_tendencies.F90 b/src/common/micro/mode_ice4_tendencies.F90 index 6548e169cd2f6f79cc801d9b2082187d65a24a18..26efc775ed1d13d72e337fe62fb6759a676c2ec1 100644 --- a/src/common/micro/mode_ice4_tendencies.F90 +++ b/src/common/micro/mode_ice4_tendencies.F90 @@ -8,7 +8,7 @@ IMPLICIT NONE CONTAINS SUBROUTINE ICE4_TENDENCIES(D, CST, PARAMI, ICEP, ICED, BUCONF, KPROMA, KSIZE, & &KRR, ODSOFT, LDCOMPUTE, & - &OWARM, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, & + &HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, & &HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF, & &PEXN, PRHODREF, PLVFACT, PLSFACT, K1, K2, & &PPRES, PCF, PSIGMA_RC, & @@ -95,7 +95,6 @@ INTEGER, INTENT(IN) :: KPROMA, KSIZE INTEGER, INTENT(IN) :: KRR LOGICAL, INTENT(IN) :: ODSOFT LOGICAL, DIMENSION(KPROMA), INTENT(IN) :: LDCOMPUTE -LOGICAL, INTENT(IN) :: OWARM CHARACTER(LEN=80), INTENT(IN) :: HSUBG_RC_RR_ACCR CHARACTER(LEN=80), INTENT(IN) :: HSUBG_RR_EVAP CHARACTER(LEN=4), INTENT(IN) :: HSUBG_AUCV_RC @@ -399,7 +398,7 @@ CALL ICE4_SLOW(CST, ICEP, ICED, KPROMA, KSIZE, ODSOFT, LDCOMPUTE, PRHODREF, ZT, ! -------------------------------------- ! ! -IF(OWARM) THEN ! Check if the formation of the raindrops by the slow +IF(PARAMI%LWARM) THEN ! Check if the formation of the raindrops by the slow ! warm processes is allowed CALL ICE4_WARM(CST, ICEP, ICED, KPROMA, KSIZE, ODSOFT, LDCOMPUTE, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, & &PRHODREF, PLVFACT, ZT, PPRES, ZVART(:,ITH),& diff --git a/src/common/micro/modi_ice_adjust.F90 b/src/common/micro/modi_ice_adjust.F90 index d7809b182653d1adf791eab1cd7b927696f592dc..95680b082309ec4a6e00eb196b0028a770c96550 100644 --- a/src/common/micro/modi_ice_adjust.F90 +++ b/src/common/micro/modi_ice_adjust.F90 @@ -5,9 +5,9 @@ INTERFACE ! SUBROUTINE ICE_ADJUST (D, CST, ICEP, NEB, TURBN, BUCONF, KRR, & - &HFRAC_ICE, HCONDENS, HLAMBDA3,& - &HBUNAME, OSUBG_COND, OSIGMAS, OCND2, LHGT_QS, & - &HSUBG_MF_PDF, PTSTEP, PSIGQSAT, & + &HFRAC_ICE, & + &HBUNAME, OCND2, LHGT_QS, & + &PTSTEP, PSIGQSAT, & &PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,& &PPABST, PZZ, & &PEXN, PCF_MF, PRC_MF, PRI_MF, & @@ -39,19 +39,11 @@ TYPE(TURB_t), INTENT(IN) :: TURBN TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KRR ! Number of moist variables CHARACTER(LEN=1), INTENT(IN) :: HFRAC_ICE -CHARACTER(LEN=80), INTENT(IN) :: HCONDENS -CHARACTER(LEN=4), INTENT(IN) :: HLAMBDA3 ! formulation for lambda3 coeff CHARACTER(LEN=4), INTENT(IN) :: HBUNAME ! Name of the budget -LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for Subgrid - ! Condensation -LOGICAL, INTENT(IN) :: OSIGMAS ! Switch for Sigma_s: - ! use values computed in CONDENSATION - ! or that from turbulence scheme LOGICAL, INTENT(IN) :: OCND2 ! logical switch to separate liquid ! and ice ! more rigid (DEFAULT value : .FALSE.) LOGICAL, INTENT(IN) :: LHGT_QS ! logical switch for height dependent VQSIGSAT -CHARACTER(LEN=80), INTENT(IN) :: HSUBG_MF_PDF REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) REAL, DIMENSION(D%NIJT), INTENT(IN) :: PSIGQSAT ! coeff applied to qsat variance contribution @@ -60,8 +52,8 @@ REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRHODJ ! Dry density * Jacobia REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEXNREF ! Reference Exner function REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRHODREF ! -REAL, DIMENSION(MERGE(D%NIJT,0,OSUBG_COND),& - MERGE(D%NKT,0,OSUBG_COND)), INTENT(IN) :: PSIGS ! Sigma_s at time t +REAL, DIMENSION(MERGE(D%NIJT,0,TURBN%LSUBG_COND),& + MERGE(D%NKT,0,TURBN%LSUBG_COND)), INTENT(IN) :: PSIGS ! Sigma_s at time t LOGICAL, INTENT(IN) :: LMFCONV ! =SIZE(PMFCONV)!=0 REAL, DIMENSION(MERGE(D%NIJT,0,LMFCONV),& MERGE(D%NKT,0,LMFCONV)), INTENT(IN) :: PMFCONV ! convective mass flux diff --git a/src/common/micro/modi_rain_ice.F90 b/src/common/micro/modi_rain_ice.F90 index 2383b73f088ea8e057a6efe0df6b5d680c653200..44988b26ccd07cc685a414d4c073471c676dc866 100644 --- a/src/common/micro/modi_rain_ice.F90 +++ b/src/common/micro/modi_rain_ice.F90 @@ -5,9 +5,8 @@ INTERFACE SUBROUTINE RAIN_ICE ( D, CST, PARAMI, ICEP, ICED, BUCONF, & KPROMA, KSIZE, & - OSEDIC, OCND2, HSEDIM, HSUBG_AUCV_RC, HSUBG_AUCV_RI, & - OWARM, & - PTSTEP, KRR, ODMICRO, PEXN, & + OCND2, HSUBG_AUCV_RC, HSUBG_AUCV_RI, & + PTSTEP, KRR, ODMICRO, PEXN, & PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & PTHT, PRVT, PRCT, PRRT, PRIT, PRST, & @@ -35,17 +34,11 @@ TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KPROMA ! cache-blocking factor for microphysic loop INTEGER, INTENT(IN) :: KSIZE -LOGICAL, INTENT(IN) :: OSEDIC ! Switch for droplet sedim. LOGICAL :: OCND2 ! Logical switch to separate liquid and ice -CHARACTER(LEN=4), INTENT(IN) :: HSEDIM ! Sedimentation scheme CHARACTER(LEN=4), INTENT(IN) :: HSUBG_AUCV_RC ! Switch for rc->rr Subgrid autoconversion ! Kind of Subgrid autoconversion method CHARACTER(LEN=80), INTENT(IN) :: HSUBG_AUCV_RI ! Switch for ri->rs Subgrid autoconversion ! Kind of Subgrid autoconversion method -LOGICAL, INTENT(IN) :: OWARM ! .TRUE. allows raindrops to - ! form by warm processes - ! (Kessler scheme) -! REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KRR ! Number of moist variable diff --git a/src/common/micro/rain_ice.F90 b/src/common/micro/rain_ice.F90 index 01d3e54f76e880ee7667730f6317cb5f2c2d4eb7..6ab12b7aed753883a4fa025add7fe50adeb13eee 100644 --- a/src/common/micro/rain_ice.F90 +++ b/src/common/micro/rain_ice.F90 @@ -6,8 +6,7 @@ ! ######spl SUBROUTINE RAIN_ICE ( D, CST, PARAMI, ICEP, ICED, BUCONF, & KPROMA, KSIZE, & - OSEDIC, OCND2, HSEDIM, HSUBG_AUCV_RC, HSUBG_AUCV_RI, & - OWARM, & + OCND2,HSUBG_AUCV_RC, HSUBG_AUCV_RI, & PTSTEP, KRR, ODMICRO, PEXN, & PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & @@ -223,14 +222,9 @@ TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KPROMA ! cache-blocking factor for microphysic loop INTEGER, INTENT(IN) :: KSIZE -LOGICAL, INTENT(IN) :: OSEDIC ! Switch for droplet sedim. LOGICAL :: OCND2 ! Logical switch to separate liquid and ice -CHARACTER(LEN=4), INTENT(IN) :: HSEDIM ! Sedimentation scheme CHARACTER(LEN=4), INTENT(IN) :: HSUBG_AUCV_RC ! Kind of Subgrid autoconversion method CHARACTER(LEN=80), INTENT(IN) :: HSUBG_AUCV_RI ! Kind of Subgrid autoconversion method -LOGICAL, INTENT(IN) :: OWARM ! .TRUE. allows raindrops to - ! form by warm processes - ! (Kessler scheme) REAL, INTENT(IN) :: PTSTEP ! Double Time step (single if cold start) INTEGER, INTENT(IN) :: KRR ! Number of moist variable LOGICAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: ODMICRO ! mask to limit computation @@ -513,14 +507,14 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN ! !* 2.1 sedimentation ! - IF (BUCONF%LBUDGET_RC .AND. OSEDIC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'SEDI', PRCS(:, :) * PRHODJ(:, :)) + IF (BUCONF%LBUDGET_RC .AND. PARAMI%LSEDIC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'SEDI', PRCS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'SEDI', PRRS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'SEDI', PRIS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RH .AND. KRR==7) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:, :) * PRHODJ(:, :)) - IF(HSEDIM=='STAT') THEN + IF(PARAMI%CSEDIM=='STAT') THEN IF(KRR==7) THEN DO JK = IKTB,IKTE DO JIJ = IIJB,IIJE @@ -563,10 +557,10 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN ENDIF PINPRS(IIJB:IIJE) = PINPRS(IIJB:IIJE) + ZINPRI(IIJB:IIJE) !No negativity correction here as we apply sedimentation on PR.S*PTSTEP variables - ELSEIF(HSEDIM=='SPLI') THEN + ELSEIF(PARAMI%CSEDIM=='SPLI') THEN IF(KRR==7) THEN CALL ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, & - &PTSTEP, KRR, OSEDIC, PDZZ, & + &PTSTEP, KRR, PDZZ, & &PRHODREF, PPABST, PTHT, ZT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & @@ -574,7 +568,7 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN &PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR) ELSE CALL ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, & - &PTSTEP, KRR, OSEDIC, PDZZ, & + &PTSTEP, KRR, PDZZ, & &PRHODREF, PPABST, PTHT, ZT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & @@ -595,9 +589,9 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN CALL CORRECT_NEGATIVITIES(D, KRR, PRVS, PRCS, PRRS, & &PRIS, PRSS, PRGS, & &PTHS, ZZ_LVFACT, ZZ_LSFACT, PRHS) - ELSEIF(HSEDIM=='NONE') THEN + ELSEIF(PARAMI%CSEDIM=='NONE') THEN ELSE - CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'RAIN_ICE', 'no sedimentation scheme for HSEDIM='//HSEDIM) + CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'RAIN_ICE', 'no sedimentation scheme for PARAMI%CSEDIM='//PARAMI%CSEDIM) END IF @@ -623,7 +617,7 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN ! !* 2.2 budget storage ! - IF (BUCONF%LBUDGET_RC .AND. OSEDIC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'SEDI', PRCS(:, :) * PRHODJ(:, :)) + IF (BUCONF%LBUDGET_RC .AND. PARAMI%LSEDIC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'SEDI', PRCS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'SEDI', PRRS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'SEDI', PRIS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:, :) * PRHODJ(:, :)) @@ -647,7 +641,7 @@ DO JK = IKTB,IKTE ENDIF !Preset for output 3D variables - IF(OWARM) THEN + IF(PARAMI%LWARM) THEN PEVAP3D(:,JK)=0. ENDIF PRAINFR(:,JK)=0. @@ -889,7 +883,7 @@ IF (KSIZE > 0) THEN CALL ICE4_TENDENCIES(D, CST, PARAMI, ICEP, ICED, BUCONF, & &KPROMA, IMICRO, & &KRR, LSOFT, LLCOMPUTE, & - &OWARM, PARAMI%CSUBG_RC_RR_ACCR, PARAMI%CSUBG_RR_EVAP, & + &PARAMI%LWARM, PARAMI%CSUBG_RC_RR_ACCR, PARAMI%CSUBG_RR_EVAP, & &HSUBG_AUCV_RC, HSUBG_AUCV_RI, PARAMI%CSUBG_PR_PDF, & &ZEXN, ZRHODREF, ZLVFACT, ZLSFACT, I1, I2, & &ZPRES, ZCF, ZSIGMA_RC, & @@ -1104,7 +1098,7 @@ IF (KSIZE > 0) THEN ! DO JL=1, IMICRO ZCITOUT (I1(JL),I2(JL))=ZCIT (JL) - IF(OWARM) THEN + IF(PARAMI%LWARM) THEN PEVAP3D(I1(JL),I2(JL))=ZRREVAV(JL) ENDIF ZWR(I1(JL),I2(JL),IRV)=ZVART(JL, IRV) @@ -1271,7 +1265,7 @@ IF(BUCONF%LBU_ENABLE) THEN IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPG', -ZW(:, :) *PRHODJ(:, :)) IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'DEPG', ZW(:, :) *PRHODJ(:, :)) - IF(OWARM) THEN + IF(PARAMI%LWARM) THEN ZW(:,:) = 0. DO JL=1, KSIZE ZW(I1TOT(JL), I2TOT(JL)) = ZTOT_RCAUTR(JL) * ZINV_TSTEP @@ -1602,14 +1596,14 @@ IF(PARAMI%LSEDIM_AFTER) THEN ! !* 8.1 sedimentation ! - IF (BUCONF%LBUDGET_RC .AND. OSEDIC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'SEDI', PRCS(:, :) * PRHODJ(:, :)) + IF (BUCONF%LBUDGET_RC .AND. PARAMI%LSEDIC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'SEDI', PRCS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'SEDI', PRRS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'SEDI', PRIS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RH .AND. KRR==7) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:, :) * PRHODJ(:, :)) - IF(HSEDIM=='STAT') THEN + IF(PARAMI%CSEDIM=='STAT') THEN IF (KRR==7) THEN DO JK = IKTB,IKTE DO JIJ = IIJB,IIJE @@ -1652,11 +1646,11 @@ IF(PARAMI%LSEDIM_AFTER) THEN ENDIF PINPRS(IIJB:IIJE) = PINPRS(IIJB:IIJE) + ZINPRI(IIJB:IIJE) !No negativity correction here as we apply sedimentation on PR.S*PTSTEP variables - ELSEIF(HSEDIM=='SPLI') THEN + ELSEIF(PARAMI%CSEDIM=='SPLI') THEN !SR: It *seems* that we must have two separate calls for ifort IF(KRR==7) THEN CALL ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, & - &PTSTEP, KRR, OSEDIC, PDZZ, & + &PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, & &PRHODREF, PPABST, PTHT, ZT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & @@ -1664,7 +1658,7 @@ IF(PARAMI%LSEDIM_AFTER) THEN &PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR) ELSE CALL ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, & - &PTSTEP, KRR, OSEDIC, PDZZ, & + &PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, & &PRHODREF, PPABST, PTHT, ZT, PRHODJ, & &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,& &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, & @@ -1686,12 +1680,12 @@ IF(PARAMI%LSEDIM_AFTER) THEN &PRIS, PRSS, PRGS, & &PTHS, ZZ_LVFACT, ZZ_LSFACT, PRHS) ELSE - CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'RAIN_ICE', 'no sedimentation scheme for HSEDIM='//HSEDIM) + CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'RAIN_ICE', 'no sedimentation scheme for PARAMI%CSEDIM='//PARAMI%CSEDIM) END IF ! !* 8.2 budget storage ! - IF (BUCONF%LBUDGET_RC .AND. OSEDIC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'SEDI', PRCS(:, :) * PRHODJ(:, :)) + IF (BUCONF%LBUDGET_RC .AND. PARAMI%LSEDIC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'SEDI', PRCS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'SEDI', PRRS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'SEDI', PRIS(:, :) * PRHODJ(:, :)) IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:, :) * PRHODJ(:, :)) diff --git a/src/common/turb/mode_compute_mf_cloud.F90 b/src/common/turb/mode_compute_mf_cloud.F90 index 6f7e83422b10fcd52e99c0b8774d853851e0328a..a764897a5c167bd57778240b24e676d379808139 100644 --- a/src/common/turb/mode_compute_mf_cloud.F90 +++ b/src/common/turb/mode_compute_mf_cloud.F90 @@ -12,7 +12,7 @@ CONTAINS ! ! ######spl SUBROUTINE COMPUTE_MF_CLOUD(D, CST, CSTURB, PARAMMF, OSTATNW, & - KRR, KRRL, KRRI, HMF_CLOUD, & + KRR, KRRL, KRRI, & PFRAC_ICE, & PRC_UP,PRI_UP,PEMF, & PTHL_UP, PRT_UP, PFRAC_UP, & @@ -88,7 +88,6 @@ TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. INTEGER, INTENT(IN) :: KRRI ! number of ice water var. -CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud scheme LOGICAL, INTENT(IN) :: OSTATNW ! cloud scheme inclues convect. covar. contrib REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PFRAC_ICE ! liquid/ice fraction REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRC_UP,PRI_UP,PEMF! updraft characteritics @@ -124,13 +123,13 @@ PRI_MF = 0. PCF_MF = 0. PSIGMF = 0. -IF (HMF_CLOUD == 'DIRE') THEN +IF (PARAMMF%CMF_CLOUD == 'DIRE') THEN !Direct cloud scheme CALL COMPUTE_MF_CLOUD_DIRECT(D, PARAMMF, & &KKLCL(:), PFRAC_UP(:,:), PRC_UP(:,:), PRI_UP(:,:),& &PRC_MF(:,:), PRI_MF(:,:), PCF_MF(:,:)) ! -ELSEIF (HMF_CLOUD == 'STAT') THEN +ELSEIF (PARAMMF%CMF_CLOUD == 'STAT') THEN !Statistical scheme using the PDF proposed by Bougeault (81, 82) and !Bechtold et al (95). CALL COMPUTE_MF_CLOUD_STAT(D, CST, CSTURB, PARAMMF, & @@ -140,7 +139,7 @@ ELSEIF (HMF_CLOUD == 'STAT') THEN &PDZZ, PTHM, PEXNM,& &PEMF, PTHL_UP, PRT_UP,& &PSIGMF) -ELSEIF (HMF_CLOUD == 'BIGA') THEN +ELSEIF (PARAMMF%CMF_CLOUD == 'BIGA') THEN !Statistical scheme using the bi-gaussian PDF proposed by E. Perraud. CALL COMPUTE_MF_CLOUD_BIGAUS(D, CST, PARAMMF,& &PEMF, PDEPTH,& @@ -149,11 +148,11 @@ ELSEIF (HMF_CLOUD == 'BIGA') THEN &PDZZ, PZZ, PRHODREF,& &PRC_MF, PRI_MF, PCF_MF) ! -ELSEIF (HMF_CLOUD == 'NONE') THEN +ELSEIF (PARAMMF%CMF_CLOUD == 'NONE') THEN ! No CONVECTIVE CLOUD SCHEME ! Nothing to do: PRC_MF, PRI_MF, PCF_MF, PSIGMF are already filled with zero ELSE - CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPUTE_MF_CLOUD','Shallow convection cloud scheme not valid: HMF_CLOUD='//TRIM(HMF_CLOUD)) + CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPUTE_MF_CLOUD','Shallow convection cloud scheme not valid: PARAMMF%CMF_CLOUD='//TRIM(PARAMMF%CMF_CLOUD)) ENDIF IF (LHOOK) CALL DR_HOOK('COMPUTE_MF_CLOUD',1,ZHOOK_HANDLE) diff --git a/src/common/turb/mode_compute_updraft.F90 b/src/common/turb/mode_compute_updraft.F90 index 9bafea7b160b62b45cb2dd6150525ca8e2f8b00a..5e9389b857af9b3b61dec13310470696b4287d21 100644 --- a/src/common/turb/mode_compute_updraft.F90 +++ b/src/common/turb/mode_compute_updraft.F90 @@ -9,9 +9,9 @@ ! IMPLICIT NONE CONTAINS - SUBROUTINE COMPUTE_UPDRAFT(D, CST, NEB, PARAMMF, TURB, CSTURB, & + SUBROUTINE COMPUTE_UPDRAFT(D,CST,NEB,PARAMMF,TURBN,CSTURB, & KSV, HFRAC_ICE, & - OENTR_DETR,OMIXUV, & + OENTR_DETR, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PZZ,PDZZ, & PSFTH,PSFRV, & @@ -91,12 +91,11 @@ TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CST_t), INTENT(IN) :: CST TYPE(NEB_t), INTENT(IN) :: NEB TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF -TYPE(TURB_t), INTENT(IN) :: TURB +TYPE(TURB_t), INTENT(IN) :: TURBN TYPE(CSTURB_t), INTENT(IN) :: CSTURB INTEGER, INTENT(IN) :: KSV CHARACTER(LEN=1), INTENT(IN) :: HFRAC_ICE ! partition liquid/ice scheme LOGICAL, INTENT(IN) :: OENTR_DETR! flag to recompute entrainment, detrainment and mass flux -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer @@ -381,7 +380,7 @@ IF (OENTR_DETR) THEN ZTKEM_F(IIJB:IIJE,IKB)=0. !$mnh_end_expand_array(JIJ=IIJB:IIJE) ! - IF(TURB%CTURBLEN=='RM17') THEN + IF(TURBN%CTURBLEN=='RM17') THEN CALL GZ_M_W_MF(D, PUM, PDZZ, ZWK) CALL MZF_MF(D, ZWK, ZDUDZ) CALL GZ_M_W_MF(D, PVM, PDZZ, ZWK) @@ -533,7 +532,7 @@ DO JK=IKB,IKE-IKL,IKL ENDIF ENDDO - IF(OMIXUV) THEN + IF(PARAMMF%LMIXUV) THEN IF(JK/=IKB) THEN !$mnh_expand_where(JIJ=IIJB:IIJE) WHERE(GTEST(IIJB:IIJE)) @@ -567,7 +566,7 @@ DO JK=IKB,IKE-IKL,IKL ENDWHERE !$mnh_end_expand_where(JIJ=IIJB:IIJE) ENDIF - ENDIF !OMIXUV + ENDIF !PARAMMF%LMIXUV DO JSV=1,KSV IF (ONOMIXLG .AND. JSV >= KSV_LGBEG .AND. JSV<= KSV_LGEND) CYCLE !$mnh_expand_where(JIJ=IIJB:IIJE) diff --git a/src/common/turb/mode_compute_updraft_raha.F90 b/src/common/turb/mode_compute_updraft_raha.F90 index fa7e5a37183d046300202625a98b2639ed53ae5f..042afa8ffb717fd0f20f8cca318a6d38c9b49054 100644 --- a/src/common/turb/mode_compute_updraft_raha.F90 +++ b/src/common/turb/mode_compute_updraft_raha.F90 @@ -10,7 +10,7 @@ IMPLICIT NONE CONTAINS SUBROUTINE COMPUTE_UPDRAFT_RAHA(D, CST, NEB, PARAMMF, & - KSV, HFRAC_ICE, OENTR_DETR, OMIXUV, & + KSV, HFRAC_ICE, OENTR_DETR, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PZZ,PDZZ, & PSFTH,PSFRV, & @@ -81,7 +81,6 @@ TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF INTEGER, INTENT(IN) :: KSV CHARACTER(LEN=1), INTENT(IN) :: HFRAC_ICE ! partition liquid/ice scheme LOGICAL, INTENT(IN) :: OENTR_DETR! flag to recompute entrainment, detrainment and mass flux -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer @@ -467,7 +466,7 @@ DO JK=IKB,IKE-IKL,IKL ENDWHERE - IF(OMIXUV) THEN + IF(PARAMMF%LMIXUV) THEN IF(JK/=IKB) THEN WHERE(GTEST(IIJB:IIJE)) PU_UP(IIJB:IIJE,JK+IKL) = (PU_UP(IIJB:IIJE,JK)*(1-0.5*ZMIX2(IIJB:IIJE)) + & diff --git a/src/common/turb/mode_compute_updraft_rhcj10.F90 b/src/common/turb/mode_compute_updraft_rhcj10.F90 index 4aabe9609bf64a2532746ae6f725bfac571e732d..5a4a9cfa0a5ff4edf72b4f626614bc0498528d00 100644 --- a/src/common/turb/mode_compute_updraft_rhcj10.F90 +++ b/src/common/turb/mode_compute_updraft_rhcj10.F90 @@ -10,9 +10,9 @@ IMPLICIT NONE CONTAINS ! -SUBROUTINE COMPUTE_UPDRAFT_RHCJ10(D, CST, NEB, PARAMMF, TURB, CSTURB, & +SUBROUTINE COMPUTE_UPDRAFT_RHCJ10(D,CST,NEB,PARAMMF,TURBN,CSTURB, & KSV, HFRAC_ICE, & - OENTR_DETR,OMIXUV, & + OENTR_DETR, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PZZ,PDZZ, & PSFTH,PSFRV, & @@ -84,12 +84,11 @@ TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CST_t), INTENT(IN) :: CST TYPE(NEB_t), INTENT(IN) :: NEB TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF -TYPE(TURB_t), INTENT(IN) :: TURB +TYPE(TURB_t), INTENT(IN) :: TURBN TYPE(CSTURB_t), INTENT(IN) :: CSTURB INTEGER, INTENT(IN) :: KSV CHARACTER(LEN=1), INTENT(IN) :: HFRAC_ICE ! partition liquid/ice scheme -LOGICAL, INTENT(IN) :: OENTR_DETR! flag to recompute entrainment, detrainment and mass flux -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum +LOGICAL, INTENT(IN) :: OENTR_DETR! flag to recompute entrainment, detrainment and mass flux LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer @@ -361,7 +360,7 @@ GLMIX=.TRUE. ZTKEM_F(IIJB:IIJE,IKB)=0. !$mnh_end_expand_array(JIJ=IIJB:IIJE) ! -IF(TURB%CTURBLEN=='RM17') THEN +IF(TURBN%CTURBLEN=='RM17') THEN CALL GZ_M_W_MF(D, PUM, PDZZ, ZWK) CALL MZF_MF(D, ZWK, ZDUDZ) CALL GZ_M_W_MF(D, PVM, PDZZ, ZWK) @@ -502,7 +501,7 @@ DO JK=IKB,IKE-IKL,IKL ENDDO - IF(OMIXUV) THEN + IF(PARAMMF%LMIXUV) THEN IF(JK/=IKB) THEN DO JIJ=IIJB,IIJE IF(GTEST(JIJ)) THEN diff --git a/src/common/turb/mode_mf_turb.F90 b/src/common/turb/mode_mf_turb.F90 index d8ad3420190aaffe414ef9f2e96531807568fcda..f168dfc9606cf5ea552063937da23328a00a934e 100644 --- a/src/common/turb/mode_mf_turb.F90 +++ b/src/common/turb/mode_mf_turb.F90 @@ -8,7 +8,7 @@ ! IMPLICIT NONE CONTAINS - SUBROUTINE MF_TURB(D, KSV, OMIXUV, & + SUBROUTINE MF_TURB(D, KSV, OMIXUV, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PIMPL, PTSTEP, & PDZZ, & diff --git a/src/common/turb/mode_mf_turb_expl.F90 b/src/common/turb/mode_mf_turb_expl.F90 index d7b3eb76aeea03a28845d844ceeaffbbd063754b..79fc3919e2eaa1ad73986573b672e0ef3787812c 100644 --- a/src/common/turb/mode_mf_turb_expl.F90 +++ b/src/common/turb/mode_mf_turb_expl.F90 @@ -7,9 +7,8 @@ ! ###################### IMPLICIT NONE CONTAINS - SUBROUTINE MF_TURB_EXPL(D, PARAMMF, OMIXUV, & - PRHODJ, & - PTHLM,PTHVM,PRTM,PUM,PVM, & + SUBROUTINE MF_TURB_EXPL(D, PARAMMF, & + PRHODJ,PTHLM,PTHVM,PRTM,PUM,PVM, & PTHLDT,PRTDT,PUDT,PVDT, & PEMF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP, & PFLXZTHLMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF) @@ -66,7 +65,6 @@ IMPLICIT NONE TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRHODJ ! dry density * Grid size @@ -157,7 +155,7 @@ PFLXZTHVMF(IIJB:IIJE,1:IKT) = PEMF(IIJB:IIJE,1:IKT)*(PTHV_UP(IIJB:IIJE,1:IKT)-P ZFLXZTHSMF(IIJB:IIJE,1:IKT) = PEMF(IIJB:IIJE,1:IKT)*(ZTHS_UP(IIJB:IIJE,1:IKT)-ZTHSM(IIJB:IIJE,1:IKT)) ! Theta S flux !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) -IF (OMIXUV) THEN +IF (PARAMMF%LMIXUV) THEN CALL MZM_MF(D, PUM(:,:), PFLXZUMF(:,:)) CALL MZM_MF(D, PVM(:,:), PFLXZVMF(:,:)) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) @@ -186,7 +184,7 @@ DO JK=IKB,IKE-IKL,IKL ENDDO END DO -IF (OMIXUV) THEN +IF (PARAMMF%LMIXUV) THEN DO JK=IKB,IKE-IKL,IKL DO JIJ=IIJB,IIJE PUDT(JIJ,JK) = (PFLXZUMF(JIJ,JK) - PFLXZUMF(JIJ,JK+IKL)) / PRHODJ(JIJ,JK) diff --git a/src/common/turb/modi_shallow_mf.F90 b/src/common/turb/modi_shallow_mf.F90 index bf7b71ab1e56b85c3c09348dd005ea8bbead3aba..05f08da98b4dda90a701cf8f2f55bf2f450d4244 100644 --- a/src/common/turb/modi_shallow_mf.F90 +++ b/src/common/turb/modi_shallow_mf.F90 @@ -6,8 +6,7 @@ INTERFACE ! ################################################################# SUBROUTINE SHALLOW_MF(D, CST, NEB, PARAMMF, TURB, CSTURB, & KRR, KRRL, KRRI, KSV, & - HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,OSTATNW, & - ONOMIXLG,KSV_LGBEG,KSV_LGEND, & + HFRAC_ICE,ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PIMPL_MF, PTSTEP, & PDZZ, PZZ, & PRHODJ, PRHODREF, & @@ -44,14 +43,8 @@ INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. INTEGER, INTENT(IN) :: KRRI ! number of ice water var. INTEGER, INTENT(IN) :: KSV -CHARACTER (LEN=4), INTENT(IN) :: HMF_UPDRAFT ! Type of Mass Flux Scheme - ! 'NONE' if no parameterization -CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud - ! scheme CHARACTER*1, INTENT(IN) :: HFRAC_ICE ! partition liquid/ice scheme -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer -LOGICAL, INTENT(IN) :: OSTATNW ! cloud scheme inclues convect. covar. contrib INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer REAL, INTENT(IN) :: PIMPL_MF ! degre of implicitness diff --git a/src/common/turb/shallow_mf.F90 b/src/common/turb/shallow_mf.F90 index 7315b0f8b636904144109b08afe2a0dd024f1801..f1c692e126ab555a1fda74359ff0680c710f8657 100644 --- a/src/common/turb/shallow_mf.F90 +++ b/src/common/turb/shallow_mf.F90 @@ -4,10 +4,9 @@ !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ################################################################ - SUBROUTINE SHALLOW_MF(D, CST, NEB, PARAMMF, TURB, CSTURB, & + SUBROUTINE SHALLOW_MF(D, CST, NEB, PARAMMF, TURBN, CSTURB, & KRR, KRRL, KRRI, KSV, & - HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV, OSTATNW, & - ONOMIXLG,KSV_LGBEG,KSV_LGEND, & + HFRAC_ICE,ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PIMPL_MF, PTSTEP, & PDZZ, PZZ, & PRHODJ, PRHODREF, & @@ -100,19 +99,13 @@ TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(CST_t), INTENT(IN) :: CST TYPE(NEB_t), INTENT(IN) :: NEB TYPE(PARAM_MFSHALL_t), INTENT(IN) :: PARAMMF -TYPE(TURB_t), INTENT(IN) :: TURB +TYPE(TURB_t), INTENT(IN) :: TURBN TYPE(CSTURB_t), INTENT(IN) :: CSTURB INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. INTEGER, INTENT(IN) :: KRRI ! number of ice water var. INTEGER, INTENT(IN) :: KSV -CHARACTER(LEN=4), INTENT(IN) :: HMF_UPDRAFT ! Type of Mass Flux Scheme - ! 'NONE' if no parameterization -CHARACTER(LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud - ! scheme CHARACTER(LEN=1), INTENT(IN) :: HFRAC_ICE ! partition liquid/ice scheme -LOGICAL, INTENT(IN) :: OSTATNW ! cloud scheme inclues convect. covar. contrib -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer @@ -198,7 +191,7 @@ IIJB=D%NIJB IKT=D%NKT ! ! updraft governing variables -IF (HMF_UPDRAFT == 'EDKF' .OR. HMF_UPDRAFT == 'RHCJ') THEN +IF (PARAMMF%CMF_UPDRAFT == 'EDKF' .OR. PARAMMF%CMF_UPDRAFT == 'RHCJ') THEN PENTR = 1.E20 PDETR = 1.E20 PEMF = 1.E20 @@ -233,10 +226,10 @@ ZTHVM(IIJB:IIJE,1:IKT) = PTHM(IIJB:IIJE,1:IKT)*& !!! 2. Compute updraft !!! --------------- ! -IF (HMF_UPDRAFT == 'EDKF') THEN +IF (PARAMMF%CMF_UPDRAFT == 'EDKF') THEN GENTR_DETR = .TRUE. - CALL COMPUTE_UPDRAFT(D, CST, NEB, PARAMMF, TURB, CSTURB, & - KSV, HFRAC_ICE, GENTR_DETR, OMIXUV, & + CALL COMPUTE_UPDRAFT(D, CST, NEB, PARAMMF, TURBN, CSTURB, & + KSV, HFRAC_ICE, GENTR_DETR, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PZZ,PDZZ, & PSFTH,PSFRV,PPABSM,PRHODREF, & @@ -247,10 +240,10 @@ IF (HMF_UPDRAFT == 'EDKF') THEN PFRAC_UP,ZFRAC_ICE_UP,ZRSAT_UP,PEMF,PDETR,& PENTR,ZBUO_INTEG,KKLCL,KKETL,KKCTL,ZDEPTH,& PDX,PDY) -ELSEIF (HMF_UPDRAFT == 'RHCJ') THEN +ELSEIF (PARAMMF%CMF_UPDRAFT == 'RHCJ') THEN GENTR_DETR = .TRUE. - CALL COMPUTE_UPDRAFT_RHCJ10(D, CST, NEB, PARAMMF, TURB, CSTURB,& - KSV, HFRAC_ICE, GENTR_DETR, OMIXUV, & + CALL COMPUTE_UPDRAFT_RHCJ10(D, CST, NEB, PARAMMF, TURBN, CSTURB,& + KSV, HFRAC_ICE, GENTR_DETR, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PZZ,PDZZ, & PSFTH,PSFRV,PPABSM,PRHODREF, & @@ -260,9 +253,9 @@ ELSEIF (HMF_UPDRAFT == 'RHCJ') THEN PTHV_UP, PW_UP, PU_UP, PV_UP, ZSV_UP, & PFRAC_UP,ZFRAC_ICE_UP,ZRSAT_UP,PEMF,PDETR,& PENTR,ZBUO_INTEG,KKLCL,KKETL,KKCTL,ZDEPTH ) -ELSEIF (HMF_UPDRAFT == 'RAHA') THEN +ELSEIF (PARAMMF%CMF_UPDRAFT == 'RAHA') THEN CALL COMPUTE_UPDRAFT_RAHA(D, CST, NEB, PARAMMF, & - KSV, HFRAC_ICE, GENTR_DETR, OMIXUV, & + KSV, HFRAC_ICE, GENTR_DETR, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PZZ,PDZZ, & PSFTH,PSFRV, & @@ -275,18 +268,18 @@ ELSEIF (HMF_UPDRAFT == 'RAHA') THEN PEMF,PDETR,PENTR, & ZBUO_INTEG,KKLCL,KKETL,KKCTL, & ZDEPTH ) -ELSEIF (HMF_UPDRAFT == 'DUAL') THEN +ELSEIF (PARAMMF%CMF_UPDRAFT == 'DUAL') THEN !Updraft characteristics are already computed and received by interface ELSE - CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'SHALLOW_MF', 'no updraft model for EDKF: CMF_UPDRAFT='//TRIM(HMF_UPDRAFT) ) + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'SHALLOW_MF', 'no updraft model for EDKF: CMF_UPDRAFT='//TRIM(PARAMMF%CMF_UPDRAFT) ) ENDIF !!! 5. Compute diagnostic convective cloud fraction and content !!! -------------------------------------------------------- ! -CALL COMPUTE_MF_CLOUD(D, CST, CSTURB, PARAMMF, OSTATNW, & +CALL COMPUTE_MF_CLOUD(D,CST,CSTURB,PARAMMF,TURBN%OSTATNW,& KRR, KRRL, KRRI, & - HMF_CLOUD,ZFRAC_ICE, & + ZFRAC_ICE, & PRC_UP,PRI_UP,PEMF, & PTHL_UP,PRT_UP,PFRAC_UP, & PTHV_UP,ZFRAC_ICE_UP, & @@ -305,7 +298,7 @@ ZEMF_O_RHODREF(IIJB:IIJE,1:IKT)=PEMF(IIJB:IIJE,1:IKT)/PRHODREF(IIJB:IIJE,1:IKT) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) IF ( PIMPL_MF > 1.E-10 ) THEN - CALL MF_TURB(D, KSV, OMIXUV, & + CALL MF_TURB(D, KSV, PARAMMF%LMIXUV, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & PIMPL_MF, PTSTEP, & PDZZ, & @@ -316,17 +309,16 @@ IF ( PIMPL_MF > 1.E-10 ) THEN PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF, & ZFLXZSVMF ) ELSE - CALL MF_TURB_EXPL(D, PARAMMF, OMIXUV, & - PRHODJ, & - ZTHLM,ZTHVM,ZRTM,PUM,PVM, & + CALL MF_TURB_EXPL(D, PARAMMF, & + PRHODJ,ZTHLM,ZTHVM,ZRTM,PUM,PVM, & PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF, & ZEMF_O_RHODREF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP, & PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF) ENDIF -! security in the case HMF_UPDRAFT = 'DUAL' +! security in the case PARAMMF%CMF_UPDRAFT = 'DUAL' ! to be modified if 'DUAL' is evolving (momentum mixing for example) -IF( HMF_UPDRAFT == 'DUAL') THEN +IF( PARAMMF%CMF_UPDRAFT == 'DUAL') THEN ! Now thetav_up from vdfhghtnn is used! PFLXZTHVMF=0. ! Yes/No UV mixing! diff --git a/src/mesonh/ext/phys_paramn.f90 b/src/mesonh/ext/phys_paramn.f90 index d675a0fa55c067275825bc94638a0e417c56b9a1..7769b3e049783309ec80c1841696b0d001b8f256 100644 --- a/src/mesonh/ext/phys_paramn.f90 +++ b/src/mesonh/ext/phys_paramn.f90 @@ -1634,7 +1634,7 @@ IF (CSCONV == 'EDKF') THEN CALL CLEANLIST_ll(TZFIELDS_ll) CALL MPPDB_CHECK3D(ZEXN,"physparam.7::ZEXN",PRECISION) ! - CALL SHALLOW_MF_PACK(NRR,NRRL,NRRI, CMF_UPDRAFT, CMF_CLOUD, LMIXUV, & + CALL SHALLOW_MF_PACK(NRR,NRRL,NRRI, & LMF_FLX,TPFILE,ZTIME_LES_MF, & XIMPL_MF, XTSTEP, & XDZZ, XZZ,XDXHAT(1),XDYHAT(1), & diff --git a/src/mesonh/ext/resolved_cloud.f90 b/src/mesonh/ext/resolved_cloud.f90 index e254dca18ecf083ae66f8e6888aacbc6c0fc711b..de801f6af6b57543a3c919338819a40dd82793a0 100644 --- a/src/mesonh/ext/resolved_cloud.f90 +++ b/src/mesonh/ext/resolved_cloud.f90 @@ -813,9 +813,9 @@ SELECT CASE ( HCLOUD ) ZZZ = MZF( PZZ ) IF(LRED .AND. LADJ_BEFORE) THEN CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM, NEB, TURBN, TBUCONF, KRR, & - CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & - 'ADJU', OSUBG_COND, OSIGMAS, .FALSE., .FALSE., & - CSUBG_MF_PDF, PTSTEP, ZSIGQSAT2D, & + CFRAC_ICE_ADJUST, & + 'ADJU', .FALSE., .FALSE., & + PTSTEP, ZSIGQSAT2D, & PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV,PMFCONV, PPABST, ZZZ, & ZEXN, PCF_MF, PRC_MF, PRI_MF, & ZDUM, ZDUM, ZDUM, ZDUM, ZDUM, & @@ -846,8 +846,7 @@ SELECT CASE ( HCLOUD ) PRS(IIB:IIE,IJB:IJE,IKB:IKE,6)>ZRSMIN(6) CALL RAIN_ICE (YLDIMPHYEX,CST, PARAM_ICE, RAIN_ICE_PARAM, RAIN_ICE_DESCR,TBUCONF,& COUNT(LLMICRO), COUNT(LLMICRO), & - OSEDIC, .FALSE.,CSEDIM, HSUBG_AUCV, CSUBG_AUCV_RI,& - OWARM, & + .FALSE., HSUBG_AUCV, CSUBG_AUCV_RI,& PTSTEP, KRR, LLMICRO, ZEXN, & ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & @@ -880,9 +879,9 @@ SELECT CASE ( HCLOUD ) ! IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM, NEB, TURBN, TBUCONF, KRR, & - CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & - 'DEPI', OSUBG_COND, OSIGMAS, .FALSE., .FALSE., & - CSUBG_MF_PDF, PTSTEP, ZSIGQSAT2D, & + CFRAC_ICE_ADJUST, & + 'DEPI', .FALSE., .FALSE., & + PTSTEP, ZSIGQSAT2D, & PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,PPABST, ZZZ, & ZEXN, PCF_MF, PRC_MF, PRI_MF, & ZDUM, ZDUM, ZDUM, ZDUM, ZDUM, & @@ -918,9 +917,9 @@ SELECT CASE ( HCLOUD ) ZZZ = MZF( PZZ ) IF(LRED .AND. LADJ_BEFORE) THEN CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM, NEB, TURBN, TBUCONF, KRR, & - CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & - 'ADJU', OSUBG_COND, OSIGMAS, .FALSE., .FALSE., & - CSUBG_MF_PDF, PTSTEP, ZSIGQSAT2D, & + CFRAC_ICE_ADJUST, & + 'ADJU', .FALSE., .FALSE., & + PTSTEP, ZSIGQSAT2D, & PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV,PMFCONV, PPABST, ZZZ, & ZEXN, PCF_MF, PRC_MF, PRI_MF, & ZDUM, ZDUM, ZDUM, ZDUM, ZDUM, & @@ -954,8 +953,7 @@ SELECT CASE ( HCLOUD ) PRS(IIB:IIE,IJB:IJE,IKB:IKE,7)>ZRSMIN(7) CALL RAIN_ICE (YLDIMPHYEX,CST, PARAM_ICE, RAIN_ICE_PARAM, RAIN_ICE_DESCR,TBUCONF,& COUNT(LLMICRO), COUNT(LLMICRO), & - OSEDIC, .FALSE., CSEDIM, HSUBG_AUCV, CSUBG_AUCV_RI,& - OWARM, & + .FALSE., HSUBG_AUCV, CSUBG_AUCV_RI,& PTSTEP, KRR, LLMICRO, ZEXN, & ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF,& @@ -990,9 +988,9 @@ SELECT CASE ( HCLOUD ) ! IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM, NEB, TURBN, TBUCONF, KRR, & - CFRAC_ICE_ADJUST, CCONDENS, CLAMBDA3, & - 'DEPI', OSUBG_COND, OSIGMAS, .FALSE., .FALSE., & - CSUBG_MF_PDF, PTSTEP, ZSIGQSAT2D, & + CFRAC_ICE_ADJUST, & + 'DEPI', .FALSE., .FALSE., & + PTSTEP, ZSIGQSAT2D, & PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,PPABST, ZZZ, & ZEXN, PCF_MF, PRC_MF, PRI_MF, & ZDUM, ZDUM, ZDUM, ZDUM, ZDUM, & diff --git a/src/mesonh/ext/shallow_mf_pack.f90 b/src/mesonh/ext/shallow_mf_pack.f90 index 987241ec8cffdf15454ec1a528542ca7c7f4150d..786e1bb6d57f987d4e50313c4449604b35570027 100644 --- a/src/mesonh/ext/shallow_mf_pack.f90 +++ b/src/mesonh/ext/shallow_mf_pack.f90 @@ -10,7 +10,6 @@ INTERFACE ! ################################################################# SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI, & - HMF_UPDRAFT, HMF_CLOUD, OMIXUV, & OMF_FLX,TPFILE,PTIME_LES, & PIMPL_MF, PTSTEP, & PDZZ, PZZ, PDX,PDY, & @@ -31,11 +30,6 @@ use modd_precision, only: MNHTIME INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. INTEGER, INTENT(IN) :: KRRI ! number of ice water var. -CHARACTER (LEN=4), INTENT(IN) :: HMF_UPDRAFT! Type of Mass Flux Scheme - ! 'NONE' if no parameterization -CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud - ! scheme -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum LOGICAL, INTENT(IN) :: OMF_FLX ! switch to write the ! MF fluxes in the synchronous FM-file TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file @@ -74,7 +68,6 @@ END MODULE MODI_SHALLOW_MF_PACK ! ################################################################# SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI, & - HMF_UPDRAFT, HMF_CLOUD, OMIXUV, & OMF_FLX,TPFILE,PTIME_LES, & PIMPL_MF, PTSTEP, & PDZZ, PZZ, PDX,PDY, & @@ -160,11 +153,6 @@ IMPLICIT NONE INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. INTEGER, INTENT(IN) :: KRRI ! number of ice water var. -CHARACTER (LEN=4), INTENT(IN) :: HMF_UPDRAFT! Type of Mass Flux Scheme - ! 'NONE' if no parameterization -CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud - ! scheme -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum LOGICAL, INTENT(IN) :: OMF_FLX ! switch to write the ! MF fluxes in the synchronous FM-file TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file @@ -339,9 +327,7 @@ ZSFRV(:)=RESHAPE(PSFRV(:,:),(/ IIU*IJU /) ) LSTATNW = .FALSE. CALL SHALLOW_MF(YLDIMPHYEXPACK, CST, NEB, PARAM_MFSHALLN, TURBN, CSTURB,& KRR,KRRL,KRRI,ISV, & - HMF_UPDRAFT, HMF_CLOUD, CFRAC_ICE_SHALLOW_MF, OMIXUV, & - LSTATNW, & - LNOMIXLG,NSV_LGBEG,NSV_LGEND, & + CFRAC_ICE_SHALLOW_MF,LNOMIXLG,NSV_LGBEG,NSV_LGEND, & PIMPL_MF, PTSTEP, & ZDZZ, ZZZ, & ZRHODJ,ZRHODREF, & diff --git a/src/testprogs/ice_adjust/main_ice_adjust.F90 b/src/testprogs/ice_adjust/main_ice_adjust.F90 index 8bf8401d9cdd7fe7340c2a69a91615407829466f..b19d3d19c253b4bb027e0310fa0c466bdfad3037 100644 --- a/src/testprogs/ice_adjust/main_ice_adjust.F90 +++ b/src/testprogs/ice_adjust/main_ice_adjust.F90 @@ -67,15 +67,10 @@ INTEGER :: IBL, JLON, JLEV TYPE(DIMPHYEX_t) :: D, D0 TYPE(RAIN_ICE_PARAM_t) :: ICEP CHARACTER(LEN=1) :: HFRAC_ICE -CHARACTER(LEN=80) :: HCONDENS -CHARACTER(LEN=4) :: HLAMBDA3 CHARACTER(LEN=4) :: HBUNAME -LOGICAL :: OSUBG_COND -LOGICAL :: OSIGMAS LOGICAL :: OCND2 LOGICAL :: LHGT_QS LOGICAL :: LMFCONV -CHARACTER(LEN=80) :: HSUBG_MF_PDF REAL :: PTSTEP TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RI) :: YLBUDGET LOGICAL :: LLCHECK @@ -173,14 +168,14 @@ ICEP%XBCRIAUTI = -3.3840957210994582 HFRAC_ICE = 'S' -HCONDENS = 'CB02' -HLAMBDA3 = 'CB' +TURBN%CCONDENS = 'CB02' +TURBN%LLAMBDA3 = 'CB' HBUNAME = 'DEPI' -OSUBG_COND = .TRUE. -OSIGMAS = .TRUE. +TURBN%LSUBG_COND = .TRUE. +TURBN%LSIGMAS = .TRUE. OCND2 = .FALSE. LHGT_QS = .FALSE. -HSUBG_MF_PDF = 'TRIANGLE' +TURBN%CSUBG_MF_PDF = 'TRIANGLE' PTSTEP = 50.000000000000000 LMFCONV = .TRUE. DO JRR=1, NBUDGET_RI @@ -274,15 +269,15 @@ JBLK2 = (NGPBLKS * (ITID+1)) / NTID YLSTACK%U = 0 #endif - CALL ICE_ADJUST (D, CST, ICEP, NEB, TURBN, TBUCONF, KRR, HFRAC_ICE, HCONDENS, HLAMBDA3, HBUNAME, OSUBG_COND, & - & OSIGMAS, OCND2, LHGT_QS, HSUBG_MF_PDF, PTSTEP, ZSIGQSAT (:, :, IBL), PRHODJ=PRHODJ (:, :, :, IBL), & - & PEXNREF=PEXNREF (:, :, :, IBL), & + CALL ICE_ADJUST (D, CST, ICEP, NEB, TURBN, TBUCONF, KRR, HFRAC_ICE, HBUNAME, & + & OCND2, LHGT_QS, PTSTEP, ZSIGQSAT (:, :, IBL), PRHODJ=PRHODJ (:, :, :, IBL), & + & PEXNREF=PEXNREF (:, :, :, IBL), & & PRHODREF=PRHODREF (:, :, :, IBL), PSIGS=PSIGS (:, :, :, IBL), LMFCONV=LMFCONV, PMFCONV=PMFCONV (:, :, :, IBL), & & PPABST=PPABSM (:, :, :, IBL), PZZ=ZZZ (:, :, :, IBL), PEXN=PEXNREF (:, :, :, IBL), PCF_MF=PCF_MF (:, :, :, IBL), & & PRC_MF=PRC_MF (:, :, :, IBL), PRI_MF=PRI_MF (:, :, :, IBL), & & PICLDFR=ZDUM1(:, :, :, IBL), PWCLDFR=ZDUM2(:, :, :, IBL), PSSIO=ZDUM3(:, :, :, IBL), & - & PSSIU=ZDUM4(:, :, :, IBL), PIFR=ZDUM5(:, :, :, IBL), & - & PRV=ZRS(:, :, :, 1, IBL), PRC=ZRS(:, :, :, 2, IBL), & + & PSSIU=ZDUM4(:, :, :, IBL), PIFR=ZDUM5(:, :, :, IBL), & + & PRV=ZRS(:, :, :, 1, IBL), PRC=ZRS(:, :, :, 2, IBL), & & PRVS=PRS(:, :, :, 1, IBL), PRCS=PRS(:, :, :, 2, IBL), PTH=ZRS(:, :, :, 0, IBL), PTHS=PTHS (:, :, :, IBL), & & OCOMPUTE_SRC=.TRUE., & & PSRCS=PSRCS (:, :, :, IBL), PCLDFR=PCLDFR (:, :, :, IBL), PRR=ZRS(:, :, :, 3, IBL), PRI=ZRS(:, :, :, 4, IBL), & diff --git a/src/testprogs/rain_ice/main_rain_ice.F90 b/src/testprogs/rain_ice/main_rain_ice.F90 index b9c3522f28d59a1ac2f7120dae89565578357c72..2f1fa18699aec824bee618e5a4e41288f6e15572 100644 --- a/src/testprogs/rain_ice/main_rain_ice.F90 +++ b/src/testprogs/rain_ice/main_rain_ice.F90 @@ -59,7 +59,6 @@ INTEGER :: IBL, JLON, JLEV TYPE(DIMPHYEX_t) :: D, D0 CHARACTER (LEN=4) :: CSUBG_AUCV_RC CHARACTER (LEN=80) :: CSUBG_AUCV_RI -LOGICAL :: OSEDIC CHARACTER (LEN=4) :: CSEDIM CHARACTER (LEN=4) :: CMICRO REAL :: PTSTEP @@ -134,7 +133,6 @@ CMICRO='ICE3' PTSTEP = 25.0000000000000 KRR = 6 -OSEDIC = .TRUE. OCND2 = .FALSE. CSEDIM = 'STAT' CSUBG_AUCV_RC = 'PDF' @@ -148,6 +146,9 @@ ZCRIAUTC=0.1E-2 CALL INIT_PHYEX (20, OWARM, CMICRO, CSEDIM, & & LCRIAUTI, ZCRIAUTI, ZT0CRIAUTI, ZCRIAUTC) + +PARAM_ICE%LSEDIC = .TRUE. + DO JRR=1, NBUDGET_RH YLBUDGET(JRR)%NBUDGET=JRR ENDDO @@ -244,9 +245,8 @@ ISIZE=IPROMA CALL RAIN_ICE (D, CST, PARAM_ICE, RAIN_ICE_PARAM, & & RAIN_ICE_DESCR, TBUCONF, & & IPROMA, ISIZE, & - & OSEDIC=OSEDIC, OCND2=OCND2, HSEDIM=CSEDIM, & + & OCND2=OCND2, & & HSUBG_AUCV_RC=CSUBG_AUCV_RC, HSUBG_AUCV_RI=CSUBG_AUCV_RI,& - & OWARM=OWARM, & & PTSTEP=2*PTSTEP, & & KRR=KRR, ODMICRO=LLMICRO(:,:,:,IBL), PEXN=PEXNREF(:,:,:,IBL), & & PDZZ=PDZZ(:,:,:,IBL), PRHODJ=PRHODJ(:,:,:,IBL), PRHODREF=PRHODREF(:,:,:,IBL),PEXNREF=PEXNREF2(:,:,:,IBL),& diff --git a/src/testprogs/shallow/main_shallow.F90 b/src/testprogs/shallow/main_shallow.F90 index 726217260f30b9c34a305a49bf2da6aa2b04f300..8a7a8310d1393593c9a982603a46614f726d76fd 100644 --- a/src/testprogs/shallow/main_shallow.F90 +++ b/src/testprogs/shallow/main_shallow.F90 @@ -303,9 +303,7 @@ JBLK2 = (NGPBLKS * (ITID+1)) / NTID CALL SHALLOW_MF(D, CST, NEB, PARAM_MFSHALLN, TURBN, CSTURB, & &KRR=KRR, KRRL=KRRL, KRRI=KRRI, KSV=KSV, & - &HMF_UPDRAFT=HMF_UPDRAFT, HMF_CLOUD=HMF_CLOUD,HFRAC_ICE=HFRAC_ICE,OMIXUV=OMIXUV, & - &OSTATNW=OSTATNW, & - &ONOMIXLG=ONOMIXLG,KSV_LGBEG=KSV_LGBEG,KSV_LGEND=KSV_LGEND, & + &HFRAC_ICE=HFRAC_ICE,ONOMIXLG=ONOMIXLG,KSV_LGBEG=KSV_LGBEG,KSV_LGEND=KSV_LGEND, & &PIMPL_MF=ZIMPL, PTSTEP=PTSTEP, & &PDZZ=PDZZF(:,:,:,IBL),PZZ=PZZ(:,:,:,IBL), & &PRHODJ=PRHODJ(:,:,:,IBL),PRHODREF=PRHODREF(:,:,:,IBL), &