From e43073feca04c768a4b7f1923bf5457ddce511cd Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Mon, 21 Aug 2023 16:51:49 +0200 Subject: [PATCH] Quentin 21/08/2023: modd_turb_cloud suppression (issue #13) : keys appended to NAM_TURBn + add KSPLIT->NTURBSPLIT as namelist option of NAM_TURBn --- src/arome/aux/modd_misc.F90 | 6 ---- src/arome/ext/aro_adjust_lima.F90 | 2 +- src/arome/ext/aro_turb_mnh.F90 | 8 ++--- src/common/turb/modd_turbn.F90 | 45 ++++++++++++++++++++++++++-- src/common/turb/modi_turb.F90 | 11 ++++--- src/common/turb/turb.F90 | 13 ++++---- src/mesonh/ext/deallocate_model1.f90 | 1 + src/mesonh/ext/default_desfmn.f90 | 13 -------- src/mesonh/ext/ini_modeln.f90 | 7 ++--- src/mesonh/ext/modeln.f90 | 3 +- src/mesonh/ext/phys_paramn.f90 | 7 ++--- src/mesonh/ext/read_exsegn.f90 | 8 ++--- src/mesonh/ext/write_desfmn.f90 | 1 - src/testprogs/aux/modd_misc.F90 | 4 +-- src/testprogs/turb_mnh/main_turb.F90 | 14 +++------ 15 files changed, 73 insertions(+), 70 deletions(-) diff --git a/src/arome/aux/modd_misc.F90 b/src/arome/aux/modd_misc.F90 index 0e554811d..42af5c748 100644 --- a/src/arome/aux/modd_misc.F90 +++ b/src/arome/aux/modd_misc.F90 @@ -14,8 +14,6 @@ TYPE MISC_t !These values are not (yet) tuneable in arome. LOGICAL :: LMFCONV=.TRUE. !< Use convective mass flux in the condensation scheme LOGICAL :: OCOMPUTE_SRC=.TRUE. !< Compute s'r' - INTEGER :: KMI=1 !< Model numer - INTEGER :: KSPLIT=1 !< Number of small timestep for the turbulence scheme INTEGER :: KHALO=1 !< Size of the halo for parallel distribution (used in turb) CHARACTER(LEN=6) :: CPROGRAM='AROME' !< Name of the model LOGICAL :: ONOMIXLG=.FALSE. !< Turbulence for lagrangian variables @@ -28,11 +26,7 @@ TYPE MISC_t CHARACTER(LEN=4), DIMENSION(2) :: HLBCY='CYCL' !< Boundary condition LOGICAL :: OIBM=.FALSE. !< Run with IBM LOGICAL :: OFLYER=.FALSE. !< MesoNH flyer diagnostic - REAL :: XCEI_MAX=1. !< Turbulence at cloud edges - REAL :: XCEI_MIN=0 !< Turbulence at cloud edges. - REAL :: XCOEF_AMPL_SAT=0 !< Turbulence at cloud edges. LOGICAL :: ODIAG_IN_RUN=.FALSE. !< LES diagnostics - CHARACTER(LEN=4) :: HTURBLEN_CL='NONE' !< Turbulence length in clouds LOGICAL :: O2D=.FALSE. !< 2D version of the turbulence !These values are computed from the model setup diff --git a/src/arome/ext/aro_adjust_lima.F90 b/src/arome/ext/aro_adjust_lima.F90 index 94828bc76..10ce65bdb 100644 --- a/src/arome/ext/aro_adjust_lima.F90 +++ b/src/arome/ext/aro_adjust_lima.F90 @@ -333,7 +333,7 @@ ENDDO ZZZ = PZZF CALL LIMA_ADJUST_SPLIT(D=YLDIMPHYEX, CST=PHYEX%CST, BUCONF=TBUCONF, TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET), & - KRR=KRR, KMI=PHYEX%MISC%KMI, HCONDENS=PHYEX%NEBN%CCONDENS, HLAMBDA3=PHYEX%NEBN%CLAMBDA3, & + KRR=KRR, KMI=1, HCONDENS=PHYEX%NEBN%CCONDENS, HLAMBDA3=PHYEX%NEBN%CLAMBDA3, & OSUBG_COND=OSUBG_COND, OSIGMAS=OSIGMAS, PTSTEP=2*PTSTEP, PSIGQSAT=PSIGQSAT, & PRHODREF=PRHODREF, PRHODJ=PRHODJ, PEXNREF=PEXNREF, PSIGS=PSIGS, PMFCONV=PMFCONV, & PPABST=PPABSM, PPABSTT=PPABSM, PZZ=ZZZ, PDTHRAD=PDTHRAD, PW_NU=PW_NU, & diff --git a/src/arome/ext/aro_turb_mnh.F90 b/src/arome/ext/aro_turb_mnh.F90 index e589a535e..18dd0e0f5 100644 --- a/src/arome/ext/aro_turb_mnh.F90 +++ b/src/arome/ext/aro_turb_mnh.F90 @@ -362,13 +362,13 @@ DO JRR=1, NBUDGET_RI YLBUDGET(JRR)%YDMDDH=>YDMDDH ENDDO CALL TURB (PHYEX%CST,PHYEX%CSTURB,TBUCONF,PHYEX%TURBN, PHYEX%NEBN, YLDIMPHYEX,YLTLES,& - & PHYEX%MISC%KMI, KRR, KRRL, KRRI, PHYEX%MISC%HLBCX, PHYEX%MISC%HLBCY, KGRADIENTS, PHYEX%MISC%KHALO, & - & PHYEX%MISC%KSPLIT,PHYEX%MISC%KMI, KSV, KSV_LGBEG, KSV_LGEND, & + & KRR, KRRL, KRRI, PHYEX%MISC%HLBCX, PHYEX%MISC%HLBCY, KGRADIENTS, PHYEX%MISC%KHALO, & + & PHYEX%TURBN%NTURBSPLIT,PHYEX%TURBN%LCLOUDMODIFLM, KSV, KSV_LGBEG, KSV_LGEND, & & NSV_LIMA_NR, NSV_LIMA_NS, NSV_LIMA_NG, NSV_LIMA_NH, & & PHYEX%MISC%O2D, PHYEX%MISC%ONOMIXLG, PHYEX%MISC%OFLAT, PHYEX%MISC%OCOUPLES, PHYEX%MISC%OBLOWSNOW,& & PHYEX%MISC%OIBM, PHYEX%MISC%OFLYER, PHYEX%MISC%OCOMPUTE_SRC, PHYEX%MISC%XRSNOW, & & PHYEX%MISC%OOCEAN,PHYEX%MISC%ODEEPOC, PHYEX%MISC%ODIAG_IN_RUN, & - & PHYEX%MISC%HTURBLEN_CL, CMICRO, & + & PHYEX%TURBN%CTURBLEN_CLOUD, CMICRO, & & ZTWOTSTEP,ZTFILE, & & ZDXX,ZDYY,ZDZZ,ZDZX,ZDZY,ZZZ, & & ZDIRCOSXW,ZDIRCOSYW,ZDIRCOSZW,ZCOSSLOPE,ZSINSLOPE, & @@ -377,7 +377,7 @@ CALL TURB (PHYEX%CST,PHYEX%CSTURB,TBUCONF,PHYEX%TURBN, PHYEX%NEBN, YLDIMPHYEX,YL & PPABSM,PUM,PVM,PWM,PTKEM,ZSVM,PSRCM, & & PLENGTHM,PLENGTHH,MFMOIST, & & ZBL_DEPTH,ZSBL_DEPTH, & - & ZCEI, PHYEX%MISC%XCEI_MIN, PHYEX%MISC%XCEI_MAX, PHYEX%MISC%XCOEF_AMPL_SAT, & + & ZCEI, PHYEX%TURBN%XCEI_MIN, PHYEX%TURBN%XCEI_MAX, PHYEX%TURBN%XCOEF_AMPL_SAT, & & PTHM,ZRM, & & PRUS,PRVS,PRWS,PRTHS,ZRRS,ZRSVS,PRTKES_OUT, & & PSIGS, & diff --git a/src/common/turb/modd_turbn.F90 b/src/common/turb/modd_turbn.F90 index 74a4d559d..c089811f2 100644 --- a/src/common/turb/modd_turbn.F90 +++ b/src/common/turb/modd_turbn.F90 @@ -109,6 +109,20 @@ TYPE TURB_t LOGICAL :: LSMOOTH_PRANDTL !< .TRUE. to smooth prandtl functions REAL :: XMINSIGS !< minimum value for SIGS computed by the turbulence scheme REAL :: XBL89EXP, XUSRBL89 !< exponent on final BL89 length + INTEGER :: NTURBSPLIT !<number of time-splitting for turb_hor + LOGICAL :: LCLOUDMODIFLM !< .TRUE. to activate modification of mixing length in clouds + CHARACTER(LEN=4) :: CTURBLEN_CLOUD !< type of length in the clouds + ! 'DEAR' Deardorff mixing length + ! 'BL89' Bougeault and Lacarrere scheme + ! 'DELT' length = ( volum) ** 1/3 +REAL :: XCOEF_AMPL_SAT !< saturation of the amplification coefficient +REAL :: XCEI_MIN !< minimum threshold for the instability index CEI + !(beginning of the amplification) +REAL :: XCEI_MAX !< maximum threshold for the instability index CEI + !(beginning of the saturation of the amplification) +REAL, DIMENSION(:,:,:), POINTER :: XCEI !< Cloud Entrainment instability index to emphasize localy + ! turbulent fluxes + ! END TYPE TURB_t @@ -159,13 +173,22 @@ LOGICAL, POINTER :: LPROJQITURB=>NULL() LOGICAL, POINTER :: LSMOOTH_PRANDTL=>NULL() REAL, POINTER :: XMINSIGS=>NULL() REAL, POINTER :: XBL89EXP=>NULL(), XUSRBL89=>NULL() +INTEGER, POINTER :: NTURBSPLIT=>NULL() +LOGICAL, POINTER :: LCLOUDMODIFLM=>NULL() +CHARACTER(LEN=4), POINTER :: CTURBLEN_CLOUD=>NULL() +REAL, POINTER :: XCOEF_AMPL_SAT=>NULL() +REAL, POINTER :: XCEI_MIN=>NULL() +REAL, POINTER :: XCEI_MAX =>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XCEI=>NULL() ! NAMELIST/NAM_TURBn/XIMPL,CTURBLEN,CTURBDIM,LTURB_FLX,LTURB_DIAG, & LSIG_CONV,LRMC01,CTOM,& XTKEMIN,XCED,XCTP,XCADAP,& LLEONARD,XCOEFHGRADTHL, XCOEFHGRADRM, & XALTHGRAD, XCLDTHOLD, XLINI, LHARAT, & - LPROJQITURB, LSMOOTH_PRANDTL, XMINSIGS + LPROJQITURB, LSMOOTH_PRANDTL, XMINSIGS, NTURBSPLIT, & + LCLOUDMODIFLM, CTURBLEN_CLOUD, & + XCOEF_AMPL_SAT, XCEI_MIN, XCEI_MAX, XCEI ! !------------------------------------------------------------------------------- ! @@ -197,6 +220,7 @@ IF(KFROM>0 .AND. KFROM<=JPMODELMAX) THEN TURB_MODEL(KFROM)%XSSVFL_C=>XSSVFL_C TURB_MODEL(KFROM)%XSSTFL_C=>XSSTFL_C TURB_MODEL(KFROM)%XSSRFL_C=>XSSRFL_C + TURB_MODEL(KFROM)%XCEI=>XCEI ENDIF ! ! Current model is set to model KTO @@ -245,6 +269,13 @@ LSMOOTH_PRANDTL=>TURB_MODEL(KTO)%LSMOOTH_PRANDTL XMINSIGS=>TURB_MODEL(KTO)%XMINSIGS XBL89EXP=>TURB_MODEL(KTO)%XBL89EXP XUSRBL89=>TURB_MODEL(KTO)%XUSRBL89 +NTURBSPLIT=>TURB_MODEL(KTO)%NTURBSPLIT +LCLOUDMODIFLM=>TURB_MODEL(KTO)%LCLOUDMODIFLM +CTURBLEN_CLOUD=>TURB_MODEL(KTO)%CTURBLEN_CLOUD +XCOEF_AMPL_SAT=>TURB_MODEL(KTO)%XCOEF_AMPL_SAT +XCEI_MIN=>TURB_MODEL(KTO)%XCEI_MIN +XCEI_MAX =>TURB_MODEL(KTO)%XCEI_MAX +XCEI=>TURB_MODEL(KTO)%XCEI ! ENDIF ! @@ -347,7 +378,13 @@ IF(LLDEFAULTVAL) THEN LPROJQITURB=.TRUE. LSMOOTH_PRANDTL=.TRUE. XMINSIGS=0. - + NTURBSPLIT=1 + LCLOUDMODIFLM = .FALSE. + CTURBLEN_CLOUD = 'DELT' + XCOEF_AMPL_SAT = 5. + XCEI_MIN = 0.001E-06 + XCEI_MAX = 0.01E-06 + ! IF(HPROGRAM=='AROME') THEN XTKEMIN=1.E-6 XLINI=0. @@ -378,12 +415,14 @@ IF(LLCHECK) THEN CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CTURBDIM', CTURBDIM, '1DIM', '3DIM') CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CTURBLEN', CTURBLEN, 'DELT', 'BL89', 'RM17', 'DEAR', 'BLKR', 'ADAP') CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CTOM', CTOM, 'NONE', 'TM06') + CALL CHECK_NAM_VAL_CHAR(KLUOUT, 'CTURBLEN_CLOUD', CTURBLEN_CLOUD, 'DELT', 'BL89', 'RM17', 'DEAR', 'BLKR', 'ADAP') + ENDIF ! !* 3. PRINTS ! --------- ! -IF(IPRINT>=1) THEN +IF(IPRINT>=3) THEN WRITE(UNIT=KLUOUT,NML=NAM_TURBn) ENDIF ! diff --git a/src/common/turb/modi_turb.F90 b/src/common/turb/modi_turb.F90 index da938a345..f7141ca30 100644 --- a/src/common/turb/modi_turb.F90 +++ b/src/common/turb/modi_turb.F90 @@ -6,8 +6,8 @@ IMPLICIT NONE INTERFACE ! SUBROUTINE TURB(CST,CSTURB,BUCONF,TURBN,NEBN,D,TLES, & - & KMI,KRR,KRRL,KRRI,HLBCX,HLBCY,KGRADIENTS,KHALO, & - & KSPLIT,KMODEL_CL,KSV,KSV_LGBEG,KSV_LGEND, & + & KRR,KRRL,KRRI,HLBCX,HLBCY,KGRADIENTS,KHALO, & + & KSPLIT,OCLOUDMODIFLM,KSV,KSV_LGBEG,KSV_LGEND, & & KSV_LIMA_NR, KSV_LIMA_NS, KSV_LIMA_NG, KSV_LIMA_NH, & & O2D,ONOMIXLG,OFLAT,OCOUPLES,OBLOWSNOW,OIBM,OFLYER, & & OCOMPUTE_SRC, PRSNOW, & @@ -52,7 +52,6 @@ TYPE(TURB_t), INTENT(IN) :: TURBN ! modn_turbn (turb namelis TYPE(NEB_t), INTENT(IN) :: NEBN ! modd_nebn structure TYPE(TLES_t), INTENT(INOUT) :: TLES ! modd_les structure INTEGER, INTENT(IN) :: KGRADIENTS ! Number of stored horizontal gradients -INTEGER, INTENT(IN) :: KMI ! model index number 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. @@ -60,7 +59,7 @@ INTEGER, INTENT(IN) :: KSV, KSV_LGBEG, KSV_LGEND ! number of sc INTEGER, INTENT(IN) :: KSV_LIMA_NR,KSV_LIMA_NS,KSV_LIMA_NG,KSV_LIMA_NH CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY ! X- and Y-direc LBC INTEGER, INTENT(IN) :: KSPLIT ! number of time-splitting -INTEGER, INTENT(IN) :: KMODEL_CL ! model number for cloud mixing length +LOGICAL, INTENT(IN) :: OCLOUDMODIFLM ! cloud mixing length modifs INTEGER, INTENT(IN) :: KHALO ! Size of the halo for parallel distribution LOGICAL, INTENT(IN) :: OCOMPUTE_SRC ! flag to define dimensions of SIGS and SRCT variables LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version @@ -113,8 +112,8 @@ REAL, DIMENSION(MERGE(D%NIJT,0,TURBN%CTOM=='TM06')),INTENT(INOUT) :: PBL_DEPTH REAL, DIMENSION(MERGE(D%NIJT,0,TURBN%LRMC01)),INTENT(INOUT) :: PSBL_DEPTH ! SBL depth for RMC01 ! ! variables for cloud mixing length -REAL, DIMENSION(MERGE(D%NIJT,0,KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE'),& - MERGE(D%NKT,0,KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE')),INTENT(IN) :: PCEI +REAL, DIMENSION(MERGE(D%NIJT,0,OCLOUDMODIFLM),& + MERGE(D%NKT,0,OCLOUDMODIFLM)),INTENT(IN) :: PCEI ! Cloud Entrainment instability ! index to emphasize localy ! turbulent fluxes diff --git a/src/common/turb/turb.F90 b/src/common/turb/turb.F90 index c878b7a82..b56b4b364 100644 --- a/src/common/turb/turb.F90 +++ b/src/common/turb/turb.F90 @@ -4,8 +4,8 @@ !MNH_LIC for details. version 1. !----------------------------------------------------------------- SUBROUTINE TURB(CST,CSTURB,BUCONF,TURBN,NEBN,D,TLES, & - & KMI,KRR,KRRL,KRRI,HLBCX,HLBCY,KGRADIENTS,KHALO, & - & KSPLIT,KMODEL_CL,KSV,KSV_LGBEG,KSV_LGEND, & + & KRR,KRRL,KRRI,HLBCX,HLBCY,KGRADIENTS,KHALO, & + & KSPLIT, OCLOUDMODIFLM, KSV,KSV_LGBEG,KSV_LGEND, & & KSV_LIMA_NR, KSV_LIMA_NS, KSV_LIMA_NG, KSV_LIMA_NH, & & O2D,ONOMIXLG,OFLAT,OCOUPLES,OBLOWSNOW,OIBM,OFLYER, & & OCOMPUTE_SRC, PRSNOW, & @@ -293,7 +293,6 @@ TYPE(TURB_t), INTENT(IN) :: TURBN ! modn_turbn (turb namelis TYPE(NEB_t), INTENT(IN) :: NEBN ! modd_nebn structure TYPE(TLES_t), INTENT(INOUT) :: TLES ! modd_les structure INTEGER, INTENT(IN) :: KGRADIENTS ! Number of stored horizontal gradients -INTEGER, INTENT(IN) :: KMI ! model index number 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. @@ -301,7 +300,7 @@ INTEGER, INTENT(IN) :: KSV, KSV_LGBEG, KSV_LGEND ! number of sc INTEGER, INTENT(IN) :: KSV_LIMA_NR,KSV_LIMA_NS,KSV_LIMA_NG,KSV_LIMA_NH CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY ! X- and Y-direc LBC INTEGER, INTENT(IN) :: KSPLIT ! number of time-splitting -INTEGER, INTENT(IN) :: KMODEL_CL ! model number for cloud mixing length +LOGICAL, INTENT(IN) :: OCLOUDMODIFLM ! cloud mixing length modifications INTEGER, INTENT(IN) :: KHALO ! Size of the halo for parallel distribution LOGICAL, INTENT(IN) :: OCOMPUTE_SRC ! flag to define dimensions of SIGS and SRCT variables LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version @@ -354,8 +353,8 @@ REAL, DIMENSION(MERGE(D%NIJT,0,TURBN%CTOM=='TM06')),INTENT(INOUT) :: PBL_DEPTH REAL, DIMENSION(MERGE(D%NIJT,0,TURBN%LRMC01)),INTENT(INOUT) :: PSBL_DEPTH ! SBL depth for RMC01 ! ! variables for cloud mixing length -REAL, DIMENSION(MERGE(D%NIJT,0,KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE'),& - MERGE(D%NKT,0,KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE')),INTENT(IN) :: PCEI +REAL, DIMENSION(MERGE(D%NIJT,0,OCLOUDMODIFLM),& + MERGE(D%NKT,0,OCLOUDMODIFLM)),INTENT(IN) :: PCEI ! Cloud Entrainment instability ! index to emphasize localy ! turbulent fluxes @@ -816,7 +815,7 @@ END SELECT ! !* 3.5 Mixing length modification for cloud ! ----------------------- -IF (KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE') CALL CLOUD_MODIF_LM +IF (OCLOUDMODIFLM) CALL CLOUD_MODIF_LM ENDIF ! end LHARRAT ! diff --git a/src/mesonh/ext/deallocate_model1.f90 b/src/mesonh/ext/deallocate_model1.f90 index 8715d723e..8b8f57214 100644 --- a/src/mesonh/ext/deallocate_model1.f90 +++ b/src/mesonh/ext/deallocate_model1.f90 @@ -696,6 +696,7 @@ IF ( KCALL==3 ) THEN IF (ASSOCIATED(XTR)) DEALLOCATE(XTR) IF (ASSOCIATED(XDISS)) DEALLOCATE(XDISS) IF (ASSOCIATED(XLEM)) DEALLOCATE(XLEM) + IF (ASSOCIATED(XCEI)) DEALLOCATE(XCEI) END IF !------------------------------------------------------------------------------- ! diff --git a/src/mesonh/ext/default_desfmn.f90 b/src/mesonh/ext/default_desfmn.f90 index 62c1f142a..9218ccad7 100644 --- a/src/mesonh/ext/default_desfmn.f90 +++ b/src/mesonh/ext/default_desfmn.f90 @@ -259,7 +259,6 @@ USE MODD_FRC USE MODD_PARAM_ICE_n, ONLY: PARAM_ICEN_INIT USE MODD_PARAM_LIMA, ONLY: PARAM_LIMA_INIT USE MODD_PARAM_C2R2 -USE MODD_TURB_CLOUD USE MODD_PARAM_KAFR_n USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALLN_INIT USE MODD_CH_MNHC_n @@ -966,18 +965,6 @@ NFREQSERIES = MAX(NFREQSERIES,1) ! !------------------------------------------------------------------------------- ! -!* 22. SET DEFAULT VALUES FOR MODD_TURB_CLOUD -! -------------------------------------- -! -IF (KMI == 1) THEN - NMODEL_CLOUD = NUNDEF - CTURBLEN_CLOUD = 'DELT' - XCOEF_AMPL_SAT = 5. - XCEI_MIN = 0.001E-06 - XCEI_MAX = 0.01E-06 -ENDIF -!------------------------------------------------------------------------------- -! !* 22. SET DEFAULT VALUES FOR MODD_MEAN_FIELD ! -------------------------------------- ! diff --git a/src/mesonh/ext/ini_modeln.f90 b/src/mesonh/ext/ini_modeln.f90 index 57a2c2691..edbb56091 100644 --- a/src/mesonh/ext/ini_modeln.f90 +++ b/src/mesonh/ext/ini_modeln.f90 @@ -398,7 +398,6 @@ USE MODD_STAND_ATM, only: XSTROATM, XSMLSATM, XSMLWATM, XSPOSATM, XSPOWA USE MODD_SURF_PAR, only: XUNDEF_SFX => XUNDEF USE MODD_TIME USE MODD_TIME_n -USE MODD_TURB_CLOUD, only: NMODEL_CLOUD, CTURBLEN_CLOUD,XCEI USE MODD_TURB_n USE MODD_NEB_n, only: LSUBG_COND, LSTATNW USE MODD_VAR_ll, only: IP @@ -1773,10 +1772,10 @@ END IF ! !* 3.12 Module MODD_TURB_CLOUD ! -IF (.NOT.(ALLOCATED(XCEI))) ALLOCATE(XCEI(0,0,0)) -IF (KMI == NMODEL_CLOUD .AND. CTURBLEN_CLOUD/='NONE' ) THEN - DEALLOCATE(XCEI) +IF (LCLOUDMODIFLM) THEN ALLOCATE(XCEI(IIU,IJU,IKU)) +ELSE + ALLOCATE(XCEI(0,0,0)) ENDIF ! !* 3.13 Module MODD_CH_PH_n diff --git a/src/mesonh/ext/modeln.f90 b/src/mesonh/ext/modeln.f90 index c9bac8a86..bd57f893d 100644 --- a/src/mesonh/ext/modeln.f90 +++ b/src/mesonh/ext/modeln.f90 @@ -371,7 +371,6 @@ USE MODD_SUB_MODEL_n USE MODD_TIME USE MODD_TIME_n USE MODD_TIMEZ -USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD,CTURBLEN_CLOUD,XCEI USE MODD_TURB_n USE MODD_NEB_n, ONLY: VSIGQSAT, LSIGMAS, LSUBG_COND USE MODD_TYPE_DATE, ONLY: DATE_TIME @@ -1764,7 +1763,7 @@ XT_ADVUVW = XT_ADVUVW + ZTIME2 - ZTIME1 - XTIME_LES_BU_PROCESS - XTIME_BU_PROCES ! !------------------------------------------------------------------------------- ! -IF (NMODEL_CLOUD==IMI .AND. CTURBLEN_CLOUD/='NONE') THEN +IF (LCLOUDMODIFLM) THEN CALL TURB_CLOUD_INDEX( XTSTEP, TPBAKFILE, & LTURB_DIAG, NRRI, & XRRS, XRT, XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY, & diff --git a/src/mesonh/ext/phys_paramn.f90 b/src/mesonh/ext/phys_paramn.f90 index a21166235..aca29a88a 100644 --- a/src/mesonh/ext/phys_paramn.f90 +++ b/src/mesonh/ext/phys_paramn.f90 @@ -320,8 +320,6 @@ USE MODD_SUB_PHYS_PARAM_n USE MODD_TIME_n USE MODD_TIME_n USE MODD_TIME, ONLY : TDTEXP ! Ajout PP -USE MODD_TURB_CLOUD, ONLY : CTURBLEN_CLOUD,NMODEL_CLOUD, & - XCEI,XCEI_MIN,XCEI_MAX,XCOEF_AMPL_SAT USE MODD_TURB_FLUX_AIRCRAFT_BALLOON, ONLY : XTHW_FLUX, XRCW_FLUX, XSVW_FLUX USE MODD_TURB_n USE MODD_NEB_n, ONLY: NEBN @@ -1572,9 +1570,8 @@ IF(LLEONARD) THEN ZHGRAD(:,:,:,6) = GY_M_M(XRT(:,:,:,1), XDXX,XDZZ,XDZX,1,IKU,1) END IF CALL TURB( CST,CSTURB, TBUCONF, TURBN, NEBN, YLDIMPHYEX,TLES, & - IMI, NRR, NRRL, NRRI, CLBCX, CLBCY, IGRADIENTS, NHALO, & - 1, NMODEL_CLOUD, & - NSV, NSV_LGBEG, NSV_LGEND, & + NRR, NRRL, NRRI, CLBCX, CLBCY, IGRADIENTS, NHALO, NTURBSPLIT, & + LCLOUDMODIFLM, NSV, NSV_LGBEG, NSV_LGEND, & NSV_LIMA_NR, NSV_LIMA_NS, NSV_LIMA_NG, NSV_LIMA_NH, & L2D, LNOMIXLG,LFLAT, & LCOUPLES, LBLOWSNOW, LIBM,LFLYER, & diff --git a/src/mesonh/ext/read_exsegn.f90 b/src/mesonh/ext/read_exsegn.f90 index 890defb61..dfb02a2dc 100644 --- a/src/mesonh/ext/read_exsegn.f90 +++ b/src/mesonh/ext/read_exsegn.f90 @@ -407,9 +407,9 @@ USE MODN_SALT USE MODN_SERIES USE MODN_SERIES_n USE MODN_STATION_n -USE MODD_TURB_n, ONLY: TURBN_INIT, CTOM, CTURBDIM, LRMC01, LHARAT +USE MODD_TURB_n, ONLY: TURBN_INIT, CTOM, CTURBDIM, LRMC01, LHARAT, & + LCLOUDMODIFLM, CTURBLEN_CLOUD, XCEI_MIN, XCEI_MAX USE MODD_NEB_n, ONLY: NEBN_INIT, LSIGMAS, LSUBG_COND, CCONDENS, LSTATNW -USE MODN_TURB_CLOUD USE MODN_VISCOSITY ! IMPLICIT NONE @@ -828,8 +828,6 @@ IF (KMI == 1) THEN IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_ELEC) CALL POSNAM(ILUSEG,'NAM_SERIES',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_SERIES) - CALL POSNAM(ILUSEG,'NAM_TURB_CLOUD',GFOUND,ILUOUT) - IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_TURB_CLOUD) CALL POSNAM(ILUSEG,'NAM_CH_ORILAM',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CH_ORILAM) CALL POSNAM(ILUSEG,'NAM_DUST',GFOUND,ILUOUT) @@ -1649,7 +1647,7 @@ ELSE CGETSIGS ='SKIP' END IF ! -IF(NMODEL_CLOUD==KMI .AND. CTURBLEN_CLOUD/='NONE') THEN +IF(LCLOUDMODIFLM .AND. CTURBLEN_CLOUD/='NONE') THEN IF (CTURB=='NONE' .OR. .NOT.LUSERC) THEN WRITE(UNIT=ILUOUT,FMT=9001) KMI WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO COMPUTE A MIXING LENGTH FOR CLOUD=", & diff --git a/src/mesonh/ext/write_desfmn.f90 b/src/mesonh/ext/write_desfmn.f90 index 0173219f2..d5ee56097 100644 --- a/src/mesonh/ext/write_desfmn.f90 +++ b/src/mesonh/ext/write_desfmn.f90 @@ -464,7 +464,6 @@ IF(CCLOUD == 'C3R5' ) WRITE(UNIT=ILUSEG,NML=NAM_PARAM_C1R3) IF(CCLOUD == 'LIMA' ) CALL PARAM_LIMA_INIT(CPROGRAM, 0, .FALSE., ILUSEG, .FALSE., .FALSE., .FALSE., 1) IF(CELEC /= 'NONE') WRITE(UNIT=ILUSEG,NML=NAM_ELEC) IF(LSERIES) WRITE(UNIT=ILUSEG,NML=NAM_SERIES) -IF(NMODEL_CLOUD/=NUNDEF) WRITE(UNIT=ILUSEG,NML=NAM_TURB_CLOUD) IF(CTURB /= 'NONE') CALL TURBN_INIT(CPROGRAM, 0, .FALSE., ILUSEG, .FALSE., .FALSE., .FALSE., 1) CALL NEBN_INIT(CPROGRAM, 0, .FALSE., ILUSEG, .FALSE., .FALSE., .FALSE., 1) WRITE(UNIT=ILUSEG,NML=NAM_FLYERS) diff --git a/src/testprogs/aux/modd_misc.F90 b/src/testprogs/aux/modd_misc.F90 index 41af51c0c..2642e4f39 100644 --- a/src/testprogs/aux/modd_misc.F90 +++ b/src/testprogs/aux/modd_misc.F90 @@ -25,17 +25,15 @@ TYPE MISC_t LOGICAL :: ONOMIXLG INTEGER :: KSV_LGBEG, KSV_LGEND REAL :: PDX, PDY - INTEGER :: KMI, KSPLIT, KGRADIENTS, KHALO + INTEGER :: KGRADIENTS, KHALO CHARACTER(LEN=4),DIMENSION(2) :: HLBCX, HLBCY CHARACTER(LEN=6) :: CPROGRAM INTEGER :: KSV_LIMA_NR, KSV_LIMA_NS, KSV_LIMA_NG, KSV_LIMA_NH LOGICAL :: O2D, OFLAT, OCOUPLES, OBLOWSNOW, OOCEAN, ODEEPOC LOGICAL :: OIBM, OFLYER TYPE(TFILEDATA) :: ZTFILE - REAL :: ZCEI_MAX, ZCEI_MIN, ZCOEF_AMPL_SAT REAL :: PRSNOW LOGICAL :: ODIAG_IN_RUN - CHARACTER(LEN=4) :: HTURBLEN_CL CHARACTER(LEN=4) :: CMICRO END TYPE MISC_t END MODULE MODD_MISC diff --git a/src/testprogs/turb_mnh/main_turb.F90 b/src/testprogs/turb_mnh/main_turb.F90 index 86401f110..7bc99c84a 100644 --- a/src/testprogs/turb_mnh/main_turb.F90 +++ b/src/testprogs/turb_mnh/main_turb.F90 @@ -293,13 +293,13 @@ JBLK2 = (NGPBLKS * (ITID+1)) / NTID YLSTACK%U = 0 #endif CALL TURB(PHYEX%CST, PHYEX%CSTURB, PHYEX%MISC%TBUCONF, PHYEX%TURBN, PHYEX%NEBN, D, TLES,& - & PHYEX%MISC%KMI, PHYEX%MISC%KRR, PHYEX%MISC%KRRL, PHYEX%MISC%KRRI, PHYEX%MISC%HLBCX, PHYEX%MISC%HLBCY, PHYEX%MISC%KGRADIENTS, PHYEX%MISC%KHALO,& - & PHYEX%MISC%KSPLIT,PHYEX%MISC%KMI, PHYEX%MISC%KSV, PHYEX%MISC%KSV_LGBEG, PHYEX%MISC%KSV_LGEND, & + & PHYEX%MISC%KRR, PHYEX%MISC%KRRL, PHYEX%MISC%KRRI, PHYEX%MISC%HLBCX, PHYEX%MISC%HLBCY, PHYEX%MISC%KGRADIENTS, PHYEX%MISC%KHALO,& + & PHYEX%TURBN%NSPLIT,PHYEX%TURBN%LCLOUDMODIFLM, PHYEX%MISC%KSV, PHYEX%MISC%KSV_LGBEG, PHYEX%MISC%KSV_LGEND, & & PHYEX%MISC%KSV_LIMA_NR, PHYEX%MISC%KSV_LIMA_NS, PHYEX%MISC%KSV_LIMA_NG, PHYEX%MISC%KSV_LIMA_NH,& & PHYEX%MISC%O2D, PHYEX%MISC%ONOMIXLG, PHYEX%MISC%OFLAT, PHYEX%MISC%OCOUPLES, PHYEX%MISC%OBLOWSNOW,PHYEX%MISC%OIBM,& & PHYEX%MISC%OFLYER, PHYEX%MISC%OCOMPUTE_SRC, PHYEX%MISC%PRSNOW, & & PHYEX%MISC%OOCEAN, PHYEX%MISC%ODEEPOC, PHYEX%MISC%ODIAG_IN_RUN, & - & PHYEX%MISC%HTURBLEN_CL,PHYEX%MISC%CMICRO, & + & PHYEX%TURBN%CTURBLEN_CLOUD,PHYEX%MISC%CMICRO, & & PHYEX%MISC%PTSTEP,PHYEX%MISC%ZTFILE, & & ZDXX(:,:,:,IBL),ZDYY(:,:,:,IBL),ZDZZ(:,:,:,IBL),ZDZX(:,:,:,IBL),ZDZY(:,:,:,IBL),ZZZ(:,:,:,IBL), & & ZDIRCOSXW,ZDIRCOSYW,ZDIRCOSZW,ZCOSSLOPE,ZSINSLOPE, & @@ -308,7 +308,7 @@ CALL TURB(PHYEX%CST, PHYEX%CSTURB, PHYEX%MISC%TBUCONF, PHYEX%TURBN, PHYEX%NEBN, & PPABSM(:,:,:,IBL),PUM(:,:,:,IBL),PVM(:,:,:,IBL),PWM(:,:,:,IBL),PTKEM(:,:,:,IBL),ZSVM(:,:,:,:,IBL),PSRCM(:,:,:,IBL), & & PLENGTHM(:,:,:,IBL),PLENGTHH(:,:,:,IBL),MFMOIST(:,:,:,IBL), & & ZBL_DEPTH(:,:,IBL),ZSBL_DEPTH(:,:,IBL), & - & ZCEI(:,:,:,IBL),PHYEX%MISC%ZCEI_MIN,PHYEX%MISC%ZCEI_MAX,PHYEX%MISC%ZCOEF_AMPL_SAT, & + & ZCEI(:,:,:,IBL),PHYEX%TURBN%XCEI_MIN,PHYEX%TURBN%XCEI_MAX,PHYEX%TURBN%XCOEF_AMPL_SAT, & & PTHM(:,:,:,IBL),ZRM(:,:,:,:,IBL), & & PRUS(:,:,:,IBL),PRVS(:,:,:,IBL),PRWS(:,:,:,IBL),PRTHS(:,:,:,IBL),ZRRS(:,:,:,:,IBL),ZRSVS(:,:,:,:,IBL),PRTKES_OUT(:,:,:,IBL), & & PSIGS(:,:,:,IBL), & @@ -442,11 +442,9 @@ PHYEX%MISC%KRR = KRR PHYEX%MISC%KRRL = KRRL PHYEX%MISC%KRRI = KRRI PHYEX%MISC%KSV = KSV -PHYEX%MISC%KMI = 1 PHYEX%MISC%KGRADIENTS =0 PHYEX%MISC%HLBCX(:)='CYCLCYCL' PHYEX%MISC%HLBCY(:)='CYCLCYCL' -PHYEX%MISC%KSPLIT = 1 PHYEX%MISC%KHALO=1 PHYEX%MISC%CPROGRAM=CPROGRAM PHYEX%MISC%O2D=.FALSE. @@ -457,9 +455,6 @@ PHYEX%MISC%OCOMPUTE_SRC=KSIZE_PSIGS/=0 PHYEX%MISC%OOCEAN=.FALSE. PHYEX%MISC%ODEEPOC=.FALSE. PHYEX%MISC%ZTFILE%LOPENED=.FALSE. -PHYEX%MISC%ZCEI_MAX=1.0 -PHYEX%MISC%ZCEI_MIN=0.0 -PHYEX%MISC%ZCOEF_AMPL_SAT=0.0 PHYEX%MISC%KSV_LIMA_NR=0 PHYEX%MISC%KSV_LIMA_NS=0 PHYEX%MISC%KSV_LIMA_NG=0 @@ -468,7 +463,6 @@ PHYEX%MISC%OIBM=.FALSE. PHYEX%MISC%OFLYER=.TRUE. PHYEX%MISC%PRSNOW=1.0 PHYEX%MISC%ODIAG_IN_RUN=.FALSE. -PHYEX%MISC%HTURBLEN_CL='NONE' PHYEX%MISC%CMICRO=CMICRO !Emulate the namelist reading -- GitLab