From 233798d48bb1c8004dddb4f897b85c8f05ebbb2c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Riette?= <sebastien.riette@meteo.fr>
Date: Wed, 13 Apr 2022 16:30:44 +0200
Subject: [PATCH] S. Riette 13/4/2022 Modules and array declartion for
 shallow_mf top routines

---
 src/arome/ext/apl_arome.F90             |   3 +-
 src/arome/ext/aro_shallow_mf.F90        |  48 +++------
 src/arome/ext/aro_shallow_mf.h          |   3 +-
 src/arome/ext/arp_shallow_mf.F90        |  21 +++-
 src/common/turb/modd_param_mfshalln.F90 |   3 +
 src/common/turb/modi_shallow_mf.F90     |  93 +++++++++--------
 src/common/turb/shallow_mf.F90          | 133 ++++++++++++------------
 src/mesonh/ext/shallow_mf_pack.f90      |  14 ++-
 8 files changed, 172 insertions(+), 146 deletions(-)

diff --git a/src/arome/ext/apl_arome.F90 b/src/arome/ext/apl_arome.F90
index e47134825..168fdb8b8 100644
--- a/src/arome/ext/apl_arome.F90
+++ b/src/arome/ext/apl_arome.F90
@@ -2899,7 +2899,8 @@ IF (LMFSHAL) THEN
       ZARG_FLXZTHVMF_ => ZFLXZTHVMF_(:,1:KLEV)
     ENDIF
 
-    CALL ARO_SHALLOW_MF (KKL=IKL, KLON=KFDIA,KLEV=KLEV,KRR=NRR,KRRL=NRRL,&
+    !CALL ARO_SHALLOW_MF (KKL=IKL, KLON=KFDIA, KLEV=KLEV, KFDIA=KFDIA, KRR=NRR, KRRL=NRRL,& !this is the target version
+    CALL ARO_SHALLOW_MF (KKL=IKL, KLON=KFDIA, KLEV=KLEV, KFDIA=KLON, KRR=NRR, KRRL=NRRL,&
      & KRRI=NRRI,KSV=NGFL_EXT,HMF_UPDRAFT=CMF_UPDRAFT, HMF_CLOUD=CMF_CLOUD,&
      & HFRAC_ICE=CFRAC_ICE_SHALLOW_MF,&
      & OMIXUV=LMIXUV, ONOMIXLG=.FALSE.,KSV_LGBEG=0,KSV_LGEND=0,&
diff --git a/src/arome/ext/aro_shallow_mf.F90 b/src/arome/ext/aro_shallow_mf.F90
index 4a59175ab..eb583c24f 100644
--- a/src/arome/ext/aro_shallow_mf.F90
+++ b/src/arome/ext/aro_shallow_mf.F90
@@ -1,5 +1,5 @@
 !     ######spl
-      SUBROUTINE  ARO_SHALLOW_MF(KKL, KLON,KLEV, KRR, KRRL, KRRI,KSV,     &
+      SUBROUTINE  ARO_SHALLOW_MF(KKL, KLON, KLEV, KFDIA, KRR, KRRL, KRRI,KSV,     &
                 HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,            &
                 ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
                 KTCOUNT, PTSTEP,                                      &
@@ -63,9 +63,15 @@
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODD_PARAMETERS, ONLY: JPVEXT, JPHEXT
+USE MODD_PARAMETERS, ONLY: JPVEXT
+USE MODD_CST, ONLY: CST
+USE MODD_NEB, ONLY: NEB
+USE MODD_TURB_n, ONLY: TURBN
+USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALLN
+USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
 !
 USE MODI_SHALLOW_MF
+USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
 !
 IMPLICIT NONE
 !
@@ -77,6 +83,7 @@ INTEGER,                  INTENT(IN)   :: KKL      ! +1 if grid goes from ground
                                                    ! atmosphere top, -1 otherwise
 INTEGER,                  INTENT(IN)   :: KLON     !NPROMA under CPG
 INTEGER,                  INTENT(IN)   :: KLEV     !Number of vertical levels
+INTEGER,                  INTENT(IN)   :: KFDIA
 INTEGER,                  INTENT(IN)   :: KRR      ! Number of moist variables
 INTEGER,                  INTENT(IN)   :: KRRL     ! Number of liquide water variables
 INTEGER,                  INTENT(IN)   :: KRRI     ! Number of ice variables
@@ -138,23 +145,12 @@ REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) ::  PEMF      ! updraft mass flux
 !
 !*       0.2   Declarations of local variables :
 !
-INTEGER :: JRR           ! Loop index for the moist
-INTEGER :: IIB           ! Define the physical domain
-INTEGER :: IIE           !
-INTEGER :: IJB           !
-INTEGER :: IJE           !
-INTEGER :: IKB           !
-INTEGER :: IKE           !
-INTEGER :: IKA, IKU
-INTEGER :: JI, JJ, JL, JK !
-INTEGER ::II
 INTEGER, DIMENSION(size(PRHODJ,1)) :: IKLCL,IKETL,IKCTL
 REAL,DIMENSION(size(PRHODJ,1),size(PRHODJ,2)) :: ZFLXZTHMF,ZFLXZRMF,ZFLXZUMF,ZFLXZVMF
 REAL,DIMENSION(size(PRHODJ,1),size(PRHODJ,2)) :: ZDETR,ZENTR
-!
-!
-
+TYPE(DIMPHYEX_t) :: YLDIMPHYEX
 REAL          ::  ZIMPL        ! degree of implicitness
+REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 !
 !
@@ -163,23 +159,10 @@ REAL          ::  ZIMPL        ! degree of implicitness
 !*       1.     PRELIMINARY COMPUTATIONS
 !               ------------------------
 !
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('ARO_SHALLOW_MF',0,ZHOOK_HANDLE)
 
-
-IIB=1+JPHEXT
-IIE=SIZE(PZZ,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=1 - JPHEXT
-IF(KKL==1)THEN
-  IKA=1
-  IKU=SIZE(PZZ,2)
-ELSE
-  IKA=SIZE(PZZ,2)
-  IKU=1
-ENDIF
-IKB=IKA+KKL*JPVEXT
-IKE=IKU-KKL*JPVEXT
+!Dimensions
+CALL FILL_DIMPHYEX(YLDIMPHYEX, KLON, 1, KLEV, JPVEXT, KFDIA)
 !
 !
 !------------------------------------------------------------------------------
@@ -219,11 +202,12 @@ ZIMPL=1.
 !
 !         ---------------------------------
 !
-  CALL SHALLOW_MF(KKA=IKA,KKU=IKU,KKL=KKL,KRR=KRR,KRRL=KRRL,KRRI=KRRI,                    &
+  CALL SHALLOW_MF(YLDIMPHYEX, CST, NEB, PARAM_MFSHALLN, TURBN,                            &
+     &KRR=KRR, KRRL=KRRL, KRRI=KRRI, KSV=KSV,                                             &
      &HMF_UPDRAFT=HMF_UPDRAFT, HMF_CLOUD=HMF_CLOUD,HFRAC_ICE=HFRAC_ICE,OMIXUV=OMIXUV,     &
      &ONOMIXLG=ONOMIXLG,KSV_LGBEG=KSV_LGBEG,KSV_LGEND=KSV_LGEND,                          &
      &PIMPL_MF=ZIMPL, PTSTEP=PTSTEP,                                                      &
-     &PDZZ=PDZZF,PZZ=PZZ,                                                                  &
+     &PDZZ=PDZZF,PZZ=PZZ,                                                                 &
      &PRHODJ=PRHODJ,PRHODREF=PRHODREF,                                                    &
      &PPABSM=PPABSM,PEXNM=PEXNM,                                                          &
      &PSFTH=PSFTH,PSFRV=PSFRV,                                                            &
diff --git a/src/arome/ext/aro_shallow_mf.h b/src/arome/ext/aro_shallow_mf.h
index 07cdb7a7d..4ec74085e 100644
--- a/src/arome/ext/aro_shallow_mf.h
+++ b/src/arome/ext/aro_shallow_mf.h
@@ -1,5 +1,5 @@
 INTERFACE
- SUBROUTINE ARO_SHALLOW_MF(KKL, KLON,KLEV, KRR, KRRL, KRRI,KSV,&
+ SUBROUTINE ARO_SHALLOW_MF(KKL, KLON, KLEV, KFDIA, KRR, KRRL, KRRI,KSV,&
  & HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,&
  & ONOMIXLG,KSV_LGBEG,KSV_LGEND,&
  & KTCOUNT, PTSTEP,&
@@ -18,6 +18,7 @@ USE PARKIND1  ,ONLY : JPIM     ,JPRB
 INTEGER(KIND=JPIM), INTENT(IN) :: KKL
 INTEGER(KIND=JPIM), INTENT(IN) :: KLON
 INTEGER(KIND=JPIM), INTENT(IN) :: KLEV
+INTEGER(KIND=JPIM), INTENT(IN) :: KFDIA
 INTEGER(KIND=JPIM), INTENT(IN) :: KRR
 INTEGER(KIND=JPIM), INTENT(IN) :: KRRL
 INTEGER(KIND=JPIM), INTENT(IN) :: KRRI
diff --git a/src/arome/ext/arp_shallow_mf.F90 b/src/arome/ext/arp_shallow_mf.F90
index f79aee52d..d79db7626 100644
--- a/src/arome/ext/arp_shallow_mf.F90
+++ b/src/arome/ext/arp_shallow_mf.F90
@@ -45,6 +45,7 @@
 !!      Original    11/2010
 !!      S. Riette shallow_mf now outputs ice cloud
 !!      S. Riette Jan 2012: support for both order of vertical levels
+!!      S. Riette April 2022: call abort, waiting for an update from an arpege developper...
 !!
 !-------------------------------------------------------------------------------
 !
@@ -55,7 +56,14 @@ USE YOMCST   , ONLY : RG, RATM, RKAPPA, RD, RCPD, RCPV
 
 !USE MODD_PARAMETERS
 !
+USE MODD_CST, ONLY: CST
+USE MODD_NEB, ONLY: NEB
+USE MODD_TURB_n, ONLY: TURBN
+USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALLN
+USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
+!
 USE MODI_SHALLOW_MF
+USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
 USE MODD_CST
 USE YOMCT3
 !
@@ -181,6 +189,8 @@ REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZTKE
 REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZU
 REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZV
 REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZZZF
+TYPE(DIMPHYEX_t) :: YLDIMPHYEX
+#include "abor1.intfb.h"
 
 !------------------------------------------------------------------------------
 
@@ -190,6 +200,14 @@ REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZZZF
 
 !  Controle :
 
+!shallow_mf code is now ready to deal with KIDIA/KFDIA
+!Array copies can be suppressed (no need to limit the horizontal domain nor to add the two extra levels)
+!CALL FILL_DIMPHYEX(YLDIMPHYEX, KLON, 1, KLEV, 0, KFDIA)
+
+!For now, copies are done
+CALL FILL_DIMPHYEX(YLDIMPHYEX, KFDIA, 1, KLEV, 1, KFDIA)
+
+CALL ABOR1('ARP_SHALLOW_MF: code must be checked before being activated again')
 
 ! Avec inversion des boucles
 IKA=1        ! <== Bottom index of array
@@ -372,7 +390,8 @@ ZDRTDT_MF(:,:)  = 0.
 !
 !         ---------------------------------
 
-  CALL SHALLOW_MF(KKA=IKA,KKU=IKU,KKL=IKL,KRR=IKR,KRRL=IKRL,KRRI=IKRI,   &
+  CALL SHALLOW_MF(YLDIMPHYEX, CST, NEB, PARAM_MFSHALLN, TURBN,           &
+       KRR=IKR,KRRL=IKRL,KRRI=IKRI, KSV=1,                             &
        HMF_UPDRAFT=HMF_UPDRAFT, HMF_CLOUD=HMF_CLOUD,HFRAC_ICE='N',OMIXUV=LLOMIXUV,     &
        ONOMIXLG=LLONOMIXLG,KSV_LGBEG=ISV_LGBEG,KSV_LGEND=ISV_LGEND,      &
       PIMPL_MF=PIMPL, PTSTEP=ZDT,                                        &
diff --git a/src/common/turb/modd_param_mfshalln.F90 b/src/common/turb/modd_param_mfshalln.F90
index 936d408ae..72a5644bf 100644
--- a/src/common/turb/modd_param_mfshalln.F90
+++ b/src/common/turb/modd_param_mfshalln.F90
@@ -94,6 +94,7 @@ REAL          :: XLAMBDA_MF      ! Lambda to compute ThetaS1 from ThetaL
 END TYPE PARAM_MFSHALL_t
 
 TYPE(PARAM_MFSHALL_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: PARAM_MFSHALL_MODEL
+TYPE(PARAM_MFSHALL_t), POINTER, SAVE :: PARAM_MFSHALLN => NULL()
                                      
 REAL             , POINTER :: XIMPL_MF=>NULL()
 CHARACTER (LEN=4), POINTER :: CMF_UPDRAFT=>NULL() 
@@ -131,6 +132,8 @@ CONTAINS
 SUBROUTINE PARAM_MFSHALL_GOTO_MODEL(KFROM, KTO)
 INTEGER, INTENT(IN) :: KFROM, KTO
 !
+PARAM_MFSHALLN => PARAM_MFSHALL_MODEL(KTO)
+!
 ! Save current state for allocated arrays
 !
 ! Current model is set to model KTO
diff --git a/src/common/turb/modi_shallow_mf.F90 b/src/common/turb/modi_shallow_mf.F90
index 23559eeec..29f16989a 100644
--- a/src/common/turb/modi_shallow_mf.F90
+++ b/src/common/turb/modi_shallow_mf.F90
@@ -4,7 +4,8 @@
 !
 INTERFACE
 !     #################################################################
-      SUBROUTINE SHALLOW_MF(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
+      SUBROUTINE SHALLOW_MF(D, CST, NEB, PARAMMF, TURB,               &
+                KRR, KRRL, KRRI, KSV,                                 &
                 HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,            &
                 ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
                 PIMPL_MF, PTSTEP,                                     &
@@ -23,16 +24,24 @@ INTERFACE
                 KKLCL,KKETL,KKCTL,PDX,PDY                             )
 !     #################################################################
 !!
+USE MODD_DIMPHYEX,        ONLY: DIMPHYEX_t
+USE MODD_CST,             ONLY: CST_t
+USE MODD_NEB,             ONLY: NEB_t
+USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALL_t
+USE MODD_TURB_n,          ONLY: TURB_t
 !               
 !*               1.1  Declaration of Arguments
 !                
 !
-INTEGER,                INTENT(IN)   :: KKA          ! near ground array index
-INTEGER,                INTENT(IN)   :: KKU          ! uppest atmosphere array index
-INTEGER,                INTENT(IN)   :: KKL          ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+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
 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
@@ -45,49 +54,49 @@ INTEGER,                INTENT(IN)   :: KSV_LGEND ! last  index of lag. tracer
 REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
 REAL,                   INTENT(IN)   :: PTSTEP    ! Dynamical timestep 
 
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PZZ         ! Height of flux point
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PDZZ        ! Metric coefficients
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PRHODJ      ! dry density * Grid size
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PRHODREF    ! dry density of the
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PZZ         ! Height of flux point
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PDZZ        ! Metric coefficients
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PRHODJ      ! dry density * Grid size
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PRHODREF    ! dry density of the
                                                      ! reference state
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PPABSM      ! Pressure at time t-1
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PEXNM       ! Exner function at t-dt
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PPABSM      ! Pressure at time t-1
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PEXNM       ! Exner function at t-dt
 
-REAL, DIMENSION(:),     INTENT(IN) ::  PSFTH,PSFRV ! normal surface fluxes of theta and Rv 
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PTHM        ! Theta at t-dt
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PRM         ! water var. at t-dt
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PUM,PVM     ! wind components at t-dt
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PTKEM       ! tke at t-dt
+REAL, DIMENSION(D%NIT*D%NJT),         INTENT(IN) ::  PSFTH,PSFRV ! normal surface fluxes of theta and Rv 
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PTHM        ! Theta at t-dt
+REAL, DIMENSION(D%NIT*D%NJT,KRR),     INTENT(IN) ::  PRM         ! water var. at t-dt
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PUM,PVM     ! wind components at t-dt
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PTKEM       ! tke at t-dt
 
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PSVM        ! scalar variable a t-dt
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT,KSV), INTENT(IN) ::  PSVM        ! scalar variable a t-dt
 
-REAL, DIMENSION(:,:),   INTENT(OUT)::  PDUDT_MF     ! tendency of U   by massflux scheme
-REAL, DIMENSION(:,:),   INTENT(OUT)::  PDVDT_MF     ! tendency of V   by massflux scheme
-REAL, DIMENSION(:,:),   INTENT(OUT)::  PDTHLDT_MF   ! tendency of thl by massflux scheme
-REAL, DIMENSION(:,:),   INTENT(OUT)::  PDRTDT_MF    ! tendency of rt  by massflux scheme
-REAL, DIMENSION(:,:,:), INTENT(OUT)::  PDSVDT_MF    ! tendency of Sv  by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT)::  PDUDT_MF     ! tendency of U   by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT)::  PDVDT_MF     ! tendency of V   by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT)::  PDTHLDT_MF   ! tendency of thl by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT)::  PDRTDT_MF    ! tendency of rt  by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT,KSV), INTENT(OUT)::  PDSVDT_MF    ! tendency of Sv  by massflux scheme
 
-REAL, DIMENSION(:,:),   INTENT(OUT)   ::  PSIGMF,PRC_MF,PRI_MF,PCF_MF ! cloud info for the cloud scheme
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZTHVMF           ! Thermal production for TKE scheme
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZTHMF
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZRMF
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZUMF
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZVMF
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PTHL_UP   ! Thl updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRT_UP    ! Rt  updraft characteristics
-REAL, DIMENSION(:,:), INTENT(OUT) ::  PRV_UP    ! Vapor updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PU_UP     ! U wind updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PV_UP     ! V wind updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRC_UP    ! cloud content updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRI_UP    ! ice content   updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PTHV_UP   ! Thv   updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PW_UP     ! vertical speed updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PFRAC_UP  ! updraft fraction
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PEMF      ! updraft mass flux
-REAL, DIMENSION(:,:), INTENT(OUT) ::  PDETR     ! updraft detrainment
-REAL, DIMENSION(:,:), INTENT(OUT) ::  PENTR     ! updraft entrainment
-INTEGER,DIMENSION(:), INTENT(OUT) :: KKLCL,KKETL,KKCTL ! level of LCL,ETL and CTL
-REAL,                 INTENT(IN)  :: PDX, PDY
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT)   ::  PSIGMF,PRC_MF,PRI_MF,PCF_MF ! cloud info for the cloud scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZTHVMF           ! Thermal production for TKE scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZTHMF
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZRMF
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZUMF
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZVMF
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PTHL_UP   ! Thl updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PRT_UP    ! Rt  updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) ::  PRV_UP    ! Vapor updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PU_UP     ! U wind updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PV_UP     ! V wind updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PRC_UP    ! cloud content updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PRI_UP    ! ice content   updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PTHV_UP   ! Thv   updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PW_UP     ! vertical speed updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PFRAC_UP  ! updraft fraction
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PEMF      ! updraft mass flux
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) ::  PDETR     ! updraft detrainment
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) ::  PENTR     ! updraft entrainment
+INTEGER,DIMENSION(D%NIT*D%NJT),     INTENT(OUT) :: KKLCL,KKETL,KKCTL ! level of LCL,ETL and CTL
+REAL,                               INTENT(IN)  :: PDX, PDY
 
 
 END SUBROUTINE SHALLOW_MF
diff --git a/src/common/turb/shallow_mf.F90 b/src/common/turb/shallow_mf.F90
index 814869f50..6fcf18600 100644
--- a/src/common/turb/shallow_mf.F90
+++ b/src/common/turb/shallow_mf.F90
@@ -4,7 +4,8 @@
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !     ################################################################
-      SUBROUTINE SHALLOW_MF(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
+      SUBROUTINE SHALLOW_MF(D, CST, NEB, PARAMMF, TURB,               &
+                KRR, KRRL, KRRI, KSV,                                 &
                 HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,            &
                 ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
                 PIMPL_MF, PTSTEP,                                     &
@@ -71,11 +72,12 @@
 !*      0. DECLARATIONS
 !          ------------
 !
-USE MODD_CST
-USE MODD_PARAMETERS, ONLY: JPVEXT
-USE MODD_NEB, ONLY: NEB
-USE MODD_PARAM_MFSHALL_n
-
+USE MODD_DIMPHYEX,        ONLY: DIMPHYEX_t
+USE MODD_CST,             ONLY: CST_t
+USE MODD_NEB,             ONLY: NEB_t
+USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALL_t
+USE MODD_TURB_n,          ONLY: TURB_t
+!
 USE MODE_THL_RT_FROM_TH_R_MF, ONLY: THL_RT_FROM_TH_R_MF
 USE MODE_COMPUTE_UPDRAFT, ONLY: COMPUTE_UPDRAFT
 USE MODE_COMPUTE_UPDRAFT_RHCJ10, ONLY: COMPUTE_UPDRAFT_RHCJ10
@@ -93,12 +95,15 @@ IMPLICIT NONE
 !
 !
 !
-INTEGER,                INTENT(IN)   :: KKA          ! near ground array index
-INTEGER,                INTENT(IN)   :: KKU          ! uppest atmosphere array index
-INTEGER,                INTENT(IN)   :: KKL          ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+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
 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
@@ -111,71 +116,69 @@ INTEGER,                INTENT(IN)   :: KSV_LGEND ! last  index of lag. tracer
 REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
 REAL,                   INTENT(IN)   :: PTSTEP    ! Dynamical timestep 
 
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PZZ         ! Height of flux point
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PDZZ        ! Metric coefficients
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PRHODJ      ! dry density * Grid size
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PRHODREF    ! dry density of the
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PZZ         ! Height of flux point
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PDZZ        ! Metric coefficients
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PRHODJ      ! dry density * Grid size
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PRHODREF    ! dry density of the
                                                      ! reference state
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PPABSM      ! Pressure at time t-1
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PEXNM       ! Exner function at t-dt
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PPABSM      ! Pressure at time t-1
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PEXNM       ! Exner function at t-dt
 
-REAL, DIMENSION(:),   INTENT(IN)   ::  PSFTH,PSFRV ! normal surface fluxes of theta and Rv 
-REAL, DIMENSION(:,:), INTENT(IN)   ::  PTHM        ! Theta at t-dt
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PRM         ! water var. at t-dt
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PUM,PVM     ! wind components at t-dt
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PTKEM       ! tke at t-dt
+REAL, DIMENSION(D%NIT*D%NJT),   INTENT(IN)   ::  PSFTH,PSFRV ! normal surface fluxes of theta and Rv 
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(IN)   ::  PTHM        ! Theta at t-dt
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT,KRR), INTENT(IN) ::  PRM         ! water var. at t-dt
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PUM,PVM     ! wind components at t-dt
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(IN) ::  PTKEM       ! tke at t-dt
 
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PSVM        ! scalar variable a t-dt
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT,KSV), INTENT(IN) ::  PSVM        ! scalar variable a t-dt
 
-REAL, DIMENSION(:,:),   INTENT(OUT)::  PDUDT_MF     ! tendency of U   by massflux scheme
-REAL, DIMENSION(:,:),   INTENT(OUT)::  PDVDT_MF     ! tendency of V   by massflux scheme
-REAL, DIMENSION(:,:),   INTENT(OUT)::  PDTHLDT_MF   ! tendency of thl by massflux scheme
-REAL, DIMENSION(:,:),   INTENT(OUT)::  PDRTDT_MF    ! tendency of rt  by massflux scheme
-REAL, DIMENSION(:,:,:), INTENT(OUT)::  PDSVDT_MF    ! tendency of Sv  by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT)::  PDUDT_MF     ! tendency of U   by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT)::  PDVDT_MF     ! tendency of V   by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT)::  PDTHLDT_MF   ! tendency of thl by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT),   INTENT(OUT)::  PDRTDT_MF    ! tendency of rt  by massflux scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT,KSV), INTENT(OUT)::  PDSVDT_MF    ! tendency of Sv  by massflux scheme
 
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PSIGMF,PRC_MF,PRI_MF,PCF_MF ! cloud info for the cloud scheme
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZTHVMF           ! Thermal production for TKE scheme
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZTHMF
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZRMF
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZUMF
-REAL, DIMENSION(:,:), INTENT(OUT)     ::  PFLXZVMF
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PTHL_UP   ! Thl updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRT_UP    ! Rt  updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRV_UP    ! Vapor updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PU_UP     ! U wind updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PV_UP     ! V wind updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRC_UP    ! cloud content updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PRI_UP    ! ice content   updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PTHV_UP   ! Thv   updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PW_UP     ! vertical speed updraft characteristics
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PFRAC_UP  ! updraft fraction
-REAL, DIMENSION(:,:), INTENT(INOUT) ::  PEMF      ! updraft mass flux
-REAL, DIMENSION(:,:), INTENT(OUT) ::  PDETR     ! updraft detrainment
-REAL, DIMENSION(:,:), INTENT(OUT) ::  PENTR     ! updraft entrainment
-INTEGER,DIMENSION(:), INTENT(OUT) :: KKLCL,KKETL,KKCTL ! level of LCL,ETL and CTL
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PSIGMF,PRC_MF,PRI_MF,PCF_MF ! cloud info for the cloud scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZTHVMF           ! Thermal production for TKE scheme
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZTHMF
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZRMF
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZUMF
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT)     ::  PFLXZVMF
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PTHL_UP   ! Thl updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PRT_UP    ! Rt  updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PRV_UP    ! Vapor updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PU_UP     ! U wind updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PV_UP     ! V wind updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PRC_UP    ! cloud content updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PRI_UP    ! ice content   updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PTHV_UP   ! Thv   updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PW_UP     ! vertical speed updraft characteristics
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PFRAC_UP  ! updraft fraction
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(INOUT) ::  PEMF      ! updraft mass flux
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) ::  PDETR     ! updraft detrainment
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT), INTENT(OUT) ::  PENTR     ! updraft entrainment
+INTEGER,DIMENSION(D%NIT*D%NJT), INTENT(OUT) :: KKLCL,KKETL,KKCTL ! level of LCL,ETL and CTL
 REAL,                 INTENT(IN)  :: PDX, PDY
 !
 !                     0.2  Declaration of local variables
 !
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) ::     &
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT) ::     &
           ZTHLM,                                  & !
           ZRTM,                                   & !
           ZTHVM,                                  & !
           ZEMF_O_RHODREF,                         & ! entrainment/detrainment
           ZBUO_INTEG                                ! integrated buoyancy
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZFRAC_ICE
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: ZFRAC_ICE
 
-REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3)) ::  &
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT,KSV) ::  &
                                           ZSV_UP,&  ! updraft scalar var.
                                           ZFLXZSVMF ! Flux     
-REAL, DIMENSION(SIZE(PTHM,1)) :: ZDEPTH             ! Deepness of cloud
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZFRAC_ICE_UP ! liquid/solid fraction in updraft
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZRSAT_UP ! Rsat in updraft
+REAL, DIMENSION(D%NIT*D%NJT) :: ZDEPTH             ! Deepness of cloud
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: ZFRAC_ICE_UP ! liquid/solid fraction in updraft
+REAL, DIMENSION(D%NIT*D%NJT,D%NKT) :: ZRSAT_UP ! Rsat in updraft
 
 LOGICAL :: GENTR_DETR  ! flag to recompute entrainment, detrainment and mass flux
-INTEGER :: IKB         ! near ground physical index
-INTEGER :: IKE         ! uppest atmosphere physical index
-INTEGER, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: IERR
+INTEGER, DIMENSION(D%NIT*D%NJT,D%NKT) :: IERR
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !------------------------------------------------------------------------
@@ -183,10 +186,6 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !!! 1. Initialisation
 IF (LHOOK) CALL DR_HOOK('SHALLOW_MF',0,ZHOOK_HANDLE)
 
-! vertical boundaries
-IKB=KKA+KKL*JPVEXT
-IKE=KKU-KKL*JPVEXT
-
 ! updraft governing variables
 IF (HMF_UPDRAFT == 'EDKF'  .OR. HMF_UPDRAFT == 'RHCJ') THEN
   PENTR      = 1.E20
@@ -197,7 +196,7 @@ ENDIF
 
 ! Thermodynamics functions
 ZFRAC_ICE(:,:) = 0.
-IF (SIZE(PRM,3).GE.4) THEN
+IF (KRR.GE.4) THEN
   WHERE(PRM(:,:,2)+PRM(:,:,4) > 1.E-20)
     ZFRAC_ICE(:,:) = PRM(:,:,4) / (PRM(:,:,2)+PRM(:,:,4))
   ENDWHERE
@@ -210,7 +209,7 @@ CALL THL_RT_FROM_TH_R_MF(KRR,KRRL,KRRI,    &
                          ZTHLM, ZRTM       )
 
 ! Virtual potential temperature at t-dt
-ZTHVM(:,:) = PTHM(:,:)*((1.+XRV / XRD *PRM(:,:,1))/(1.+ZRTM(:,:))) 
+ZTHVM(:,:) = PTHM(:,:)*((1.+CST%XRV / CST%XRD *PRM(:,:,1))/(1.+ZRTM(:,:))) 
 
 ! 
 !!! 2. Compute updraft
@@ -218,7 +217,7 @@ ZTHVM(:,:) = PTHM(:,:)*((1.+XRV / XRD *PRM(:,:,1))/(1.+ZRTM(:,:)))
 !
 IF (HMF_UPDRAFT == 'EDKF') THEN
   GENTR_DETR = .TRUE.
-  CALL COMPUTE_UPDRAFT(KKA,IKB,IKE,KKU,KKL,HFRAC_ICE,GENTR_DETR,OMIXUV,&
+  CALL COMPUTE_UPDRAFT(D%NKA,D%NKB,D%NKE,D%NKU,D%NKL,HFRAC_ICE,GENTR_DETR,OMIXUV,&
                        ONOMIXLG,KSV_LGBEG,KSV_LGEND,             &
                        PZZ,PDZZ,                                 &
                        PSFTH,PSFRV,PPABSM,PRHODREF,              &
@@ -231,7 +230,7 @@ IF (HMF_UPDRAFT == 'EDKF') THEN
                        PDX,PDY)
 ELSEIF (HMF_UPDRAFT == 'RHCJ') THEN
   GENTR_DETR = .TRUE.
-  CALL COMPUTE_UPDRAFT_RHCJ10(KKA,IKB,IKE,KKU,KKL,HFRAC_ICE,GENTR_DETR,OMIXUV,&
+  CALL COMPUTE_UPDRAFT_RHCJ10(D%NKA,D%NKB,D%NKE,D%NKU,D%NKL,HFRAC_ICE,GENTR_DETR,OMIXUV,&
                        ONOMIXLG,KSV_LGBEG,KSV_LGEND,             &
                        PZZ,PDZZ,                                 &
                        PSFTH,PSFRV,PPABSM,PRHODREF,              &
@@ -242,7 +241,7 @@ ELSEIF (HMF_UPDRAFT == 'RHCJ') THEN
                        PFRAC_UP,ZFRAC_ICE_UP,ZRSAT_UP,PEMF,PDETR,&
                        PENTR,ZBUO_INTEG,KKLCL,KKETL,KKCTL,ZDEPTH )
 ELSEIF (HMF_UPDRAFT == 'RAHA') THEN
-   CALL COMPUTE_UPDRAFT_RAHA(KKA,IKB,IKE,KKU,KKL,HFRAC_ICE,      &
+   CALL COMPUTE_UPDRAFT_RAHA(D%NKA,D%NKB,D%NKE,D%NKU,D%NKL,HFRAC_ICE,      &
                        GENTR_DETR,OMIXUV,                        &
                        ONOMIXLG,KSV_LGBEG,KSV_LGEND,             &
                        PZZ,PDZZ,                                 &
@@ -265,7 +264,7 @@ ENDIF
 !!! 5. Compute diagnostic convective cloud fraction and content
 !!!    --------------------------------------------------------
 !
-CALL COMPUTE_MF_CLOUD(KKA,IKB,IKE,KKU,KKL,KRR,KRRL,KRRI,&
+CALL COMPUTE_MF_CLOUD(D%NKA,D%NKB,D%NKE,D%NKU,D%NKL,KRR,KRRL,KRRI,&
                       HMF_CLOUD,ZFRAC_ICE,              &
                       PRC_UP,PRI_UP,PEMF,               &
                       PTHL_UP,PRT_UP,PFRAC_UP,          &
@@ -283,7 +282,7 @@ CALL COMPUTE_MF_CLOUD(KKA,IKB,IKE,KKU,KKL,KRR,KRRL,KRRI,&
 ZEMF_O_RHODREF=PEMF/PRHODREF
 
 IF ( PIMPL_MF > 1.E-10 ) THEN  
-  CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV,                     &
+  CALL MF_TURB(D%NKA,D%NKB,D%NKE,D%NKU,D%NKL, OMIXUV,                     &
              ONOMIXLG,KSV_LGBEG,KSV_LGEND,                            &
              PIMPL_MF, PTSTEP,                                        &
              PDZZ,                                                    &
@@ -294,7 +293,7 @@ IF ( PIMPL_MF > 1.E-10 ) THEN
              PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF,         &
              ZFLXZSVMF                                                )
 ELSE
-  CALL MF_TURB_EXPL(KKA, IKB, IKE, KKU, KKL, OMIXUV,                 &
+  CALL MF_TURB_EXPL(D%NKA,D%NKB,D%NKE,D%NKU,D%NKL, OMIXUV,                 &
          PRHODJ,                                                       &
          ZTHLM,ZTHVM,ZRTM,PUM,PVM,                                     &
          PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF,                       &
diff --git a/src/mesonh/ext/shallow_mf_pack.f90 b/src/mesonh/ext/shallow_mf_pack.f90
index 5001e4bad..b1134a50f 100644
--- a/src/mesonh/ext/shallow_mf_pack.f90
+++ b/src/mesonh/ext/shallow_mf_pack.f90
@@ -123,11 +123,18 @@ END MODULE MODI_SHALLOW_MF_PACK
 !*      0. DECLARATIONS
 !          ------------
 !
+USE MODD_CST, ONLY: CST
+USE MODD_NEB, ONLY: NEB
+USE MODD_TURB_n, ONLY: TURBN
+USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALLN
+USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
+!
+USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
+!
 use modd_budget,          only: lbudget_u, lbudget_v, lbudget_th, lbudget_rv, lbudget_sv,  &
                                 NBUDGET_U, NBUDGET_V, NBUDGET_TH, NBUDGET_RV, NBUDGET_SV1, &
                                 tbudgets
 USE MODD_CONF
-USE MODD_CST
 USE MODD_IO,              ONLY: TFILEDATA
 use modd_field,           only: tfielddata, TYPEREAL
 USE MODD_NSV
@@ -260,9 +267,11 @@ INTEGER :: IIU, IJU, IKU, IKB, IKE, IRR, ISV
 INTEGER :: JK,JRR,JSV                          ! Loop counters
 
 TYPE(TFIELDDATA) :: TZFIELD
+TYPE(DIMPHYEX_t) :: YLDIMPHYEX
 !------------------------------------------------------------------------
 
 !!! 1. Initialisation
+CALL FILL_DIMPHYEX(YLDIMPHYEX, SIZE(PZZ,1), SIZE(PZZ,2), SIZE(PZZ,3))
 
 ! Internal Domain
 IIU=SIZE(PTHM,1)
@@ -323,7 +332,8 @@ ZSFRV(:)=RESHAPE(PSFRV(:,:),(/ IIU*IJU /) )
 
 !!! 3. Call of the physical parameterization of massflux vertical transport
 
-CALL SHALLOW_MF(1,IKU,1,KRR,KRRL,KRRI,                              &
+CALL SHALLOW_MF(YLDIMPHYEX, CST, NEB, PARAM_MFSHALLN, TURBN,          &
+                KRR,KRRL,KRRI,ISV,                                    &
                 HMF_UPDRAFT, HMF_CLOUD, CFRAC_ICE_SHALLOW_MF, OMIXUV,                  &
                 LNOMIXLG,NSV_LGBEG,NSV_LGEND,                         &
                 PIMPL_MF, PTSTEP,                                     &
-- 
GitLab