diff --git a/docs/TODO b/docs/TODO
index b515f177423cec09fbf2e8d7ffdb3832d0c25f7e..ba3cf158895eb8e06b43759cdb5aa99cc9f1abf0 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -50,7 +50,6 @@ Pb identifiés à corriger plus tard:
   - si possible, modifier ice4_sedimentation_split* dans le même esprit que stat
   - La taille du buffer utilisé pour th_r_from_thl_rt doit être mise en module et
     utilisée pour déclarer le buffer dans les routines appelantes et dans th_r_from_thl_rt
-  - shallow_mf_pack devrait être récrit pour appeler directement shallow_mf sans recopier les tableaux pour les changer de forme
   - rain_ice:
     - séparer l'avance temporelle du découpage en sous-blocs en créant une couche driver supplémentaire. Cette couche pourrait
       avoir différentes implémentations (filtre LLMICRO seul, filtre LLMICRO + découpage en sous-blocs, filtre LLMICR
diff --git a/src/arome/ext/apl_arome.F90 b/src/arome/ext/apl_arome.F90
index e3e8f9c1b0b44cf24cdf9e3617652731dc91e794..fc8e5a96dbb4b40e45947971cb6ea4450da5f8e6 100644
--- a/src/arome/ext/apl_arome.F90
+++ b/src/arome/ext/apl_arome.F90
@@ -2777,8 +2777,8 @@ IF (LMFSHAL) THEN
     & PSVM=ZSVM_, PDUDT_MF=ZMFUS_, PDVDT_MF=ZMFVS_, PDTHLDT_MF=ZTHLS_, PDRTDT_MF=ZRTS_, PDSVDT_MF=ZSVXXX_,                          &
     & PSIGMF=ZSIGMF_, PRC_MF=ZRC_MF_, PRI_MF=ZRI_MF_, PCF_MF=ZCF_MF_, PFLXZTHVMF=ZARG_FLXZTHVMF_, PTHL_UP=ZTHETAL_UP_,              &
     & PRT_UP= ZRT_UP_, PRV_UP=ZZRV_UP_, PRC_UP=ZRC_UP_, PRI_UP=ZRI_UP_, PU_UP=ZZU_UP_, PV_UP=ZZV_UP_,                               &
-    & PTHV_UP=ZTHETAV_UP_, PW_UP=ZZW_UP_, PFRAC_UP=ZZFRAC_UP_, PEMF=ZMF_UP__(:, 1:YDCPG_OPTS%KFLEVG)                                &
-    & )
+    & PTHV_UP=ZTHETAV_UP_, PW_UP=ZZW_UP_, PFRAC_UP=ZZFRAC_UP_, PEMF=ZMF_UP__(:, 1:YDCPG_OPTS%KFLEVG),                               &
+    & YDDDH=YDDDH, YDLDDH=YDMODEL%YRML_DIAG%YRLDDH, YDMDDH=YDMODEL%YRML_DIAG%YRMDDH)
 
     !wc No variance due to dry updraft yet.
     ! Putting ZSIGMF to 0 for dry updraft might be obsolete 
diff --git a/src/arome/ext/aro_shallow_mf.F90 b/src/arome/ext/aro_shallow_mf.F90
index a6750efd89818b3e3cd210b0405f2c15ec7e90ce..76830cf650ccc252a2de46dbd4d868e21d67a318 100644
--- a/src/arome/ext/aro_shallow_mf.F90
+++ b/src/arome/ext/aro_shallow_mf.F90
@@ -1,9 +1,9 @@
 !     ######spl
-      SUBROUTINE  ARO_SHALLOW_MF(KKL, KLON, KLEV, KFDIA, 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, PDX, PDY,                            &
-                PZZ, PZZF, PDZZF,                                            &
+                PZZ, PZZF, PDZZF,                                     &
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXNM,                                        &
                 PSFTH,PSFRV,                                          &
@@ -11,9 +11,10 @@
                 PUM,PVM,PTKEM,PSVM,                                   &
                 PDUDT_MF,PDVDT_MF,                                    &
                 PDTHLDT_MF,PDRTDT_MF,PDSVDT_MF,                       &
-                PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF,                      &
+                PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF,               &
                 PTHL_UP,PRT_UP,PRV_UP,PRC_UP,PRI_UP,                  &
-                PU_UP, PV_UP, PTHV_UP, PW_UP, PFRAC_UP, PEMF)
+                PU_UP, PV_UP, PTHV_UP, PW_UP, PFRAC_UP, PEMF,         &
+                YDDDH,YDLDDH,YDMDDH                                   )
 
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -64,6 +65,7 @@
 !              ------------
 !
 USE MODD_PARAMETERS, ONLY: JPVEXT
+USE MODD_BUDGET, ONLY: NBUDGET_SV1, TBUDGETDATA, TBUCONF
 USE MODD_CST, ONLY: CST
 USE MODD_NEB, ONLY: NEB
 USE MODD_TURB_n, ONLY: TURBN
@@ -74,6 +76,10 @@ USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
 USE MODI_SHALLOW_MF
 USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
 !
+USE DDH_MIX, ONLY  : TYP_DDH
+USE YOMLDDH, ONLY  : TLDDH
+USE YOMMDDH, ONLY  : TMDDH
+!
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
@@ -145,16 +151,22 @@ REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) ::  PW_UP     ! vertical speed updraft
 REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) ::  PFRAC_UP  ! updraft fraction
 REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) ::  PEMF      ! updraft mass flux
 !
-LOGICAL :: OSTATNW
+TYPE(TYP_DDH), INTENT(INOUT), TARGET   :: YDDDH
+TYPE(TLDDH),   INTENT(IN), TARGET      :: YDLDDH
+TYPE(TMDDH),   INTENT(IN), TARGET      :: YDMDDH
+!
 !
 !*       0.2   Declarations of local variables :
 !
+LOGICAL :: OSTATNW
+TYPE(TBUDGETDATA), DIMENSION(NBUDGET_SV1) :: YLBUDGET !NBUDGET_SV1 is the one with the highest number needed for shallow_mf
 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
+INTEGER :: JBU ! Loop index for budgets
 !
 !
 !
@@ -193,11 +205,13 @@ ZIMPL=1.
 !------------------------------------------------------------------------------
 !
 !
-!*       3.   MULTIPLICATION PAR RHODJ
-!             POUR OBTENIR LES TERMES SOURCES DE MESONH
-!
-!         -----------------------------------------------
-
+! Budgets
+DO JBU=1, NBUDGET_SV1
+  YLBUDGET(JBU)%NBUDGET=JBU
+  YLBUDGET(JBU)%YDDDH=>YDDDH
+  YLBUDGET(JBU)%YDLDDH=>YDLDDH
+  YLBUDGET(JBU)%YDMDDH=>YDMDDH
+ENDDO
 !
 !------------------------------------------------------------------------------
 !
@@ -206,7 +220,7 @@ ZIMPL=1.
 !
 !         ---------------------------------
 !
-OSTATNW = .FALSE.
+TURBN%LSTATNW = .FALSE.
   CALL SHALLOW_MF(YLDIMPHYEX, CST, NEB, PARAM_MFSHALLN, TURBN, CSTURB,                    &
      &KRR=KRR, KRRL=KRRL, KRRI=KRRI, KSV=KSV,                                             &
      &HFRAC_ICE=HFRAC_ICE, ONOMIXLG=ONOMIXLG,KSV_LGBEG=KSV_LGBEG,KSV_LGEND=KSV_LGEND,     &
@@ -223,7 +237,8 @@ OSTATNW = .FALSE.
      &PTHL_UP=PTHL_UP,PRT_UP=PRT_UP,PRV_UP=PRV_UP,PRC_UP=PRC_UP,PRI_UP=PRI_UP,            &
      &PU_UP=PU_UP, PV_UP=PV_UP, PTHV_UP=PTHV_UP, PW_UP=PW_UP,                             &
      &PFRAC_UP=PFRAC_UP,PEMF=PEMF,PDETR=ZDETR,PENTR=ZENTR,                                &
-     &KKLCL=IKLCL,KKETL=IKETL,KKCTL=IKCTL,PDX=PDX,PDY=PDY                                 )
+     &KKLCL=IKLCL,KKETL=IKETL,KKCTL=IKCTL,PDX=PDX,PDY=PDY,                                &
+     &BUCONF=TBUCONF, TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET)                          )
 !
 !
 !------------------------------------------------------------------------------
diff --git a/src/arome/ext/aro_shallow_mf.h b/src/arome/ext/aro_shallow_mf.h
index 269e53337835554ff950c01a45d9466bd047dab4..4e3ea02da92831f711b473ae52f7e73e9c4a99ff 100644
--- a/src/arome/ext/aro_shallow_mf.h
+++ b/src/arome/ext/aro_shallow_mf.h
@@ -13,8 +13,12 @@ INTERFACE
  & PDTHLDT_MF,PDRTDT_MF,PDSVDT_MF,&
  & PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF,&
  & PTHL_UP,PRT_UP,PRV_UP,PRC_UP,PRI_UP,&
- & PU_UP, PV_UP, PTHV_UP, PW_UP, PFRAC_UP, PEMF) 
+ & PU_UP, PV_UP, PTHV_UP, PW_UP, PFRAC_UP, PEMF,&
+ & YDDDH,YDLDDH,YDMDDH)
 USE PARKIND1  ,ONLY : JPIM     ,JPRB
+USE DDH_MIX, ONLY : TYP_DDH
+USE YOMLDDH, ONLY  : TLDDH
+USE YOMMDDH, ONLY  : TMDDH
 INTEGER(KIND=JPIM), INTENT(IN) :: KKL
 INTEGER(KIND=JPIM), INTENT(IN) :: KLON
 INTEGER(KIND=JPIM), INTENT(IN) :: KLEV
@@ -65,5 +69,8 @@ REAL(KIND=JPRB), DIMENSION(KLON,KLEV), INTENT(INOUT) :: PTHV_UP
 REAL(KIND=JPRB), DIMENSION(KLON,KLEV), INTENT(INOUT) :: PW_UP
 REAL(KIND=JPRB), DIMENSION(KLON,KLEV), INTENT(INOUT) :: PFRAC_UP
 REAL(KIND=JPRB), DIMENSION(KLON,KLEV), INTENT(INOUT) :: PEMF
+TYPE(TYP_DDH), INTENT(INOUT), TARGET   :: YDDDH
+TYPE(TLDDH),   INTENT(IN), TARGET      :: YDLDDH
+TYPE(TMDDH),   INTENT(IN), TARGET      :: YDMDDH
 END SUBROUTINE ARO_SHALLOW_MF
 END INTERFACE
diff --git a/src/arome/ext/aroini_mfshal.F90 b/src/arome/ext/aroini_mfshal.F90
index d0a0437226322741cffe2769fc7169c8e720dcd2..330738fed823cf7531b703af510b303dcf2ca679 100644
--- a/src/arome/ext/aroini_mfshal.F90
+++ b/src/arome/ext/aroini_mfshal.F90
@@ -1,6 +1,6 @@
 SUBROUTINE AROINI_MFSHAL(PALP_PERT,PABUO,PBENTR,PBDETR,PCMF,PENTR_MF,PCRAD_MF,PENTR_DRY,&
  &          PDETR_DRY,PDETR_LUP,PKCF_MF,PKRC_MF,PTAUSIGMF,PPRES_UV,PFRAC_UP_MAX,&
- &          PALPHA_MF,PSIGMA_MF,PA1,PB,PC,PBETA1,PR,PLAMBDA)
+ &          PALPHA_MF,PSIGMA_MF,PA1,PB,PC,PBETA1,PR,PLAMBDA,HMF_UPDRAFT,HMF_CLOUD,OMIXUV)
  
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -43,6 +43,7 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     ------------------------------------------------------------------
 
 USE MODI_INI_CMFSHALL
+USE MODD_PARAM_MFSHALL_n, ONLY: LMIXUV, CMF_UPDRAFT, CMF_CLOUD
 
 IMPLICIT NONE
 
@@ -68,7 +69,10 @@ REAL,   INTENT(IN)   :: PB
 REAL,   INTENT(IN)   :: PC
 REAL,   INTENT(IN)   :: PBETA1   
 REAL,   INTENT(IN)   :: PR   
-REAL,   INTENT(IN)   :: PLAMBDA   
+REAL,   INTENT(IN)   :: PLAMBDA
+CHARACTER (LEN=4), INTENT(IN) :: HMF_UPDRAFT
+CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD
+LOGICAL, INTENT(IN) :: OMIXUV
 
 !     ------------------------------------------------------------------
 
@@ -79,7 +83,10 @@ IF (LHOOK) CALL DR_HOOK('AROINI_MFSHAL',0,ZHOOK_HANDLE)
 CALL INI_CMFSHALL(PALP_PERT,PABUO,PBENTR,PBDETR,PCMF,PENTR_MF,PCRAD_MF,PENTR_DRY,&
  &          PDETR_DRY,PDETR_LUP,PKCF_MF,PKRC_MF,PTAUSIGMF,PPRES_UV,PFRAC_UP_MAX,&
  &          PALPHA_MF,PSIGMA_MF,PA1,PB,PC,PBETA1,PR,PLAMBDA)
-
+!
+LMIXUV=OMIXUV
+CMF_UPDRAFT=HMF_UPDRAFT
+CMF_CLOUD=HMF_CLOUD
 !     ------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('AROINI_MFSHAL',1,ZHOOK_HANDLE)
 RETURN
diff --git a/src/arome/ext/aroini_mfshal.h b/src/arome/ext/aroini_mfshal.h
index 2d1b49422d8d82c6272037142ed9309d8e6860ca..82164a5aa809096909ed0387a1d50097ab8ca486 100644
--- a/src/arome/ext/aroini_mfshal.h
+++ b/src/arome/ext/aroini_mfshal.h
@@ -1,7 +1,7 @@
 INTERFACE
 SUBROUTINE AROINI_MFSHAL(PALP_PERT,PABUO,PBENTR,PBDETR,PCMF,PENTR_MF,PCRAD_MF,PENTR_DRY,&
  &          PDETR_DRY,PDETR_LUP,PKCF_MF,PKRC_MF,PTAUSIGMF,PPRES_UV,PFRAC_UP_MAX,&
- &          PALPHA_MF,PSIGMA_MF,PA1,PB,PC,PBETA1,PR,PLAMBDA)
+ &          PALPHA_MF,PSIGMA_MF,PA1,PB,PC,PBETA1,PR,PLAMBDA,HMF_UPDRAFT,HMF_CLOUD,OMIXUV)
 
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -29,6 +29,8 @@ REAL(KIND=JPRB),   INTENT(IN)   :: PC
 REAL(KIND=JPRB),   INTENT(IN)   :: PBETA1   
 REAL(KIND=JPRB),   INTENT(IN)   :: PR
 REAL(KIND=JPRB),   INTENT(IN)   :: PLAMBDA   
-
+CHARACTER (LEN=4), INTENT(IN) :: HMF_UPDRAFT
+CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD
+LOGICAL, INTENT(IN) :: OMIXUV
 END SUBROUTINE AROINI_MFSHAL
 END INTERFACE
diff --git a/src/arome/ext/aroini_micro.F90 b/src/arome/ext/aroini_micro.F90
index 347033c9cd594d9ec7961697d07eced23897f4e1..450e1f8114df10ddf2ede6f61f1ab693019b9e2c 100644
--- a/src/arome/ext/aroini_micro.F90
+++ b/src/arome/ext/aroini_micro.F90
@@ -5,7 +5,7 @@ SUBROUTINE AROINI_MICRO(KULOUT,PTSTEP,LDWARM,CMICRO,KSPLITR,CCSEDIM,LDCRIAUTI,&
               PFRACM90, LDCONVHG, CCSUBG_RC_RR_ACCR, CCSUBG_RR_EVAP, CCSUBG_PR_PDF, &
               LDCRFLIMIT, CCFRAC_ICE_ADJUST, PSPLIT_MAXCFL,&
               CCFRAC_ICE_SHALLOW_MF, LDSEDIM_AFTER,LDDEPOSC,PVDEPOSC, PFRMIN,&
-              LDDEPSG,PRDEPSRED,PRDEPGRED)
+              LDDEPSG,PRDEPSRED,PRDEPGRED,LDSEDIC)
 
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -105,6 +105,7 @@ LOGICAL, INTENT (IN) :: LDDEPOSC
 REAL, INTENT(IN):: PVDEPOSC
 REAL, OPTIONAL, INTENT (IN) :: PFRMIN(40)
 LOGICAL, INTENT (IN) :: LDDEPSG 
+LOGICAL, INTENT(IN)  :: LDSEDIC
 REAL, INTENT (IN) :: PRDEPSRED, PRDEPGRED
 
 !-----------------------------------------------------------------------
@@ -143,6 +144,7 @@ XSPLIT_MAXCFL=PSPLIT_MAXCFL
 LSEDIM_AFTER=LDSEDIM_AFTER ! sedimentation done before or after microphysics
 !
 XTSTEP_TS=PTSTEP_TS ! Approximative time step for time-splitting (0 for no time-splitting)
+LSEDIC=LDSEDIC
 !
 !        2. Set implicit default values for MODD_RAIN_ICE_DESCR 
 !                     et MODD_RAIN_ICE_PARAM
diff --git a/src/arome/ext/aroini_micro.h b/src/arome/ext/aroini_micro.h
index bf6d1d18b8bc0296f7cae80c60b93d4b85cb9ea3..a5dd62fbf0e4fb9dcdfbce11972f7c4f51664a5c 100644
--- a/src/arome/ext/aroini_micro.h
+++ b/src/arome/ext/aroini_micro.h
@@ -4,8 +4,8 @@ SUBROUTINE AROINI_MICRO(KULOUT,PTSTEP,LDWARM,CMICRO,KSPLITR,CCSEDIM,LDCRIAUTI,&
  &         LDFEEDBACKT, LDEVLIMIT, LDNULLWETG, LDWETGPOST, LDNULLWETH, LDWETHPOST, &
  &         PFRACM90, LDCONVHG, CCSUBG_RC_RR_ACCR, CCSUBG_RR_EVAP, CCSUBG_PR_PDF, &
  &         LDCRFLIMIT, CCFRAC_ICE_ADJUST, PSPLIT_MAXCFL,&
- &         CCFRAC_ICE_SHALLOW_MF, LDSEDIC_AFTER,LDDEPOSC, PVDEPOSC, PFRMIN,&
- &         LDDEPSG,PRDEPSRED,PRDEPGRED)
+ &         CCFRAC_ICE_SHALLOW_MF, LDSEDIM_AFTER,LDDEPOSC, PVDEPOSC, PFRMIN,&
+ &         LDDEPSG,PRDEPSRED,PRDEPGRED,LDSEDIC)
 USE PARKIND1  ,ONLY : JPIM     ,JPRB
 INTEGER(KIND=JPIM), INTENT (IN) :: KULOUT
 REAL(KIND=JPRB), INTENT (IN) :: PTSTEP
@@ -36,11 +36,12 @@ LOGICAL, INTENT (IN) :: LDCRFLIMIT
 CHARACTER(LEN=1), INTENT(IN) :: CCFRAC_ICE_ADJUST
 REAL(KIND=JPRB), INTENT (IN) :: PSPLIT_MAXCFL
 CHARACTER(LEN=1), INTENT(IN) :: CCFRAC_ICE_SHALLOW_MF
-LOGICAL, INTENT (IN) :: LDSEDIC_AFTER
+LOGICAL, INTENT (IN) :: LDSEDIM_AFTER
 LOGICAL, INTENT (IN) :: LDDEPOSC
 REAL(KIND=JPRB), INTENT (IN) :: PVDEPOSC
 REAL(KIND=JPRB), OPTIONAL, INTENT (IN) :: PFRMIN(40)
 LOGICAL, INTENT (IN) :: LDDEPSG
+LOGICAL, INTENT(IN)  :: LDSEDIC
 REAL(KIND=JPRB), INTENT (IN) :: PRDEPSRED, PRDEPGRED
 END SUBROUTINE AROINI_MICRO
 END INTERFACE
diff --git a/src/arome/ext/aroini_turb.F90 b/src/arome/ext/aroini_turb.F90
index 1f2d9c7714a1432c99626602aaf8ee5ed9cce54a..f5d5023ba93806a80dd6b1142a5093a941de4b89 100644
--- a/src/arome/ext/aroini_turb.F90
+++ b/src/arome/ext/aroini_turb.F90
@@ -1,5 +1,5 @@
 !     ######spl
-SUBROUTINE AROINI_TURB(PLINI,OHARATU,OSTATNW,OSUBG_COND)
+SUBROUTINE AROINI_TURB(PLINI,OHARATU,OSTATNW,OSUBG_COND,HCONDENS,HLAMBDA3,HSUBG_MF_PDF,OSIGMAS)
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !**** *INI_TURB*   - Initialize common meso_NH MODD_ used in Turbulence scheme
@@ -44,7 +44,8 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 USE MODD_LES,   ONLY : TLES
 USE MODD_CTURB, ONLY : XLINI
 USE MODD_TURB_n, ONLY: LHARAT, LSTATNW, CTURBLEN, TURB_GOTO_MODEL, LTURB_FLX, LTURB_DIAG, &
-                       LSUBG_COND, LRMC01, CTURBDIM, XIMPL, CTOM
+                       LSUBG_COND, LRMC01, CTURBDIM, XIMPL, CTOM, CCONDENS, CLAMBDA3,  &
+                       CSUBG_MF_PDF, LSIGMAS
 USE MODI_INI_CTURB
 
 IMPLICIT NONE
@@ -56,6 +57,10 @@ REAL,   INTENT(IN) :: PLINI ! minimum bl89 mixing length
 LOGICAL,INTENT(IN) :: OHARATU ! switch HARATU
 LOGICAL,INTENT(IN) :: OSTATNW ! switch LSTATNW
 LOGICAL,INTENT(IN) :: OSUBG_COND ! switch of subgrid condensation
+CHARACTER(LEN=80),INTENT(IN)   :: HCONDENS ! subrgrid condensation PDF
+CHARACTER(LEN=4),INTENT(IN)    :: HLAMBDA3 ! lambda3 choice for subgrid cloud scheme
+CHARACTER(LEN=80),INTENT(IN)  :: HSUBG_MF_PDF ! PDF to use for MF cloud autoconversions
+LOGICAL, INTENT(IN) :: OSIGMAS
 !
 !     ------------------------------------------------------------------
 
@@ -83,8 +88,12 @@ CTURBLEN  = 'BL89'
 CTURBDIM  = '1DIM'
 LTURB_FLX = .FALSE.
 LTURB_DIAG = .FALSE.
+LSIGMAS=OSIGMAS
 XIMPL = 1.
 LSUBG_COND = OSUBG_COND
+CCONDENS=HCONDENS
+CLAMBDA3=HLAMBDA3
+CSUBG_MF_PDF=HSUBG_MF_PDF
 LRMC01 = .FALSE.
 CTOM = 'NONE'
 
diff --git a/src/arome/ext/aroini_turb.h b/src/arome/ext/aroini_turb.h
index fd98cf451465248c9477f7a7f0a226299fd9f887..558ab519aa04f7ad9b732d69c66f554653214516 100644
--- a/src/arome/ext/aroini_turb.h
+++ b/src/arome/ext/aroini_turb.h
@@ -1,9 +1,14 @@
 INTERFACE
-SUBROUTINE AROINI_TURB(PLINI,OHARATU,OSTATNW,OSUBG_COND)
+SUBROUTINE AROINI_TURB(PLINI,OHARATU,OSTATNW,OSUBG_COND,HCONDENS,HLAMBDA3,HSUBG_MF_PDF, &
+                       OSIGMAS)
 USE PARKIND1  ,ONLY : JPRB
 REAL(KIND=JPRB),INTENT(IN)::PLINI
 LOGICAL, INTENT(IN) ::OHARATU
 LOGICAL, INTENT(IN) ::OSTATNW
 LOGICAL, INTENT(IN) :: OSUBG_COND
+CHARACTER(LEN=80),INTENT(IN)   :: HCONDENS
+CHARACTER(LEN=4),INTENT(IN)    :: HLAMBDA3
+CHARACTER(LEN=80),INTENT(IN)  :: HSUBG_MF_PDF
+LOGICAL, INTENT(IN) :: OSIGMAS
 END SUBROUTINE AROINI_TURB
 END INTERFACE
diff --git a/src/arome/ext/arp_shallow_mf.F90 b/src/arome/ext/arp_shallow_mf.F90
index 37f462ccc756c0d08b9b6fa5cff83ebb35a8c36e..6386824b9788fefd3b215465db0d81ac7e988b64 100644
--- a/src/arome/ext/arp_shallow_mf.F90
+++ b/src/arome/ext/arp_shallow_mf.F90
@@ -393,9 +393,7 @@ ZDRTDT_MF(:,:)  = 0.
 !         ---------------------------------
 OSTATNW = .FALSE.
   CALL SHALLOW_MF(YLDIMPHYEX, CST, NEB, PARAM_MFSHALLN, TURBN, CSTURB,   &
-       KRR=IKR,KRRL=IKRL,KRRI=IKRI, KSV=1,                             &
-       HMF_UPDRAFT=HMF_UPDRAFT, HMF_CLOUD=HMF_CLOUD,HFRAC_ICE='N',OMIXUV=LLOMIXUV,     &
-       OSTATNW=OSTATNW,                                                  &
+       KRR=IKR,KRRL=IKRL,KRRI=IKRI, KSV=1,HFRAC_ICE='N',                 &
        ONOMIXLG=LLONOMIXLG,KSV_LGBEG=ISV_LGBEG,KSV_LGEND=ISV_LGEND,      &
       PIMPL_MF=PIMPL, PTSTEP=ZDT,                                        &
       PDZZ=ZDZZ,PZZ=ZZZ,                                                 &
@@ -413,7 +411,7 @@ OSTATNW = .FALSE.
       PFRAC_UP=ZFRAC_UP,PEMF=ZEMF,PDETR=ZDETR,PENTR=ZENTR,                      &
       KKLCL=IKLCL,KKETL=IKETL,KKCTL=IKCTL,                                      &
 !
-      PDX=0., PDY=0.)
+      PDX=0., PDY=0., KBUDGETS=0)
 
 
 !  Conversion des tendances de theta en tendance de cpT
diff --git a/src/arome/ext/suphmpa.F90 b/src/arome/ext/suphmpa.F90
index 681a037ce1a16bcc9c8c0e6c584cdf839ba53438..9eb491545c55dfb1053f61f0e5004b72e2942014 100644
--- a/src/arome/ext/suphmpa.F90
+++ b/src/arome/ext/suphmpa.F90
@@ -123,7 +123,10 @@ ASSOCIATE(XDETR_LUP=>YDPARAR%XDETR_LUP, XCMF=>YDPARAR%XCMF, &
  & CFRAC_ICE_ADJUST=>YDPARAR%CFRAC_ICE_ADJUST, XSPLIT_MAXCFL=>YDPARAR%XSPLIT_MAXCFL,&
  & CFRAC_ICE_SHALLOW_MF=>YDPARAR%CFRAC_ICE_SHALLOW_MF, LSEDIM_AFTER=>YDPARAR%LSEDIM_AFTER,&
  & LDEPOSC=>YDPARAR%LDEPOSC, XVDEPOSC=>YDPARAR%XVDEPOSC,&
- & LDEPSG=>YDPARAR%LDEPSG,RDEPSRED=>YDPARAR%RDEPSRED,RDEPGRED=>YDPARAR%RDEPGRED)
+ & LDEPSG=>YDPARAR%LDEPSG,RDEPSRED=>YDPARAR%RDEPSRED,RDEPGRED=>YDPARAR%RDEPGRED,&
+ & LMIXUV=>YDPARAR%LMIXUV,CMF_CLOUD=>YDPARAR%CMF_CLOUD,CCONDENS=>YDPARAR%CCONDENS,&
+ & CLAMBDA3=>YDPARAR%CLAMBDA3,CSUBG_MF_PDF=>YDPARAR%CSUBG_MF_PDF,LSIGMAS=>YDPARAR%LOSIGMAS,&
+ & LOSEDIC=>YDPARAR%LOSEDIC )
 !     ------------------------------------------------------------------
 !     ------------------------------------------------------------------
 !       1. Initialisation of MesoNH constantes
@@ -145,7 +148,7 @@ IF (CMICRO == 'LIMA') THEN
  &                    LWETHPOST, XFRACM90, LCONVHG, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, CSUBG_PR_PDF,&
  &                    LCRFLIMIT, CFRAC_ICE_ADJUST, XSPLIT_MAXCFL,&
  &                    CFRAC_ICE_SHALLOW_MF, LSEDIM_AFTER, LDEPOSC, XVDEPOSC, RFRMIN,&
- &                    LDEPSG,RDEPSRED,RDEPGRED)
+ &                    LDEPSG,RDEPSRED,RDEPGRED,LOSEDIC)
    CALL AROINI_MICRO_LIMA (KULOUT,4,ZTSTEP,LOWARM,CMICRO,NSPLITR,NSPLITG,CSEDIM,LCRIAUTI,&
         &                 RCRIAUTI,RT0CRIAUTI,RCRIAUTC)
 ELSE
@@ -155,7 +158,7 @@ CALL AROINI_MICRO (KULOUT,ZTSTEP,LOWARM,CMICRO,NSPLITR,CSEDIM,LCRIAUTI,&
  &                 LWETHPOST, XFRACM90, LCONVHG, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, CSUBG_PR_PDF,&
  &                 LCRFLIMIT, CFRAC_ICE_ADJUST, XSPLIT_MAXCFL,&
  &                 CFRAC_ICE_SHALLOW_MF, LSEDIM_AFTER, LDEPOSC, XVDEPOSC, RFRMIN,&
- &                 LDEPSG,RDEPSRED,RDEPGRED)
+ &                 LDEPSG,RDEPSRED,RDEPGRED,LOSEDIC)
  ENDIF
 
 !       3. Initialisation of Budget
@@ -166,13 +169,13 @@ CALL AROINI_BUDGET(LAROBU_ENABLE)
 
 !       4. Initialisation of Turbulence scheme
 
-CALL AROINI_TURB(XLINI,LHARATU,LSTATNW,LOSUBG_COND)
+CALL AROINI_TURB(XLINI,LHARATU,LSTATNW,LOSUBG_COND,CCONDENS,CLAMBDA3,CSUBG_MF_PDF,LSIGMAS)
 
 !       5. Initialisation of Mass Flux Shallow convection scheme
 
 IF(LMFSHAL.OR.LEDKF) CALL AROINI_MFSHAL(XALP_PERT,XABUO,XBENTR,XBDETR,XCMF,XENTR_MF,XCRAD_MF,XENTR_DRY,&
  &          XDETR_DRY,XDETR_LUP,XKCF_MF,XKRC_MF,XTAUSIGMF,XPRES_UV,XFRAC_UP_MAX,&
- &          XALPHA_MF,XSIGMA_MF,XA1,XB,XC,XBETA1,XR,XLAMBDA)
+ &          XALPHA_MF,XSIGMA_MF,XA1,XB,XC,XBETA1,XR,XLAMBDA,CMF_UPDRAFT,CMF_CLOUD,LMIXUV)
 
 IF (LMFSHAL.AND.YDML_GCONF%YGFL%NGFL_EZDIAG < 3) THEN
   CALL ABOR1 ("With LMFSHAL NGFL_EZDIAG should be >= 3 !")
diff --git a/src/common/turb/modi_shallow_mf.F90 b/src/common/turb/modi_shallow_mf.F90
index 05f08da98b4dda90a701cf8f2f55bf2f450d4244..564fdaa0927adf939bf8dc0a2066d54dc7b24d42 100644
--- a/src/common/turb/modi_shallow_mf.F90
+++ b/src/common/turb/modi_shallow_mf.F90
@@ -4,7 +4,7 @@
 !
 INTERFACE
 !     #################################################################
-      SUBROUTINE SHALLOW_MF(D, CST, NEB, PARAMMF, TURB, CSTURB,       &
+      SUBROUTINE SHALLOW_MF(D, CST, NEB, PARAMMF, TURBN, CSTURB,       &
                 KRR, KRRL, KRRI, KSV,                                 &
                 HFRAC_ICE,ONOMIXLG,KSV_LGBEG,KSV_LGEND,               &
                 PIMPL_MF, PTSTEP,                                     &
@@ -20,36 +20,38 @@ INTERFACE
                 PTHL_UP,PRT_UP,PRV_UP,PRC_UP,PRI_UP,                  &
                 PU_UP, PV_UP, PTHV_UP, PW_UP,                         &
                 PFRAC_UP,PEMF,PDETR,PENTR,                            &
-                KKLCL,KKETL,KKCTL,PDX,PDY                             )
+                KKLCL,KKETL,KKCTL,PDX,PDY,PRSVS,PSVMIN,               &
+                BUCONF, TBUDGETS, KBUDGETS                            )
 !     #################################################################
 !!
+USE MODD_BUDGET,          ONLY: TBUDGETCONF_t, TBUDGETDATA
 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 MODD_CTURB,           ONLY: CSTURB_t
+USE MODD_PARAMETERS,      ONLY: JPSVMAX
 !               
 !*               1.1  Declaration of Arguments
 !                
 !
-TYPE(DIMPHYEX_t),       INTENT(IN)   :: D
-TYPE(CST_t),            INTENT(IN)   :: CST
+TYPE(DIMPHYEX_t),       INTENT(IN)   :: D            ! PHYEX variables dimensions structure
+TYPE(CST_t),            INTENT(IN)   :: CST          ! modd_cst general constant structure
 TYPE(NEB_t),            INTENT(IN)   :: NEB
 TYPE(PARAM_MFSHALL_t),  INTENT(IN)   :: PARAMMF
-TYPE(TURB_t),           INTENT(IN)   :: TURB
-TYPE(CSTURB_t),         INTENT(IN)   :: CSTURB
+TYPE(TURB_t),           INTENT(IN)   :: TURBN        ! modn_turbn (turb namelist) structure
+TYPE(CSTURB_t),         INTENT(IN)   :: CSTURB       ! modd_csturb turb constant structure
 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
+INTEGER,                INTENT(IN)   :: KSV          ! number of scalar var.
 CHARACTER*1,            INTENT(IN)   :: HFRAC_ICE    ! partition liquid/ice scheme
 LOGICAL,                INTENT(IN)   :: ONOMIXLG  ! False if mixing of lagrangian tracer
 INTEGER,                INTENT(IN)   :: KSV_LGBEG ! first index of lag. tracer
 INTEGER,                INTENT(IN)   :: KSV_LGEND ! last  index of lag. tracer
 REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
 REAL,                   INTENT(IN)   :: PTSTEP    ! Dynamical timestep 
-
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PDZZ        ! Metric coefficients
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PRHODJ      ! dry density * Grid size
@@ -63,7 +65,6 @@ REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PTHM        ! Theta at t-dt
 REAL, DIMENSION(D%NIJT,KRR),     INTENT(IN) ::  PRM         ! water var. at t-dt
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PUM,PVM     ! wind components at t-dt
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PTKEM       ! tke at t-dt
-
 REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(IN) ::  PSVM        ! scalar variable a t-dt
 
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(OUT)::  PDUDT_MF     ! tendency of U   by massflux scheme
@@ -93,7 +94,11 @@ REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) ::  PDETR     ! updraft detrainment
 REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) ::  PENTR     ! updraft entrainment
 INTEGER,DIMENSION(D%NIJT),     INTENT(OUT) :: KKLCL,KKETL,KKCTL ! level of LCL,ETL and CTL
 REAL,                               INTENT(IN)  :: PDX, PDY
-
+REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(IN),OPTIONAL ::  PRSVS ! sources of sv (for Budgets with lagrangian tracer)
+TYPE(TBUDGETCONF_t),    INTENT(IN),OPTIONAL   :: BUCONF       ! budget structure
+INTEGER,                INTENT(IN)   :: KBUDGETS     ! option. because not used in arpifs
+TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT),OPTIONAL :: TBUDGETS
+REAL,DIMENSION(JPSVMAX),INTENT(IN),OPTIONAL   :: PSVMIN       ! minimum value for SV variables
 
 END SUBROUTINE SHALLOW_MF
 
diff --git a/src/common/turb/shallow_mf.F90 b/src/common/turb/shallow_mf.F90
index d9a8ba56c5cdc9ea507892dcd32c392830ed85ae..ec3a76764d15e02c60fa00531c59a39a99fb6bad 100644
--- a/src/common/turb/shallow_mf.F90
+++ b/src/common/turb/shallow_mf.F90
@@ -20,7 +20,8 @@
                 PTHL_UP,PRT_UP,PRV_UP,PRC_UP,PRI_UP,                  &
                 PU_UP, PV_UP, PTHV_UP, PW_UP,                         &
                 PFRAC_UP,PEMF,PDETR,PENTR,                            &
-                KKLCL,KKETL,KKCTL,PDX,PDY                             )
+                KKLCL,KKETL,KKCTL,PDX,PDY,PRSVS,PSVMIN,               &
+                BUCONF, TBUDGETS, KBUDGETS                            )
 
 !     #################################################################
 !!
@@ -71,13 +72,17 @@
 !*      0. DECLARATIONS
 !          ------------
 !
+USE MODD_BUDGET,          ONLY: TBUDGETCONF_t, TBUDGETDATA, NBUDGET_U,  NBUDGET_V, &
+                                NBUDGET_TH,  NBUDGET_RV, NBUDGET_SV1
 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 MODD_CTURB,           ONLY: CSTURB_t
+USE MODD_PARAMETERS,      ONLY: JPSVMAX
 !
+USE MODE_BUDGET,         ONLY: BUDGET_STORE_ADD_PHY
 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
@@ -88,6 +93,7 @@ USE MODE_COMPUTE_MF_CLOUD, ONLY: COMPUTE_MF_CLOUD
 USE MODE_MSG, ONLY: PRINT_MSG, NVERB_FATAL
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+USE SHUMAN_PHY, ONLY: MXM_PHY, MYM_PHY
 !
 IMPLICIT NONE
 
@@ -95,23 +101,22 @@ IMPLICIT NONE
 !
 !
 !
-TYPE(DIMPHYEX_t),       INTENT(IN)   :: D
-TYPE(CST_t),            INTENT(IN)   :: CST
+TYPE(DIMPHYEX_t),       INTENT(IN)   :: D            ! PHYEX variables dimensions structure
+TYPE(CST_t),            INTENT(IN)   :: CST          ! modd_cst general constant structure
 TYPE(NEB_t),            INTENT(IN)   :: NEB
 TYPE(PARAM_MFSHALL_t),  INTENT(IN)   :: PARAMMF
-TYPE(TURB_t),           INTENT(IN)   :: TURBN
-TYPE(CSTURB_t),         INTENT(IN)   :: CSTURB
+TYPE(TURB_t),           INTENT(IN)   :: TURBN        ! modn_turbn (turb namelist) structure
+TYPE(CSTURB_t),         INTENT(IN)   :: CSTURB       ! modd_csturb turb constant structure
 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
+INTEGER,                INTENT(IN)   :: KSV          ! number of scalar var.
 CHARACTER(LEN=1),       INTENT(IN)   :: HFRAC_ICE    ! partition liquid/ice scheme
 LOGICAL,                INTENT(IN)   :: ONOMIXLG  ! False if mixing of lagrangian tracer
 INTEGER,                INTENT(IN)   :: KSV_LGBEG ! first index of lag. tracer
 INTEGER,                INTENT(IN)   :: KSV_LGEND ! last  index of lag. tracer
 REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
 REAL,                   INTENT(IN)   :: PTSTEP    ! Dynamical timestep 
-
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PDZZ        ! Metric coefficients
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PRHODJ      ! dry density * Grid size
@@ -125,7 +130,6 @@ REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN)   ::  PTHM        ! Theta at t-dt
 REAL, DIMENSION(D%NIJT,D%NKT,KRR), INTENT(IN) ::  PRM         ! water var. at t-dt
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PUM,PVM     ! wind components at t-dt
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(IN) ::  PTKEM       ! tke at t-dt
-
 REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(IN) ::  PSVM        ! scalar variable a t-dt
 
 REAL, DIMENSION(D%NIJT,D%NKT),   INTENT(OUT)::  PDUDT_MF     ! tendency of U   by massflux scheme
@@ -155,6 +159,12 @@ REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) ::  PDETR     ! updraft detrainment
 REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) ::  PENTR     ! updraft entrainment
 INTEGER,DIMENSION(D%NIJT), INTENT(OUT) :: KKLCL,KKETL,KKCTL ! level of LCL,ETL and CTL
 REAL,                 INTENT(IN)  :: PDX, PDY
+REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(IN),OPTIONAL ::  PRSVS ! sources of sv (for Budgets with lagrangian tracer)
+TYPE(TBUDGETCONF_t),    INTENT(IN),OPTIONAL   :: BUCONF       ! budget structure
+INTEGER,                INTENT(IN)   :: KBUDGETS     ! option. because not used in arpifs
+TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT),OPTIONAL :: TBUDGETS 
+REAL,DIMENSION(JPSVMAX),INTENT(IN),OPTIONAL   :: PSVMIN       ! minimum value for SV variables (for Budgets)
+
 !
 !                     0.2  Declaration of local variables
 !
@@ -162,6 +172,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) ::     &
           ZTHLM,                                  & !
           ZRTM,                                   & !
           ZTHVM,                                  & !
+          ZWORK,ZWORK2,                           &
           ZEMF_O_RHODREF,                         & ! entrainment/detrainment
           ZBUO_INTEG                                ! integrated buoyancy
 REAL, DIMENSION(D%NIJT,D%NKT) :: ZFRAC_ICE
@@ -176,7 +187,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: ZRSAT_UP ! Rsat in updraft
 
 LOGICAL :: GENTR_DETR  ! flag to recompute entrainment, detrainment and mass flux
 INTEGER, DIMENSION(D%NIJT,D%NKT) :: IERR
-INTEGER :: JIJ, JK
+INTEGER :: JIJ, JK, JSV
 INTEGER :: IIJB,IIJE ! physical horizontal domain indices
 INTEGER :: IKT
 !
@@ -326,6 +337,58 @@ IF( PARAMMF%CMF_UPDRAFT == 'DUAL') THEN
 !  PDVDT_MF=0.
 ENDIF
 !
+#ifdef REPRO48
+#else
+IF(PRESENT(BUCONF)) THEN
+ IF( BUCONF%LBUDGET_U ) THEN
+   !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+   ZWORK(IIJB:IIJE,1:IKT)=PRHODJ(IIJB:IIJE,1:IKT)*PDUDT_MF(IIJB:IIJE,1:IKT)
+   !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+   CALL MXM_PHY(D, ZWORK, ZWORK2)
+   CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_U ), 'MAFL', ZWORK2)
+ END IF
+!
+ IF( BUCONF%LBUDGET_V ) THEN
+   !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+   ZWORK(IIJB:IIJE,1:IKT)=PRHODJ(IIJB:IIJE,1:IKT)*PDVDT_MF(IIJB:IIJE,1:IKT)
+   !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) 
+   CALL MYM_PHY(D, ZWORK, ZWORK2)
+   CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_V ), 'MAFL', ZWORK2)
+ END IF
+! 
+ IF( BUCONF%LBUDGET_TH ) THEN 
+   !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+   ZWORK(IIJB:IIJE,1:IKT)=PRHODJ(IIJB:IIJE,1:IKT)*PDTHLDT_MF(IIJB:IIJE,1:IKT)
+   !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+   CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'MAFL', ZWORK)
+ END IF
+!
+ IF( BUCONF%LBUDGET_RV ) THEN
+   !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+   ZWORK(IIJB:IIJE,1:IKT)=PRHODJ(IIJB:IIJE,1:IKT)*PDRTDT_MF(IIJB:IIJE,1:IKT)
+   !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+   CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'MAFL', ZWORK)
+ END IF
+!
+ IF( BUCONF%LBUDGET_SV ) THEN
+   DO JSV=1,KSV
+    IF (ONOMIXLG .AND. JSV >= KSV_LGBEG .AND. JSV<= KSV_LGEND) THEN
+      !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+      ZWORK(IIJB:IIJE,1:IKT)=MAX(PRSVS(IIJB:IIJE,1:IKT,JSV) + PRHODJ(IIJB:IIJE,1:IKT)* &
+                             PDSVDT_MF(IIJB:IIJE,1:IKT,JSV),PSVMIN(JSV))
+      ZWORK(IIJB:IIJE,1:IKT)=PRSVS(IIJB:IIJE,1:IKT,JSV) - ZWORK(IIJB:IIJE,1:IKT)
+      !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+    ELSE
+      !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+      ZWORK(IIJB:IIJE,1:IKT)=PRHODJ(IIJB:IIJE,1:IKT)*PDSVDT_MF(IIJB:IIJE,1:IKT,JSV)
+      !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
+    END IF
+    CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_SV1 - 1 + JSV), 'MAFL', ZWORK )
+   END DO
+ END IF
+END IF
+#endif
+!
 IF (LHOOK) CALL DR_HOOK('SHALLOW_MF',1,ZHOOK_HANDLE)
 !
 CONTAINS
diff --git a/src/mesonh/ext/diagnos_les_mf.f90 b/src/mesonh/ext/diagnos_les_mf.f90
index f537b04f36ac1617a2b8590e1deee9cdd8d0ed52..665d1ea7666f6047ab2a4d8e9343253fb2852446 100644
--- a/src/mesonh/ext/diagnos_les_mf.f90
+++ b/src/mesonh/ext/diagnos_les_mf.f90
@@ -25,12 +25,12 @@ use modd_precision, only: MNHTIME
 !
 INTEGER,                INTENT(IN)  :: KIU, KJU, KKU ! 3D grid size
 REAL(kind=MNHTIME), DIMENSION(2), INTENT(OUT) :: PTIME_LES
-REAL, DIMENSION(:,:),   INTENT(IN)  :: PTHL_UP,PRT_UP,PRV_UP,&
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHL_UP,PRT_UP,PRV_UP,&
                                        PRC_UP,PRI_UP   ! updraft properties
-REAL, DIMENSION(:,:),   INTENT(IN)  :: PU_UP, PV_UP
-REAL, DIMENSION(:,:),   INTENT(IN)  :: PTHV_UP,PW_UP,&
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PU_UP, PV_UP
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHV_UP,PW_UP,&
                                        PFRAC_UP,PEMF,PDETR,PENTR
-REAL, DIMENSION(:,:),   INTENT(IN)  :: PWTHMF,PWTHVMF,PWRTMF, &
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PWTHMF,PWTHVMF,PWRTMF, &
                                        PWUMF,PWVMF
 INTEGER, DIMENSION(:),  INTENT(IN)  :: KKLCL,KKETL,KKCTL
                                            
@@ -100,12 +100,12 @@ IMPLICIT NONE
 !
 INTEGER,                INTENT(IN)  :: KIU, KJU, KKU ! 3D grid size
 REAL(kind=MNHTIME), DIMENSION(2), INTENT(OUT) :: PTIME_LES
-REAL, DIMENSION(:,:),   INTENT(IN)  :: PTHL_UP,PRT_UP,PRV_UP,&
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHL_UP,PRT_UP,PRV_UP,&
                                        PRC_UP,PRI_UP   ! updraft properties
-REAL, DIMENSION(:,:),   INTENT(IN)  :: PU_UP, PV_UP
-REAL, DIMENSION(:,:),   INTENT(IN)  :: PTHV_UP,PW_UP,&
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PU_UP, PV_UP
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHV_UP,PW_UP,&
                                        PFRAC_UP,PEMF,PDETR,PENTR
-REAL, DIMENSION(:,:),   INTENT(IN)  :: PWTHMF,PWTHVMF,PWRTMF, &
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PWTHMF,PWTHVMF,PWRTMF, &
                                        PWUMF,PWVMF
 INTEGER, DIMENSION(:),  INTENT(IN)  :: KKLCL,KKETL,KKCTL
                                            
@@ -113,7 +113,6 @@ INTEGER, DIMENSION(:),  INTENT(IN)  :: KKLCL,KKETL,KKCTL
 !
 !                     0.2  Declaration of local variables
 !
-REAL, DIMENSION(KIU,KJU,KKU)          :: ZWORK
 REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZTHLMFFLX_LES,ZRTMFFLX_LES, &
                                          ZTHVMFFLX_LES,ZUMFFLX_LES, &
                                          ZVMFFLX_LES
@@ -150,84 +149,68 @@ CALL SECOND_MNH2(ZTIME1)
     ALLOCATE( ZVMFFLX_LES  (KIU,KJU,NLES_K) )
 
     
-    ZWORK(:,:,:)=RESHAPE(PWTHMF(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT(MZF(ZWORK)  ,ZTHLMFFLX_LES  )
+    CALL LES_VER_INT(MZF(PWTHMF)  ,ZTHLMFFLX_LES  )
     CALL LES_MEAN_ll(ZTHLMFFLX_LES,LLES_CURRENT_CART_MASK, &
                     X_LES_SUBGRID_WTHLMF(:,NLES_CURRENT_TCOUNT,1))
     
-    ZWORK(:,:,:)=RESHAPE(PWRTMF(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZRTMFFLX_LES  )
+    CALL LES_VER_INT( MZF(PWRTMF)  ,ZRTMFFLX_LES  )
     CALL LES_MEAN_ll (ZRTMFFLX_LES , LLES_CURRENT_CART_MASK,          &
                     X_LES_SUBGRID_WRTMF(:,NLES_CURRENT_TCOUNT,1)     )
                     
-    ZWORK(:,:,:)=RESHAPE(PWUMF(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZUMFFLX_LES  )
+    CALL LES_VER_INT( MZF(PWUMF)  ,ZUMFFLX_LES  )
     CALL LES_MEAN_ll (ZUMFFLX_LES , LLES_CURRENT_CART_MASK,              &
                     X_LES_SUBGRID_WUMF(:,NLES_CURRENT_TCOUNT,1)     )
                     
-    ZWORK(:,:,:)=RESHAPE(PWVMF(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZVMFFLX_LES  )
+    CALL LES_VER_INT( MZF(PWVMF)  ,ZVMFFLX_LES  )
     CALL LES_MEAN_ll (ZVMFFLX_LES , LLES_CURRENT_CART_MASK,                   &
                     X_LES_SUBGRID_WVMF(:,NLES_CURRENT_TCOUNT,1)     )
                     
-    ZWORK(:,:,:)=RESHAPE(PWTHVMF(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZTHVMFFLX_LES  )
+    CALL LES_VER_INT( MZF(PWTHVMF)  ,ZTHVMFFLX_LES  )
     CALL LES_MEAN_ll (ZTHVMFFLX_LES , LLES_CURRENT_CART_MASK,    &
                     X_LES_SUBGRID_WTHVMF(:,NLES_CURRENT_TCOUNT,1)     )
                     
 
-    ZWORK(:,:,:)=RESHAPE(PTHL_UP(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZTHLUP_MF_LES  )
+    CALL LES_VER_INT( MZF(PTHL_UP)  ,ZTHLUP_MF_LES  )
     CALL LES_MEAN_ll (ZTHLUP_MF_LES , LLES_CURRENT_CART_MASK,    &
                    X_LES_SUBGRID_THLUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
                    
-    ZWORK(:,:,:)=RESHAPE(PRT_UP(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZRTUP_MF_LES  )
+    CALL LES_VER_INT( MZF(PRT_UP)  ,ZRTUP_MF_LES  )
     CALL LES_MEAN_ll (ZRTUP_MF_LES , LLES_CURRENT_CART_MASK,       &
                     X_LES_SUBGRID_RTUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
                     
-    ZWORK(:,:,:)=RESHAPE(PRV_UP(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZRVUP_MF_LES  )
+    CALL LES_VER_INT( MZF(PRV_UP)  ,ZRVUP_MF_LES  )
     CALL LES_MEAN_ll (ZRVUP_MF_LES , LLES_CURRENT_CART_MASK,       &
                     X_LES_SUBGRID_RVUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
                     
-    ZWORK(:,:,:)=RESHAPE(PRC_UP(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZRCUP_MF_LES  )
+    CALL LES_VER_INT( MZF(PRC_UP)  ,ZRCUP_MF_LES  )
     CALL LES_MEAN_ll (ZRCUP_MF_LES , LLES_CURRENT_CART_MASK,        &
                     X_LES_SUBGRID_RCUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
                     
-    ZWORK(:,:,:)=RESHAPE(PRI_UP(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZRIUP_MF_LES  )
+    CALL LES_VER_INT( MZF(PRI_UP)  ,ZRIUP_MF_LES  )
     CALL LES_MEAN_ll (ZRIUP_MF_LES , LLES_CURRENT_CART_MASK,        &
                     X_LES_SUBGRID_RIUP_MF(:,NLES_CURRENT_TCOUNT,1)     )            
                     
-    ZWORK(:,:,:)=RESHAPE(PEMF(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZEMF_MF_LES  )
+    CALL LES_VER_INT( MZF(PEMF)  ,ZEMF_MF_LES  )
     CALL LES_MEAN_ll (ZEMF_MF_LES , LLES_CURRENT_CART_MASK,       &
                    X_LES_SUBGRID_MASSFLUX(:,NLES_CURRENT_TCOUNT,1)     )
                    
-    ZWORK(:,:,:)=RESHAPE(PDETR(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZDETR_MF_LES  )
+    CALL LES_VER_INT( MZF(PDETR)  ,ZDETR_MF_LES  )
     CALL LES_MEAN_ll (ZDETR_MF_LES , LLES_CURRENT_CART_MASK,       &
                    X_LES_SUBGRID_DETR(:,NLES_CURRENT_TCOUNT,1)         )
                    
-    ZWORK(:,:,:)=RESHAPE(PENTR(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZENTR_MF_LES  )
+    CALL LES_VER_INT( MZF(PENTR)  ,ZENTR_MF_LES  )
     CALL LES_MEAN_ll (ZENTR_MF_LES , LLES_CURRENT_CART_MASK,       &
                    X_LES_SUBGRID_ENTR(:,NLES_CURRENT_TCOUNT,1)     )
                    
-    ZWORK(:,:,:)=RESHAPE(PW_UP(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZWUP_MF_LES  )
+    CALL LES_VER_INT( MZF(PW_UP)  ,ZWUP_MF_LES  )
     CALL LES_MEAN_ll (ZWUP_MF_LES , LLES_CURRENT_CART_MASK,       &
                    X_LES_SUBGRID_WUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
                    
-    ZWORK(:,:,:)=RESHAPE(PFRAC_UP(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZFRACUP_MF_LES  )
+    CALL LES_VER_INT( MZF(PFRAC_UP)  ,ZFRACUP_MF_LES  )
     CALL LES_MEAN_ll (ZFRACUP_MF_LES , LLES_CURRENT_CART_MASK,       &
                    X_LES_SUBGRID_FRACUP(:,NLES_CURRENT_TCOUNT,1)     )
                    
-    ZWORK(:,:,:)=RESHAPE(PTHV_UP(:,:),(/ KIU,KJU,KKU /) )
-    CALL LES_VER_INT( MZF(ZWORK)  ,ZTHVUP_MF_LES  )
+    CALL LES_VER_INT( MZF(PTHV_UP)  ,ZTHVUP_MF_LES  )
     CALL LES_MEAN_ll (ZTHVUP_MF_LES , LLES_CURRENT_CART_MASK,       &
                    X_LES_SUBGRID_THVUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
                    
diff --git a/src/mesonh/ext/phys_paramn.f90 b/src/mesonh/ext/phys_paramn.f90
index 7769b3e049783309ec80c1841696b0d001b8f256..2411666072a4afe4840ebd7fa0738139875ebb78 100644
--- a/src/mesonh/ext/phys_paramn.f90
+++ b/src/mesonh/ext/phys_paramn.f90
@@ -1639,7 +1639,7 @@ IF (CSCONV == 'EDKF') THEN
                    XIMPL_MF, XTSTEP,                                      &
                    XDZZ, XZZ,XDXHAT(1),XDYHAT(1),                         &
                    XRHODJ, XRHODREF, XPABST, ZEXN, ZSFTH, ZSFRV,          &
-                   XTHT,XRT,XUT,XVT,XWT,XTKET,XSVT,                       &
+                   XTHT,XRT,XUT,XVT,XTKET,XSVT,                           &
                    XRTHS,XRRS,XRUS,XRVS,XRSVS,                            &
                    ZSIGMF,XRC_MF, XRI_MF, XCF_MF, XWTHVMF)
 !
diff --git a/src/mesonh/ext/shallow_mf_pack.f90 b/src/mesonh/ext/shallow_mf_pack.f90
index 8a19fb5e9c9520225aa5876f10db00a169fe13d1..ee2f7e2fb5d794175d12979085583f31a02a53fd 100644
--- a/src/mesonh/ext/shallow_mf_pack.f90
+++ b/src/mesonh/ext/shallow_mf_pack.f90
@@ -16,7 +16,7 @@ INTERFACE
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXN,                                         &
                 PSFTH,PSFRV,                                          &
-                PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM,                      &
+                PTHM,PRM,PUM,PVM,PTKEM,PSVM,                          &
                 PRTHS,PRRS,PRUS,PRVS,PRSVS,                           &
                 PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF  )
 !     #################################################################
@@ -48,7 +48,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) ::  PEXN        ! 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,PWM ! wind components 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(:,:,:,:), INTENT(IN) ::  PSVM      ! scalar variable a t-dt
@@ -74,7 +74,7 @@ END MODULE MODI_SHALLOW_MF_PACK
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXN,                                         &
                 PSFTH,PSFRV,                                          &
-                PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM,                      &
+                PTHM,PRM,PUM,PVM,PTKEM,PSVM,                          &
                 PRTHS,PRRS,PRUS,PRVS,PRSVS,                           &
                 PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF  )
 !     #################################################################
@@ -125,20 +125,18 @@ 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_BUDGET,          ONLY: TBUDGETS,TBUCONF,lbudget_th,nbudget_th
 USE MODD_CONF
 USE MODD_IO,              ONLY: TFILEDATA
-use modd_field,           only: tfielddata, TYPEREAL
-USE MODD_NSV
+USE modd_field,           ONLY: tfielddata, TYPEREAL
+USE MODD_NSV,             ONLY: XSVMIN, NSV_LGBEG, NSV_LGEND
 USE MODD_PARAMETERS
 USE MODD_PARAM_ICE,       ONLY: CFRAC_ICE_SHALLOW_MF
 USE MODD_PARAM_MFSHALL_n
-use modd_precision,       only: MNHTIME
+USE modd_precision,       ONLY: MNHTIME
 
-use mode_budget,          only: Budget_store_init, Budget_store_end
-USE MODE_IO_FIELD_WRITE,  only: IO_Field_write
+USE mode_budget,          ONLY: Budget_store_init, Budget_store_end, Budget_store_add
+USE MODE_IO_FIELD_WRITE,  ONLY: IO_Field_write
 
 USE MODI_DIAGNOS_LES_MF
 USE MODI_SHALLOW_MF
@@ -171,7 +169,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) ::  PEXN        ! 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,PWM ! wind components 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(:,:,:,:), INTENT(IN) ::  PSVM        ! scalar variable a t-dt
@@ -185,155 +183,82 @@ REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PFLXZTHVMF           ! Thermal produ
 REAL, INTENT(IN) :: PDX,PDY ! Size of mesh in X/Y directions
 !                     0.2  Declaration of local variables
 !
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZZZ         ! Height of flux point
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDZZ        ! Metric coefficients
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRHODJ      ! dry density * Grid size
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRHODREF    ! dry density of the
-                                                     ! reference state
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZPABSM      ! Pressure at time t-1
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZEXN        ! Exner function at t-dt
-
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTHM        ! Theta at t-dt
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PRM,4)) ::  ZRM         ! water var. at t-dt
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZUM,ZVM,ZWM ! wind components at t-dt
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTKEM       ! tke at t-dt
-
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PSVM,4)) ::  ZSVM        ! scalar variable a t-dt
-
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDUDT_TURB   ! tendency of U   by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDVDT_TURB   ! tendency of V   by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDTHLDT_TURB ! tendency of thl by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDRTDT_TURB  ! tendency of rt  by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PSVM,4)) ::  ZDSVDT_TURB  ! tendency of Sv  by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDUDT_MF   ! tendency of U   by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDVDT_MF   ! tendency of V   by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDTHLDT_MF ! tendency of thl by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDRTDT_MF  ! tendency of Rt by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PSVM,4)) ::  ZDSVDT_MF  ! tendency of Sv by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZSIGMF,ZRC_MF,ZRI_MF,ZCF_MF ! cloud info for the cloud scheme
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZTHVMF           ! Thermal production for TKE scheme
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZTHMF
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZRMF
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZUMF
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZVMF
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTHL_UP   ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRT_UP    ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRV_UP    ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZU_UP     ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZV_UP     ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRC_UP    ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRI_UP    ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTHV_UP   ! updraft characteristics
-
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTHL_DO   ! downdraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTHV_DO   ! downdraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRT_DO    ! downdraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZU_DO     ! downdraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZV_DO     ! downdraft characteristics
-
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZW_UP     ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFRAC_UP  ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZEMF      ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDETR     ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZENTR     ! updraft characteristics
-INTEGER,DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2))     :: IKLCL,IKETL,IKCTL ! level of LCL,ETL and CTL
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2)) ::  ZSFTH    ! Surface sensible heat flux
-REAL, DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2)) ::  ZSFRV    ! Surface latent   heat flux
-!
-!
-!* 3D arrays
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZWORK    ! work array
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDUDT_TURB   ! tendency of U   by turbulence only
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDVDT_TURB   ! tendency of V   by turbulence only
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDTHLDT_TURB ! tendency of thl by turbulence only
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDRTDT_TURB  ! tendency of rt  by turbulence only
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PSVM,4)) ::  ZDSVDT_TURB  ! tendency of Sv  by turbulence only
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDUDT_MF   ! tendency of U   by massflux scheme
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDVDT_MF   ! tendency of V   by massflux scheme
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDTHLDT_MF ! tendency of thl by massflux scheme
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDRTDT_MF  ! tendency of Rt by massflux scheme
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PSVM,4)) ::  ZDSVDT_MF  ! tendency of Sv by massflux scheme
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZSIGMF,ZRC_MF,ZRI_MF,ZCF_MF ! cloud info for the cloud scheme
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZTHVMF           ! Thermal production for TKE scheme
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZTHMF
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZRMF
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZUMF
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZVMF
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTHL_UP   ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRT_UP    ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRV_UP    ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZU_UP     ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZV_UP     ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRC_UP    ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRI_UP    ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTHV_UP   ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZW_UP     ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFRAC_UP  ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZEMF      ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDETR     ! updraft characteristics
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZENTR     ! updraft characteristics
 REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZUMM     ! wind on mass point
 REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZVMM     ! wind on mass point
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZWMM     ! wind on mass point
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDUDT    ! tendency of U   by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDVDT    ! tendency of V   by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDTHLDT  ! tendency of thl by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDRTDT   ! tendency of Rt by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PSVM,4)) ::  ZDSVDT  ! tendency of Sv by massflux scheme
-
+!
+INTEGER,DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2))     :: IKLCL,IKETL,IKCTL ! level of LCL,ETL and CTL
 INTEGER :: IIU, IJU, IKU, IKB, IKE, IRR, ISV  
 INTEGER :: JK,JRR,JSV                          ! Loop counters
-!
+
+
 LOGICAL :: LSTATNW  !  switch for HARMONIE-AROME turb physics option
                     ! TODO: linked with modd_turbn + init at default_desfmn 
 
 TYPE(TFIELDDATA) :: TZFIELD
 TYPE(DIMPHYEX_t) :: YLDIMPHYEXPACK
 !------------------------------------------------------------------------
-
+!
 !!! 1. Initialisation
 CALL FILL_DIMPHYEX(YLDIMPHYEXPACK, SIZE(PZZ,1), SIZE(PZZ,2), SIZE(PZZ,3))
-
+!
 ! Internal Domain
 IIU=SIZE(PTHM,1)
 IJU=SIZE(PTHM,2)
 IKU=SIZE(PTHM,3)
 IKB=1+JPVEXT
 IKE=IKU-JPVEXT
-
+!
 ! number of moist  var
 IRR=SIZE(PRM,4)
 ! number of scalar var
 ISV=SIZE(PSVM,4)
-
-if ( lbudget_u  ) call Budget_store_init( tbudgets(NBUDGET_U ), 'MAFL', prus (:, :, :)    )
-if ( lbudget_v  ) call Budget_store_init( tbudgets(NBUDGET_V ), 'MAFL', prvs (:, :, :)    )
-if ( lbudget_th ) call Budget_store_init( tbudgets(NBUDGET_TH), 'MAFL', prths(:, :, :)    )
-if ( lbudget_rv ) call Budget_store_init( tbudgets(NBUDGET_RV), 'MAFL', prrs (:, :, :, 1) )
-if ( lbudget_sv ) then
-  do jsv = 1, isv
-    call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + jsv), 'MAFL', prsvs(:, :, :, jsv) )
-  end do
-end if
-
-ZSVM(:,:,:) = 0.
-!
 !
 ! wind on mass points
 ZUMM=MXF(PUM)
 ZVMM=MYF(PVM)
-ZWMM=MZF(PWM)
-!
-!!! 2. Pack input variables
-!
-DO JK=1,IKU
-  ZZZ    (:,JK) = RESHAPE(PZZ    (:,:,JK),(/ IIU*IJU /) )
-  ZDZZ   (:,JK) = RESHAPE(PDZZ    (:,:,JK),(/ IIU*IJU /) )  
-  ZRHODJ (:,JK) = RESHAPE(PRHODJ  (:,:,JK),(/ IIU*IJU /) )  
-  ZTHM   (:,JK) = RESHAPE(PTHM   (:,:,JK),(/ IIU*IJU /) )
-  ZTKEM  (:,JK) = RESHAPE(PTKEM  (:,:,JK),(/ IIU*IJU /) )
-  ZPABSM (:,JK) = RESHAPE(PPABSM (:,:,JK),(/ IIU*IJU /) )
-  ZEXN   (:,JK) = RESHAPE(PEXN   (:,:,JK),(/ IIU*IJU /) )
-  ZRHODJ (:,JK) = RESHAPE(PRHODJ (:,:,JK),(/ IIU*IJU /) )  
-  ZRHODREF(:,JK) = RESHAPE(PRHODREF(:,:,JK),(/ IIU*IJU /) )  
-  ZUM    (:,JK) = RESHAPE(ZUMM   (:,:,JK),(/ IIU*IJU /) )
-  ZVM    (:,JK) = RESHAPE(ZVMM   (:,:,JK),(/ IIU*IJU /) )
-  ZWM    (:,JK) = RESHAPE(ZWMM   (:,:,JK),(/ IIU*IJU /) )
-  DO JRR=1,IRR
-    ZRM   (:,JK,JRR) = RESHAPE(PRM    (:,:,JK,JRR),(/ IIU*IJU /) ) 
-  END DO
-  DO JSV=1,ISV 
-    IF (LNOMIXLG .AND. JSV >= NSV_LGBEG .AND. JSV<= NSV_LGEND) CYCLE
-    ZSVM(:,JK,JSV)   = RESHAPE(PSVM  (:,:,JK,JSV),(/ IIU*IJU /) ) 
-  END DO  
-END DO
-
-ZSFTH(:)=RESHAPE(PSFTH(:,:),(/ IIU*IJU /) )
-ZSFRV(:)=RESHAPE(PSFRV(:,:),(/ IIU*IJU /) )
-
-!!! 3. Call of the physical parameterization of massflux vertical transport
+!
+!!! 2. Call of the physical parameterization of massflux vertical transport
 !
 LSTATNW = .FALSE.
+!
 CALL SHALLOW_MF(YLDIMPHYEXPACK, CST, NEB, PARAM_MFSHALLN, TURBN, CSTURB,&
                 KRR,KRRL,KRRI,ISV,                                    &
                 CFRAC_ICE_SHALLOW_MF,LNOMIXLG,NSV_LGBEG,NSV_LGEND,    &
                 PIMPL_MF, PTSTEP,                                     &
-                ZDZZ, ZZZ,                                            &
-                ZRHODJ,ZRHODREF,                                      &
-                ZPABSM, ZEXN,                                         &
-                ZSFTH,ZSFRV,                                          &
-                ZTHM,ZRM,ZUM,ZVM,ZTKEM,ZSVM,                          &
+                PDZZ, PZZ,                                            &
+                PRHODJ,PRHODREF,                                      &
+                PPABSM, PEXN,                                         &
+                PSFTH,PSFRV,                                          &
+                PTHM,PRM,ZUMM,ZVMM,PTKEM,PSVM,                        &
                 ZDUDT_MF,ZDVDT_MF,                                    &
                 ZDTHLDT_MF,ZDRTDT_MF,ZDSVDT_MF,                       &
                 ZSIGMF,ZRC_MF,ZRI_MF,ZCF_MF,ZFLXZTHVMF,               &
@@ -341,62 +266,41 @@ CALL SHALLOW_MF(YLDIMPHYEXPACK, CST, NEB, PARAM_MFSHALLN, TURBN, CSTURB,&
                 ZTHL_UP,ZRT_UP,ZRV_UP,ZRC_UP,ZRI_UP,                  &
                 ZU_UP, ZV_UP, ZTHV_UP, ZW_UP,                         &
                 ZFRAC_UP,ZEMF,ZDETR,ZENTR,                            &
-                IKLCL,IKETL,IKCTL,PDX,PDY                             )
-
-!!! 4. Unpack output variables
-
-ZDTHLDT(:,:,:)=RESHAPE(ZDTHLDT_MF(:,:),(/ IIU,IJU,IKU /) )
-ZDRTDT(:,:,:)=RESHAPE(ZDRTDT_MF(:,:),(/ IIU,IJU,IKU /) )
-ZDUDT(:,:,:)=RESHAPE(ZDUDT_MF(:,:),(/ IIU,IJU,IKU /) )
-ZDVDT(:,:,:)=RESHAPE(ZDVDT_MF(:,:),(/ IIU,IJU,IKU /) )
-PSIGMF(:,:,:)=RESHAPE(ZSIGMF(:,:),(/ IIU,IJU,IKU /) )
-PRC_MF(:,:,:)=RESHAPE(ZRC_MF(:,:),(/ IIU,IJU,IKU /) )
-PRI_MF(:,:,:)=RESHAPE(ZRI_MF(:,:),(/ IIU,IJU,IKU /) )
-PCF_MF(:,:,:)=RESHAPE(ZCF_MF(:,:),(/ IIU,IJU,IKU /) )
-PFLXZTHVMF(:,:,:)=RESHAPE(ZFLXZTHVMF(:,:),(/ IIU,IJU,IKU /) )
-DO JSV=1,ISV 
-  IF (LNOMIXLG .AND. JSV >= NSV_LGBEG .AND. JSV<= NSV_LGEND) CYCLE
-    ZDSVDT(:,:,:,JSV)   = RESHAPE(ZDSVDT_MF(:,:,JSV),(/ IIU,IJU,IKU /) ) 
-END DO  
+                IKLCL,IKETL,IKCTL,PDX,PDY,PRSVS,XSVMIN,               &
+                TBUCONF, TBUDGETS,SIZE(TBUDGETS)                      )
+!
+! Fill non-declared-explicit-dimensions output variables
+PSIGMF(:,:,:) = ZSIGMF(:,:,:)
+PRC_MF(:,:,:) = ZRC_MF(:,:,:)
+PRI_MF(:,:,:) = ZRI_MF(:,:,:)
+PCF_MF(:,:,:) = ZCF_MF(:,:,:)
+PFLXZTHVMF(:,:,:) = ZFLXZTHVMF(:,:,:)
 !
-!!! 5. Compute source terms for Meso-NH pronostic variables
+!!! 3. Compute source terms for Meso-NH pronostic variables
 !!!    ----------------------------------------------------
-
-
+!
 ! As the pronostic variable of Meso-Nh are not (yet) the conservative variables
 ! the thl tendency is put in th and the rt tendency in rv
 ! the adjustment will do later the repartition between vapor and cloud
 PRTHS(:,:,:)  = PRTHS(:,:,:)  +   &
-                  PRHODJ(:,:,:)*ZDTHLDT(:,:,:)
+                  PRHODJ(:,:,:)*ZDTHLDT_MF(:,:,:)
 PRRS(:,:,:,1) = PRRS(:,:,:,1) +   &
-                  PRHODJ(:,:,:)*ZDRTDT(:,:,:)
+                  PRHODJ(:,:,:)*ZDRTDT_MF(:,:,:)
 PRUS(:,:,:)   = PRUS(:,:,:)  +MXM(  &
-                  PRHODJ(:,:,:)*ZDUDT(:,:,:))
+                  PRHODJ(:,:,:)*ZDUDT_MF(:,:,:))
 PRVS(:,:,:)   = PRVS(:,:,:)  +MYM(  &
-                  PRHODJ(:,:,:)*ZDVDT(:,:,:))
-
+                  PRHODJ(:,:,:)*ZDVDT_MF(:,:,:))
+!
 DO JSV=1,ISV 
   IF (LNOMIXLG .AND. JSV >= NSV_LGBEG .AND. JSV<= NSV_LGEND) CYCLE
   PRSVS(:,:,:,JSV)   = MAX((PRSVS(:,:,:,JSV)  +    &
-                  PRHODJ(:,:,:)*ZDSVDT(:,:,:,JSV)),XSVMIN(JSV))
+                  PRHODJ(:,:,:)*ZDSVDT_MF(:,:,:,JSV)),XSVMIN(JSV))
 END DO     
-
-!!! 7. call to MesoNH budgets
-if ( lbudget_u  ) call Budget_store_end( tbudgets(NBUDGET_U ), 'MAFL', prus (:, :, :)    )
-if ( lbudget_v  ) call Budget_store_end( tbudgets(NBUDGET_V ), 'MAFL', prvs (:, :, :)    )
-if ( lbudget_th ) call Budget_store_end( tbudgets(NBUDGET_TH), 'MAFL', prths(:, :, :)    )
-if ( lbudget_rv ) call Budget_store_end( tbudgets(NBUDGET_RV), 'MAFL', prrs (:, :, :, 1) )
-if ( lbudget_sv ) then
-  do jsv = 1, isv
-    call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + jsv), 'MAFL', prsvs(:, :, :, jsv) )
-  end do
-end if
-
-!!! 8. Prints the fluxes in output file
+!
+!!! 4. Prints the fluxes in output file
 !
 IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   ! stores the conservative potential temperature vertical flux
-  ZWORK(:,:,:)=RESHAPE(ZFLXZTHMF (:,:),(/ IIU,IJU,IKU /) )
   TZFIELD%CMNHNAME   = 'MF_THW_FLX'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = 'MF_THW_FLX'
@@ -407,10 +311,9 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   TZFIELD%NTYPE      = TYPEREAL
   TZFIELD%NDIMS      = 3
   TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZWORK)
+  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZTHMF)
   !
   ! stores the conservative mixing ratio vertical flux
-  ZWORK(:,:,:)=RESHAPE(ZFLXZRMF(:,:),(/ IIU,IJU,IKU /) )
   TZFIELD%CMNHNAME   = 'MF_RCONSW_FLX'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = 'MF_RCONSW_FLX'
@@ -421,7 +324,7 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   TZFIELD%NTYPE      = TYPEREAL
   TZFIELD%NDIMS      = 3
   TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZWORK)
+  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZRMF)
   !
   ! stores the theta_v vertical flux
   TZFIELD%CMNHNAME   = 'MF_THVW_FLX'
@@ -438,7 +341,6 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   !
  IF (PARAM_MFSHALLN%LMIXUV) THEN
   ! stores the U momentum vertical flux
-  ZWORK(:,:,:)=RESHAPE(ZFLXZUMF(:,:),(/ IIU,IJU,IKU /) )
   TZFIELD%CMNHNAME   = 'MF_UW_FLX'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = 'MF_UW_FLX'
@@ -449,10 +351,9 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   TZFIELD%NTYPE      = TYPEREAL
   TZFIELD%NDIMS      = 3
   TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZWORK)
+  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZUMF)
   !
   ! stores the V momentum vertical flux
-  ZWORK(:,:,:)=RESHAPE(ZFLXZVMF(:,:),(/ IIU,IJU,IKU /) )
   TZFIELD%CMNHNAME   = 'MF_VW_FLX'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = 'MF_VW_FLX'
@@ -463,14 +364,14 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   TZFIELD%NTYPE      = TYPEREAL
   TZFIELD%NDIMS      = 3
   TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZWORK)
+  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZVMF)
   !
  END IF
 END IF
-
-!!! 9. Externalised LES Diagnostic for Mass Flux Scheme
+!
+!!! 5. Externalised LES Diagnostic for Mass Flux Scheme
 !!!    ------------------------------------------------
-
+!
       CALL DIAGNOS_LES_MF(IIU,IJU,IKU,PTIME_LES,               &
                           ZTHL_UP,ZRT_UP,ZRV_UP,ZRC_UP,ZRI_UP, &
                           ZU_UP,ZV_UP,ZTHV_UP,ZW_UP,           &
@@ -478,6 +379,5 @@ END IF
                           ZFLXZTHMF,ZFLXZTHVMF,ZFLXZRMF,       &
                           ZFLXZUMF,ZFLXZVMF,                   &
                           IKLCL,IKETL,IKCTL )
-               
-
+!               
 END SUBROUTINE SHALLOW_MF_PACK
diff --git a/src/testprogs/shallow/main_shallow.F90 b/src/testprogs/shallow/main_shallow.F90
index 8a7a8310d1393593c9a982603a46614f726d76fd..21a7dea9bfd95ecbbb714ca12a83205785adbebc 100644
--- a/src/testprogs/shallow/main_shallow.F90
+++ b/src/testprogs/shallow/main_shallow.F90
@@ -320,7 +320,7 @@ JBLK2 =      (NGPBLKS * (ITID+1)) / NTID
      &PRC_UP=PRC_UP(:,:,:,IBL),PRI_UP=PRI_UP(:,:,:,IBL),            &
      &PU_UP=PU_UP(:,:,:,IBL), PV_UP=PV_UP(:,:,:,IBL), PTHV_UP=PTHV_UP(:,:,:,IBL), PW_UP=PW_UP(:,:,:,IBL),                        &
      &PFRAC_UP=PFRAC_UP(:,:,:,IBL),PEMF=PEMF(:,:,:,IBL),PDETR=ZDETR(:,:,:,IBL),PENTR=ZENTR(:,:,:,IBL),                           &
-     &KKLCL=IKLCL(:,:,IBL),KKETL=IKETL(:,:,IBL),KKCTL=IKCTL(:,:,IBL),PDX=0.,PDY=0.                                   )
+     &KKLCL=IKLCL(:,:,IBL),KKETL=IKETL(:,:,IBL),KKCTL=IKCTL(:,:,IBL),PDX=0.,PDY=0.,KBUDGETS=0                                  )
 
 #ifdef _OPENACC
     ENDDO
@@ -452,7 +452,9 @@ PARAM_MFSHALLN%XR     =  2.
 PARAM_MFSHALLN%XLAMBDA_MF  = 0.
 PARAM_MFSHALLN%LGZ = .FALSE.
 PARAM_MFSHALLN%XGZ=1.
-
+PARAM_MFSHALLN%CMF_UPDRAFT=HMF_UPDRAFT
+PARAM_MFSHALLN%CMF_CLOUD=HMF_CLOUD
+PARAM_MFSHALLN%LMIXUV=OMIXUV
 TURBN%LHARAT=.FALSE.
 TURBN%CTURBDIM = '1DIM'
 TURBN%XIMPL=1.