diff --git a/bin/numabind_core_slurm b/bin/numabind_core_slurm
new file mode 100755
index 0000000000000000000000000000000000000000..f78124c9243ef034a2d4245d1c307fad59c2e987
--- /dev/null
+++ b/bin/numabind_core_slurm
@@ -0,0 +1,23 @@
+#!/bin/bash
+#NB_CORE=128
+Numactl='numactl'
+export IP=${SLURM_PROCID}
+
+if [ "x${IP}" != "x" ] 
+then
+export LIP=${SLURM_LOCALID}
+export NP=${SLURM_NTASKS}
+export NN=${SLURM_NNODES}
+export NPN=$(( NP / NN ))
+export NB_CORE=${SLURM_JOB_CPUS_PER_NODE/(*)/}
+export NPC=$(( NB_CORE / NPN ))
+CORE=$(( LIP * NPC ))
+#echo IP=${IP} LIP=${LIP} NP=${NP} NN=${NN} NPN=${NPN} NPC=${NPC} HOST=`hostname` NB_CORE=${NB_CORE} CORE=${CORE} 
+#
+# execution
+#
+exec ${Numactl} --physcpubind ${CORE} $*
+else
+exec ${Numactl} --physcpubind 0 $*
+fi
+
diff --git a/src/LIB/SURCOUCHE/src/mode_ga.f90 b/src/LIB/SURCOUCHE/src/mode_ga.f90
index 9a2d05b6d6fe372ce51c922e91b467e545ed0b0b..ea98b0eedf5fd44edf7545347799c28335388319 100644
--- a/src/LIB/SURCOUCHE/src/mode_ga.f90
+++ b/src/LIB/SURCOUCHE/src/mode_ga.f90
@@ -9,6 +9,7 @@
 !  J. Escobar  05/02/2015: use JPHEXT from MODD_PARAMETERS_ll
 !  P. Wautelet 14/12/2018: split from fmwrit_ll.f90
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  J. Escobar  11/02/2020: for GA, add some sync, & reduce size of MA heap <-> not used
 !-----------------------------------------------------------------
 #ifdef MNH_GA
 MODULE MODE_GA
@@ -20,11 +21,11 @@ MODULE MODE_GA
     INTEGER, PARAMETER                              :: jpix=1 , jpiy = 2 , jpiz = 3
     !
     INTEGER                                         :: NIMAX_ll,NJMAX_ll, IIU_ll,IJU_ll,IKU_ll
-    integer                                         :: heap=5*10**6, stack
+    integer                                         :: heap=1*10**5, stack
     logical                                         :: gstatus_ga
     INTEGER, PARAMETER                              :: ndim_GA = 3
     INTEGER, DIMENSION(ndim_GA)                     :: dims_GA , chunk_GA
-    INTEGER,PARAMETER                               :: CI=1 ,CJ=-1 ,CK=-1
+    INTEGER,PARAMETER                               :: CI= 1 ,CJ=-1 ,CK=-1
     INTEGER                                         :: g_a
     integer, DIMENSION(ndim_GA)                     :: lo_col, hi_col , ld_col
     integer, DIMENSION(ndim_GA)                     :: lo_zplan , hi_zplan , ld_zplan
@@ -68,6 +69,8 @@ MODULE MODE_GA
          call ga_initialize()
       END IF
 
+      call ga_sync()
+
       CALL GET_GLOBALDIMS_ll (NIMAX_ll,NJMAX_ll)
       IIU_ll = NIMAX_ll + 2*JPHEXT
       IJU_ll = NJMAX_ll + 2*JPHEXT
@@ -92,9 +95,11 @@ MODULE MODE_GA
          ! reallocate the g_a , if need with bigger Z size
          !
          IF ( IKU_ll_MAX .NE. -1 ) gstatus_ga =  ga_destroy(g_a)
+         call ga_sync()
          IIU_ll_MAX = IIU_ll
          IJU_ll_MAX = IJU_ll
          IKU_ll_MAX = IKU_ll
+         !print*,"MNH_INIT_GA::nga_create=",MT_F_DBL, ndim_GA, dims_GA, HRECFM ,chunk_GA, g_a ; call flush(6)
          gstatus_ga = nga_create(MT_F_DBL, ndim_GA, dims_GA, HRECFM ,chunk_GA, g_a)
          call ga_sync()
       END IF
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
index 8f717bce0cda430ec8cb752eab038973db07b230..340d0490e92bff0cdb65b636a931dbc1e65543f1 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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.
@@ -15,6 +15,7 @@
 !  P. Wautelet 12/04/2019: use MNHTIME for time measurement variables
 !  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !  P. Wautelet 25/06/2019: added IO_Field_read for 3D integer arrays (IO_Field_read_byname_N3 and IO_Field_read_byfield_N3)
+!  J. Escobar  11/02/2020: for GA & // IO, add update_halo + sync, & mpi_allreduce for error handling in // IO
 !-----------------------------------------------------------------
 
 MODULE MODE_IO_FIELD_READ
@@ -338,6 +339,11 @@ USE MODE_GA
 USE MODE_MNH_TIMING,   ONLY: SECOND_MNH2
 USE MODE_SCATTER_ll
 !
+#ifdef MNH_GA
+USE MODD_ARGSLIST_ll, ONLY : LIST_ll
+USE MODE_ll         , ONLY : ADD2DFIELD_ll,UPDATE_HALO_ll,CLEANLIST_ll
+#endif
+!
 TYPE(TFILEDATA),           INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),          INTENT(INOUT) :: TPFIELD
 REAL,DIMENSION(:,:),TARGET,INTENT(INOUT) :: PFIELD   ! array containing the data field
@@ -354,7 +360,9 @@ INTEGER                      :: IHEXTOT
 REAL(kind=MNHTIME), DIMENSION(2) :: T0, T1, T2
 REAL(kind=MNHTIME), DIMENSION(2) :: T11, T22
 #ifdef MNH_GA
-REAL,DIMENSION(:,:),POINTER    :: ZFIELD_GA
+REAL,DIMENSION(:,:),POINTER  :: ZFIELD_GA
+TYPE(LIST_ll)      ,POINTER  :: TZFIELD_ll
+INTEGER                      :: IINFO_ll
 #endif
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_read_byfield_X2',TRIM(TPFILE%CNAME)//': reading '//TRIM(TPFIELD%CMNHNAME))
@@ -434,16 +442,23 @@ IF (IRESP==0) THEN
           !
           lo_zplan(JPIZ) = 1
           hi_zplan(JPIZ) = 1
+          !print*,"IO_READ_FIELD_BYFIELD_X2::nga_put=",g_a, lo_zplan, hi_zplan, ld_zplan, TPFIELD%CMNHNAME ; call flush(6)
           call nga_put(g_a, lo_zplan, hi_zplan,ZFIELDP, ld_zplan)
         END IF
-        call ga_sync
+        call ga_sync()
         !
         ! get the columun data in this proc
         !
         ! temp buf to avoid problem with none stride PFIELDS buffer  with HALO 
         ALLOCATE (ZFIELD_GA (SIZE(PFIELD,1),SIZE(PFIELD,2)))
+        !print*,"IO_READ_FIELD_BYFIELD_X2::nga_get=",g_a, lo_col, hi_col, ld_col, TPFIELD%CMNHNAME ; call flush(6)
         call nga_get(g_a, lo_col, hi_col,ZFIELD_GA(1,1) , ld_col)
         PFIELD = ZFIELD_GA
+        call ga_sync()
+        NULLIFY(TZFIELD_ll)
+        CALL ADD2DFIELD_ll(TZFIELD_ll,PFIELD )
+        CALL UPDATE_HALO_ll(TZFIELD_ll,IINFO_ll)
+        CALL CLEANLIST_ll(TZFIELD_ll)
         DEALLOCATE(ZFIELD_GA)
 #else
         ! XY Scatter Field
@@ -500,6 +515,7 @@ USE MODD_VAR_ll,           ONLY: MNH_STATUSES_IGNORE
 USE MODE_ALLOCBUFFER_ll
 #ifdef MNH_GA
 USE MODE_GA
+USE MODI_GET_HALO
 #endif
 USE MODE_IO_TOOLS,         ONLY: IO_Level2filenumber_get
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_find_byname
@@ -515,7 +531,7 @@ TYPE TX_2DP
    REAL,DIMENSION(:,:), POINTER :: X
 END TYPE TX_2DP
 !
-INTEGER                               :: IERR,IRESP,IRESP_TMP
+INTEGER                               :: IERR,IRESP,IRESP_TMP,IRESP_ISP
 INTEGER                               :: IHEXTOT
 INTEGER                               :: IK_FILE,IK_RANK,INB_PROC_REAL,JK_MAX
 INTEGER                               :: JI,IXO,IXE,IYO,IYE
@@ -630,7 +646,8 @@ IF (IRESP==0) THEN
     !
     ALLOCATE(ZSLICE_ll(0,0)) ! to avoid bug on test of size
     GALLOC_ll = .TRUE.
-    DO JKK=1,IKU_ll
+    IRESP_ISP=0
+    DO JKK=1,SIZE(PFIELD,3) ! IKU_ll
       IK_FILE = IO_Level2filenumber_get(JKK,TPFILE%NSUBFILES_IOZ)
       TZFILE => TPFILE%TFILES_IOZ(IK_FILE+1)%TFILE
       TZFIELD = TPFIELD
@@ -658,6 +675,7 @@ IF (IRESP==0) THEN
         ELSE IF (TPFILE%CFORMAT=='LFICDF4') THEN
           CALL IO_Field_read_nc4(TZFILE,TZFIELD,ZSLICE_ll,IRESP_TMP)
         END IF
+        IF (IRESP_TMP .NE. 0 ) IRESP_ISP = IRESP_TMP
         CALL SECOND_MNH2(T1)
         TIMEZ%T_READ3D_READ=TIMEZ%T_READ3D_READ + T1 - T0
         !
@@ -665,25 +683,30 @@ IF (IRESP==0) THEN
         !
         LO_ZPLAN(JPIZ) = JKK
         HI_ZPLAN(JPIZ) = JKK
+        !print*,"IO_READ_FIELD_BYFIELD_X3::nga_put=",g_a, lo_zplan, hi_zplan, ld_zplan, TZFIELD%CMNHNAME ; call flush(6)
         CALL NGA_PUT(G_A, LO_ZPLAN, HI_ZPLAN,ZSLICE_LL, LD_ZPLAN)
       END IF
       TZFILE => NULL()
     END DO
-    CALL GA_SYNC
+    CALL GA_SYNC()
     !
-    CALL MPI_BCAST(IRESP_TMP,1,MNHINT_MPI,IK_RANK-1,TZFILE%NMPICOMM,IERR)
+    CALL MPI_ALLREDUCE(-ABS(IRESP_ISP),IRESP_TMP,1,MNHINT_MPI,MPI_MIN,TPFILE%NMPICOMM,IRESP)
     IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error"
     !
     ! get the columun data in this proc
     !
     ! temp buf to avoid problem with none stride PFIELDS buffer  with HALO
     ALLOCATE (ZFIELD_GA (SIZE(PFIELD,1),SIZE(PFIELD,2),SIZE(PFIELD,3)))
+    !print*,"IO_READ_FIELD_BYFIELD_X3::nga_get=",g_a, lo_col, hi_col, ld_col, TPFIELD%CMNHNAME ; call flush(6)
     CALL NGA_GET(G_A, LO_COL, HI_COL,ZFIELD_GA(1,1,1) , LD_COL)
     PFIELD = ZFIELD_GA
+    call ga_sync()
+    CALL GET_HALO(PFIELD)
     DEALLOCATE(ZFIELD_GA)
 #else
     ALLOCATE(ZSLICE_ll(0,0))
     GALLOC_ll = .TRUE.
+    IRESP_ISP=0
     INB_PROC_REAL = MIN(TPFILE%NSUBFILES_IOZ,ISNPROC)
     ALLOCATE(REQ_TAB((ISNPROC-1)*INB_PROC_REAL))
     ALLOCATE(T_TX2DP((ISNPROC-1)*INB_PROC_REAL))
@@ -724,6 +747,7 @@ IF (IRESP==0) THEN
           ELSE IF (TZFILE%CFORMAT=='LFICDF4') THEN
             CALL IO_Field_read_nc4(TZFILE,TZFIELD,ZSLICE_ll,IRESP_TMP)
           END IF
+          IF (IRESP_TMP .NE. 0 ) IRESP_ISP = IRESP_TMP
           CALL SECOND_MNH2(T1)
           TIMEZ%T_READ3D_READ=TIMEZ%T_READ3D_READ + T1 - T0
           DO JI = 1,ISNPROC
@@ -744,8 +768,6 @@ IF (IRESP==0) THEN
           TIMEZ%T_READ3D_SEND=TIMEZ%T_READ3D_SEND + T2 - T1
         END IF
         !
-        CALL MPI_BCAST(IRESP_TMP,1,MNHINT_MPI,IK_RANK-1,TZFILE%NMPICOMM,IERR)
-        IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error"
         TZFILE => NULL()
       END DO
       !
@@ -807,6 +829,8 @@ IF (IRESP==0) THEN
     DEALLOCATE(T_TX2DP)
     DEALLOCATE(REQ_TAB)
     !
+    CALL MPI_ALLREDUCE(-ABS(IRESP_ISP),IRESP_TMP,1,MNHINT_MPI,MPI_MIN,TPFILE%NMPICOMM,IRESP)
+    IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error"
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
index afd62237f12cfe0acf7f3e8eafb9917ed399c10c..30f0330bfbfc4144c902096c5796541786b02f1a 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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.
@@ -12,6 +12,7 @@
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 12/04/2019: added pointers for C1D, L1D, N1D, X5D and X6D structures in TFIELDDATA
 !  P. Wautelet 12/04/2019: use MNHTIME for time measurement variables
+!  J. Escobar  11/02/2020: for GA & // IO, add sync, & mpi_allreduce for error handling in // IO
 !-----------------------------------------------------------------
 
 #define MNH_SCALARS_IN_SPLITFILES 0
@@ -590,8 +591,10 @@ CONTAINS
          !
          ALLOCATE (ZFIELD_GA (SIZE(PFIELD,1),SIZE(PFIELD,2)))
          ZFIELD_GA = PFIELD
+         !print*,"IO_WRITE_FIELD_BYFIELD_X2::nga_put=",g_a, lo_col, hi_col,NIXO_L,NIYO_L , ld_col, YRECFM ; call flush(6)
+         call ga_sync()
          call nga_put(g_a, lo_col, hi_col,ZFIELD_GA(NIXO_L,NIYO_L) , ld_col)  
-         call ga_sync
+         call ga_sync()
          DEALLOCATE (ZFIELD_GA)
          IF (ISP == TPFILE%NMASTER_RANK) THEN
             !
@@ -599,6 +602,7 @@ CONTAINS
             !
             lo_zplan(JPIZ) = 1
             hi_zplan(JPIZ) = 1
+            !print*,"IO_WRITE_FIELD_BYFIELD_X2::nga_get=",g_a, lo_zplan, hi_zplan, ld_zplan, YRECFM ; call flush(6)
             call nga_get(g_a, lo_zplan, hi_zplan,ZFIELDP, ld_zplan)
          END IF
 #else
@@ -690,7 +694,7 @@ CONTAINS
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
     INTEGER                                  :: ISIZEMAX
-    INTEGER                                  :: IRESP
+    INTEGER                                  :: IRESP,IRESP_ISP,IRESP_TMP
     REAL,DIMENSION(:,:,:),POINTER            :: ZFIELDP
     LOGICAL                                  :: GALLOC
     LOGICAL                                  :: GLFI, GNC4
@@ -798,6 +802,11 @@ CONTAINS
              RETURN
           END IF
           !
+          ! Write the variable attributes in the non-split file
+          !
+          if ( tpfile%nmaster_rank==isp .and. gnc4 ) &
+            call IO_Field_header_split_write_nc4( tpfile, tpfield, size( pfield, 3 ) )
+          !
           !JUAN BG Z SLICE
           !
           !
@@ -812,23 +821,21 @@ CONTAINS
          !
          ALLOCATE (ZFIELD_GA (SIZE(PFIELD,1),SIZE(PFIELD,2),SIZE(PFIELD,3)))
          ZFIELD_GA = PFIELD
+         !print*,"IO_WRITE_FIELD_BYFIELD_X3::nga_put=",g_a, lo_col, hi_col,NIXO_L,NIYO_L , ld_col, YRECFM ; call flush(6)
+         call ga_sync()
          call nga_put(g_a, lo_col, hi_col,ZFIELD_GA(NIXO_L,NIYO_L,1) , ld_col)  
+         call ga_sync()
          DEALLOCATE(ZFIELD_GA)
-         call ga_sync
          CALL SECOND_MNH2(T1)
          TIMEZ%T_WRIT3D_SEND=TIMEZ%T_WRIT3D_SEND + T1 - T0
          !
-         ! Write the variable attributes in the non-split file
-         !
-         if ( tpfile%nmaster_rank==isp .and. gnc4 ) &
-           call IO_Write_field_header_split_nc4( tpfile, tpfield, size( pfield, 3 ) )
-         !
          ! write the data
          !
          ALLOCATE(ZSLICE_ll(0,0)) ! to avoid bug on test of size
          GALLOC_ll = .TRUE.
+         IRESP_ISP=0
          !
-         DO JKK=1,IKU_ll
+         DO JKK=1,SIZE(PFIELD,3) ! IKU_ll
             !
             IK_FILE = IO_Level2filenumber_get(JKK,TPFILE%NSUBFILES_IOZ)
             TZFILE => TPFILE%TFILES_IOZ(IK_FILE+1)%TFILE
@@ -847,12 +854,14 @@ CONTAINS
                !
                lo_zplan(JPIZ) = JKK
                hi_zplan(JPIZ) = JKK
+               !print*,"IO_WRITE_FIELD_BYFIELD_X3::nga_get=",g_a, lo_zplan, hi_zplan, ld_zplan, YRECFM,JKK ; call flush(6)
                call nga_get(g_a, lo_zplan, hi_zplan,ZSLICE_ll, ld_zplan)
                CALL SECOND_MNH2(T1)
                TIMEZ%T_WRIT3D_RECV=TIMEZ%T_WRIT3D_RECV + T1 - T0
                !
-               IF (GLFI) CALL IO_Field_write_lfi(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
-               IF (GNC4) CALL IO_Field_write_nc4(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+               IF (GLFI) CALL IO_Field_write_lfi(TPFILE,TPFIELD,ZSLICE_ll,IRESP_TMP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+               IF (GNC4) CALL IO_Field_write_nc4(TPFILE,TPFIELD,ZSLICE_ll,IRESP_TMP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+               IF (IRESP_TMP .NE. 0 ) IRESP_ISP = IRESP_TMP
                CALL SECOND_MNH2(T2)
                TIMEZ%T_WRIT3D_WRIT=TIMEZ%T_WRIT3D_WRIT + T2 - T1
             END IF
@@ -866,6 +875,7 @@ CONTAINS
           !
           ALLOCATE(ZSLICE_ll(0,0))
           GALLOC_ll = .TRUE.
+          IRESP_ISP=0
           INB_PROC_REAL = MIN(TPFILE%NSUBFILES_IOZ,ISNPROC)
           Z_SLICE: DO JK=1,SIZE(PFIELD,3),INB_PROC_REAL
              !
@@ -920,7 +930,7 @@ CONTAINS
              !
              ! Write the variable attributes in the non-split file
              !
-             if ( tpfile%nmaster_rank==isp .and. gnc4 ) &
+             if ( tpfile%nmaster_rank == isp .and. gnc4 ) &
                call IO_Field_header_split_write_nc4( tpfile, tpfield, size( pfield, 3 ) )
              !
              ! write the data
@@ -956,8 +966,9 @@ CONTAINS
                    END DO
                    CALL SECOND_MNH2(T1)
                    TIMEZ%T_WRIT3D_RECV=TIMEZ%T_WRIT3D_RECV + T1 - T0
-                   IF (GLFI) CALL IO_Field_write_lfi(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
-                   IF (GNC4) CALL IO_Field_write_nc4(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+                   IF (GLFI) CALL IO_Field_write_lfi(TPFILE,TPFIELD,ZSLICE_ll,IRESP_TMP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+                   IF (GNC4) CALL IO_Field_write_nc4(TPFILE,TPFIELD,ZSLICE_ll,IRESP_TMP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+                   IF (IRESP_TMP .NE. 0 ) IRESP_ISP = IRESP_TMP
                    CALL SECOND_MNH2(T2)
                    TIMEZ%T_WRIT3D_WRIT=TIMEZ%T_WRIT3D_WRIT + T2 - T1
                 END IF
@@ -976,6 +987,8 @@ CONTAINS
           !JUAN BG Z SLICE
 ! end of MNH_GA
 #endif
+       CALL MPI_ALLREDUCE(-ABS(IRESP_ISP),IRESP_TMP,1,MNHINT_MPI,MPI_MIN,TPFILE%NMPICOMM,IRESP)
+       IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error"
        END IF ! multiprocesses execution
     END IF
     !
diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
index 4e6bce3f26e7f74836495171a3da9dcab91a5e6b..1787cac1005bbf5f988de57cc19590c469bae1ce 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2016-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2016-2020 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.
@@ -16,6 +16,8 @@
 !  P. Wautelet 18/02/2019: bugfixes for nsubfiles_ioz
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 12/03/2019: add TMAINFILE field in TFILEDATA
+!  P. Wautelet 11/02/2020: bugfix: TDADFILE was wrongly constructed for output files
+!  S. Donnier  28/02/2020: type STREAM needed for use of ECOCLIMAP SG
 !-----------------------------------------------------------------
 MODULE MODE_IO_MANAGE_STRUCT
 !
@@ -253,7 +255,7 @@ DO IMI = 1, NMODEL
       IF (IDX>0) THEN
         OUT_MODEL(IMI)%TOUTPUTN(IPOS)%NOUTDAD = IDX
         WRITE (YDADNUMBER,FMT="('.',I3.3)") OUT_MODEL(IMI)%TOUTPUTN(IPOS)%NOUTDAD
-        OUT_MODEL(IMI)%TOUTPUTN(IPOS)%TFILE%TDADFILE => OUT_MODEL(NDAD(IMI))%TBACKUPN(IDX)%TFILE
+        OUT_MODEL(IMI)%TOUTPUTN(IPOS)%TFILE%TDADFILE => OUT_MODEL(NDAD(IMI))%TOUTPUTN(IDX)%TFILE
       ELSE
         OUT_MODEL(IMI)%TOUTPUTN(IPOS)%NOUTDAD = -1
         NULLIFY(OUT_MODEL(IMI)%TOUTPUTN(IPOS)%TFILE%TDADFILE) !No dad file
diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
index 34eebc5adef4e993658ae2cbc7dcd0f27b164250..cde87daf03a0505fc4de4807761f9c43908e430c 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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.
@@ -14,6 +14,7 @@
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !  P. Wautelet 19/09/2019: temporary workaround for netCDF bug if MNH_INT=8 (if netCDF fortran < 4.4.5)
+!  P. Wautelet 11/02/2020: add 'dims' attribute in IO_Write_field_header_split_nc4
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
 module mode_io_write_nc4
@@ -130,6 +131,10 @@ if ( istatus /= NF90_NOERR ) then
   if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_PUT_ATT', &
                                                      'ndims for '//trim( tpfield%cmnhname ) )
 
+  istatus = NF90_PUT_ATT( incid, ivarid,'dims', ishape )
+  if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_PUT_ATT', &
+                                                     'dims for '//trim( tpfield%cmnhname ) )
+
   if ( tpfield%ltimedep ) then
     istatus = NF90_PUT_ATT( incid, ivarid,'time_dependent', 'yes' )
   else
diff --git a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90
index b10e2eea94b404e947df4e57f4a9c5ac5240c8b4..6a405483dbf3e11d5446d4f2db9ab0457babf08d 100644
--- a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90
@@ -8,6 +8,7 @@
 !  P. Wautelet 03/10/2017: set IP and NPROC in INIT_NMNH_COMM_WORLD
 !  P. Wautelet 10/01/2019: use NEWUNIT argument of OPEN
 !  P. Wautelet 21/11/2019: bugfix: close call could be done on a non-opened file
+!  J. Escobar  11/02/2020: For GA , replace MPI_INIT_THREAD -> MPI_INIT
 !-----------------------------------------------------------------
 MODULE MODE_MNH_WORLD
   IMPLICIT NONE
@@ -50,7 +51,7 @@ CONTAINS
     CALL MPI_INITIALIZED(GISINIT, KINFO_ll)
     IF (.NOT. GISINIT) THEN
 #ifdef MNH_GA
-       CALL MPI_INIT_thread(REQUIRED,PROVIDED,KINFO_ll)
+       CALL MPI_INIT(KINFO_ll)
 #else
        CALL MPI_INIT(KINFO_ll)
 #endif
diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
index 50717842638c609e788fa79a38cd902dfe26e9bd..5ea23bf85eded9708521ce00cc2926e5c0fd2779 100644
--- a/src/MNH/advection_metsv.f90
+++ b/src/MNH/advection_metsv.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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.
@@ -136,6 +136,8 @@ END MODULE MODI_ADVECTION_METSV
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!                  07/2017  (V. Vionnet)  : add advection of 2D variables at
 !!                                      the surface for the blowing snow scheme
+!!                  03/2020 (B.Vie) : LIMA negativity checks after turbulence, advection and
+!!                                    microphysics budgets
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
 !-------------------------------------------------------------------------------
 !
@@ -148,6 +150,8 @@ USE MODD_CTURB,          ONLY: XTKEMIN
 USE MODD_CONF,           ONLY: LNEUTRAL,NHALO,L1D, L2D
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_LUNIT_n,        ONLY: TLUOUT
+USE MODD_NSV
+USE MODD_PARAM_LIMA
 USE MODD_PARAM_n
 USE MODD_TYPE_DATE,      ONLY: DATE_TIME
 USE MODD_BLOWSNOW
@@ -253,7 +257,7 @@ REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),NBLOWSNOW_2D) :: ZRSNWCS_
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRHOX1,ZRHOX2
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRHOY1,ZRHOY2
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRHOZ1,ZRHOZ2
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)):: ZT,ZEXN,ZLV,ZLS,ZCPH
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)):: ZT,ZEXN,ZLV,ZLS,ZCPH,ZCOR
 ! Temporary advected rhodj for PPM routines
 !
 INTEGER :: JS,JR,JSV,JSPL, JI, JJ  ! Loop index
@@ -669,34 +673,136 @@ DO JSV=1,KSV
   IF (LBUDGET_SV) CALL BUDGET (PRSVS(:,:,:,JSV),JSV+12,'ADV_BU_RSV')
 END DO
 !
-IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')) THEN
-  ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-  ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
-  ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
-  ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
-  ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
+SELECT CASE ( HCLOUD )
+  CASE('ICE3','ICE4')
+     ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
+     ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
+     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
+     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
+     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
+    WHERE (PRRS(:,:,:,4) < 0.)
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,4)
+      PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,4) * ZLS(:,:,:) /  &
+           ZCPH(:,:,:) / ZEXN(:,:,:)
+      PRRS(:,:,:,4) = 0.
+    END WHERE
+!
+!   cloud
+    WHERE (PRRS(:,:,:,2) < 0.)
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
+      PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
+           ZCPH(:,:,:) / ZEXN(:,:,:)
+      PRRS(:,:,:,2) = 0.
+    END WHERE
+!
+! if rc or ri are positive, we can correct negative rv
+!   cloud
+    WHERE ((PRRS(:,:,:,1) <0.) .AND. (PRRS(:,:,:,2)> 0.) )
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
+      PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
+           ZCPH(:,:,:) / ZEXN(:,:,:)
+      PRRS(:,:,:,2) = 0.
+    END WHERE
+!   ice
+    IF(KRR > 3) THEN
+      WHERE ((PRRS(:,:,:,1) < 0.).AND.(PRRS(:,:,:,4) > 0.))
+        ZCOR(:,:,:)=MIN(-PRRS(:,:,:,1),PRRS(:,:,:,4))
+        PRRS(:,:,:,1) = PRRS(:,:,:,1) + ZCOR(:,:,:)
+        PRTHS(:,:,:) = PRTHS(:,:,:) - ZCOR(:,:,:) * ZLS(:,:,:) /  &
+             ZCPH(:,:,:) / ZEXN(:,:,:)
+        PRRS(:,:,:,4) = PRRS(:,:,:,4) -ZCOR(:,:,:)
+      END WHERE
+    END IF
+!
+  CASE('C2R2','KHKO')
+     ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
+     ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
+     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
+     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
+     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
 !  CALL GET_HALO(PRRS(:,:,:,2))
 !  CALL GET_HALO(PRSVS(:,:,:,2))
 !  CALL GET_HALO(PRSVS(:,:,:,3))
-  WHERE (PRRS(:,:,:,2) < 0. .OR. PRSVS(:,:,:,2) < 0.)
-      PRSVS(:,:,:,1) = 0.0
-  END WHERE
-  DO JSV = 2, 3
-    WHERE (PRRS(:,:,:,JSV) < 0. .OR. PRSVS(:,:,:,JSV) < 0.)
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,JSV)
-      PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,JSV) * ZLV(:,:,:) /  &
-             ZCPH(:,:,:) / ZEXN(:,:,:)
-      PRRS(:,:,:,JSV)  = 0.0
-      PRSVS(:,:,:,JSV) = 0.0
-    END WHERE
-  END DO
-!
+     WHERE (PRRS(:,:,:,2) < 0. .OR. PRSVS(:,:,:,2) < 0.)
+        PRSVS(:,:,:,1) = 0.0
+     END WHERE
+     DO JSV = 2, 3
+        WHERE (PRRS(:,:,:,JSV) < 0. .OR. PRSVS(:,:,:,JSV) < 0.)
+           PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,JSV)
+           PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,JSV) * ZLV(:,:,:) /  &
+                ZCPH(:,:,:) / ZEXN(:,:,:)
+           PRRS(:,:,:,JSV)  = 0.0
+           PRSVS(:,:,:,JSV) = 0.0
+        END WHERE
+     END DO
+     !
+   CASE('LIMA')   
+     ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
+     ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
+     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
+     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
+     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
+! Correction where rc<0 or Nc<0
+      IF (LWARM) THEN
+         WHERE (PRRS(:,:,:,2) < XRTMIN(2)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NC) < XCTMIN(2)/PTSTEP)
+            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
+            PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
+                 ZCPH(:,:,:) / ZEXN(:,:,:)
+            PRRS(:,:,:,2)  = 0.0
+            PRSVS(:,:,:,NSV_LIMA_NC) = 0.0
+         END WHERE
+      END IF
+! Correction where rr<0 or Nr<0
+      IF (LWARM .AND. LRAIN) THEN
+         WHERE (PRRS(:,:,:,3) < XRTMIN(3)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NR) < XCTMIN(3)/PTSTEP)
+            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,3)
+            PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,3) * ZLV(:,:,:) /  &
+                 ZCPH(:,:,:) / ZEXN(:,:,:)
+            PRRS(:,:,:,3)  = 0.0
+            PRSVS(:,:,:,NSV_LIMA_NR) = 0.0
+         END WHERE
+      END IF
+! Correction where ri<0 or Ni<0
+      IF (LCOLD) THEN
+         WHERE (PRRS(:,:,:,4) < XRTMIN(4)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NI) < XCTMIN(4)/PTSTEP)
+            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,4)
+            PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,4) * ZLS(:,:,:) /  &
+                 ZCPH(:,:,:) / ZEXN(:,:,:)
+            PRRS(:,:,:,4)  = 0.0
+            PRSVS(:,:,:,NSV_LIMA_NI) = 0.0
+         END WHERE
+      END IF
+!
+      PRSVS(:,:,:,:) = MAX( 0.0,PRSVS(:,:,:,:) )
+      PRRS(:,:,:,:) = MAX( 0.0,PRRS(:,:,:,:) )
+!
+END SELECT
+!
+IF ((HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'KHKO') .OR. (HCLOUD /= 'C2R2') .OR. (HCLOUD /= 'LIMA') ) THEN
   IF (LBUDGET_TH) CALL BUDGET (PRTHS(:,:,:) , 4,'NEADV_BU_RTH')
   IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NEADV_BU_RRV')
   IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NEADV_BU_RRC')
-
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), 8,'NEADV_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), 9,'NEADV_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'NEADV_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'NEADV_BU_RRG')
+  IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'NEADV_BU_RRH')
+END IF
+IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN
+   IF (LWARM) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NC),12+NSV_LIMA_NC,'NEADV_BU_RSV')
+   IF (LWARM.AND.LRAIN) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NR),12+NSV_LIMA_NR,'NEADV_BU_RSV')
+   IF (LCOLD) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NI),12+NSV_LIMA_NI,'NEADV_BU_RSV')
+   IF (NMOD_CCN.GE.1) THEN
+      DO JI=1, NMOD_CCN
+         CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_CCN_FREE+JI-1),12+NSV_LIMA_CCN_FREE+JI-1,'NEADV_BU_RSV') 
+      END DO
+   END IF
+   IF (NMOD_IFN.GE.1) THEN
+      DO JI=1, NMOD_IFN
+         CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_IFN_FREE+JI-1),12+NSV_LIMA_IFN_FREE+JI-1,'NEADV_BU_RSV') 
+      END DO
+   END IF
 END IF
-
 
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/boundaries.f90 b/src/MNH/boundaries.f90
index 2e28cb605cbceda8bc384f44e16d4b7f5e1501e3..a0095f8c355ebaf408bcee8d5bd4396754a85a59 100644
--- a/src/MNH/boundaries.f90
+++ b/src/MNH/boundaries.f90
@@ -19,7 +19,7 @@ INTERFACE
             PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM,   &
             PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,   &
             PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS,   &
-            PRHODJ,                                                 &
+            PRHODJ,PRHODREF,                                        &
             PUT,PVT,PWT,PTHT,PTKET,PRT,PSVT,PSRCT                   )
 !
 REAL,                  INTENT(IN) :: PTSTEP        ! time step dt
@@ -51,6 +51,7 @@ REAL, DIMENSION(:,:,:,:),        INTENT(IN) :: PLBYRS  ,PLBYSVS  ! in x and y-di
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ    ! Jacobian * dry density of
                                                   !  the reference state
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODREF
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUT,PVT,PWT,PTHT,PTKET,PSRCT
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRT,PSVT
@@ -71,7 +72,7 @@ END MODULE MODI_BOUNDARIES
             PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM,   &
             PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,   &
             PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS,   &
-            PRHODJ,                                                 &
+            PRHODJ,PRHODREF,                                        &
             PUT,PVT,PWT,PTHT,PTKET,PRT,PSVT,PSRCT                   )
 !     ####################################################################
 !
@@ -173,7 +174,8 @@ END MODULE MODI_BOUNDARIES
 !!      Redelsperger & Pianezze : 08/2015 : add XPOND coefficient
 !!      Modification    01/2016  (JP Pinty) Add LIMA that is LBC for CCN and IFN
 !!      Modification    18/07/17 (Vionnet)  Add blowing snow variables 
-!!      Modification    01/2018  (JL Redelsperger) Correction for TKE treatment 
+!!      Modification    01/2018  (JL Redelsperger) Correction for TKE treatment
+!!      Modification    03/02/2020 (B. Vié)  Correction for SV with LIMA
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -195,6 +197,7 @@ USE MODD_BLOWSNOW_n
 USE MODD_REF_n    
 USE MODD_PARAM_n,    ONLY : CELEC,CCLOUD 
 USE MODD_LBC_n,      ONLY : XPOND
+USE MODD_GRID_n,    ONLY : XZZ
 !
 USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, LBOUND, LWARM, LCOLD
 !
@@ -210,6 +213,8 @@ USE MODI_CH_BOUNDARIES
 !
 USE MODE_ll
 !
+USE MODI_INIT_AEROSOL_CONCENTRATION
+USE MODI_SET_CONC_LIMA
 !
 IMPLICIT NONE
 !
@@ -248,6 +253,7 @@ REAL, DIMENSION(:,:,:,:),        INTENT(IN) :: PLBYRS  ,PLBYSVS  ! in x and y-di
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ    ! Jacobian * dry density of
                                                   !  the reference state
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODREF
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUT,PVT,PWT,PTHT,PTKET,PSRCT
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRT,PSVT
@@ -310,6 +316,9 @@ LOGICAL              :: GFFTMP
 !
 INTEGER              :: JI,JJ
 !
+REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),SIZE(PSVT,4)) :: ZSVT
+REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),SIZE(PRT,4)) :: ZRT
+!
 !-------------------------------------------------------------------------------
 !
 !*       1.    COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES:
@@ -969,7 +978,11 @@ END SELECT
 END IF
 !
 !
-IF (CCLOUD == 'LIMA' .AND. IMI == 1) THEN
+IF (CCLOUD == 'LIMA' .AND. IMI == 1 .AND. CPROGRAM=='MESONH') THEN
+
+   ZSVT=PSVT
+   ZRT=PRT
+
   IF (GFIRSTCALLLIMA) THEN
     ALLOCATE(GLIMABOUNDARY(NSV_LIMA))
     GFIRSTCALLLIMA = .FALSE.
@@ -981,23 +994,53 @@ IF (CCLOUD == 'LIMA' .AND. IMI == 1) THEN
        IF (LNORTH_ll().AND.HLBCY(2)=='OPEN') GCHTMP = GCHTMP .OR. ALL(PLBYSVM(:,ILBY-JPHEXT+1,:,JSV)==0)
        GLIMABOUNDARY(JSV-NSV_LIMA_BEG+1) = GCHTMP
     ENDDO
-    ENDIF
+  ENDIF
+  CALL INIT_AEROSOL_CONCENTRATION(PRHODREF,ZSVT,XZZ)
+  DO JSV=NSV_LIMA_CCN_FREE,NSV_LIMA_CCN_FREE+NMOD_CCN-1 ! LBC for CCN
+     IF (GLIMABOUNDARY(JSV-NSV_LIMA_CCN_FREE+1)) THEN
+        PSVT(IIB-1,:,:,JSV)=ZSVT(IIB-1,:,:,JSV)
+        PSVT(IIE+1,:,:,JSV)=ZSVT(IIE+1,:,:,JSV)
+        PSVT(:,IJB-1,:,JSV)=ZSVT(:,IJB-1,:,JSV)
+        PSVT(:,IJE+1,:,JSV)=ZSVT(:,IJE+1,:,JSV)
+     ENDIF
+  END DO
+  DO JSV=NSV_LIMA_IFN_FREE,NSV_LIMA_IFN_FREE+NMOD_IFN-1 ! LBC for IFN
+     IF (GLIMABOUNDARY(JSV-NSV_LIMA_IFN_FREE+1)) THEN
+        PSVT(IIB-1,:,:,JSV)=ZSVT(IIB-1,:,:,JSV)
+        PSVT(IIE+1,:,:,JSV)=ZSVT(IIE+1,:,:,JSV)
+        PSVT(:,IJB-1,:,JSV)=ZSVT(:,IJB-1,:,JSV)
+        PSVT(:,IJE+1,:,JSV)=ZSVT(:,IJE+1,:,JSV)
+     ENDIF
+  END DO
 
-  DO JSV=NSV_LIMA_CCN_FREE,NSV_LIMA_CCN_FREE+NMOD_CCN-1 ! LBC for CCN from MACC
-    IF (GLIMABOUNDARY(JSV-NSV_LIMA_CCN_FREE+1)) THEN
-      IF (SIZE(PSVT)>0) THEN
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT(:,:,:,JSV),XSVMIN(JSV))
-      ENDIF
-    ENDIF
-  ENDDO 
-  DO JSV=NSV_LIMA_IFN_FREE,NSV_LIMA_IFN_FREE+NMOD_IFN-1 ! LBC for IFN from MACC
-    IF (GLIMABOUNDARY(JSV-NSV_LIMA_IFN_FREE+1)) THEN
-      IF (SIZE(PSVT)>0) THEN
-        CALL CH_BOUNDARIES (HLBCX,HLBCY,PUT,PVT,PSVT(:,:,:,JSV),XSVMIN(JSV))
-      ENDIF
-    ENDIF
-  ENDDO 
-ENDIF
+  CALL SET_CONC_LIMA('NONE',PRHODREF,ZRT,ZSVT)
+  IF (NSV_LIMA_NC.GE.1) THEN
+     IF (GLIMABOUNDARY(NSV_LIMA_NC)) THEN
+        PSVT(IIB-1,:,:,NSV_LIMA_NC)=ZSVT(IIB-1,:,:,NSV_LIMA_NC) ! cloud
+        PSVT(IIE+1,:,:,NSV_LIMA_NC)=ZSVT(IIE+1,:,:,NSV_LIMA_NC)
+        PSVT(:,IJB-1,:,NSV_LIMA_NC)=ZSVT(:,IJB-1,:,NSV_LIMA_NC)
+        PSVT(:,IJE+1,:,NSV_LIMA_NC)=ZSVT(:,IJE+1,:,NSV_LIMA_NC)
+     ENDIF
+  ENDIF
+  IF (NSV_LIMA_NR.GE.1) THEN
+     IF (GLIMABOUNDARY(NSV_LIMA_NR)) THEN
+        PSVT(IIB-1,:,:,NSV_LIMA_NR)=ZSVT(IIB-1,:,:,NSV_LIMA_NR) ! rain
+        PSVT(IIE+1,:,:,NSV_LIMA_NR)=ZSVT(IIE+1,:,:,NSV_LIMA_NR)
+        PSVT(:,IJB-1,:,NSV_LIMA_NR)=ZSVT(:,IJB-1,:,NSV_LIMA_NR)
+        PSVT(:,IJE+1,:,NSV_LIMA_NR)=ZSVT(:,IJE+1,:,NSV_LIMA_NR)
+     ENDIF
+  ENDIF
+  IF (NSV_LIMA_NI.GE.1) THEN
+     IF (GLIMABOUNDARY(NSV_LIMA_NI)) THEN
+        PSVT(IIB-1,:,:,NSV_LIMA_NI)=ZSVT(IIB-1,:,:,NSV_LIMA_NI) ! ice
+        PSVT(IIE+1,:,:,NSV_LIMA_NI)=ZSVT(IIE+1,:,:,NSV_LIMA_NI)
+        PSVT(:,IJB-1,:,NSV_LIMA_NI)=ZSVT(:,IJB-1,:,NSV_LIMA_NI)
+        PSVT(:,IJE+1,:,NSV_LIMA_NI)=ZSVT(:,IJE+1,:,NSV_LIMA_NI)
+     ENDIF
+  END IF
+  
+END IF
+!
 !
 IF (LUSECHEM .AND. IMI == 1) THEN
   IF (GFIRSTCALL1) THEN
diff --git a/src/MNH/deallocate_model1.f90 b/src/MNH/deallocate_model1.f90
index dc3107d54dd4857b1857c4a2692638d4e9a4c3c8..113521daf887dcd7e673028de0a58f81dc1aa64b 100644
--- a/src/MNH/deallocate_model1.f90
+++ b/src/MNH/deallocate_model1.f90
@@ -455,9 +455,6 @@ IF ( ALLOCATED(XUFRC) .AND. KCALL == 4 ) THEN
     DEALLOCATE(XGYTHFRC)
     DEALLOCATE(XPGROUNDFRC)
 END IF
-IF ( ALLOCATED(XWTFRC) .AND. KCALL == 4 ) THEN
-    DEALLOCATE(XWTFRC)
-END IF
 !
 !*     12.     Module MODD_ICE_CONC$n
 !
diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 38c7bba55cb86e02d0f9edc6ad19b085f384dacf..934b3447a3e135da7947c7fb823d1907f91b83fa 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -229,6 +229,7 @@ END MODULE MODI_DEFAULT_DESFM_n
 !!                   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
+!!                   11/2019 C.Lac correction in the drag formula and application to building in addition to tree
 !!
 !-------------------------------------------------------------------------------
 !
@@ -272,7 +273,8 @@ USE MODD_SALT
 USE MODD_PASPOL
 USE MODD_CONDSAMP
 USE MODD_MEAN_FIELD
-USE MODD_DRAGTREE
+USE MODD_DRAGTREE_n
+USE MODD_DRAGBLDG_n
 !
 !
 USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LSEDI, LHHONI, LSNOW, LHAIL, LMEYERS,&
@@ -544,6 +546,12 @@ VSIGQSAT  = 0.02
 LDRAGTREE = .FALSE.
 LDEPOTREE = .FALSE.
 XVDEPOTREE = 0.02 ! 2 cm/s 
+!------------------------------------------------------------------------------
+!
+!*      10c.   SET DEFAULT VALUES FOR MODD_DRAGB
+!             ----------------------------------
+!
+LDRAGBLDG = .FALSE.
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/drag_bld.f90 b/src/MNH/drag_bld.f90
new file mode 100644
index 0000000000000000000000000000000000000000..02de3d18214954b08f6539e041d493dd5dcaeb90
--- /dev/null
+++ b/src/MNH/drag_bld.f90
@@ -0,0 +1,236 @@
+!MNH_LIC Copyright 2019-2020 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.
+!---------------------------------------------------------------
+!     #######################
+MODULE MODI_DRAG_BLD
+  !     #######################
+  !
+  INTERFACE
+     !
+     SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PRHODJ, PZZ, PRUS, PRVS, PRTKES )
+       !
+       REAL,                     INTENT(IN)    :: PTSTEP ! Time step
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT   ! variables
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKET           !   at t
+       !
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ    ! dry Density * Jacobian
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ       ! Height (z)
+       !
+       REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS       ! Sources of Momentum
+       REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTKES           ! Sources of Tke
+       !
+     END SUBROUTINE DRAG_BLD
+
+  END INTERFACE
+
+END MODULE MODI_DRAG_BLD
+!
+!     ###################################################################
+SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PRHODJ, PZZ, PRUS, PRVS, PRTKES )
+  !     ###################################################################
+  !
+  !!****  *DRAG_BLD_n * -
+  !!
+  !!    PURPOSE
+  !!    -------
+  !
+  !    Drag force due to buildings
+  !
+  !!**  METHOD
+  !!    ------
+  !!
+  !!    REFERENCE
+  !!    ---------
+  !!
+  !!    AUTHOR
+  !!    ------
+  !!     R. Schoetter
+  !!
+  !!    MODIFICATIONS
+  !!    -------------
+  !!      Original    09/2019
+  !!---------------------------------------------------------------
+  !
+  !*       0.    DECLARATIONS
+  !              ------------
+  !
+  USE MODD_CONF
+  USE MODD_CST
+  USE MODD_DRAGBLDG_n
+  USE MODD_DYN
+  USE MODD_DYN_n
+  USE MODD_GROUND_PAR
+  USE MODD_PGDFIELDS
+  USE MODD_NSV
+  USE MODI_MNHGET_SURF_PARAM_n
+  USE MODI_SHUMAN
+  !
+  IMPLICIT NONE
+  !  
+  !*       0.1   Declarations of dummy arguments :
+  !
+  REAL,                     INTENT(IN)    :: PTSTEP   ! Time step
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT ! variables
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKET    !   at t
+  !
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ   ! dry Density * Jacobian
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ      ! Height (z)
+  !
+  REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS       ! Sources of Momentum
+  REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTKES           ! Sources of Tke
+  !
+  !*       0.2   Declarations of local variables :
+  !
+  INTEGER :: IIU,IJU,IKU,IKV  ! array size along the k direction 
+  INTEGER :: JI, JJ, JK       ! loop index
+  INTEGER :: INFO_ll
+  !
+  REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: &
+       ZWORK1, ZWORK2, ZWORK3, ZUT_SCAL, ZVT_SCAL, &
+       ZUS, ZVS, ZTKES, ZTKET
+  REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: &
+       ZCDRAG, ZDENSITY
+  !
+  REAL, DIMENSION(:,:), ALLOCATABLE :: ZH_BUILD_PGD
+  REAL, DIMENSION(:,:), ALLOCATABLE :: ZWALL_O_HOR_PGD
+  REAL, DIMENSION(:,:), ALLOCATABLE :: ZFRAC_TOWN_PGD
+  !
+  REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) ::           &
+       ZH_BLD,ZF_BLD           !  Building height, frontal density
+  REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZT,ZEXN,ZLV,ZCPH
+  !
+  !*       0.3     Initialization
+  !
+  IIU = SIZE(PUT,1)
+  IJU = SIZE(PUT,2)
+  IKU = SIZE(PUT,3)
+  !
+  ZUS   (:,:,:) = 0.0
+  ZVS   (:,:,:) = 0.0
+  ZTKES (:,:,:) = 0.0
+  !
+  ZH_BLD (:,:) = 0.
+  ZF_BLD (:,:) = 0.
+  !
+  ZCDRAG   (:,:,:) = 0.
+  ZDENSITY (:,:,:) = 0.
+  !
+  ALLOCATE(ZFRAC_TOWN_PGD(IIU,IJU))
+  ALLOCATE(ZH_BUILD_PGD(IIU,IJU))
+  ALLOCATE(ZWALL_O_HOR_PGD(IIU,IJU))
+  !
+  ZFRAC_TOWN_PGD  (:,:) = XUNDEF
+  ZH_BUILD_PGD    (:,:) = XUNDEF
+  ZWALL_O_HOR_PGD (:,:) = XUNDEF
+  !
+  CALL MNHGET_SURF_PARAM_n( PTOWN=ZFRAC_TOWN_PGD,    &
+       PBUILD_HEIGHT=ZH_BUILD_PGD,                   &
+       PWALL_O_HOR=ZWALL_O_HOR_PGD                   )
+  !
+  ! FIXME: Some values of ZFRAC_TOWN_PGD are 999. This is a bit strange since the
+  !        TOWN fraction should be defined everywhere.
+  !        It is set to 0.0 provisionally
+  !
+  WHERE(ZFRAC_TOWN_PGD(:,:).GT.1.0) ZFRAC_TOWN_PGD(:,:)=0.0
+  !
+  ! The values for wall density and building height are set to 0.0 where the Town fraction is 0.0
+  ! For the wall density this would not be necessary since it will be multiplied by the town
+  ! fraction anyway.
+  !
+  WHERE(ZFRAC_TOWN_PGD(:,:).EQ.0.0) 
+     ZWALL_O_HOR_PGD(:,:) = 0.0
+     ZH_BUILD_PGD(:,:) = 0.0
+  ENDWHERE
+  !
+  ! For buildings, the frontal wall area density is calculated [m^2(walls facing the wind)/m^2]
+  ! The division by PI means that cylindrical buildings are assumed (circle perimeter = PI*D, circle frontal area = D)
+  ! [m^2(walls facing the wind)/m^2]=[m^2(wall)/m^2(town)*m^2(town)/m^2/PI]
+  ! It will be assumed that the frontal wall area is equally distributed with height (all buildings same height)
+  !
+  ZH_BLD(:,:) = ZH_BUILD_PGD(:,:)
+  ZF_BLD(:,:) = ZFRAC_TOWN_PGD(:,:)*ZWALL_O_HOR_PGD(:,:)/XPI
+  !
+  DEALLOCATE(ZFRAC_TOWN_PGD)
+  DEALLOCATE(ZH_BUILD_PGD)
+  DEALLOCATE(ZWALL_O_HOR_PGD)
+  !
+  !-------------------------------------------------------------------------------
+  !
+  !
+  !*       1.     COMPUTES THE TRUE VELOCITY COMPONENTS
+  !	        -------------------------------------
+  !
+  ZUT_SCAL(:,:,:) = MXF(PUT(:,:,:))
+  ZVT_SCAL(:,:,:) = MYF(PVT(:,:,:))
+  ZTKET(:,:,:)    = PTKET(:,:,:)
+  !-------------------------------------------------------------------------------
+  !
+  !*      1.     Computations of wind tendency due to canopy drag
+  !              ------------------------------------------------
+  !
+  ! Ext = - Cdrag  * u- * u- * Sv       tree canopy drag
+  !       - u'w'(ground)     * Sh       horizontal surfaces (ground)
+  !              ------------------------------
+  !
+  DO JJ=2,(IJU-1)
+     DO JI=2,(IIU-1)
+        !
+        ! Set density and drag coefficient for buildings
+        !
+        IF (ZH_BLD(JI,JJ) /= 0) THEN
+           !
+           DO JK=2,(IKU-1) 
+              !
+              IF ( (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) .LT. ZH_BLD(JI,JJ) ) THEN
+                 !
+                 ! FIXME: Check literature values for the drag coefficient here
+                 !
+                 ZCDRAG(JI,JJ,JK)  = 0.2
+                 !
+                 ! A uniform distribution of building heights is assumed
+                 !
+                 ZDENSITY(JI,JJ,JK) = ZF_BLD(JI,JJ) / ZH_BLD(JI,JJ)
+                 !
+              ENDIF
+              !
+           ENDDO
+        ENDIF
+        !
+     ENDDO
+  ENDDO
+  !
+  !*      1.2    Drag force by wall surfaces
+  !              ---------------------------
+  !
+  !* drag force by vertical surfaces
+  !
+  ZUS(:,:,:) = PUT(:,:,:)/( 1.0 + MXM ( ZCDRAG(:,:,:) * ZDENSITY(:,:,:) & 
+       * PTSTEP * SQRT(ZUT_SCAL(:,:,:)**2+ZVT_SCAL(:,:,:)**2) ) )
+  !
+  ZVS(:,:,:) = PVT(:,:,:)/( 1.0 + MYM ( ZCDRAG(:,:,:) * ZDENSITY(:,:,:) & 
+       * PTSTEP * SQRT(ZUT_SCAL(:,:,:)**2+ZVT_SCAL(:,:,:)**2) ) )
+  !
+  PRUS(:,:,:) = PRUS(:,:,:) + (ZUS(:,:,:)-PUT(:,:,:)) * MXM(PRHODJ(:,:,:)) / PTSTEP
+  !
+  PRVS(:,:,:) = PRVS(:,:,:) + (ZVS(:,:,:)-PVT(:,:,:)) * MYM(PRHODJ(:,:,:)) / PTSTEP
+  !
+  !*      3.     Computations of TKE  tendency due to canopy drag
+  !              ------------------------------------------------
+  !*      3.1    Creation of TKE by wake
+  !              -----------------------
+  !
+  ! from Kanda and Hino (1994)
+  !
+  ! Ext = + Cd * u+^3  * Sv/Vair        vertical surfaces or trees
+  !
+  ! with Vair = Vair/Vtot * Vtot = (Vair/Vtot) * Stot * Dz
+  ! and  Sv/Vair = (Sv/Stot) * Stot/Vair = (Sv/Stot) / (Vair/Vtot) / Dz
+  !
+  ZTKES(:,:,:) = ZTKET(:,:,:) + & 
+     PTSTEP * ZCDRAG(:,:,:) * ZDENSITY(:,:,:) * (SQRT( ZUT_SCAL(:,:,:)**2 + ZVT_SCAL(:,:,:)**2 ))**3
+  !
+  PRTKES(:,:,:) = PRTKES(:,:,:) + (ZTKES(:,:,:)-ZTKET(:,:,:))*PRHODJ(:,:,:)/PTSTEP
+  !
+END SUBROUTINE DRAG_BLD
diff --git a/src/MNH/drag_veg.f90 b/src/MNH/drag_veg.f90
index ce157a15406a436c180f33162b87687868ab56a1..f1b092dab469552bb82462873fe49ed1d8da65cf 100644
--- a/src/MNH/drag_veg.f90
+++ b/src/MNH/drag_veg.f90
@@ -1,305 +1,317 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2009-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!---------------------------------------------------------------
 !     #######################
-       MODULE MODI_DRAG_VEG
+      MODULE MODI_DRAG_VEG
 !     #######################
 !
 INTERFACE
 
-SUBROUTINE DRAG_VEG(PTSTEP,PUT,PVT,PTKET,ODEPOTREE, PVDEPOTREE, &
-                    HCLOUD,PPABST,PTHT,PRT,PSVT,         &
-                    PRHODJ,PZZ,PRUS, PRVS, PRTKES,       &
-                    PTHS,PRRS,PSVS)
-!
-REAL,                     INTENT(IN)    :: PTSTEP ! Time step
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT   ! variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKET           !   at t
-LOGICAL,                  INTENT(IN)    :: ODEPOTREE ! Droplet deposition on tree
-REAL,                     INTENT(IN)    :: PVDEPOTREE! Velocity deposition on tree
-CHARACTER (LEN=4),        INTENT(IN)    :: HCLOUD       ! Kind of microphysical scheme
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST          !   at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT          !   at t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT             !   at t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT            !   at t
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ    ! dry Density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ       ! Height (z)
-!
-
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS       ! Sources of Momentum
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTKES           ! Sources of Tke
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS         
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PTHS          
-!
-!
-
-END SUBROUTINE DRAG_VEG
+     SUBROUTINE DRAG_VEG(PTSTEP,PUT,PVT,PTKET,ODEPOTREE, PVDEPOTREE, &
+          HCLOUD,PPABST,PTHT,PRT,PSVT,         &
+          PRHODJ,PZZ,PRUS, PRVS, PRTKES,       &
+          PTHS,PRRS,PSVS)
+!
+       REAL,                     INTENT(IN)    :: PTSTEP ! Time step
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT   ! variables
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKET           !   at t
+       LOGICAL,                  INTENT(IN)    :: ODEPOTREE ! Droplet deposition on tree
+       REAL,                     INTENT(IN)    :: PVDEPOTREE! Velocity deposition on tree
+       CHARACTER (LEN=4),        INTENT(IN)    :: HCLOUD       ! Kind of microphysical scheme
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST          !   at t
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT          !   at t
+       REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT             !   at t
+       REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT            !   at t
+       !
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ    ! dry Density * Jacobian
+       REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ       ! Height (z)
+       !
+       REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS       ! Sources of Momentum
+       REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTKES           ! Sources of Tke
+       REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS         
+       REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       
+       REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PTHS          
+       !
+     END SUBROUTINE DRAG_VEG
 
-END INTERFACE
+  END INTERFACE
 
 END MODULE MODI_DRAG_VEG
 !
 !     ###################################################################
 SUBROUTINE DRAG_VEG(PTSTEP,PUT,PVT,PTKET,ODEPOTREE, PVDEPOTREE, &
-                    HCLOUD,PPABST,PTHT,PRT,PSVT,         &
-                    PRHODJ,PZZ,PRUS, PRVS, PRTKES,       &
-                    PTHS,PRRS,PSVS)
-!     ###################################################################
-!
-!!****  *DRAG_VEG_n * -
-!!
-!!    PURPOSE
-!!    -------
-!
-!!**  METHOD
-!!    ------
-!!
-!!    REFERENCE
-!!    ---------
-!!      
-!!
-!!    AUTHOR
-!!    ------
-!!     P. Aumond 
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    07/2009
-!!       C.Lac      07/2011 : Add budgets
-!!       S. Donier  06/2015 : bug surface aerosols
-!!       C.Lac      07/2016 : Add droplet deposition
-!!       C.Lac      10/2017 : Correction on deposition
-!!---------------------------------------------------------------
-!
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_CONF
-USE MODD_CST
-USE MODD_DYN
-USE MODD_DYN_n
-USE MODD_VEG_n
-USE MODD_BUDGET
-USE MODD_PARAM_C2R2
-USE MODD_NSV
-
-!
-USE MODI_SHUMAN
-USE MODD_PGDFIELDS
-USE MODD_GROUND_PAR
-USE MODI_MNHGET_SURF_PARAM_n
-USE MODI_BUDGET
+     HCLOUD,PPABST,PTHT,PRT,PSVT,         &
+     PRHODJ,PZZ,PRUS, PRVS, PRTKES,       &
+     PTHS,PRRS,PSVS)
+  !     ###################################################################
+  !
+  !!****  *DRAG_VEG_n * -
+  !!
+  !!    PURPOSE
+  !!    -------
+  !
+  !!**  METHOD
+  !!    ------
+  !!
+  !!    REFERENCE
+  !!    ---------
+  !!      
+  !!
+  !!    AUTHOR
+  !!    ------
+  !!     P. Aumond 
+  !!
+  !!    MODIFICATIONS
+  !!    -------------
+  !!      Original    07/2009
+  !!       C.Lac      07/2011 : Add budgets
+  !!       S. Donier  06/2015 : bug surface aerosols
+  !!       C.Lac      07/2016 : Add droplet deposition
+  !!       C.Lac      10/2017 : Correction on deposition
+  !!       C.Lac      11/2019 : Correction in the drag formula and application to building in addition to tree
+  !!       C.Lac      02/2020 : Correction missing condition for budget on RC and SV
+  !!---------------------------------------------------------------
+  !
+  !
+  !*       0.    DECLARATIONS
+  !              ------------
+  !
+  USE MODD_CONF
+  USE MODD_CST
+  USE MODD_DYN
+  USE MODD_DYN_n
+  USE MODD_VEG_n
+  USE MODD_BUDGET
+  USE MODD_PARAM_C2R2
+  USE MODD_NSV
 
-!  
-IMPLICIT NONE
-!  
-!*       0.1   Declarations of dummy arguments :
-!
-REAL,                     INTENT(IN)    :: PTSTEP ! Time step
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT   ! variables
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKET           !   at t
-LOGICAL,                  INTENT(IN)    :: ODEPOTREE ! Droplet deposition on tree
-REAL,                     INTENT(IN)    :: PVDEPOTREE! Velocity deposition on tree
-CHARACTER (LEN=4),        INTENT(IN)    :: HCLOUD       ! Kind of microphysical scheme
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST          !   at t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT          !   at t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT             !   at t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT            !   at t
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ    ! dry Density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ       ! Height (z)
-!
-
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS       ! Sources of Momentum
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTKES           ! Sources of Tke
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS         
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS          
-!
-!
-!*       0.2   Declarations of local variables :
-!
-INTEGER    ::  IIU,IJU,IKU,IKV         ! array size along the k direction 
-INTEGER  :: JI, JJ, JK             ! loop index
-!
-!
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZH_TREE_PGD ! surface cover types
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZLAI_PGD ! surface cover types
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) ::           &
-                              ZWORK1, ZWORK2, ZWORK3, ZUT, ZVT,   &
-                              ZUS, ZVS, ZTKES, ZTKET
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) ::           &
-                              ZCDRAG, ZDENSITY
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) ::           &
-                              ZVH,ZLAI           !  LAI, Vegetation height
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZT,ZEXN,ZLV,ZCPH                              
-LOGICAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) &
-            :: GDEP
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZWDEPR,ZWDEPS
-
-!
-!
-IIU = SIZE(PUT,1)
-IJU = SIZE(PUT,2)
-IKU = SIZE(PUT,3)
-!
-!*       0.3     Initialisation de kelkes variables
-!	       
-ZVH(:,:)=0.
-ZLAI(:,:)=0.
-ZCDRAG(:,:,:)=0.
-ZDENSITY(:,:,:)=0.
-!
-ALLOCATE(ZH_TREE_PGD(IIU,IJU))
-ALLOCATE(ZLAI_PGD(IIU,IJU))
-!
-CALL MNHGET_SURF_PARAM_n(PH_TREE=ZH_TREE_PGD,PLAI_TREE=ZLAI_PGD)
-!
-ZVH(:,:)=ZH_TREE_PGD(:,:)
-ZLAI(:,:)=ZLAI_PGD(:,:)
-!
-DEALLOCATE(ZH_TREE_PGD)
-DEALLOCATE(ZLAI_PGD)
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       1.     COMPUTES THE TRUE VELOCITY COMPONENTS
-!	        -------------------------------------
-!
-ZUT(:,:,:) = PUT(:,:,:) 
-ZVT(:,:,:) = PVT(:,:,:) 
-ZTKET(:,:,:) = PTKET(:,:,:) 
-!-------------------------------------------------------------------------------
-!
-!*      1.     Computations of wind tendency due to canopy drag
-!              ------------------------------------------------
-!
-!
-!
-! Ext = - Cdrag  * u- * u- * Sv       tree canopy drag
-!       - u'w'(ground)     * Sh       horizontal surfaces (ground)
-!
-!*      1.1    Drag coefficient by vegetation (Patton et al 2001)
-!              ------------------------------
-!
-GDEP(:,:,:) = .FALSE.
-DO JJ=2,(IJU-1)
- DO JI=2,(IIU-1)
-   IF (ZVH(JI,JJ) /= 0) THEN
-     DO JK=2,(IKU-1) 
-         IF ((ZVH(JI,JJ)+PZZ(JI,JJ,2))<PZZ(JI,JJ,JK)) EXIT
-         IF ((HCLOUD=='C2R2') .OR.  (HCLOUD=='KHKO')) THEN
-           IF ((PRRS(JI,JJ,JK,2) >0.) .AND. (PSVS(JI,JJ,JK,NSV_C2R2BEG+1) >0.)) &
-                   GDEP(JI,JJ,JK) = .TRUE.
-         ELSE IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'REVE') THEN
-           IF (PRRS(JI,JJ,JK,2) >0.) GDEP(JI,JJ,JK) = .TRUE.
-         END IF
-         ZCDRAG(JI,JJ,JK)  = 0.2 !0.075
-         ZDENSITY(JI,JJ,JK) = MAX((4 * (ZLAI(JI,JJ) *&
-                              (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
-                              (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
-                              (ZVH(JI,JJ)-(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)))/&
-                              ZVH(JI,JJ)**3)-&
-                              (0.30*((ZLAI(JI,JJ) *&
-                              (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
-                              (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
-                              (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) /&
-                              (ZVH(JI,JJ)**3))-ZLAI(JI,JJ))))/&
-                              ZVH(JI,JJ), 0.)
+  !
+  USE MODI_SHUMAN
+  USE MODD_PGDFIELDS
+  USE MODD_GROUND_PAR
+  USE MODI_MNHGET_SURF_PARAM_n
+  USE MODI_BUDGET
 
-                                            
-     END DO
-   END IF
- END DO
-END DO
-! To exclude the first vertical level already dealt in rain_ice or rain_c2r2_khko
-GDEP(:,:,2) = .FALSE.
-!
-!*      1.2    Drag force by wall surfaces
-!              ---------------------------
-!
-!* drag force by vertical surfaces
-!
-ZUS(:,:,:)=  ZUT(:,:,:)/(1 + ZCDRAG(:,:,:)* ZDENSITY(:,:,:)*PTSTEP &
-            *SQRT(ZUT(:,:,:)**2+ZVT(:,:,:)**2))
-!
-ZVS(:,:,:)=  ZVT(:,:,:)/(1 + ZCDRAG(:,:,:)* ZDENSITY(:,:,:)*PTSTEP &
-            *SQRT(ZUT(:,:,:)**2+ZVT(:,:,:)**2))
-!
-PRUS(:,:,:)=PRUS(:,:,:)+((ZUS(:,:,:)-ZUT(:,:,:))*PRHODJ(:,:,:))/PTSTEP
-!
-PRVS(:,:,:)=PRVS(:,:,:)+((ZVS(:,:,:)-ZVT(:,:,:))*PRHODJ(:,:,:))/PTSTEP
-!
-IF (ODEPOTREE) THEN
-  ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-  ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
-  ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
-  ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
-  ZWDEPR(:,:,:)= 0.
-  ZWDEPS(:,:,:)= 0.
-  WHERE (GDEP)
-   ZWDEPR(:,:,:)= PVDEPOTREE * PRT(:,:,:,2) * PRHODJ(:,:,:)
-  END WHERE
-  IF ((HCLOUD=='C2R2') .OR.  (HCLOUD=='KHKO')  .OR.  (HCLOUD=='LIMA')) THEN
-   WHERE (GDEP)
-   ZWDEPS(:,:,:)= PVDEPOTREE * PSVT(:,:,:,NSV_C2R2BEG+1) * PRHODJ(:,:,:)
-   END WHERE
-  END IF
+  !  
+  IMPLICIT NONE
+  !  
+  !*       0.1   Declarations of dummy arguments :
+  !
+  REAL,                     INTENT(IN)    :: PTSTEP ! Time step
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT, PVT   ! variables
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTKET           !   at t
+  LOGICAL,                  INTENT(IN)    :: ODEPOTREE ! Droplet deposition on tree
+  REAL,                     INTENT(IN)    :: PVDEPOTREE! Velocity deposition on tree
+  CHARACTER (LEN=4),        INTENT(IN)    :: HCLOUD       ! Kind of microphysical scheme
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST          !   at t
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT          !   at t
+  REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT             !   at t
+  REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT            !   at t
+  !
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ    ! dry Density * Jacobian
+  REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ       ! Height (z)
+  !
+  REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRUS, PRVS       ! Sources of Momentum
+  REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTKES           ! Sources of Tke
+  REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS         
+  REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       
+  REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS          
+  !
+  !*       0.2   Declarations of local variables :
+  !
+  INTEGER :: IIU,IJU,IKU,IKV  ! array size along the k direction 
+  INTEGER :: JI, JJ, JK       ! loop index
+  !
+  REAL, DIMENSION(:,:), ALLOCATABLE :: ZH_TREE_PGD ! surface cover types
+  REAL, DIMENSION(:,:), ALLOCATABLE :: ZLAI_PGD    ! surface cover types
+  REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: &
+       ZWORK1, ZWORK2, ZWORK3, ZUT_SCAL, ZVT_SCAL, &
+       ZUS, ZVS, ZTKES, ZTKET
+  REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: &
+       ZCDRAG, ZDENSITY
+  !
+  REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) ::           &
+       ZH,ZLAI           !  LAI, Vegetation height
+  REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZT,ZEXN,ZLV,ZCPH                              
+  LOGICAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) &
+       :: GDEP
+  REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZWDEPR,ZWDEPS
+  !
+  !*       0.3     Initialisation de kelkes variables
+  !
+  IIU = SIZE(PUT,1)
+  IJU = SIZE(PUT,2)
+  IKU = SIZE(PUT,3)
+  !
+  ZUS   (:,:,:) = 0.0
+  ZVS   (:,:,:) = 0.0
+  ZTKES (:,:,:) = 0.0
+  !
+  ZH (:,:) = 0.
+  ZLAI   (:,:) = 0.
+  !
+  ZCDRAG   (:,:,:) = 0.
+  ZDENSITY (:,:,:) = 0.
+  !
+  ALLOCATE(ZH_TREE_PGD(IIU,IJU))
+  ALLOCATE(ZLAI_PGD(IIU,IJU))
+  !
+  ZH_TREE_PGD     (:,:) = XUNDEF
+  ZLAI_PGD        (:,:) = XUNDEF
+  !
+  CALL MNHGET_SURF_PARAM_n( PH_TREE = ZH_TREE_PGD, PLAI_TREE = ZLAI_PGD )
+  !
+  ZH  (:,:) = ZH_TREE_PGD(:,:)
+  ZLAI(:,:) = ZLAI_PGD(:,:)
+  !
+  WHERE ( ZH   (:,:).GT.998.0 ) ZH   (:,:) = 0.0
+  WHERE ( ZLAI (:,:).GT.998.0 ) ZLAI (:,:) = 0.0
+  !
+  DEALLOCATE(ZH_TREE_PGD)
+  DEALLOCATE(ZLAI_PGD)
+  !
+  !-------------------------------------------------------------------------------
+  !
+  !
+  !*       1.     COMPUTES THE TRUE VELOCITY COMPONENTS
+  !	        -------------------------------------
+  !
+  ZUT_SCAL(:,:,:) = MXF(PUT(:,:,:))
+  ZVT_SCAL(:,:,:) = MYF(PVT(:,:,:))
+  ZTKET(:,:,:)    = PTKET(:,:,:)
+  !-------------------------------------------------------------------------------
+  !
+  !*      1.     Computations of wind tendency due to canopy drag
+  !              ------------------------------------------------
+  !
+  !
+  !
+  ! Ext = - Cdrag  * u- * u- * Sv       tree canopy drag
+  !       - u'w'(ground)     * Sh       horizontal surfaces (ground)
+  !
+  !*      1.1    Drag coefficient by vegetation (Patton et al 2001)
+  !              ------------------------------
+  !
+  GDEP(:,:,:) = .FALSE.
+  !
   DO JJ=2,(IJU-1)
-   DO JI=2,(IIU-1)
-     DO JK=2,(IKU-2) 
-       IF (GDEP(JI,JJ,JK)) THEN
-          PRRS(JI,JJ,JK,2) = PRRS(JI,JJ,JK,2) + (ZWDEPR(JI,JJ,JK+1)-ZWDEPR(JI,JJ,JK))/ &
-                             (PZZ(JI,JJ,JK+1)-PZZ(JI,JJ,JK))
-         IF ((HCLOUD=='C2R2') .OR.  (HCLOUD=='KHKO').OR.  (HCLOUD=='LIMA')) THEN
-          PSVS(JI,JJ,JK,NSV_C2R2BEG+1) =  PSVS(JI,JJ,JK,NSV_C2R2BEG+1) + &
-                   (ZWDEPS(JI,JJ,JK+1)-ZWDEPS(JI,JJ,JK))/(PZZ(JI,JJ,JK+1)-PZZ(JI,JJ,JK))
-         END IF
-       END IF
+     DO JI=2,(IIU-1)
+        !
+        ! Set density and drag coefficient for vegetation
+        !
+        IF (ZH(JI,JJ) /= 0) THEN
+           !
+           DO JK=2,(IKU-1)
+              !
+              IF ( (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) .LT. ZH(JI,JJ) ) THEN
+                 !
+                 IF ((HCLOUD=='C2R2') .OR.  (HCLOUD=='KHKO')) THEN
+                    IF ((PRRS(JI,JJ,JK,2) >0.) .AND. (PSVS(JI,JJ,JK,NSV_C2R2BEG+1) >0.)) &
+                         GDEP(JI,JJ,JK) = .TRUE.
+                 ELSE IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'REVE') THEN
+                    IF (PRRS(JI,JJ,JK,2) >0.) GDEP(JI,JJ,JK) = .TRUE.
+                 ENDIF
+                 !
+                 ZCDRAG(JI,JJ,JK)  = 0.2 !0.075
+                 ZDENSITY(JI,JJ,JK) = MAX((4 * (ZLAI(JI,JJ) *&
+                      (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
+                      (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
+                      (ZH(JI,JJ)-(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)))/&
+                      ZH(JI,JJ)**3)-&
+                      (0.30*((ZLAI(JI,JJ) *&
+                      (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
+                      (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
+                      (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) /&
+                      (ZH(JI,JJ)**3))-ZLAI(JI,JJ))))/&
+                      ZH(JI,JJ), 0.)
+                 !
+              ENDIF
+              !
+           ENDDO
+        ENDIF
+        !
+     ENDDO
+  ENDDO
+  !
+  ! To exclude the first vertical level already dealt in rain_ice or rain_c2r2_khko
+  GDEP(:,:,2) = .FALSE.
+  !
+  !*      1.2    Drag force by wall surfaces
+  !              ---------------------------
+  !
+  !* drag force by vertical surfaces
+  !
+  ZUS(:,:,:) = PUT(:,:,:)/( 1.0 + MXM ( ZCDRAG(:,:,:) * ZDENSITY(:,:,:) & 
+       * PTSTEP * SQRT(ZUT_SCAL(:,:,:)**2+ZVT_SCAL(:,:,:)**2) ) )
+  !
+  ZVS(:,:,:) = PVT(:,:,:)/( 1.0 + MYM ( ZCDRAG(:,:,:) * ZDENSITY(:,:,:) &
+       * PTSTEP * SQRT(ZUT_SCAL(:,:,:)**2+ZVT_SCAL(:,:,:)**2) ) )
+  !
+  PRUS(:,:,:) = PRUS(:,:,:) + (ZUS(:,:,:)-PUT(:,:,:)) * MXM(PRHODJ(:,:,:)) / PTSTEP
+  !
+  PRVS(:,:,:) = PRVS(:,:,:) + (ZVS(:,:,:)-PVT(:,:,:)) * MYM(PRHODJ(:,:,:)) / PTSTEP
+  !
+  IF (ODEPOTREE) THEN
+     ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
+     ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
+     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
+     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
+     ZWDEPR(:,:,:)= 0.
+     ZWDEPS(:,:,:)= 0.
+     WHERE (GDEP)
+        ZWDEPR(:,:,:)= PVDEPOTREE * PRT(:,:,:,2) * PRHODJ(:,:,:)
+     END WHERE
+     IF ((HCLOUD=='C2R2') .OR.  (HCLOUD=='KHKO')  .OR.  (HCLOUD=='LIMA')) THEN
+        WHERE (GDEP)
+           ZWDEPS(:,:,:)= PVDEPOTREE * PSVT(:,:,:,NSV_C2R2BEG+1) * PRHODJ(:,:,:)
+        END WHERE
+     END IF
+     DO JJ=2,(IJU-1)
+        DO JI=2,(IIU-1)
+           DO JK=2,(IKU-2) 
+              IF (GDEP(JI,JJ,JK)) THEN
+                 PRRS(JI,JJ,JK,2) = PRRS(JI,JJ,JK,2) + (ZWDEPR(JI,JJ,JK+1)-ZWDEPR(JI,JJ,JK))/ &
+                      (PZZ(JI,JJ,JK+1)-PZZ(JI,JJ,JK))
+                 IF ((HCLOUD=='C2R2') .OR.  (HCLOUD=='KHKO').OR.  (HCLOUD=='LIMA')) THEN
+                    PSVS(JI,JJ,JK,NSV_C2R2BEG+1) =  PSVS(JI,JJ,JK,NSV_C2R2BEG+1) + &
+                         (ZWDEPS(JI,JJ,JK+1)-ZWDEPS(JI,JJ,JK))/(PZZ(JI,JJ,JK+1)-PZZ(JI,JJ,JK))
+                 END IF
+              END IF
+           END DO
+        END DO
      END DO
-    END DO
-   END DO
-!
-!
-END IF
-!
-IF (LBUDGET_U) CALL BUDGET (PRUS,1,'DRAG_BU_RU')
-IF (LBUDGET_V) CALL BUDGET (PRVS,2,'DRAG_BU_RV')
-IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'DEPOTR_BU_RRC')
-IF (LBUDGET_SV) CALL BUDGET (PSVS(:,:,:,NSV_C2R2BEG+1),14+(NSV_C2R2BEG-1),'DEPOTR_BU_RSV')
-!
-!
-!*      3.     Computations of TKE  tendency due to canopy drag
-!              ------------------------------------------------
-
-!*      3.1    Creation of TKE by wake
-!              -----------------------
-!
-! from Kanda and Hino (1994)
-!
-! Ext = + Cd * u+^3  * Sv/Vair        vertical surfaces or trees             
-! Ext = - Cd * e * u  * Sv        trees Destruction of TKE due to 
-!   small-scale motions forced by leaves from Kanda and Hino (1994)
-!
-! with Vair = Vair/Vtot * Vtot = (Vair/Vtot) * Stot * Dz
-! and  Sv/Vair = (Sv/Stot) * Stot/Vair = (Sv/Stot) / (Vair/Vtot) / Dz
-!
-!ZTKES(:,:,:)=  (ZTKET(:,:,:) + (ZCDRAG(:,:,:)* ZDENSITY(:,:,:) &
-!            *(SQRT(ZUT(:,:,:)**2+ZVT(:,:,:)**2))**3))   /&
-!            (1.+(2.*ZCDRAG(:,:,:)* ZDENSITY(:,:,:)*SQRT(ZUT(:,:,:)**2+ZVT(:,:,:)**2)))
-ZTKES(:,:,:)=  (ZTKET(:,:,:) + (ZCDRAG(:,:,:)* ZDENSITY(:,:,:) &
-            *(SQRT(ZUT(:,:,:)**2+ZVT(:,:,:)**2))**3))*PTSTEP   /&
-            (1.+PTSTEP*ZCDRAG(:,:,:)* ZDENSITY(:,:,:)*SQRT(ZUT(:,:,:)**2+ZVT(:,:,:)**2))
-!
-PRTKES(:,:,:)=PRTKES(:,:,:)+((ZTKES(:,:,:)-ZTKET(:,:,:))*PRHODJ(:,:,:)/PTSTEP)
-!
-IF (LBUDGET_TKE) CALL BUDGET (PRTKES(:,:,:),5,'DRAG_BU_RTKE')
-!
+     !
+  END IF
+  !
+  IF (LBUDGET_U) CALL BUDGET (PRUS,1,'DRAG_BU_RU')
+  IF (LBUDGET_V) CALL BUDGET (PRVS,2,'DRAG_BU_RV')
+  IF (ODEPOTREE) THEN
+    IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'DEPOTR_BU_RRC')
+    IF (LBUDGET_SV) CALL BUDGET (PSVS(:,:,:,NSV_C2R2BEG+1),14+(NSV_C2R2BEG-1),'DEPOTR_BU_RSV')
+  END IF
+  !
+  !*      3.     Computations of TKE  tendency due to canopy drag
+  !              ------------------------------------------------
+  !*      3.1    Creation of TKE by wake
+  !              -----------------------
+  !
+  ! from Kanda and Hino (1994)
+  !
+  ! Ext = + Cd * u+^3  * Sv/Vair        vertical surfaces or trees             
+  ! Ext = - Cd * e * u  * Sv        trees Destruction of TKE due to 
+  !   small-scale motions forced by leaves from Kanda and Hino (1994)
+  !
+  ! with Vair = Vair/Vtot * Vtot = (Vair/Vtot) * Stot * Dz
+  ! and  Sv/Vair = (Sv/Stot) * Stot/Vair = (Sv/Stot) / (Vair/Vtot) / Dz
+  !
+  ZTKES(:,:,:)=  ( ZTKET(:,:,:) + PTSTEP * ZCDRAG(:,:,:) * ZDENSITY(:,:,:) &
+           * (SQRT( ZUT_SCAL(:,:,:)**2 + ZVT_SCAL(:,:,:)**2 ))**3 ) /      &
+       ( 1. + PTSTEP * ZCDRAG(:,:,:) * ZDENSITY(:,:,:) * SQRT(ZUT_SCAL(:,:,:)**2+ZVT_SCAL(:,:,:)**2))
+  !
+  PRTKES(:,:,:) = PRTKES(:,:,:) + (ZTKES(:,:,:)-ZTKET(:,:,:))*PRHODJ(:,:,:)/PTSTEP
+  !
+  IF (LBUDGET_TKE) CALL BUDGET (PRTKES(:,:,:),5,'DRAG_BU_RTKE')
+  !
 END SUBROUTINE DRAG_VEG
diff --git a/src/MNH/forcing.f90 b/src/MNH/forcing.f90
index 3163cb1ae95584c7e7a318bf245560f5d3229ab1..f8073f8ddddfc0fdfdcf5f786de660c485daebe3 100644
--- a/src/MNH/forcing.f90
+++ b/src/MNH/forcing.f90
@@ -11,7 +11,7 @@ INTERFACE
 !
       SUBROUTINE FORCING ( PTSTEP, OUSERV, PRHODJ, PCORIOZ,                &
                            PZHAT,  PZZ,  TPDTCUR,                          &
-                           PUFRC_PAST, PVFRC_PAST,                         &
+                           PUFRC_PAST, PVFRC_PAST,  PWTFRC,                &
                            PUT,  PVT,  PWT,  PTHT,  PTKET,  PRT,  PSVT,    &
                            PRUS, PRVS, PRWS, PRTHS, PRTKES, PRRS, PRSVS,   &
                            KMI,PJ)
@@ -29,6 +29,8 @@ TYPE (DATE_TIME),       INTENT(IN) :: TPDTCUR ! current date and time
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUFRC_PAST, PVFRC_PAST 
 !                                             ! forcing at previous time-step
 !
+REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PWTFRC ! large scale vertical wind
+!
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT,PVT,PWT,PTHT,PTKET 
                                           ! wind, potential temperature and
                                           ! TKE at time t
@@ -53,7 +55,7 @@ END MODULE MODI_FORCING
 !     ######################################################################
       SUBROUTINE FORCING ( PTSTEP, OUSERV, PRHODJ, PCORIOZ,                &
                            PZHAT,  PZZ,  TPDTCUR,                          &
-                           PUFRC_PAST, PVFRC_PAST,                         &
+                           PUFRC_PAST, PVFRC_PAST, PWTFRC,                 &
                            PUT,  PVT,  PWT,  PTHT,  PTKET,  PRT,  PSVT,    &
                            PRUS, PRVS, PRWS, PRTHS, PRTKES, PRRS, PRSVS,   &
                            KMI,PJ)
@@ -183,6 +185,8 @@ TYPE (DATE_TIME),       INTENT(IN) :: TPDTCUR ! current date and time
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PUFRC_PAST, PVFRC_PAST 
 !                                             ! forcing at previous time-step
 !
+REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PWTFRC ! large scale vertical wind
+!
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PUT,PVT,PWT,PTHT,PTKET 
                                           ! wind, potential temperature and
                                           ! TKE at time t
@@ -607,7 +611,7 @@ END DO
 !
 ! store large scale w in module to be used later
 ! in convection scheme
-XWTFRC(:,:,:) = ZWF(:,:,:) 
+PWTFRC(:,:,:) = ZWF(:,:,:)
 !
 !* computes evolution of forcing wind
 WHERE(PUFRC_PAST==XUNDEF) PUFRC_PAST = ZUF(:,:,:)
diff --git a/src/MNH/goto_model_wrapper.f90 b/src/MNH/goto_model_wrapper.f90
index 8774b548f230f23bd8ac2e48bfed340df491a843..1d11087bf9d4c9b9ce3636b148ce7f1d5a786009 100644
--- a/src/MNH/goto_model_wrapper.f90
+++ b/src/MNH/goto_model_wrapper.f90
@@ -15,6 +15,7 @@
 !                   02/2018 Q.Libois ECRAD
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !                  2017 V.Vionnet blow snow
+!                  11/2019 C.Lac correction in the drag formula and application to building in addition to tree
 !-----------------------------------------------------------------
 MODULE MODI_GOTO_MODEL_WRAPPER
 
@@ -42,6 +43,8 @@ USE MODD_CONF_n
 USE MODD_CURVCOR_n
 !USE MODD_DEEP_CONVECTION_n
 USE MODD_DIM_n
+USE MODD_DRAGTREE_n
+USE MODD_DRAGBLDG_n
 USE MODD_DUMMY_GR_FIELD_n
 USE MODD_DYN_n
 USE MODD_DYNZD_n
@@ -152,6 +155,8 @@ CALL CONF_GOTO_MODEL(KFROM, KTO)
 CALL CURVCOR_GOTO_MODEL(KFROM, KTO)
 !CALL DEEP_CONVECTION_GOTO_MODEL(KFROM, KTO)
 CALL DIM_GOTO_MODEL(KFROM, KTO)
+CALL DRAGTREE_GOTO_MODEL(KFROM, KTO)
+CALL DRAGBLDG_GOTO_MODEL(KFROM, KTO)
 CALL DUMMY_GR_FIELD_GOTO_MODEL(KFROM, KTO)
 CALL DYN_GOTO_MODEL(KFROM, KTO)
 CALL DYNZD_GOTO_MODEL(KFROM,KTO)
diff --git a/src/MNH/ice_adjust.f90 b/src/MNH/ice_adjust.f90
index d89d7227fd120a31677f451e7c38c069c5c8a89d..3e9e2ef8cdd83a6998aa096e98553f5415aa3d7a 100644
--- a/src/MNH/ice_adjust.f90
+++ b/src/MNH/ice_adjust.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2020 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.
@@ -23,7 +23,7 @@ INTEGER,                  INTENT(IN)    :: KKU   !uppest atmosphere array index
 INTEGER,                  INTENT(IN)    :: KKL   !vert. levels type 1=MNH -1=ARO
 INTEGER,                  INTENT(IN)    :: KRR      ! Number of moist variables
 CHARACTER(len=1),         INTENT(IN)    :: HFRAC_ICE
-CHARACTER(len=4),         INTENT(IN)    :: HBUNAME  ! Name of the budget
+CHARACTER(len=*),         INTENT(IN)    :: HBUNAME  ! Name of the budget
 LOGICAL,                  INTENT(IN)    :: OSUBG_COND ! Switch for Subgrid 
                                                     ! Condensation
 LOGICAL                                 :: OSIGMAS  ! Switch for Sigma_s: 
@@ -164,7 +164,7 @@ END MODULE MODI_ICE_ADJUST
 !!                         or to call it on S variables
 !!      2016-11 S. Riette: all-or-nothing adjustment now uses condensation
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!  P. Wautelet 24/02/2020: bugfix: corrected budget name (DEPI->CDEPI) for ice_adjust
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -192,7 +192,7 @@ INTEGER,                  INTENT(IN)    :: KKU  !uppest atmosphere array index
 INTEGER,                  INTENT(IN)    :: KKL  !vert. levels type 1=MNH -1=ARO
 INTEGER,                  INTENT(IN)    :: KRR      ! Number of moist variables
 CHARACTER(len=1),         INTENT(IN)    :: HFRAC_ICE
-CHARACTER(len=4),         INTENT(IN)    :: HBUNAME  ! Name of the budget
+CHARACTER(len=*),         INTENT(IN)    :: HBUNAME  ! Name of the budget
 LOGICAL,                  INTENT(IN)    :: OSUBG_COND ! Switch for Subgrid 
                                                     ! Condensation
 LOGICAL                                 :: OSIGMAS  ! Switch for Sigma_s: 
@@ -430,10 +430,10 @@ ENDIF
 !*       6.  STORE THE BUDGET TERMS
 !            ----------------------
 !
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,HBUNAME//'_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,HBUNAME//'_BU_RRC')
-IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),9,HBUNAME//'_BU_RRI')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,HBUNAME//'_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,trim(HBUNAME)//'_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,trim(HBUNAME)//'_BU_RRC')
+IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),9,trim(HBUNAME)//'_BU_RRI')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,trim(HBUNAME)//'_BU_RTH')
 !
 !------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ice_adjust_elec.f90 b/src/MNH/ice_adjust_elec.f90
index 8d802babf157138a461aeff09c479f519d42149b..79382ad2828ca1567e8d1953430e4ced316f6002 100644
--- a/src/MNH/ice_adjust_elec.f90
+++ b/src/MNH/ice_adjust_elec.f90
@@ -625,15 +625,15 @@ ENDIF
 !*       6.  STORE THE BUDGET TERMS
 !            ----------------------
 !
-IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,'DEPI_BU_RRV')
-IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,'DEPI_BU_RRC')
-IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),9,'DEPI_BU_RRI')
-IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,'DEPI_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:) * PRHODJ(:,:,:),6,'CDEPI_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:) * PRHODJ(:,:,:),7,'CDEPI_BU_RRC')
+IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:) * PRHODJ(:,:,:),9,'CDEPI_BU_RRI')
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:),4,'CDEPI_BU_RTH')
 IF (LBUDGET_SV) THEN
-  CALL BUDGET(PQPIS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECBEG, 'DEPI_BU_RSV')
-  CALL BUDGET(PQNIS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECEND, 'DEPI_BU_RSV')
-  CALL BUDGET(PQCS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECBEG+1, 'DEPI_BU_RSV')
-  CALL BUDGET(PQIS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECBEG+3, 'DEPI_BU_RSV')
+  CALL BUDGET(PQPIS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECBEG, 'CDEPI_BU_RSV')
+  CALL BUDGET(PQNIS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECEND, 'CDEPI_BU_RSV')
+  CALL BUDGET(PQCS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECBEG+1, 'CDEPI_BU_RSV')
+  CALL BUDGET(PQIS(:,:,:) * PRHODJ(:,:,:), 12+NSV_ELECBEG+3, 'CDEPI_BU_RSV')
 END IF
 !
 !------------------------------------------------------------------------------
diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index f0707d44a4f05f3929ac26bf41a1504d98f88bce..6808bbc6ce0f615d2ce245b2016efe89c4c6547d 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2020 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.
@@ -152,8 +152,12 @@ END MODULE MODI_INI_BUDGET
 !!      C. Barthe       01/2016   Add budget for LIMA
 !!      C.Lac          10/2016   Add budget for droplet deposition
 !!      S. Riette        11/2016  New budgets for ICE3/ICE4
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 24/02/2020: bugfix: corrected condition for budget NCDEPITH
+!  P. Wautelet 26/02/2020: bugfix: rename CEVA->REVA for budget for raindrop evaporation in C2R2 (necessary after commit 4ed805fc)
+!  P. Wautelet 26/02/2020: bugfix: add missing condition on OCOLD for NSEDIRH budget in LIMA case
+!  B. Vie      02/03/2020: LIMA negativity checks after turbulence, advection and microphysics budgets
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -774,14 +778,16 @@ IF (LBU_RTH) THEN
   IPROC=IPROC+1
   IF (HTURB /= 'NONE')     IPROACTV(4,IPROC) = NDISSHTH
   IPROC=IPROC+1
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2'))) &
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
           IPROACTV(4,IPROC) = NNETURTH
   IPROC=IPROC+1
   IF ( HSCONV == 'EDKF' ) IPROACTV(4,IPROC) = NMAFLTH
   IPROC=IPROC+1
   IPROACTV(4,IPROC) = NADVTH
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  IPROACTV(4,IPROC) = NNEADVTH
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(4,IPROC) = NNEADVTH
   IPROC=IPROC+1
   IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
           IPROACTV(4,IPROC) = NNEGATH
@@ -878,15 +884,16 @@ IF (LBU_RTH) THEN
       IPROC=IPROC+1
       IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(4,IPROC) = NCORRTH
       IPROC=IPROC+1
-      IF (HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED .OR. (LRED .AND. LADJ_AFTER)) &
-          IPROACTV(4,IPROC) = NCDEPITH 
+      IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) &
+          IPROACTV(4,IPROC) = NCDEPITH
       IPROC=IPROC+1
       IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. HCLOUD(1:3) == 'KES' .OR.   &
       HCLOUD == 'REVE')   IPROACTV(4,IPROC) = NCONDTH                     
       IPROC=IPROC+1
-      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))&
+   END IF
+      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2').OR.  (HCLOUD == 'KESS')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
           IPROACTV(4,IPROC) = NNECONTH
-    END IF
 !
   YWORK2(4,1) = 'INIF_'
   YWORK2(4,2) = 'ENDF_'
@@ -1023,8 +1030,9 @@ IF (LBU_RTH) THEN
      IPROC=IPROC+1
      YWORK2(4,IPROC) = 'COND_'
      IPROC=IPROC+1
-     YWORK2(4,IPROC) = 'NECON_'
   END IF
+  YWORK2(4,IPROC) = 'NECON_'
+  IPROC=IPROC+1
 !
   YEND_COMMENT(4) = 'BU_RTH'
   NBUPROCNBR(4) = 3
@@ -1154,14 +1162,16 @@ IF (LBU_RRV) THEN
     END IF
   END IF 
   IPROC=IPROC+1 
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2'))) &
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))) &
    IPROACTV(6,IPROC) = NNETURRV
   IPROC=IPROC+1 
   IF ( HSCONV == 'EDKF' ) IPROACTV(6,IPROC) = NMAFLRV
   IPROC=IPROC+1 
   IPROACTV(6,IPROC) = NADVRV
   IPROC=IPROC+1   
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  IPROACTV(6,IPROC) = NNEADVRV
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(6,IPROC) = NNEADVRV
   IPROC=IPROC+1 
   IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
      IPROACTV(6,IPROC) = NNEGARV
@@ -1213,10 +1223,11 @@ IF (LBU_RRV) THEN
   IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) &
           IPROACTV(6,IPROC) = NCDEPIRV 
   IPROC=IPROC+1
-  IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2')) &
+END IF
+  IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2') .OR.  (HCLOUD == 'KESS')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) &
           IPROACTV(6,IPROC) = NNECONRV
   IPROC=IPROC+1   
-END IF
 
 !
   YWORK2(6,1) = 'INIF_'
@@ -1291,9 +1302,9 @@ ELSE
   YWORK2(6,IPROC) = 'CORR_'
   IPROC=IPROC+1
   YWORK2(6,IPROC) = 'CDEPI_'
+END IF
   IPROC=IPROC+1
   YWORK2(6,IPROC) = 'NECON_'
-END IF
 !
   YEND_COMMENT(6) = 'BU_RRV'
   NBUPROCNBR(6) = 3
@@ -1348,12 +1359,14 @@ IF (LBU_RRC) THEN
     END IF
   END IF 
   IPROC=IPROC+1
-  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2'))) &
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))) &
       IPROACTV(7,IPROC) = NNETURRC
   IPROC=IPROC+1
   IPROACTV(7,IPROC) = NADVRC
   IPROC=IPROC+1
-  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2'))  &
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  &
       IPROACTV(7,IPROC) = NNEADVRC
   IPROC=IPROC+1
   IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') &
@@ -1460,10 +1473,11 @@ IF (LBU_RRC) THEN
   IF (HCLOUD == 'C2R2'.OR. HCLOUD == 'KHKO' .OR. &
       HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE') IPROACTV(7,IPROC) = NCONDRC
   IPROC=IPROC+1
-  IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2')) &
+END IF
+  IF ( (HCLOUD == 'KHKO' )  .OR.  (HCLOUD == 'C2R2') .OR.  (HCLOUD == 'KESS')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) &
      IPROACTV(7,IPROC) = NNECONRC
   IPROC=IPROC+1
-  END IF
 
 !
   YWORK2(7,1) = 'INIF_'
@@ -1581,9 +1595,9 @@ IF (LBU_RRC) THEN
      YWORK2(7,IPROC) = 'CDEPI_'
      IPROC=IPROC+1
      YWORK2(7,IPROC) = 'COND_'
-     IPROC=IPROC+1
-     YWORK2(7,IPROC) = 'NECON_'
   END IF
+  IPROC=IPROC+1
+  YWORK2(7,IPROC) = 'NECON_'
 !
   YEND_COMMENT(7) = 'BU_RRC'
   NBUPROCNBR(7) = 3
@@ -1622,8 +1636,14 @@ IF (LBU_RRR) THEN
     END IF
   END IF
   IPROC=IPROC+1
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(8,IPROC) = NNETURRR
+  IPROC=IPROC+1
   IPROACTV(8,IPROC) = NADVRR
   IPROC=IPROC+1
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(8,IPROC) = NNEADVRR
+  IPROC=IPROC+1
   IF ( HCLOUD /= 'NONE' ) IPROACTV(8,IPROC) = NNEGARR
   IPROC=IPROC+1
 
@@ -1657,6 +1677,7 @@ IF (LBU_RRR) THEN
      IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(8,IPROC) = NWETHRR 
      IPROC=IPROC+1
      IF (.NOT.OPTSPLIT .AND. OHAIL)                     IPROACTV(8,IPROC) = NHMLTRR 
+     IPROC=IPROC+1
   ELSE
      IF (HCLOUD(1:3) == 'KES' )   IPROACTV(8,IPROC) = NSEDIRR 
      IPROC=IPROC+1
@@ -1713,6 +1734,9 @@ IF (LBU_RRR) THEN
        IPROACTV(8,IPROC) = NSEDIRR
      IPROC=IPROC+1
   END IF
+      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
+          IPROACTV(8,IPROC) = NNECONRR
 !
   YWORK2(8,1) = 'INIF_'
   YWORK2(8,2) = 'ENDF_'
@@ -1728,8 +1752,12 @@ IF (LBU_RRR) THEN
   IPROC=IPROC+1
   YWORK2(8,IPROC) = 'REL_'
   IPROC=IPROC+1
+  YWORK2(8,IPROC) = 'NETUR_'
+  IPROC=IPROC+1
   YWORK2(8,IPROC) = 'ADV_'
   IPROC=IPROC+1
+  YWORK2(8,IPROC) = 'NEADV_'
+  IPROC=IPROC+1
   YWORK2(8,IPROC) = 'NEGA_'
   IPROC=IPROC+1
 
@@ -1763,7 +1791,6 @@ IF (HCLOUD == 'LIMA') THEN
   YWORK2(8,IPROC) = 'WETH_'
   IPROC=IPROC+1
   YWORK2(8,IPROC) = 'HMLT_'
-  IPROC=IPROC+1
 ELSE
   YWORK2(8,IPROC) = 'SEDI_'
   IPROC=IPROC+1
@@ -1811,6 +1838,8 @@ ELSE
   IPROC=IPROC+1
   YWORK2(8,IPROC) = 'SEDI_'
 END IF
+  IPROC=IPROC+1
+  YWORK2(8,IPROC) = 'NECON_'
 !
   YEND_COMMENT(8) = 'BU_RRR'
   NBUPROCNBR(8) = 3
@@ -1863,8 +1892,15 @@ IF (LBU_RRI) THEN
     END IF
   END IF 
   IPROC=IPROC+1
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
+          IPROACTV(9,IPROC) = NNETURRI
+  IPROC=IPROC+1
   IPROACTV(9,IPROC) = NADVRI
   IPROC=IPROC+1
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(9,IPROC) = NNEADVRI
+  IPROC=IPROC+1
   IF( HCLOUD /= 'NONE' ) IPROACTV(9,IPROC) = NNEGARI
   IPROC=IPROC+1
 
@@ -1903,7 +1939,8 @@ IF (LBU_RRI) THEN
      IPROC=IPROC+1
      IF (.NOT.OPTSPLIT .AND. OHAIL) IPROACTV(9,IPROC) = NWETHRI
      IPROC=IPROC+1
-                                       IPROACTV(9,IPROC) = NCEDSRI
+     IPROACTV(9,IPROC) = NCEDSRI
+     IPROC=IPROC+1
   ELSE
      IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) IPROACTV(9,IPROC) = NADJURI
      IPROC=IPROC+1
@@ -1942,6 +1979,9 @@ IF (LBU_RRI) THEN
              IPROACTV(9,IPROC) = NCDEPIRI
      IPROC=IPROC+1
   END IF
+      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
+          IPROACTV(9,IPROC) = NNECONRI
 !
   YWORK2(9,1) = 'INIF_'
   YWORK2(9,2) = 'ENDF_'
@@ -1963,8 +2003,12 @@ IF (LBU_RRI) THEN
   IPROC=IPROC+1
   YWORK2(9,IPROC) = 'HTURB_'
   IPROC=  IPROC+1
+  YWORK2(9,IPROC) = 'NETUR_'
+  IPROC=  IPROC+1
   YWORK2(9,IPROC) = 'ADV_'
   IPROC=IPROC+1
+  YWORK2(9,IPROC) = 'NEADV_'
+  IPROC=  IPROC+1
   YWORK2(9,IPROC) = 'NEGA_'
   IPROC=  IPROC+1
   IF (HCLOUD=='LIMA') THEN
@@ -2036,6 +2080,8 @@ IF (LBU_RRI) THEN
      IPROC=  IPROC+1
      YWORK2(9,IPROC) = 'CDEPI_'
   END IF
+  IPROC=IPROC+1
+  YWORK2(9,IPROC) = 'NECON_'
 !
   YEND_COMMENT(9) = 'BU_RRI'
   NBUPROCNBR(9) = 3
@@ -2073,8 +2119,15 @@ IF (LBU_RRS) THEN
       IPROACTV(10,IPROC) = 3
     END IF
   END IF
+  IPROC=IPROC+1
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
+          IPROACTV(10,IPROC) = NNETURRS
   IPROC=  IPROC+1
   IPROACTV(10,IPROC) = NADVRS
+  IPROC=IPROC+1
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(10,IPROC) = NNEADVRS
   IPROC=  IPROC+1
   IF( HCLOUD /= 'NONE' ) IPROACTV(10,IPROC) = NNEGARS
   IPROC=IPROC+1
@@ -2137,6 +2190,9 @@ IF (HCLOUD=='LIMA') THEN
           IPROACTV(10,IPROC) = NSEDIRS
   IPROC=IPROC+1
 END IF
+      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
+          IPROACTV(10,IPROC) = NNECONRS
 !
   YWORK2(10,1) = 'INIF_'
   YWORK2(10,2) = 'ENDF_'
@@ -2151,9 +2207,13 @@ END IF
   YWORK2(10,IPROC) = 'DIF_'
   IPROC=  IPROC+1
   YWORK2(10,IPROC) = 'REL_'
+  IPROC=IPROC+1
+  YWORK2(10,IPROC) = 'NETUR_'
   IPROC=  IPROC+1
   YWORK2(10,IPROC) = 'ADV_'
   IPROC=IPROC+1
+  YWORK2(10,IPROC) = 'NEADV_'
+  IPROC=IPROC+1
   YWORK2(10,IPROC) = 'NEGA_'
   IPROC=  IPROC+1
 IF (HCLOUD=='LIMA') THEN
@@ -2182,7 +2242,6 @@ IF (HCLOUD=='LIMA') THEN
   YWORK2(10,IPROC) = 'DRYG_'
   IPROC=  IPROC+1
   YWORK2(10,IPROC) = 'WETH_'
-  IPROC=  IPROC+1
 ELSE
   YWORK2(10,IPROC) = 'SEDI_'
   IPROC=  IPROC+1
@@ -2210,6 +2269,8 @@ ELSE
   IPROC=IPROC+1
   YWORK2(10,IPROC) = 'SEDI_'
 END IF
+  IPROC=IPROC+1
+  YWORK2(10,IPROC) = 'NECON_'
 !
   YEND_COMMENT(10) = 'BU_RRS'
   NBUPROCNBR(10) = 3
@@ -2248,8 +2309,15 @@ IF (LBU_RRG) THEN
     END IF
   END IF
   IPROC=IPROC+1
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
+          IPROACTV(11,IPROC) = NNETURRG
+  IPROC=IPROC+1
   IPROACTV(11,IPROC) = NADVRG
   IPROC=IPROC+1
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(11,IPROC) = NNEADVRG
+  IPROC=IPROC+1
   IF( HCLOUD /= 'NONE'  ) IPROACTV(11,IPROC) = NNEGARG
   IPROC=IPROC+1
 IF (HCLOUD=='LIMA') THEN
@@ -2316,6 +2384,9 @@ ELSE
           IPROACTV(11,IPROC) = NSEDIRG
   IPROC=IPROC+1
 END IF
+      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
+          IPROACTV(11,IPROC) = NNECONRG
 !
   YWORK2(11,1) = 'INIF_'
   YWORK2(11,2) = 'ENDF_'
@@ -2331,8 +2402,12 @@ END IF
   IPROC=IPROC+1
   YWORK2(11,IPROC) = 'REL_'
   IPROC=IPROC+1
+  YWORK2(11,IPROC) = 'NETUR_'
+  IPROC=IPROC+1
   YWORK2(11,IPROC) = 'ADV_'
   IPROC=IPROC+1
+  YWORK2(11,IPROC) = 'NEADV_'
+  IPROC=IPROC+1
   YWORK2(11,IPROC) = 'NEGA_'
   IPROC=IPROC+1
 IF (HCLOUD=='LIMA') THEN
@@ -2394,6 +2469,8 @@ ELSE
   IPROC=IPROC+1
   YWORK2(11,IPROC)= 'SEDI_'
 END IF
+  IPROC=IPROC+1
+  YWORK2(11,IPROC) = 'NECON_'
 !
   YEND_COMMENT(11) = 'BU_RRG'
   NBUPROCNBR(11) = 3
@@ -2444,8 +2521,15 @@ IF (LBU_RRH) THEN
     END IF
   END IF
   IPROC=IPROC+1
+  IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') &
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) &
+          IPROACTV(12,IPROC) = NNETURRH
+  IPROC=IPROC+1
   IPROACTV(12,IPROC) = NADVRH
   IPROC=IPROC+1
+  IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))  IPROACTV(12,IPROC) = NNEADVRH
+  IPROC=IPROC+1
   IF( HCLOUD /= 'NONE' ) THEN
     IPROACTV(12,IPROC) = NNEGARH 
   ELSE
@@ -2454,7 +2538,7 @@ IF (LBU_RRH) THEN
   IPROC=IPROC+1
 !
   IF (HCLOUD=='LIMA' .AND. OHAIL) THEN
-     IPROACTV(12,IPROC) = NSEDIRH
+     IF (OCOLD) IPROACTV(12,IPROC) = NSEDIRH
      IPROC=IPROC+1
      IPROACTV(12,IPROC) = NWETGRH
      IPROC=IPROC+1
@@ -2485,6 +2569,9 @@ IF (LBU_RRH) THEN
      (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) &
           IPROACTV(12,IPROC) = NSEDIRH
   END IF
+      IF ((HCLOUD == 'KHKO')  .OR.  (HCLOUD == 'C2R2')&
+       .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))&
+          IPROACTV(12,IPROC) = NNECONRH
 !
   YWORK2(12,1) = 'INIF_'
   YWORK2(12,2) = 'ENDF_'
@@ -2500,8 +2587,12 @@ IF (LBU_RRH) THEN
   IPROC=IPROC+1
   YWORK2(12,IPROC) = 'REL_'
   IPROC=IPROC+1
+  YWORK2(12,IPROC) = 'NETUR_'
+  IPROC=IPROC+1
   YWORK2(12,IPROC) = 'ADV_'
   IPROC=IPROC+1
+  YWORK2(12,IPROC) = 'NEADV_'
+  IPROC=IPROC+1
   YWORK2(12,IPROC) = 'NEGA_'
   IPROC=IPROC+1
   IF (HCLOUD=='LIMA' .AND. OHAIL) THEN
@@ -2534,6 +2625,8 @@ IF (LBU_RRH) THEN
      IPROC=IPROC+1
      YWORK2(12,IPROC) = 'SEDI_'
   END IF
+  IPROC=IPROC+1
+  YWORK2(12,IPROC) = 'NECON_'
 !
   YEND_COMMENT(12) = 'BU_RRH'
   NBUPROCNBR(12) = 3
@@ -2595,7 +2688,7 @@ IF (LBU_RSV) THEN
     IPROC=IPROC+1
     IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,IPROC)= NMAFLSV
     IPROC=IPROC+1
-    IPROACTV(12+JSV,IPROC)= NADVSV
+    IF ( HCLOUD /= 'LIMA' ) IPROACTV(12+JSV,IPROC)= NADVSV
     IPROC=IPROC+1
 !
     YWORK2(12+JSV,1) = 'INIF_'
@@ -2953,7 +3046,7 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM
        IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_'
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'REVA_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'BRKU_'
@@ -2968,6 +3061,15 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
    IF (JSV == NSV_LIMA_NC) THEN
       ! Cloud droplets conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       IF (OPTSPLIT .AND. OWARM .AND. ORAIN) THEN
@@ -3063,10 +3165,22 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       !
    ELSE IF (JSV == NSV_LIMA_NR) THEN
       ! Rain drops conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       IF (OPTSPLIT .AND. OWARM .AND. ORAIN) THEN
@@ -3149,10 +3263,22 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMLT_'
          IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       END IF
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       !
    ELSE IF (JSV.GE.NSV_LIMA_CCN_FREE .AND. JSV.LT.(NSV_LIMA_CCN_FREE+NMOD_CCN)) THEN
       ! Free CCN conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1) THEN
@@ -3168,6 +3294,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       IF (OSCAV) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCAV_'
@@ -3175,11 +3304,23 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       END IF
       !
    ELSE IF (JSV.GE.NSV_LIMA_CCN_ACTI .AND. JSV.LT.(NSV_LIMA_CCN_ACTI+NMOD_CCN)) THEN
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       ! Activated CCN conc.
 
    ELSE IF (JSV == NSV_LIMA_NI) THEN
       ! Pristine ice crystals conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       IF (OPTSPLIT .AND. OCOLD .AND. OSNOW) THEN
@@ -3265,10 +3406,22 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       !
    ELSE IF (JSV.GE.NSV_LIMA_IFN_FREE .AND. JSV.LT.(NSV_LIMA_IFN_FREE+NMOD_IFN)) THEN
       ! Free IFN conc.
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       IF (OCOLD .AND. ONUCL .AND. (.NOT.OMEYERS)) THEN
@@ -3279,6 +3432,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       IF (OSCAV) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCAV_'
@@ -3286,14 +3442,23 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN
       END IF
       !
    ELSE IF (JSV.GE.NSV_LIMA_IFN_NUCL .AND. JSV.LT.(NSV_LIMA_IFN_NUCL+NMOD_IFN)) THEN
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       ! Nucleated IFN conc.
 
    ELSE IF (JSV.GE.NSV_LIMA_IMM_NUCL .AND. JSV.LT.(NSV_LIMA_IMM_NUCL+NMOD_IMM)) THEN
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
       ! Nucleated IMM conc.
 
    ELSE IF (JSV == NSV_LIMA_HOM_HAZE) THEN
       ! Homogeneous freezing of CCN
-      IF (OCOLD .AND. ONUCL .AND. OWARM .AND. OHHONI) THEN
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
+      IF (OPTSPLIT .AND. OCOLD .AND. ONUCL .AND. OWARM .AND. OHHONI) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONH_'
          IPROACTV(12+JSV,ILAST_PROC_NBR) = 1
@@ -3319,8 +3484,8 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
          IPROACTV(12+JSV,ILAST_PROC_NBR) = NREVAQV
       END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPIQV
+      YWORK2(12+JSV,ILAST_PROC_NBR) = 'CDEPI_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NCDEPIQV
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQV
@@ -3349,13 +3514,8 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'BERFI_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NBERFIQC
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPIQC
-      IF (LINDUCTIVE) THEN
-         ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-         YWORK2(12+JSV,ILAST_PROC_NBR) = 'IND_'
-      END IF
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NINDQC
+      YWORK2(12+JSV,ILAST_PROC_NBR) = 'CDEPI_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NCDEPIQC
       IF (LSEDIC) THEN
          ILAST_PROC_NBR = ILAST_PROC_NBR + 1
          YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_'
@@ -3420,8 +3580,8 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'BERFI_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NBERFIQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-      YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPI_'
-      IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPIQI
+      YWORK2(12+JSV,ILAST_PROC_NBR) = 'CDEPI_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NCDEPIQI
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'NIIS_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NNIISQI
@@ -3464,6 +3624,7 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQS
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQS
    CASE(6)  ! volumetric charge of graupel
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_'
@@ -3489,11 +3650,6 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'GMLT_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NGMLTQG
-      IF (LINDUCTIVE) THEN
-        ILAST_PROC_NBR = ILAST_PROC_NBR + 1
-        YWORK2(12+JSV,ILAST_PROC_NBR) = 'IND_'
-        IPROACTV(12+JSV,ILAST_PROC_NBR) = NINDQG
-      END IF
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQG
@@ -3516,6 +3672,11 @@ ELSE IF (JSV >= NSV_CHEMBEG .AND. JSV <= NSV_CHEMEND) THEN
       ILAST_PROC_NBR = ILAST_PROC_NBR + 1
       YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
       IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
+!
+ELSE IF (JSV >= NSV_AERBEG .AND. JSV <= NSV_AEREND) THEN
+      ILAST_PROC_NBR = ILAST_PROC_NBR + 1
+      YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_'
+      IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV
  !
   ELSE
     ! other processes
diff --git a/src/MNH/ini_micron.f90 b/src/MNH/ini_micron.f90
index 718eebb464b59a2d271a80cfbab03dceacc418fd..c6f6b991f6edda384225b3e5c44563d215674ae1 100644
--- a/src/MNH/ini_micron.f90
+++ b/src/MNH/ini_micron.f90
@@ -53,7 +53,7 @@ END MODULE MODI_INI_MICRO_n
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!      P.Wautelet     01/2019: bug: add missing allocations
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
-!!
+!  C. Lac         02/2020: add missing allocation of INPRC and ACPRC with deposition
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -161,9 +161,9 @@ ELSE
   ALLOCATE(XACPRR(0,0))
 END IF
 !
-IF (( CCLOUD(1:3) == 'ICE'                                   .AND.LSEDIC) .OR. &
-    ((CCLOUD=='C2R2' .OR. CCLOUD=='C3R5' .OR. CCLOUD=='KHKO').AND.LSEDC)  .OR. &
-    ( CCLOUD=='LIMA'                                         .AND.MSEDC))  THEN
+IF (( CCLOUD(1:3) == 'ICE'                                   .AND.(LSEDIC .OR. LDEPOSC)) .OR. &
+    ((CCLOUD=='C2R2' .OR. CCLOUD=='C3R5' .OR. CCLOUD=='KHKO').AND.(LSEDC .OR. LDEPOC))  .OR. &
+    ( CCLOUD=='LIMA'                                         .AND.(MSEDC .OR. MDEPOC)))  THEN
   ALLOCATE(XINPRC(IIU,IJU))
   ALLOCATE(XACPRC(IIU,IJU))
   XINPRC(:,:)=0.0
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index a7ff5457c1cfbe7464077149deef90d0492ec766..2548b6a26f8be699774ce2dfa6ace5a71d9d279d 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -287,6 +287,7 @@ END MODULE MODI_INI_MODEL_n
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 19/04/2019: removed unused dummy arguments and variables
 !  P. Wautelet 07/06/2019: allocate lookup tables for optical properties only when needed
+!  C. Lac         11/2019: correction in the drag formula and application to building in addition to tree
 !---------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -326,7 +327,7 @@ USE MODD_DEF_EDDYUV_FLUX_n ! FOR UV
 USE MODD_DIAG_FLAG,         only: LCHEMDIAG, CSPEC_BU_DIAG
 USE MODD_DIM_n
 USE MODD_DRAG_n
-USE MODD_DRAGTREE
+USE MODD_DRAGTREE_n
 USE MODD_DUST
 use MODD_DUST_OPT_LKT,      only: NMAX_RADIUS_LKT_DUST=>NMAX_RADIUS_LKT, NMAX_SIGMA_LKT_DUST=>NMAX_SIGMA_LKT,               &
                                   NMAX_WVL_SW_DUST=>NMAX_WVL_SW,                                                            &
@@ -1483,7 +1484,17 @@ ALLOCATE(XRI_MF(IIU,IJU,IKU)) ; XRI_MF=0.0
 !
 ALLOCATE(ZJ(IIU,IJU,IKU))
 !
-!*      3.10 Forcing variables (Module MODD_FRC)
+!*      3.10 Forcing variables (Module MODD_FRC and MODD_FRCn)
+!
+IF ( LFORCING ) THEN
+  ALLOCATE(XWTFRC(IIU,IJU,IKU)) ; XWTFRC = XUNDEF
+  ALLOCATE(XUFRC_PAST(IIU,IJU,IKU)) ; XUFRC_PAST = XUNDEF
+  ALLOCATE(XVFRC_PAST(IIU,IJU,IKU)) ; XVFRC_PAST = XUNDEF
+ELSE
+  ALLOCATE(XWTFRC(0,0,0))
+  ALLOCATE(XUFRC_PAST(0,0,0))
+  ALLOCATE(XVFRC_PAST(0,0,0))
+END IF
 !
 IF (KMI == 1) THEN
   IF ( LFORCING ) THEN
@@ -1515,15 +1526,6 @@ IF (KMI == 1) THEN
     ALLOCATE(XTENDUFRC(0,0))
     ALLOCATE(XTENDVFRC(0,0))
   END IF
-  IF ( LFORCING ) THEN
-    ALLOCATE(XWTFRC(IIU,IJU,IKU))
-    ALLOCATE(XUFRC_PAST(IIU,IJU,IKU)) ; XUFRC_PAST = XUNDEF
-    ALLOCATE(XVFRC_PAST(IIU,IJU,IKU)) ; XVFRC_PAST = XUNDEF
-  ELSE
-    ALLOCATE(XWTFRC(0,0,0))
-    ALLOCATE(XUFRC_PAST(0,0,0))
-    ALLOCATE(XVFRC_PAST(0,0,0))
-  END IF
 ELSE
   !Do not allocate because they are the same on all grids (not 'n' variables)
 END IF
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index 1d6bc3eefe6e98c6b53edb1a4346b1c613ed793b..1067f2ceffdbf2de2b8de02dcf94039a76a01378 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -58,7 +58,7 @@ USE MODD_CTURB
 USE MODD_CURVCOR_n
 USE MODD_DEEP_CONVECTION_n
 USE MODD_DIM_n
-USE MODD_DRAGTREE
+USE MODD_DRAGTREE_n
 USE MODD_DUST
 USE MODD_DYN
 USE MODD_DYN_n
diff --git a/src/MNH/ini_surfstationn.f90 b/src/MNH/ini_surfstationn.f90
index 0c099b7fbd6bcd5ae0243e75412d060eb4bfdbeb..c9a06aa58a1c7c94483761e603c19c23957c7a52 100644
--- a/src/MNH/ini_surfstationn.f90
+++ b/src/MNH/ini_surfstationn.f90
@@ -66,21 +66,25 @@ END MODULE MODI_INI_SURFSTATION_n
 !!     P. Tulet 15/01/2002 
 !!     A. Lemonsu 19/11/2002 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!!     R. Schoetter : 11/2019 : work for cartesian coordinates + parallel.
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
 !          ------------
 !
 USE MODD_CONF
+USE MODD_DIM_n
 USE MODD_DYN_n
 USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_LUNIT_n, ONLY: TLUOUT
 USE MODD_PARAMETERS
+USE MODD_SHADOWS_n
 USE MODD_STATION_n
 USE MODD_TYPE_DATE
+USE MODD_VAR_ll,          ONLY: IP
 !
+USE MODE_GATHER_ll
 USE MODE_GRIDPROJ
 USE MODE_ll
 USE MODE_MSG
@@ -108,6 +112,7 @@ REAL,               INTENT(IN) :: PLONOR  ! longitude of origine point
 !
 INTEGER :: ISTORE ! number of storage instants
 INTEGER :: ILUOUT ! logical unit
+INTEGER :: IIU_ll,IJU_ll,IRESP
 !
 !----------------------------------------------------------------------------
 ILUOUT = TLUOUT%NLU
@@ -239,7 +244,6 @@ INTEGER :: JII                             !
 INTEGER :: IIU, IJU                        !   
 !
 IF ( ALL(TSTATION%LAT(:)/=XUNDEF) .AND. ALL(TSTATION%LON(:)/=XUNDEF) ) THEN
- LSTATLAT = .TRUE.
  DO JII=1,NUMBSTAT
    CALL GET_DIM_EXT_ll ('B',IIU,IJU)
    CALL SM_XYHAT(PLATOR,PLONOR,                        &
@@ -247,11 +251,20 @@ IF ( ALL(TSTATION%LAT(:)/=XUNDEF) .AND. ALL(TSTATION%LON(:)/=XUNDEF) ) THEN
                  TSTATION%X(JII),   TSTATION%Y(JII)    )
  ENDDO
 ELSE
- LSTATLAT = .FALSE.
  DO JII=1,NUMBSTAT
-   TSTATION%X(JII) = XXHAT(TSTATION%I(JII))
-   TSTATION%Y(JII) = XYHAT(TSTATION%I(JII))
    CALL GET_DIM_EXT_ll ('B',IIU,IJU)
+   IIU_ll=NIMAX_ll + 2 * JPHEXT
+   IJU_ll=NJMAX_ll + 2 * JPHEXT
+   ALLOCATE(XXHAT_ll                 (IIU_ll))
+   ALLOCATE(XYHAT_ll                 (IJU_ll))
+   !
+   CALL GATHERALL_FIELD_ll('XX',XXHAT,XXHAT_ll,IRESP)
+   CALL GATHERALL_FIELD_ll('YY',XYHAT,XYHAT_ll,IRESP)
+   TSTATION%X(JII) = XXHAT_ll(TSTATION%I(JII))
+   TSTATION%Y(JII) = XYHAT_ll(TSTATION%J(JII))
+   IF (LCARTESIAN) THEN
+     XRPK = -1
+   ENDIF
    CALL SM_LATLON(PLATOR,PLONOR,                       &
                  TSTATION%X(JII),   TSTATION%Y(JII),   &
                  TSTATION%LAT(JII), TSTATION%LON(JII)  )
diff --git a/src/MNH/lima.f90 b/src/MNH/lima.f90
index 851660cf9fc9c96c62d3af27de1c3667d02115fe..8c4538828cc25fc32b411db1fe67adff293687b8 100644
--- a/src/MNH/lima.f90
+++ b/src/MNH/lima.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 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.
@@ -14,7 +14,7 @@ INTERFACE
                      PRHODREF, PEXNREF, PDZZ,                        &
                      PRHODJ, PPABSM, PPABST,                         &
                      NCCN, NIFN, NIMM,                               &
-                     PTHM, PTHT, PRT, PSVT, PW_NU,                   &
+                     PDTHRAD, PTHT, PRT, PSVT, PW_NU,                &
                      PTHS, PRS, PSVS,                                &
                      PINPRC, PINDEP, PINPRR, PINPRI, PINPRS, PINPRG, PINPRH, &
                      PEVAP3D                                         )
@@ -41,7 +41,7 @@ INTEGER,                  INTENT(IN)    :: NCCN       ! for array size declarati
 INTEGER,                  INTENT(IN)    :: NIFN       ! for array size declarations
 INTEGER,                  INTENT(IN)    :: NIMM       ! for array size declarations
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM       ! Theta at time t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT       ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT        ! Mixing ratios at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT       ! Concentrations at time t
@@ -71,7 +71,7 @@ END MODULE MODI_LIMA
                         PRHODREF, PEXNREF, PDZZ,                        &
                         PRHODJ, PPABSM, PPABST,                         &
                         NCCN, NIFN, NIMM,                               &
-                        PTHM, PTHT, PRT, PSVT, PW_NU,                   &
+                        PDTHRAD, PTHT, PRT, PSVT, PW_NU,                &
                         PTHS, PRS, PSVS,                                &
                         PINPRC, PINDEP, PINPRR, PINPRI, PINPRS, PINPRG, PINPRH, &
                         PEVAP3D                                         )
@@ -97,8 +97,9 @@ END MODULE MODI_LIMA
 !!      Original   15/03/2018
 !!
 !!      B.Vié  02/2019 : minor correction on budget
-!!
-!!
+!!  P. Wautelet 26/02/2020: bugfix: corrected condition to write budget CORR_BU_RRS
+!!      B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation
+!
 !*       0.    DECLARATIONS
 !              ------------
 USE MODD_BUDGET,          ONLY: LBU_ENABLE, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR,     &
@@ -151,7 +152,7 @@ INTEGER,                  INTENT(IN)    :: NCCN       ! for array size declarati
 INTEGER,                  INTENT(IN)    :: NIFN       ! for array size declarations
 INTEGER,                  INTENT(IN)    :: NIMM       ! for array size declarations
 !
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM       ! Theta at time t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD    ! Theta at time t-dt
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT       ! Theta at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT        ! Mixing ratios at time t
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT       ! Concentrations at time t
@@ -189,7 +190,7 @@ REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: ZHOMFS
 
 !
 ! Other 3D thermodynamical variables
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: ZEXN, ZT, ZTM
+REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: ZEXN, ZT
 
 !
 ! Packed prognostic & thermo variables
@@ -563,7 +564,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RC .AND. LWARM .AND. LRAIN) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'CORR_BU_RRC')
   IF (LBUDGET_RR .AND. LWARM .AND. LRAIN) CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'CORR_BU_RRR')
   IF (LBUDGET_RI .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'CORR_BU_RRI')
-  IF (LBUDGET_RI .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:),10  , 'CORR_BU_RRS')
+  IF (LBUDGET_RS .AND. LCOLD .AND. LSNOW) CALL BUDGET (ZRSS(:,:,:)*PRHODJ(:,:,:),10  , 'CORR_BU_RRS')
   IF (LBUDGET_SV) THEN
      IF (LWARM .AND. LRAIN) CALL BUDGET (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'CORR_BU_RSV')
      IF (LWARM .AND. LRAIN) CALL BUDGET (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'CORR_BU_RSV')
@@ -625,7 +626,7 @@ END IF
 IF (LWARM .AND. LDEPOC) THEN
   PINDEP(:,:)=0.
   GDEP(:,:) = .FALSE.
-  GDEP(:,:) =    ZRCS(:,:,IKB) >0 .AND. ZCCS(:,:,IKB) >0
+  GDEP(:,:) = ZRCS(:,:,IKB) >0 .AND. ZCCS(:,:,IKB) >0 .AND. ZRCT(:,:,IKB) >0 .AND. ZCCT(:,:,IKB) >0
   WHERE (GDEP)
      ZRCS(:,:,IKB) = ZRCS(:,:,IKB) - XVDEPOC * ZRCT(:,:,IKB) / PDZZ(:,:,IKB)
      ZCCS(:,:,IKB) = ZCCS(:,:,IKB) - XVDEPOC * ZCCT(:,:,IKB) / PDZZ(:,:,IKB)
@@ -680,18 +681,11 @@ IF ( LCOLD )             ZCIT(:,:,:)   = ZCIS(:,:,:) * PTSTEP
 !*       2.     Nucleation processes
 !               --------------------
 !
-!
-IF( LACTIT ) THEN
-   ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
-ELSE 
-   ZTM(:,:,:) = ZT(:,:,:)
-END IF
-!
 CALL LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ,                &
-                            PRHODREF, ZEXN, PPABST, ZT, ZTM, PW_NU,             &
-                            ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT,           &
-                            ZCCT, ZCRT, ZCIT,                                   &
-                            ZCCNFT, ZCCNAT, ZIFNFT, ZIFNNT, ZIMMNT, ZHOMFT      )
+                            PRHODREF, ZEXN, PPABST, ZT, PDTHRAD, PW_NU,        &
+                            ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT,          &
+                            ZCCT, ZCRT, ZCIT,                                  &
+                            ZCCNFT, ZCCNAT, ZIFNFT, ZIFNNT, ZIMMNT, ZHOMFT     )
 !
 ! Saving sources before microphysics time-splitting loop
 !
diff --git a/src/MNH/lima_adjust.f90 b/src/MNH/lima_adjust.f90
index 752c861b9d9792eed74add2178143552c425b9c1..e9c32bb0b1f2d0dbaa9350bf39874076ba7376cf 100644
--- a/src/MNH/lima_adjust.f90
+++ b/src/MNH/lima_adjust.f90
@@ -1109,8 +1109,8 @@ DEALLOCATE(ZCTMIN)
 !*       5.2    compute the cloud fraction PCLDFR (binary !!!!!!!)
 !
 IF ( .NOT. OSUBG_COND ) THEN
-!  WHERE (PRCS(:,:,:) + PRIS(:,:,:) + PRSS(:,:,:) > 1.E-12 / ZDT)
-   WHERE (PRCS(:,:,:) + PRIS(:,:,:)  > 1.E-12 / ZDT)
+  WHERE (PRCS(:,:,:) + PRIS(:,:,:) + PRSS(:,:,:) > 1.E-12 / ZDT)
+!   WHERE (PRCS(:,:,:) + PRIS(:,:,:)  > 1.E-12 / ZDT)
       ZW(:,:,:)  = 1.
    ELSEWHERE
       ZW(:,:,:)  = 0. 
diff --git a/src/MNH/lima_ccn_activation.f90 b/src/MNH/lima_ccn_activation.f90
index 211fbd35f53472766670fcec4fd26ae627f67a26..237752747d8e237e8fea020ab92a7acaaac8f94e 100644
--- a/src/MNH/lima_ccn_activation.f90
+++ b/src/MNH/lima_ccn_activation.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 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.
@@ -8,9 +8,9 @@
 !      ###############################
 !
 INTERFACE
-   SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT,                 &
-                                   PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,   &
-                                   PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT     )
+   SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT,                    &
+                                   PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, &
+                                   PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT       )
 USE MODD_IO, ONLY: TFILEDATA
 !
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
@@ -22,8 +22,8 @@ LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZT         ! Temperature
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZTM        ! Temperature at time t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PT         ! Temperature
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD    ! Radiative temperature tendency
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! updraft velocity used for
                                                       ! the nucleation param.
@@ -40,9 +40,9 @@ END SUBROUTINE LIMA_CCN_ACTIVATION
 END INTERFACE
 END MODULE MODI_LIMA_CCN_ACTIVATION
 !     #############################################################################
-   SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT,                 &
-                                   PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,   &
-                                   PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT     )
+   SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT,                    &
+                                   PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, &
+                                   PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT       )
 !     #############################################################################
 !
 !!
@@ -87,6 +87,7 @@ END MODULE MODI_LIMA_CCN_ACTIVATION
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             ??/??/13 
+!  B. Vie      03/03/2020: use DTHRAD instead of dT/dt in Smax diagnostic computation
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
@@ -123,8 +124,8 @@ LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZT         ! Temperature
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZTM        ! Temperature at time t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PT         ! Temperature
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD    ! Radiative temperature tendency
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! updraft velocity used for
                                                       ! the nucleation param.
@@ -198,9 +199,10 @@ IKE=SIZE(PRHODREF,3) - JPVEXT
 !  Saturation vapor mixing ratio and radiative tendency                    
 !
 ZEPS= XMV / XMD
-ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:)*EXP(-XALPW+XBETAW/ZT(:,:,:)+XGAMW*ALOG(ZT(:,:,:))) - 1.0)
+ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:)*EXP(-XALPW+XBETAW/PT(:,:,:)+XGAMW*ALOG(PT(:,:,:))) - 1.0)
 ZTDT(:,:,:)   = 0.
-IF (LACTIT) ZTDT(:,:,:)   = (ZT(:,:,:)-ZTM(:,:,:))/PTSTEP                   ! dT/dt
+IF (LACTIT .AND. SIZE(PDTHRAD).GT.0) ZTDT(:,:,:)   = PDTHRAD(:,:,:) * PEXNREF(:,:,:)
+!IF (LACTIT) ZTDT(:,:,:)   = (PT(:,:,:)-PTM(:,:,:))/PTSTEP                   ! dT/dt
 !
 !  find locations where CCN are available
 !
@@ -220,13 +222,13 @@ IF( LACTIT ) THEN
                                      ZTDT(IIB:IIE,IJB:IJE,IKB:IKE)<XTMIN   .OR. &
         PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE)    ) .AND.&
             PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))&
-             .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
+             .AND. PT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
              .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>XCTMIN(4)
 ELSE 
    GNUCT(IIB:IIE,IJB:IJE,IKB:IKE) =   (PW_NU(IIB:IIE,IJB:IJE,IKB:IKE)>XWMIN .OR. &
         PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE)    ) .AND.&
             PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))&
-             .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
+             .AND. PT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
              .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>XCTMIN(4)
 END IF
 INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:))
@@ -251,7 +253,7 @@ IF( INUCT >= 1 ) THEN
    ALLOCATE(ZRHODREF(INUCT)) 
    ALLOCATE(ZEXNREF(INUCT)) 
    DO JL=1,INUCT
-      ZZT(JL)  = ZT(I1(JL),I2(JL),I3(JL))
+      ZZT(JL)  = PT(I1(JL),I2(JL),I3(JL))
       ZZW1(JL) = ZRVSAT(I1(JL),I2(JL),I3(JL))
       ZZW2(JL) = PW_NU(I1(JL),I2(JL),I3(JL))
       ZZTDT(JL)  = ZTDT(I1(JL),I2(JL),I3(JL))
@@ -422,7 +424,7 @@ IF( INUCT >= 1 ) THEN
    END WHERE
    ZW(:,:,:) = MIN( UNPACK( ZZW1(:),MASK=GNUCT(:,:,:),FIELD=0.0 ),PRVT(:,:,:) )
 !
-   PTHT(:,:,:) = PTHT(:,:,:) + ZW(:,:,:) * (XLVTT+(XCPV-XCL)*(ZT(:,:,:)-XTT))/                &
+   PTHT(:,:,:) = PTHT(:,:,:) + ZW(:,:,:) * (XLVTT+(XCPV-XCL)*(PT(:,:,:)-XTT))/                &
             (PEXNREF(:,:,:)*(XCPD+XCPV*PRVT(:,:,:)+XCL*(PRCT(:,:,:)+PRRT(:,:,:))))
    PRVT(:,:,:) = PRVT(:,:,:) - ZW(:,:,:) 
    PRCT(:,:,:) = PRCT(:,:,:) + ZW(:,:,:) 
diff --git a/src/MNH/lima_droplets_autoconversion.f90 b/src/MNH/lima_droplets_autoconversion.f90
index 2f2c911100c174146817e1ab5db7e2ae87966098..f88eb265d4d599ecdbb43cf0035fef6923c2212e 100644
--- a/src/MNH/lima_droplets_autoconversion.f90
+++ b/src/MNH/lima_droplets_autoconversion.f90
@@ -57,7 +57,7 @@ END MODULE MODI_LIMA_DROPLETS_AUTOCONVERSION
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             15/03/2018 
-!!
+!!      B. Vie 02/03/2020 : missing CC process
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -125,11 +125,11 @@ WHERE( PRCT(:)>XRTMIN(2) .AND. PLBDC(:)>0. .AND. LDCOMPUTE(:) )
                                                 ! min (80 microns, D_h, D_r)
    ZW3(:) = ZW3(:) * MAX( 0.0,ZW1(:) )**3 / XAC 
 !
-   P_CC_AUTO(:) = 0.
+   P_CC_AUTO(:) = -ZW3(:)
    P_CR_AUTO(:) = ZW3(:)
 !
    PA_RC(:) = PA_RC(:) + P_RC_AUTO(:)
-   PA_CC(:) = PA_CC(:) 
+   PA_CC(:) = PA_CC(:) + P_CC_AUTO(:)
    PA_RR(:) = PA_RR(:) - P_RC_AUTO(:)
    PA_CR(:) = PA_CR(:) + P_CR_AUTO(:)
 END WHERE
diff --git a/src/MNH/lima_inst_procs.f90 b/src/MNH/lima_inst_procs.f90
index fe22db3a839f9a512f80485587ac6f7d6cfab536..a03eed7e3af5aa42c376955b9d8094bde1204feb 100644
--- a/src/MNH/lima_inst_procs.f90
+++ b/src/MNH/lima_inst_procs.f90
@@ -95,7 +95,7 @@ SUBROUTINE LIMA_INST_PROCS (PTSTEP, LDCOMPUTE,
 !-------------------------------------------------------------------------------
 !
 !
-USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LMEYERS, LSNOW, LWARM, LACTI, LRAIN, LHHONI, NMOD_CCN, NMOD_IFN
+USE MODD_PARAM_LIMA, ONLY : LCOLD, LWARM, LRAIN
 !
 USE MODI_LIMA_DROPS_BREAK_UP
 USE MODI_LIMA_DROPS_HOM_FREEZING
diff --git a/src/MNH/lima_meyers_nucleation.f90 b/src/MNH/lima_meyers_nucleation.f90
index 0aa09ccbabce9769552385398f63cbc8e8283e81..bf77de46421082792eddebe764baeb569b336c5d 100644
--- a/src/MNH/lima_meyers_nucleation.f90
+++ b/src/MNH/lima_meyers_nucleation.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 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.
@@ -13,7 +13,7 @@ INTERFACE
                                       PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,   &
                                       PCCT, PCIT, PINT,                           &
                                       P_TH_HIND, P_RI_HIND, P_CI_HIND,            &
-                                      P_RC_HINC, P_CC_HINC                        )
+                                      P_TH_HINC, P_RC_HINC, P_CC_HINC             )
 !
 REAL,                     INTENT(IN)    :: PTSTEP
 !
@@ -33,11 +33,12 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCCT    ! Cloud water C. at t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCIT    ! Ice crystal C. source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PINT    ! Activated ice nuclei C.
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_TH_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_RI_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_CI_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_RC_HINC
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_CC_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_TH_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_RI_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_CI_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_TH_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_RC_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_CC_HINC
 !
 END SUBROUTINE LIMA_MEYERS_NUCLEATION
 END INTERFACE
@@ -49,7 +50,7 @@ END MODULE MODI_LIMA_MEYERS_NUCLEATION
                                       PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,   &
                                       PCCT, PCIT, PINT,                           &
                                       P_TH_HIND, P_RI_HIND, P_CI_HIND,            &
-                                      P_RC_HINC, P_CC_HINC                        )
+                                      P_TH_HINC, P_RC_HINC, P_CC_HINC             )
 !     #############################################################################
 !!
 !!    PURPOSE
@@ -69,7 +70,7 @@ END MODULE MODI_LIMA_MEYERS_NUCLEATION
 !!    -------------
 !!      Original             15/03/2018
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
-!
+!  P. Wautelet 27/02/2020: add P_TH_HINC dummy argument + change intent of *_HIND and *_HINC dummy arguments (INOUT->OUT)
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -108,11 +109,12 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCCT    ! Cloud water C. at t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCIT    ! Ice crystal C. source
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PINT    ! Activated ice nuclei C.
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_TH_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_RI_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_CI_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_RC_HINC
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_CC_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_TH_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_RI_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_CI_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_TH_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_RC_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_CC_HINC
 !
 !
 !*       0.2   Declarations of local variables :
@@ -302,7 +304,8 @@ IF( INEGT >= 1 ) THEN
 !
   P_RC_HINC(:,:,:) = - UNPACK( ZZW(:), MASK=GNEGT(:,:,:), FIELD=0. )
   P_CC_HINC(:,:,:) = - UNPACK( ZZX(:), MASK=GNEGT(:,:,:), FIELD=0. )
-  PTHT(:,:,:) = PTHT(:,:,:) + UNPACK( ZZW(:)*(ZLSFACT(:)-ZLVFACT(:)), MASK=GNEGT(:,:,:), FIELD=0. )
+  P_TH_HINC(:,:,:) =   UNPACK( ZZW(:)*(ZLSFACT(:)-ZLVFACT(:)), MASK=GNEGT(:,:,:), FIELD=0. )
+  PTHT(:,:,:) = PTHT(:,:,:) + P_TH_HINC(:,:,:)
   PRCT(:,:,:) = PRCT(:,:,:) + P_RC_HINC(:,:,:)
   PRIT(:,:,:) = PRIT(:,:,:) - P_RC_HINC(:,:,:)
   PCCT(:,:,:) = PCCT(:,:,:) + P_CC_HINC(:,:,:)
diff --git a/src/MNH/lima_nucleation_procs.f90 b/src/MNH/lima_nucleation_procs.f90
index e3efc478d7c83f49440a8f7c344103bd4ec19768..2588a5e56621231849adf05c168517b7a52cb714 100644
--- a/src/MNH/lima_nucleation_procs.f90
+++ b/src/MNH/lima_nucleation_procs.f90
@@ -1,18 +1,18 @@
-!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 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.
-!-----------------------------------------------------------------
+!-------------------------------------------------------------------------------
 !      ###############################
        MODULE MODI_LIMA_NUCLEATION_PROCS
 !      ###############################
 !
 INTERFACE
-   SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ,          &
-                                     PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU,    &
-                                     PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,     &
-                                     PCCT, PCRT, PCIT,                             &
-                                     PNFT, PNAT, PIFT, PINT, PNIT, PNHT            )
+   SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ,            &
+                                     PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, &
+                                     PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,      &
+                                     PCCT, PCRT, PCIT,                              &
+                                     PNFT, PNAT, PIFT, PINT, PNIT, PNHT             )
 !
 USE MODD_IO, ONLY: TFILEDATA
 !
@@ -25,7 +25,7 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! abs. pressure at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PT         ! Temperature
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTM        ! Temperature at time t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD    ! Radiative temperature tendency
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! updraft velocity used for
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHT       ! Theta at t 
@@ -50,13 +50,13 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNHT       ! CCN hom freezing
 END SUBROUTINE LIMA_NUCLEATION_PROCS
 END INTERFACE
 END MODULE MODI_LIMA_NUCLEATION_PROCS
-!     #############################################################################
-SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ,                &
-                                  PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU,          &
-                                  PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,           &
-                                  PCCT, PCRT, PCIT,                                   &
-                                  PNFT, PNAT, PIFT, PINT, PNIT, PNHT                  )
-!     #############################################################################
+!     ############################################################################
+SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ,            &
+                                  PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, &
+                                  PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,      &
+                                  PCCT, PCRT, PCIT,                              &
+                                  PNFT, PNAT, PIFT, PINT, PNIT, PNHT             )
+!     ############################################################################
 !
 !!    PURPOSE
 !!    -------
@@ -69,7 +69,9 @@ SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ,
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             15/03/2018
-!!
+! P. Wautelet 27/02/2020: bugfix: PNFT was not updated after LIMA_CCN_HOM_FREEZING
+! P. Wautelet 27/02/2020: add Z_TH_HINC variable (for budgets)
+! B. Vie      03/03/2020: use DTHRAD instead of dT/dt in Smax diagnostic computation
 !-------------------------------------------------------------------------------
 !
 USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LMEYERS, LSNOW, LWARM, LACTI, LRAIN, LHHONI, &
@@ -93,7 +95,7 @@ IMPLICIT NONE
 !-------------------------------------------------------------------------------
 !
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
-TYPE(TFILEDATA),          INTENT(IN)   :: TPFILE     ! Output file
+TYPE(TFILEDATA),          INTENT(IN)    :: TPFILE     ! Output file
 LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ     ! Reference density
@@ -101,7 +103,7 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! abs. pressure at time t
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PT         ! Temperature
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTM        ! Temperature at time t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD    ! Radiative temperature tendency
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! updraft velocity used for
 !
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHT       ! Theta at t 
@@ -125,7 +127,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNHT       ! CCN hom. freezing
 !
 !-------------------------------------------------------------------------------
 !
-REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3))          :: Z_TH_HIND, Z_RI_HIND, Z_CI_HIND, Z_RC_HINC, Z_CC_HINC
+REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3))          :: Z_TH_HIND, Z_RI_HIND, Z_CI_HIND, Z_TH_HINC, Z_RC_HINC, Z_CC_HINC
 REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3))          :: ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT
 REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3))          :: ZCCT, ZCRT, ZCIT
 REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3),NMOD_CCN) :: ZNFT, ZNAT
@@ -156,9 +158,9 @@ ZNHT(:,:,:) = PNHT(:,:,:)
 !-------------------------------------------------------------------------------
 !
 IF (LWARM .AND. LACTI .AND. NMOD_CCN.GE.1) THEN
-   CALL LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT,                 &
-                             PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU,   &
-                             ZTHT, ZRVT, ZRCT, ZCCT, ZRRT, ZNFT, ZNAT)
+   CALL LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT,                    &
+                             PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, &
+                             ZTHT, ZRVT, ZRCT, ZCCT, ZRRT, ZNFT, ZNAT       )
    PTHT(:,:,:) = ZTHT(:,:,:)
    PRVT(:,:,:) = ZRVT(:,:,:)
    PRCT(:,:,:) = ZRCT(:,:,:)
@@ -189,7 +191,7 @@ IF (LCOLD .AND. LNUCL .AND. .NOT.LMEYERS .AND. NMOD_IFN.GE.1) THEN
                                       ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT,         &
                                       ZCCT, ZCIT, ZNAT, ZIFT, ZINT, ZNIT,               &
                                       Z_TH_HIND, Z_RI_HIND, Z_CI_HIND,                  &
-                                      Z_RC_HINC, Z_CC_HINC                              )
+                                      Z_TH_HINC, Z_RC_HINC, Z_CC_HINC                   )
 !
 ! Call budgets
 !
@@ -235,7 +237,7 @@ IF (LCOLD .AND. LNUCL .AND. LMEYERS) THEN
                                 ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT,   &
                                 ZCCT, ZCIT, ZINT,                           &
                                 Z_TH_HIND, Z_RI_HIND, Z_CI_HIND,            &
-                                Z_RC_HINC, Z_CC_HINC                        )
+                                Z_TH_HINC, Z_RC_HINC, Z_CC_HINC             )
 !
 ! Call budgets
 !
@@ -288,6 +290,7 @@ PTHT(:,:,:) = ZTHT(:,:,:)
 PRVT(:,:,:) = ZRVT(:,:,:)
 PRIT(:,:,:) = ZRIT(:,:,:)
 PCIT(:,:,:) = ZCIT(:,:,:)
+PNFT(:,:,:,:) = ZNFT(:,:,:,:)
 PNHT(:,:,:) = ZNHT(:,:,:)
 ENDIF
 !
diff --git a/src/MNH/lima_phillips_ifn_nucleation.f90 b/src/MNH/lima_phillips_ifn_nucleation.f90
index a6cd6aa804cfb86b819599cee52b962fc3f489d7..440a53f1550937df07b86365ce60cb8e2c61a0f9 100644
--- a/src/MNH/lima_phillips_ifn_nucleation.f90
+++ b/src/MNH/lima_phillips_ifn_nucleation.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 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.
@@ -13,7 +13,7 @@ INTERFACE
                                             PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, &
                                             PCCT, PCIT, PNAT, PIFT, PINT, PNIT,       &
                                             P_TH_HIND, P_RI_HIND, P_CI_HIND,          &
-                                            P_RC_HINC, P_CC_HINC                      )
+                                            P_TH_HINC, P_RC_HINC, P_CC_HINC           )
 !
 REAL,                     INTENT(IN)    :: PTSTEP 
 !
@@ -36,11 +36,12 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PIFT    ! Free IFN conc.
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PINT    ! Nucleated IFN conc.
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNIT    ! Nucleated (by immersion) CCN conc.
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_TH_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_RI_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_CI_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_RC_HINC
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_CC_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_TH_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_RI_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_CI_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_TH_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_RC_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_CC_HINC
 !
 END SUBROUTINE LIMA_PHILLIPS_IFN_NUCLEATION
 END INTERFACE
@@ -52,7 +53,7 @@ END MODULE MODI_LIMA_PHILLIPS_IFN_NUCLEATION
                                             PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, &
                                             PCCT, PCIT, PNAT, PIFT, PINT, PNIT,       &
                                             P_TH_HIND, P_RI_HIND, P_CI_HIND,          &
-                                            P_RC_HINC, P_CC_HINC                      )
+                                            P_TH_HINC, P_RC_HINC, P_CC_HINC           )
 !     #################################################################################
 !!
 !!    PURPOSE
@@ -103,7 +104,8 @@ END MODULE MODI_LIMA_PHILLIPS_IFN_NUCLEATION
 !!    -------------
 !!      Original             15/03/2018
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
-!
+!  P. Wautelet 27/02/2020: bugfix: P_TH_HIND was not accumulated (will affect budgets) + add P_TH_HINC dummy argument
+!                          + change intent of *_HIND and *_HINC dummy arguments (INOUT->OUT)
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -151,11 +153,12 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PIFT    ! Free IFN conc.
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PINT    ! Nucleated IFN conc.
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNIT    ! Nucleated (by immersion) CCN conc.
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_TH_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_RI_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_CI_HIND
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_RC_HINC
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: P_CC_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_TH_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_RI_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_CI_HIND
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_TH_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_RC_HINC
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: P_CC_HINC
 !
 !
 !*       0.2   Declarations of local variables :
@@ -218,6 +221,7 @@ REAL,    DIMENSION(:),   ALLOCATABLE :: ZTCELSIUS, ZZT_SI0_BC
 P_TH_HIND(:,:,:) = 0.
 P_RI_HIND(:,:,:) = 0.
 P_CI_HIND(:,:,:) = 0.
+P_TH_HINC(:,:,:) = 0.
 P_RC_HINC(:,:,:) = 0.
 P_CC_HINC(:,:,:) = 0.
 !
@@ -408,8 +412,9 @@ IF (INEGT > 0) THEN
       PRVT(:,:,:) = PRVT(:,:,:) - ZW(:,:,:)
       PRIT(:,:,:) = PRIT(:,:,:) + ZW(:,:,:)
 !
-      P_TH_HIND(:,:,:) = UNPACK( ZZW(:)*ZLSFACT(:), MASK=GNEGT(:,:,:), FIELD=0. )
-      PTHT(:,:,:) = PTHT(:,:,:) + P_TH_HIND(:,:,:)
+      ZW(:,:,:) = UNPACK( ZZW(:)*ZLSFACT(:), MASK=GNEGT(:,:,:), FIELD=0. )
+      P_TH_HIND(:,:,:) = P_TH_HIND(:,:,:) + ZW(:,:,:)
+      PTHT(:,:,:) = PTHT(:,:,:) + ZW(:,:,:)
    END DO
 !
 !
@@ -453,7 +458,10 @@ IF (INEGT > 0) THEN
          P_RC_HINC(:,:,:) = P_RC_HINC(:,:,:) - ZW(:,:,:)
          PRCT(:,:,:) = PRCT(:,:,:) - ZW(:,:,:)
          PRIT(:,:,:) = PRIT(:,:,:) + ZW(:,:,:)
-         PTHT(:,:,:) = PTHT(:,:,:) + UNPACK( ZZY(:)*ZLSFACT(:), MASK=GNEGT(:,:,:), FIELD=0. )
+!
+         ZW(:,:,:) = UNPACK( ZZY(:)*ZLSFACT(:), MASK=GNEGT(:,:,:), FIELD=0. )
+         P_TH_HINC(:,:,:) = P_TH_HINC(:,:,:) + ZW(:,:,:)
+         PTHT(:,:,:) = PTHT(:,:,:) + ZW(:,:,:)
       END IF
    END DO
 !
diff --git a/src/MNH/lima_sedimentation.f90 b/src/MNH/lima_sedimentation.f90
index 88a0a544ba43209e515ae2bf972eff8a57b79714..365ae0f23362e17a84e8f9ab1682d8dc165f38dd 100644
--- a/src/MNH/lima_sedimentation.f90
+++ b/src/MNH/lima_sedimentation.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2018-2020 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.
@@ -65,6 +65,7 @@ END MODULE MODI_LIMA_SEDIMENTATION
 !!      B.Vie  02/2019  Desactivate (comment) the heat transport by droplets
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
+!  B. Vie         03/2020: disable temperature change of droplets by air temperature
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -230,7 +231,7 @@ DO JN = 1 ,  NSPLITSED(KID)
       DEALLOCATE(ZZY)
       !      
       PINPR(:,:) = PINPR(:,:) + ZWSEDR(:,:,KKB)/XRHOLW/NSPLITSED(KID)                          ! in m/s
-      PT(:,:,:) = PT(:,:,:) + ZWDT(:,:,:)
+      !PT(:,:,:) = PT(:,:,:) + ZWDT(:,:,:)
       
    END IF
 END DO
diff --git a/src/MNH/lima_warm.f90 b/src/MNH/lima_warm.f90
index 1ac67f3ce0e7830f0112bad40bf766dbcb0fd783..d982cbe4fdc52b4c6d2de105836a2ad6fcf66937 100644
--- a/src/MNH/lima_warm.f90
+++ b/src/MNH/lima_warm.f90
@@ -127,7 +127,8 @@ END MODULE MODI_LIMA_WARM
 !!      C. Barthe  * LACy *  jan. 2014   add budgets
 !!      J. Escobar : for real*4 , use XMNH_HUGE
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!!  B.Vié 03/02/2020 : correction of activation of water deposition on the ground
+!!  B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -219,16 +220,16 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3))   &
                                        PCCS,    & ! Cloud water C. source
                                        PCRS       ! Rain water C. source
 !
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: PNFS     ! CCN C. available source
+REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZNFS     ! CCN C. available source
                                                   !used as Free ice nuclei for
                                                   !HOMOGENEOUS nucleation of haze
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: PNAS     ! Cloud  C. nuclei C. source
+REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZNAS     ! Cloud  C. nuclei C. source
                                                   !used as Free ice nuclei for
                                                   !IMMERSION freezing
 !
 !
 REAL,    DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3))   &
-                                  :: ZT, ZTM
+                                  :: ZT
 REAL,    DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3))   &
                                   :: ZWLBDR,ZWLBDR3,ZWLBDC,ZWLBDC3
 INTEGER :: JL
@@ -269,15 +270,15 @@ IF ( LWARM ) PCCS(:,:,:) = PSVS(:,:,:,NSV_LIMA_NC)
 IF ( LWARM .AND. LRAIN ) PCRS(:,:,:) = PSVS(:,:,:,NSV_LIMA_NR)
 !
 IF ( NMOD_CCN .GE. 1 ) THEN
-   ALLOCATE( PNFS(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3),NMOD_CCN) )
-   ALLOCATE( PNAS(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3),NMOD_CCN) )
-   PNFS(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_FREE:NSV_LIMA_CCN_FREE+NMOD_CCN-1)
-   PNAS(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_ACTI:NSV_LIMA_CCN_ACTI+NMOD_CCN-1)
+   ALLOCATE( ZNFS(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3),NMOD_CCN) )
+   ALLOCATE( ZNAS(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3),NMOD_CCN) )
+   ZNFS(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_FREE:NSV_LIMA_CCN_FREE+NMOD_CCN-1)
+   ZNAS(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_ACTI:NSV_LIMA_CCN_ACTI+NMOD_CCN-1)
 ELSE
-   ALLOCATE( PNFS(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3),1) )
-   ALLOCATE( PNAS(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3),1) )
-   PNFS(:,:,:,:) = 0.
-   PNAS(:,:,:,:) = 0.
+   ALLOCATE( ZNFS(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3),1) )
+   ALLOCATE( ZNAS(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3),1) )
+   ZNFS(:,:,:,:) = 0.
+   ZNAS(:,:,:,:) = 0.
 END IF
 !
 !-------------------------------------------------------------------------------
@@ -302,11 +303,6 @@ WHERE (PRRT(:,:,:)>XRTMIN(3) .AND. PCRT(:,:,:)>XCTMIN(3))
    ZWLBDR(:,:,:)  = ZWLBDR3(:,:,:)**XLBEXR
 END WHERE
 ZT(:,:,:)  = PTHT(:,:,:) * (PPABST(:,:,:)/XP00)**(XRD/XCPD)
-IF( OACTIT ) THEN
-   ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
-ELSE 
-   ZTM(:,:,:) = ZT(:,:,:)
-END IF
 !
 !-------------------------------------------------------------------------------
 !
@@ -335,7 +331,7 @@ END IF
 IF (LDEPOC) THEN
   PINDEP(:,:)=0.
   GDEP(:,:) = .FALSE.
-  GDEP(:,:) =    PRCS(:,:,2) >0 .AND. PCCS(:,:,2) >0
+  GDEP(:,:) =    PRCS(:,:,2) >0 .AND. PCCS(:,:,2) >0 .AND. PRCT(:,:,2) >0 .AND. PCCT(:,:,2) >0
   WHERE (GDEP)
      PRCS(:,:,2) = PRCS(:,:,2) - XVDEPOC * PRCT(:,:,2) / ( PZZ(:,:,3) - PZZ(:,:,2))
      PCCS(:,:,2) = PCCS(:,:,2) - XVDEPOC * PCCT(:,:,2) / ( PZZ(:,:,3) - PZZ(:,:,2))
@@ -356,9 +352,9 @@ END IF
 IF (LACTI .AND. NMOD_CCN.GE.1) THEN
 !
    CALL LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, TPFILE, OCLOSE_OUT,&
-                        PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,       &
+                        PRHODREF, PEXNREF, PPABST, ZT, PTHM, PW_NU,       &
                         PRCM, PRVT, PRCT, PRRT,                          &
-                        PTHS, PRVS, PRCS, PCCS, PNFS, PNAS               )
+                        PTHS, PRVS, PRCS, PCCS, ZNFS, ZNAS               )
 !
    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HENU_BU_RTH')
    IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HENU_BU_RRV')
@@ -366,7 +362,7 @@ IF (LACTI .AND. NMOD_CCN.GE.1) THEN
    IF (LBUDGET_SV) THEN
       CALL BUDGET (PCCS(:,:,:)*PRHODJ(:,:,:),12+NSV_LIMA_NC,'HENU_BU_RSV') ! RCN
          DO JL=1, NMOD_CCN
-            CALL BUDGET ( PNFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'HENU_BU_RSV') 
+            CALL BUDGET ( ZNFS(:,:,:,JL)*PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'HENU_BU_RSV') 
          END DO
    END IF
 !
@@ -448,14 +444,12 @@ IF ( LWARM ) PSVS(:,:,:,NSV_LIMA_NC) = PCCS(:,:,:)
 IF ( LWARM .AND. LRAIN ) PSVS(:,:,:,NSV_LIMA_NR) = PCRS(:,:,:)
 !
 IF ( NMOD_CCN .GE. 1 ) THEN
-   PSVS(:,:,:,NSV_LIMA_CCN_FREE:NSV_LIMA_CCN_FREE+NMOD_CCN-1) = PNFS(:,:,:,:)
-   PSVS(:,:,:,NSV_LIMA_CCN_ACTI:NSV_LIMA_CCN_ACTI+NMOD_CCN-1) = PNAS(:,:,:,:)
+   PSVS(:,:,:,NSV_LIMA_CCN_FREE:NSV_LIMA_CCN_FREE+NMOD_CCN-1) = ZNFS(:,:,:,:)
+   PSVS(:,:,:,NSV_LIMA_CCN_ACTI:NSV_LIMA_CCN_ACTI+NMOD_CCN-1) = ZNAS(:,:,:,:)
 END IF
 !
-!++cb++
-IF (ALLOCATED(PNFS)) DEALLOCATE(PNFS)
-IF (ALLOCATED(PNAS)) DEALLOCATE(PNAS)
-!--cb--
+IF (ALLOCATED(ZNFS)) DEALLOCATE(ZNFS)
+IF (ALLOCATED(ZNAS)) DEALLOCATE(ZNAS)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90
index 3cd2f705228d3a81608c24308e85cfefe259cd9e..c9d061fc87aecfeebc3e2f0f5b5a8b08edce7cca 100644
--- a/src/MNH/lima_warm_nucl.f90
+++ b/src/MNH/lima_warm_nucl.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 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.
@@ -9,7 +9,7 @@
 !
 INTERFACE
       SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, TPFILE, OCLOSE_OUT,&
-                                 PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,       &
+                                 PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU,       &
                                  PRCM, PRVT, PRCT, PRRT,                          &
                                  PTHS, PRVS, PRCS, PCCS, PNFS, PNAS               )
 !
@@ -28,8 +28,8 @@ LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZT         ! Temperature
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZTM        ! Temperature at time t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PT         ! Temperature
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTM        ! Temperature at time t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! updraft velocity used for
                                                       ! the nucleation param.
@@ -53,7 +53,7 @@ END INTERFACE
 END MODULE MODI_LIMA_WARM_NUCL
 !     #############################################################################
       SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, TPFILE, OCLOSE_OUT,&
-                                 PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,       &
+                                 PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU,       &
                                  PRCM, PRVT, PRCT, PRRT,                          &
                                  PTHS, PRVS, PRCS, PCCS, PNFS, PNAS               )
 !     #############################################################################
@@ -105,7 +105,7 @@ END MODULE MODI_LIMA_WARM_NUCL
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
-!
+!  B. Vie      03/03/2020: use DTHRAD instead of dT/dt in Smax diagnostic computation
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -141,8 +141,8 @@ LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZT         ! Temperature
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZTM        ! Temperature at time t-dt
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PT         ! Temperature
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTM        ! Temperature at time t-dt
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! updraft velocity used for
                                                       ! the nucleation param.
@@ -222,13 +222,7 @@ IJE=SIZE(PRHODREF,2) - JPHEXT
 IKB=1+JPVEXT
 IKE=SIZE(PRHODREF,3) - JPVEXT
 !
-!++cb++
-!ALLOCATE(ZRTMIN(SIZE(XRTMIN)))
-!--cb--
 ALLOCATE(ZCTMIN(SIZE(XCTMIN)))
-!++cb++
-!ZRTMIN(:) = XRTMIN(:) / PTSTEP
-!--cb--
 ZCTMIN(:) = XCTMIN(:) / PTSTEP
 !
 !  Saturation vapor mixing ratio and radiative tendency                    
@@ -236,11 +230,12 @@ ZCTMIN(:) = XCTMIN(:) / PTSTEP
 ZEPS= XMV / XMD
 !
 ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:) * &
-                EXP(-XALPW+XBETAW/ZT(:,:,:)+XGAMW*ALOG(ZT(:,:,:))) - 1.0)
+                EXP(-XALPW+XBETAW/PT(:,:,:)+XGAMW*ALOG(PT(:,:,:))) - 1.0)
 ZTDT(:,:,:)   = 0.
 !! ZDRC(:,:,:)   = 0.
-IF (OACTIT) THEN
-   ZTDT(:,:,:)   = (ZT(:,:,:)-ZTM(:,:,:))/PTSTEP                   ! dT/dt 
+IF (OACTIT .AND. SIZE(PTM).GT.0) THEN
+   ZTDT(:,:,:)   = PTM(:,:,:)                   ! dThRad 
+!   ZTDT(:,:,:)   = (PT(:,:,:)-PTM(:,:,:))/PTSTEP                   ! dT/dt 
 !!! JPP
 !!! JPP
 !!!   ZDRC(:,:,:)   = (PRCT(:,:,:)-PRCM(:,:,:))/PTSTEP                ! drc/dt
@@ -251,7 +246,7 @@ IF (OACTIT) THEN
 !! BV - W and drc/dt effect should not be included in ZTDT (already accounted for in the computations) ?  
 !!
 !!   ZTDT(:,:,:)   = MIN(0.,ZTDT(:,:,:)+(XG*PW_NU(:,:,:))/XCPD- &
-!!        (XLVTT+(XCPV-XCL)*(ZT(:,:,:)-XTT))*ZDRC(:,:,:)/XCPD)
+!!        (XLVTT+(XCPV-XCL)*(PT(:,:,:)-XTT))*ZDRC(:,:,:)/XCPD)
 END IF
 !
 !  find locations where CCN are available
@@ -272,13 +267,13 @@ IF( OACTIT ) THEN
                                      ZTDT(IIB:IIE,IJB:IJE,IKB:IKE)<XTMIN   .OR. &
         PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE)    ) .AND.&
             PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))&
-             .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
+             .AND. PT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
              .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>ZCTMIN(4)
 ELSE 
    GNUCT(IIB:IIE,IJB:IJE,IKB:IKE) =   (PW_NU(IIB:IIE,IJB:IJE,IKB:IKE)>XWMIN .OR. &
         PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE)    ) .AND.&
             PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))&
-             .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
+             .AND. PT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
              .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>ZCTMIN(4)
 END IF
 INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:))
@@ -306,7 +301,7 @@ IF( INUCT >= 1 ) THEN
    ALLOCATE(ZEXNREF(INUCT)) 
    DO JL=1,INUCT
       ZCCS(JL) = PCCS(I1(JL),I2(JL),I3(JL))
-      ZZT(JL)  = ZT(I1(JL),I2(JL),I3(JL))
+      ZZT(JL)  = PT(I1(JL),I2(JL),I3(JL))
       ZZW1(JL) = ZRVSAT(I1(JL),I2(JL),I3(JL))
       ZZW2(JL) = PW_NU(I1(JL),I2(JL),I3(JL))
       ZZTDT(JL)  = ZTDT(I1(JL),I2(JL),I3(JL))
@@ -484,7 +479,7 @@ IF( INUCT >= 1 ) THEN
 !
    PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
    PRCS(:,:,:) = PRCS(:,:,:) + ZW(:,:,:) 
-   ZW(:,:,:)   = ZW(:,:,:) * (XLVTT+(XCPV-XCL)*(ZT(:,:,:)-XTT))/                &
+   ZW(:,:,:)   = ZW(:,:,:) * (XLVTT+(XCPV-XCL)*(PT(:,:,:)-XTT))/                &
             (PEXNREF(:,:,:)*(XCPD+XCPV*PRVT(:,:,:)+XCL*(PRCT(:,:,:)+PRRT(:,:,:))))
    PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)
 !
diff --git a/src/MNH/mnhget_surf_paramn.f90 b/src/MNH/mnhget_surf_paramn.f90
index da6c4608943b601d01edfbb2a234079a68c551cb..937af0e3cee56a552c469fd360bc22fc4937b08b 100644
--- a/src/MNH/mnhget_surf_paramn.f90
+++ b/src/MNH/mnhget_surf_paramn.f90
@@ -9,15 +9,19 @@
 INTERFACE
       SUBROUTINE MNHGET_SURF_PARAM_n(PCOVER,PSEA,KCOVER,PRN,PH,PLE,PLEI,PGFLUX, &
                                      PT2M,PQ2M,PHU2M,PZON10M,PMER10M,PZS,PTOWN,&
-                                     PBARE, PLAI_TREE, PH_TREE )
+                                     PBARE, PLAI_TREE, PH_TREE, PWALL_O_HOR,    &
+                                     PBUILD_HEIGHT,PNATURE )
 !
 REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PCOVER  ! cover types
 REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PSEA    ! sea fraction
 REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PTOWN   ! town fraction
+REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PNATURE ! nature fraction
 INTEGER,                INTENT(OUT), OPTIONAL :: KCOVER  ! number of cover types
 REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PBARE           ! Bare soil fraction
-REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PLAI_TREE       ! 
-REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PH_TREE
+REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PLAI_TREE       ! Tree leaf area index [m^2(leaf)/m^2(nature)]
+REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PH_TREE         ! Tree height [m]
+REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PWALL_O_HOR     ! Facade area density [m^2(fac.)/m^2(town)]
+REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PBUILD_HEIGHT   ! Building height [m] 
 REAL, DIMENSION(:),     INTENT(INOUT), OPTIONAL :: PRN           ! Net radiation at surface    (W/m2)
 REAL, DIMENSION(:),     INTENT(INOUT), OPTIONAL :: PH            ! Sensible heat flux          (W/m2)
 REAL, DIMENSION(:),     INTENT(INOUT), OPTIONAL :: PLE           ! Total Latent heat flux      (W/m2)
@@ -38,7 +42,8 @@ END MODULE MODI_MNHGET_SURF_PARAM_n
 !     ########################################
       SUBROUTINE MNHGET_SURF_PARAM_n(PCOVER,PSEA,KCOVER,PRN,PH,PLE,PLEI,PGFLUX, &
                                      PT2M,PQ2M,PHU2M,PZON10M,PMER10M,PZS,PTOWN,&
-                                     PBARE, PLAI_TREE, PH_TREE )
+                                     PBARE, PLAI_TREE, PH_TREE, PWALL_O_HOR,    &
+                                     PBUILD_HEIGHT,PNATURE )
 !     ########################################
 !
 !!****  *MNHGET_SURF_PARAM_n* - gets some surface fields on MESONH grid
@@ -74,6 +79,7 @@ END MODULE MODI_MNHGET_SURF_PARAM_n
 !!       S. Donier  06/2015 : bug surface aerosols
 !!  06/2016     (G.Delautier) phasage surfex 8
 !!  01/2018      (G.Delautier) SURFEX 8.1
+!!  11/2019 C.Lac correction in the drag formula and application to building in addition to tree
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -101,10 +107,13 @@ IMPLICIT NONE
 REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PCOVER  ! cover types
 REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PSEA    ! sea fraction
 REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PTOWN   ! town fraction
+REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PNATURE ! nature fraction
 INTEGER,                INTENT(OUT), OPTIONAL :: KCOVER  ! number of cover types
 REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PBARE           ! Bare soil fraction
 REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PLAI_TREE       ! 
 REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PH_TREE         !
+REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PWALL_O_HOR     ! Facade area density [m^2(fac.)/m^2(town)]
+REAL, DIMENSION(:,:),   INTENT(OUT), OPTIONAL :: PBUILD_HEIGHT   ! Building height [m] 
 REAL, DIMENSION(:),     INTENT(INOUT), OPTIONAL :: PRN           ! Net radiation at surface    (W/m2)
 REAL, DIMENSION(:),     INTENT(INOUT), OPTIONAL :: PH            ! Sensible heat flux          (W/m2)
 REAL, DIMENSION(:),     INTENT(INOUT), OPTIONAL :: PLE           ! Total Latent heat flux      (W/m2)
@@ -137,6 +146,8 @@ REAL, DIMENSION(:),   ALLOCATABLE :: ZNATURE! nature fraction
 REAL, DIMENSION(:),   ALLOCATABLE :: ZTOWN  ! town   fraction
 REAL, DIMENSION(:),   ALLOCATABLE :: ZVH     
 REAL, DIMENSION(:),   ALLOCATABLE :: ZLAI
+REAL, DIMENSION(:),   ALLOCATABLE :: ZWALL_O_HOR   ! Facade surface density [m^2(fac.)/m^2(town)]
+REAL, DIMENSION(:),   ALLOCATABLE :: ZBUILD_HEIGHT ! Building height [m]
 REAL, DIMENSION(:),   ALLOCATABLE :: ZBARE  ! bare soil fraction
 REAL, DIMENSION(:),   ALLOCATABLE :: ZZS    ! orography
 REAL, DIMENSION(:),   ALLOCATABLE :: ZRN    ! net radiation at surface    (W/m2)
@@ -170,8 +181,9 @@ IF (PRESENT(PCOVER)) THEN
   DEALLOCATE(ZCOVER)
 END IF
 !
-IF (PRESENT(PSEA) .OR. PRESENT(PTOWN) .OR. &
-    PRESENT(PBARE) .OR. PRESENT(PLAI_TREE) .OR. PRESENT(PH_TREE)) THEN
+IF (PRESENT(PSEA) .OR. PRESENT(PTOWN) .OR. PRESENT(PNATURE) .OR. &
+    PRESENT(PBARE) .OR. PRESENT(PLAI_TREE) .OR. PRESENT(PH_TREE) .OR. &
+    PRESENT(PWALL_O_HOR) .OR. PRESENT(PBUILD_HEIGHT) ) THEN
   ALLOCATE(ZSEA   ( ILU ))
   ALLOCATE(ZWATER ( ILU ))
   ALLOCATE(ZNATURE( ILU ))
@@ -183,6 +195,9 @@ IF (PRESENT(PSEA) .OR. PRESENT(PTOWN) .OR. &
   IF (PRESENT(PTOWN)) THEN
     CALL REMOVE_HALO(ZTOWN,PTOWN)
   END IF
+  IF (PRESENT(PNATURE)) THEN
+    CALL REMOVE_HALO(ZNATURE,PNATURE)
+  END IF
 END IF
 !
 IF (PRESENT(PBARE)) THEN
@@ -248,6 +263,22 @@ IF (PRESENT(PH_TREE)  .OR.PRESENT(PLAI_TREE)) THEN
   DEALLOCATE(ZLAI)
 END IF
 !
+IF (PRESENT(PWALL_O_HOR) .OR. PRESENT(PBUILD_HEIGHT)) THEN
+  PBUILD_HEIGHT(:,:) = XUNDEF
+  PWALL_O_HOR(:,:) = XUNDEF
+  ALLOCATE(ZBUILD_HEIGHT ( ILU ))
+  ALLOCATE(ZWALL_O_HOR   ( ILU ))
+  CALL GET_SURF_VAR_n(YSURF_CUR%FM,YSURF_CUR%IM,YSURF_CUR%SM,YSURF_CUR%TM, &
+                      YSURF_CUR%WM,YSURF_CUR%DUO,YSURF_CUR%DU,YSURF_CUR%UG,&
+                      YSURF_CUR%U,YSURF_CUR%USS,&
+                       'MESONH',ILU,1,PTOWN=ZTOWN,                       &
+                       PWALL_O_HOR=ZWALL_O_HOR,PBUILD_HEIGHT=ZBUILD_HEIGHT )
+  CALL REMOVE_HALO(ZBUILD_HEIGHT,PBUILD_HEIGHT)
+  CALL REMOVE_HALO(ZWALL_O_HOR,PWALL_O_HOR)
+  DEALLOCATE(ZBUILD_HEIGHT)
+  DEALLOCATE(ZWALL_O_HOR)
+END IF
+!
 IF (ALLOCATED(ZSEA)) THEN
   DEALLOCATE(ZSEA   )
   DEALLOCATE(ZWATER )
diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90
index 14387e9f096dfadc2fa95b186c91d1bf6e299cfe..c39a3436d7a650e609d81ab92ee5980d08bbd581 100644
--- a/src/MNH/modd_budget.f90
+++ b/src/MNH/modd_budget.f90
@@ -42,6 +42,7 @@
 !!      C. LAc          10/2016 add droplets deposition
 !!      S. Riette       11/2016  New budgets for ICE3/ICE4
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      B.Vie   03/02/2020 : LIMA negativity checks after turbulence, advection and microphysics budgets 
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -399,6 +400,9 @@ INTEGER, SAVE :: NFRCRR     ! forcing
 INTEGER, SAVE :: NDIFRR     ! numerical diffusion
 INTEGER, SAVE :: NRELRR     ! relaxation
 INTEGER, SAVE :: NNEGARR    ! negative correction                            
+INTEGER, SAVE :: NNETURRR    ! negative correction
+INTEGER, SAVE :: NNEADVRR    ! negative correction
+INTEGER, SAVE :: NNECONRR    ! negative correction
 INTEGER, SAVE :: NACCRRR    ! accretion
 INTEGER, SAVE :: NAUTORR    ! autoconversion
 INTEGER, SAVE :: NREVARR    ! rain evaporation
@@ -434,6 +438,9 @@ INTEGER, SAVE :: NDCONVRI   ! Deep CONVection
 INTEGER, SAVE :: NHTURBRI   ! horizontal turbulence
 INTEGER, SAVE :: NVTURBRI   ! vertical turbulence
 INTEGER, SAVE :: NNEGARI    ! negative correction                            
+INTEGER, SAVE :: NNETURRI    ! negative correction
+INTEGER, SAVE :: NNEADVRI    ! negative correction
+INTEGER, SAVE :: NNECONRI    ! negative correction
 INTEGER, SAVE :: NSEDIRI    ! SEDImentation           ICE3
 INTEGER, SAVE :: NHENURI    ! HEterogenous NUcleation ICE3
 INTEGER, SAVE :: NHONRI     ! HOmogeneous Nucleation  ICE3
@@ -472,6 +479,9 @@ INTEGER, SAVE :: NFRCRS     ! forcing
 INTEGER, SAVE :: NDIFRS     ! numerical diffusion
 INTEGER, SAVE :: NRELRS     ! relaxation
 INTEGER, SAVE :: NNEGARS    ! negative correction                            
+INTEGER, SAVE :: NNETURRS    ! negative correction
+INTEGER, SAVE :: NNEADVRS    ! negative correction
+INTEGER, SAVE :: NNECONRS    ! negative correction
 INTEGER, SAVE :: NSEDIRS    ! SEDImentation           ICE3
 INTEGER, SAVE :: NDEPSRS    ! DEPosition on Snow      ICE3
 INTEGER, SAVE :: NAGGSRS    ! AGGregation of snow     ICE3
@@ -501,6 +511,9 @@ INTEGER, SAVE :: NFRCRG     ! forcing
 INTEGER, SAVE :: NDIFRG     ! numerical diffusion
 INTEGER, SAVE :: NRELRG     ! relaxation
 INTEGER, SAVE :: NNEGARG    ! negative correction                            
+INTEGER, SAVE :: NNETURRG    ! negative correction
+INTEGER, SAVE :: NNEADVRG    ! negative correction
+INTEGER, SAVE :: NNECONRG    ! negative correction
 INTEGER, SAVE :: NSEDIRG    ! SEDImentation           ICE3
 INTEGER, SAVE :: NSFRRG     ! Spontaneous FReezing    ICE3
 INTEGER, SAVE :: NDEPGRG    ! DEPosition on Snow      ICE3
@@ -533,6 +546,9 @@ INTEGER, SAVE :: NFRCRH     ! forcing
 INTEGER, SAVE :: NDIFRH     ! numerical diffusion
 INTEGER, SAVE :: NRELRH     ! relaxation
 INTEGER, SAVE :: NNEGARH    ! negative correction 
+INTEGER, SAVE :: NNETURRH    ! negative correction
+INTEGER, SAVE :: NNEADVRH    ! negative correction
+INTEGER, SAVE :: NNECONRH    ! negative correction
 INTEGER, SAVE :: NSEDIRH    ! sedimentation
 INTEGER, SAVE :: NWETGRH    ! wet growth of graupel
 INTEGER, SAVE :: NWETHRH    ! wet growth of hail
@@ -566,7 +582,7 @@ INTEGER, SAVE :: NNEGASV
 INTEGER, SAVE :: NDEPSQV
 INTEGER, SAVE :: NDEPGQV
 INTEGER, SAVE :: NREVAQV
-INTEGER, SAVE :: NDEPIQV
+INTEGER, SAVE :: NCDEPIQV
 INTEGER, SAVE :: NNEUTQV
 !
 ! Allowed processes for the budget of electric charge carried by cloud droplets
@@ -577,8 +593,7 @@ INTEGER, SAVE :: NWETGQC
 INTEGER, SAVE :: NDRYGQC
 INTEGER, SAVE :: NIMLTQC
 INTEGER, SAVE :: NBERFIQC
-INTEGER, SAVE :: NDEPIQC
-INTEGER, SAVE :: NINDQC  ! inductive process
+INTEGER, SAVE :: NCDEPIQC
 INTEGER, SAVE :: NSEDIQC
 INTEGER, SAVE :: NNEUTQC
 !
@@ -602,7 +617,7 @@ INTEGER, SAVE :: NWETGQI
 INTEGER, SAVE :: NDRYGQI
 INTEGER, SAVE :: NIMLTQI
 INTEGER, SAVE :: NBERFIQI
-INTEGER, SAVE :: NDEPIQI
+INTEGER, SAVE :: NCDEPIQI
 INTEGER, SAVE :: NNIISQI  ! non-inductive I-S
 INTEGER, SAVE :: NSEDIQI
 INTEGER, SAVE :: NNEUTQI
@@ -629,7 +644,6 @@ INTEGER, SAVE :: NCFRZQG
 INTEGER, SAVE :: NWETGQG
 INTEGER, SAVE :: NDRYGQG
 INTEGER, SAVE :: NGMLTQG
-INTEGER, SAVE :: NINDQG  ! inductive process
 INTEGER, SAVE :: NSEDIQG
 INTEGER, SAVE :: NNEUTQG
 !
diff --git a/src/MNH/modd_dragbldgn.f90 b/src/MNH/modd_dragbldgn.f90
new file mode 100644
index 0000000000000000000000000000000000000000..f89fc0d09d34143191714cca3d89bbf9a55ab580
--- /dev/null
+++ b/src/MNH/modd_dragbldgn.f90
@@ -0,0 +1,54 @@
+!MNH_LIC Copyright 2019-2020 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.
+!-----------------------------------------------------------------------------
+!!
+!!    #####################
+      MODULE MODD_DRAGBLDG_n
+!!    #####################
+!!
+!!*** *MODD_DRAGBLDG*
+!!
+!!    PURPOSE
+!!    -------
+!       Declaration to take into account building drag in Meso-NH instead of SURFEX. 
+!!
+!!**  AUTHOR
+!!    ------
+!!    R.Schoetter                   *CNRM*
+!
+!!    MODIFICATIONS
+!!    -------------
+!!    Original 09/2019
+!-----------------------------------------------------------------------------
+!
+!*       0.   DECLARATIONS
+!        -----------------
+!
+USE MODD_PARAMETERS, ONLY: JPMODELMAX
+!
+IMPLICIT NONE
+!
+TYPE DRAGBLDG_t
+  !
+  LOGICAL    ::     LDRAGBLDG    ! flag used to take into account building drag in 
+  !                              ! the atmospheric model instead of SURFEX.
+  !
+END TYPE DRAGBLDG_t
+!
+TYPE(DRAGBLDG_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: DRAGBLDG_MODEL
+!
+LOGICAL, POINTER :: LDRAGBLDG=>NULL()
+!
+CONTAINS
+!
+SUBROUTINE DRAGBLDG_GOTO_MODEL(KFROM, KTO)
+  !
+  INTEGER, INTENT(IN) :: KFROM, KTO
+  !
+  LDRAGBLDG=>DRAGBLDG_MODEL(KTO)%LDRAGBLDG
+  !
+END SUBROUTINE DRAGBLDG_GOTO_MODEL
+!
+END MODULE MODD_DRAGBLDG_n
diff --git a/src/MNH/modd_dragtree.f90 b/src/MNH/modd_dragtree.f90
deleted file mode 100644
index 7390bf68283e54df8e4086a89c8d7953616aa8c4..0000000000000000000000000000000000000000
--- a/src/MNH/modd_dragtree.f90
+++ /dev/null
@@ -1,36 +0,0 @@
-!MNH_LIC Copyright 1994-2014 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.
-!!
-!!    #####################
-      MODULE MODD_DRAGTREE
-!!    #####################
-!!
-!!*** *MODD_DRAGTREE*
-!!
-!!    PURPOSE
-!!    -------
-!       Declaration to take into account tree drag in Meso-NH              
-!              instead of SURFEX. 
-!!
-!!**  AUTHOR
-!!    ------
-!!    C.Lac                   *CNRM*
-!
-!!    MODIFICATIONS
-!!    -------------
-!!    Original 30/06/11
-!!    06/16  (C.Lac) Add droplet deposition
-!-----------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!        -----------------
-IMPLICIT NONE
-LOGICAL    ::     LDRAGTREE    ! flag used to  take into account tree drag in 
-!                              ! the atmospheric model instead of SURFEX.
-LOGICAL    ::     LDEPOTREE    ! flag for droplet deposition on trees
-!
-REAL       ::     XVDEPOTREE   ! Droplet deposition velocity
-!
-END MODULE MODD_DRAGTREE
diff --git a/src/MNH/modd_dragtreen.f90 b/src/MNH/modd_dragtreen.f90
new file mode 100644
index 0000000000000000000000000000000000000000..0ed016777983a5fcc69e029270e2c41838aba595
--- /dev/null
+++ b/src/MNH/modd_dragtreen.f90
@@ -0,0 +1,65 @@
+!MNH_LIC Copyright 2011-2020 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.
+!-----------------------------------------------------------------------------
+!!
+!!    #####################
+      MODULE MODD_DRAGTREE_n
+!!    #####################
+!!
+!!*** *MODD_DRAGTREE*
+!!
+!!    PURPOSE
+!!    -------
+!       Declaration to take into account tree drag in Meso-NH              
+!              instead of SURFEX. 
+!!
+!!**  AUTHOR
+!!    ------
+!!    C.Lac                   *CNRM*
+!
+!!    MODIFICATIONS
+!!    -------------
+!!    Original 30/06/11
+!!    06/16  (C.Lac) Add droplet deposition
+!!    11/2019 C.Lac correction in the drag formula and application to building in addition to tree
+
+!-----------------------------------------------------------------------------
+!
+!*       0.   DECLARATIONS
+!        -----------------
+!
+USE MODD_PARAMETERS, ONLY: JPMODELMAX
+!
+IMPLICIT NONE
+!
+TYPE DRAGTREE_t
+  !
+  LOGICAL    ::     LDRAGTREE    ! flag used to  take into account tree drag in 
+  !                              ! the atmospheric model instead of SURFEX.
+  LOGICAL    ::     LDEPOTREE    ! flag for droplet deposition on trees
+  !
+  REAL       ::     XVDEPOTREE   ! Droplet deposition velocity
+  !
+END TYPE DRAGTREE_t
+!
+TYPE(DRAGTREE_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: DRAGTREE_MODEL
+!
+LOGICAL,POINTER :: LDRAGTREE=>NULL()
+LOGICAL,POINTER :: LDEPOTREE=>NULL()
+REAL   ,POINTER :: XVDEPOTREE=>NULL()
+!
+CONTAINS
+!
+SUBROUTINE DRAGTREE_GOTO_MODEL(KFROM, KTO)
+  !
+  INTEGER, INTENT(IN) :: KFROM, KTO
+  !
+  LDRAGTREE=>DRAGTREE_MODEL(KTO)%LDRAGTREE
+  LDEPOTREE=>DRAGTREE_MODEL(KTO)%LDEPOTREE
+  XVDEPOTREE=>DRAGTREE_MODEL(KTO)%XVDEPOTREE
+  !
+END SUBROUTINE DRAGTREE_GOTO_MODEL
+!
+END MODULE MODD_DRAGTREE_n
diff --git a/src/MNH/modd_frc.f90 b/src/MNH/modd_frc.f90
index 0fdd3c63315b69c0bc97eaa7852cea8b93884763..a430ad6034fce90152a49a63052db13cb2f87e2b 100644
--- a/src/MNH/modd_frc.f90
+++ b/src/MNH/modd_frc.f90
@@ -64,7 +64,6 @@ TYPE (DATE_TIME), SAVE, DIMENSION(:), ALLOCATABLE :: TDTFRC ! date of
 REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XUFRC,   &! geostrophic wind 
 					                       XVFRC,   &! components U and V
 					                       XWFRC     ! large scale vertical wind
-REAL, SAVE, DIMENSION(:,:,:),ALLOCATABLE:: XWTFRC    ! large scale vertical wind
 REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTHFRC,  &! large scale TH profile
 					                       XRVFRC    ! large scale RV profile
 REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XGXTHFRC,&! large scale TH gradient
diff --git a/src/MNH/modd_frcn.f90 b/src/MNH/modd_frcn.f90
index 3a01de69f39beb23c12defa4307cfbb4d07b8161..fc9c683629d057037e5a9884658007863b4c6aba 100644
--- a/src/MNH/modd_frcn.f90
+++ b/src/MNH/modd_frcn.f90
@@ -35,11 +35,12 @@
 !
 USE MODD_PARAMETERS, ONLY: JPMODELMAX
 IMPLICIT NONE
-
+!
 TYPE FRC_t
 !          
-  REAL, DIMENSION(:,:,:), POINTER :: XUFRC_PAST=>NULL()! Forcing wind components
-  REAL, DIMENSION(:,:,:), POINTER :: XVFRC_PAST=>NULL()! at previous time-step
+  REAL, DIMENSION(:,:,:), POINTER :: XUFRC_PAST=>NULL() ! Forcing wind components
+  REAL, DIMENSION(:,:,:), POINTER :: XVFRC_PAST=>NULL() ! at previous time-step
+  REAL, DIMENSION(:,:,:), POINTER :: XWTFRC=>NULL()     ! large scale vertical wind
 ! 
 END TYPE FRC_t
 
@@ -47,6 +48,7 @@ TYPE(FRC_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: FRC_MODEL
 
 REAL, DIMENSION(:,:,:), POINTER :: XUFRC_PAST=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XVFRC_PAST=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XWTFRC=>NULL()
 
 CONTAINS
 
@@ -56,11 +58,13 @@ INTEGER, INTENT(IN) :: KFROM, KTO
 ! Save current state for allocated arrays
 FRC_MODEL(KFROM)%XUFRC_PAST=>XUFRC_PAST
 FRC_MODEL(KFROM)%XVFRC_PAST=>XVFRC_PAST
+FRC_MODEL(KFROM)%XWTFRC=>XWTFRC
 !
 ! Current model is set to model KTO
 XUFRC_PAST=>FRC_MODEL(KTO)%XUFRC_PAST
 XVFRC_PAST=>FRC_MODEL(KTO)%XVFRC_PAST
-
+XWTFRC=>FRC_MODEL(KTO)%XWTFRC
+!
 END SUBROUTINE FRC_GOTO_MODEL
 
 END MODULE MODD_FRC_n
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 919e8bb405d9645d7adcb76848a95061612e4a7a..7def250d57f0a34ad2a8013b1df7c462342efb28 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -886,7 +886,7 @@ CALL BOUNDARIES (                                                   &
             XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
             XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,   &
             XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS,   &
-            XRHODJ,                                                 &
+            XRHODJ,XRHODREF,                                        &
             XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
 CALL MPPDB_CHECK3DM("after  BOUNDARIES:XUT, XVT, XWT, XTHT, XTKET",PRECISION,&
                    &  XUT, XVT, XWT, XTHT, XTKET)
@@ -1109,7 +1109,7 @@ END IF
 !
 IF ( LFORCING ) THEN
   CALL FORCING(XTSTEP,LUSERV,XRHODJ,XCORIOZ,XZHAT,XZZ,TDTCUR,&
-               XUFRC_PAST, XVFRC_PAST,                &
+               XUFRC_PAST, XVFRC_PAST,XWTFRC,         &
                XUT,XVT,XWT,XTHT,XTKET,XRT,XSVT,       &
                XRUS,XRVS,XRWS,XRTHS,XRTKES,XRRS,XRSVS,IMI,ZJ)
 END IF
diff --git a/src/MNH/modn_budget.f90 b/src/MNH/modn_budget.f90
index 8d83765590a09f58a926aa1ed985a733951cc0ce..2e0f1f4ec6433fd184ddcb835902edc3aebb13cc 100644
--- a/src/MNH/modn_budget.f90
+++ b/src/MNH/modn_budget.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2020 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/modn_budget.f90,v $ $Revision: 1.2.2.1.2.1.2.1.10.1.2.3 $ $Date: 2014/01/09 15:01:56 $
-!-----------------------------------------------------------------
 !     ##################
       MODULE MODN_BUDGET
 !     ##################
@@ -229,6 +225,7 @@
 !!      C. Barthe        /16  add budget terms for LIMA
 !!      C.Lac        10/2016  Add droplet deposition
 !!      S. Riette   11/2016 New budgets for ICE3/ICE4
+!!      B.Vie    03/02/2020 LIMA negativity checks after turbulence, advection and microphysics budgets 
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -278,42 +275,48 @@ NAMELIST/NAM_BU_RRC/LBU_RRC, NASSERC, NNESTRC, NADVRC, NFRCRC, &
 NAMELIST/NAM_BU_RRR/LBU_RRR, NASSERR, NNESTRR, NADVRR, NFRCRR, &
                     NDIFRR, NRELRR, NNEGARR, NACCRRR, NAUTORR, NREVARR, NSEDIRR,    &
                     NSFRRR, NACCRR, NCFRZRR, NWETGRR, NDRYGRR, NGMLTRR, NWETHRR,    &
-                    NHMLTRR, NDRYHRR, NCORRRR, NCMELRR,NHONRRR, NCORRRR, NR2C1RR, NCVRCRR
+                    NHMLTRR, NDRYHRR, NCORRRR, NCMELRR,NHONRRR, NCORRRR, NR2C1RR, NCVRCRR, &
+                    NNETURRR, NNEADVRR, NNECONRR
 ! 
 NAMELIST/NAM_BU_RRI/LBU_RRI, NASSERI, NNESTRI, NADVRI, NFRCRI, &
                     NDIFRI, NRELRI, NDCONVRI, NHTURBRI, NVTURBRI, NNEGARI, NSEDIRI, &
                     NHENURI, NHONRI, NAGGSRI, NAUTSRI, NCFRZRI, NWETGRI, NDRYGRI,   &
                     NIMLTRI, NBERFIRI, NCDEPIRI, NWETHRI, NDRYHRI, NADJURI, NCORRRI, &
                     NHINDRI, NHINCRI, NHONHRI, NHONCRI, NCNVIRI, NCNVSRI, &
-                    NHMSRI, NHMGRI, NCEDSRI, NCORRRI
+                    NHMSRI, NHMGRI, NCEDSRI, NCORRRI, &
+                    NNETURRI, NNEADVRI, NNECONRI
 ! 
 NAMELIST/NAM_BU_RRS/LBU_RRS, NASSERS, NNESTRS, NADVRS, NFRCRS, &
                     NDIFRS, NRELRS, NNEGARS, NSEDIRS, NDEPSRS, NAGGSRS, NAUTSRS,    &
                     NRIMRS, NACCRS, NCMELRS, NWETGRS, NDRYGRS, NWETHRS, NDRYHRS,    &
-                    NCORRRS, NCNVIRS, NCNVSRS, NHMSRS, NCORRRS
+                    NCORRRS, NCNVIRS, NCNVSRS, NHMSRS, NCORRRS, &
+                    NNETURRS, NNEADVRS, NNECONRS
 ! 
 NAMELIST/NAM_BU_RRG/LBU_RRG, NASSERG, NNESTRG, NADVRG, NFRCRG, &
                     NDIFRG, NRELRG, NNEGARG, NSEDIRG, NSFRRG, NDEPGRG, NRIMRG, NACCRG,    &
                     NCMELRG, NCFRZRG, NWETGRG, NDRYGRG, NGMLTRG, NWETHRG, &
-                    NDRYHRG, NCORRRG, NHGCVRG, NGHCVRG,NHONRRG, NHMGRG, NCOHGRG 
+                    NDRYHRG, NCORRRG, NHGCVRG, NGHCVRG,NHONRRG, NHMGRG, NCOHGRG, &
+                    NNETURRG, NNEADVRG, NNECONRG 
 ! 
 NAMELIST/NAM_BU_RRH/LBU_RRH, NASSERH, NNESTRH, NADVRH, NFRCRH, &
                     NDIFRH, NRELRH, NNEGARH, NSEDIRH, NWETGRH, NWETHRH, NDRYHRH, NHMLTRH, &
-                    NCORRRH, NHGCVRH, NGHCVRH, NCOHGRH, NHMLTRH
+                    NCORRRH, NHGCVRH, NGHCVRH, NCOHGRH, NHMLTRH, &
+                    NNETURRH, NNEADVRH, NNECONRH
 ! 
 NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NADVSV, NFRCSV, &
                      NDIFSV, NRELSV, NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV, NMAFLSV,       &
                      NNEGASV,                                                              & 
+                     NDEPSQV, NDEPGQV, NREVAQV, NCDEPIQV, NNEUTQV,                         &
                      NAUTOQC, NACCRQC, NRIMQC, NWETGQC, NDRYGQC, NIMLTQC, NBERFIQC,        &
-                     NDEPIQC, NINDQC, NSEDIQC, NNEUTQC,                                    &
+                     NCDEPIQC, NSEDIQC, NNEUTQC,                                           &
                      NAUTOQR, NACCRQR, NREVAQR, NACCQR, NCFRZQR, NWETGQR, NDRYGQR,         &
                      NGMLTQR, NSEDIQR, NNEUTQR,                                            &
                      NAGGSQI, NAUTSQI, NCFRZQI, NWETGQI, NDRYGQI, NIMLTQI, NBERFIQI,       &
-                     NDEPIQI, NNIISQI, NSEDIQI, NNEUTQI,                                   &
+                     NCDEPIQI, NNIISQI, NSEDIQI, NNEUTQI,                                  &
                      NDEPSQS, NAGGSQS, NAUTSQS, NRIMQS, NACCQS, NCMELQS, NWETGQS,          &
                      NDRYGQS, NNIISQS, NSEDIQS, NNEUTQS,                                   &
                      NDEPGQG, NRIMQG, NACCQG, NCMELQG, NCFRZQG, NWETGQG, NDRYGQG,          &
-                     NGMLTQG, NINDQG, NSEDIQG, NNEUTQG, NDEPOTRSV
+                     NGMLTQG, NSEDIQG, NNEUTQG, NDEPOTRSV
 ! must add budget for hail
 !
 END MODULE MODN_BUDGET
diff --git a/src/MNH/modn_dragbldgn.f90 b/src/MNH/modn_dragbldgn.f90
new file mode 100644
index 0000000000000000000000000000000000000000..bf2a7c7458fb91bbd436c5a17c39e9e6b63e8dcc
--- /dev/null
+++ b/src/MNH/modn_dragbldgn.f90
@@ -0,0 +1,52 @@
+!MNH_LIC Copyright 2019-2020 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.
+!-----------------------------------------------------------------------------
+!!
+!!    #####################
+      MODULE MODN_DRAGBLDG_n
+!!    #####################
+!!
+!!*** *MODN_DRAGBLDG*
+!!
+!!    PURPOSE
+!!    -------
+!       Namelist to take into account building drag in the atmospheric model
+!              instead of SURFEX. 
+!!
+!!**  AUTHOR
+!!    ------
+!!    R.Schoetter                   *CNRM*
+!
+!!    MODIFICATIONS
+!!    -------------
+!!    Original 09/2019
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!
+USE MODD_DRAGBLDG_n, ONLY :    &
+    LDRAGBLDG_n => LDRAGBLDG   
+!
+!-----------------------------------------------------------------------------
+!
+!*       0.   DECLARATIONS
+!        -----------------
+IMPLICIT NONE
+!
+LOGICAL, SAVE :: LDRAGBLDG
+!
+NAMELIST /NAM_DRAGBLDGn/LDRAGBLDG
+!
+CONTAINS
+!
+SUBROUTINE INIT_NAM_DRAGBLDGn
+   LDRAGBLDG = LDRAGBLDG_n
+END SUBROUTINE INIT_NAM_DRAGBLDGn
+!
+SUBROUTINE UPDATE_NAM_DRAGBLDGn
+   LDRAGBLDG_n = LDRAGBLDG
+END SUBROUTINE UPDATE_NAM_DRAGBLDGn
+!
+END MODULE MODN_DRAGBLDG_n
diff --git a/src/MNH/modn_dragtree.f90 b/src/MNH/modn_dragtree.f90
deleted file mode 100644
index 58703b7a9474db24073b6248cd2d714eef0ffe21..0000000000000000000000000000000000000000
--- a/src/MNH/modn_dragtree.f90
+++ /dev/null
@@ -1,40 +0,0 @@
-!MNH_LIC Copyright 1994-2014 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.
-!!
-!!    #####################
-      MODULE MODN_DRAGTREE
-!!    #####################
-!!
-!!*** *MODN_DRAGTREE*
-!!
-!!    PURPOSE
-!!    -------
-!       Namelist to take into account tree drag in the atmospheric model
-!              instead of SURFEX. 
-!!
-!!**  AUTHOR
-!!    ------
-!!    C.Lac                   *CNRM*
-!
-!!    MODIFICATIONS
-!!    -------------
-!!    Original 30/06/11
-!!
-!!    10/2016 : (C.Lac) Add droplet deposition on trees
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-USE MODD_DRAGTREE                           
-!!
-!-----------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!        -----------------
-IMPLICIT NONE
-SAVE
-NAMELIST /NAM_DRAGTREE/  &
-     LDRAGTREE,LDEPOTREE,XVDEPOTREE                        
-
-!
-END MODULE MODN_DRAGTREE
diff --git a/src/MNH/modn_dragtreen.f90 b/src/MNH/modn_dragtreen.f90
new file mode 100644
index 0000000000000000000000000000000000000000..6f9fe1af4098ea854d6eff9adc735d1a9c8eca86
--- /dev/null
+++ b/src/MNH/modn_dragtreen.f90
@@ -0,0 +1,62 @@
+!MNH_LIC Copyright 2011-2020 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.
+!-----------------------------------------------------------------------------
+!!
+!!    #####################
+      MODULE MODN_DRAGTREE_n
+!!    #####################
+!!
+!!*** *MODN_DRAGTREE*
+!!
+!!    PURPOSE
+!!    -------
+!       Namelist to take into account tree drag in the atmospheric model
+!              instead of SURFEX. 
+!!
+!!**  AUTHOR
+!!    ------
+!!    C.Lac                   *CNRM*
+!
+!!    MODIFICATIONS
+!!    -------------
+!!    Original 30/06/11
+!!
+!!    10/2016 : (C.Lac) Add droplet deposition on trees
+!!    11/2019 C.Lac correction in the drag formula and application to building in addition to tree
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!
+USE MODD_DRAGTREE_n, ONLY :    &
+    LDRAGTREE_n => LDRAGTREE,  &
+    LDEPOTREE_n => LDEPOTREE,  &
+    XVDEPOTREE_n => XVDEPOTREE
+!
+!-----------------------------------------------------------------------------
+!
+!*       0.   DECLARATIONS
+!        -----------------
+IMPLICIT NONE
+!
+LOGICAL, SAVE :: LDRAGTREE
+LOGICAL, SAVE :: LDEPOTREE
+REAL, SAVE    :: XVDEPOTREE
+!
+NAMELIST /NAM_DRAGTREEn/LDRAGTREE,LDEPOTREE,XVDEPOTREE
+!
+CONTAINS
+!
+SUBROUTINE INIT_NAM_DRAGTREEn
+   LDRAGTREE  = LDRAGTREE_n
+   LDEPOTREE  = LDEPOTREE_n
+   XVDEPOTREE = XVDEPOTREE_n
+END SUBROUTINE INIT_NAM_DRAGTREEn
+!
+SUBROUTINE UPDATE_NAM_DRAGTREEn
+   LDRAGTREE_n  = LDRAGTREE
+   LDEPOTREE_n  = LDEPOTREE
+   XVDEPOTREE_n = XVDEPOTREE
+END SUBROUTINE UPDATE_NAM_DRAGTREEn
+!
+END MODULE MODN_DRAGTREE_n
diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90
index 1a2146b66e5f3b71efebaed0305508bf6888b345..9e180552f667722dde9abb30c5f111c7f6ee0998 100644
--- a/src/MNH/paspol.f90
+++ b/src/MNH/paspol.f90
@@ -217,7 +217,12 @@ IF (GPPFIRSTCALL) THEN
       ! puis les indices fractionnaires (ZSRCI,ZSRCJ) et entiers
       ! (IPIGI,IPIGJ) du point de rejet dans le domaine de travail global.
       !
-      CALL SM_XYHAT(XLATORI,XLONORI,XPPLAT(JSV),XPPLON(JSV),ZSRCX,ZSRCY)
+      IF (LCARTESIAN) THEN  !En cartesien ecriture dans la namelist des coordonnees X,Y et non LAT,LON
+        ZSRCX = XPPLAT(JSV)
+        ZSRCY = XPPLON(JSV)
+      ELSE
+        CALL SM_XYHAT(XLATORI,XLONORI,XPPLAT(JSV),XPPLON(JSV),ZSRCX,ZSRCY)
+      END IF
       II=MAX(MIN(COUNT(XXHAT(:)<ZSRCX),IIU-1),1)
       IJ=MAX(MIN(COUNT(XYHAT(:)<ZSRCY),IJU-1),1)
       ZSRCI=(ZSRCX-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+REAL(II)
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index 802fa044c109bacd947149d054a572142a021f8e..507a6b48bcd96656f798ac074326fccfd5e2a901 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -236,6 +236,7 @@ END MODULE MODI_PHYS_PARAM_n
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
 !  P. Wautelet 21/11/2019: ZRG_HOUR and ZRAT_HOUR are now parameter arrays
+!! 11/2019 C.Lac correction in the drag formula and application to building in addition to tree
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -249,6 +250,7 @@ USE MODD_BLANK
 USE MODD_CST
 USE MODD_DYN
 USE MODD_CONF
+USE MODD_FRC_n
 USE MODD_FRC
 USE MODD_IO, ONLY: TFILEDATA
 USE MODD_PARAMETERS
@@ -312,6 +314,7 @@ USE MODI_SEDIM_SALT
 USE MODI_DUST_FILTER
 USE MODI_SALT_FILTER
 USE MODI_DRAG_VEG
+USE MODI_DRAG_BLD
 USE MODD_DUST
 USE MODD_SALT
 USE MODD_PASPOL
@@ -322,7 +325,8 @@ USE MODE_SALT_PSD
 USE MODE_AERO_PSD
 USE MODE_MNH_TIMING
 USE MODD_TURB_FLUX_AIRCRAFT_BALLOON, ONLY : XTHW_FLUX, XRCW_FLUX, XSVW_FLUX
-USE MODD_DRAGTREE
+USE MODD_DRAGTREE_n
+USE MODD_DRAGBLDG_n
 !
 USE MODD_TIME, ONLY : TDTEXP  ! Ajout PP
 USE MODI_AEROZON          ! Ajout PP
@@ -739,6 +743,23 @@ CALL SUNPOS_n   ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL )
       WRITE(UNIT=ILUOUT,FMT='("  RADIATIONS called for KTCOUNT=",I6,       &
          &  "with the CLOUD_ONLY option set ",L2)')   KTCOUNT,OCLOUD_ONLY
 !
+      !
+      WHERE (XDIRFLASWD.LT.0.0)
+         XDIRFLASWD=0.0
+      ENDWHERE
+      !
+      WHERE (XDIRFLASWD.GT.1500.0)
+         XDIRFLASWD=1500.0
+      ENDWHERE
+      !
+      WHERE (XSCAFLASWD.LT.0.0) 
+         XSCAFLASWD=0.0
+      ENDWHERE
+      !
+      WHERE (XSCAFLASWD.GT.1500.0) 
+         XSCAFLASWD=1500.0
+      ENDWHERE
+      !
       WHERE( XDIRFLASWD(:,:,1) + XSCAFLASWD(:,:,1) >0. )
         XALBUV(:,:) = (  XDIR_ALB(:,:,1) * XDIRFLASWD(:,:,1)   &
                        + XSCA_ALB(:,:,1) * XSCAFLASWD(:,:,1) ) &
@@ -1236,10 +1257,11 @@ ZTIME1 = ZTIME2
 XTIME_BU_PROCESS = 0.
 XTIME_LES_BU_PROCESS = 0.
 !
-IF (LDRAGTREE) CALL DRAG_VEG(XTSTEP,XUT,XVT,XTKET,LDEPOTREE,XVDEPOTREE, &
-                             CCLOUD, XPABST,XTHT,XRT,XSVT,       &
-                             XRHODJ,XZZ,XRUS, XRVS,              &
-                             XRTKES,XRTHS, XRRS,XRSVS)
+IF (LDRAGTREE) CALL DRAG_VEG( XTSTEP, XUT, XVT, XTKET, LDEPOTREE, XVDEPOTREE, &
+                              CCLOUD, XPABST, XTHT, XRT, XSVT, XRHODJ, XZZ,   &
+                              XRUS, XRVS, XRTKES, XRTHS, XRRS, XRSVS )
+!
+IF (LDRAGBLDG) CALL DRAG_BLD ( XTSTEP, XUT, XVT, XTKET, XRHODJ, XZZ, XRUS, XRVS, XRTKES )
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -1302,6 +1324,7 @@ IF ( CTURB == 'TKEL' ) THEN
     ENDIF
     ZSFCO2(IIB-1,:)=ZSFCO2(IIB,:)
   END IF
+  !
   IF ( CLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN
     ZSFTH(IIE+1,:)=ZSFTH(IIE,:)
     ZSFRV(IIE+1,:)=ZSFRV(IIE,:)
@@ -1315,6 +1338,7 @@ IF ( CTURB == 'TKEL' ) THEN
     ENDIF
     ZSFCO2(IIE+1,:)=ZSFCO2(IIE,:)
   END IF
+  !
   IF ( CLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN
     ZSFTH(:,IJB-1)=ZSFTH(:,IJB)
     ZSFRV(:,IJB-1)=ZSFRV(:,IJB)
@@ -1328,6 +1352,7 @@ IF ( CTURB == 'TKEL' ) THEN
     ENDIF
     ZSFCO2(:,IJB-1)=ZSFCO2(:,IJB)
   END IF
+  !
   IF ( CLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN
     ZSFTH(:,IJE+1)=ZSFTH(:,IJE)
     ZSFRV(:,IJE+1)=ZSFRV(:,IJE)
diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90
index 564611d776d47cec051614a4d4a8bd7d3a1535b7..552ba3e237bc21ec75d71fa5be364c97a0fc9911 100644
--- a/src/MNH/prep_real_case.f90
+++ b/src/MNH/prep_real_case.f90
@@ -985,7 +985,7 @@ CALL BOUNDARIES (                                                 &
           XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
           XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,   &
           XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
-          XRHODJ,                                                 &
+          XRHODJ,XRHODREF,                                        &
           XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
 !
 CALL SECOND_MNH(ZTIME2)
diff --git a/src/MNH/rain_c2r2_khko.f90 b/src/MNH/rain_c2r2_khko.f90
index 07060753098a0018b03b7cd6d72bfe9f2a1e8705..4bb0e2474c480e71f4cc76d435e300374c3f5755 100644
--- a/src/MNH/rain_c2r2_khko.f90
+++ b/src/MNH/rain_c2r2_khko.f90
@@ -1718,7 +1718,7 @@ ENDIF
 IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6 ,'REVA_BU_RRV')
 IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:)*PRHODJ(:,:,:),8 ,'REVA_BU_RRR')
 IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4 ,'REVA_BU_RTH')
-IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),'CEVA_BU_RSV')
+IF (LBUDGET_SV) CALL BUDGET (PCRS(:,:,:)*PRHODJ(:,:,:),15+(NSV_C2R2BEG-1),'REVA_BU_RSV')
 !
   END SUBROUTINE C2R2_KHKO_EVAPORATION
 !
diff --git a/src/MNH/rain_ice_elec.f90 b/src/MNH/rain_ice_elec.f90
index 15faf9c9ea551e37b19be5e5818628f3e3c224b6..b2f0a40e55ccc534e882027cfc6cb8d48f7a2f60 100644
--- a/src/MNH/rain_ice_elec.f90
+++ b/src/MNH/rain_ice_elec.f90
@@ -1976,7 +1976,7 @@ REAL :: ZVR, ZVI, ZVS, ZVG, ZETA0, ZK, ZRE0
                   CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:),12,'SEDI_BU_RRH')
 !
   IF (LBUDGET_SV) THEN
-    CALL BUDGET (PQCS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+1,'SEDI_BU_RSV')
+      IF (OSEDIC) CALL BUDGET (PQCS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+1,'SEDI_BU_RSV')
     CALL BUDGET (PQRS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+2,'SEDI_BU_RSV')
     CALL BUDGET (PQIS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+3,'SEDI_BU_RSV')
     CALL BUDGET (PQSS(:,:,:)*PRHODJ(:,:,:),12+NSV_ELECBEG+4,'SEDI_BU_RSV')
@@ -2571,9 +2571,9 @@ IMPLICIT NONE
 !
   IF (LBUDGET_SV) THEN
     CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0),&
-                                              12+NSV_ELECBEG+2,'HON_BU_RSV')
+                                              12+NSV_ELECBEG+2,'SFR_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECEND,  'HON_BU_RSV')
+                                              12+NSV_ELECBEG+5,'SFR_BU_RSV')
   END IF
 
 !
@@ -2764,7 +2764,7 @@ IMPLICIT NONE
     CALL BUDGET (UNPACK(ZQNIS(:), MASK=GMICRO(:,:,:), FIELD=PQNIS)          &
                         *PRHODJ(:,:,:), 12+NSV_ELECEND ,'DEPG_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                                 12+NSV_ELECEND,'DEPG_BU_RSV')
+                                                 12+NSV_ELECBEG+5,'DEPG_BU_RSV')
   END IF
 !
   END SUBROUTINE RAIN_ICE_ELEC_SLOW
@@ -3080,7 +3080,7 @@ IMPLICIT NONE
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
                                            12+NSV_ELECBEG+4,'RIM_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                             12+NSV_ELECEND,'RIM_BU_RSV')
+                                           12+NSV_ELECBEG+5,'RIM_BU_RSV')
   END IF
 !
   DEALLOCATE(GRIM)
@@ -3257,7 +3257,7 @@ IMPLICIT NONE
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
                                             12+NSV_ELECBEG+4,'ACC_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECEND,'ACC_BU_RSV')
+                                            12+NSV_ELECBEG+5,'ACC_BU_RSV')
   END IF
 !
 !*       5.3    Conversion-Melting of the aggregates: RSMLT & QSMLT
@@ -3305,7 +3305,7 @@ IMPLICIT NONE
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
                                           12+NSV_ELECBEG+4,'CMEL_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'CMEL_BU_RSV')
+                                          12+NSV_ELECBEG+5,'CMEL_BU_RSV')
   END IF
 !
   END SUBROUTINE RAIN_ICE_ELEC_FAST_RS
@@ -3378,7 +3378,7 @@ IMPLICIT NONE
     CALL BUDGET (UNPACK(ZQIS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
                                           12+NSV_ELECBEG+3,'CFRZ_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'CFRZ_BU_RSV')
+                                          12+NSV_ELECBEG+5,'CFRZ_BU_RSV')
   END IF
 !
 !
@@ -3776,7 +3776,7 @@ IMPLICIT NONE
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
                                           12+NSV_ELECBEG+4,'WETG_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'WETG_BU_RSV')
+                                          12+NSV_ELECBEG+5,'WETG_BU_RSV')
   END IF
 !
   WHERE (ZRGT(:) > XRTMIN(6) .AND. ZZT(:) < XTT .AND. & ! Dry
@@ -3826,7 +3826,7 @@ IMPLICIT NONE
     CALL BUDGET (UNPACK(ZQSS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
                                           12+NSV_ELECBEG+4,'DRYG_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'DRYG_BU_RSV')
+                                          12+NSV_ELECBEG+5,'DRYG_BU_RSV')
   END IF
 !
 !
@@ -3848,7 +3848,7 @@ IMPLICIT NONE
     CALL BUDGET (UNPACK(ZQCS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
                                           12+NSV_ELECBEG+1,'INCG_BU_RSV')
     CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                            12+NSV_ELECEND,'INCG_BU_RSV')
+                                          12+NSV_ELECBEG+5,'INCG_BU_RSV')
   END IF
 !
 !
@@ -3897,7 +3897,7 @@ IMPLICIT NONE
       CALL BUDGET (UNPACK(ZQRS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
                                             12+NSV_ELECBEG+2,'GMLT_BU_RSV')
       CALL BUDGET (UNPACK(ZQGS(:)*ZRHODJ(:), MASK=GMICRO(:,:,:), FIELD=0.0), &
-                                              12+NSV_ELECEND,'GMLT_BU_RSV')
+                                            12+NSV_ELECBEG+5,'GMLT_BU_RSV')
     END IF
 !
   END SUBROUTINE RAIN_ICE_ELEC_FAST_RG
diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90
index 9fb83cb0473eb5a441b6ee63d7e065e57d364686..7ea2350e975773ec93fc1ba85937fb71602e77c5 100644
--- a/src/MNH/rain_ice_red.f90
+++ b/src/MNH/rain_ice_red.f90
@@ -243,6 +243,7 @@ END MODULE MODI_RAIN_ICE_RED
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
 !  P. Wautelet 29/05/2019: remove PACK/UNPACK intrinsics (to get more performance and better OpenACC support)
 !  P. Wautelet 17/01/2020: move Quicksort to tools.f90
+!  P. Wautelet 25/02/2020: bugfix: add missing budget: WETH_BU_RRG
 !
 !*       0.    DECLARATIONS
 !              ------------
@@ -1439,6 +1440,7 @@ IF(LBU_ENABLE) THEN
     IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'WETH_BU_RRR')
     IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'WETH_BU_RRI')
     IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'WETH_BU_RRS')
+    IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'WETH_BU_RRG')
     IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'WETH_BU_RRH')
 
     ZW(:,:,:) = 0.
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index a8178a0be6fb189500b2977c055ecec45d8db4fe..968991a463cf75f0d7e4f591c4c04bd419133cb5 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-2020 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.
@@ -131,7 +131,8 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !  P. Wautelet 14/03/2019: correct ZWS when variable not present in file
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!  Q. Rodier   16/09/2019: switch of GRIB number ID for Orograpgy in ARPEGE/AROME in EPyGrAM 
+!  Q. Rodier   16/09/2019: switch of GRIB number ID for orography in ARPEGE/AROME in EPyGrAM
+!  Q. Rodier   27/01/2020: switch of GRIB number ID for orography and hydrometeors in ARPEGE/AROME in EPyGrAM v1.3.7
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -519,7 +520,11 @@ SELECT CASE (IMODEL)
   CASE(6,7) !  arpege and arome GRIB2
       CALL SEARCH_FIELD(IGRIB,INUM_ZS,KDIS=0,KCAT=3,KNUMBER=4)
        IF(INUM_ZS < 0) THEN
-         WRITE (ILUOUT0,'(A)')'Orography is missing - abort'
+        ! Old version of EPyGraM (bug corrected since 01/2020)
+        CALL SEARCH_FIELD(IGRIB,INUM_ZS,KDIS=0,KCAT=3,KNUMBER=5)
+         IF(INUM_ZS < 0) THEN
+           WRITE (ILUOUT0,'(A)')'Orography is missing - abort'
+         END IF
        ENDIF 
   CASE(10) ! NCEP
       DO IVAR=0,222
@@ -921,6 +926,10 @@ IF (IMODEL==6) THEN ! GRIB2 AROME
     ISTARTLEVEL = 0
     CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=6,KNUMBER=6,KLEV1=ISTARTLEVEL)
   END IF
+  IF (INUM < 0) THEN
+    ISTARTLEVEL = 1
+    CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=1,KNUMBER=83,KLEV1=ISTARTLEVEL)
+  END IF
   IF (INUM > 0) THEN
     WRITE (ILUOUT0,'(A)') ' | Grib file from French Weather Service - Arome model (forecast)'
     LCPL_AROME=.TRUE.
@@ -1116,7 +1125,7 @@ IF (NRR >1) THEN
     WRITE (ILUOUT0,'(A)') ' | Reading Q fields (except humidity)'
     DO JLOOP1=1, INLEVEL
       ILEV1 = JLOOP1-1+ISTARTLEVEL
-      CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=6,KNUMBER=6,KLEV1=ILEV1)
+      CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=1,KNUMBER=83,KLEV1=ILEV1)
 
       IF (INUM < 0) THEN
         WRITE(YMSG,*) 'Specific ratio ',IPAR,' at level ',JLOOP1,' is missing'
@@ -1155,7 +1164,7 @@ IF (NRR >1) THEN
 
     DO JLOOP1=1, INLEVEL
       ILEV1 = JLOOP1-1+ISTARTLEVEL
-      CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=1,KNUMBER=82,KLEV1=ILEV1)
+      CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=1,KNUMBER=84,KLEV1=ILEV1)
       IF (INUM < 0) THEN
         WRITE(YMSG,*) 'Specific ratio for ICE at level ',JLOOP1,' is missing'
         CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index 075e87d75cd8d9fa54a8e620bd48956803a021dd..befd38e8c84c8d365e43ce2d4152ca357de387b7 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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.
@@ -293,6 +293,8 @@ END MODULE MODI_READ_EXSEG_n
 !!      Modification   01/2019   (R. Honnert) remove SURF in CMF_UPDRAFT
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  C. Lac         11/2019: correction in the drag formula and application to building in addition to tree
+!  Q. Rodier      03/2020: add abort if use of any LHORELAX and cyclic conditions
 !!------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -344,7 +346,8 @@ USE MODN_SERIES_n
 USE MODN_TURB_CLOUD
 USE MODN_TURB
 USE MODN_MEAN
-USE MODN_DRAGTREE
+USE MODN_DRAGTREE_n
+USE MODN_DRAGBLDG_n
 USE MODN_LATZ_EDFLX
 !
 USE MODD_NSV,NSV_USER_n=>NSV_USER
@@ -461,6 +464,8 @@ CCPLFILE(:)="                            "
 CALL INIT_NAM_CONFN
 CALL INIT_NAM_DYNN
 CALL INIT_NAM_ADVN
+CALL INIT_NAM_DRAGTREEN
+CALL INIT_NAM_DRAGBLDGN
 CALL INIT_NAM_PARAMN
 CALL INIT_NAM_PARAM_RADN
 #ifdef MNH_ECRAD
@@ -514,6 +519,10 @@ CALL POSNAM(ILUSEG,'NAM_SERIESN',GFOUND,ILUOUT)
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_SERIESn)
 CALL POSNAM(ILUSEG,'NAM_BLOWSNOWN',GFOUND,ILUOUT)
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLOWSNOWn)
+CALL POSNAM(ILUSEG,'NAM_DRAGTREEN',GFOUND,ILUOUT)
+IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DRAGTREEn)
+CALL POSNAM(ILUSEG,'NAM_DRAGBLDGN',GFOUND,ILUOUT)
+IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DRAGBLDGn)
 !
 IF (KMI == 1) THEN                                               
   WRITE(UNIT=ILUOUT,FMT="(' namelists common to all the models ')")
@@ -650,8 +659,6 @@ IF (KMI == 1) THEN
 #endif
   CALL POSNAM(ILUSEG,'NAM_CONDSAMP',GFOUND,ILUOUT)
   IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONDSAMP)
-  CALL POSNAM(ILUSEG,'NAM_DRAGTREE',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DRAGTREE)
   CALL POSNAM(ILUSEG,'NAM_2D_FRC',GFOUND,ILUOUT)
   IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_2D_FRC)
   CALL POSNAM(ILUSEG,'NAM_LATZ_EDFLX',GFOUND)
@@ -2583,7 +2590,31 @@ IF ((LHORELAX_UVWTH  .OR. LHORELAX_SVPP  .OR.   &
  !callabortstop
   CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
-! 
+!
+IF ((LHORELAX_UVWTH  .OR. LHORELAX_SVPP  .OR.   &
+     LHORELAX_SVCS   .OR.                       &
+#ifdef MNH_FOREFIRE
+     LHORELAX_SVFF   .OR.                       &
+#endif
+     LHORELAX_SVC2R2 .OR. LHORELAX_SVC1R3 .OR.  &
+     LHORELAX_SVLIMA .OR.                       &
+     LHORELAX_SVELEC .OR. LHORELAX_SVCHEM .OR.  &
+     LHORELAX_SVLG   .OR. ANY(LHORELAX_SV) .OR. &
+     LHORELAX_RV     .OR. LHORELAX_RC .OR.      &
+     LHORELAX_RR     .OR. LHORELAX_RI .OR.      &
+     LHORELAX_RG     .OR. LHORELAX_RS .OR.      &
+     LHORELAX_RH     .OR. LHORELAX_TKE.OR.      &
+     LHORELAX_SVCHIC )                          &
+     .AND. (CLBCX(1)=='CYCL'.OR.CLBCX(2)=='CYCL' &
+          .OR.CLBCY(1)=='CYCL'.OR.CLBCY(2)=='CYCL')) THEN
+  WRITE(UNIT=ILUOUT,FMT=9003) KMI
+  WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE THE HORIZONTAL RELAXATION '
+  WRITE(ILUOUT,FMT=*) 'FOR CYCLIC CLBCX OR CLBCY VALUES' 
+  WRITE(ILUOUT,FMT=*) 'CHANGE LHORELAX TO FALSE'
+ !callabortstop
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
+END IF
+!
 IF (KMI==1) THEN
   GRELAX = .NOT.(OUSERV)  .AND.  LUSERV  .AND. LHORELAX_RV
 ELSE
@@ -2815,6 +2846,8 @@ END IF
 !
 CALL UPDATE_NAM_LUNITN
 CALL UPDATE_NAM_CONFN
+CALL UPDATE_NAM_DRAGTREEN
+CALL UPDATE_NAM_DRAGBLDGN
 CALL UPDATE_NAM_DYNN
 CALL UPDATE_NAM_ADVN
 CALL UPDATE_NAM_PARAMN
diff --git a/src/MNH/read_grid_time_mesonh_case.f90 b/src/MNH/read_grid_time_mesonh_case.f90
index 58599b38386dd2225254c6590127c93be7efdf97..fba1ea9e956b21a5e3ff451c4a86b8d9b2bce6aa 100644
--- a/src/MNH/read_grid_time_mesonh_case.f90
+++ b/src/MNH/read_grid_time_mesonh_case.f90
@@ -174,23 +174,27 @@ CALL IO_Field_read(TZFMFILE,'RPK', ZRPK_LS)
 CALL IO_Field_read(TZFMFILE,'LAT0',ZLAT0_LS)
 CALL IO_Field_read(TZFMFILE,'BETA',ZBETA_LS)
 !
-IF (     (ABS(ZLAT0_LS-XLAT0)>ZEPS*MAX(1.,ABS(XLAT0)))               &
-   .OR.  (ABS(ZLON0_LS-XLON0)>ZEPS*MAX(1.,ABS(XLON0)))               &
-   .OR.  (ABS(ABS(ZRPK_LS)-ABS(XRPK))>ZEPS*MAX(1.,ABS(XRPK)))        &
-   .OR.  (ABS(ZBETA_LS-XBETA)>ZEPS*MAX(1.,ABS(XBETA)))               ) THEN
-!
-  WRITE(ILUOUT0,FMT=*) ' '
-  WRITE(ILUOUT0,FMT=*) '***************************************************************'
-  WRITE(ILUOUT0,FMT=*) 'Projection are different between MESONH input file and PGD file'
-  WRITE(ILUOUT0,FMT=*) 'You must recompute a PGD file with PREP_PGD,'
-  WRITE(ILUOUT0,FMT=*) 'using the input MESONH file to define its domain.'
-  WRITE(ILUOUT0,FMT=*) '***************************************************************'
-  WRITE(ILUOUT0,FMT=*) ' '
-  WRITE(ILUOUT0,FMT=*) '        input file     physiographic data'
-  WRITE(ILUOUT0,1) 'LAT0  ',ZLAT0_LS, ' ',XLAT0
-  WRITE(ILUOUT0,1) 'LON0  ',ZLON0_LS, ' ',XLON0
-  WRITE(ILUOUT0,1) 'RPK   ',ZRPK_LS,  ' ',XRPK
-  WRITE(ILUOUT0,1) 'BETA  ',ZBETA_LS, ' ',XBETA
+IF(.NOT.LCARTESIAN) THEN
+  !
+  IF (     (ABS(ZLAT0_LS-XLAT0)>ZEPS*MAX(1.,ABS(XLAT0)))              &
+    .OR.  (ABS(ZLON0_LS-XLON0)>ZEPS*MAX(1.,ABS(XLON0)))               &
+    .OR.  (ABS(ABS(ZRPK_LS)-ABS(XRPK))>ZEPS*MAX(1.,ABS(XRPK)))        &
+    .OR.  (ABS(ZBETA_LS-XBETA)>ZEPS*MAX(1.,ABS(XBETA)))               ) THEN
+   !
+    WRITE(ILUOUT0,FMT=*) ' '
+    WRITE(ILUOUT0,FMT=*) '***************************************************************'
+    WRITE(ILUOUT0,FMT=*) 'Projection are different between MESONH input file and PGD file'
+    WRITE(ILUOUT0,FMT=*) 'You must recompute a PGD file with PREP_PGD,'
+    WRITE(ILUOUT0,FMT=*) 'using the input MESONH file to define its domain.'
+    WRITE(ILUOUT0,FMT=*) '***************************************************************'
+    WRITE(ILUOUT0,FMT=*) ' '
+    WRITE(ILUOUT0,FMT=*) '        input file     physiographic data'
+    WRITE(ILUOUT0,1) 'LAT0  ',ZLAT0_LS, ' ',XLAT0
+    WRITE(ILUOUT0,1) 'LON0  ',ZLON0_LS, ' ',XLON0
+    WRITE(ILUOUT0,1) 'RPK   ',ZRPK_LS,  ' ',XRPK
+    WRITE(ILUOUT0,1) 'BETA  ',ZBETA_LS, ' ',XBETA
+  END IF
+  !
 END IF
 !
 !*       2.2    Horizontal grid:
diff --git a/src/MNH/reset_exseg.f90 b/src/MNH/reset_exseg.f90
index 5c6a80d42b249e954c295db03ba6176789c28f6a..0d06d2be3cbadabfab8ce39faa44c18c8f496bcc 100644
--- a/src/MNH/reset_exseg.f90
+++ b/src/MNH/reset_exseg.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2000-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-2020 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.
@@ -56,6 +56,7 @@ END MODULE MODI_RESET_EXSEG
 !!                   02/2018 Q.Libois ECRAD
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
+!  J. Escobar  11/02/2020: for retrotrajectories in //, reset NHALO >> 1 if needed from NAM_CONF_DIAG
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -74,6 +75,10 @@ USE MODN_PARAM_KAFR_n
 USE MODN_PARAM_RAD_n
 USE MODN_PARAM_ECRAD_n
 !
+USE MODD_CONF,             ONLY: NHALO
+!
+USE MODD_VAR_ll, ONLY : IP
+!
 IMPLICIT NONE
 !
 !
@@ -88,6 +93,8 @@ INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
 TYPE(TFILEDATA),POINTER :: TZNMLFILE! Namelist file
 !
+NAMELIST/NAM_CONF_DIAG/NHALO 
+!
 !-------------------------------------------------------------------------------
 !
 !*       1.    OPENING NAMELIST FILE
@@ -112,7 +119,7 @@ IF (NCONV_KF>=0) THEN
   IF (GFOUND) THEN
     CALL INIT_NAM_PARAM_KAFRn
     READ(UNIT=ILUNAM,NML=NAM_PARAM_KAFRN)
-    PRINT*, '  namelist NAM_PARAM_KAFRN read'
+    IF ( IP == 1 ) PRINT*, '  namelist NAM_PARAM_KAFRN read'
   END IF
   IF (LUSERV) THEN
     LDIAGCONV=.TRUE.
@@ -126,7 +133,7 @@ IF (NCONV_KF>=0) THEN
   END IF
 END IF
 !
-PRINT*,'RESET_EXSEG OUTPUT: NCONV_KF=',NCONV_KF,' CDCONV=',CDCONV,' CGETCONV=',CGETCONV
+IF ( IP == 1 ) PRINT*,'RESET_EXSEG OUTPUT: NCONV_KF=',NCONV_KF,' CDCONV=',CDCONV,' CGETCONV=',CGETCONV
 !
 !-------------------------------------------------------------------------------
 !
@@ -147,7 +154,7 @@ IF(NRAD_3D>=1) THEN
     CALL INIT_NAM_PARAM_RADn
     READ(UNIT=ILUNAM,NML=NAM_PARAM_RADN)
     CALL UPDATE_NAM_PARAM_RADn
-    PRINT*, '  namelist NAM_PARAM_RADN read'
+    IF ( IP == 1 ) PRINT*, '  namelist NAM_PARAM_RADN read'
   END IF
 #ifdef MNH_ECRAD
   CALL POSNAM(ILUNAM,'NAM_PARAM_ECRADN',GFOUND)
@@ -155,7 +162,7 @@ IF(NRAD_3D>=1) THEN
     CALL INIT_NAM_PARAM_EcRADn
     READ(UNIT=ILUNAM,NML=NAM_PARAM_ECRADN)
     CALL UPDATE_NAM_PARAM_ECRADn
-    PRINT*, '  namelist NAM_PARAM_ECRADN read'    
+    IF ( IP == 1 ) PRINT*, '  namelist NAM_PARAM_ECRADN read'    
   END IF
 #endif
 ENDIF
@@ -170,7 +177,7 @@ IF(LEN_TRIM(CRAD_SAT) /= 0) THEN
   CRAD='ECMW'
 END IF
 !
-PRINT*,'RESET_EXSEG OUTPUT: NRAD_3D =',NRAD_3D,' CRAD =',CRAD,' CGETRAD =',CGETRAD
+IF ( IP == 1 ) PRINT*,'RESET_EXSEG OUTPUT: NRAD_3D =',NRAD_3D,' CRAD =',CRAD,' CGETRAD =',CGETRAD
 !
 !-------------------------------------------------------------------------------
 !
@@ -179,8 +186,17 @@ PRINT*,'RESET_EXSEG OUTPUT: NRAD_3D =',NRAD_3D,' CRAD =',CRAD,' CGETRAD =',CGETR
 !
 IF (LUSECHEM .AND. .NOT.LCHEMDIAG) LUSECHEM =.FALSE. 
 !
-PRINT*,'RESET_EXSEG OUTPUT: LUSECHEM =',LUSECHEM,' LCHEMDIAG =',LCHEMDIAG
-PRINT*,' '
+IF ( IP == 1 ) PRINT*,'RESET_EXSEG OUTPUT: LUSECHEM =',LUSECHEM,' LCHEMDIAG =',LCHEMDIAG
+IF ( IP == 1 ) PRINT*,' '
+!
+!-------------------------------------------------------------------------------
+!
+!*      5. For retrotrajectories in // , reset NHALO >> 1 if needed from NAM_CONF_DIAG
+!          ---------------------------------------------------
+CALL POSNAM(ILUNAM,'NAM_CONF_DIAG',GFOUND)
+IF (GFOUND) THEN
+  READ(UNIT=ILUNAM,NML=NAM_CONF_DIAG)
+END IF
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index 4d282227691efc3708daba8bb3c34b77b2def60a..68ae9f8b9c39f51a85eb8968cd522249281fc9a5 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -267,6 +267,9 @@ END MODULE MODI_RESOLVED_CLOUD
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!      P. Wautelet: 01/02/2019: ZRSMIN is now allocatable (instead of size of XRTMIN which was sometimes not allocated)
 !!                   02/2019 C.Lac add rain fraction as an output field
+!!  P. Wautelet 24/02/2020: bugfix: corrected budget name (DEPI->CDEPI) for ice_adjust
+!!                  03/2020 (B.Vie) : LIMA negativity checks after turbulence, advection and microphysics budgets
+!!      B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -725,7 +728,7 @@ SELECT CASE ( HCLOUD )
    CASE('LIMA')   
 ! Correction where rc<0 or Nc<0
       IF (OWARM) THEN
-         WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,NSV_LIMA_NC) < 0.)
+         WHERE (PRS(:,:,:,2) < YRTMIN(2)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NC) < YCTMIN(2)/PTSTEP)
             PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
             PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
                  ZCPH(:,:,:) / ZEXN(:,:,:)
@@ -954,7 +957,7 @@ SELECT CASE ( HCLOUD )
 !
 !
     IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN
-      CALL ICE_ADJUST (1,IKU,1, KRR, CFRAC_ICE_ADJUST, 'DEPI',    &
+      CALL ICE_ADJUST (1,IKU,1, KRR, CFRAC_ICE_ADJUST, 'CDEPI',    &
                     OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT,                    &
                     PRHODJ, PEXNREF,  PSIGS, PMFCONV, PPABST, ZZZ,           &
                     ZEXN, PCF_MF,PRC_MF,PRI_MF,                                    &   
@@ -1039,7 +1042,7 @@ SELECT CASE ( HCLOUD )
 !*       10.2   Perform the saturation adjustment over cloud ice and cloud water
 !
     IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN
-     CALL ICE_ADJUST (1,IKU,1, KRR, CFRAC_ICE_ADJUST, 'DEPI',                &
+     CALL ICE_ADJUST (1,IKU,1, KRR, CFRAC_ICE_ADJUST, 'CDEPI',               &
                     OSUBG_COND, OSIGMAS, PTSTEP,PSIGQSAT,                    &
                     PRHODJ, PEXNREF, PSIGS, PMFCONV, PPABST, ZZZ,            &
                     ZEXN, PCF_MF,PRC_MF,PRI_MF,                              &                     
@@ -1072,7 +1075,7 @@ SELECT CASE ( HCLOUD )
                    PRHODREF, PEXNREF, ZDZZ,                                &
                    PRHODJ, PPABSM, PPABST,                                 &
                    NMOD_CCN, NMOD_IFN, NMOD_IMM,                           &
-                   PTHM, PTHT, PRT, ZSVT, PW_ACT,                          &
+                   PDTHRAD, PTHT, PRT, ZSVT, PW_ACT,                       &
                    PTHS, PRS, ZSVS,                                        &
                    PINPRC, PINDEP, PINPRR, ZINPRI, PINPRS, PINPRG, PINPRH, &
                    PEVAP3D                                         )
@@ -1081,7 +1084,7 @@ SELECT CASE ( HCLOUD )
         IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,   &
                                   TPFILE, OCLOSE_OUT, KRR, PZZ, PRHODJ,         &
                                   PRHODREF, PEXNREF, PW_ACT, PPABSM, PPABST,    &
-                                  PTHM, PRCM,                                   &
+                                  PDTHRAD, PRCM,                                   &
                                   PTHT, PRT, ZSVT,                              &
                                   PTHS, PRS, ZSVS,                              &
                                   PINPRC, PINPRR, PINDEP, PINPRR3D, PEVAP3D     )
@@ -1137,10 +1140,73 @@ IF(HCLOUD=='ICE3' .OR. HCLOUD=='ICE4' ) THEN
   ENDIF
 ENDIF
 !
-IF ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') ) THEN
-!    CALL GET_HALO(PRS(:,:,:,2))
-!    CALL GET_HALO(ZSVS(:,:,:,2))
-!    CALL GET_HALO(ZSVS(:,:,:,3))
+!
+SELECT CASE ( HCLOUD )
+  CASE('KESS')
+    WHERE (PRS(:,:,:,2) < 0.)
+      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
+      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
+           ZCPH(:,:,:) / PEXNREF(:,:,:)
+      PRS(:,:,:,2) = 0.0
+    END WHERE
+!
+!
+! CASE('C2R2','KHKO')                                 
+!   CALL GET_HALO(PRS(:,:,:,2))
+!   CALL GET_HALO(ZSVS(:,:,:,2))
+!   WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.)
+!     ZSVS(:,:,:,1) = 0.0
+!   END WHERE
+!   DO JSV = 2, 3
+!     WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.)
+!       PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV)
+!       PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) /  &
+!            ZCPH(:,:,:) / ZEXN(:,:,:)
+!       PRS(:,:,:,JSV)  = 0.0
+!       ZSVS(:,:,:,JSV) = 0.0
+!     END WHERE
+!   ENDDO
+! Commented 03/2013 O.Thouron 
+! (at least necessary to be commented for supersaturation variable)
+!  ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) )
+!
+!
+  CASE('ICE3','ICE4')
+    WHERE (PRS(:,:,:,4) < 0.)
+      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
+      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLS(:,:,:) /  &
+           ZCPH(:,:,:) / PEXNREF(:,:,:)
+      PRS(:,:,:,4) = 0.
+    END WHERE
+!
+!   cloud
+    WHERE (PRS(:,:,:,2) < 0.)
+      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
+      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
+           ZCPH(:,:,:) / PEXNREF(:,:,:)
+      PRS(:,:,:,2) = 0.
+    END WHERE
+!
+! if rc or ri are positive, we can correct negative rv
+!   cloud
+    WHERE ((PRS(:,:,:,1) <0.) .AND. (PRS(:,:,:,2)> 0.) )
+      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
+      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
+           ZCPH(:,:,:) / PEXNREF(:,:,:)
+      PRS(:,:,:,2) = 0.
+    END WHERE
+!   ice
+    IF(KRR > 3) THEN
+      WHERE ((PRS(:,:,:,1) < 0.).AND.(PRS(:,:,:,4) > 0.))
+        ZCOR(:,:,:)=MIN(-PRS(:,:,:,1),PRS(:,:,:,4))
+        PRS(:,:,:,1) = PRS(:,:,:,1) + ZCOR(:,:,:)
+        PTHS(:,:,:) = PTHS(:,:,:) - ZCOR(:,:,:) * ZLS(:,:,:) /  &
+             ZCPH(:,:,:) / PEXNREF(:,:,:)
+        PRS(:,:,:,4) = PRS(:,:,:,4) -ZCOR(:,:,:)
+      END WHERE
+    END IF
+!
+   CASE('C2R2','KHKO')
     WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.)
       ZSVS(:,:,:,1) = 0.0
     END WHERE
@@ -1153,9 +1219,104 @@ IF ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') ) THEN
         ZSVS(:,:,:,JSV) = 0.0
       END WHERE
     ENDDO
- IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), 4,'NECON_BU_RTH')
- IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), 6,'NECON_BU_RRV')
- IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), 7,'NECON_BU_RRC')
+!      
+   CASE('C3R5')
+    WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.)
+      ZSVS(:,:,:,1) = 0.0
+    END WHERE
+    DO JSV = 2, 3
+      WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.)
+        PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV)
+        PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) /  &
+             ZCPH(:,:,:) / PEXNREF(:,:,:)
+        PRS(:,:,:,JSV)  = 0.0
+        ZSVS(:,:,:,JSV) = 0.0
+      END WHERE
+    ENDDO
+    ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) )
+!   ice
+    WHERE (PRS(:,:,:,4) < 0.)
+      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
+      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLV(:,:,:) /  &
+           ZCPH(:,:,:) / PEXNREF(:,:,:)
+      PRS(:,:,:,4)  = 0.0
+      PSVS(:,:,:,4) = 0.0
+    END WHERE
+!   cloud
+    WHERE (PRS(:,:,:,2) < 0.)
+      PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
+      PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
+           ZCPH(:,:,:) / PEXNREF(:,:,:)
+      PRS(:,:,:,2)  = 0.0
+      PSVS(:,:,:,2) = 0.0
+    END WHERE
+    PSVS(:,:,:,:) = MAX( 0.0,PSVS(:,:,:,:) )
+!
+   CASE('LIMA')   
+! Correction where rc<0 or Nc<0
+      IF (OWARM) THEN
+         WHERE (PRS(:,:,:,2) < YRTMIN(2)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NC) < YCTMIN(2)/PTSTEP)
+            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
+            PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) /  &
+                 ZCPH(:,:,:) / ZEXN(:,:,:)
+            PRS(:,:,:,2)  = 0.0
+            ZSVS(:,:,:,NSV_LIMA_NC) = 0.0
+         END WHERE
+      END IF
+! Correction where rr<0 or Nr<0
+      IF (OWARM .AND. ORAIN) THEN
+         WHERE (PRS(:,:,:,3) < YRTMIN(3)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NR) < YCTMIN(3)/PTSTEP)
+            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,3)
+            PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,3) * ZLV(:,:,:) /  &
+                 ZCPH(:,:,:) / ZEXN(:,:,:)
+            PRS(:,:,:,3)  = 0.0
+            ZSVS(:,:,:,NSV_LIMA_NR) = 0.0
+         END WHERE
+      END IF
+! Correction where ri<0 or Ni<0
+      IF (LCOLD) THEN
+         WHERE (PRS(:,:,:,4) < YRTMIN(4)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NI) < YCTMIN(4)/PTSTEP)
+            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
+            PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLS(:,:,:) /  &
+                 ZCPH(:,:,:) / ZEXN(:,:,:)
+            PRS(:,:,:,4)  = 0.0
+            ZSVS(:,:,:,NSV_LIMA_NI) = 0.0
+         END WHERE
+      END IF
+!
+     ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) )
+     PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) )
+!
+END SELECT
+!
+!
+!*       3.3  STORE THE BUDGET TERMS
+!            ----------------------
+!
+IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), 4,'NECON_BU_RTH')
+IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), 6,'NECON_BU_RRV')
+IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), 7,'NECON_BU_RRC')
+IF (LBUDGET_RR) CALL BUDGET (PRS(:,:,:,3) * PRHODJ(:,:,:), 8,'NECON_BU_RRR')
+IF (LBUDGET_RI) CALL BUDGET (PRS(:,:,:,4) * PRHODJ(:,:,:) ,9,'NECON_BU_RRI')
+IF (LBUDGET_RS) CALL BUDGET (PRS(:,:,:,5) * PRHODJ(:,:,:),10,'NECON_BU_RRS')
+IF (LBUDGET_RG) CALL BUDGET (PRS(:,:,:,6) * PRHODJ(:,:,:),11,'NECON_BU_RRG')
+IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:),12,'NECON_BU_RRH')
+IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN
+   IF (OWARM) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NC) * PRHODJ(:,:,:),12+NSV_LIMA_NC,'NECON_BU_RSV')
+   IF (OWARM.AND.ORAIN) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NR) * PRHODJ(:,:,:),12+NSV_LIMA_NR,'NECON_BU_RSV')
+   IF (LCOLD) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NI) * PRHODJ(:,:,:),12+NSV_LIMA_NI,'NECON_BU_RSV')
+   IF (NMOD_CCN.GE.1) THEN
+      DO JL=1, NMOD_CCN
+         CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_CCN_FREE+JL-1)* &
+              PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'NECON_BU_RSV') 
+      END DO
+   END IF
+   IF (NMOD_IFN.GE.1) THEN
+      DO JL=1, NMOD_IFN
+         CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_IFN_FREE+JL-1)* &
+              PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'NECON_BU_RSV') 
+      END DO
+   END IF
 END IF
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/sbl_depth.f90 b/src/MNH/sbl_depth.f90
index b9add72367f32f69eb048d2f64dff7ad166df5c2..e83d8f784d4b1f4b84e755fe227fff2c588f24fc 100644
--- a/src/MNH/sbl_depth.f90
+++ b/src/MNH/sbl_depth.f90
@@ -59,7 +59,7 @@ END MODULE MODI_SBL_DEPTH
 !!    MODIFICATIONS
 !!    -------------
 !!      Original         nov. 2005
-!!
+!!      26/02/2020   T.Nagel Correction of SBL depth computation in neutral stratification
 !! --------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
@@ -130,7 +130,7 @@ ZSBL_THER= XSBL_O_BL * BL_DEPTH_DIAG(KKB,KKE,ZQ0,PZZ(:,:,KKB),PWTHV,PZZ,XFTOP_O_
 PSBL_DEPTH = 0.
 WHERE (ZSBL_THER> 0. .AND. ZSBL_DYN> 0.) PSBL_DEPTH = MIN(ZSBL_THER(:,:),ZSBL_DYN(:,:))
 WHERE (ZSBL_THER> 0. .AND. ZSBL_DYN==0.) PSBL_DEPTH = ZSBL_THER(:,:)
-WHERE (ZSBL_THER==0. .AND. ZSBL_DYN> 0.) PSBL_DEPTH = ZSBL_THER(:,:)
+WHERE (ZSBL_THER==0. .AND. ZSBL_DYN> 0.) PSBL_DEPTH = ZSBL_DYN(:,:)
 !
 DO JLOOP=1,5
   WHERE (PLMO(:,:)/=XUNDEF .AND. ABS(PLMO(:,:))>=0.01 )
@@ -138,8 +138,8 @@ DO JLOOP=1,5
     PSBL_DEPTH = 0.2 * PSBL_DEPTH + 0.8 * ((1.-ZA) * ZSBL_DYN + ZA * ZSBL_THER )
   END WHERE
 END DO
-WHERE (ABS(PLMO(:,:))<=0.01 )     PSBL_DEPTH = ZSBL_DYN
-WHERE (PLMO(:,:)==XUNDEF) PSBL_DEPTH = ZSBL_THER
+WHERE (ABS(PLMO(:,:))<=0.01 )     PSBL_DEPTH = ZSBL_THER
+WHERE (PLMO(:,:)==XUNDEF) PSBL_DEPTH = ZSBL_DYN
 !
 !----------------------------------------------------------------------------
 END SUBROUTINE SBL_DEPTH
diff --git a/src/MNH/set_conc_lima.f90 b/src/MNH/set_conc_lima.f90
index 6f9e6c6ad06019e5104d70c6a2c4e92c01462bd4..688d20a6bbef50f36ac33543b1ff3d076dde6543 100644
--- a/src/MNH/set_conc_lima.f90
+++ b/src/MNH/set_conc_lima.f90
@@ -79,7 +79,7 @@ END MODULE MODI_SET_CONC_LIMA
 !!      Original    15/11/00
 !!                        2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM        *
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!!  B.Vié : 03/03/2020  secure physical tests
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -90,6 +90,7 @@ USE MODD_PARAM_LIMA_COLD, ONLY : XAI, XBI
 USE MODD_NSV,             ONLY : NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_CCN_ACTI, NSV_LIMA_NI, NSV_LIMA_IFN_NUCL
 USE MODD_CST,             ONLY : XPI, XRHOLW, XRHOLI
 USE MODD_CONF,            ONLY : NVERB
+USE MODD_CONF_n,          ONLY : NRR
 USE MODD_LUNIT_n,         ONLY : TLUOUT
 !
 IMPLICIT NONE
@@ -119,7 +120,7 @@ ILUOUT = TLUOUT%NLU
 !*       2.    INITIALIZATION
 !              --------------
 !
-IF (LWARM) THEN
+IF (LWARM .AND. NRR.GE.2) THEN
 !
 !  droplets
 !
@@ -147,7 +148,7 @@ IF (LWARM) THEN
    END IF
 END IF
 !
-IF (LWARM .AND. LRAIN) THEN
+IF (LWARM .AND. LRAIN .AND. NRR.GE.3) THEN
 !
 !  drops
 !
@@ -157,7 +158,7 @@ IF (LWARM .AND. LRAIN) THEN
    ELSE ! init from KESS, ICE3...
       WHERE ( PRT(:,:,:,3) > 1.E-11 )
          PSVT(:,:,:,NSV_LIMA_NR) = MAX( SQRT(SQRT(PRHODREF(:,:,:)*PRT(:,:,:,3) &
-              *ZCONCR)),XCTMIN(3) )
+              *ZCONCR)),1. )
       END WHERE
       WHERE ( PRT(:,:,:,3) <= 1.E-11 )
          PRT(:,:,:,3)  = 0.0
@@ -170,7 +171,7 @@ IF (LWARM .AND. LRAIN) THEN
    END IF
 END IF
 !
-IF (LCOLD) THEN
+IF (LCOLD .AND. NRR.GE.4) THEN
 !
 ! ice crystals
 !
@@ -181,7 +182,7 @@ IF (LCOLD) THEN
 !           ( XRHOLI * XAI*(10.E-06)**XBI * PRT(:,:,:,4) ), &
 !           ZCONCI )
 ! Correction
-      PSVT(:,:,:,NSV_LIMA_NI) = MIN(PRT(:,:,:,4)/(XAI*(10.E-06)**XBI),ZCONCI )
+      PSVT(:,:,:,NSV_LIMA_NI) = MIN(PRT(:,:,:,4)/(0.82*(10.E-06)**2.5),ZCONCI )
    END WHERE
    WHERE ( PRT(:,:,:,4) <= 1.E-11 )
       PRT(:,:,:,4)  = 0.0
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index ff2edc1eaabb3935cb93357fdb1430abe4e042a5..e5de7a4c72e5736acdeb99546bea0ae380ee492e 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -1413,7 +1413,7 @@ IF (.NOT. L1D) THEN
             XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
             XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,   &
             XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
-            XRHODJ,                                                 &
+            XRHODJ,XRHODREF,                                        &
             XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
 END IF
 !
diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90
index 2480473be3a44be2ae754e179093f444bf3c264b..3392212b137d81ff30a2cb66d643f683f69d52e1 100644
--- a/src/MNH/spawning.f90
+++ b/src/MNH/spawning.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2020 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.
@@ -76,7 +76,8 @@
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 07/02/2019: remove OPARALLELIO argument from open and close files subroutines
 !                          (nsubfiles_ioz is now determined in IO_File_add2list)
-!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!  S. Bielli      02/2019: sea salt: significant sea wave height influences salt emission; 5 salt modes
+!  P. Wautelet 11/02/2020: bugfix: close TINIFILEPGD only if previously opened
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -208,7 +209,7 @@ CALL INIT_MNH
 !
 CALL IO_File_find_byname(TRIM(CINIFILE),TZINIFILE,IRESP)
 CALL IO_File_close(TZINIFILE)
-CALL IO_File_close(TINIFILEPGD)
+IF ( TINIFILEPGD%LOPENED ) CALL IO_File_close(TINIFILEPGD)
 !-------------------------------------------------------------------------------
 !
 !*       4.    INITIALIZATION OF OUTER POINTS OF MODEL 1
@@ -220,7 +221,7 @@ CALL BOUNDARIES                                                     &
             XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
             XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,   &
             XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS,   &
-            XRHODJ,                                                 &
+            XRHODJ,XRHODREF,                                        &
             XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
 CALL MPPDB_CHECK3D(XUT,"SPAWNING-after boundaries::XUT",PRECISION)
 !
diff --git a/src/MNH/stationn.f90 b/src/MNH/stationn.f90
index f1d20df7e869f96195e5b9ac6ca4e6e7fd7e6d1b..898770bb7b28719c9602272e996f58eaa6ce38b1 100644
--- a/src/MNH/stationn.f90
+++ b/src/MNH/stationn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2002-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2002-2019 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !      ##########################
@@ -86,6 +86,7 @@ END MODULE MODI_STATION_n
 !!     C.Lac       04/2013 : Add I/J positioning                   
 !!     P.Wautelet 28/03/2018 : Replace TEMPORAL_DIST by DATETIME_DISTANCE
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!     R.Schoetter 11/2019 : use LCARTESIAN instead of LSTATLAT for multiproc in cartesian
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -292,7 +293,6 @@ IF (GSTATFIRSTCALL) THEN
 !
 !*      4.4  Computations only on correct processor
 !            --------------------------------------
-  IF ( LSTATLAT ) THEN
     ZXCOEF(I) = 0.
     ZYCOEF(I) = 0.
     ZUCOEF(I) = 0.         
@@ -331,7 +331,6 @@ IF (GSTATFIRSTCALL) THEN
 !
 
     END IF
-  END IF
  ENDDO
 END IF
 !----------------------------------------------------------------------------
@@ -360,18 +359,16 @@ IF (GSTORE) THEN
         ENDIF
        END IF
       !
-      ZGAM                  = (XRPK * (TSTATION%LON(I) - XLON0) - XBETA)*(XPI/180.)
-      IF ( LSTATLAT ) THEN
-       ZU_STAT               = STATION_INTERP_2D_U(PU(:,:,J))
-       ZV_STAT               = STATION_INTERP_2D_V(PV(:,:,J))
+      IF (LCARTESIAN) THEN
+        TSTATION%ZON (IN,I)   =   STATION_INTERP_2D_U(PU(:,:,J))
+        TSTATION%MER (IN,I)   =   STATION_INTERP_2D_V(PV(:,:,J))
       ELSE
-       ZU_STAT               = PU(TSTATION%I(I),TSTATION%J(I),J)
-       ZV_STAT               = PV(TSTATION%I(I),TSTATION%J(I),J)
-      END IF
-      !
-      TSTATION%ZON (IN,I)   =   ZU_STAT     * COS(ZGAM) + ZV_STAT     * SIN(ZGAM)
-      TSTATION%MER (IN,I)   = - ZU_STAT     * SIN(ZGAM) + ZV_STAT     * COS(ZGAM)
-      IF ( LSTATLAT ) THEN
+        ZU_STAT               = STATION_INTERP_2D_U(PU(:,:,J))
+        ZV_STAT               = STATION_INTERP_2D_V(PV(:,:,J))
+        ZGAM                  = (XRPK * (TSTATION%LON(I) - XLON0) - XBETA)*(XPI/180.)
+        TSTATION%ZON (IN,I)   =   ZU_STAT     * COS(ZGAM) + ZV_STAT     * SIN(ZGAM)
+        TSTATION%MER (IN,I)   = - ZU_STAT     * SIN(ZGAM) + ZV_STAT     * COS(ZGAM)
+      ENDIF
         TSTATION%W   (IN,I)   = STATION_INTERP_2D(PW(:,:,J))
         TSTATION%TH  (IN,I)   = STATION_INTERP_2D(PTH(:,:,J))
         TSTATION%P   (IN,I)   = STATION_INTERP_2D(PP(:,:,J))
@@ -410,46 +407,7 @@ IF (GSTORE) THEN
          ENDIF
           TSTATION%SFCO2 (IN,I) = STATION_INTERP_2D(XCURRENT_SFCO2 ) 
         ENDIF
-       ELSE
-        TSTATION%W   (IN,I)   = PW(TSTATION%I(I),TSTATION%J(I),J)
-        TSTATION%TH  (IN,I)   = PTH(TSTATION%I(I),TSTATION%J(I),J)
-        TSTATION%P   (IN,I)   = PP(TSTATION%I(I),TSTATION%J(I),J)
-      !
-        DO JSV=1,SIZE(PR,4)
-         TSTATION%R   (IN,I,JSV) = PR(TSTATION%I(I),TSTATION%J(I),J,JSV)
-        END DO
-      !
-        DO JSV=1,SIZE(PSV,4)
-         TSTATION%SV  (IN,I,JSV) = PSV(TSTATION%I(I),TSTATION%J(I),J,JSV)
-        END DO
-      !
-        IF (SIZE(PTKE)>0) TSTATION%TKE  (IN,I) = PTKE(TSTATION%I(I),TSTATION%J(I),J)
-        IF (SIZE(PTS) >0) TSTATION%TSRAD(IN,I) = PTS(TSTATION%I(I),TSTATION%J(I))
-        TSTATION%ZS(I)      = PZ(TSTATION%I(I),TSTATION%J(I),1+JPVEXT)
-      !
-        IF (LDIAG_IN_RUN) THEN
-          TSTATION%ZON10M(IN,I) = XCURRENT_ZON10M(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%MER10M(IN,I) = XCURRENT_MER10M(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%T2M   (IN,I) = XCURRENT_T2M(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%Q2M   (IN,I) = XCURRENT_Q2M(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%HU2M  (IN,I) = XCURRENT_HU2M(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%RN    (IN,I) = XCURRENT_RN(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%H     (IN,I) = XCURRENT_H(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%LE    (IN,I) = XCURRENT_LE(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%LEI   (IN,I) = XCURRENT_LEI(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%GFLUX (IN,I) = XCURRENT_GFLUX(TSTATION%I(I),TSTATION%J(I))
-         IF (CRAD /= 'NONE') THEN
-          TSTATION%SWD   (IN,I) = XCURRENT_SWD(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%SWU   (IN,I) = XCURRENT_SWU(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%LWD   (IN,I) = XCURRENT_LWD(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%LWU   (IN,I) = XCURRENT_LWU(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%SWDIR (IN,I) = XCURRENT_SWDIR(TSTATION%I(I),TSTATION%J(I))
-          TSTATION%SWDIFF(IN,I) = XCURRENT_SWDIFF(TSTATION%I(I),TSTATION%J(I))         
-          TSTATION%DSTAOD(IN,I) = XCURRENT_DSTAOD(TSTATION%I(I),TSTATION%J(I))
-         ENDIF
-          TSTATION%SFCO2 (IN,I) = XCURRENT_SFCO2(TSTATION%I(I),TSTATION%J(I))
-        ENDIF
-       ENDIF
+       
       !
     END IF
 !
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index 512065c1886a9b463f97f8091125b62792a5f1c5..061191b1ed5e0fb2a4d1ba70b8c69a1ee7645dd5 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -341,6 +341,7 @@ END MODULE MODI_TURB
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!                     01/2018 (Q.Rodier) Introduction of RM17
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
+!  B. Vie         03/2020: LIMA negativity checks after turbulence, advection and microphysics budgets
 !! --------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
@@ -354,6 +355,7 @@ USE MODD_BUDGET
 USE MODD_IO, ONLY: TFILEDATA
 USE MODD_LES
 USE MODD_NSV
+USE MODD_PARAM_LIMA
 !
 USE MODI_GRADIENT_M
 USE MODI_GRADIENT_U
@@ -538,7 +540,7 @@ REAL                :: ZALPHA       ! proportionnality constant between Dz/2 and
 !                                   ! BL89 mixing length near the surface
 !
 REAL :: ZTIME1, ZTIME2
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)):: ZTT,ZEXNE,ZLV,ZLS,ZCPH
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)):: ZTT,ZEXNE,ZLV,ZLS,ZCPH,ZCOR
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3))::  ZSHEAR, ZDUDZ, ZDVDZ
 TYPE(TFIELDDATA) :: TZFIELD
 !
@@ -1109,32 +1111,137 @@ IF ( KRRL >= 1 ) THEN
   END IF
 END IF
 !
-IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')) THEN
- ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
- ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:)
- ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZTT(:,:,:)-XTT)
- ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZTT(:,:,:)-XTT)
- ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
-! CALL GET_HALO(PRRS(:,:,:,2))
-! CALL GET_HALO(PRSVS(:,:,:,2))
-! CALL GET_HALO(PRSVS(:,:,:,3))
- WHERE (PRRS(:,:,:,2) < 0. .OR. PRSVS(:,:,:,2) < 0.)
-      PRSVS(:,:,:,1) = 0.0
- END WHERE
- DO JSV = 2, 3
-  WHERE (PRRS(:,:,:,JSV) < 0. .OR. PRSVS(:,:,:,JSV) < 0.)
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,JSV)
-      PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,JSV) * ZLV(:,:,:) /  &
+SELECT CASE ( HCLOUD )
+  CASE('ICE3','ICE4')
+     ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
+     ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:)
+     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZTT(:,:,:)-XTT)
+     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZTT(:,:,:)-XTT)
+     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
+    WHERE (PRRS(:,:,:,4) < 0.)
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,4)
+      PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,4) * ZLS(:,:,:) /  &
+           ZCPH(:,:,:) / ZEXNE(:,:,:)
+      PRRS(:,:,:,4) = 0.
+    END WHERE
+!
+!   cloud
+    WHERE (PRRS(:,:,:,2) < 0.)
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
+      PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
+           ZCPH(:,:,:) / ZEXNE(:,:,:)
+      PRRS(:,:,:,2) = 0.
+    END WHERE
+!
+! if rc or ri are positive, we can correct negative rv
+!   cloud
+    WHERE ((PRRS(:,:,:,1) <0.) .AND. (PRRS(:,:,:,2)> 0.) )
+      PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
+      PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
+           ZCPH(:,:,:) / ZEXNE(:,:,:)
+      PRRS(:,:,:,2) = 0.
+    END WHERE
+!   ice
+    IF(KRR > 3) THEN
+      WHERE ((PRRS(:,:,:,1) < 0.).AND.(PRRS(:,:,:,4) > 0.))
+        ZCOR(:,:,:)=MIN(-PRRS(:,:,:,1),PRRS(:,:,:,4))
+        PRRS(:,:,:,1) = PRRS(:,:,:,1) + ZCOR(:,:,:)
+        PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZCOR(:,:,:) * ZLS(:,:,:) /  &
              ZCPH(:,:,:) / ZEXNE(:,:,:)
-      PRRS(:,:,:,JSV)  = 0.0
-      PRSVS(:,:,:,JSV) = 0.0
-  END WHERE
- END DO
-!
- IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), 4,'NETUR_BU_RTH')
- IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NETUR_BU_RRV')
- IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NETUR_BU_RRC')
+        PRRS(:,:,:,4) = PRRS(:,:,:,4) -ZCOR(:,:,:)
+      END WHERE
+    END IF
+!
+  CASE('C2R2','KHKO')
+     ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
+     ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:)
+     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZTT(:,:,:)-XTT)
+     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZTT(:,:,:)-XTT)
+     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
+!  CALL GET_HALO(PRRS(:,:,:,2))
+!  CALL GET_HALO(PRSVS(:,:,:,2))
+!  CALL GET_HALO(PRSVS(:,:,:,3))
+     WHERE (PRRS(:,:,:,2) < 0. .OR. PRSVS(:,:,:,2) < 0.)
+        PRSVS(:,:,:,1) = 0.0
+     END WHERE
+     DO JSV = 2, 3
+        WHERE (PRRS(:,:,:,JSV) < 0. .OR. PRSVS(:,:,:,JSV) < 0.)
+           PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,JSV)
+           PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,JSV) * ZLV(:,:,:) /  &
+                ZCPH(:,:,:) / ZEXNE(:,:,:)
+           PRRS(:,:,:,JSV)  = 0.0
+           PRSVS(:,:,:,JSV) = 0.0
+        END WHERE
+     END DO
+     !
+   CASE('LIMA')   
+     ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
+     ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:)
+     ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZTT(:,:,:)-XTT)
+     ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZTT(:,:,:)-XTT)
+     ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
+! Correction where rc<0 or Nc<0
+      IF (LWARM) THEN
+         WHERE (PRRS(:,:,:,2) < XRTMIN(2)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NC) < XCTMIN(2)/PTSTEP)
+            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
+            PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) /  &
+                 ZCPH(:,:,:) / ZEXNE(:,:,:)
+            PRRS(:,:,:,2)  = 0.0
+            PRSVS(:,:,:,NSV_LIMA_NC) = 0.0
+         END WHERE
+      END IF
+! Correction where rr<0 or Nr<0
+      IF (LWARM .AND. LRAIN) THEN
+         WHERE (PRRS(:,:,:,3) < XRTMIN(3)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NR) < XCTMIN(3)/PTSTEP)
+            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,3)
+            PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,3) * ZLV(:,:,:) /  &
+                 ZCPH(:,:,:) / ZEXNE(:,:,:)
+            PRRS(:,:,:,3)  = 0.0
+            PRSVS(:,:,:,NSV_LIMA_NR) = 0.0
+         END WHERE
+      END IF
+! Correction where ri<0 or Ni<0
+      IF (LCOLD) THEN
+         WHERE (PRRS(:,:,:,4) < XRTMIN(4)/PTSTEP .OR. PRSVS(:,:,:,NSV_LIMA_NI) < XCTMIN(4)/PTSTEP)
+            PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,4)
+            PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,4) * ZLS(:,:,:) /  &
+                 ZCPH(:,:,:) / ZEXNE(:,:,:)
+            PRRS(:,:,:,4)  = 0.0
+            PRSVS(:,:,:,NSV_LIMA_NI) = 0.0
+         END WHERE
+      END IF
+!
+      PRSVS(:,:,:,:) = MAX( 0.0,PRSVS(:,:,:,:) )
+      PRRS(:,:,:,:) = MAX( 0.0,PRRS(:,:,:,:) )
+!
+END SELECT
+!
+IF ((HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'KHKO') .OR. (HCLOUD /= 'C2R2') .OR. (HCLOUD /= 'LIMA') ) THEN
+  IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), 4,'NETUR_BU_RTH')
+  IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NETUR_BU_RRV')
+  IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NETUR_BU_RRC')
+  IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), 8,'NETUR_BU_RRR')
+  IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), 9,'NETUR_BU_RRI')
+  IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'NETUR_BU_RRS')
+  IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'NETUR_BU_RRG')
+  IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'NETUR_BU_RRH')
 END IF
+IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN
+   IF (LWARM) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NC),12+NSV_LIMA_NC,'NETUR_BU_RSV')
+   IF (LWARM.AND.LRAIN) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NR),12+NSV_LIMA_NR,'NETUR_BU_RSV')
+   IF (LCOLD) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NI),12+NSV_LIMA_NI,'NETUR_BU_RSV')
+   IF (NMOD_CCN.GE.1) THEN
+      DO JI=1, NMOD_CCN
+         CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_CCN_FREE+JI-1),12+NSV_LIMA_CCN_FREE+JI-1,'NETUR_BU_RSV') 
+      END DO
+   END IF
+   IF (NMOD_IFN.GE.1) THEN
+      DO JI=1, NMOD_IFN
+         CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_IFN_FREE+JI-1),12+NSV_LIMA_IFN_FREE+JI-1,'NETUR_BU_RSV') 
+      END DO
+   END IF
+END IF
+
 !
 !----------------------------------------------------------------------------
 !
diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90
index e24f6a3009250f1f268fe012cc47cad643d5603a..bbf9ca689d1391b73b7db7769935eaceebcf208a 100644
--- a/src/MNH/write_budget.f90
+++ b/src/MNH/write_budget.f90
@@ -946,7 +946,6 @@ SELECT CASE (CBUTYPE)
             ZWORKT(:,:,:,1,1,JPROC) = ZWORKT(:,:,:,1,1,JPROC)* ZCONVERT(JPROC)    &
                / ZWORK(:,:,:,1,1,1)
           END DO
-         DEALLOCATE(ZWORK)
         ENDIF
         DEALLOCATE(ZCONVERT)
 !   
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index 75c4c6d8f0157264aa29c590de96ef8033ef9cd5..e2c1038474ab4d59e9e77a76d6929aa39853eb27 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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.
@@ -172,6 +172,7 @@ END MODULE MODI_WRITE_LFIFM_n
 !!       C.Lac         18/02/2019: add rain fraction as an output field
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Tulet       02/2020: correction for dust and sea salts
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -256,6 +257,8 @@ USE MODI_WRITE_BALLOON_n
 USE MODI_DUSTLFI_n
 USE MODI_SALTLFI_n
 USE MODI_CH_AER_REALLFI_n
+USE MODI_SALT_FILTER
+USE MODI_DUST_FILTER
 !
 !20131128
 USE MODE_MPPDB
@@ -1218,6 +1221,7 @@ IF (NSV >=1) THEN
       TZFIELD%NDIMS      = 3
       TZFIELD%LTIMEDEP   = .TRUE.
       !
+      CALL DUST_FILTER(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF)
       DO JSV = NSV_DSTBEG,NSV_DSTEND
         TZFIELD%CMNHNAME   = TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'T'
         TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
@@ -1275,22 +1279,34 @@ IF (NSV >=1) THEN
       TZFIELD%NTYPE      = TYPEREAL
       TZFIELD%NDIMS      = 3
       TZFIELD%LTIMEDEP   = .TRUE.
-      DO JMODE=1, NMODE_SLT
-        DO JMOM = 1, IMOMENTS
-          !Index from which names are picked
-          ISV_NAME_IDX = (JPSALTORDER(JMODE)-1)*IMOMENTS + JMOM 
-          !Index which counts in the XSVT
-          JSV = (JMODE-1)*IMOMENTS      & !Number of moments previously counted
-               + JMOM                   & !Number of moments in this mode
-               + (NSV_SLTBEG -1)          !Previous list of tracers 
-
-          TZFIELD%CMNHNAME   = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'  !The refererence which will be written to file
+!
+      IF (IMOMENTS == 1) THEN
+        DO JMODE=1, NMODE_SLT
+          ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + 2
+          JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
+                  +  1              & !Number of moments in this mode
+                  + (NSV_SLTBEG -1)      !Previous list of tracers
+          TZFIELD%CMNHNAME   = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'
           TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
           WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
           CALL IO_Field_write(TPFILE,TZFIELD,XSVT(:,:,:,JSV))
-          YSLTNAMES((JMODE-1)*IMOMENTS+JMOM)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1)
-        END DO ! Loop on moments
-      END DO   ! Loop on modes
+          YSLTNAMES((JMODE-1)*IMOMENTS+1)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1)
+        END DO ! Loop on mode
+      ELSE
+        DO JMODE=1, NMODE_SLT
+          DO JMOM = 1, IMOMENTS
+            ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*IMOMENTS + JMOM
+            JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
+                 + JMOM               & !Number of moments in this mode
+                 + (NSV_SLTBEG -1)
+            TZFIELD%CMNHNAME   = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'  !The refererence which will be written to file
+            TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
+            WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
+            CALL IO_Field_write(TPFILE,TZFIELD,XSVT(:,:,:,JSV))
+            YSLTNAMES((JMODE-1)*IMOMENTS+JMOM)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1)
+          END DO ! Loop on moment
+        END DO ! loop on mode
+      END IF ! IMOMENTS
       !
       DO JSV = NSV_SLTBEG,NSV_SLTEND
         YCHNAMES(JSV-JSA) = YSLTNAMES(JSV-NSV_SLTBEG+1)
@@ -1307,6 +1323,7 @@ IF (NSV >=1) THEN
       TZFIELD%NDIMS      = 3
       TZFIELD%LTIMEDEP   = .TRUE.
       !
+      CALL SALT_FILTER(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF)
       DO JSV = NSV_SLTBEG,NSV_SLTEND
         TZFIELD%CMNHNAME   = TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'T'
         TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
diff --git a/src/MNH/write_stationn.f90 b/src/MNH/write_stationn.f90
index 916f951e3b4a5c45a51d019d01d7dbefd7fec4d5..b5de08b9ae67869e2bd5839589080ab3403031f8 100644
--- a/src/MNH/write_stationn.f90
+++ b/src/MNH/write_stationn.f90
@@ -63,30 +63,30 @@ END MODULE MODI_WRITE_STATION_n
 !*      0. DECLARATIONS
 !          ------------
 !
+USE MODD_CH_M9_n,         ONLY: CNAMES
+USE MODD_CH_AEROSOL,      ONLY: CAERONAMES, LORILAM, JPMODE
+USE MODD_CONF
 USE MODD_CST
+USE MODD_DIAG_IN_RUN
+USE MODD_DIM_n
+USE MODD_DUST,            ONLY: CDUSTNAMES, LDUST, NMODE_DST
+USE MODD_ELEC_DESCR,      ONLY: CELECNAMES
+USE MODD_GRID_n
+USE MODD_ICE_C1R3_DESCR,  ONLY: C1R3NAMES
 USE MODD_IO,              ONLY: TFILEDATA
+USE MODD_LG,              ONLY: CLGNAMES
 USE MODD_LUNIT
+USE MODD_NSV
 USE MODD_PARAMETERS
-!
-USE MODD_CH_M9_n,         ONLY: CNAMES
-USE MODD_CH_AEROSOL,      ONLY: CAERONAMES, LORILAM, JPMODE
+USE MODD_PARAM_n,         ONLY: CRAD
+USE MODD_PASPOL
 USE MODD_RAIN_C2R2_DESCR, ONLY: C2R2NAMES
-USE MODD_ICE_C1R3_DESCR,  ONLY: C1R3NAMES
-USE MODD_ELEC_DESCR,      ONLY: CELECNAMES
-USE MODD_LG,              ONLY: CLGNAMES
-USE MODD_DUST,            ONLY: CDUSTNAMES, LDUST, NMODE_DST
 USE MODD_SALT,            ONLY: CSALTNAMES, LSALT, NMODE_SLT
-USE MODD_NSV
-USE MODD_DIAG_IN_RUN
-USE MODD_PARAM_n,         ONLY: CRAD        
-!
-USE MODD_DIM_n             
-USE MODD_GRID_n           
 USE MODD_STATION_n
 !
+USE MODE_AERO_PSD
 USE MODE_DUST_PSD
 USE MODE_SALT_PSD
-USE MODE_AERO_PSD
 !
 USE MODI_WRITE_DIACHRO
 !
@@ -200,6 +200,20 @@ YUNIT    (JPROC) = 'degree'
 YCOMMENT (JPROC) = 'Latitude'
 ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%LAT(II)
 !
+IF (LCARTESIAN) THEN
+  JPROC = JPROC + 1
+  YTITLE   (JPROC) = 'X'
+  YUNIT    (JPROC) = 'm'
+  YCOMMENT (JPROC) = 'X Pos'
+  ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%X(II)
+  !
+  JPROC = JPROC + 1
+  YTITLE   (JPROC) = 'Y'
+  YUNIT    (JPROC) = 'm'
+  YCOMMENT (JPROC) = 'Y Pos'
+  ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%Y(II)
+ENDIF
+!
 JPROC = JPROC + 1
 YTITLE   (JPROC) = 'ZON_WIND'
 YUNIT    (JPROC) = 'm s-1'
@@ -367,6 +381,15 @@ IF (SIZE(TSTATION%TKE,1)>0) THEN
 END IF
 !
 !
+IF (LPASPOL) THEN
+    JSV=1
+    JPROC = JPROC+1
+    WRITE (YTITLE(JPROC),FMT='(A2,I3.3)')   'Sv',JSV
+    YUNIT    (JPROC) = 'kg kg-1'
+    YCOMMENT (JPROC) = ' '
+    ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%SV(:,II,JSV)
+ENDIF
+!
 IF (SIZE(TSTATION%SV,3)>=1) THEN
   ! User scalar variables
   DO JSV = 1,NSV_USER
diff --git a/src/Rules.LXifort.mk b/src/Rules.LXifort.mk
index e89ea60a34fab24e948a7040ae516eb254a807aa..a912f800b0dadff45dcd117e54bfe49c4443c0c5 100644
--- a/src/Rules.LXifort.mk
+++ b/src/Rules.LXifort.mk
@@ -180,7 +180,7 @@ CPPFLAGS_MNH       = -DMNH -DSFX_MNH
 ifdef VER_GA
 CPPFLAGS_SURCOUCHE += -DMNH_GA
 INC                += -I${GA_ROOT}/include
-LIBS               += -L${GA_ROOT}/lib -larmci -lga -lgfortran
+LIBS               += -L${GA_ROOT}/lib -lga -larmci 
 endif
 #
 # Gribex flags
diff --git a/src/SURFEX/allocate_physio.F90 b/src/SURFEX/allocate_physio.F90
index 1028fa2498a5949727561ed5e83c6b1bc3f45250..745a7d007573acc54b03ab9a38911feb85faedc7 100644
--- a/src/SURFEX/allocate_physio.F90
+++ b/src/SURFEX/allocate_physio.F90
@@ -33,6 +33,7 @@
 !!    -------------
 !!      Original    xx/xxxx
 !!      Modified 10/2014 P. Samuelsson  MEB
+!!               11/2019 C.Lac correction in the drag formula and application to building in addition to tree
 !
 !
 USE MODD_ISBA_OPTIONS_n, ONLY : ISBA_OPTIONS_t
@@ -99,11 +100,7 @@ ELSE
 ENDIF
 ! - vegetation: Ags parameters ('AGS', 'LAI', 'AST', 'LST', 'NIT' options)
 !
-IF (IO%CPHOTO/='NON'.OR.LTREEDRAG) THEN
-  ALLOCATE(PK%XH_TREE                 (ISIZE              ))
-ELSE
-  ALLOCATE(PK%XH_TREE                 (0                 ))
-ENDIF
+ALLOCATE(PK%XH_TREE                 (ISIZE              ))
 !
 IF (IO%CPHOTO/='NON') THEN
   ALLOCATE(PK%XRE25                   (ISIZE              )) 
diff --git a/src/SURFEX/ch_emission_fluxn.F90 b/src/SURFEX/ch_emission_fluxn.F90
index 25b6a7e646b86a910fcd2d6f54bc7569a41a46c6..f9eae54518a9396b0c73cce922894b0fad2493f7 100644
--- a/src/SURFEX/ch_emission_fluxn.F90
+++ b/src/SURFEX/ch_emission_fluxn.F90
@@ -1,4 +1,4 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2000-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !SFX_LIC for details. version 1.
@@ -28,6 +28,7 @@
 !!    P.Tulet  01/01/05  add dust, orilam
 !!    M.Leriche    2015  suppress ZDEPOT
 !!    M.Moge    01/2016  using READ_SURF_FIELD2D for 2D surfex fields reads
+!  P. Wautelet 11/02/2020: bugfix: set correct filein before call to INIT_IO_SURF_n
 !!
 !!    EXTERNAL
 !!    --------
@@ -53,6 +54,7 @@ USE MODI_GET_LUOUT
 USE MODD_CHS_AEROSOL, ONLY: LCH_AERO_FLUX
 USE MODI_CH_AER_EMISSION
 !UPG*AERO1
+USE MODI_SET_SURFEX_FILEIN
 !!
 !------------------------------------------------------------------------------
 !
@@ -208,6 +210,7 @@ DO JI=1,SIZE(CHE%TSEMISS)
 !
         IF (.NOT. LIOINIT) THEN
 !         Must be done once before reading
+          CALL SET_SURFEX_FILEIN(HPROGRAM,'PGD ')
           CALL INIT_IO_SURF_n(DTCO, U, HPROGRAM,'FULL  ','SURF  ','READ ')
           IF (IVERB >= 6) WRITE(ILUOUT,*) 'INIT des I/O DONE.'
           LIOINIT=.TRUE.
diff --git a/src/SURFEX/convert_patch_isba.F90 b/src/SURFEX/convert_patch_isba.F90
index cad66666339946c838b566938c50ad491b38e4f0..b04278c2088347b63e33deac72c1660e34f2c7ff 100644
--- a/src/SURFEX/convert_patch_isba.F90
+++ b/src/SURFEX/convert_patch_isba.F90
@@ -46,6 +46,7 @@
 !!                           coupled to atmosphere)
 !!    P Samuelsson  10/2014  MEB
 !  P. Wautelet 15/02/2019: bugfix: allocate ZSTRESS only when its size has a meaning
+!!  11/2019 C.Lac correction in the drag formula and application to building in addition to tree
 !
 !----------------------------------------------------------------------------
 !
@@ -215,7 +216,6 @@ IF (OFIX) THEN
                 PK%NR_P,IO%NPATCH,KPATCH,KDECADE=KDEC)
   ENDIF
 !
-  IF (IO%CPHOTO/='NON'.OR.LTREEDRAG) THEN
     IF (GDATA .AND. ANY(DTV%LDATA_H_TREE)) THEN
       CALL AV_PGD_PARAM(DTV%XPAR_LAI, DTV%XPAR_VEG, &
                       PK%XH_TREE,DTV%XPAR_VEGTYPE,DTV%XPAR_H_TREE,YTREE,'ARI',PK%NR_P,IO%NPATCH,KPATCH)
@@ -223,7 +223,6 @@ IF (OFIX) THEN
       CALL AV_PGD_1P(DTCO, PK%XH_TREE,PCOVER,XDATA_H_TREE(:,:),YTREE,'ARI',OCOVER,&
                 PK%NR_P,IO%NPATCH,KPATCH,KDECADE=KDEC)
     ENDIF
-  ENDIF
 !
   IF (IO%CPHOTO/='NON') THEN
     !
diff --git a/src/SURFEX/get_surf_varn.F90 b/src/SURFEX/get_surf_varn.F90
index f732f03161620077971e172764a7af89d51acc92..de14d16e00dcc1c9b80ee0ee6ff3bc89e9816833 100644
--- a/src/SURFEX/get_surf_varn.F90
+++ b/src/SURFEX/get_surf_varn.F90
@@ -10,7 +10,8 @@
                                  PZ0H_WATER, PZ0H_NATURE, PZ0H_TOWN, PQS_SEA,   &
                                  PQS_WATER, PQS_NATURE, PQS_TOWN, PPSNG, PPSNV, &
                                  PZS, PSERIES, PTWSNOW, PSSO_STDEV, PLON, PLAT, &
-                                 PBARE, PLAI_TREE, PH_TREE                    )  
+                                 PBARE, PLAI_TREE, PH_TREE,                     &
+                                 PWALL_O_HOR, PBUILD_HEIGHT                     )
 !     #######################################################################
 !
 !!****  *GET_SURF_VAR_n* - gets some surface fields on atmospheric grid
@@ -47,6 +48,7 @@
 !       S. Riette   06/2010 PSSO_STDEV and PTWSNOW added
 !       B. Decharme 09/2012 Argument added in GET_FLUX_n
 !       B. Decharme 05/2013 Argument added in GET_FLUX_n for debug in ARP/AL/AR
+!!      C. Lac      11/2019 correction in the drag formula and application to building in addition to tree
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -144,8 +146,11 @@ REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLON       ! longitude
 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLAT       ! latitude
 !
 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PBARE      ! bare soil fraction on grid mesh     (-)
-REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLAI_TREE       ! Leaf Area Index    on grid mesh     (-)
-REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PH_TREE        ! Height of trees    on grid mesh     (-)
+REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLAI_TREE  ! Leaf Area Index    on grid mesh     (-)
+REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PH_TREE    ! Height of trees    on grid mesh     (-)
+!
+REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PWALL_O_HOR   ! Facade area density on grid mesh [m^2(fac.)/m^2(town)] 
+REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PBUILD_HEIGHT ! Building height on grid mesh [m] 
 !
 !-------------------------------------------------------------------------------
 !
@@ -425,7 +430,8 @@ ENDIF
    !
    !-------------------------------------------------------------------------------
    !
-IF ( PRESENT(PQS_TOWN) .OR. PRESENT(PZ0_TOWN) .OR. PRESENT(PZ0H_TOWN) ) THEN
+IF ( PRESENT(PQS_TOWN) .OR. PRESENT(PZ0_TOWN) .OR. PRESENT(PZ0H_TOWN)  .OR. &
+     PRESENT(PWALL_O_HOR) .OR. PRESENT (PBUILD_HEIGHT) ) THEN
    !
    ! Get parameters over town tile
    !
@@ -440,8 +446,9 @@ IF ( PRESENT(PQS_TOWN) .OR. PRESENT(PZ0_TOWN) .OR. PRESENT(PZ0H_TOWN) ) THEN
    IMASK(:)=0
    CALL GET_1D_MASK(KI_TOWN, KI, PTOWN, IMASK(1:KI_TOWN))
    !
-   CALL GET_VAR_TOWN_n(TM%TD%O, TM%TD%D, HPROGRAM, KI_TOWN, &
-                       ZFIELD1(1:KI_TOWN), ZFIELD2(1:KI_TOWN), ZFIELD3(1:KI_TOWN))
+   CALL GET_VAR_TOWN_n(TM%TOP, TM%TD%O, TM%TD%D, TM%NT,HPROGRAM, KI_TOWN,         &
+                       ZFIELD1(1:KI_TOWN), ZFIELD2(1:KI_TOWN), ZFIELD3(1:KI_TOWN),&
+                       ZFIELD4(1:KI_TOWN), ZFIELD5(1:KI_TOWN)                     )
    !
    IF(PRESENT(PQS_TOWN))THEN
       PQS_TOWN    (:) = XUNDEF
@@ -464,6 +471,20 @@ IF ( PRESENT(PQS_TOWN) .OR. PRESENT(PZ0_TOWN) .OR. PRESENT(PZ0H_TOWN) ) THEN
       END DO
    ENDIF
    !
+   IF(PRESENT(PWALL_O_HOR))THEN
+      PWALL_O_HOR (:) = XUNDEF
+      DO JI = 1, KI_TOWN
+         PWALL_O_HOR(IMASK(JI)) = ZFIELD4(JI)
+      END DO
+   ENDIF
+   !
+   IF(PRESENT(PBUILD_HEIGHT))THEN
+      PBUILD_HEIGHT (:) = XUNDEF
+      DO JI = 1, KI_TOWN
+         PBUILD_HEIGHT(IMASK(JI)) = ZFIELD5(JI)
+      END DO
+   ENDIF
+   !
 END IF
 !
 !*   5. Orography
diff --git a/src/SURFEX/get_var_townn.F90 b/src/SURFEX/get_var_townn.F90
index 0f2e9c9d7a8501a326655eb869dbe19ee0f69416..382f32216f17819a49f02764db3ef54b5a2889e6 100644
--- a/src/SURFEX/get_var_townn.F90
+++ b/src/SURFEX/get_var_townn.F90
@@ -3,7 +3,8 @@
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !SFX_LIC for details. version 1.
 !     #########
-      SUBROUTINE GET_VAR_TOWN_n (DGO, D, HPROGRAM,KI,PQS,PZ0,PZ0H)
+      SUBROUTINE GET_VAR_TOWN_n (TOP, DGO, D, NT, HPROGRAM,KI,PQS,PZ0,PZ0H, &
+                   PWALL_O_HOR,PBUILD_HEIGHT   )
 !     ###################################################
 !
 !!****  *GET_VAR_TOWN_n* - routine to get variables defined only over town
@@ -33,6 +34,7 @@
 !!    -------------
 !!      Original    02/2006
 !       M. Jidane   08/2008 Z0 and Z0H recovery from town tiles
+!!      C.Lac       11/2019 correction in the drag formula and application to building in addition to tree
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -40,6 +42,8 @@
 !
 !
 USE MODD_DIAG_n, ONLY : DIAG_t, DIAG_OPTIONS_t
+USE MODD_TEB_n,  ONLY : TEB_NP_t
+USE MODD_TEB_OPTION_n, ONLY : TEB_OPTIONS_t
 !
 USE MODI_GET_LUOUT
 USE MODD_SURF_PAR,   ONLY   : XUNDEF
@@ -54,19 +58,24 @@ IMPLICIT NONE
 !*       0.1   Declarations of arguments
 !              -------------------------
 !
+TYPE(TEB_OPTIONS_t),  INTENT(IN) :: TOP
 TYPE(DIAG_OPTIONS_t), INTENT(IN) :: DGO
-TYPE(DIAG_t), INTENT(IN) :: D
+TYPE(DIAG_t),         INTENT(IN) :: D
+TYPE(TEB_NP_t),       INTENT(IN) :: NT
 !
  CHARACTER(LEN=6),     INTENT(IN)     :: HPROGRAM
 INTEGER,              INTENT(IN)     :: KI      ! Number of points
 REAL, DIMENSION(KI),  INTENT(OUT)    :: PQS     ! surface humidity
 REAL, DIMENSION(KI),  INTENT(OUT)    :: PZ0     ! surface roughness length
 REAL, DIMENSION(KI),  INTENT(OUT)    :: PZ0H    ! surface roughness length for heat
+REAL, DIMENSION(KI),  INTENT(OUT)    :: PWALL_O_HOR   ! Facade surface density [m^2(fac.)/m^2(town)]
+REAL, DIMENSION(KI),  INTENT(OUT)    :: PBUILD_HEIGHT ! Building height [m]
 !
 !
 !*       0.2   Declarations of local variables
 !              -------------------------------
 !
+INTEGER :: JP     ! loop counter on TEB patches
 INTEGER :: ILUOUT
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
@@ -76,17 +85,28 @@ IF (LHOOK) CALL DR_HOOK('GET_VAR_TOWN_N',0,ZHOOK_HANDLE)
 !-------------------------------------------------------------------------------
 !
 IF (DGO%LSURF_VARS) THEN 
-        PQS      = D%XQS      
-   ELSE 
-        PQS      = XUNDEF      
+  PQS  = D%XQS      
+ELSE 
+  PQS  = XUNDEF      
 ENDIF           
 IF (DGO%LCOEF) THEN 
-        PZ0      = D%XZ0      
-        PZ0H     = D%XZ0H
-   ELSE 
-        PZ0      = XUNDEF      
-        PZ0H     = XUNDEF
-ENDIF           
+  PZ0  = D%XZ0      
+  PZ0H = D%XZ0H
+ELSE 
+  PZ0  = XUNDEF
+  PZ0H = XUNDEF
+ENDIF          
+!
+!* building height and external wall coverage fraction
+!
+PWALL_O_HOR   = 0.
+PBUILD_HEIGHT = 0.
+
+DO JP=1,TOP%NTEB_PATCH
+  PWALL_O_HOR  (:) = PWALL_O_HOR  (:) + TOP%XTEB_PATCH(:,JP) * NT%AL(JP)%XWALL_O_HOR(:)
+  PBUILD_HEIGHT(:) = PBUILD_HEIGHT(:) + TOP%XTEB_PATCH(:,JP) * NT%AL(JP)%XBLD_HEIGHT(:)
+END DO
+
 IF (LHOOK) CALL DR_HOOK('GET_VAR_TOWN_N',1,ZHOOK_HANDLE)
 !
 !==============================================================================
diff --git a/src/SURFEX/get_vegn.F90 b/src/SURFEX/get_vegn.F90
index a41238194f6801df7bdcbfa3720681b65c25c90f..d1e9c583dea8d354a300c86d77501cd24ee6236b 100644
--- a/src/SURFEX/get_vegn.F90
+++ b/src/SURFEX/get_vegn.F90
@@ -29,6 +29,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    07/2009
+!!      11/2019 C.Lac correction in the drag formula and application to building in addition to tree
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -100,16 +101,16 @@ IPATCH_BONE = VEGTYPE_TO_PATCH(NVT_BONE, IO%NPATCH)
 IPATCH_BOND = VEGTYPE_TO_PATCH(NVT_BOND, IO%NPATCH)
 
 
-!ZWORK(:) = S%XVEGTYPE(:,NVT_TRBE) + S%XVEGTYPE(:,NVT_TRBD) + S%XVEGTYPE(:,NVT_TEBE) + &
-!           S%XVEGTYPE(:,NVT_TEBD) + S%XVEGTYPE(:,NVT_TENE) + S%XVEGTYPE(:,NVT_BOBD) + &
-!           S%XVEGTYPE(:,NVT_BONE) + S%XVEGTYPE(:,NVT_BOND)
-
 ZH_TREE(:) = 0.
 ZLAI(:) = 0.
 ZWORK(:) = 0.
 !
 DO JP = 1,IO%NPATCH
+    PK => NP%AL(JP)
+    PEK => NPE%AL(JP)
+END DO
   !
+DO JP = 1,IO%NPATCH
   IF (JP==IPATCH_TRBE .OR. JP==IPATCH_TRBD .OR. JP==IPATCH_TEBE .OR. JP==IPATCH_TEBD .OR. &
       JP==IPATCH_TENE .OR. JP==IPATCH_BOBD .OR. JP==IPATCH_BONE .OR. JP==IPATCH_BOND) THEN
     !
diff --git a/src/SURFEX/init_isban.F90 b/src/SURFEX/init_isban.F90
index 4bdbb57e1112e5df8c0cf986a6e72663295b7cbe..283b107f5744b132310c3f43feb9f084748da5b4 100644
--- a/src/SURFEX/init_isban.F90
+++ b/src/SURFEX/init_isban.F90
@@ -59,6 +59,7 @@ SUBROUTINE INIT_ISBA_n (DTCO, OREAD_BUDGETC, UG, U, USS, GCP, IM, DTZ,&
 !!      P.Tulet        06/16 : add MEGAN coupling  
 !!      J.Pianezzej    02/2019 : correction for use of MEGAN
 !  P. Wautelet 21/11/2019: initialize YSNOW_SCHEME
+!       S. Donnier     02/2020 : correction for ECOCLIMAP SG (20 vegtypes possible)
 !!
 !-------------------------------------------------------------------------------
 !
@@ -371,7 +372,10 @@ ISIZE_LMEB_PATCH=COUNT(IM%O%LMEB_PATCH(:))
 !*       2.2    Check:
 !               ------
 !
-IF ( IM%O%CPHOTO/='NON' .AND. IM%O%NPATCH/=12 .AND. IM%O%NPATCH/=19 )THEN
+! modif ECOSG
+!IF ( IM%O%CPHOTO/='NON' .AND. IM%O%NPATCH/=12 .AND. IM%O%NPATCH/=19 )THEN
+IF ( IM%O%CPHOTO/='NON' .AND. IM%O%NPATCH/=12 .AND. IM%O%NPATCH/=19  .AND. IM%O%NPATCH/=20 )THEN
+! fin modif ECOSG
   CALL ABOR1_SFX('INIT_ISBAN: INCONSISTENCY BETWEEN CPHOTO AND NPATCH')
 ENDIF
 !
diff --git a/src/SURFEX/mode_aer_surf.F90 b/src/SURFEX/mode_aer_surf.F90
index e38f84a6480ea33bc163205106b8a4411443b125..a23ac0cdb8bb8f53f88d4f3148a08d0dead73d78 100644
--- a/src/SURFEX/mode_aer_surf.F90
+++ b/src/SURFEX/mode_aer_surf.F90
@@ -215,6 +215,7 @@ REAL,DIMENSION(JPMODE*3)                           :: ZMMIN
 !
 REAL,DIMENSION(NSP+NCARB+NSOA)                     :: ZFAC     ! M3 / mass conversion factor
 REAL, PARAMETER                                    :: ZDEN2MOL = 1E-6 * 6.0221367E+23  / 28.9644E-3
+REAL                                               :: ZEMISRADIUSI, ZEMISRADIUSJ
 INTEGER                                            :: JJ, JN   ! [idx] loop counters
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
@@ -227,6 +228,23 @@ DO JJ=1, SIZE(PSVT,2)
   ZSV(:,JJ) =  PSVT(:,JJ) * ZDEN2MOL * PRHODREF(:)
   ZSV(:,JJ) = MAX(ZSV(:,JJ),1E-40 * ZDEN2MOL * PRHODREF(:))
 ENDDO
+!Get minimum values possible for aerosols moments
+IF (CRGUNIT=="MASS") THEN
+  ZEMISRADIUSI = XEMISRADIUSI * EXP(-3.*(LOG(XEMISSIGI))**2)
+  ZEMISRADIUSJ = XEMISRADIUSJ * EXP(-3.*(LOG(XEMISSIGJ))**2)
+ELSE
+  ZEMISRADIUSI = XEMISRADIUSI
+  ZEMISRADIUSJ = XEMISRADIUSJ
+END IF
+
+ZMMIN(1) = XSURF_TINY
+ZMMIN(2) = ZMMIN(1) * (ZEMISRADIUSI**3)*EXP(4.5 * LOG(XEMISSIGI)**2)
+ZMMIN(3) = ZMMIN(1) * (ZEMISRADIUSI**6)*EXP(18. * LOG(XEMISSIGI)**2)
+
+ZMMIN(4) = XSURF_TINY
+ZMMIN(5) = ZMMIN(4) * (ZEMISRADIUSJ**3)*EXP(4.5 * LOG(XEMISSIGJ)**2)
+ZMMIN(6) = ZMMIN(4) * (ZEMISRADIUSJ**6)*EXP(18. * LOG(XEMISSIGJ)**2)
+
 !
  CALL INIT_VAR(ZSV,ZFAC,ZCTOTA)
 !
diff --git a/src/SURFEX/mode_read_grib.F90 b/src/SURFEX/mode_read_grib.F90
index ec71d31314156d270939ae14202ce729473420d3..344ea5967b0658f1a362b4eef77366bc302691fa 100644
--- a/src/SURFEX/mode_read_grib.F90
+++ b/src/SURFEX/mode_read_grib.F90
@@ -1,10 +1,11 @@
-!SFX_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !-------------------------------------------------------------------
 ! Modifications:
 !  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
+!  Q. Rodier   27/01/2020: switch of GRIB number ID for Orography in ARPEGE in EPyGrAM v1.3.7
 !-------------------------------------------------------------------
 !     #####################
 MODULE MODE_READ_GRIB
@@ -516,7 +517,11 @@ SELECT CASE (HINMODEL)
     CALL READ_GRIB(HGRIB,HINMODEL,KLUOUT,228002,IRET,PZS)               
   CASE ('ARPEGE','MOCAGE')
     IF (HINMODEL=='ARPEGE' .AND. NGRIB_VERSION==2) THEN
-      CALL READ_GRIB(HGRIB,HINMODEL,KLUOUT,5,IRET,PZS)
+      CALL READ_GRIB(HGRIB,HINMODEL,KLUOUT,4,IRET,PZS)
+      IF (IRET /= 0) THEN
+        ! Old version of EPyGraM (bug corrected since 01/2020)
+        CALL READ_GRIB(HGRIB,HINMODEL,KLUOUT,5,IRET,PZS)
+      END IF
     ELSE
       CALL READ_GRIB(HGRIB,HINMODEL,KLUOUT,8,IRET,PZS)               
     ENDIF
diff --git a/src/configure b/src/configure
index 2e6f572cb49dcbfc706c4399c5c2fb064bdf1609..9a6a4f7a257cc4a8ae8f4e5c046866aaf7870498 100755
--- a/src/configure
+++ b/src/configure
@@ -9,9 +9,9 @@ if [ "x$XYZ" = "x" ]
 then
 # 
 export VERSION_MASTER=${VERSION_MASTER:-MNH-V5-4}
-export VERSION_BUG=${VERSION_BUG:-2}
+export VERSION_BUG=${VERSION_BUG:-3}
 export VERSION_XYZ=${VERSION_XYZ:-${VERSION_MASTER}-${VERSION_BUG}${VER_OASIS:+-${VER_OASIS}}}
-export VERSION_DATE=${VERSION_DATE:-"03/04/2019"}
+export VERSION_DATE=${VERSION_DATE:-"06/03/2020"}
 export VERSION_LIBAEC=${VERSION_LIBAEC:-"0.3.2"}
 export VERSION_HDF=${VERSION_HDF:-"1.8.20"}
 export VERSION_CDFC=${VERSION_CDFC:-"4.5.0"}
@@ -52,8 +52,8 @@ case "$TARG" in
                 export VER_CDF=${VER_CDF:-CDFAUTO}
                 export MNHENV=${MNHENV:-"
 module purge
-module load intel-compilers-19/19.0.4.243
-module load intel-mpi-19/19.0.4.243
+module load intel-compilers/19.0.5
+module load intel-mpi/19.0.5
 ulimit -s unlimited
 export SLURM_CPU_BIND=none
 export I_MPI_PIN_PROCESSOR_LIST=all:map=spread
@@ -118,6 +118,9 @@ module load ncl_ncarg/6.3.0
 "}
               ;;
 'Linux irene'*)
+	        MODEL_NAME=`lscpu  | grep 'Model name' `
+		case ${MODEL_NAME} in 
+*Intel*) # Irene Intel core
                 export MNH_ARCH=`echo $ARCH | grep LX`
                 export     ARCH=${MNH_ARCH:-LXifort}
                 export  VER_MPI=${VER_MPI:-MPIINTEL}
@@ -131,6 +134,30 @@ module load mpi/intelmpi/2018.0.3.222
 export SLURM_CPU_BIND=none
 export I_MPI_PIN_PROCESSOR_LIST=all:map=spread
 "}
+;;
+*AMD*) # Irene AMD core
+                export MNH_ARCH=`echo $ARCH | grep LX`
+                export     ARCH=${MNH_ARCH:-LXifort}
+                export  VER_MPI=${VER_MPI:-MPIAUTO}
+                export OPTLEVEL=${OPTLEVEL:-O2}
+                export MVWORK=${MVWORK:-NO}
+		export VER_CDF=${VER_CDF:-CDFAUTO}
+		export VERSION_XYZ="${VERSION_XYZ}-AMD"
+                export MNHENV=${MNHENV:-"
+module purge
+module load intel/19.0.5.281 
+module load mpi/openmpi/4.0.2
+# Set some openmpi variable for pb with nb of cores >> 1024
+export OMPI_MCA_coll_hcoll_enable=0
+export HCOLL_ENABLE_MCAST_ALL=0
+export OMPI_MCA_coll_tuned_barrier_algorithm=2 
+# For GA version set GA/ARMCI variables
+export ARMCI_VERBOSE=1
+export ARMCI_STRIDED_METHOD=IOV ARMCI_IOV_METHOD=BATCHED
+export ARMCI_SHR_BUF_METHOD=COPY
+"}
+;;
+		esac
               ;;
 
 'Linux beaufix'*|'Linux prolix'*)
diff --git a/src/job_make_examples_BullX_jeanzay b/src/job_make_examples_BullX_jeanzay
new file mode 100755
index 0000000000000000000000000000000000000000..82ee2e6a67cd69fbdaea3cc6d92201974141e7dc
--- /dev/null
+++ b/src/job_make_examples_BullX_jeanzay
@@ -0,0 +1,65 @@
+#!/bin/bash
+#SBATCH -J Examples
+#SBATCH -N 2            # nodes number
+#SBATCH -n 4            # CPUs number (on all nodes) 
+#SBATCH -q qos_cpu-dev
+#SBATCH --exclusive           
+#SBATCH -o Examples.eo%j   #
+#SBATCH -e Examples.eo%j   #
+#SBATCH -t 01:00:00    # time limit
+#SBATCH --export=NONE
+
+# Echo des commandes
+ulimit -c 0
+ulimit -s unlimited
+# Arrete du job des la premiere erreur
+#set -e
+set -x
+# Nom de la machine
+hostname 
+
+. ../conf/profile_mesonh-LXifort-R8I4-MNH-V5-4-3-MPIINTEL-O2
+export MONORUN="Exec srun -l -n 1 --export=ALL numabind_core_slurm"
+export MPIRUN="Exec srun -l -n 4 --export=ALL numabind_core_slurm"
+export POSTRUN="time "
+
+cd $SRC_MESONH/MY_RUN/KTEST/003_KW78 
+make -k
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+cd $SRC_MESONH/MY_RUN/KTEST/001_2Drelief 
+make -k
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+cd $SRC_MESONH/MY_RUN/KTEST/002_3Drelief 
+make -k
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+
+cd $SRC_MESONH/MY_RUN/KTEST/004_Reunion
+make -k << EOF 
+
+
+EOF
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+cd $SRC_MESONH/MY_RUN/KTEST/007_16janvier
+make -k << EOF 
+
+
+EOF
+#
+echo "#################################################################################"
+echo "##CAS SUIVANT####################################################################"
+echo "#################################################################################"
+cd $SRC_MESONH/MY_RUN/KTEST/014_LIMA 
+make -k
+