diff --git a/src/MNH/bl89.f90 b/src/MNH/bl89.f90
index bb81821ef0dbb6c51471c03d40d0d55d6c4477bc..6835f449241cc58aed7328184012f2d70bd5036c 100644
--- a/src/MNH/bl89.f90
+++ b/src/MNH/bl89.f90
@@ -71,6 +71,7 @@ END MODULE MODI_BL89
 !!                  2012-02 (Y. Seity) add possibility to run with 
 !!                            reversed vertical levels
 !!  Philippe 13/02/2018: use ifdef MNH_REAL to prevent problems with intrinsics on Blue Gene/Q
+!!                  01/2019 (Q. Rodier) support for RM17 mixing length
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -223,12 +224,12 @@ ZHLVPT(:,KKA)    =         ZVPT(:,KKA)
 !
 !*       3.  loop on model levels
 !            --------------------
-!
 DO JK=IKTB,IKTE
 !
 !-------------------------------------------------------------------------------
 !
 !
+
 !*       4.  mixing length for a downwards displacement
 !            ------------------------------------------
   ZINTE(:)=ZTKEM(:,JK)
diff --git a/src/MNH/compute_bl89_ml.f90 b/src/MNH/compute_bl89_ml.f90
index 4c5124602b87fefe4ceddf7175abe469eeef5647..ac8986c3df7b608442bd86a414a8496e3c99e9f1 100644
--- a/src/MNH/compute_bl89_ml.f90
+++ b/src/MNH/compute_bl89_ml.f90
@@ -10,7 +10,7 @@ INTERFACE
 
 !     ###################################################################
       SUBROUTINE COMPUTE_BL89_ML(KKA,KKB,KKE,KKU,KKL,PDZZ2D, &
-             PTKEM_DEP,PG_O_THVREF,PVPT,KK,OUPORDN,OFLUX,PLWORK)
+             PTKEM_DEP,PG_O_THVREF,PVPT,KK,OUPORDN,OFLUX,PSHEAR,PLWORK)
 !     ###################################################################
 
 !*               1.1  Declaration of Arguments
@@ -29,6 +29,7 @@ LOGICAL,                INTENT(IN)  :: OUPORDN       ! switch to compute upward
                                                      !   downward (false) mixing length
 LOGICAL,                INTENT(IN)  :: OFLUX         ! Computation must be done from flux level
 REAL, DIMENSION(:),     INTENT(OUT) :: PLWORK        ! Resulting mixing length
+REAL, DIMENSION(:,:),   INTENT(IN)  :: PSHEAR        ! vertical wind shear for RM17 mixing length
 
 END SUBROUTINE COMPUTE_BL89_ML
 
@@ -37,7 +38,7 @@ END INTERFACE
 END MODULE MODI_COMPUTE_BL89_ML
 !     ######spl
       SUBROUTINE COMPUTE_BL89_ML(KKA,KKB,KKE,KKU,KKL,PDZZ2D, &
-             PTKEM_DEP,PG_O_THVREF,PVPT,KK,OUPORDN,OFLUX,PLWORK)
+             PTKEM_DEP,PG_O_THVREF,PVPT,KK,OUPORDN,OFLUX,PSHEAR,PLWORK)
 
 !     ###################################################################
 !!
@@ -53,6 +54,7 @@ END MODULE MODI_COMPUTE_BL89_ML
 !!     Original   19/01/06
 !!     S. Riette Jan 2012: support for both order of vertical levels and cleaning
 !!     R.Honnert Oct 2016 : Update with AROME
+!!     Q.Rodier  01/2019 : support RM17 mixing length as in bl89.f90 
 !!
 !-------------------------------------------------------------------------------
 !
@@ -92,6 +94,7 @@ LOGICAL,                INTENT(IN)  :: OUPORDN       ! switch to compute upward
                                                      !   downward (false) mixing length
 LOGICAL,                INTENT(IN)  :: OFLUX         ! Computation must be done from flux level
 REAL, DIMENSION(:),     INTENT(OUT) :: PLWORK        ! Resulting mixing length
+REAL, DIMENSION(:,:),   INTENT(IN)  :: PSHEAR        ! vertical wind shear for RM17 mixing length
 
 !          0.2 Local variable
 !
@@ -144,21 +147,24 @@ IF (OUPORDN.EQV..TRUE.) THEN
      ZTEST0=0.5+SIGN(0.5,ZINTE(J1D)) ! test if there's energy to consume
      ! Energy consumed if parcel cross the entire layer
      ZPOTE(J1D) = ZTEST0*(PG_O_THVREF(J1D)      *      &
-         (0.5*(ZHLVPT(J1D,KK)+ PVPT(J1D,KK)) - ZVPT_DEP(J1D)))  * &
+         (0.5*(ZHLVPT(J1D,KK)+ PVPT(J1D,KK)) - ZVPT_DEP(J1D)) + &
+         XRM17*PSHEAR(J1D,KK)*SQRT(ABS(PTKEM_DEP(J1D))))  * &
          PDZZ2D(J1D,KK)*0.5
      ! Test if it rests some energy to consume
      ZTEST =0.5+SIGN(0.5,ZINTE(J1D)-ZPOTE(J1D))
      ! Length travelled by parcel if it rests energy to consume
      ZLWORK1(J1D)=PDZZ2D(J1D,KK)*0.5
      ! Lenght travelled by parcel to nullify energy
-     ZLWORK2(J1D)=        ( - PG_O_THVREF(J1D) *                     &
+      ZLWORK2(J1D)=        ( - PG_O_THVREF(J1D) *                     &
             (  ZHLVPT(J1D,KK) - ZVPT_DEP(J1D) )                              &
+            - XRM17*PSHEAR(J1D,JKK)*sqrt(abs(PTKEM_DEP(J1D))) &
           + SQRT (ABS(                                                       &
-            ( PG_O_THVREF(J1D) * (ZHLVPT(J1D,KK) - ZVPT_DEP(J1D)) )**2  &
+            (XRM17*PSHEAR(J1D,JKK)*sqrt(abs(PTKEM_DEP(J1D))) +  &
+             PG_O_THVREF(J1D) * (ZHLVPT(J1D,KK) - ZVPT_DEP(J1D)) )**2  &
             + 2. * ZINTE(J1D) * PG_O_THVREF(J1D)                        &
                  * ZDELTVPT(J1D,KK) / PDZZ2D(J1D,KK) ))    ) /             &
-        ( PG_O_THVREF(J1D) * ZDELTVPT(J1D,KK) / PDZZ2D(J1D,KK) ) 
-      ! Effective length travelled by parcel
+        ( PG_O_THVREF(J1D) * ZDELTVPT(J1D,KK) / PDZZ2D(J1D,KK) )  
+     ! Effective length travelled by parcel
       PLWORK(J1D)=PLWORK(J1D)+ZTEST0*(ZTEST*ZLWORK1(J1D)+  &
                                     (1-ZTEST)*ZLWORK2(J1D))
       ! Rest of energy to consume
@@ -174,19 +180,22 @@ IF (OUPORDN.EQV..TRUE.) THEN
       DO J1D=1,IIJU
         ZTEST0=0.5+SIGN(0.5,ZINTE(J1D))
         ZPOTE(J1D) = ZTEST0*(PG_O_THVREF(J1D)      *      &
-            (ZHLVPT(J1D,JKK) - ZVPT_DEP(J1D)))  * PDZZ2D(J1D,JKK) !particle keeps its temperature
+            (ZHLVPT(J1D,JKK) - ZVPT_DEP(J1D))   &
+           + XRM17*PSHEAR(J1D,JKK)*SQRT(ABS(PTKEM_DEP(J1D))))* PDZZ2D(J1D,JKK) 
         ZTEST =0.5+SIGN(0.5,ZINTE(J1D)-ZPOTE(J1D))
         ZTESTM=ZTESTM+ZTEST0
         ZLWORK1(J1D)=PDZZ2D(J1D,JKK)
         !ZLWORK2 jump of the last reached level
         ZLWORK2(J1D)=        ( - PG_O_THVREF(J1D) *                     &
             (  PVPT(J1D,JKK-KKL) - ZVPT_DEP(J1D) )                              &
-          + SQRT (ABS(                                                       &
-            ( PG_O_THVREF(J1D) * (PVPT(J1D,JKK-KKL) - ZVPT_DEP(J1D)) )**2  &
+            - XRM17*PSHEAR(J1D,JKK)*sqrt(abs(PTKEM_DEP(J1D))) &
+          + SQRT (ABS(                                                   &
+            (XRM17*PSHEAR(J1D,JKK)*sqrt(abs(PTKEM_DEP(J1D))) +  &
+             PG_O_THVREF(J1D) * (PVPT(J1D,JKK-KKL) - ZVPT_DEP(J1D)) )**2  &
             + 2. * ZINTE(J1D) * PG_O_THVREF(J1D)                        &
                  * ZDELTVPT(J1D,JKK) / PDZZ2D(J1D,JKK) ))    ) /             &
         ( PG_O_THVREF(J1D) * ZDELTVPT(J1D,JKK) / PDZZ2D(J1D,JKK) ) 
-      !
+!
         PLWORK(J1D)=PLWORK(J1D)+ZTEST0*(ZTEST*ZLWORK1(J1D)+  &
                                     (1-ZTEST)*ZLWORK2(J1D))
         ZINTE(J1D) = ZINTE(J1D) - ZPOTE(J1D)
@@ -214,19 +223,22 @@ IF (OUPORDN.EQV..FALSE.) THEN
       ZTESTM=0
       DO J1D=1,IIJU
         ZTEST0=0.5+SIGN(0.5,ZINTE(J1D))
-        ZPOTE(J1D) = -ZTEST0*(PG_O_THVREF(J1D)      *      &
-            (ZHLVPT(J1D,JKK) - PVPT(J1D,KK)))  * PDZZ2D(J1D,JKK) !particle keeps its temperature
+         ZPOTE(J1D) = ZTEST0*(-PG_O_THVREF(J1D)      *      &
+            (ZHLVPT(J1D,JKK) - PVPT(J1D,KK)) &
+         + XRM17*PSHEAR(J1D,JKK)*SQRT(ABS(PTKEM_DEP(J1D))))* PDZZ2D(J1D,JKK) 
         ZTEST =0.5+SIGN(0.5,ZINTE(J1D)-ZPOTE(J1D))
         ZTESTM=ZTESTM+ZTEST0
         ZLWORK1(J1D)=PDZZ2D(J1D,JKK)
-        ZLWORK2(J1D)=        ( + PG_O_THVREF(J1D) *                     &
+      ZLWORK2(J1D)=        ( + PG_O_THVREF(J1D) *                     &
             (  PVPT(J1D,JKK) - PVPT(J1D,KK) )                              &
+             -XRM17*PSHEAR(J1D,JKK)*sqrt(abs(PTKEM_DEP(J1D))) &
           + SQRT (ABS(                                                       &
-            ( PG_O_THVREF(J1D) * (PVPT(J1D,JKK) - PVPT(J1D,KK)) )**2  &
+            (XRM17*PSHEAR(J1D,JKK)*sqrt(abs(PTKEM_DEP(J1D))) - &
+             PG_O_THVREF(J1D) * (PVPT(J1D,JKK) - PVPT(J1D,KK)) )**2  &
             + 2. * ZINTE(J1D) * PG_O_THVREF(J1D)                        &
                  * ZDELTVPT(J1D,JKK) / PDZZ2D(J1D,JKK) ))    ) /             &
         ( PG_O_THVREF(J1D) * ZDELTVPT(J1D,JKK) / PDZZ2D(J1D,JKK) ) 
-      !
+!
         PLWORK(J1D)=PLWORK(J1D)+ZTEST0*(ZTEST*ZLWORK1(J1D)+  &
                                     (1-ZTEST)*ZLWORK2(J1D)) 
         ZINTE(J1D) = ZINTE(J1D) - ZPOTE(J1D)
@@ -234,5 +246,5 @@ IF (OUPORDN.EQV..FALSE.) THEN
     ENDIF
   END DO 
 ENDIF
-  
+ 
 END SUBROUTINE COMPUTE_BL89_ML
diff --git a/src/MNH/compute_updraft.f90 b/src/MNH/compute_updraft.f90
index e4165877555f575709ee19b94dc96dd1e43ee46a..ba78d05a1fdaec9883a5eb1685fcdd3935d4c3cd 100644
--- a/src/MNH/compute_updraft.f90
+++ b/src/MNH/compute_updraft.f90
@@ -134,6 +134,7 @@ END MODULE MODI_COMPUTE_UPDRAFT
 !!     V.Masson, C.Lac : 02/2011 : SV_UP initialized by a non-zero value
 !!     S. Riette Apr 2013: improvement of continuity at the condensation level
 !!     R.Honnert Oct 2016 : Add ZSURF and Update with AROME
+!!     Q.Rodier  01/2019 : support RM17 mixing length 
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -141,6 +142,7 @@ END MODULE MODI_COMPUTE_UPDRAFT
 !
 USE MODD_CST
 USE MODD_PARAM_MFSHALL_n
+USE MODD_TURB_n, ONLY : CTURBLEN
 
 USE MODI_COMPUTE_ENTR_DETR
 USE MODI_TH_R_FROM_THL_RT_1D
@@ -258,7 +260,7 @@ REAL  :: ZDEPTH_MAX1, ZDEPTH_MAX2 ! control auto-extinction process
 REAL  :: ZTMAX,ZRMAX  ! control value
 
 REAL, DIMENSION(SIZE(PTHM,1)) :: ZSURF
-
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZSHEAR,ZDUDZ,ZDVDZ ! vertical wind shear
 ! Thresholds for the  perturbation of
 ! theta_l and r_t at the first level of the updraft
 ZTMAX=2.0
@@ -377,8 +379,16 @@ IF (OENTR_DETR) THEN
   ! compute L_up
   GLMIX=.TRUE.
   ZTKEM_F(:,KKB)=0.
-
-  CALL COMPUTE_BL89_ML(KKA,KKB,KKE,KKU,KKL,PDZZ,ZTKEM_F(:,KKB),ZG_O_THVREF(:,KKB),ZTHVM,KKB,GLMIX,.FALSE.,ZLUP)
+  !
+  IF(CTURBLEN=='RM17') THEN
+    ZDUDZ = MZF_MF(KKA,KKU,KKL,GZ_M_W_MF(KKA,KKU,KKL,PUM,PDZZ))
+    ZDVDZ = MZF_MF(KKA,KKU,KKL,GZ_M_W_MF(KKA,KKU,KKL,PVM,PDZZ))
+    ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ)
+  ELSE
+    ZSHEAR = 0. !no shear in bl89 mixing length
+  END IF
+ ! 
+  CALL COMPUTE_BL89_ML(KKA,KKB,KKE,KKU,KKL,PDZZ,ZTKEM_F(:,KKB),ZG_O_THVREF(:,KKB),ZTHVM,KKB,GLMIX,.FALSE.,ZSHEAR,ZLUP)
   ZLUP(:)=MAX(ZLUP(:),1.E-10)
 
   ! Compute Buoyancy flux at the ground
diff --git a/src/MNH/compute_updraft_hrio.f90 b/src/MNH/compute_updraft_hrio.f90
index 3466441418fdbdd0b983c56abc4b5e807aba9549..6ec162b20d6bd4c14587325a2e5e4c266ca4dc19 100644
--- a/src/MNH/compute_updraft_hrio.f90
+++ b/src/MNH/compute_updraft_hrio.f90
@@ -134,6 +134,7 @@ END MODULE MODI_COMPUTE_UPDRAFT_HRIO!     ######spl
 !!     S. Riette may 2011: ice added, interface modified
 !!     S. Riette Jan 2012: support for both order of vertical levels
 !!     V.Masson, C.Lac : 02/2011 : SV_UP initialized by a non-zero value
+!!     Q.Rodier  01/2019 : support RM17 mixing length 
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -147,6 +148,7 @@ USE MODD_PARAM_MFSHALL_n, ONLY : XPRES_UV,XALP_PERT,XCMF,XFRAC_UP_MAX,XA1,XB,&
 !                          XC,XBETA1
 USE MODD_GRID_n, ONLY : XDXHAT, XDYHAT
 USE MODD_BLANK
+USE MODD_TURB_n, ONLY :CTURBLEN
 
 !USE MODI_COMPUTE_ENTR_DETR
 USE MODI_TH_R_FROM_THL_RT_1D
@@ -275,6 +277,7 @@ REAL  :: XFRAC_LIM ! surface maximale du thermique
 
 REAL  :: ZTMAX,ZRMAX, ZEPS  ! control value
 
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZSHEAR,ZDUDZ,ZDVDZ ! vertical wind shear
 ! pour le calcul de la resolution normalisée
 REAL, DIMENSION(SIZE(PTHM,1))              ::  ZA1, ZRESOL_NORM 
 REAL :: ZRESOL_GRID   
@@ -446,9 +449,15 @@ IF (OENTR_DETR) THEN
   ! compute L_up
   GLMIX=.TRUE.
   ZTKEM_F(:,KKB)=0.
-
+  IF(CTURBLEN=='RM17') THEN
+    ZDUDZ = MZF_MF(KKA,KKU,KKL,GZ_M_W_MF(KKA,KKU,KKL,PUM,PDZZ))
+    ZDVDZ = MZF_MF(KKA,KKU,KKL,GZ_M_W_MF(KKA,KKU,KKL,PVM,PDZZ))
+    ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ)
+  ELSE
+    ZSHEAR = 0. !no shear in bl89 mixing length
+  END IF  
   CALL COMPUTE_BL89_ML(KKA,KKB,KKE,KKU,KKL,PDZZ,ZTKEM_F(:,KKB),ZG_O_THVREF(:,KKB), &
-                       ZTHVM_F,KKB,GLMIX,.TRUE.,ZLUP)
+                       ZTHVM_F,KKB,GLMIX,.TRUE.,ZSHEAR,ZLUP)
   ZLUP(:)=MAX(ZLUP(:),1.E-10)
 
   ! Compute Buoyancy flux at the ground
diff --git a/src/MNH/compute_updraft_rhcj10.f90 b/src/MNH/compute_updraft_rhcj10.f90
index f062dcf0ad9d0d6738b16c9fcf1364bb6d2165e1..554dc54f9d8f56fab536ff264a5a989b1d983f23 100644
--- a/src/MNH/compute_updraft_rhcj10.f90
+++ b/src/MNH/compute_updraft_rhcj10.f90
@@ -124,6 +124,7 @@ SUBROUTINE COMPUTE_UPDRAFT_RHCJ10(KKA,KKB,KKE,KKU,KKL,HFRAC_ICE,       &
 !!     ------
 !!     Y. Bouteloup (2012)
 !!     R. Honert Janv 2013 ==> corection of some bugs
+!!     Q.Rodier  01/2019 : support RM17 mixing length 
 !! --------------------------------------------------------------------------
 
 ! WARNING ==>  This updraft is not yet ready to use scalar variables 
@@ -133,7 +134,7 @@ SUBROUTINE COMPUTE_UPDRAFT_RHCJ10(KKA,KKB,KKE,KKU,KKL,HFRAC_ICE,       &
 
 USE MODD_CST
 USE MODD_PARAM_MFSHALL_n
-
+USE MODD_TURB_n, ONLY : CTURBLEN
 USE MODI_COMPUTE_ENTR_DETR
 USE MODI_TH_R_FROM_THL_RT_1D
 USE MODI_SHUMAN_MF
@@ -252,6 +253,7 @@ REAL  :: ZDEPTH_MAX1, ZDEPTH_MAX2 ! control auto-extinction process
 
 REAL  :: ZTMAX,ZRMAX, ZEPS  ! control value
 
+REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2)) :: ZSHEAR,ZDUDZ,ZDVDZ ! vertical wind shear
 
 ! Thresholds for the  perturbation of
 ! theta_l and r_t at the first level of the updraft
@@ -389,9 +391,17 @@ ENDDO
 ! compute L_up
 GLMIX=.TRUE.
 ZTKEM_F(:,KKB)=0.
-
+!
+IF(CTURBLEN=='RM17') THEN
+  ZDUDZ = MZF_MF(KKA,KKU,KKL,GZ_M_W_MF(KKA,KKU,KKL,PUM,PDZZ))
+  ZDVDZ = MZF_MF(KKA,KKU,KKL,GZ_M_W_MF(KKA,KKU,KKL,PVM,PDZZ))
+  ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ)
+ELSE
+  ZSHEAR = 0. !no shear in bl89 mixing length
+END IF
+!
 CALL COMPUTE_BL89_ML(KKA,KKB,KKE,KKU,KKL,PDZZ,ZTKEM_F(:,KKB),ZG_O_THVREF(:,KKB), &
-                       ZTHVM_F,KKB,GLMIX,.TRUE.,ZLUP)
+                       ZTHVM_F,KKB,GLMIX,.TRUE.,ZSHEAR,ZLUP)
 ZLUP(:)=MAX(ZLUP(:),1.E-10)
 
 ! Compute Buoyancy flux at the ground
diff --git a/src/MNH/ini_cturb.f90 b/src/MNH/ini_cturb.f90
index 3e7bc3275572eb591a2459ed12471bffb4824d30..090f8ad30de5e7f751e058004b61a318196f9882 100644
--- a/src/MNH/ini_cturb.f90
+++ b/src/MNH/ini_cturb.f90
@@ -63,6 +63,7 @@ END MODULE MODI_INI_CTURB
 !!        P.Jabouille       20/10/99   XCET=0.4
 !!        V.Masson          13/11/02   XALPSBL and XASBL
 !!                             05/06   Remove KEPS
+!!        Q.Rodier             01/19   XCED replaced by XCEDIS in read_exsegn.f90 and ini_modeln.f90
 !! --------------------------------------------------------------------------
 !
 !*        0. DECLARATIONS
@@ -80,8 +81,10 @@ IMPLICIT NONE
 !
 !         1.1 Constant for dissipation of Tke
 !
+!XCED is now replaced by XCEDIS
 !XCED  = 0.70
-XCED  = 0.84
+!XCED  = 0.84
+!
 !       Redelsperger-Sommeria (1981) = 0.70
 !       Schmidt-Schumann      (1989) = 0.845
 !       Cheng-Canuto-Howard   (2002) = 0.845
diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index 28c1e5457fce7826746d6649105bd9a79d5ed8d0..b3340610750f787598f88977e6bf9102d8d50935 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -288,6 +288,7 @@ END MODULE MODI_READ_EXSEG_n
 !!      Q.Libois       02/2018  ECRAD
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!      Modification   07/2017   (V. Vionnet) add blowing snow scheme
+!!      Modification   01/2019   (Q. Rodier) define XCEDIS depending on BL89 or RM17 mixing length
 !!------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1414,7 +1415,12 @@ ELSE
     CGETCLDFR = 'SKIP'
   END IF
 END IF
-
+!
+IF(CTURBLEN=='RM17') THEN
+  XCEDIS=0.34
+ELSE
+  XCEDIS=0.84
+END IF
 !
 !*       3.3  Moist turbulence
 !
diff --git a/src/MNH/shallow_mf.f90 b/src/MNH/shallow_mf.f90
index 049954b62490fd8a03da54a5359775ba9bd1aa32..2a9e824398bd70a650f87ba4d41237ee0642ff54 100644
--- a/src/MNH/shallow_mf.f90
+++ b/src/MNH/shallow_mf.f90
@@ -165,6 +165,7 @@ END MODULE MODI_SHALLOW_MF
 !!      R.Honnert 10/2016 : SURF=gray zone initilisation + EDKF  
 !!      R.Honnert 10/2016 : Update with Arome
 !!      Philippe Wautelet 28/05/2018: corrected truncated integer division (2/3 -> 2./3.)
+!!      Q.Rodier  01/2019 : support RM17 mixing length 
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -173,6 +174,7 @@ 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 MODI_THL_RT_FROM_TH_R_MF
 USE MODI_COMPUTE_UPDRAFT
@@ -184,7 +186,7 @@ USE MODI_MF_TURB_EXPL
 USE MODI_MF_TURB_GREYZONE
 USE MODI_COMPUTE_MF_CLOUD
 USE MODI_COMPUTE_FRAC_ICE
-!
+USE MODI_SHUMAN_MF
 !
 USE MODI_COMPUTE_BL89_ML
 USE MODD_GRID_n, ONLY : XDXHAT, XDYHAT
@@ -282,6 +284,7 @@ REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3)) ::  &
 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
@@ -460,7 +463,14 @@ ENDIF
       ENDDO
       ZG_O_THVREF=XG/PTHVREF
       GLMIX=.TRUE.
-      CALL COMPUTE_BL89_ML(KKA,IKB,IKE,KKU,KKL,PDZZ,PTKEM(:,IKB)  ,ZG_O_THVREF(:,IKB),ZTHVM,IKB,GLMIX,.TRUE.,ZLUP)
+      IF(CTURBLEN=='RM17') THEN
+       ZDUDZ = MZF_MF(KKA,KKU,KKL,GZ_M_W_MF(KKA,KKU,KKL,PUM,PDZZ))
+       ZDVDZ = MZF_MF(KKA,KKU,KKL,GZ_M_W_MF(KKA,KKU,KKL,PVM,PDZZ))
+       ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ)
+      ELSE
+       ZSHEAR = 0. !no shear in bl89 mixing length
+      END IF  
+      CALL COMPUTE_BL89_ML(KKA,IKB,IKE,KKU,KKL,PDZZ,PTKEM(:,IKB)  ,ZG_O_THVREF(:,IKB),ZTHVM,IKB,GLMIX,.TRUE.,ZSHEAR,ZLUP)
       !! calcul de Dx/(h+hc)
       DO JI=1,SIZE(XDXHAT)
        DO JJ=1,SIZE(XDYHAT)