diff --git a/src/arome/ext/apl_arome.F90 b/src/arome/ext/apl_arome.F90 index 3edaa857d8a7de60ab767141308f7fb84c5874dc..563db9a3932cd8f7b0af1ff2e91e0dd8331ddce4 100644 --- a/src/arome/ext/apl_arome.F90 +++ b/src/arome/ext/apl_arome.F90 @@ -3176,7 +3176,7 @@ IF (LMICRO) THEN & ZINPRS_NOTINCR_, ZINPRG_NOTINCR_, ZINPRH_NOTINCR_, ZPFPR_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH, YDMODEL%YRML_DIAG%YRMDDH& & ) ELSE - CALL ARO_RAIN_ICE (CST, PARAM_ICEN, RAIN_ICE_PARAMN, RAIN_ICE_DESCRN, CLOUDPARN, TURBN, & + CALL ARO_RAIN_ICE (CST, PARAM_ICEN, RAIN_ICE_PARAMN, RAIN_ICE_DESCRN, CLOUDPARN, & & YDCPG_OPTS%KFLEVG,IKU,IKL,YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG,YDCPG_BNDS%KFDIA,NRR,YDCPG_OPTS%KSTEP+1, & & CMICRO, ZDT, ZDZZ_, & & ZRHODJM__(:, 1:YDCPG_OPTS%KFLEVG), ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), ZEXNREFM_, ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), & diff --git a/src/arome/ext/aro_adjust.F90 b/src/arome/ext/aro_adjust.F90 index 470e8fc64ee0d15b70ddf2dd6f113e5d7d38d6aa..9a3e901117a346ff8b048fdd75f041aaf702a4e9 100644 --- a/src/arome/ext/aro_adjust.F90 +++ b/src/arome/ext/aro_adjust.F90 @@ -386,7 +386,8 @@ ZZZ(KIDIA:KFDIA,:,:) = PZZF(KIDIA:KFDIA,:,:) !* 9.2 Perform the saturation adjustment over cloud ice and cloud water ! IF (KRR==6) THEN - CALL ICE_ADJUST ( YLDIMPHYEX, CST=CST, ICEP=RAIN_ICE_PARAMN, NEBN=NEBN, TURBN=TURBN, BUCONF=TBUCONF, KRR=KRR,& + CALL ICE_ADJUST ( YLDIMPHYEX, CST=CST, ICEP=RAIN_ICE_PARAMN, NEBN=NEBN, TURBN=TURBN, & + & PARAMI=PARAM_ICEN, BUCONF=TBUCONF, KRR=KRR,& & HBUNAME=HBUNAME, & & OCND2=PARAM_ICEN%LOCND2, & & PTSTEP=ZTWOTSTEP,PSIGQSAT=ZSIGQSAT, & @@ -407,7 +408,8 @@ IF (KRR==6) THEN & PHLC_HRC=PHLC_HRC(:,:,:), PHLC_HCF=PHLC_HCF(:,:,:), & & PHLI_HRI=PHLI_HRI(:,:,:), PHLI_HCF=PHLI_HCF(:,:,:)) ELSE - CALL ICE_ADJUST ( YLDIMPHYEX, CST=CST, ICEP=RAIN_ICE_PARAMN, NEBN=NEBN, TURBN=TURBN, BUCONF=TBUCONF, KRR=KRR,& + CALL ICE_ADJUST ( YLDIMPHYEX, CST=CST, ICEP=RAIN_ICE_PARAMN, NEBN=NEBN, TURBN=TURBN, & + & PARAMI=PARAM_ICEN, BUCONF=TBUCONF, KRR=KRR,& & HBUNAME=HBUNAME, & & OCND2=PARAM_ICEN%LOCND2, & & PTSTEP=ZTWOTSTEP,PSIGQSAT=ZSIGQSAT, & diff --git a/src/arome/ext/aro_rain_ice.F90 b/src/arome/ext/aro_rain_ice.F90 index 54b29c0a147a67e590770f2690407edcb79aea7f..de0701394f56be3be3bbaeeb56a874bbc9810c2b 100644 --- a/src/arome/ext/aro_rain_ice.F90 +++ b/src/arome/ext/aro_rain_ice.F90 @@ -1,5 +1,5 @@ ! ######spl - SUBROUTINE ARO_RAIN_ICE(CST, PARAM_ICEN, RAIN_ICE_PARAMN, RAIN_ICE_DESCRN, CLOUDPARN, TURBN, & + SUBROUTINE ARO_RAIN_ICE(CST, PARAM_ICEN, RAIN_ICE_PARAMN, RAIN_ICE_DESCRN, CLOUDPARN, & KKA,KKU,KKL,KLON,KLEV, KFDIA, KRR, KTCOUNT,& CMICRO, & PTSTEP, PDZZ, PRHODJ, PRHODREF, PEXNREF,& @@ -93,7 +93,6 @@ USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_CLOUDPAR_N, ONLY: CLOUDPAR_t -USE MODD_TURB_n, ONLY: TURB_t USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t ! USE MODD_BUDGET, ONLY: TBUDGETDATA, NBUDGET_RH, TBUCONF @@ -122,7 +121,6 @@ TYPE(PARAM_ICE_t), INTENT(IN) :: PARAM_ICEN TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: RAIN_ICE_PARAMN TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: RAIN_ICE_DESCRN TYPE(CLOUDPAR_t), INTENT(IN) :: CLOUDPARN -TYPE(TURB_t), INTENT(IN) :: TURBN INTEGER, INTENT(IN) :: KKA !near ground array index INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO @@ -361,7 +359,7 @@ ENDDO ! IF (CMICRO=='ICE4' .AND. PARAM_ICEN%LRED) THEN CALL RAIN_ICE( YLDIMPHYEX, CST, PARAM_ICEN, RAIN_ICE_PARAMN, & - & RAIN_ICE_DESCRN, TURBN, TBUCONF, & + & RAIN_ICE_DESCRN, TBUCONF, & & PTSTEP=2*PTSTEP, & & KRR=KRR, PEXN=PEXNREF, & & PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF, PEXNREF=PEXNREF,& @@ -383,7 +381,7 @@ IF (CMICRO=='ICE4' .AND. PARAM_ICEN%LRED) THEN & PRHT=PRT(:,:,:,7), PRHS=PRS(:,:,:,7), PINPRH=PINPRH, PFPR=PFPR) ELSEIF (CMICRO=='ICE3' .AND. PARAM_ICEN%LRED) THEN CALL RAIN_ICE( YLDIMPHYEX, CST, PARAM_ICEN, RAIN_ICE_PARAMN, & - & RAIN_ICE_DESCRN, TURBN, TBUCONF, & + & RAIN_ICE_DESCRN, TBUCONF, & & PTSTEP=2*PTSTEP, & & KRR=KRR, PEXN=PEXNREF, & & PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF,PEXNREF=PEXNREF,& @@ -421,7 +419,7 @@ ELSEIF (CMICRO=='ICE4' .AND. .NOT. PARAM_ICEN%LRED) THEN ZKGN_SBGR(:,:) = RAIN_ICE_PARAMN%XFRMIN(11) ENDIF CALL RAIN_ICE_OLD( OSEDIC=PARAM_ICEN%LSEDIC, OCND2=PARAM_ICEN%LOCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, & - & HSEDIM=PARAM_ICEN%CSEDIM, HSUBG_AUCV_RC=TURBN%CSUBG_AUCV_RC, & + & HSEDIM=PARAM_ICEN%CSEDIM, HSUBG_AUCV_RC=PARAM_ICEN%CSUBG_AUCV_RC, & & OWARM=PARAM_ICEN%LWARM,KKA=KKA,KKU=KKU,KKL=KKL,KSPLITR=CLOUDPARN%NSPLITR, & & PTSTEP=2*PTSTEP, KRR=KRR, & & PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF, PEXNREF=PEXNREF,& @@ -463,7 +461,7 @@ ELSE ZKGN_SBGR(:,:) = RAIN_ICE_PARAMN%XFRMIN(11) ENDIF CALL RAIN_ICE_OLD( OSEDIC=PARAM_ICEN%LSEDIC, OCND2=PARAM_ICEN%LOCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, & - & HSEDIM=PARAM_ICEN%CSEDIM, HSUBG_AUCV_RC=TURBN%CSUBG_AUCV_RC, & + & HSEDIM=PARAM_ICEN%CSEDIM, HSUBG_AUCV_RC=PARAM_ICEN%CSUBG_AUCV_RC, & & OWARM=PARAM_ICEN%LWARM,KKA=KKA,KKU=KKU,KKL=KKL,KSPLITR=CLOUDPARN%NSPLITR, & & PTSTEP=2*PTSTEP, KRR=KRR, & & PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF, PEXNREF=PEXNREF,& diff --git a/src/arome/ext/aro_rain_ice.h b/src/arome/ext/aro_rain_ice.h index 0aebef62e2365bdfa9b47a810b21fe0877c06434..23b1137f56b5a573815672fb3129cb679db39ccd 100644 --- a/src/arome/ext/aro_rain_ice.h +++ b/src/arome/ext/aro_rain_ice.h @@ -1,5 +1,5 @@ INTERFACE - SUBROUTINE ARO_RAIN_ICE(CST, PARAM_ICEN, RAIN_ICE_PARAMN, RAIN_ICE_DESCRN, CLOUDPARN, TURBN, & + SUBROUTINE ARO_RAIN_ICE(CST, PARAM_ICEN, RAIN_ICE_PARAMN, RAIN_ICE_DESCRN, CLOUDPARN, & & KKA,KKU,KKL,KLON,KLEV, KFDIA,KRR, KTCOUNT,& & CMICRO,& & PTSTEP, PDZZ, PRHODJ, PRHODREF, PEXNREF,& @@ -22,13 +22,11 @@ USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_CLOUDPAR_N, ONLY: CLOUDPAR_t -USE MODD_TURB_n, ONLY: TURB_t TYPE(CST_t), INTENT(IN) :: CST TYPE(PARAM_ICE_t), INTENT(IN) :: PARAM_ICEN TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: RAIN_ICE_PARAMN TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: RAIN_ICE_DESCRN TYPE(CLOUDPAR_t), INTENT(IN) :: CLOUDPARN -TYPE(TURB_t), INTENT(IN) :: TURBN INTEGER(KIND=JPIM), INTENT(IN) :: KKA INTEGER(KIND=JPIM), INTENT(IN) :: KKU INTEGER(KIND=JPIM), INTENT(IN) :: KKL diff --git a/src/common/aux/ini_phyex.F90 b/src/common/aux/ini_phyex.F90 index 5b20690f36ee0183088d3c8ce7288869015d48e0..4ea8a0d66a4fd5bf64cf0241e0480049c75f7a69 100644 --- a/src/common/aux/ini_phyex.F90 +++ b/src/common/aux/ini_phyex.F90 @@ -11,12 +11,13 @@ SUBROUTINE INI_PHYEX(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, KFROM, KTO, & &NEBN_IN, NEBN_OUT) ! USE MODD_CST, ONLY: CST, CST_t, PRINT_CST -USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_GOTO_MODEL, PARAM_ICEN_INIT, PARAM_ICEN, PARAM_ICE_t +USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_GOTO_MODEL, PARAM_ICEN_INIT, PARAM_ICEN, PARAM_ICE_t, & + & CSUBG_AUCV_RC, CSUBG_AUCV_RI USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_GOTO_MODEL, RAIN_ICE_DESCRN, RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_GOTO_MODEL, RAIN_ICE_PARAMN, RAIN_ICE_PARAM_t USE MODD_CLOUDPAR_N, ONLY: CLOUDPAR_GOTO_MODEL, CLOUDPARN, CLOUDPAR_t USE MODD_PARAM_MFSHALL_N,ONLY: PARAM_MFSHALLN, PARAM_MFSHALL_t, PARAM_MFSHALLN_INIT, PARAM_MFSHALL_GOTO_MODEL -USE MODD_TURB_N, ONLY: TURBN, TURB_t, TURBN_INIT, TURB_GOTO_MODEL +USE MODD_TURB_N, ONLY: TURBN, TURB_t, TURBN_INIT, TURB_GOTO_MODEL, CCONDENS USE MODD_CTURB, ONLY: CSTURB, CSTURB_t, CTURB_ASSOCIATE USE MODD_NEB_N, ONLY: NEBN, NEB_t, NEBN_INIT, NEB_GOTO_MODEL ! @@ -27,6 +28,8 @@ USE MODE_INI_SNOW, ONLY: INI_SNOW USE MODE_INI_MFSHALL, ONLY: INI_MFSHALL USE MODE_INI_TURB, ONLY: INI_TURB ! +USE MODE_MSG, ONLY: PRINT_MSG, NVERB_FATAL +! !! !! *INI_PHYEX* - PHYEX initialisation routine !! @@ -93,13 +96,15 @@ TYPE(NEB_t), OPTIONAL, INTENT(INOUT) :: NEBN_OUT !< Struc !execution when the same structure is given for the _IN and the _OUT argument. !When INITENT(INOUT) is used, execution is OK on ifort. -LOGICAL :: LLINIT, LLCHANGEMODEL +LOGICAL :: LLINIT, LLCHANGEMODEL, LLCHECK INTEGER :: IPRINT ! !** ARGUMENTS ! LLINIT=.TRUE. IF(PRESENT(LDINIT)) LLINIT=LDINIT +LLCHECK=.TRUE. +IF(PRESENT(LDCHECK)) LLCHECK=LDCHECK LLCHANGEMODEL=.TRUE. IF(PRESENT(LDCHANGEMODEL)) LLCHANGEMODEL=LDCHANGEMODEL IPRINT=0 @@ -197,6 +202,16 @@ IF(.TRUE.) THEN !Placeholder for configuration without cloud scheme or a differe IF(PRESENT(NEBN_OUT)) NEBN_OUT=NEBN ENDIF - +! +!** GLOBAL CONSISTENCY TESTS +! +IF(LLCHECK) THEN + IF((CMICRO=='ICE3' .OR. CMICRO=='ICE4' .OR. CMICRO=='LIMA') .AND. CTURB=='TKEL') THEN + IF ((CSUBG_AUCV_RC == 'ADJU' .OR. CSUBG_AUCV_RI == 'ADJU') .AND. CCONDENS /= 'GAUS') THEN + CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'INI_PHYEX', & + &"CSUBG_AUCV_RC and/or CSUBG_AUCV_RI cannot be 'ADJU' if CCONDENS is not 'GAUS'") + ENDIF + ENDIF +ENDIF END SUBROUTINE INI_PHYEX diff --git a/src/common/micro/ice_adjust.F90 b/src/common/micro/ice_adjust.F90 index 8626915f9a04af1f1e5df3a897aa940d1ed90fdd..1a2433df6a73f349f595e51ce112c1fc521c8213 100644 --- a/src/common/micro/ice_adjust.F90 +++ b/src/common/micro/ice_adjust.F90 @@ -4,7 +4,7 @@ !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ########################################################################## - SUBROUTINE ICE_ADJUST (D, CST, ICEP, NEBN, TURBN, BUCONF, KRR, & + SUBROUTINE ICE_ADJUST (D, CST, ICEP, NEBN, TURBN, PARAMI, BUCONF, KRR, & &HBUNAME, OCND2, & &PTSTEP, PSIGQSAT, & &PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,& @@ -115,6 +115,7 @@ USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_CST, ONLY: CST_t USE MODD_NEB_n, ONLY: NEB_t USE MODD_TURB_n, ONLY: TURB_t +USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RI USE MODD_RAIN_ICE_PARAM_n, ONLY : RAIN_ICE_PARAM_t ! @@ -133,6 +134,7 @@ TYPE(CST_t), INTENT(IN) :: CST TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP TYPE(NEB_t), INTENT(IN) :: NEBN TYPE(TURB_t), INTENT(IN) :: TURBN +TYPE(PARAM_ICE_t), INTENT(IN) :: PARAMI TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KRR ! Number of moist variables CHARACTER(LEN=4), INTENT(IN) :: HBUNAME ! Name of the budget @@ -338,12 +340,12 @@ DO JK=IKTB,IKTE ! IF(PRESENT(PHLC_HRC) .AND. PRESENT(PHLC_HCF)) THEN ZCRIAUT=ICEP%XCRIAUTC/PRHODREF(JIJ,JK) - IF(TURBN%CSUBG_MF_PDF=='NONE')THEN + IF(PARAMI%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(TURBN%CSUBG_MF_PDF=='TRIANGLE')THEN + ELSEIF(PARAMI%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 @@ -366,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(TURBN%CSUBG_MF_PDF=='NONE')THEN + IF(PARAMI%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(TURBN%CSUBG_MF_PDF=='TRIANGLE')THEN + ELSEIF(PARAMI%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 diff --git a/src/common/micro/modd_param_icen.F90 b/src/common/micro/modd_param_icen.F90 index 6515ad73bced11b5da60ba1489c04286c0233427..78100cba203bd7c09ec7c9dd083fbd34edc79522 100644 --- a/src/common/micro/modd_param_icen.F90 +++ b/src/common/micro/modd_param_icen.F90 @@ -71,6 +71,9 @@ REAL :: XTSTEP_TS !< Approximative time step for time-splitting (0 for no ti CHARACTER(LEN=80) :: CSUBG_RC_RR_ACCR !< subgrid rc-rr accretion CHARACTER(LEN=80) :: CSUBG_RR_EVAP !< subgrid rr evaporation CHARACTER(LEN=80) :: CSUBG_PR_PDF !< pdf for subgrid precipitation +CHARACTER(LEN=4) :: CSUBG_AUCV_RC !< type of subgrid rc->rr autoconv. method +CHARACTER(LEN=80) :: CSUBG_AUCV_RI !< type of subgrid ri->rs autoconv. method +CHARACTER(LEN=80) :: CSUBG_MF_PDF !< PDF to use for MF cloud autoconversions ! LOGICAL :: LADJ_BEFORE !< must we perform an adjustment before rain_ice call LOGICAL :: LADJ_AFTER !< must we perform an adjustment after rain_ice call @@ -146,6 +149,9 @@ CHARACTER(LEN=4), POINTER :: CSNOWRIMING => NULL() CHARACTER(LEN=80),POINTER :: CSUBG_RC_RR_ACCR => NULL() CHARACTER(LEN=80),POINTER :: CSUBG_RR_EVAP => NULL() CHARACTER(LEN=80),POINTER :: CSUBG_PR_PDF => NULL() +CHARACTER(LEN=4),POINTER :: CSUBG_AUCV_RC=>NULL() +CHARACTER(LEN=80),POINTER :: CSUBG_AUCV_RI=>NULL() +CHARACTER(LEN=80),POINTER :: CSUBG_MF_PDF=>NULL() ! NAMELIST/NAM_PARAM_ICEn/LWARM,LSEDIC,LCONVHG,CPRISTINE_ICE,CSEDIM,LDEPOSC,XVDEPOSC, & LRED, LFEEDBACKT, & @@ -154,10 +160,10 @@ NAMELIST/NAM_PARAM_ICEn/LWARM,LSEDIC,LCONVHG,CPRISTINE_ICE,CSEDIM,LDEPOSC,XVDEPO LADJ_BEFORE, LADJ_AFTER, LCRFLIMIT, & XSPLIT_MAXCFL, LSEDIM_AFTER, LSNOW_T, & LPACK_INTERP, LPACK_MICRO, NPROMICRO, CSUBG_RC_RR_ACCR, & - CSUBG_RR_EVAP, CSUBG_PR_PDF, & + CSUBG_RR_EVAP, CSUBG_PR_PDF, CSUBG_AUCV_RC, CSUBG_AUCV_RI, & LCRIAUTI, XCRIAUTI_NAM, XT0CRIAUTI_NAM, XBCRIAUTI_NAM, & XACRIAUTI_NAM, XCRIAUTC_NAM, XRDEPSRED_NAM, XRDEPGRED_NAM, & - LOCND2, XFRMIN_NAM + LOCND2, XFRMIN_NAM, CSUBG_MF_PDF ! !------------------------------------------------------------------------------- ! @@ -217,6 +223,9 @@ IF(.NOT. ASSOCIATED(PARAM_ICEN, PARAM_ICE_MODEL(KTO))) THEN CSUBG_RC_RR_ACCR => PARAM_ICEN%CSUBG_RC_RR_ACCR CSUBG_RR_EVAP => PARAM_ICEN%CSUBG_RR_EVAP CSUBG_PR_PDF => PARAM_ICEN%CSUBG_PR_PDF + CSUBG_AUCV_RC=>PARAM_ICEN%CSUBG_AUCV_RC + CSUBG_AUCV_RI=>PARAM_ICEN%CSUBG_AUCV_RI + CSUBG_MF_PDF=>PARAM_ICEN%CSUBG_MF_PDF ENDIF END SUBROUTINE PARAM_ICE_GOTO_MODEL ! @@ -311,6 +320,9 @@ IF(LLDEFAULTVAL) THEN CSUBG_RC_RR_ACCR='NONE' CSUBG_RR_EVAP='NONE' CSUBG_PR_PDF='SIGM' + CSUBG_AUCV_RC='NONE' + CSUBG_AUCV_RI='NONE' + CSUBG_MF_PDF='TRIANGLE' LADJ_BEFORE=.TRUE. LADJ_AFTER=.TRUE. LSEDIM_AFTER=.FALSE. @@ -355,6 +367,7 @@ IF(LLDEFAULTVAL) THEN CSEDIM='STAT' LSEDIC=.FALSE. XMRSTEP=0. + CSUBG_AUCV_RC='PDF' ENDIF ENDIF ! @@ -376,6 +389,9 @@ IF(LLCHECK) THEN CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CSUBG_RR_EVAP', CSUBG_RR_EVAP, 'NONE', 'CLFR', 'PRFR') CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CSUBG_PR_PDF', CSUBG_PR_PDF, 'SIGM', 'HLCRECTPD', 'HLCTRIANGPDF', & 'HLCQUADRAPDF', 'HLCISOTRIPDF') + CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CSUBG_AUCV_RC', CSUBG_AUCV_RC, 'PDF ', 'CLFR', 'NONE', 'ADJU', 'SIGM') + CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CSUBG_AUCV_RI', CSUBG_AUCV_RI, 'NONE', 'CLFR', 'ADJU') + CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CSUBG_MF_PDF', CSUBG_MF_PDF, 'NONE', 'TRIANGLE') CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CSNOWRIMING', CSNOWRIMING, 'OLD ', 'M90 ') CALL CHECK_NAM_VAL_REAL(KLUOUT, 'XTSTEP_TS', XTSTEP_TS, '>=', 0.) CALL CHECK_NAM_VAL_REAL(KLUOUT, 'XSPLIT_MAXCFL', XSPLIT_MAXCFL, '>', 0., '<=', 1.) diff --git a/src/common/micro/mode_ice4_pack.F90 b/src/common/micro/mode_ice4_pack.F90 index ce16e87037ba6ef022b2227e4e85f52b82f6858a..5e6a03346f77608db5b8bf76b7245fc5f9670ce9 100644 --- a/src/common/micro/mode_ice4_pack.F90 +++ b/src/common/micro/mode_ice4_pack.F90 @@ -8,7 +8,6 @@ IMPLICIT NONE CONTAINS SUBROUTINE ICE4_PACK(D, CST, PARAMI, ICEP, ICED, BUCONF, & KPROMA, KSIZE, KSIZE2, & - HSUBG_AUCV_RC, HSUBG_AUCV_RI, & PTSTEP, KRR, ODMICRO, PEXN, & PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, & PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & @@ -82,8 +81,6 @@ TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KPROMA ! cache-blocking factor for microphysic loop INTEGER, INTENT(IN) :: KSIZE INTEGER, INTENT(IN) :: KSIZE2 -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 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 @@ -175,8 +172,8 @@ IKTE=D%NKTE IIJB=D%NIJB IIJE=D%NIJE GEXT_TEND=.TRUE. -LLSIGMA_RC=(HSUBG_AUCV_RC=='PDF ' .AND. PARAMI%CSUBG_PR_PDF=='SIGM') -LL_AUCV_ADJU=(HSUBG_AUCV_RC=='ADJU' .OR. HSUBG_AUCV_RI=='ADJU') +LLSIGMA_RC=(PARAMI%CSUBG_AUCV_RC=='PDF ' .AND. PARAMI%CSUBG_PR_PDF=='SIGM') +LL_AUCV_ADJU=(PARAMI%CSUBG_AUCV_RC=='ADJU' .OR. PARAMI%CSUBG_AUCV_RI=='ADJU') ! IF(PARAMI%LPACK_MICRO) THEN IF(KPROMA /= KSIZE) THEN @@ -305,7 +302,6 @@ IF(PARAMI%LPACK_MICRO) THEN &LLSIGMA_RC, LL_AUCV_ADJU, GEXT_TEND, & &KPROMA, IMICRO, LLMICRO, PTSTEP, & &KRR, & - &HSUBG_AUCV_RC, HSUBG_AUCV_RI, & &ZEXN, ZRHODREF, I1, I2, & &ZPRES, ZCF, ZSIGMA_RC, & &ZCIT, & @@ -381,7 +377,6 @@ ELSE ! PARAMI%LPACK_MICRO &LLSIGMA_RC, LL_AUCV_ADJU, GEXT_TEND, & &KSIZE, KSIZE, ODMICRO, PTSTEP, & &KRR, & - &HSUBG_AUCV_RC, HSUBG_AUCV_RI, & &PEXN, PRHODREF, I1TOT, I2TOT, & &PPABST, PCLDFR, ZSIGMA_RC, & &PCIT, & diff --git a/src/common/micro/mode_ice4_stepping.F90 b/src/common/micro/mode_ice4_stepping.F90 index 8159115de1ffc5eac2ee57c48e645c34adf39501..6fd32a009e3428675d869915e9204d487cab9f5c 100644 --- a/src/common/micro/mode_ice4_stepping.F90 +++ b/src/common/micro/mode_ice4_stepping.F90 @@ -10,7 +10,6 @@ SUBROUTINE ICE4_STEPPING(D, CST, PARAMI, ICEP, ICED, BUCONF, & &LDSIGMA_RC, LDAUCV_ADJU, LDEXT_TEND, & &KPROMA, KMICRO, LDMICRO, PTSTEP, & &KRR, & - &HSUBG_AUCV_RC, HSUBG_AUCV_RI, & &PEXN, PRHODREF, K1, K2, & &PPRES, PCF, PSIGMA_RC, & &PCIT, & @@ -69,8 +68,6 @@ INTEGER, INTENT(IN) :: KMICRO ! Case r_x>0 locations LOGICAL, DIMENSION(KPROMA), INTENT(IN) :: LDMICRO REAL, INTENT(IN) :: PTSTEP ! Double Time step (single if cold start) INTEGER, INTENT(IN) :: KRR ! Number of moist variable -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 ! REAL, DIMENSION(KPROMA), INTENT(IN) :: PEXN ! Exner function REAL, DIMENSION(KPROMA), INTENT(IN) :: PRHODREF! Reference density @@ -242,7 +239,6 @@ DO WHILE(ANY(ZTIME(1:KMICRO)<PTSTEP)) ! Loop to *really* compute tendencies CALL ICE4_TENDENCIES(D, CST, PARAMI, ICEP, ICED, BUCONF, & &KPROMA, KMICRO, & &KRR, LSOFT, LLCOMPUTE, & - &HSUBG_AUCV_RC, HSUBG_AUCV_RI, & &PEXN, PRHODREF, ZLVFACT, ZLSFACT, K1, K2, & &PPRES, PCF, PSIGMA_RC, & &PCIT, & diff --git a/src/common/micro/mode_ice4_tendencies.F90 b/src/common/micro/mode_ice4_tendencies.F90 index 628013a0a37f5947e927b85220099f88d3b01c49..b7f06a6f91be42051308289746d21d1891ac954e 100644 --- a/src/common/micro/mode_ice4_tendencies.F90 +++ b/src/common/micro/mode_ice4_tendencies.F90 @@ -8,7 +8,6 @@ IMPLICIT NONE CONTAINS SUBROUTINE ICE4_TENDENCIES(D, CST, PARAMI, ICEP, ICED, BUCONF, KPROMA, KSIZE, & &KRR, ODSOFT, LDCOMPUTE, & - &HSUBG_AUCV_RC, HSUBG_AUCV_RI, & &PEXN, PRHODREF, PLVFACT, PLSFACT, K1, K2, & &PPRES, PCF, PSIGMA_RC, & &PCIT, & @@ -77,8 +76,6 @@ INTEGER, INTENT(IN) :: KPROMA, KSIZE INTEGER, INTENT(IN) :: KRR LOGICAL, INTENT(IN) :: ODSOFT LOGICAL, DIMENSION(KPROMA), INTENT(IN) :: LDCOMPUTE -CHARACTER(LEN=4), INTENT(IN) :: HSUBG_AUCV_RC -CHARACTER(LEN=80), INTENT(IN) :: HSUBG_AUCV_RI REAL, DIMENSION(KPROMA), INTENT(IN) :: PEXN REAL, DIMENSION(KPROMA), INTENT(IN) :: PRHODREF REAL, DIMENSION(KPROMA), INTENT(IN) :: PLVFACT @@ -240,7 +237,7 @@ ELSE ENDIF ! ODSOFT ! !Cloud water split between high and low content part is done here -CALL ICE4_COMPUTE_PDF(CST, ICEP, ICED, KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, PARAMI%CSUBG_PR_PDF,& +CALL ICE4_COMPUTE_PDF(CST, ICEP, ICED, KSIZE, PARAMI%CSUBG_AUCV_RC, PARAMI%CSUBG_AUCV_RI, PARAMI%CSUBG_PR_PDF,& PRHODREF, ZVART(:,IRC), ZVART(:,IRI), PCF, ZT, PSIGMA_RC, & PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, & PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, ZRAINFR) diff --git a/src/common/micro/modi_ice_adjust.F90 b/src/common/micro/modi_ice_adjust.F90 index 7bb590e574123e66084feaa71c9581b7bd24919a..e6c625fb70c3f91ce8b1ec061c3ce5037fdf70c9 100644 --- a/src/common/micro/modi_ice_adjust.F90 +++ b/src/common/micro/modi_ice_adjust.F90 @@ -4,7 +4,7 @@ ! INTERFACE ! - SUBROUTINE ICE_ADJUST (D, CST, ICEP, NEBN, TURBN, BUCONF, KRR, & + SUBROUTINE ICE_ADJUST (D, CST, ICEP, NEBN, TURBN, PARAMI, BUCONF, KRR, & &HBUNAME, OCND2, & &PTSTEP, PSIGQSAT, & &PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,& @@ -23,6 +23,7 @@ USE MODD_CST, ONLY: CST_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t USE MODD_NEB_n, ONLY: NEB_t USE MODD_TURB_n, ONLY: TURB_t +USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t IMPLICIT NONE ! @@ -35,6 +36,7 @@ TYPE(CST_t), INTENT(IN) :: CST TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP TYPE(NEB_t), INTENT(IN) :: NEBN TYPE(TURB_t), INTENT(IN) :: TURBN +TYPE(PARAM_ICE_t), INTENT(IN) :: PARAMI TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KRR ! Number of moist variables CHARACTER(LEN=4), INTENT(IN) :: HBUNAME ! Name of the budget diff --git a/src/common/micro/modi_rain_ice.F90 b/src/common/micro/modi_rain_ice.F90 index 61d6e807f5fec6d59437c638bb71826fb772fc29..96a81c4c9f02a12507ca7ef07109defa79b2a6fa 100644 --- a/src/common/micro/modi_rain_ice.F90 +++ b/src/common/micro/modi_rain_ice.F90 @@ -3,7 +3,7 @@ ! #################### ! INTERFACE - SUBROUTINE RAIN_ICE ( D, CST, PARAMI, ICEP, ICED, TURBN, BUCONF, & + SUBROUTINE RAIN_ICE ( D, CST, PARAMI, ICEP, ICED, BUCONF, & PTSTEP, KRR, PEXN, & PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & @@ -30,7 +30,6 @@ TYPE(CST_t), INTENT(IN) :: CST TYPE(PARAM_ICE_t), INTENT(IN) :: PARAMI TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED -TYPE(TURB_t), INTENT(IN) :: TURBN TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF 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 ce55490dbf3bb09d93defd8e77c60f50e009b62c..b18dc90af8bb179ac69ff5de482da6d6087f2ede 100644 --- a/src/common/micro/rain_ice.F90 +++ b/src/common/micro/rain_ice.F90 @@ -4,7 +4,7 @@ !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ######spl - SUBROUTINE RAIN_ICE ( D, CST, PARAMI, ICEP, ICED, TURBN, BUCONF, & + SUBROUTINE RAIN_ICE ( D, CST, PARAMI, ICEP, ICED, BUCONF, & PTSTEP, KRR, PEXN, & PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & @@ -217,7 +217,6 @@ TYPE(CST_t), INTENT(IN) :: CST TYPE(PARAM_ICE_t), INTENT(IN) :: PARAMI TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED -TYPE(TURB_t), INTENT(IN) :: TURBN TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF REAL, INTENT(IN) :: PTSTEP ! Double Time step (single if cold start) INTEGER, INTENT(IN) :: KRR ! Number of moist variable @@ -471,7 +470,6 @@ ENDIF !This part is put in another routine to separate pack/unpack operations from computations CALL ICE4_PACK(D, CST, PARAMI, ICEP, ICED, BUCONF, & IPROMA, ISIZE, ISIZE2, & - TURBN%CSUBG_AUCV_RC, TURBN%CSUBG_AUCV_RI, & PTSTEP, KRR, LLMICRO, PEXN, & PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, & PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & diff --git a/src/common/turb/modd_turbn.F90 b/src/common/turb/modd_turbn.F90 index 5d48aeea79d11a3bb793a8f376c1e517d4be7fe7..6ac0307a2bfc94b1b51ae72dba631fad132db540 100644 --- a/src/common/turb/modd_turbn.F90 +++ b/src/common/turb/modd_turbn.F90 @@ -84,11 +84,8 @@ TYPE TURB_t CHARACTER(LEN=4) :: CTOM !< type of Third Order Moments: !! 'NONE' none; !! 'TM06' Tomas Masson 2006 - CHARACTER(LEN=4) :: CSUBG_AUCV_RC !< type of subgrid rc->rr autoconv. method - CHARACTER(LEN=80) :: CSUBG_AUCV_RI !< type of subgrid ri->rs autoconv. method CHARACTER(LEN=80) :: CCONDENS !< subrgrid condensation PDF CHARACTER(LEN=4) :: CLAMBDA3 !< lambda3 choice for subgrid cloud scheme - CHARACTER(LEN=80) :: CSUBG_MF_PDF !< PDF to use for MF cloud autoconversions ! REAL, DIMENSION(:,:), POINTER :: XBL_DEPTH=>NULL() ! BL depth for TOMS computations ! REAL, DIMENSION(:,:), POINTER :: XSBL_DEPTH=>NULL()! SurfaceBL depth for RMC01 computations @@ -140,11 +137,8 @@ LOGICAL, POINTER :: LRMC01=>NULL() LOGICAL, POINTER :: LHARAT=>NULL() LOGICAL, POINTER :: LSTATNW=>NULL() CHARACTER(LEN=4),POINTER :: CTOM=>NULL() -CHARACTER(LEN=4),POINTER :: CSUBG_AUCV_RC=>NULL() -CHARACTER(LEN=80),POINTER :: CSUBG_AUCV_RI=>NULL() CHARACTER(LEN=80),POINTER :: CCONDENS=>NULL() CHARACTER(LEN=4),POINTER :: CLAMBDA3=>NULL() -CHARACTER(LEN=80),POINTER :: CSUBG_MF_PDF=>NULL() REAL, DIMENSION(:,:), POINTER :: XBL_DEPTH=>NULL() REAL, DIMENSION(:,:), POINTER :: XSBL_DEPTH=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XWTHVMF=>NULL() @@ -166,9 +160,9 @@ REAL, POINTER :: XCLDTHOLD=>NULL() REAL, POINTER :: XLINI=>NULL() ! NAMELIST/NAM_TURBn/XIMPL,CTURBLEN,CTURBDIM,LTURB_FLX,LTURB_DIAG, & - LSUBG_COND,LSIGMAS,LSIG_CONV,LRMC01,CTOM,CSUBG_AUCV_RC,& - XTKEMIN,VSIGQSAT,XCED,XCTP,XCADAP,CSUBG_AUCV_RI,CCONDENS,& - CLAMBDA3,CSUBG_MF_PDF,LLEONARD,XCOEFHGRADTHL, XCOEFHGRADRM, & + LSUBG_COND,LSIGMAS,LSIG_CONV,LRMC01,CTOM,& + XTKEMIN,VSIGQSAT,XCED,XCTP,XCADAP,CCONDENS,& + CLAMBDA3,LLEONARD,XCOEFHGRADTHL, XCOEFHGRADRM, & XALTHGRAD, XCLDTHOLD, XLINI, LSTATNW, LHARAT ! !------------------------------------------------------------------------------- @@ -227,11 +221,8 @@ LSIGMAS=>TURB_MODEL(KTO)%LSIGMAS LSIG_CONV=>TURB_MODEL(KTO)%LSIG_CONV LRMC01=>TURB_MODEL(KTO)%LRMC01 CTOM=>TURB_MODEL(KTO)%CTOM -CSUBG_AUCV_RC=>TURB_MODEL(KTO)%CSUBG_AUCV_RC -CSUBG_AUCV_RI=>TURB_MODEL(KTO)%CSUBG_AUCV_RI CCONDENS=>TURB_MODEL(KTO)%CCONDENS CLAMBDA3=>TURB_MODEL(KTO)%CLAMBDA3 -CSUBG_MF_PDF=>TURB_MODEL(KTO)%CSUBG_MF_PDF !XBL_DEPTH=>TURB_MODEL(KTO)%XBL_DEPTH !Done in FIELDLIST_GOTO_MODEL !XSBL_DEPTH=>TURB_MODEL(KTO)%XSBL_DEPTH !Done in FIELDLIST_GOTO_MODEL !XWTHVMF=>TURB_MODEL(KTO)%XWTHVMF !Done in FIELDLIST_GOTO_MODEL @@ -335,8 +326,6 @@ IF(LLDEFAULTVAL) THEN LTURB_FLX =.FALSE. LTURB_DIAG=.FALSE. LSUBG_COND=.FALSE. - CSUBG_AUCV_RC='NONE' - CSUBG_AUCV_RI='NONE' LSIGMAS =.TRUE. LSIG_CONV =.FALSE. LRMC01 =.FALSE. @@ -344,7 +333,6 @@ IF(LLDEFAULTVAL) THEN VSIGQSAT = 0.02 CCONDENS='CB02' CLAMBDA3='CB' - CSUBG_MF_PDF='TRIANGLE' LLEONARD =.FALSE. XCOEFHGRADTHL = 1.0 XCOEFHGRADRM = 1.0 @@ -357,7 +345,6 @@ IF(LLDEFAULTVAL) THEN IF(HPROGRAM=='AROME') THEN XTKEMIN=1.E-6 XLINI=0. - CSUBG_AUCV_RC='PDF' LSIGMAS=.FALSE. VSIGQSAT=0. ENDIF @@ -380,13 +367,6 @@ IF(LLCHECK) THEN CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CTOM', CTOM, 'NONE', 'TM06') CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CCONDENS', CCONDENS, 'CB02', 'GAUS') CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CLAMBDA3', CLAMBDA3, 'CB', 'NONE') - CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CSUBG_AUCV_RC', CSUBG_AUCV_RC, 'PDF ', 'CLFR', 'NONE', 'ADJU', 'SIGM') - CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CSUBG_AUCV_RI', CSUBG_AUCV_RI, 'NONE', 'CLFR', 'ADJU') - CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CSUBG_MF_PDF', CSUBG_MF_PDF, 'NONE', 'TRIANGLE') - IF ((CSUBG_AUCV_RC == 'ADJU' .OR. CSUBG_AUCV_RI == 'ADJU') .AND. CCONDENS /= 'GAUS') THEN - CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'TURBN_INIT', & - &"CSUBG_AUCV_RC and/or CSUBG_AUCV_RI cannot be 'ADJU' if CCONDENS is not 'GAUS'") - ENDIF IF (.NOT. LHARAT .AND. LSTATNW) THEN CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'TURBN_INIT', & &'LSTATNW only tested in combination with HARATU and EDMFm!') diff --git a/src/mesonh/ext/modeln.f90 b/src/mesonh/ext/modeln.f90 index 7948e748bcb72b7e2050c86f308ab8ceb96c4f88..e43da946e28946aaa5a8a8c4cb488a757df1a5f6 100644 --- a/src/mesonh/ext/modeln.f90 +++ b/src/mesonh/ext/modeln.f90 @@ -337,7 +337,7 @@ USE MODD_OUT_n USE MODD_PARAM_C1R3, ONLY: NSEDI => LSEDI, NHHONI => LHHONI USE MODD_PARAM_C2R2, ONLY: NSEDC => LSEDC, NRAIN => LRAIN, NACTIT => LACTIT,LACTTKE,LDEPOC USE MODD_PARAMETERS -USE MODD_PARAM_ICE_n, ONLY: LWARM,LSEDIC,LCONVHG,LDEPOSC +USE MODD_PARAM_ICE_n, ONLY: LWARM,LSEDIC,LCONVHG,LDEPOSC, CSUBG_AUCV_RC USE MODD_PARAM_LIMA, ONLY: MSEDC => LSEDC, MWARM => LWARM, MRAIN => LRAIN, & MACTIT => LACTIT, LSCAV, LCOLD, & MSEDI => LSEDI, MHHONI => LHHONI, LHAIL, & diff --git a/src/mesonh/ext/read_exsegn.f90 b/src/mesonh/ext/read_exsegn.f90 index 09cf17b291729c7aae9084adb7c470aba61ee967..e18671640f07cea0e98c5fcde9fe605d7d20256d 100644 --- a/src/mesonh/ext/read_exsegn.f90 +++ b/src/mesonh/ext/read_exsegn.f90 @@ -383,7 +383,7 @@ USE MODN_PARAM_C1R3, ONLY : NAM_PARAM_C1R3, CPRISTINE_ICE_C1R3, & USE MODN_PARAM_C2R2, ONLY : EPARAM_CCN=>HPARAM_CCN, EINI_CCN=>HINI_CCN, & WNUC=>XNUC, WALPHAC=>XALPHAC, NAM_PARAM_C2R2 USE MODN_PARAM_ECRAD_n -USE MODD_PARAM_ICE_n, ONLY : PARAM_ICEN_INIT, PARAM_ICEN +USE MODD_PARAM_ICE_n, ONLY : PARAM_ICEN_INIT, PARAM_ICEN, CSUBG_AUCV_RC, CSUBG_AUCV_RI USE MODN_PARAM_KAFR_n USE MODN_PARAM_LIMA, ONLY : FINI_CCN=>HINI_CCN,NAM_PARAM_LIMA,NMOD_CCN,LSCAV, & CPRISTINE_ICE_LIMA, CHEVRIMED_ICE_LIMA, NMOD_IFN, NMOD_IMM, & @@ -399,7 +399,7 @@ USE MODN_SALT USE MODN_SERIES USE MODN_SERIES_n USE MODN_STATION_n -USE MODD_TURB_n, ONLY: TURBN_INIT, CSUBG_AUCV_RC, CTOM, CTURBDIM, LRMC01, LSIGMAS, LSUBG_COND +USE MODD_TURB_n, ONLY: TURBN_INIT, CTOM, CTURBDIM, LRMC01, LSIGMAS, LSUBG_COND, CCONDENS USE MODD_NEB_n, ONLY: NEBN_INIT USE MODN_TURB_CLOUD USE MODN_VISCOSITY @@ -944,6 +944,12 @@ IF(LBLOWSNOW) THEN CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','') ENDIF END IF +! Consistency checks between phyex modules +IF ((CSUBG_AUCV_RC == 'ADJU' .OR. CSUBG_AUCV_RI == 'ADJU') .AND. CCONDENS /= 'GAUS') THEN + CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'READ_EXSEGN', & + &"CSUBG_AUCV_RC and/or CSUBG_AUCV_RI cannot be 'ADJU' if CCONDENS is not 'GAUS'") +ENDIF + ! !-------------------------------------------------------------------------------! !* 2. FIRST INITIALIZATIONS diff --git a/src/mesonh/ext/resolved_cloud.f90 b/src/mesonh/ext/resolved_cloud.f90 index 5569127d4e04913010933935eec8adcd452f98e6..e07d67af54665e25926556813d715a88f9c7c948 100644 --- a/src/mesonh/ext/resolved_cloud.f90 +++ b/src/mesonh/ext/resolved_cloud.f90 @@ -306,7 +306,7 @@ USE MODD_PARAM_LIMA, ONLY: LADJ, LCOLD, LPTSPLIT, LSPRO, NMOD_CCN, NMOD_IFN, USE MODD_RAIN_ICE_DESCR_n, ONLY: XRTMIN, RAIN_ICE_DESCRN USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAMN USE MODD_SALT, ONLY: LSALT -USE MODD_TURB_n, ONLY: TURBN, CSUBG_AUCV_RI, CCONDENS, CLAMBDA3, CSUBG_MF_PDF +USE MODD_TURB_n, ONLY: TURBN, CCONDENS, CLAMBDA3 ! USE MODE_ll USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX @@ -805,7 +805,8 @@ SELECT CASE ( HCLOUD ) ENDDO ZZZ = MZF( PZZ ) IF(LRED .AND. LADJ_BEFORE) THEN - CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAMN, NEBN, TURBN, TBUCONF, KRR, & + CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAMN, NEBN, TURBN, & + PARAM_ICEN, TBUCONF, KRR, & 'ADJU', .FALSE., & PTSTEP, ZSIGQSAT2D, & PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV,PMFCONV, PPABST, ZZZ, & @@ -825,7 +826,7 @@ SELECT CASE ( HCLOUD ) ENDIF IF (LRED) THEN CALL RAIN_ICE (YLDIMPHYEX,CST, PARAM_ICEN, RAIN_ICE_PARAMN, & - RAIN_ICE_DESCRN, TURBN, TBUCONF,& + RAIN_ICE_DESCRN, TBUCONF,& PTSTEP, KRR, ZEXN, & ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & @@ -857,7 +858,8 @@ SELECT CASE ( HCLOUD ) ! ! IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN - CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAMN, NEBN, TURBN, TBUCONF, KRR, & + CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAMN, NEBN, TURBN, & + PARAM_ICEN, TBUCONF, KRR, & 'DEPI', .FALSE., & PTSTEP, ZSIGQSAT2D, & PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,PPABST, ZZZ, & @@ -894,7 +896,8 @@ SELECT CASE ( HCLOUD ) ENDDO ZZZ = MZF( PZZ ) IF(LRED .AND. LADJ_BEFORE) THEN - CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAMN, NEBN, TURBN, TBUCONF, KRR, & + CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAMN, NEBN, TURBN, & + PARAM_ICEN, TBUCONF, KRR, & 'ADJU', .FALSE., & PTSTEP, ZSIGQSAT2D, & PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV,PMFCONV, PPABST, ZZZ, & @@ -915,7 +918,7 @@ SELECT CASE ( HCLOUD ) ENDIF IF (LRED) THEN CALL RAIN_ICE (YLDIMPHYEX,CST, PARAM_ICEN, RAIN_ICE_PARAMN, & - RAIN_ICE_DESCRN, TURBN, TBUCONF,& + RAIN_ICE_DESCRN, TBUCONF,& PTSTEP, KRR, ZEXN, & ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & @@ -949,7 +952,8 @@ SELECT CASE ( HCLOUD ) !* 10.2 Perform the saturation adjustment over cloud ice and cloud water ! IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN - CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAMN, NEBN, TURBN, TBUCONF, KRR, & + CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAMN, NEBN, TURBN, & + PARAM_ICEN, TBUCONF, KRR, & 'DEPI', .FALSE., & PTSTEP, ZSIGQSAT2D, & PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,PPABST, ZZZ, & diff --git a/src/testprogs/ice_adjust/main_ice_adjust.F90 b/src/testprogs/ice_adjust/main_ice_adjust.F90 index 81859d4bfb2c10dc4a3e85bd0257afabf07b27b7..86bc8552b1e9337074ee09263807f2c25e339ff7 100644 --- a/src/testprogs/ice_adjust/main_ice_adjust.F90 +++ b/src/testprogs/ice_adjust/main_ice_adjust.F90 @@ -229,7 +229,7 @@ JBLK2 = (NGPBLKS * (ITID+1)) / NTID YLSTACK%U = 0 #endif - CALL ICE_ADJUST (D, CST, ICEP, NEBN, TURBN, TBUCONF, KRR, HBUNAME, & + CALL ICE_ADJUST (D, CST, ICEP, NEBN, TURBN, PARAMI, TBUCONF, KRR, HBUNAME, & & PARAMI%LOCND2, PTSTEP, ZSIGQSAT (:, :, IBL), PRHODJ=PRHODJ (:, :, :, IBL), & & PEXNREF=PEXNREF (:, :, :, IBL), & & PRHODREF=PRHODREF (:, :, :, IBL), PSIGS=PSIGS (:, :, :, IBL), LMFCONV=LMFCONV, PMFCONV=PMFCONV (:, :, :, IBL), & diff --git a/src/testprogs/rain_ice/main_rain_ice.F90 b/src/testprogs/rain_ice/main_rain_ice.F90 index 84179d5210dbbcb67d636d748faf3dbf79466efb..4e324908c4d66a55b4914bf98192a3d6f7e0769a 100644 --- a/src/testprogs/rain_ice/main_rain_ice.F90 +++ b/src/testprogs/rain_ice/main_rain_ice.F90 @@ -61,7 +61,6 @@ TYPE(CST_t) :: CST TYPE(PARAM_ICE_t) :: PARAMI TYPE(RAIN_ICE_PARAM_t) :: ICEP TYPE(RAIN_ICE_DESCR_t) :: ICED -TYPE(TURB_t) :: TURBN CHARACTER (LEN=4) :: CMICRO REAL :: PTSTEP TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RH) :: YLBUDGET @@ -131,8 +130,7 @@ KRR = 6 CALL INIT_PHYEX (20, CMICRO, PTSTEP, & CST, & - PARAMI, ICEP, ICED, & - TURBN) + PARAMI, ICEP, ICED) DO JRR=1, NBUDGET_RH YLBUDGET(JRR)%NBUDGET=JRR @@ -171,7 +169,7 @@ DO ITIME = 1, NTIME TSD = OMP_GET_WTIME () !directives pas a jour !$acc data & -!directives pas a jour !$acc & copyin (D0, CST, ICEP, NEB, KRR, HFRAC_ICE, HCONDENS, HLAMBDA3, HBUNAME, OSUBG_COND, OSIGMAS, OCND2, HSUBG_MF_PDF, PTSTEP, LMFCONV, & +!directives pas a jour !$acc & copyin (D0, CST, ICEP, NEB, KRR, HFRAC_ICE, HCONDENS, HLAMBDA3, HBUNAME, OSIGMAS, OCND2, PTSTEP, LMFCONV, & !directives pas a jour !$acc & ZSIGQSAT, PRHODJ, PEXNREF, PRHODREF, PSIGS, PMFCONV, PPABSM, ZZZ, PCF_MF, PRC_MF, PRI_MF, ZRS, ZICE_CLD_WGT) & !directives pas a jour !$acc & copy (PRS, PTHS), & !directives pas a jour !$acc & copyout (PSRCS, PCLDFR, PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF) & @@ -226,7 +224,7 @@ JBLK2 = (NGPBLKS * (ITID+1)) / NTID #endif CALL RAIN_ICE (D, CST, PARAMI, ICEP, & - & ICED, TURBN, TBUCONF, & + & ICED, TBUCONF, & & PTSTEP=2*PTSTEP, & & KRR=KRR, PEXN=PEXNREF(:,:,:,IBL), & & PDZZ=PDZZ(:,:,:,IBL), PRHODJ=PRHODJ(:,:,:,IBL), PRHODREF=PRHODREF(:,:,:,IBL),PEXNREF=PEXNREF2(:,:,:,IBL),& @@ -316,8 +314,7 @@ CONTAINS SUBROUTINE INIT_PHYEX(KULOUT,CMICRO,PTSTEP, & CST, & - PARAM_ICEN, RAIN_ICE_PARAMN, RAIN_ICE_DESCRN,& - TURBN) + PARAM_ICEN, RAIN_ICE_PARAMN, RAIN_ICE_DESCRN) USE MODD_CST, ONLY: CST_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t @@ -337,7 +334,6 @@ TYPE(CST_t), INTENT(OUT) :: CST TYPE(PARAM_ICE_t) , INTENT(OUT) :: PARAM_ICEN TYPE(RAIN_ICE_PARAM_t), INTENT(OUT) :: RAIN_ICE_PARAMN TYPE(RAIN_ICE_DESCR_t), INTENT(OUT) :: RAIN_ICE_DESCRN -TYPE(TURB_t), INTENT(OUT) :: TURBN !----------------------------------------------------------------------- ! LOCAL VARIABLES @@ -392,8 +388,7 @@ CALL INI_PHYEX(CPROGRAM, 0, .TRUE., KULOUT, 0, 1, & &LDDEFAULTVAL=.FALSE., LDREADNAM=.FALSE., LDCHECK=.TRUE., KPRINT=2, LDINIT=.TRUE., & &CST_OUT=CST, & &PARAM_ICEN_IN=PARAM_ICEN, PARAM_ICEN_OUT=PARAM_ICEN, & - &RAIN_ICE_DESCRN_OUT=RAIN_ICE_DESCRN, RAIN_ICE_PARAMN_OUT=RAIN_ICE_PARAMN, & - &TURBN_OUT=TURBN) + &RAIN_ICE_DESCRN_OUT=RAIN_ICE_DESCRN, RAIN_ICE_PARAMN_OUT=RAIN_ICE_PARAMN) CALL TBUCONF_ASSOCIATE LBU_ENABLE=.FALSE. diff --git a/src/testprogs/shallow/main_shallow.F90 b/src/testprogs/shallow/main_shallow.F90 index e7d78ded6a144897da8b5c8734dcb311ab9f5f7e..9ec02e8598665c5a9d980ceb627555a33e1b54e9 100644 --- a/src/testprogs/shallow/main_shallow.F90 +++ b/src/testprogs/shallow/main_shallow.F90 @@ -244,7 +244,7 @@ DO ITIME = 1, NTIME TSD = OMP_GET_WTIME () !!! !directives pas a jour !$acc data & -!!! !directives pas a jour !$acc & copyin (D0, CST, ICEP, NEBN, KRR, HFRAC_ICE, HCONDENS, HLAMBDA3, HBUNAME, OSUBG_COND, OSIGMAS, OCND2, HSUBG_MF_PDF, PTSTEP, LMFCONV, & +!!! !directives pas a jour !$acc & copyin (D0, CST, ICEP, NEBN, KRR, HFRAC_ICE, HCONDENS, HLAMBDA3, HBUNAME, OSIGMAS, OCND2, PTSTEP, LMFCONV, & !!! !directives pas a jour !$acc & ZSIGQSAT, PTHM, PEXNREF, PRHODREF, PSIGS, PMFCONV, PPABSM, ZZZ, PCF_MF, PRC_MF, PRI_MF, ZRS, ZICE_CLD_WGT) & !!! !directives pas a jour !$acc & copy (PRS, PTHS), & !!! !directives pas a jour !$acc & copyout (PSRCS, PCLDFR, PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF) & diff --git a/src/testprogs/turb_mnh/main_turb.F90 b/src/testprogs/turb_mnh/main_turb.F90 index f4e2ceb5d138bde8f0e8b409f524ee325c0b28c8..7387a0cf35b6605b3c7cd1774522b71cfd4223e0 100644 --- a/src/testprogs/turb_mnh/main_turb.F90 +++ b/src/testprogs/turb_mnh/main_turb.F90 @@ -287,7 +287,7 @@ DO ITIME = 1, NTIME TSD = OMP_GET_WTIME () !!! !directives pas a jour !$acc data & -!!! !directives pas a jour !$acc & copyin (D0, CST, ICEP, KRR, HFRAC_ICE, HCONDENS, HLAMBDA3, HBUNAME, OSUBG_COND, OSIGMAS, OCND2, HSUBG_MF_PDF, PTSTEP, LMFCONV, & +!!! !directives pas a jour !$acc & copyin (D0, CST, ICEP, KRR, HFRAC_ICE, HCONDENS, HLAMBDA3, HBUNAME, OSIGMAS, OCND2, PTSTEP, LMFCONV, & !!! !directives pas a jour !$acc & ZSIGQSAT, PRHODJ, PEXNREF, PRHODREF, PSIGS, PMFCONV, PPABSM, ZZZ, PCF_MF, PRC_MF, PRI_MF, ZRS, ZICE_CLD_WGT) & !!! !directives pas a jour !$acc & copy (PRS, PTHS), & !!! !directives pas a jour !$acc & copyout (PSRCS, PCLDFR, PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF) &