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