diff --git a/docs/TODO b/docs/TODO
index e849c953adf25cfa78a33393e65644a9e60cc38d..2904850445616917db387ca0428dc3299ea2ef05 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -22,12 +22,14 @@ Merge pb:
        Ryad a fait des tests pour regarder impact des allocatable sur CPU => temps * 2
        Code à nettoyer quelque soit l'option retenue
        Dernier code de Ryad: /home/gmap/mrpm/khatib/public/modset/mods_ice4_nucleation_wrapper.tgz et/ou /home/gmap/mrpm/khatib/public/modset/ice4_nucleation_wrapper.f90
-- shallow_mf:
-       Dans Méso-NH: shallow_mf doit être appelé avec PDX=XDXHAT(1) et PDY=XDYHAT(1)
-       Dans AROME: où trouver la taille de maille?
 
 - rain_ice_red: le cas test MesoNH n'est pas bit repro (diffs > 1% sur rapports de melange)
                 sur la modif src/mesonh/rain_ice_red au commit bdd10dd (First rain_ice new/red merge)
+- shallow_mf (appels dans aro_shallow et arp_shallow):
+       Dans Méso-NH: shallow_mf doit être appelé avec PDX=XDXHAT(1) et PDY=XDYHAT(1)
+       Dans AROME/ARP: où trouver la taille de maille?
+       Pour l'instant 2 versions à cause de l'interface à compute_uprfat_rhcj10
+- compute_updraft_rhcj10: en attente retour de Rachel et/ou Yves pour faire le merge
 
 Etape 2: array syntax -> loop
 - en profiter pour supprimer args PA/PB des routines appelées depuis ice4_tendencies, comme pour nucleation
diff --git a/src/arome/ext/aro_shallow_mf.F90 b/src/arome/ext/aro_shallow_mf.F90
index 2a6a3bf6548bc35254837c64c934037147d2b3c9..4a59175ab8c1a3ebdb725629820e8a1f87b6e109 100644
--- a/src/arome/ext/aro_shallow_mf.F90
+++ b/src/arome/ext/aro_shallow_mf.F90
@@ -222,7 +222,7 @@ ZIMPL=1.
   CALL SHALLOW_MF(KKA=IKA,KKU=IKU,KKL=KKL,KRR=KRR,KRRL=KRRL,KRRI=KRRI,                    &
      &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, PTSTEP_MET=PTSTEP, PTSTEP_SV=PTSTEP,                 &
+     &PIMPL_MF=ZIMPL, PTSTEP=PTSTEP,                                                      &
      &PDZZ=PDZZF,PZZ=PZZ,                                                                  &
      &PRHODJ=PRHODJ,PRHODREF=PRHODREF,                                                    &
      &PPABSM=PPABSM,PEXNM=PEXNM,                                                          &
@@ -235,7 +235,7 @@ ZIMPL=1.
      &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                                                 )
+     &KKLCL=IKLCL,KKETL=IKETL,KKCTL=IKCTL,PDX=0.,PDY=0.                                   )
 !
 !
 !------------------------------------------------------------------------------
diff --git a/src/arome/ext/arp_shallow_mf.F90 b/src/arome/ext/arp_shallow_mf.F90
new file mode 100644
index 0000000000000000000000000000000000000000..f79aee52db64c9364b9ea455f4407b35b9982604
--- /dev/null
+++ b/src/arome/ext/arp_shallow_mf.F90
@@ -0,0 +1,455 @@
+!     ######spl
+      SUBROUTINE ARP_SHALLOW_MF(KIDIA,KFDIA,KLON,KTDIA,KLEV,PIMPL,TSPHY,PZZ,PZZF,PR,PCP, &
+                               & CMF_UPDRAFT,CMF_CLOUD,LMIXUV, &
+                               & PU, PV, PT,PQV,PQL,PQI,PQR,PQS,PTKE,PAPRSF, &
+                               & PDELP,PDIFTQ,PDIFTS,PSTRTU,PSTRTV,PSFTH,PSFRV,&
+                               & PRODTH_CVPP,PQLI,PNEB,KNLAB,PMF_UP)
+
+
+!     ##########################################################################
+!
+!!****  * -  interface to call SHALLOW_MF :
+!!             computation of turbulence "mass flux" fluxes and their divergence
+!!
+!!
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!
+!!
+!!
+!!**  METHOD
+!!    ------
+!!
+!!
+!!
+!!    EXTERNAL
+!!    --------
+!!      Subroutine SHALLOW_MF (routine de MesoNH)
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!    REFERENCE
+!!    ---------
+!!
+!!      Documentation ARPEGE
+!!
+!!    AUTHOR
+!!    ------
+!!    Y.Bouteloup from aro_shallow_mf
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    11/2010
+!!      S. Riette shallow_mf now outputs ice cloud
+!!      S. Riette Jan 2012: support for both order of vertical levels
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+
+USE YOMCST   , ONLY : RG, RATM, RKAPPA, RD, RCPD, RCPV
+
+!USE MODD_PARAMETERS
+!
+USE MODI_SHALLOW_MF
+USE MODD_CST
+USE YOMCT3
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+!
+!
+
+INTEGER,                  INTENT(IN)   :: KIDIA
+INTEGER,                  INTENT(IN)   :: KFDIA
+INTEGER,                  INTENT(IN)   :: KLON     !NPROMA under CPG
+INTEGER,                  INTENT(IN)   :: KLEV     !Number of vertical levels (bottom of atmosphere in ARP)
+INTEGER,                  INTENT(IN)   :: KTDIA    !Top of atmosphere in ARPEGE
+REAL,                     INTENT(IN)   :: TSPHY   ! Time step
+REAL,                     INTENT(IN)   :: PIMPL
+
+CHARACTER (LEN=4), INTENT(IN)   :: CMF_UPDRAFT  ! Type of Mass Flux Scheme
+CHARACTER (LEN=4), INTENT(IN)   :: CMF_CLOUD    ! Type of statistical cloud scheme
+LOGICAL,                        INTENT(IN)   :: LMIXUV    ! True if mixing of momentum
+
+!REAL, DIMENSION(KLON,KLEV+2),   INTENT(IN)   :: PZZ     ! Height of layer boundaries 
+REAL, DIMENSION(KLON,0:KLEV), INTENT(IN)   :: PZZ     ! Height of layer boundaries 
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PZZF    ! Height of level
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PR   ! Air gaz constant
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PCP  ! Cp
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PU
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PV
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PT
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PQV
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PQL
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PQI
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PQR
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PQS
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PTKE
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PAPRSF
+REAL, DIMENSION(KLON,KLEV),   INTENT(IN)   :: PDELP
+
+REAL, DIMENSION(KLON,0:KLEV),   INTENT(INOUT)   :: PDIFTQ
+REAL, DIMENSION(KLON,0:KLEV),   INTENT(INOUT)   :: PDIFTS
+REAL, DIMENSION(KLON,0:KLEV),   INTENT(INOUT)   :: PSTRTU
+REAL, DIMENSION(KLON,0:KLEV),   INTENT(INOUT)   :: PSTRTV
+
+REAL, DIMENSION(KLON,0:KLEV),   INTENT(INOUT)   :: PRODTH_CVPP
+REAL, DIMENSION(KLON,KLEV)  ,   INTENT(INOUT)   :: PQLI
+REAL, DIMENSION(KLON,KLEV)  ,   INTENT(INOUT)   :: PNEB
+INTEGER, DIMENSION(KLON,KLEV),  INTENT(INOUT)   :: KNLAB
+
+REAL, DIMENSION(KLON,0:KLEV),   INTENT(OUT)   :: PMF_UP   
+
+!
+! normal surface fluxes of theta and Rv
+REAL, DIMENSION(KLON),          INTENT(IN)   ::  PSFTH,PSFRV
+!   prognostic variables at t- deltat
+!
+!CHARACTER (LEN=14),  INTENT(IN)  :: CPNAME
+!
+!
+!*       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 :: IKA
+INTEGER :: IKB           !
+INTEGER :: IKE           !
+INTEGER :: IKU
+INTEGER :: IKL           !
+INTEGER :: IKR           !
+INTEGER :: IKRL           !
+INTEGER :: IKRI           !
+INTEGER :: JI, JJ, JL, JK, JLON, JLEV !
+INTEGER ::II, IUSCM, IKK, ILEV
+INTEGER :: ISV_LGBEG, ISV_LGEND, ITCOUNT
+INTEGER, DIMENSION(KIDIA:KFDIA)    :: IKLCL,IKETL,IKCTL
+REAL,DIMENSION(KIDIA:KFDIA,KLEV+2) :: ZFLXZTHMF,ZFLXZRMF,ZFLXZUMF,ZFLXZVMF
+REAL,DIMENSION(KIDIA:KFDIA,KLEV+2) :: ZEMF,ZDETR,ZENTR
+
+
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)   :: ZDZZ,ZZZ,ZTHETA,ZEXNER,ZHRO,ZHRODJ,ZHRODREF
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)   :: ZDUDT_TURB,ZDVDT_TURB,ZDRTDT_TURB,ZDTHLDT_TURB
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2,5) :: ZRM
+REAL, DIMENSION(KIDIA:KFDIA)          ::  ZSFTH,ZSFRV
+
+REAL          ::  ZINVG, ZDT, ZEMF_MAX, ZTDCP, ZVMD
+
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2,1) ::  ZSVM, ZDSVDT_TURB, ZSVDT_MF
+
+CHARACTER (LEN=4) :: HMF_UPDRAFT, HMF_CLOUD
+
+
+LOGICAL LLOMIXUV, LLONOMIXLG
+!
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)   ::  ZDUDT_MF     ! tendency of U   by massflux scheme
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)   ::  ZDVDT_MF     ! tendency of V   by massflux scheme
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)   ::  ZDTHLDT_MF   ! tendency of thl by massflux scheme
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)   ::  ZDRTDT_MF    ! tendency of rt  by massflux scheme
+
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZSIGMF,ZRC_MF,ZRI_MF,ZCF_MF ! cloud info for the cloud scheme
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZFLXZTHVMF           ! Thermal production for TKE scheme
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZTHL_UP   ! Thl updraft characteristics
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZRT_UP    ! Rt  updraft characteristics
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZRV_UP    ! Vapor updraft characteristics
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZU_UP     ! U wind updraft characteristics
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZV_UP     ! V wind updraft characteristics
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZRC_UP    ! cloud content updraft characteristics
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZRI_UP    ! ice content   updraft characteristics
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZTHV_UP   ! Thv   updraft characteristics
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZW_UP     ! vertical speed updraft characteristics
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZFRAC_UP  ! updraft fraction
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZDPSG     ! Delta P / g
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZFQ_MF    ! Flux de qv by massflux scheme
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZFH_MF    ! Flux d'hentalpy by massflux scheme
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZFU_MF
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZFV_MF
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZQDM
+
+REAL, DIMENSION(KIDIA:KFDIA,KLEV+2)  ::  ZAPRSF
+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
+
+!------------------------------------------------------------------------------
+
+!*       1.     PRELIMINARY COMPUTATIONS
+!               ------------------------
+
+
+!  Controle :
+
+
+! Avec inversion des boucles
+IKA=1        ! <== Bottom index of array
+IKB=2        ! <== Physical bottom
+IKE=KLEV+1   ! <== Physical top
+IKU=KLEV+2   ! <== Top index of array
+IKL=1        ! <== Loop increment to go from top to bottom
+
+IIB=KIDIA
+IIE=KFDIA
+IKR=5         ! <== Number of water species
+IKRL=2
+IKRI=2
+ZINVG = 1./RG
+
+!------------------------------------------------------------------------------
+
+!*       2.   INITIALISATION
+
+!             ---------------
+
+! tableau a recalculer a chaque pas de temps
+! attention, ZDZZ est l'altitude entre deux niveaux (et pas l'�paisseur de la couche)
+
+! Inversion des niveaux
+
+DO JK = IKB , IKE, IKL
+   DO JL = IIB,IIE
+      IKK = IKE + 1 - JK
+      ZAPRSF(JL,JK) = PAPRSF(JL,IKK)
+      ZTKE  (JL,JK) = PTKE  (JL,IKK)
+      ZU    (JL,JK) = PU    (JL,IKK)
+      ZV    (JL,JK) = PV    (JL,IKK)
+   ENDDO
+ENDDO
+
+
+! AROME type initialisation
+  !initialisation de ZZZ
+DO JK = IKB , IKE+1
+  DO JL = IIB,IIE
+    IKK = IKE + 1 - JK
+    ZZZ(JL,JK) = PZZ(JL,IKK)*ZINVG
+  ENDDO
+ENDDO
+
+
+DO JL = IIB,IIE
+  ZZZ(JL,1) = 2*ZZZ(JL,2)-ZZZ(JL,3)
+ENDDO
+!initialisation de ZZZF
+DO JK = IKB , IKE
+  DO JL = IIB,IIE
+    IKK = IKE + 1 - JK
+    ZZZF(JL,JK) = PZZF(JL,IKK)*ZINVG
+  ENDDO
+ENDDO
+DO JL = IIB,IIE
+  ZZZF(JL,1)=1.5*ZZZ(JL,2)-0.5*ZZZ(JL,3)
+  ZZZF(JL,IKE+1)=ZZZF(JL,IKE)+ (ZZZ(JL,IKE+1)-ZZZ(JL,IKE))
+  ZDZZ(JL,1)=-999.
+ENDDO
+
+DO JK = IKB , IKE+1
+   DO JL = IIB,IIE
+      ZDZZ(JL,JK)=ZZZF(JL,JK)-ZZZF(JL,JK-1)
+   ENDDO
+ENDDO
+
+! Inversion des niveaux
+DO JL = IIB,IIE
+   DO JK = IKB , IKE, IKL
+      IKK = IKE + 1 - JK
+      ZEXNER(JL,JK)=(ZAPRSF(JL,JK)/RATM)**RKAPPA
+      ZTHETA(JL,JK)=PT(JL,IKK)/ZEXNER(JL,JK)   
+      ZHRO(JL,JK)=ZAPRSF(JL,JK)/(PT(JL,IKK)*PR(JL,IKK))
+      ZQDM(JL,JK)=(1.-PQV(JL,IKK)-PQL(JL,IKK)-PQI(JL,IKK)-PQR(JL,IKK)-PQS(JL,IKK))
+
+      ZHRODREF(JL,JK)=ZHRO(JL,JK)*ZQDM(JL,JK)
+      ZHRODJ(JL,JK)=PDELP(JL,IKK)*ZINVG
+      ZRM(JL,JK,1)=PQV(JL,IKK)/ZQDM(JL,JK)
+      ZRM(JL,JK,2)=PQL(JL,IKK)/ZQDM(JL,JK)
+      ZRM(JL,JK,3)=PQR(JL,IKK)/ZQDM(JL,JK)
+      ZRM(JL,JK,4)=PQI(JL,IKK)/ZQDM(JL,JK)
+      ZRM(JL,JK,5)=PQS(JL,IKK)/ZQDM(JL,JK)
+
+      ZDPSG(JL,JK) = MAX(1.E-15,PDELP(JL,IKK)/RG)
+
+!  Copy KLEV array into KLEV+2 array, or how to spend cpu time unnecessarily but that's the arome physics rule !
+   ENDDO
+ENDDO
+
+ZDUDT_TURB(KIDIA:KFDIA,:)   = 0.
+ZDVDT_TURB(KIDIA:KFDIA,:)   = 0.
+ZDRTDT_TURB(KIDIA:KFDIA,:)  = 0.
+ZDTHLDT_TURB(KIDIA:KFDIA,:) = 0.
+ZDSVDT_TURB(KIDIA:KFDIA,:,:)= 0.
+
+ZSVM(:,:,:)=0.
+
+ ZAPRSF  (KIDIA:KFDIA,IKB-IKL)     = ZAPRSF  (KIDIA:KFDIA,IKB)
+ ZAPRSF  (KIDIA:KFDIA,IKE+IKL)     = ZAPRSF  (KIDIA:KFDIA,IKE)
+ ZTKE    (KIDIA:KFDIA,IKB-IKL)     = ZTKE    (KIDIA:KFDIA,IKB)
+ ZTKE    (KIDIA:KFDIA,IKE+IKL)     = ZTKE    (KIDIA:KFDIA,IKE)
+ ZU      (KIDIA:KFDIA,IKB-IKL)     = ZU      (KIDIA:KFDIA,IKB)
+ ZU      (KIDIA:KFDIA,IKE+IKL)     = ZU      (KIDIA:KFDIA,IKE)
+ ZV      (KIDIA:KFDIA,IKB-IKL)     = ZV      (KIDIA:KFDIA,IKB)
+ ZV      (KIDIA:KFDIA,IKE+IKL)     = ZV      (KIDIA:KFDIA,IKE)
+ ZEXNER  (KIDIA:KFDIA,IKB-IKL)     = ZEXNER  (KIDIA:KFDIA,IKB)
+ ZEXNER  (KIDIA:KFDIA,IKE+IKL)     = ZEXNER  (KIDIA:KFDIA,IKE)
+ ZTHETA  (KIDIA:KFDIA,IKB-IKL)     = ZTHETA  (KIDIA:KFDIA,IKB)
+ ZTHETA  (KIDIA:KFDIA,IKE+IKL)     = ZTHETA  (KIDIA:KFDIA,IKE)
+ ZHRO    (KIDIA:KFDIA,IKB-IKL)     = ZHRO    (KIDIA:KFDIA,IKB)
+ ZHRO    (KIDIA:KFDIA,IKE+IKL)     = ZHRO    (KIDIA:KFDIA,IKE)
+ ZQDM    (KIDIA:KFDIA,IKB-IKL)     = ZQDM    (KIDIA:KFDIA,IKB)
+ ZQDM    (KIDIA:KFDIA,IKE+IKL)     = ZQDM    (KIDIA:KFDIA,IKE)
+ ZHRODREF(KIDIA:KFDIA,IKB-IKL)     = ZHRODREF(KIDIA:KFDIA,IKB)
+ ZHRODREF(KIDIA:KFDIA,IKE+IKL)     = ZHRODREF(KIDIA:KFDIA,IKE)
+ ZHRODJ  (KIDIA:KFDIA,IKB-IKL)     = ZHRODJ  (KIDIA:KFDIA,IKB)
+ ZHRODJ  (KIDIA:KFDIA,IKE+IKL)     = ZHRODJ  (KIDIA:KFDIA,IKE)
+ ZRM     (KIDIA:KFDIA,IKB-IKL,1)   = ZRM     (KIDIA:KFDIA,IKB,1)
+ ZRM     (KIDIA:KFDIA,IKE+IKL,1)   = ZRM     (KIDIA:KFDIA,IKE,1)
+ ZRM     (KIDIA:KFDIA,IKB-IKL,2)   = ZRM     (KIDIA:KFDIA,IKB,2)
+ ZRM     (KIDIA:KFDIA,IKE+IKL,2)   = ZRM     (KIDIA:KFDIA,IKE,2)
+ ZRM     (KIDIA:KFDIA,IKB-IKL,3)   = ZRM     (KIDIA:KFDIA,IKB,3)
+ ZRM     (KIDIA:KFDIA,IKE+IKL,3)   = ZRM     (KIDIA:KFDIA,IKE,3)
+ ZRM     (KIDIA:KFDIA,IKB-IKL,4)   = ZRM     (KIDIA:KFDIA,IKB,4)
+ ZRM     (KIDIA:KFDIA,IKE+IKL,4)   = ZRM     (KIDIA:KFDIA,IKE,4)
+ ZRM     (KIDIA:KFDIA,IKB-IKL,5)   = ZRM     (KIDIA:KFDIA,IKB,5)
+ ZRM     (KIDIA:KFDIA,IKE+IKL,5)   = ZRM     (KIDIA:KFDIA,IKE,5)
+ ZSVM    (KIDIA:KFDIA,IKB-IKL,:)   = ZSVM    (KIDIA:KFDIA,IKB,:)
+ ZSVM    (KIDIA:KFDIA,IKE+IKL,:)   = ZSVM    (KIDIA:KFDIA,IKE,:)
+ ZDUDT_TURB(KIDIA:KFDIA,IKB-IKL)   = ZDUDT_TURB(KIDIA:KFDIA,IKB)   
+ ZDUDT_TURB(KIDIA:KFDIA,IKE+IKL)   = ZDUDT_TURB(KIDIA:KFDIA,IKE)  
+ ZDVDT_TURB(KIDIA:KFDIA,IKB-IKL)   = ZDVDT_TURB(KIDIA:KFDIA,IKB)    
+ ZDVDT_TURB(KIDIA:KFDIA,IKE+IKL)   = ZDVDT_TURB(KIDIA:KFDIA,IKE)  
+ ZDTHLDT_TURB(KIDIA:KFDIA,IKB-IKL) = ZDTHLDT_TURB(KIDIA:KFDIA,IKB)  
+ ZDTHLDT_TURB(KIDIA:KFDIA,IKE+IKL) = ZDTHLDT_TURB(KIDIA:KFDIA,IKE)  
+ ZDRTDT_TURB(KIDIA:KFDIA,IKB-IKL)  = ZDRTDT_TURB(KIDIA:KFDIA,IKB)  
+ ZDRTDT_TURB(KIDIA:KFDIA,IKE+IKL)  = ZDRTDT_TURB(KIDIA:KFDIA,IKE)  
+ ZDSVDT_TURB(KIDIA:KFDIA,IKB-IKL,:)= ZDSVDT_TURB(KIDIA:KFDIA,IKB,:)
+ ZDSVDT_TURB(KIDIA:KFDIA,IKE+IKL,:)= ZDSVDT_TURB(KIDIA:KFDIA,IKE,:)
+
+DO JL = IIB,IIE
+  ZSFTH(JL) = -PSFTH(JL)/ZHRO(JL,IKB)/RCPD
+  ZSFRV(JL) = -PSFRV(JL)/ZHRO(JL,IKB)
+ENDDO
+
+LLOMIXUV    = .TRUE.
+HMF_UPDRAFT =  CMF_UPDRAFT
+HMF_CLOUD   =  CMF_CLOUD
+LLOMIXUV    =  LMIXUV
+LLONOMIXLG  = .FALSE.
+ISV_LGBEG   =  0
+ISV_LGEND   =  0
+ITCOUNT     =  1
+ZDT         =  TSPHY
+
+
+!  Mise � 0 des tendances 
+
+ZDUDT_MF(:,:)   = 0.
+ZDVDT_MF(:,:)   = 0.
+ZDTHLDT_MF(:,:) = 0.
+ZDRTDT_MF(:,:)  = 0.
+
+!------------------------------------------------------------------------------
+!
+!
+!*       3.   MULTIPLICATION PAR RHODJ
+!             POUR OBTENIR LES TERMES SOURCES DE MESONH
+!
+!         -----------------------------------------------
+
+!
+!------------------------------------------------------------------------------
+!
+!
+!*       4.   APPEL DE LA TURBULENCE MESONH
+!
+!         ---------------------------------
+
+  CALL SHALLOW_MF(KKA=IKA,KKU=IKU,KKL=IKL,KRR=IKR,KRRL=IKRL,KRRI=IKRI,   &
+       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,                                        &
+      PDZZ=ZDZZ,PZZ=ZZZ,                                                 &
+      PRHODJ=ZHRODJ,PRHODREF=ZHRODREF,                                   &
+      PPABSM=ZAPRSF,PEXNM=ZEXNER,                                        &
+      PSFTH=ZSFTH,PSFRV=ZSFRV,                                           &
+      PTHM=ZTHETA,PRM=ZRM,PUM=ZU,PVM=ZV,PTKEM=ZTKE,PSVM=ZSVM,            &
+!  Output
+      PDUDT_MF=ZDUDT_MF,PDVDT_MF=ZDVDT_MF,                                      &
+      PDTHLDT_MF=ZDTHLDT_MF,PDRTDT_MF=ZDRTDT_MF,PDSVDT_MF=ZSVDT_MF,             &
+      PSIGMF=ZSIGMF,PRC_MF=ZRC_MF,PRI_MF=ZRI_MF,PCF_MF=ZCF_MF,PFLXZTHVMF=ZFLXZTHVMF,          &
+      PFLXZTHMF=ZFLXZTHMF,PFLXZRMF=ZFLXZRMF,PFLXZUMF=ZFLXZUMF,PFLXZVMF=ZFLXZVMF,&
+      PTHL_UP=ZTHL_UP,PRT_UP=ZRT_UP,PRV_UP=ZRV_UP,PRC_UP=ZRC_UP,PRI_UP=ZRI_UP,  &
+      PU_UP=ZU_UP, PV_UP=ZV_UP, PTHV_UP=ZTHV_UP, PW_UP=ZW_UP,                   &
+      PFRAC_UP=ZFRAC_UP,PEMF=ZEMF,PDETR=ZDETR,PENTR=ZENTR,                      &
+      KKLCL=IKLCL,KKETL=IKETL,KKCTL=IKCTL,                                      &
+!
+      PDX=0., PDY=0.)
+
+
+!  Conversion des tendances de theta en tendance de cpT
+!  et conversion en qi en multipliant par qd
+! Puis calcul des flux
+
+ZFQ_MF(:,:) = 0.
+ZFH_MF(:,:) = 0.
+ZFU_MF(:,:) = 0.
+ZFV_MF(:,:) = 0.
+
+
+ZVMD=RCPV-RCPD
+
+DO JL = IIB,IIE
+   DO JK = IKE , IKB, -IKL   ! Loop from top to bottom
+
+      IKK = IKE + 1 - JK
+
+      ZFQ_MF(JL,JK) = ZFQ_MF(JL,JK+IKL) - ZDPSG(JL,JK)*ZDRTDT_MF(JL,JK)*ZQDM(JL,JK)
+      ZTDCP=ZVMD*ZDRTDT_MF(JL,JK)
+
+
+
+      ZFH_MF(JL,JK) = ZFH_MF(JL,JK+IKL) - ZDPSG(JL,JK) &
+      & * (ZDTHLDT_MF(JL,JK)*ZEXNER(JL,JK)*(PCP(JL,IKK)+TSPHY*ZTDCP)+PT(JL,IKK)*ZTDCP)
+
+!      ZFH_MF(JL,JK) = ZFH_MF(JL,JK+IKL) - ZDPSG(JL,JK) &
+!      & * (ZDTHLDT_MF(JL,JK)*ZEXNER(JL,JK)*PCP(JL,IKK)+PT(JL,IKK)*ZTDCP)
+
+      ZFU_MF(JL,JK) = ZFU_MF(JL,JK+IKL) - ZDPSG(JL,JK)*ZDUDT_MF(JL,JK)
+      ZFV_MF(JL,JK) = ZFV_MF(JL,JK+IKL) - ZDPSG(JL,JK)*ZDVDT_MF(JL,JK)
+   ENDDO
+ENDDO
+
+ZRC_UP(:,:) = ZRC_UP(:,:)*ZFRAC_UP(:,:)
+ZRI_UP(:,:) = ZRI_UP(:,:)*ZFRAC_UP(:,:)
+PRODTH_CVPP(:,:) = 0.
+
+
+! stockage dans les flux turbulents (Inversion des niveaux !)
+
+DO JL = IIB,IIE
+   DO JK = IKE , IKB, -IKL   ! Loop from top to bottom
+      IKK = IKE + 1 - JK
+      PDIFTQ(JL,IKK) = PDIFTQ(JL,IKK) + ZFQ_MF(JL,JK)
+      PDIFTS(JL,IKK) = PDIFTS(JL,IKK) + ZFH_MF(JL,JK)
+      PSTRTU(JL,IKK) = PSTRTU(JL,IKK) + ZFU_MF(JL,JK)
+      PSTRTV(JL,IKK) = PSTRTV(JL,IKK) + ZFV_MF(JL,JK)
+      PRODTH_CVPP(JL,IKK) = RG/ZTHETA(JL,JK)*ZFLXZTHVMF(JL,JK)
+
+! Shallow cloud information     
+      PQLI  (JL,IKK) =  (ZRC_MF(JL,JK)+ZRI_MF(JL,JK))/(1.+ZRT_UP(JL,JK)) ! with HFRAC_ICE='N', ZRI_MF=0
+      KNLAB (JL,IKK) =  INT(MAX(0.,SIGN(1.,PQLI(JL,IKK)-1.E-8)))
+      PNEB  (JL,IKK) =  ZCF_MF(JL,JK) 
+      PMF_UP(JL,IKK) = -ZEMF(JL,JK)/ZHRODREF(JL,JK) ! <== On ne sort pas le flux de masse mais
+!                                                    ! ce dont on aura besoin dans ACDIFV1 !!!!!!!
+   ENDDO
+ENDDO
+
+END SUBROUTINE ARP_SHALLOW_MF
diff --git a/src/common/turb/mode_mf_turb.F90 b/src/common/turb/mode_mf_turb.F90
index 3dc558e35e70494711e15e886faace1cbe413e08..7f9e698ce2f108aa9b5fc33d8a6ccbfdaa2f0d40 100644
--- a/src/common/turb/mode_mf_turb.F90
+++ b/src/common/turb/mode_mf_turb.F90
@@ -68,6 +68,9 @@ USE MODE_TRIDIAG_MASSFLUX, ONLY: TRIDIAG_MASSFLUX
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !
+USE PARKIND1, ONLY : JPRB
+USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+!
 IMPLICIT NONE
 !
 !
diff --git a/src/arome/turb/modi_shallow_mf.F90 b/src/common/turb/modi_shallow_mf.F90
similarity index 93%
rename from src/arome/turb/modi_shallow_mf.F90
rename to src/common/turb/modi_shallow_mf.F90
index 944ea3450dd6d66fb0098706e2742e812525863c..23559eeec6a0afd8573c7c913de4933267eb154b 100644
--- a/src/arome/turb/modi_shallow_mf.F90
+++ b/src/common/turb/modi_shallow_mf.F90
@@ -7,7 +7,7 @@ INTERFACE
       SUBROUTINE SHALLOW_MF(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
                 HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,            &
                 ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
-                PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,              &
+                PIMPL_MF, PTSTEP,                                     &
                 PDZZ, PZZ,                                            &
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXNM,                                        &
@@ -20,7 +20,7 @@ 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                                     )
+                KKLCL,KKETL,KKCTL,PDX,PDY                             )
 !     #################################################################
 !!
 !               
@@ -43,9 +43,7 @@ LOGICAL,                INTENT(IN)   :: ONOMIXLG  ! False if mixing of lagrangia
 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,              INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,              INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
+REAL,                   INTENT(IN)   :: PTSTEP    ! Dynamical timestep 
 
 REAL, DIMENSION(:,:),   INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(:,:),   INTENT(IN) ::  PDZZ        ! Metric coefficients
@@ -89,6 +87,7 @@ 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
 
 
 END SUBROUTINE SHALLOW_MF
diff --git a/src/arome/turb/shallow_mf.F90 b/src/common/turb/shallow_mf.F90
similarity index 78%
rename from src/arome/turb/shallow_mf.F90
rename to src/common/turb/shallow_mf.F90
index e5c5c59b075bc132cea1eacedf172110933a0d06..b042f80a0670bdd5e045fa09af8f8a856450ec4a 100644
--- a/src/arome/turb/shallow_mf.F90
+++ b/src/common/turb/shallow_mf.F90
@@ -1,8 +1,13 @@
-!     ######spl
+!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+!     ################################################################
       SUBROUTINE SHALLOW_MF(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
                 HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,            &
                 ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
-                PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV,              &
+                PIMPL_MF, PTSTEP,                                     &
                 PDZZ, PZZ,                                            &
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXNM,                                        &
@@ -15,10 +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                                     )
+                KKLCL,KKETL,KKCTL,PDX,PDY                             )
 
-      USE PARKIND1, ONLY : JPRB
-      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     #################################################################
 !!
 !!****  *SHALLOW_MF* - 
@@ -53,7 +56,16 @@
 !!      S. Riette 18 May 2010 interface changed due to ice correction
 !!      S.Riette DUAL case
 !!      S. Riette Jan 2012: support for both order of vertical levels
+!!      R.Honnert 07/2012 : elemnts of Rio according to Bouteloup
+!!      R.Honnert 07/2012 : MF gray zone 
+!!      R.Honnert 10/2016 : SURF=gray zone initilisation + EDKF  
+!!      R.Honnert 10/2016 : Update with Arome
 !!      S. Riette Nov 2016: HFRAC_ICE support
+!!      Philippe Wautelet 28/05/2018: corrected truncated integer division (2/3 -> 2./3.)
+!!      Q.Rodier  01/2019 : support RM17 mixing length
+!!      R.Honnert 1/2019  : remove SURF 
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  R. Honnert     04/2021: remove HRIO and BOUT schemes
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -70,6 +82,9 @@ USE MODE_COMPUTE_UPDRAFT_RAHA, ONLY: COMPUTE_UPDRAFT_RAHA
 USE MODE_MF_TURB, ONLY: MF_TURB
 USE MODE_MF_TURB_EXPL, ONLY: MF_TURB_EXPL
 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
 !
 IMPLICIT NONE
 
@@ -83,19 +98,17 @@ INTEGER,                INTENT(IN)   :: KKL          ! +1 if grid goes from grou
 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.
-CHARACTER (LEN=4),      INTENT(IN)   :: HMF_UPDRAFT  ! Type of Mass Flux Scheme
+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
+CHARACTER(LEN=4),       INTENT(IN)   :: HMF_CLOUD    ! Type of statistical cloud
                                                      ! scheme
-CHARACTER*1,            INTENT(IN)   :: HFRAC_ICE    ! partition liquid/ice scheme
+CHARACTER(LEN=1),       INTENT(IN)   :: HFRAC_ICE    ! partition liquid/ice scheme
 LOGICAL,                INTENT(IN)   :: OMIXUV    ! True if mixing of momentum
 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,              INTENT(IN)     ::  PTSTEP_MET! Timestep for meteorological variables                        
-REAL,              INTENT(IN)     ::  PTSTEP_SV! Timestep for tracer variables
+REAL,                   INTENT(IN)   :: PTSTEP    ! Dynamical timestep 
 
 REAL, DIMENSION(:,:),   INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(:,:),   INTENT(IN) ::  PDZZ        ! Metric coefficients
@@ -127,7 +140,7 @@ 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) ::  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
@@ -139,6 +152,7 @@ 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
 !
 !                     0.2  Declaration of local variables
 !
@@ -147,7 +161,6 @@ REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) ::     &
           ZRTM,                                   & !
           ZTHVM,                                  & !
           ZEMF_O_RHODREF,                         & ! entrainment/detrainment
-          ZTHVDT,ZTHDT,ZRVDT,                     & ! tendencies
           ZBUO_INTEG                                ! integrated buoyancy
 REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZFRAC_ICE
 
@@ -162,15 +175,11 @@ LOGICAL :: GENTR_DETR  ! flag to recompute entrainment, detrainment and mass flu
 INTEGER :: IKB         ! near ground physical index
 INTEGER :: IKE         ! uppest atmosphere physical index
 INTEGER, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: IERR
+!
+REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !------------------------------------------------------------------------
 
 !!! 1. Initialisation
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-REAL :: PDX=0., PDY=0.
-
-
 IF (LHOOK) CALL DR_HOOK('SHALLOW_MF',0,ZHOOK_HANDLE)
 
 ! vertical boundaries
@@ -178,7 +187,7 @@ IKB=KKA+KKL*JPVEXT
 IKE=KKU-KKL*JPVEXT
 
 ! updraft governing variables
-IF (HMF_UPDRAFT == 'EDKF') THEN
+IF (HMF_UPDRAFT == 'EDKF'  .OR. HMF_UPDRAFT == 'RHCJ') THEN
   PENTR      = 1.E20
   PDETR      = 1.E20
   PEMF       = 1.E20
@@ -187,9 +196,11 @@ ENDIF
 
 ! Thermodynamics functions
 ZFRAC_ICE(:,:) = 0.
-WHERE(PRM(:,:,2)+PRM(:,:,4) > 1.E-20)
-  ZFRAC_ICE(:,:) = PRM(:,:,4) / (PRM(:,:,2)+PRM(:,:,4))
-ENDWHERE
+IF (SIZE(PRM,3).GE.4) THEN
+  WHERE(PRM(:,:,2)+PRM(:,:,4) > 1.E-20)
+    ZFRAC_ICE(:,:) = PRM(:,:,4) / (PRM(:,:,2)+PRM(:,:,4))
+  ENDWHERE
+ENDIF
 CALL COMPUTE_FRAC_ICE(HFRAC_ICE,ZFRAC_ICE(:,:),PTHM(:,:)*PEXNM(:,:), IERR(:,:))
 
 ! Conservative variables at t-dt
@@ -218,7 +229,8 @@ IF (HMF_UPDRAFT == 'EDKF') THEN
                        PENTR,ZBUO_INTEG,KKLCL,KKETL,KKCTL,ZDEPTH,&
                        PDX,PDY)
 ELSEIF (HMF_UPDRAFT == 'RHCJ') THEN
-   CALL COMPUTE_UPDRAFT_RHCJ10(KKA,IKB,IKE,KKU,KKL,HFRAC_ICE,GENTR_DETR,OMIXUV,&
+  GENTR_DETR = .TRUE.
+  CALL COMPUTE_UPDRAFT_RHCJ10(KKA,IKB,IKE,KKU,KKL,HFRAC_ICE,GENTR_DETR,OMIXUV,&
                        ONOMIXLG,KSV_LGBEG,KSV_LGEND,             &
                        PZZ,PDZZ,                                 &
                        PSFTH,PSFRV,PPABSM,PRHODREF,              &
@@ -229,23 +241,24 @@ 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,GENTR_DETR,OMIXUV,&
+   CALL COMPUTE_UPDRAFT_RAHA(KKA,IKB,IKE,KKU,KKL,HFRAC_ICE,      &
+                       GENTR_DETR,OMIXUV,                        &
                        ONOMIXLG,KSV_LGBEG,KSV_LGEND,             &
                        PZZ,PDZZ,                                 &
-                       PSFTH,PSFRV,PPABSM,PRHODREF,              &
-                       PUM,PVM,PTKEM,                            &
-                       PEXNM,PTHM,PRM(:,:,1),ZTHLM,ZRTM,PSVM,    &
-                       PTHL_UP,PRT_UP,PRV_UP,PRC_UP,PRI_UP,      &
-                       PTHV_UP, PW_UP, PU_UP, PV_UP, ZSV_UP,     &
-                       PFRAC_UP,ZFRAC_ICE_UP,ZRSAT_UP,PEMF,PDETR,&
-                       PENTR,ZBUO_INTEG,KKLCL,KKETL,KKCTL,ZDEPTH )
+                       PSFTH,PSFRV,                              &
+                       PPABSM,PRHODREF,PUM,PVM,PTKEM,            &
+                       PEXNM,PTHM,PRM(:,:,1),ZTHLM,ZRTM,         &
+                       PSVM,PTHL_UP,PRT_UP,                      &
+                       PRV_UP,PRC_UP,PRI_UP, PTHV_UP,            &
+                       PW_UP, PU_UP, PV_UP, ZSV_UP,              &
+                       PFRAC_UP,ZFRAC_ICE_UP,ZRSAT_UP,           &
+                       PEMF,PDETR,PENTR,                         &
+                       ZBUO_INTEG,KKLCL,KKETL,KKCTL,             &
+                       ZDEPTH )
 ELSEIF (HMF_UPDRAFT == 'DUAL') THEN
   !Updraft characteristics are already computed and received by interface
 ELSE
-  WRITE(*,*) ' STOP'                                                     
-  WRITE(*,*) ' NO UPDRAFT MODEL FOR EDKF : CMF_UPDRAFT =',HMF_UPDRAFT 
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'SHALLOW_MF', 'no updraft model for EDKF: CMF_UPDRAFT='//TRIM(HMF_UPDRAFT) )
 ENDIF
 
 !!! 5. Compute diagnostic convective cloud fraction and content
@@ -269,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(KKA, IKB, IKE, KKU, KKL, OMIXUV,                     &
              ONOMIXLG,KSV_LGBEG,KSV_LGEND,                            &
              PIMPL_MF, PTSTEP,                                        &
              PDZZ,                                                    &
@@ -280,12 +293,12 @@ IF ( PIMPL_MF > 1.E-10 ) THEN
              PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF,         &
              ZFLXZSVMF                                                )
 ELSE
-      CALL MF_TURB_EXPL(KKA, IKB, IKE, KKU, KKL, OMIXUV,                 &
-           PRHODJ,                                                       &
-           ZTHLM,ZTHVM,ZRTM,PUM,PVM,                                     &
-           PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF,                       &
-           ZEMF_O_RHODREF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,            &
-           PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF)
+  CALL MF_TURB_EXPL(KKA, IKB, IKE, KKU, KKL, OMIXUV,                 &
+         PRHODJ,                                                       &
+         ZTHLM,ZTHVM,ZRTM,PUM,PVM,                                     &
+         PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF,                       &
+         ZEMF_O_RHODREF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,            &
+         PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF)
 ENDIF
 
 ! security in the case HMF_UPDRAFT = 'DUAL'
diff --git a/src/mesonh/turb/shallow_mf.f90 b/src/mesonh/turb/shallow_mf.f90
index 7f3c32b646fc86f0d6d534465f3a290062578473..63baa06c7e5eb79b6dee4ef0c08b1b3b5b988d04 100644
--- a/src/mesonh/turb/shallow_mf.f90
+++ b/src/mesonh/turb/shallow_mf.f90
@@ -3,103 +3,6 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!     ######spl
-     MODULE MODI_SHALLOW_MF
-!    ######################
-!
-INTERFACE
-!     #################################################################
-      SUBROUTINE SHALLOW_MF(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
-                HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,            &
-                ONOMIXLG,KSV_LGBEG,KSV_LGEND,                         &
-                PIMPL_MF, PTSTEP,                                     &
-                PDZZ, PZZ,                                            &
-                PRHODJ, PRHODREF,                                     &
-                PPABSM, PEXNM,                                        &
-                PSFTH,PSFRV,                                          &
-                PTHM,PRM,PUM,PVM,PTKEM,PSVM,                      &
-                PDUDT_MF,PDVDT_MF,                                    &
-                PDTHLDT_MF,PDRTDT_MF,PDSVDT_MF,                       &
-                PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF,               &
-                PFLXZTHMF,PFLXZRMF,PFLXZUMF,PFLXZVMF,                 &
-                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                             )
-!     #################################################################
-!!
-!               
-!*               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
-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.
-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
-                                                     ! scheme
-CHARACTER(len=1),       INTENT(IN)   :: HFRAC_ICE    ! partition liquid/ice scheme
-LOGICAL,                INTENT(IN)   :: OMIXUV    ! True if mixing of momentum
-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(:,:),   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
-                                                     ! reference state
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PPABSM      ! Pressure at time t-1
-REAL, DIMENSION(:,:),   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(:,:,:), 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(:,:),   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,                 INTENT(IN)  :: PDX, PDY
-END SUBROUTINE SHALLOW_MF
-
-END INTERFACE
-!
-END MODULE MODI_SHALLOW_MF
 !     ################################################################
       SUBROUTINE SHALLOW_MF(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
                 HMF_UPDRAFT, HMF_CLOUD, HFRAC_ICE, OMIXUV,            &
@@ -157,6 +60,7 @@ END MODULE MODI_SHALLOW_MF
 !!      R.Honnert 07/2012 : MF gray zone 
 !!      R.Honnert 10/2016 : SURF=gray zone initilisation + EDKF  
 !!      R.Honnert 10/2016 : Update with Arome
+!!      S. Riette Nov 2016: HFRAC_ICE support
 !!      Philippe Wautelet 28/05/2018: corrected truncated integer division (2/3 -> 2./3.)
 !!      Q.Rodier  01/2019 : support RM17 mixing length
 !!      R.Honnert 1/2019  : remove SURF 
@@ -170,22 +74,17 @@ END MODULE MODI_SHALLOW_MF
 USE MODD_CST
 USE MODD_PARAMETERS, ONLY: JPVEXT
 USE MODD_PARAM_MFSHALL_n
-USE MODD_TURB_n, ONLY: CTURBLEN
 
 USE MODE_THL_RT_FROM_TH_R_MF
-USE MODE_COMPUTE_UPDRAFT
-USE MODE_COMPUTE_UPDRAFT_RHCJ10
+USE MODE_COMPUTE_UPDRAFT, ONLY: COMPUTE_UPDRAFT
+USE MODE_COMPUTE_UPDRAFT_RHCJ10, ONLY: COMPUTE_UPDRAFT_RHCJ10
 USE MODE_COMPUTE_UPDRAFT_RAHA, ONLY: COMPUTE_UPDRAFT_RAHA
 USE MODE_MF_TURB, ONLY: MF_TURB
 USE MODE_MF_TURB_EXPL, ONLY: MF_TURB_EXPL
-USE MODI_MF_TURB_GREYZONE
 USE MODE_COMPUTE_MF_CLOUD, ONLY: COMPUTE_MF_CLOUD
-USE MODI_SHUMAN_MF
-!
-USE MODE_COMPUTE_BL89_ML
-USE MODD_GRID_n, ONLY : XDXHAT, XDYHAT
-USE MODD_REF_n, ONLY : XTHVREF
-USE MODE_MSG
+USE MODE_MSG, ONLY: PRINT_MSG, NVERB_FATAL
+USE PARKIND1, ONLY : JPRB
+USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !
 IMPLICIT NONE
 
@@ -199,11 +98,11 @@ INTEGER,                INTENT(IN)   :: KKL          ! +1 if grid goes from grou
 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.
-CHARACTER (LEN=4),      INTENT(IN)   :: HMF_UPDRAFT  ! Type of Mass Flux Scheme
+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
+CHARACTER(LEN=4),       INTENT(IN)   :: HMF_CLOUD    ! Type of statistical cloud
                                                      ! scheme
-CHARACTER(len=1),       INTENT(IN)   :: HFRAC_ICE    ! partition liquid/ice scheme
+CHARACTER(LEN=1),       INTENT(IN)   :: HFRAC_ICE    ! partition liquid/ice scheme
 LOGICAL,                INTENT(IN)   :: OMIXUV    ! True if mixing of momentum
 LOGICAL,                INTENT(IN)   :: ONOMIXLG  ! False if mixing of lagrangian tracer
 INTEGER,                INTENT(IN)   :: KSV_LGBEG ! first index of lag. tracer
@@ -267,27 +166,21 @@ REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZFRAC_ICE
 
 REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3)) ::  &
                                           ZSV_UP,&  ! updraft scalar var.
-                                          ZSV_DO,&  ! 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(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZSHEAR,ZDUDZ,ZDVDZ !vertical wind shear
 
 LOGICAL :: GENTR_DETR  ! flag to recompute entrainment, detrainment and mass flux
 INTEGER :: IKB         ! near ground physical index
 INTEGER :: IKE         ! uppest atmosphere physical index
-! pour bouttle et al.
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) ::  ZG_O_THVREF,PTHVREF  
-REAL, DIMENSION(SIZE(PTHM,1)) ::  ZRESOL_NORM, ZRESOL_GRID,& ! normalized grid
-                                  ZLUP, ZPLAW
-! Test if the ascent continue, if LCL or ETL is reached
-LOGICAL                          ::  GLMIX 
-INTEGER :: JI,JJ,JK         ! loop counter
 INTEGER, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: IERR
+!
+REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !------------------------------------------------------------------------
 
 !!! 1. Initialisation
+IF (LHOOK) CALL DR_HOOK('SHALLOW_MF',0,ZHOOK_HANDLE)
 
 ! vertical boundaries
 IKB=KKA+KKL*JPVEXT
@@ -365,7 +258,7 @@ ELSEIF (HMF_UPDRAFT == 'RAHA') THEN
 ELSEIF (HMF_UPDRAFT == 'DUAL') THEN
   !Updraft characteristics are already computed and received by interface
 ELSE
-  call Print_msg( NVERB_FATAL, 'GEN', 'SHALLOW_MF', 'no updraft model for EDKF: CMF_UPDRAFT='//trim(HMF_UPDRAFT) )
+  CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'SHALLOW_MF', 'no updraft model for EDKF: CMF_UPDRAFT='//TRIM(HMF_UPDRAFT) )
 ENDIF
 
 !!! 5. Compute diagnostic convective cloud fraction and content
@@ -387,30 +280,27 @@ CALL COMPUTE_MF_CLOUD(KKA,IKB,IKE,KKU,KKL,KRR,KRRL,KRRI,&
 !!!    ------------------------------------------------------------------------
 !
 ZEMF_O_RHODREF=PEMF/PRHODREF
-IF(HMF_UPDRAFT == 'EDKF' .OR. HMF_UPDRAFT == 'RHCJ') THEN
-   IF ( PIMPL_MF > 1.E-10 ) THEN  
-       CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV,                     &
-                ONOMIXLG,KSV_LGBEG,KSV_LGEND,                            &
-                PIMPL_MF, PTSTEP,                                        &
-                PDZZ,                                                    &
-                PRHODJ,                                                  &
-                ZTHLM,ZTHVM,ZRTM,PUM,PVM,PSVM,                           &
-                PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF,PDSVDT_MF,        &
-                ZEMF_O_RHODREF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,ZSV_UP,&
-                PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF,         &
-                ZFLXZSVMF                                                )
-  ELSE
-      CALL MF_TURB_EXPL(KKA, IKB, IKE, KKU, KKL, OMIXUV,                 &
-           PRHODJ,                                                       &
-           ZTHLM,ZTHVM,ZRTM,PUM,PVM,                                     &
-           PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF,                       &
-           ZEMF_O_RHODREF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,            &
-           PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF)
-  ENDIF
+
+IF ( PIMPL_MF > 1.E-10 ) THEN  
+  CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV,                     &
+             ONOMIXLG,KSV_LGBEG,KSV_LGEND,                            &
+             PIMPL_MF, PTSTEP,                                        &
+             PDZZ,                                                    &
+             PRHODJ,                                                  &
+             ZTHLM,ZTHVM,ZRTM,PUM,PVM,PSVM,                           &
+             PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF,PDSVDT_MF,        &
+             ZEMF_O_RHODREF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,ZSV_UP,&
+             PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF,         &
+             ZFLXZSVMF                                                )
 ELSE
-  call Print_msg( NVERB_FATAL, 'GEN', 'SHALLOW_MF', 'no updraft model for EDKF: CMF_UPDRAFT='//trim(HMF_UPDRAFT) )
-END IF
-  
+  CALL MF_TURB_EXPL(KKA, IKB, IKE, KKU, KKL, OMIXUV,                 &
+         PRHODJ,                                                       &
+         ZTHLM,ZTHVM,ZRTM,PUM,PVM,                                     &
+         PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF,                       &
+         ZEMF_O_RHODREF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,            &
+         PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF)
+ENDIF
+
 ! security in the case HMF_UPDRAFT = 'DUAL'
 ! to be modified if 'DUAL' is evolving (momentum mixing for example)
 IF( HMF_UPDRAFT == 'DUAL') THEN
@@ -421,6 +311,7 @@ IF( HMF_UPDRAFT == 'DUAL') THEN
 !  PDVDT_MF=0.
 ENDIF
 !
+IF (LHOOK) CALL DR_HOOK('SHALLOW_MF',1,ZHOOK_HANDLE)
 CONTAINS
 INCLUDE "compute_frac_ice.func.h"
 !