diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
index 15727c382c58ae8b7129bb95a03fff771eb02b73..cc3b67c97202e5cde8110d15df720aa5355eacf9 100644
--- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
@@ -16,6 +16,7 @@ MODULE MODE_MPPDB
 !  Philippe Wautelet: 22/01/2019: use sleep_c subroutine instead of non-standard call system
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!  J. Escobar  09/07/2019: bug, in MPPDB_CHECK_SURFEX3D, recompute IKSIZE_ll for local 0 size array
 !-----------------------------------------------------------------
 !
   use ISO_FORTRAN_ENV, only: OUTPUT_UNIT
@@ -905,7 +906,7 @@ CONTAINS
     USE MODI_GET_SURF_MASK_n
     USE MODD_IO_SURF_MNH, ONLY : NHALO
     USE MODD_CONFZ     , ONLY : MPI_BUFFER_SIZE
-    USE MODD_MPIF      , ONLY : MPI_STATUS_IGNORE, MPI_SUM
+    USE MODD_MPIF,              ONLY: MPI_STATUS_IGNORE, MPI_MAX, MPI_SUM
     USE MODD_MNH_SURFEX_n
     use modd_precision,   only: MNHINT_MPI
 !
@@ -925,23 +926,25 @@ CONTAINS
     INTEGER                              :: IIU,IJU,IKU
     INTEGER                              :: KXOR, KYOR, KXEND, KYEND  ! origin and end of the local physical subdomain
     INTEGER                              :: II,IJ,IK
-    INTEGER, ALLOCATABLE, DIMENSION(:)       :: KMASK
+    INTEGER, ALLOCATABLE, DIMENSION(:)   :: KMASK
     INTEGER                              :: KSIZE
     INTEGER                              :: KSIZEBUF
     INTEGER                              :: KSIZE_FULL
     INTEGER                              :: IGLBSIZEPTAB
     INTEGER                              :: INBSLICES
     INTEGER                              :: IINFO_ll
+    INTEGER                              :: IKSIZE_ll
     !
     IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN
     CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
+    CALL MPI_ALLREDUCE(SIZE(PTAB,2),IKSIZE_ll, 1, MNHINT_MPI, MPI_MAX, MPPDB_INTRA_COMM, IINFO_ll)
     !
     IF ( SIZE(PTAB) == 0 ) THEN   !if the local size of the field is 0, we need to define ZFIELD3D filled with default value 1e20
       CALL GET_INDICE_ll( KXOR, KYOR, KXEND, KYEND )
       IIU = KXEND-KXOR+1+2*JPHEXT
       IJU = KYEND-KYOR+1+2*JPHEXT
-      IKU = KZSIZE
+      IKU = IKSIZE_ll
       ALLOCATE(ZFIELD3D(IIU,IJU,IKU))
       ZFIELD3D = 1.E20
     ELSE
diff --git a/src/MNH/budget.f90 b/src/MNH/budget.f90
index c8fe1b6cbca301acff0d519a44721f1bc75c17e7..bead348bf8baaeb46487fee30d58dfbd41f65c4e 100644
--- a/src/MNH/budget.f90
+++ b/src/MNH/budget.f90
@@ -77,6 +77,7 @@ END MODULE MODI_BUDGET
 !!      V. Masson   06/10/02  add LES budgets
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      J.Escobar : 09/07/2019 : for bit reproductiblity use MPPDB_CHECK with PRECISION=0.0 error
 !!      
 !-------------------------------------------------------------------------------
 !
@@ -117,18 +118,15 @@ INTEGER  :: IRESP   ! Return code of FM-routines
 REAL     :: ZTIME1  ! CPU time counter
 REAL     :: ZTIME2  ! CPU time counter
 !
-REAL     :: XPRECISION ! for reproductibility checks
-
 !-------------------------------------------------------------------------------
 !
 !* Reproductivity checks
 !  Warning: requires an adaptation of the makefile in order to run two runs in
 !  parallel for comparison
 !
-XPRECISION = 1E-10
 IF (LCHECK) THEN
   print*,'BUDGET :',HBUVAR
-  CALL MPPDB_CHECK3D(PVARS,HBUVAR,XPRECISION)
+  CALL MPPDB_CHECK3D(PVARS,HBUVAR,PRECISION)
 END IF
 !
 !
diff --git a/src/MNH/initial_guess.f90 b/src/MNH/initial_guess.f90
index b999796d65677a716cb4da15f59ebbd047961d93..f7d74b6474576d655d59f7a7d6a9d30d128a749a 100644
--- a/src/MNH/initial_guess.f90
+++ b/src/MNH/initial_guess.f90
@@ -144,6 +144,7 @@ END MODULE MODI_INITIAL_GUESS
 !!                  20/05/06                Remove KEPS
 !!                  10/09    (C.Lac)        FIT for variables advected with PPM
 !!                  04/13    (C.Lac)        FIT for all variables 
+!!                  07/19    (J.Escobar)    add reproductiblity test => MPPDB_CHECK( PRRS/RT/RHO )
 !!
 !-------------------------------------------------------------------------------
 !
@@ -158,6 +159,7 @@ USE MODD_BLOWSNOW_n
 !
 USE MODI_SHUMAN
 USE MODI_BUDGET
+USE MODE_MPPDB
 !
 IMPLICIT NONE
 !
@@ -218,6 +220,7 @@ END IF
 DO JRR=1,KRR
   PRRS(:,:,:,JRR) = PRT(:,:,:,JRR) * ZINVTSTEP * PRHODJ(:,:,:) 
 END DO
+CALL MPPDB_CHECK3DM("initial_guess:PRRS/RT/RHO",PRECISION,PRRS(:,:,:,1) , PRT(:,:,:,1) , PRHODJ)
 !
 ! *** passive tracers
 !
diff --git a/src/MNH/modd_sub_modeln.f90 b/src/MNH/modd_sub_modeln.f90
index b6e364b2222e189bce38a1b8f00314c1b815b2bc..326de827d4e9ad98b76d86c68b05b290806bfd80 100644
--- a/src/MNH/modd_sub_modeln.f90
+++ b/src/MNH/modd_sub_modeln.f90
@@ -8,6 +8,8 @@
 !  J. Escobar  18/06/2018: bug compile R*4 => real*8 pointer XT_VISC
 !  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
+!  J. Escobar  09/07/2019: norme Doctor -> Rename Module Type variable TZ -> T
+!  J. Escobar  09/07/2019: for bug in management of XLSZWSM variable, add/use specific 2D TLSFIELD2D_ll pointer
 !-----------------------------------------------------------------
 !     #################
       MODULE MODD_SUB_MODEL_n
@@ -20,19 +22,20 @@ use modd_precision,   only: MNHTIME
 IMPLICIT NONE
 
 TYPE SUB_MODEL_t
-  TYPE(LIST_ll), POINTER :: TZFIELDS_ll => NULL(), TZLSFIELD_ll => NULL(), TZFIELDM_ll => NULL()
+  TYPE(LIST_ll), POINTER :: TFIELDS_ll => NULL(), TLSFIELD_ll => NULL(), TFIELDM_ll => NULL()
                        ! list of fields to update halo
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2M_ll => NULL(), TZLSHALO2_ll => NULL()
+  TYPE(LIST_ll), POINTER :: TLSFIELD2D_ll => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: THALO2M_ll => NULL(), TLSHALO2_ll => NULL()
                        ! list of fields for the halo updates (2nd layer)
   ! halo lists and updates for 4th order schemes
 ! list of fields to update halo at time t
-  TYPE(LIST_ll), POINTER :: TZFIELDT_ll  => NULL() ! for meteorological scalars
-  TYPE(LIST_ll), POINTER :: TZFIELDMT_ll => NULL() ! for momentum
-  TYPE(LIST_ll), POINTER :: TZFIELDSC_ll => NULL() ! for tracer scalars
+  TYPE(LIST_ll), POINTER :: TFIELDT_ll  => NULL() ! for meteorological scalars
+  TYPE(LIST_ll), POINTER :: TFIELDMT_ll => NULL() ! for momentum
+  TYPE(LIST_ll), POINTER :: TFIELDSC_ll => NULL() ! for tracer scalars
 ! list of fields for the halo updates (2nd layer) at time t
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2T_ll  => NULL()
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2MT_ll => NULL()
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2SC_ll => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: THALO2T_ll  => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: THALO2MT_ll => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: THALO2SC_ll => NULL()
   INTEGER :: IBAK, IOUT          ! number of the backup / output
   REAL(kind=MNHTIME), DIMENSION(2) :: XT_START
   REAL(kind=MNHTIME), DIMENSION(2) :: XT_STORE, XT_BOUND, XT_GUESS
@@ -56,10 +59,11 @@ END TYPE SUB_MODEL_t
 
 TYPE(SUB_MODEL_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: SUB_MODEL_MODEL
 
-TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL(),TZLSFIELD_ll=>NULL(),TZFIELDM_ll=>NULL()
-TYPE(LIST_ll), POINTER :: TZFIELDT_ll=>NULL(),TZFIELDMT_ll=>NULL(),TZFIELDSC_ll=>NULL()
-TYPE(HALO2LIST_ll), POINTER :: TZHALO2M_ll=>NULL(), TZLSHALO2_ll=>NULL()
-TYPE(HALO2LIST_ll), POINTER :: TZHALO2T_ll=>NULL(), TZHALO2MT_ll=>NULL(), TZHALO2SC_ll=>NULL()
+TYPE(LIST_ll), POINTER :: TFIELDS_ll=>NULL(),TLSFIELD_ll=>NULL(),TFIELDM_ll=>NULL()
+TYPE(LIST_ll), POINTER :: TLSFIELD2D_ll => NULL()
+TYPE(LIST_ll), POINTER :: TFIELDT_ll=>NULL(),TFIELDMT_ll=>NULL(),TFIELDSC_ll=>NULL()
+TYPE(HALO2LIST_ll), POINTER :: THALO2M_ll=>NULL(), TLSHALO2_ll=>NULL()
+TYPE(HALO2LIST_ll), POINTER :: THALO2T_ll=>NULL(), THALO2MT_ll=>NULL(), THALO2SC_ll=>NULL()
 INTEGER, POINTER :: IBAK=>NULL()
 INTEGER, POINTER :: IOUT=>NULL()
 REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_START=>NULL()
@@ -85,32 +89,34 @@ SUBROUTINE SUB_MODEL_GOTO_MODEL(KFROM, KTO)
 INTEGER, INTENT(IN) :: KFROM, KTO
 !
 ! Save current state for allocated arrays
-SUB_MODEL_MODEL(KFROM)%TZFIELDS_ll=>TZFIELDS_ll
-SUB_MODEL_MODEL(KFROM)%TZLSFIELD_ll=>TZLSFIELD_ll
-SUB_MODEL_MODEL(KFROM)%TZFIELDM_ll=>TZFIELDM_ll
-SUB_MODEL_MODEL(KFROM)%TZFIELDT_ll=>TZFIELDT_ll
-SUB_MODEL_MODEL(KFROM)%TZFIELDMT_ll=>TZFIELDMT_ll
-SUB_MODEL_MODEL(KFROM)%TZFIELDSC_ll=>TZFIELDSC_ll
-SUB_MODEL_MODEL(KFROM)%TZHALO2M_ll=>TZHALO2M_ll
-SUB_MODEL_MODEL(KFROM)%TZLSHALO2_ll=>TZLSHALO2_ll
-SUB_MODEL_MODEL(KFROM)%TZHALO2T_ll=>TZHALO2T_ll
-SUB_MODEL_MODEL(KFROM)%TZHALO2MT_ll=>TZHALO2MT_ll
-SUB_MODEL_MODEL(KFROM)%TZHALO2SC_ll=>TZHALO2SC_ll
+SUB_MODEL_MODEL(KFROM)%TFIELDS_ll=>TFIELDS_ll
+SUB_MODEL_MODEL(KFROM)%TLSFIELD_ll=>TLSFIELD_ll
+SUB_MODEL_MODEL(KFROM)%TFIELDM_ll=>TFIELDM_ll
+SUB_MODEL_MODEL(KFROM)%TFIELDT_ll=>TFIELDT_ll
+SUB_MODEL_MODEL(KFROM)%TFIELDMT_ll=>TFIELDMT_ll
+SUB_MODEL_MODEL(KFROM)%TLSFIELD2D_ll=>TLSFIELD2D_ll
+SUB_MODEL_MODEL(KFROM)%TFIELDSC_ll=>TFIELDSC_ll
+SUB_MODEL_MODEL(KFROM)%THALO2M_ll=>THALO2M_ll
+SUB_MODEL_MODEL(KFROM)%TLSHALO2_ll=>TLSHALO2_ll
+SUB_MODEL_MODEL(KFROM)%THALO2T_ll=>THALO2T_ll
+SUB_MODEL_MODEL(KFROM)%THALO2MT_ll=>THALO2MT_ll
+SUB_MODEL_MODEL(KFROM)%THALO2SC_ll=>THALO2SC_ll
 SUB_MODEL_MODEL(KFROM)%ZWT_ACT_NUC=>ZWT_ACT_NUC
 SUB_MODEL_MODEL(KFROM)%GMASKkids=>GMASKkids  
 !
 ! Current model is set to model KTO
-TZFIELDS_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDS_ll
-TZLSFIELD_ll=>SUB_MODEL_MODEL(KTO)%TZLSFIELD_ll
-TZFIELDM_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDM_ll
-TZFIELDT_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDT_ll
-TZFIELDMT_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDMT_ll
-TZFIELDSC_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDSC_ll
-TZHALO2M_ll=>SUB_MODEL_MODEL(KTO)%TZHALO2M_ll
-TZLSHALO2_ll=>SUB_MODEL_MODEL(KTO)%TZLSHALO2_ll
-TZHALO2T_ll=>SUB_MODEL_MODEL(KTO)%TZHALO2T_ll
-TZHALO2MT_ll=>SUB_MODEL_MODEL(KTO)%TZHALO2MT_ll
-TZHALO2SC_ll=>SUB_MODEL_MODEL(KTO)%TZHALO2SC_ll
+TFIELDS_ll=>SUB_MODEL_MODEL(KTO)%TFIELDS_ll
+TLSFIELD_ll=>SUB_MODEL_MODEL(KTO)%TLSFIELD_ll
+TFIELDM_ll=>SUB_MODEL_MODEL(KTO)%TFIELDM_ll
+TFIELDT_ll=>SUB_MODEL_MODEL(KTO)%TFIELDT_ll
+TFIELDMT_ll=>SUB_MODEL_MODEL(KTO)%TFIELDMT_ll
+TLSFIELD2D_ll=>SUB_MODEL_MODEL(KTO)%TLSFIELD2D_ll
+TFIELDSC_ll=>SUB_MODEL_MODEL(KTO)%TFIELDSC_ll
+THALO2M_ll=>SUB_MODEL_MODEL(KTO)%THALO2M_ll
+TLSHALO2_ll=>SUB_MODEL_MODEL(KTO)%TLSHALO2_ll
+THALO2T_ll=>SUB_MODEL_MODEL(KTO)%THALO2T_ll
+THALO2MT_ll=>SUB_MODEL_MODEL(KTO)%THALO2MT_ll
+THALO2SC_ll=>SUB_MODEL_MODEL(KTO)%THALO2SC_ll
 IBAK=>SUB_MODEL_MODEL(KTO)%IBAK
 IOUT=>SUB_MODEL_MODEL(KTO)%IOUT
 XT_START=>SUB_MODEL_MODEL(KTO)%XT_START
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index e5a089034687fc6c113766ad6ea88fe636e12471..6eaf3308cc35929d95c4f4e675afc65a3c071577 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -256,11 +256,14 @@ END MODULE MODI_MODEL_n
 !  P. Wautelet 07/02/2019: remove OPARALLELIO argument from open and close files subroutines
 !                          (nsubfiles_ioz is now determined in IO_File_add2list)
 !!                   02/2019 C.Lac 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 28/03/2019: use MNHTIME for time measurement variables
 !  P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing
 !  P. Wautelet 19/04/2019: removed unused dummy arguments and variables
 !  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
+!  J. Escobar  09/07/2019: norme Doctor -> Rename Module Type variable TZ -> T
+!  J. Escobar  09/07/2019: for bug in management of XLSZWSM variable, add/use specific 2D TLSFIELD2D_ll pointer
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -589,10 +592,11 @@ END IF
 !
 IF (KTCOUNT == 1) THEN
 !
-  NULLIFY(TZFIELDS_ll,TZLSFIELD_ll,TZFIELDT_ll)
-  NULLIFY(TZHALO2T_ll)
-  NULLIFY(TZLSHALO2_ll)
-  NULLIFY(TZFIELDSC_ll)
+  NULLIFY(TFIELDS_ll,TLSFIELD_ll,TFIELDT_ll)
+  NULLIFY(TLSFIELD2D_ll)
+  NULLIFY(THALO2T_ll)
+  NULLIFY(TLSHALO2_ll)
+  NULLIFY(TFIELDSC_ll)
 !
   ALLOCATE(ZWT_ACT_NUC(SIZE(XWT,1),SIZE(XWT,2),SIZE(XWT,3)))
   ALLOCATE(GMASKkids(SIZE(XWT,1),SIZE(XWT,2)))
@@ -613,57 +617,57 @@ IF (KTCOUNT == 1) THEN
 !
 !                 a) Sources terms
 !
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRUS,      'MODEL_n::XRUS' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRVS,      'MODEL_n::XRVS' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRWS,      'MODEL_n::XRWS' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRTHS,     'MODEL_n::XRTHS' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRUS_PRES, 'MODEL_n::XRUS_PRES' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRVS_PRES, 'MODEL_n::XRVS_PRES' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRWS_PRES, 'MODEL_n::XRWS_PRES' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRTHS_CLD, 'MODEL_n::XRTHS_CLD' )
-  IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll( TZFIELDS_ll, XRTKES, 'MODEL_n::XRTKES' )
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, XRRS     (:,:,:,1:NRR), 'MODEL_n::XRRS' )
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, XRRS_CLD (:,:,:,1:NRR), 'MODEL_n::XRRS_CLD' )
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, XRSVS    (:,:,:,1:NSV), 'MODEL_n::XRSVS')
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, XRSVS_CLD(:,:,:,1:NSV), 'MODEL_n::XRSVS_CLD')
-  IF (SIZE(XSRCT,1) /= 0) CALL ADD3DFIELD_ll( TZFIELDS_ll, XSRCT, 'MODEL_n::XSRCT' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRUS,      'MODEL_n::XRUS' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRVS,      'MODEL_n::XRVS' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRWS,      'MODEL_n::XRWS' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRTHS,     'MODEL_n::XRTHS' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRUS_PRES, 'MODEL_n::XRUS_PRES' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRVS_PRES, 'MODEL_n::XRVS_PRES' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRWS_PRES, 'MODEL_n::XRWS_PRES' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRTHS_CLD, 'MODEL_n::XRTHS_CLD' )
+  IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll( TFIELDS_ll, XRTKES, 'MODEL_n::XRTKES' )
+  CALL ADD4DFIELD_ll( TFIELDS_ll, XRRS     (:,:,:,1:NRR), 'MODEL_n::XRRS' )
+  CALL ADD4DFIELD_ll( TFIELDS_ll, XRRS_CLD (:,:,:,1:NRR), 'MODEL_n::XRRS_CLD' )
+  CALL ADD4DFIELD_ll( TFIELDS_ll, XRSVS    (:,:,:,1:NSV), 'MODEL_n::XRSVS')
+  CALL ADD4DFIELD_ll( TFIELDS_ll, XRSVS_CLD(:,:,:,1:NSV), 'MODEL_n::XRSVS_CLD')
+  IF (SIZE(XSRCT,1) /= 0) CALL ADD3DFIELD_ll( TFIELDS_ll, XSRCT, 'MODEL_n::XSRCT' )
   !
   IF ((LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV) ) THEN
   !
   !                 b) LS fields
   !
-    CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSUM,   'MODEL_n::XLSUM'   )
-    CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSVM,   'MODEL_n::XLSVM'   )
-    CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSWM,   'MODEL_n::XLSWM'   )
-    CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSTHM,  'MODEL_n::XLSTHM'  )
-    CALL ADD2DFIELD_ll( TZLSFIELD_ll, XLSZWSM, 'MODEL_n::XLSZWSM' )
+    CALL ADD3DFIELD_ll( TLSFIELD_ll, XLSUM,   'MODEL_n::XLSUM'   )
+    CALL ADD3DFIELD_ll( TLSFIELD_ll, XLSVM,   'MODEL_n::XLSVM'   )
+    CALL ADD3DFIELD_ll( TLSFIELD_ll, XLSWM,   'MODEL_n::XLSWM'   )
+    CALL ADD3DFIELD_ll( TLSFIELD_ll, XLSTHM,  'MODEL_n::XLSTHM'  )
+    CALL ADD2DFIELD_ll( TLSFIELD_ll, XLSZWSM, 'MODEL_n::XLSZWSM' )
     IF (NRR >= 1) THEN
-      CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSRVM, 'MODEL_n::XLSRVM' )
+      CALL ADD3DFIELD_ll( TLSFIELD_ll, XLSRVM, 'MODEL_n::XLSRVM' )
     ENDIF
   !
   !                 c) Fields at t
   !
-    CALL ADD3DFIELD_ll( TZFIELDT_ll, XUT,  'MODEL_n::XUT'  )
-    CALL ADD3DFIELD_ll( TZFIELDT_ll, XVT,  'MODEL_n::XVT'  )
-    CALL ADD3DFIELD_ll( TZFIELDT_ll, XWT,  'MODEL_n::XWT'  )
-    CALL ADD3DFIELD_ll( TZFIELDT_ll, XTHT, 'MODEL_n::XTHT' )
-    IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll( TZFIELDT_ll, XTKET, 'MODEL_n::XTKET' )
-    CALL ADD4DFIELD_ll(TZFIELDT_ll, XRT (:,:,:,1:NRR), 'MODEL_n::XSV'  )
-    CALL ADD4DFIELD_ll(TZFIELDT_ll, XSVT(:,:,:,1:NSV), 'MODEL_n::XSVT' )
+    CALL ADD3DFIELD_ll( TFIELDT_ll, XUT,  'MODEL_n::XUT'  )
+    CALL ADD3DFIELD_ll( TFIELDT_ll, XVT,  'MODEL_n::XVT'  )
+    CALL ADD3DFIELD_ll( TFIELDT_ll, XWT,  'MODEL_n::XWT'  )
+    CALL ADD3DFIELD_ll( TFIELDT_ll, XTHT, 'MODEL_n::XTHT' )
+    IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll( TFIELDT_ll, XTKET, 'MODEL_n::XTKET' )
+    CALL ADD4DFIELD_ll(TFIELDT_ll, XRT (:,:,:,1:NRR), 'MODEL_n::XSV'  )
+    CALL ADD4DFIELD_ll(TFIELDT_ll, XSVT(:,:,:,1:NSV), 'MODEL_n::XSVT' )
   !
   !*       1.5   Initialize the list of fields for the halo updates (2nd layer)
   !
     INBVAR = 4+NRR+NSV
     IF (SIZE(XRTKES,1) /= 0) INBVAR=INBVAR+1
-    CALL INIT_HALO2_ll(TZHALO2T_ll,INBVAR,IIU,IJU,IKU)
-    CALL INIT_HALO2_ll(TZLSHALO2_ll,4+MIN(1,NRR),IIU,IJU,IKU)
+    CALL INIT_HALO2_ll(THALO2T_ll,INBVAR,IIU,IJU,IKU)
+    CALL INIT_HALO2_ll(TLSHALO2_ll,4+MIN(1,NRR),IIU,IJU,IKU)
   !
   !*       1.6   Initialise the 2nd layer of the halo of the LS fields
   !
     IF ( LSTEADYLS ) THEN
-       CALL UPDATE_HALO_ll(TZLSFIELD_ll, IINFO_ll)
-       CALL DEL2DFIELD_ll(TZLSFIELD_ll,XLSZWSM,IINFO_ll) 
-       CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll)
+       CALL UPDATE_HALO_ll(TLSFIELD_ll, IINFO_ll)
+       CALL UPDATE_HALO_ll(TLSFIELD2D_ll,IINFO_ll) 
+       CALL UPDATE_HALO2_ll(TLSFIELD_ll, TLSHALO2_ll, IINFO_ll)
     END IF
   END IF
   !
@@ -1185,11 +1189,12 @@ XTIME_LES_BU_PROCESS = 0.
 !
 IF ( LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV ) THEN
 !
-  CALL UPDATE_HALO_ll(TZFIELDT_ll, IINFO_ll)
-  CALL UPDATE_HALO2_ll(TZFIELDT_ll, TZHALO2T_ll, IINFO_ll)
+  CALL UPDATE_HALO_ll(TFIELDT_ll, IINFO_ll)
+  CALL UPDATE_HALO2_ll(TFIELDT_ll, THALO2T_ll, IINFO_ll)
   IF ( .NOT. LSTEADYLS ) THEN
-     CALL UPDATE_HALO_ll(TZLSFIELD_ll, IINFO_ll)
-     CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll)
+     CALL UPDATE_HALO_ll(TLSFIELD_ll, IINFO_ll)
+     CALL UPDATE_HALO_ll(TLSFIELD2D_ll,IINFO_ll) 
+     CALL UPDATE_HALO2_ll(TLSFIELD_ll, TLSHALO2_ll, IINFO_ll)
   END IF
   CALL NUM_DIFF ( CLBCX, CLBCY, NRR, NSV,                               &
                   XDK2U, XDK4U, XDK2TH, XDK4TH, XDK2SV, XDK4SV, IMI,    &
@@ -1197,7 +1202,7 @@ IF ( LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV ) THEN
                   XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XRHODJ,               &
                   XRUS, XRVS, XRWS, XRTHS, XRTKES, XRRS, XRSVS,         &
                   LZDIFFU,LNUMDIFU, LNUMDIFTH, LNUMDIFSV,               &
-                  TZHALO2T_ll, TZLSHALO2_ll,XZDIFFU_HALO2      )
+                  THALO2T_ll, TLSHALO2_ll,XZDIFFU_HALO2      )
 END IF
 !
 DO JSV = NSV_CHEMBEG,NSV_CHEMEND
@@ -1922,7 +1927,7 @@ END IF
 !
 ZTIME1 = ZTIME2
 !
-CALL EXCHANGE (XTSTEP,NRR,NSV,XRHODJ,TZFIELDS_ll,     &
+CALL EXCHANGE (XTSTEP,NRR,NSV,XRHODJ,TFIELDS_ll,     &
                XRUS, XRVS,XRWS,XRTHS,XRRS,XRTKES,XRSVS)
 !
 CALL SECOND_MNH2(ZTIME2)
diff --git a/src/MNH/num_diff.f90 b/src/MNH/num_diff.f90
index e31370e1d27efcd07fc4bf2935357de1c1d4666c..23751bff843dc1a983d8ad0f1cde32eeb59fb3dd 100644
--- a/src/MNH/num_diff.f90
+++ b/src/MNH/num_diff.f90
@@ -211,7 +211,8 @@ END MODULE MODI_NUM_DIFF
 !!     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!     J.Escobar : 05/12/2017 : Pb SegFault , correct IF(ONUMDIFTH/OZDIFFU) nesting
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
-!
+!  J. Escobar  09/07/2019: add TTZHALO2*LIST structure, to match all cases of diffusion/U/TH activation T/F
+!!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -284,6 +285,7 @@ INTEGER :: IKU
 LOGICAL     :: GTKEALLOC                 ! true if TKE arrays are not zero-sized
 !
 TYPE(HALO2LIST_ll), POINTER :: TZHALO2LIST, TZHALO2LSLIST
+TYPE(HALO2LIST_ll), TARGET  :: TTZHALO2LIST, TTZHALO2LSLIST
 !
 INTEGER :: IGRID ! localisation on the model grid
 !
@@ -301,11 +303,19 @@ GTKEALLOC = SIZE(PTKEM,1) /= 0
 !*       2.     CALL THE NUM_DIFF_ALGO ROUTINE FOR EACH FIELD
 !               ---------------------------------------------
 !
+!
+! Initialized TZHALO2*LIST%NEXT to match all case of diffusion activation T/F
+!
+TTZHALO2LIST%NEXT => TPHALO2LIST
+TTZHALO2LSLIST%NEXT => TPHALO2LSLIST
+TZHALO2LIST => TTZHALO2LIST
+TZHALO2LSLIST => TTZHALO2LSLIST
+!
 IF (ONUMDIFU) THEN
  IGRID = 2
 !!$ IF(NHALO == 1) THEN
-  TZHALO2LIST => TPHALO2LIST
-  TZHALO2LSLIST => TPHALO2LSLIST
+  TZHALO2LIST => TZHALO2LIST%NEXT
+  TZHALO2LSLIST => TZHALO2LSLIST%NEXT
   CALL NUM_DIFF_ALGO(PRUS, PUM, IGRID, MXM(PRHODJ), PDK2U, PDK4U, &
                      PLSUM,TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
 !!$ ELSE
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index 51f3a734e961f55493974ebda2e1c21b1077e994..23d5a06c51b12c89c3b16d9c55cd4ed8c6ced3ac 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -243,12 +243,14 @@ END MODULE MODI_RAIN_ICE
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  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)
+!  J. Escobar  09/07/2019: for reproductiblity MPPDB_CHECK, add missing LCHECK test in ZRHODJ de/allocate
 !
 !*       0.    DECLARATIONS
 !              ------------
 !
 use MODD_BUDGET,         only: LBU_ENABLE, LBUDGET_RC, LBUDGET_RG, LBUDGET_RH, LBUDGET_RI, &
                                LBUDGET_RR, LBUDGET_RS, LBUDGET_RV, LBUDGET_TH
+use MODD_CONF,           only: LCHECK
 use MODD_CST,            only: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT, &
                                XALPI, XBETAI, XGAMI, XMD, XMV, XTT
 use MODD_LES,            only: LLES_CALL
@@ -576,7 +578,7 @@ IF( IMICRO >= 0 ) THEN
     ALLOCATE(ZZW1(IMICRO,6))
   ENDIF
 !
-  IF (LBU_ENABLE .OR. LLES_CALL) THEN
+  IF (LBU_ENABLE .OR. LLES_CALL .OR. LCHECK ) THEN
     ALLOCATE(ZRHODJ(IMICRO))
     DO JL=1,IMICRO
       ZRHODJ(JL) = PRHODJ(I1(JL),I2(JL),I3(JL))
@@ -903,7 +905,7 @@ IF( IMICRO >= 0 ) THEN
   DEALLOCATE(ZPRES)
   DEALLOCATE(ZRHODREF)
   DEALLOCATE(ZZT)
-  IF(LBU_ENABLE .OR. LLES_CALL) DEALLOCATE(ZRHODJ)
+  DEALLOCATE(ZRHODJ)
   DEALLOCATE(ZTHS)
   DEALLOCATE(ZTHT)
   DEALLOCATE(ZTHLT)