diff --git a/src/MNH/condsamp.f90 b/src/MNH/condsamp.f90
index 21fa69ac29c0dcf18114c5395e196331e78bd789..7de29c11466164bcf28683e3c8c2491c37191913 100644
--- a/src/MNH/condsamp.f90
+++ b/src/MNH/condsamp.f90
@@ -52,6 +52,8 @@ END MODULE MODI_CONDSAMP
 !!
 !!    MODIFICATIONS
 !!    -------------
+!!      F.Brient                  * Tracer emission from the top
+!!                                   of the boundary-layer * 05/2019
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -61,12 +63,13 @@ END MODULE MODI_CONDSAMP
 USE MODD_PARAMETERS , ONLY : JPVEXT
 USE MODD_NSV        , ONLY : NSV_CSBEG, NSV_CSEND, NSV_CS
 USE MODD_CONF_n     , ONLY : LUSERC
-USE MODD_FIELD_n    , ONLY : XSVT, XRT,XRSVS
+USE MODD_FIELD_n    , ONLY : XSVT, XRT, XRSVS, XTHT
 USE MODD_GRID_n     , ONLY : XZHAT
 USE MODD_REF_n      , ONLY : XRHODJ
 USE MODD_DYN        , ONLY : XTSTEP_MODEL1
 USE MODD_CONDSAMP
 USE MODE_ll
+USE MODD_CST
 !
 !*      0. DECLARATIONS
 !          ------------
@@ -86,10 +89,16 @@ INTEGER, INTENT(IN)          :: KVERB      ! verbosity level
 
 INTEGER :: IIB,IIE,IJB,IJE, IKB, IKE
 INTEGER :: IIU, IJU, IKU                      ! dimensional indexes
-INTEGER :: JK,JSV,IBOT,ITOP ! Loop indice
+INTEGER :: JK,JSV,IBOT,ITOP,IEMIS ! Loop indice
+INTEGER :: INTOP,INBOT
+REAL    :: ZDT,ZMAXZDT,ZTHVMEAN,ZOFFSET !       For tracer emission
+INTEGER :: JRR
 INTEGER :: IINFO_ll       ! return code of parallel routine
 REAL, DIMENSION(SIZE(XRT,1),SIZE(XRT,2),SIZE(XRT,3)) :: ZRT
 REAL, DIMENSION(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),SIZE(XSVT,4)) :: ZSVT
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZSUM,ZTHV
+REAL, DIMENSION(:,:,:), ALLOCATABLE  :: ZLVOCPEXNM,ZLSOCPEXNM ! Lv/Cp/EXNREF and Ls/Cp/EXNREF at t-1
+
 !
 !--------------------------------------------------------------------------------------
 !
@@ -115,23 +124,76 @@ ZSVT(:,:,:,:) = XSVT(:,:,:,:)
 !
 IBOT=0
 ITOP=0
+ZMAXZDT=0.
+INTOP=0
+INBOT=0
 
-IF (( NSV_CS >= 2) .AND.LUSERC .AND.  MAX_ll(XRT(:,:,:,2),IINFO_ll) > 1.E-6 )  THEN
-   ! calcul de la base et du sommet des nuages
-   ! on ne considere que l'eau liquide car que pour nuages de couche limite
-   DO JK=1,IKE
-    ZRT(:,:,:) = SPREAD(XRT(:,:,JK,2),3,IKU)
-    IF ((MAX_ll(ZRT(:,:,:),IINFO_ll) > 1.E-6).AND.(IBOT == 0)) IBOT=JK
-    IF ( MAX_ll(ZRT(:,:,:),IINFO_ll) > 1.E-6) ITOP=JK
-   END DO
-   IF (KVERB >= 10) THEN
-    WRITE(KLUOUT,'(A)') ' '
-    WRITE(KLUOUT,'(A,F7.1)') 'Base nuage  : ',XZHAT(IBOT)
-    WRITE(KLUOUT,'(A,F7.1)') 'Sommet nuage: ',XZHAT(ITOP)
-    WRITE(KLUOUT,'(A,I3.1)') 'JK Base   : ',IBOT
-    WRITE(KLUOUT,'(A,I3.1)') 'JK Sommet : ',ITOP
-   END IF
-   !
+IF ( NSV_CS >= 2 ) THEN
+ IF ( NFINDTOP==0 .AND. LUSERC .AND.  MAX_ll(XRT(:,:,:,2),IINFO_ll) > 1.E-6 )  THEN
+  ! calcul de la base et du sommet des nuages
+  ! on ne considere que l'eau liquide car que pour nuages de couche limite
+  DO JK=1,IKE
+   ZRT(:,:,:) = SPREAD(XRT(:,:,JK,2),3,IKU)
+   IF ((MAX_ll(ZRT(:,:,:),IINFO_ll) > 1.E-6).AND.(IBOT == 0)) IBOT=JK
+   IF ( MAX_ll(ZRT(:,:,:),IINFO_ll) > 1.E-6) ITOP=JK
+  END DO
+  IF (KVERB >= 10) THEN
+   WRITE(KLUOUT,'(A)') ' '
+   WRITE(KLUOUT,'(A,F7.1)') 'Base nuage  : ',XZHAT(IBOT)
+   WRITE(KLUOUT,'(A,F7.1)') 'Sommet nuage: ',XZHAT(ITOP)
+   WRITE(KLUOUT,'(A,I3.1)') 'JK Base   : ',IBOT
+   WRITE(KLUOUT,'(A,I3.1)') 'JK Sommet : ',ITOP
+  END IF
+  !
+ ELSEIF ( NFINDTOP==2 ) THEN
+  !  Find the first layer z from the surface where
+  !  THV is larger is the average below z + ZTHV (0.25K by default)
+  ZTHVMEAN = 0
+  ZSUM(:,:,:) = 0.
+  ZOFFSET  = XTHVP 
+  JRR     = SIZE(XRT,4) 
+  DO JK=1,JRR
+   ZSUM(:,:,:) = ZSUM(:,:,:)+XRT(:,:,:,JRR)
+  ENDDO
+  DO JK=1,IKE
+    ZTHV(:,:,JK)=XTHT(:,:,JK) * ( 1. + XRV/XRD*XRT(:,:,JK,1) )  &
+                           / ( 1. + ZSUM(:,:,JK) )
+  END DO
+  ZTHVMEAN = SUM(ZTHV(:,:,2))/SIZE(ZTHV(:,:,2)) 
+  DO JK=3,IKE
+     IF (ITOP == 0) THEN
+      ZDT     =  SUM(ZTHV(:,:,JK))/SIZE(ZTHV(:,:,JK))   
+      ZTHVMEAN =   (1.0/XZHAT(JK+1))* & 
+                  (XZHAT(JK)*ZTHVMEAN + (XZHAT(JK+1)-XZHAT(JK))*ZDT)
+      IF (ZDT > ZTHVMEAN + ZOFFSET ) THEN
+        ITOP=JK
+      ENDIF
+    ENDIF
+  END DO
+  !
+ ELSE
+  ! BY DEFAULT IF NO CLOUDS
+  ! or only when NFINDTOP==1 
+  ! Identification of the layer where lies the stronger gradient
+  !  of potential temperature
+  !  (need to replace by liquid water potential temperature)
+  ! No clouds is defined as MAX_ll(XRT(:,:,:,2),IINFO_ll) < 1.E-6
+  !
+  DO JK=1,IKE
+    ! ZDT need to become positive at least once
+    ZDT = SUM((XTHT(:,:,JK+1)-XTHT(:,:,JK)))/SIZE(XTHT(:,:,JK))
+    ZDT = ZDT/(XZHAT(JK+1)-XZHAT(JK))
+    IF ( ZDT > ZMAXZDT ) THEN
+      ITOP=JK
+      ZMAXZDT=ZDT
+    END IF
+  END DO
+  IF (KVERB >= 10) THEN
+   WRITE(KLUOUT,'(A)') ' '
+   WRITE(KLUOUT,'(A,F7.1)') 'Sommet BL: ',XZHAT(ITOP)
+   WRITE(KLUOUT,'(A,I3.1)') 'JK Sommet BL : ',ITOP
+  END IF
+ END IF
 END IF
 
 DO JSV=NSV_CSBEG, NSV_CSEND
@@ -147,26 +209,43 @@ DO JSV=NSV_CSBEG, NSV_CSEND
     DO JK=1,IKE
      IF ((XZHAT(JK) > XZHAT(IBOT) - XHEIGHT_BASE - XDEPTH_BASE/2. ).AND. &
          (XZHAT(JK) < XZHAT(IBOT) - XHEIGHT_BASE + XDEPTH_BASE/2. )) THEN
+         INBOT = 1
          ZSVT(IIB:IIE,IJB:IJE,JK,JSV) =  &
            XSVT(IIB:IIE,IJB:IJE,JK,JSV)+1.  
      END IF
     END DO
- END IF    
-
+    IF (INBOT == 0) THEN
+      IEMIS = IBOT
+      IF (LTPLUS) THEN
+        IEMIS = IBOT - 1
+      END IF
+      ZSVT(IIB:IIE,IJB:IJE,IEMIS,JSV) = &
+        XSVT(IIB:IIE,IJB:IJE,IEMIS,JSV)+1.
+    END IF
+ END IF
+!    
  IF ((JSV == NSV_CSBEG + 2 ).AND.(ITOP > 2)) THEN
-    ! emission XHEIGHT_TOP(m) above the top on XDEPTH_TOP(m)
-    !
-    DO JK=1,IKE
-     IF ((XZHAT(JK) > XZHAT(ITOP) + XHEIGHT_TOP - XDEPTH_TOP/2. ).AND. &
-         (XZHAT(JK) < XZHAT(ITOP) + XHEIGHT_TOP + XDEPTH_TOP/2. )) THEN
-         ZSVT(IIB:IIE,IJB:IJE,JK,JSV) = &
-           XSVT(IIB:IIE,IJB:IJE,JK,JSV)+1. 
-     END IF
-    END DO
- END IF    !
+   ! emission XHEIGHT_TOP(m) above the top on XDEPTH_TOP(m)
+   !
+   DO JK=1,IKE
+    IF ((XZHAT(JK) > XZHAT(ITOP) + XHEIGHT_TOP - XDEPTH_TOP/2. ).AND. &
+        (XZHAT(JK) < XZHAT(ITOP) + XHEIGHT_TOP + XDEPTH_TOP/2. )) THEN
+        INTOP = 1
+        ZSVT(IIB:IIE,IJB:IJE,JK,JSV) = &
+          XSVT(IIB:IIE,IJB:IJE,JK,JSV)+1. 
+    END IF
+   END DO
+    IF (INTOP == 0) THEN
+      IEMIS = ITOP
+      IF (LTPLUS .AND.(ITOP < IKE)) THEN
+        IEMIS = ITOP + 1
+      END IF
+      ZSVT(IIB:IIE,IJB:IJE,IEMIS,JSV) = &
+        XSVT(IIB:IIE,IJB:IJE,IEMIS,JSV)+1.
+    END IF
+ END IF
 !
 END DO            
-         !
 !
 ! correction d'eventuelle concentration négative
 WHERE (ZSVT(:,:,:,NSV_CSBEG:NSV_CSEND) <0.0) &
diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 9c7cbcb5bc7fc9f526fb80dcdc91661a9bbe26ca..26d24db0e97d71b45f2bd9539ca23bfe86136846 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -228,6 +228,8 @@ END MODULE MODI_DEFAULT_DESFM_n
 !!                   07/2017 (V. Vionnet) add blowing snow variables
 !!                   01/2019 (R. Honnert) add reduction of the mass-flux surface closure with the resolution
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!!                   05/2019 F.Brient add tracer emission from the top of the boundary-layer
+!!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1417,6 +1419,9 @@ IF (KMI == 1) THEN
   XDEPTH_BASE  = 100.
   XHEIGHT_TOP  = 100.
   XDEPTH_TOP   = 100.
+  NFINDTOP     = 0
+  XTHVP        = 0.25
+  LTPLUS       = .TRUE.
 ENDIF  
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/modd_condsamp.f90 b/src/MNH/modd_condsamp.f90
index f9aa1bdde612c1fc4fbf86cab0f3465eda9eba2d..6da7a6969886a7531ce7ad322bdadef76b27470b 100644
--- a/src/MNH/modd_condsamp.f90
+++ b/src/MNH/modd_condsamp.f90
@@ -13,6 +13,10 @@
 !	           : C.Lac                               
 !	Creation   : 01/06/2011
 !
+!!    MODIFICATIONS
+!!    -------------
+!!      F.Brient                  * Tracer emission from the top
+!!                                   of the boundary-layer * 05/2019
 !-------------------------------------------------------------------------------
 !
 !
@@ -39,5 +43,16 @@ REAL                               :: XHEIGHT_TOP          ! Distance above the
                               !         cloud top  where the 3rd tracer is emitted
 REAL                               :: XDEPTH_TOP           ! Depth in which the
                               !         3rd tracer is emitted
+INTEGER                            :: NFINDTOP             ! Options for
+                              !         the method for identifying the altitude 
+                              !         where the 3rd tracer is emitted
+REAL                               :: XTHVP                ! Threshold for 
+                              !         identifying the PBL top based on virtual
+                              !         potential temperature (IF NFINDTOP==2)
+LOGICAL                            :: LTPLUS               ! Options for
+                              !         allowing an emission of tracers one layer
+                              !         below the cloud base and one level above
+                              !         the PBL top (when the layers of emission 
+                              !         are not detected)
 !
 END MODULE MODD_CONDSAMP
diff --git a/src/MNH/modn_condsamp.f90 b/src/MNH/modn_condsamp.f90
index f94d82719c9347331bfb677a77072617a167ec87..89b0b782ec45b8f1adc46ba326f55b887b8fdc3c 100644
--- a/src/MNH/modn_condsamp.f90
+++ b/src/MNH/modn_condsamp.f90
@@ -12,6 +12,11 @@
 !!    ------
 !	           : C.Lac                            
 !	Creation   : 05.06.2011
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      F.Brient                  * Tracer emission from the top
+!!                                   of the boundary-layer * 05/2019
 !-------------------------------------------------------------------------------
 !
 !
@@ -24,6 +29,6 @@ IMPLICIT NONE
 !
 NAMELIST /NAM_CONDSAMP/ &
      LCONDSAMP,NCONDSAMP,XRADIO,XSCAL,XHEIGHT_BASE,XDEPTH_BASE, &
-     XHEIGHT_TOP,XDEPTH_TOP
+     XHEIGHT_TOP,XDEPTH_TOP,NFINDTOP,XTHVP,LTPLUS
 !
 END MODULE MODN_CONDSAMP