diff --git a/LIBTOOLS/lib/COMPRESS/src/compress.f90 b/LIBTOOLS/lib/COMPRESS/src/compress.f90
index 2bc2dfaf3afcef1c5dadadcd0053d18659904d51..950fdfb1739651d8208cb1e4b9ad24b2772da7cd 100644
--- a/LIBTOOLS/lib/COMPRESS/src/compress.f90
+++ b/LIBTOOLS/lib/COMPRESS/src/compress.f90
@@ -1,15 +1,13 @@
-!-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
+!MNH_LIC Copyright 1994-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 for details. version 1.
 !-----------------------------------------------------------------
 SUBROUTINE COMPRESS_FIELD(XTAB,KX,KY,KNBTOT,KNBUSE)
 USE MODD_COMPPAR
 USE MODE_SEARCHGRP
 
-#ifdef NAGf95
 USE,INTRINSIC :: IEEE_ARITHMETIC
-#endif
 
 IMPLICIT NONE 
 
@@ -38,17 +36,21 @@ INTEGER :: IEXTCOD
 CHARACTER(LEN=8),PARAMETER :: KEYWORD='COMPRESS'
 REAL,DIMENSION(KNBTOT) :: XWORKTAB
 LOGICAL :: LUPREAL,LNAN
-#ifndef NAGf95
-LOGICAL, EXTERNAL :: IEEE_IS_NAN
-#endif
+logical :: gnansupport
 
 ILEVNBELT = KX*KY
 LUPREAL = .FALSE.
 LNAN    = .FALSE.
 
+if ( IEEE_SUPPORT_NAN( xtab(1)) ) then
+  gnansupport=.true.
+else
+  gnansupport=.false.
+end if
+
 ! Check for NAN and change Upper and Lower bound according to 32bits real limits.
 DO JI=1,KNBTOT
-  IF (IEEE_IS_NAN(XTAB(JI))) THEN 
+  IF ( gnansupport .and. IEEE_IS_NAN(XTAB(JI)) ) THEN
     XTAB(JI)=0.
     LNAN = .TRUE.
   ELSE IF (ABS(XTAB(JI)) > HUGE(1.0_4)) THEN
diff --git a/LIBTOOLS/lib/COMPRESS/src/ieee_is_nan.c b/LIBTOOLS/lib/COMPRESS/src/ieee_is_nan.c
deleted file mode 100644
index f8682fbdba4e1ae2c55900c9127279a6de445fb9..0000000000000000000000000000000000000000
--- a/LIBTOOLS/lib/COMPRESS/src/ieee_is_nan.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <math.h>
-
-#ifdef NO_UNDERSCORE
-# define IEEE_IS_NAN ieee_is_nan
-#else
-# define IEEE_IS_NAN ieee_is_nan_
-#endif
-
-int IEEE_IS_NAN(double *x){
-    return isnan(*x);
-}
diff --git a/bin/spll b/bin/spll
index c8b0ada9e568862d70b7ffd1e3d8a9689e091453..ba2fd7884933a0040563bbb5c72637abd64dde54 100755
--- a/bin/spll
+++ b/bin/spll
@@ -1,7 +1,7 @@
 #!/bin/bash
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#MNH_LIC Copyright 1994-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.
 #set -x
 if [ $# -ne 2 ]
@@ -26,7 +26,8 @@ ini_cmfshall.f90|mode_double_double.f90|mode_fgau.f90|\
 extern_usersurc_ll.f90|\
 extern_userio.f90|fmreadwrit.f90|fm_read_ll.f90|poub.f90|\
 mode_glt.*.F90|\
-rrtm_.*.F90|srtm_.*.F90"
+rrtm_.*.F90|srtm_.*.F90|\
+libs4py.f90"
 #
 
 if [ "$SUF" = "f" ]
diff --git a/conf/profile_mesonh.ihm b/conf/profile_mesonh.ihm
index 576185e854d5b04ede432efe2d0251e5a33a8804..7a9aa3618dc70b0056b463ac73f2742d1c3cf7b1 100755
--- a/conf/profile_mesonh.ihm
+++ b/conf/profile_mesonh.ihm
@@ -67,6 +67,7 @@ export CONF_DOLLAR=${CONF_DOLLAR}
 #
 export VER_CDF=${VER_CDF}
 export VERSION_CDFC=${VERSION_CDFC}
+export VERSION_CDFCXX=${VERSION_CDFCXX}
 export VERSION_CDFF=${VERSION_CDFF}
 export VERSION_HDF=${VERSION_HDF}
 export VERSION_LIBAEC=${VERSION_LIBAEC}
@@ -115,6 +116,10 @@ export VER_OASIS=${VER_OASIS}
 #
 export VERSION_NCL=${VERSION_NCL}
 #
+# MEGAN
+#
+export MNH_MEGAN=${MNH_MEGAN}
+#
 ##########################################################
 ##########################################################
 ##########################################################
@@ -125,7 +130,7 @@ export VERSION_NCL=${VERSION_NCL}
 ##########################################################
 ##########################################################
 #
-export XYZ="-\${ARCH}-R\${MNH_REAL}I\${MNH_INT}-\${VERSION_XYZ}\${MNH_ECRAD:+-ECRAD}\${VER_USER:+-\${VER_USER}}-\${VER_MPI}-\${OPTLEVEL}"
+export XYZ="-\${ARCH}-R\${MNH_REAL}I\${MNH_INT}-\${VERSION_XYZ}\${MNH_ECRAD:+-ECRAD}\${MNH_FOREFIRE:+-FF}\${VER_USER:+-\${VER_USER}}-\${VER_MPI}-\${OPTLEVEL}"
 #[ "x\${VER_USER}" != "x" ] && export XYZ="\${XYZ}-\${VER_USER}"
 # PATH to find tools like "makegen, etc ..."
 export BIN_TOOLS=${BIN_TOOLS}
diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index a7bcc64c5b5366b7b08c323c8d32cf36931ff793..4dff86bd3aafd4859ae05cac7c12f0f560436f8e 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -4,10 +4,13 @@
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 ! Original version:
-!  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
 ! Modifications:
-!  Philippe Wautelet: 29/01/2019 : small bug correction (null pointers) in FIELDLIST_GOTO_MODEL if NESPGD or PGD
-!  Philippe Wautelet: 01/02/2019 : bug correction in case XRT is not associated
+!  P. Wautelet 29/01/2019: small bug correction (null pointers) in FIELDLIST_GOTO_MODEL if NESPGD or PGD
+!  P. Wautelet 01/02/2019: bug correction in case XRT is not associated
+!  C. Lac         02/2019: add rain fraction as an output field
+!  S. Bielli      02/2019: sea salt: significant sea wave height influences salt emission; 5 salt modes
+!  P. Wautelet 06/03/2019: correct ZWS entry
 !-----------------------------------------------------------------
 MODULE MODE_FIELD
 !
@@ -895,6 +898,20 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL))
 IDX = IDX+1
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'ZWS'
+TFIELDLIST(IDX)%CSTDNAME   = 'sea_surface_wave_significant_height'
+TFIELDLIST(IDX)%CLONGNAME  = 'ZWS'
+TFIELDLIST(IDX)%CUNITS     = 'm'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'sea wave height'
+TFIELDLIST(IDX)%NGRID      = 4
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 2
+TFIELDLIST(IDX)%LTIMEDEP   = .TRUE.
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
 TFIELDLIST(IDX)%CMNHNAME   = 'ZSMT'
 TFIELDLIST(IDX)%CSTDNAME   = ''
 TFIELDLIST(IDX)%CLONGNAME  = 'ZSMT'
@@ -2339,6 +2356,20 @@ TFIELDLIST(IDX)%LTIMEDEP   = .TRUE.
 ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
 IDX = IDX+1
 !
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'RAINFR'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'RAINFR'
+TFIELDLIST(IDX)%CUNITS     = '1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_Rain FRaction'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+TFIELDLIST(IDX)%LTIMEDEP   = .TRUE.
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
 END IF ! CPROGRAM=MESONH .OR. DIAG .OR. LFICDF
 !
 !
@@ -3833,6 +3864,7 @@ END IF
 !
 ! MODD_FIELD_n variables
 !
+CALL FIND_FIELD_ID_FROM_MNHNAME('ZWS',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XZWS
 CALL FIND_FIELD_ID_FROM_MNHNAME('UT',   IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XUT
 CALL FIND_FIELD_ID_FROM_MNHNAME('VT',   IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVT
 CALL FIND_FIELD_ID_FROM_MNHNAME('WT',   IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XWT
@@ -3934,6 +3966,7 @@ IF (CPROGRAM == 'MESONH') THEN
   END IF
   CALL FIND_FIELD_ID_FROM_MNHNAME('CLDFR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XCLDFR
   CALL FIND_FIELD_ID_FROM_MNHNAME('CIT',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XCIT
+  CALL FIND_FIELD_ID_FROM_MNHNAME('RAINFR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRAINFR
   !
 END IF
 !
@@ -4144,6 +4177,7 @@ IF( KFROM/=KTO) THEN
 !
 ! MODD_FIELD_n variables
 !
+CALL FIND_FIELD_ID_FROM_MNHNAME('ZWS',  IID,IRESP); XZWS   => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
 CALL FIND_FIELD_ID_FROM_MNHNAME('UT',   IID,IRESP); XUT    => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
 CALL FIND_FIELD_ID_FROM_MNHNAME('VT',   IID,IRESP); XVT    => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
 CALL FIND_FIELD_ID_FROM_MNHNAME('WT',   IID,IRESP); XWT    => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
@@ -4258,6 +4292,7 @@ IF (CPROGRAM == 'MESONH') THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP); XRTHS_CLD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
   CALL FIND_FIELD_ID_FROM_MNHNAME('CLDFR',  IID,IRESP); XCLDFR    => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
   CALL FIND_FIELD_ID_FROM_MNHNAME('CIT',    IID,IRESP); XCIT      => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+  CALL FIND_FIELD_ID_FROM_MNHNAME('RAINFR',  IID,IRESP); XRAINFR   => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
 END IF
 !
 ! MODD_PAST_FIELD_n variables
diff --git a/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90
index fbc563242bd224d166817375df9f9f268d4c867f..160a79a6d876974572730b761cc578b785a75d48 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90
@@ -15,6 +15,7 @@
 !                          + move management of NNCID and NLFIFLU to the nc4 and lfi subroutines
 !  P. Wautelet 10/01/2019: replace handle_err by IO_Err_handle_nc4 for better netCDF error messages
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+!  P. Wautelet 07/03/2019: bugfix: io_set_mnhversion must be called by all the processes
 !
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
@@ -58,10 +59,10 @@ subroutine IO_File_create_nc4(tpfile,hprogram_orig)
     if (istatus /= NF90_NOERR) then
       call print_msg(NVERB_FATAL,'IO','IO_File_create_nc4','NF90_CREATE for '//trim(yfilem)//'.nc: '//NF90_STRERROR(istatus))
     end if
-    call io_set_not_cleanly_closed_nc4(tpfile)
-    call IO_Mnhversion_set(tpfile)
+    call IO_Not_cleanly_closed_set_nc4(tpfile)
     call IO_Knowndims_set_nc4(tpfile, hprogram_orig=hprogram_orig)
   end if
+  call IO_Mnhversion_set(tpfile)
 end subroutine IO_File_create_nc4
 
 
@@ -185,16 +186,16 @@ subroutine IO_Cleanly_closed_set_nc4(tpfile)
 end subroutine IO_Cleanly_closed_set_nc4
 
 
-subroutine io_set_not_cleanly_closed_nc4(tpfile)
+subroutine IO_Not_cleanly_closed_set_nc4(tpfile)
   type(tfiledata), intent(in) :: tpfile
 
   integer(kind=IDCDF_KIND) :: istatus
 
-  call print_msg(NVERB_DEBUG,'IO','io_set_not_cleanly_closed_nc4','called for '//trim(tpfile%cname))
+  call print_msg(NVERB_DEBUG,'IO','IO_Not_cleanly_closed_set_nc4','called for '//trim(tpfile%cname))
 
   istatus = NF90_PUT_ATT(tpfile%nncid, NF90_GLOBAL, 'MNH_cleanly_closed', 'no')
-  if (istatus /= NF90_NOERR) call IO_Err_handle_nc4(istatus,'io_set_not_cleanly_closed_nc4','NF90_PUT_ATT','MNH_cleanly_closed')
-end subroutine io_set_not_cleanly_closed_nc4
+  if (istatus /= NF90_NOERR) call IO_Err_handle_nc4(istatus,'IO_Not_cleanly_closed_set_nc4','NF90_PUT_ATT','MNH_cleanly_closed')
+end subroutine IO_Not_cleanly_closed_set_nc4
 
 end module mode_io_file_nc4
 #else
diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90
index 991a0c4b46f7766212264cba4bac99343cf48181..7b2f6e855fa12299b491035f84887da5805f4bcb 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90
@@ -7,6 +7,7 @@
 !  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 21/06/2018: read and write correctly if MNH_REAL=4
 !  P. Wautelet 14/12/2018: split fmreadwrit.f90
+!  P. Wautelet 21/02/2019: bugfix: intent of read fields: OUT->INOUT to keep initial value if not found in file
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !-----------------------------------------------------------------
 module mode_io_read_lfi
@@ -49,7 +50,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),  INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD
-REAL,             INTENT(OUT)   :: PFIELD  ! array containing the data field
+REAL,             INTENT(INOUT) :: PFIELD  ! array containing the data field
 INTEGER,          INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -88,7 +89,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),  INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:),INTENT(OUT)   :: PFIELD  ! array containing the data field
+REAL,DIMENSION(:),INTENT(INOUT) :: PFIELD  ! array containing the data field
 INTEGER,          INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -122,7 +123,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),    INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),   INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:),INTENT(OUT)   :: PFIELD  ! array containing the data field
+REAL,DIMENSION(:,:),INTENT(INOUT) :: PFIELD  ! array containing the data field
 INTEGER,            INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -156,7 +157,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),      INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),     INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:,:),INTENT(OUT)   :: PFIELD  ! array containing the data field
+REAL,DIMENSION(:,:,:),INTENT(INOUT) :: PFIELD  ! array containing the data field
 INTEGER,              INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -190,7 +191,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),        INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),       INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:,:,:),INTENT(OUT)   :: PFIELD  ! array containing the data field
+REAL,DIMENSION(:,:,:,:),INTENT(INOUT) :: PFIELD  ! array containing the data field
 INTEGER,                INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -224,7 +225,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),          INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),         INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:,:,:,:),INTENT(OUT)   :: PFIELD  ! array containing the data field
+REAL,DIMENSION(:,:,:,:,:),INTENT(INOUT) :: PFIELD  ! array containing the data field
 INTEGER,                  INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -258,7 +259,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),            INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),           INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:,:,:,:,:),INTENT(OUT)   :: PFIELD  ! array containing the data field
+REAL,DIMENSION(:,:,:,:,:,:),INTENT(INOUT) :: PFIELD  ! array containing the data field
 INTEGER,                    INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -292,7 +293,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA), INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),INTENT(INOUT) :: TPFIELD
-INTEGER,         INTENT(OUT)   :: KFIELD  ! array containing the data field
+INTEGER,         INTENT(INOUT) :: KFIELD  ! array containing the data field
 INTEGER,         INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -326,7 +327,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),     INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),    INTENT(INOUT) :: TPFIELD
-INTEGER,DIMENSION(:),INTENT(OUT)   :: KFIELD  ! array containing the data field
+INTEGER,DIMENSION(:),INTENT(INOUT) :: KFIELD  ! array containing the data field
 INTEGER,             INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -360,7 +361,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),       INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),      INTENT(INOUT) :: TPFIELD
-INTEGER,DIMENSION(:,:),INTENT(OUT)   :: KFIELD  ! array containing the data field
+INTEGER,DIMENSION(:,:),INTENT(INOUT) :: KFIELD  ! array containing the data field
 INTEGER,               INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -394,7 +395,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA), INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),INTENT(INOUT) :: TPFIELD
-LOGICAL,         INTENT(OUT)   :: OFIELD  ! array containing the data field
+LOGICAL,         INTENT(INOUT) :: OFIELD  ! array containing the data field
 INTEGER,         INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -441,7 +442,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA),     INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),    INTENT(INOUT) :: TPFIELD
-LOGICAL,DIMENSION(:),INTENT(OUT)   :: OFIELD  ! array containing the data field
+LOGICAL,DIMENSION(:),INTENT(INOUT) :: OFIELD  ! array containing the data field
 INTEGER,             INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
@@ -496,7 +497,7 @@ IMPLICIT NONE
 !
 TYPE(TFILEDATA), INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),INTENT(INOUT) :: TPFIELD
-CHARACTER(LEN=*),INTENT(OUT)   :: HFIELD  ! array containing the data field
+CHARACTER(LEN=*),INTENT(INOUT) :: HFIELD  ! array containing the data field
 INTEGER,         INTENT(OUT)   :: KRESP   ! return-code if problems occured
 !
 !*      0.2   Declarations of local variables
diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
index 2b760b114f717bf37107572e262be97f9b0cdecf..100078a8972c48c655b306f1ac35d6efe40c034f 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
@@ -8,8 +8,13 @@
 !  J. Escobar  14/12/2017: correction for MNH_INT=8
 !  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 13/12/2018: split of mode_netcdf into multiple modules/files
+<<<<<<< HEAD
 !  P. Wautelet 10/01/2019: replace handle_err by IO_Err_handle_nc4 for better netCDF error messages
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+=======
+!  P. Wautelet 10/01/2019: replace handle_err by io_handle_err_nc4 for better netCDF error messages
+!  P. Wautelet 21/02/2019: bugfix: intent of read fields: OUT->INOUT to keep initial value if not found in file
+>>>>>>> MNH-54X
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
 module mode_io_read_nc4
@@ -259,7 +264,7 @@ END SUBROUTINE IO_Field_attr_read_check_nc4
 SUBROUTINE IO_Field_read_nc4_X0(TPFILE, TPFIELD, PFIELD, KRESP)
 TYPE(TFILEDATA),  INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD
-REAL,             INTENT(OUT)   :: PFIELD
+REAL,             INTENT(INOUT) :: PFIELD
 INTEGER,          INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND) :: STATUS
@@ -314,7 +319,7 @@ END SUBROUTINE IO_Field_read_nc4_X0
 SUBROUTINE IO_Field_read_nc4_X1(TPFILE, TPFIELD, PFIELD, KRESP)
 TYPE(TFILEDATA),  INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:),INTENT(OUT)   :: PFIELD
+REAL,DIMENSION(:),INTENT(INOUT) :: PFIELD
 INTEGER,          INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND) :: STATUS
@@ -381,7 +386,7 @@ END SUBROUTINE IO_Field_read_nc4_X1
 SUBROUTINE IO_Field_read_nc4_X2(TPFILE, TPFIELD, PFIELD, KRESP)
 TYPE(TFILEDATA),    INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),   INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:),INTENT(OUT)   :: PFIELD
+REAL,DIMENSION(:,:),INTENT(INOUT) :: PFIELD
 INTEGER,            INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND) :: STATUS
@@ -463,7 +468,7 @@ END SUBROUTINE IO_Field_read_nc4_X2
 SUBROUTINE IO_Field_read_nc4_X3(TPFILE, TPFIELD, PFIELD, KRESP)
 TYPE(TFILEDATA),      INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),     INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:,:),INTENT(OUT)   :: PFIELD
+REAL,DIMENSION(:,:,:),INTENT(INOUT) :: PFIELD
 INTEGER,              INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND)                              :: STATUS
@@ -534,7 +539,7 @@ END SUBROUTINE IO_Field_read_nc4_X3
 SUBROUTINE IO_Field_read_nc4_X4(TPFILE, TPFIELD, PFIELD, KRESP)
 TYPE(TFILEDATA),        INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),       INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:,:,:),INTENT(OUT)   :: PFIELD
+REAL,DIMENSION(:,:,:,:),INTENT(INOUT) :: PFIELD
 INTEGER,                INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND)                              :: STATUS
@@ -608,7 +613,7 @@ END SUBROUTINE IO_Field_read_nc4_X4
 SUBROUTINE IO_Field_read_nc4_X5(TPFILE, TPFIELD, PFIELD, KRESP)
 TYPE(TFILEDATA),          INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),         INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:,:,:,:),INTENT(OUT)   :: PFIELD
+REAL,DIMENSION(:,:,:,:,:),INTENT(INOUT) :: PFIELD
 INTEGER,                  INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND)                              :: STATUS
@@ -685,7 +690,7 @@ END SUBROUTINE IO_Field_read_nc4_X5
 SUBROUTINE IO_Field_read_nc4_X6(TPFILE, TPFIELD, PFIELD, KRESP)
 TYPE(TFILEDATA),            INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),           INTENT(INOUT) :: TPFIELD
-REAL,DIMENSION(:,:,:,:,:,:),INTENT(OUT)   :: PFIELD
+REAL,DIMENSION(:,:,:,:,:,:),INTENT(INOUT) :: PFIELD
 INTEGER,                    INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND)                              :: STATUS
@@ -764,7 +769,7 @@ END SUBROUTINE IO_Field_read_nc4_X6
 SUBROUTINE IO_Field_read_nc4_N0(TPFILE, TPFIELD, KFIELD, KRESP)
 TYPE(TFILEDATA),  INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD
-INTEGER,          INTENT(OUT)   :: KFIELD
+INTEGER,          INTENT(INOUT) :: KFIELD
 INTEGER,          INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND) :: STATUS
@@ -820,7 +825,7 @@ END SUBROUTINE IO_Field_read_nc4_N0
 SUBROUTINE IO_Field_read_nc4_N1(TPFILE, TPFIELD, KFIELD, KRESP)
 TYPE(TFILEDATA),         INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),        INTENT(INOUT) :: TPFIELD
-INTEGER, DIMENSION(:),   INTENT(OUT)   :: KFIELD
+INTEGER, DIMENSION(:),   INTENT(INOUT) :: KFIELD
 INTEGER,                 INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND) :: STATUS
@@ -888,7 +893,7 @@ END SUBROUTINE IO_Field_read_nc4_N1
 SUBROUTINE IO_Field_read_nc4_N2(TPFILE, TPFIELD, KFIELD, KRESP)
 TYPE(TFILEDATA),         INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),        INTENT(INOUT) :: TPFIELD
-INTEGER, DIMENSION(:,:), INTENT(OUT)   :: KFIELD
+INTEGER, DIMENSION(:,:), INTENT(INOUT) :: KFIELD
 INTEGER,                 INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND) :: STATUS
@@ -970,7 +975,7 @@ END SUBROUTINE IO_Field_read_nc4_N2
 SUBROUTINE IO_Field_read_nc4_L0(TPFILE, TPFIELD, OFIELD, KRESP)
 TYPE(TFILEDATA),  INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD
-LOGICAL,          INTENT(OUT)   :: OFIELD
+LOGICAL,          INTENT(INOUT) :: OFIELD
 INTEGER,          INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND) :: STATUS
@@ -1040,7 +1045,7 @@ END SUBROUTINE IO_Field_read_nc4_L0
 SUBROUTINE IO_Field_read_nc4_L1(TPFILE, TPFIELD, OFIELD, KRESP)
 TYPE(TFILEDATA),     INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA),    INTENT(INOUT) :: TPFIELD
-LOGICAL,DIMENSION(:),INTENT(OUT)   :: OFIELD
+LOGICAL,DIMENSION(:),INTENT(INOUT) :: OFIELD
 INTEGER,             INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND) :: STATUS
@@ -1127,7 +1132,7 @@ END SUBROUTINE IO_Field_read_nc4_L1
 SUBROUTINE IO_Field_read_nc4_C0(TPFILE, TPFIELD, HFIELD, KRESP)
 TYPE(TFILEDATA),  INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD
-CHARACTER(LEN=*), INTENT(OUT)   :: HFIELD
+CHARACTER(LEN=*), INTENT(INOUT) :: HFIELD
 INTEGER,          INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND)     :: STATUS
@@ -1196,7 +1201,7 @@ USE MODE_DATETIME
 !
 TYPE(TFILEDATA),  INTENT(IN)    :: TPFILE
 TYPE(TFIELDDATA), INTENT(INOUT) :: TPFIELD
-TYPE (DATE_TIME), INTENT(OUT)   :: TPDATA
+TYPE (DATE_TIME), INTENT(INOUT) :: TPDATA
 INTEGER,          INTENT(OUT)   :: KRESP  ! return-code
 
 INTEGER(KIND=IDCDF_KIND)     :: STATUS
diff --git a/src/LIB/megan.tar.gz b/src/LIB/megan.tar.gz
index 81d81c29fa83d9f4724ba3e2085cf3613549fbc5..c9f186360fd3c305db25d9c72af24cca87988203 100644
--- a/src/LIB/megan.tar.gz
+++ b/src/LIB/megan.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:4f23728f9dae694a49c7a831686b8ee37a5f0be0b51839fa839bb8e022499bbc
-size 42352
+oid sha256:0d9386c64cbbdf2ffe32f1c52e51e2606869e136a95a65e21f8081961f8e48d3
+size 42865
diff --git a/src/LIB/netcdf-cxx-4.2.tar.gz b/src/LIB/netcdf-cxx-4.2.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..11c1c15536cf186d606f9de7d6468223a68e838d
--- /dev/null
+++ b/src/LIB/netcdf-cxx-4.2.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95ed6ab49a0ee001255eac4e44aacb5ca4ea96ba850c08337a3e4c9a0872ccd1
+size 703482
diff --git a/src/LIB/s4py/init_gfortran.c b/src/LIB/s4py/init_gfortran.c
new file mode 100644
index 0000000000000000000000000000000000000000..2fb55869b0fa5f71140d424df2568442eed4f059
--- /dev/null
+++ b/src/LIB/s4py/init_gfortran.c
@@ -0,0 +1,15 @@
+//MNH_LIC Copyright 2019-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 for details. version 1.
+//-----------------------------------------------------------------
+#ifdef __GFORTRAN__
+/* Philippe Marguinaud idea */
+
+void init_gfortran_big_endian_(){
+  _gfortran_set_convert (2);
+}
+void init_gfortran_native_endian_(){
+  _gfortran_set_convert (0);
+}
+#endif
diff --git a/src/LIB/s4py/libs4py.f90 b/src/LIB/s4py/libs4py.f90
new file mode 100644
index 0000000000000000000000000000000000000000..94a19975455b3621545d5261069e5cdc0dbbf5b8
--- /dev/null
+++ b/src/LIB/s4py/libs4py.f90
@@ -0,0 +1,532 @@
+!MNH_LIC Copyright 2014-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 for details. version 1.
+!-----------------------------------------------------------------
+SUBROUTINE WLFIOUV(KRETURNCODE, CDFILE, CDSTATE, KNUMER)
+! ** PURPOSE
+!    Open a LFI file
+!
+! ** DUMMY ARGUMENTS
+!    KRETURNCODE: error code
+!    CDFILE: path to file to open
+!    CDSTATE: state of file ('NEW', 'OLD', 'UNKNOWN', 'SCRATCH')
+!    KNUMER: logical unit number associated to file
+!
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!    26 sept 2014, S. Riette: use 64bits LFI subroutines
+!    8 nov 2018, S. Riette: Meso-NH version
+!  P. Wautelet 21/02/2019: add copyright notice + use INT64 for 64-bits integers
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(OUT) :: KRETURNCODE
+CHARACTER(LEN=*), INTENT(IN) :: CDFILE
+CHARACTER(LEN=*), INTENT(IN) :: CDSTATE
+INTEGER(KIND=INT64), INTENT(OUT) :: KNUMER
+!
+! II. Local variables declaration
+INTEGER, PARAMETER :: JPMAXLOGICALUNITNUMBER=5000
+INTEGER(KIND=LFI_INT) :: IRETURNCODE
+LOGICAL :: LLEXISTS, LLOPEN
+INTEGER(KIND=LFI_INT) :: IRECORDNUMBER
+INTEGER(KIND=LFI_INT) :: INUMER
+!
+! III. File opening
+!
+! III.a Search for an available logical unit
+INUMER=0
+LLEXISTS=.FALSE.
+LLOPEN=.TRUE.
+IRETURNCODE=0
+DO WHILE(INUMER.LT.JPMAXLOGICALUNITNUMBER .AND. (LLOPEN .OR. .NOT. LLEXISTS))
+  INUMER=INUMER+1
+  INQUIRE(UNIT=INUMER, EXIST=LLEXISTS, OPENED=LLOPEN)
+ENDDO
+IF(LLOPEN .OR. .NOT. LLEXISTS) THEN
+  IRETURNCODE=-999
+ENDIF
+!
+#ifdef __GFORTRAN__
+! III.b (Re)-init of libgfortran to enable big_endian file reading
+!**** *** ** * only gfortran will work with this * ** *** ****
+CALL INIT_GFORTRAN_BIG_ENDIAN()
+#endif
+!
+! III.c LFI file opening
+CALL LFIOUV(IRETURNCODE, INUMER, .TRUE., CDFILE, CDSTATE, .FALSE.,&
+           &.FALSE., INT(0, LFI_INT), INT(1, LFI_INT), IRECORDNUMBER)
+IF(IRETURNCODE/=0)THEN
+  CALL LFIENG(INUMER, INT(0, LFI_INT), IRETURNCODE, .FALSE., '', 'LFIOUV', '')
+ENDIF
+!
+#ifdef __GFORTRAN__
+! III.d (Re)-init of libgfortran to enable native endianess file reading
+!**** *** ** * only gfortran will work with this * ** *** ****
+CALL INIT_GFORTRAN_NATIVE_ENDIAN()
+#endif
+!
+KNUMER=INT(INUMER, 8)
+KRETURNCODE=INT(IRETURNCODE,8)
+
+END SUBROUTINE WLFIOUV
+
+!______________________________________________________________________
+
+SUBROUTINE WLFINAF(KRETURNCODE, KNUMER, KNALDO, KNTROU, KNARES, KNAMAX)
+! ** PURPOSE
+!    Wrapper to LFINAF
+!
+! ** DUMMY ARGUMENTS
+!    KRETURNCODE: error code
+!    KNUMER: logical unit number associated to file
+!    KNALDO: Number of actual logical data records (holes excluded)
+!    KNTROU: Number of logical records which are holes
+!    KNARES: Number of logical records which can be written in the reserved part of index (holes included)
+!    KNAMAX: Maximum number of logical records which one can write on logical unit
+!
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!    26 sept 2014, S. Riette: use 64bits LFI subroutines
+!    8 nov 2018, S. Riette: Meso-NH version
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(OUT) :: KRETURNCODE
+INTEGER(KIND=INT64), INTENT(IN) :: KNUMER
+INTEGER(KIND=INT64), INTENT(OUT) :: KNALDO, KNTROU, KNARES, KNAMAX
+!
+! II. Local variables declaration
+INTEGER(KIND=LFI_INT) :: IRETURNCODE
+INTEGER(KIND=LFI_INT) :: INUMER
+INTEGER(KIND=LFI_INT) :: INALDO, INTROU, INARES, INAMAX
+!
+! III. LFINAF call
+INUMER=INT(KNUMER, KIND(INUMER))
+CALL LFINAF(IRETURNCODE, INUMER, INALDO, INTROU, INARES, INAMAX)
+IF(IRETURNCODE/=0)THEN
+  CALL LFIENG(INUMER, INT(0, LFI_INT), IRETURNCODE, .FALSE., '', 'LFINAF', '')
+ENDIF
+KRETURNCODE=INT(IRETURNCODE,8)
+KNALDO=INT(INALDO, 8)
+KNTROU=INT(INTROU, 8)
+KNARES=INT(INARES, 8)
+KNAMAX=INT(INAMAX, 8)
+!
+END SUBROUTINE WLFINAF
+
+!______________________________________________________________________
+
+SUBROUTINE WLFIPOS(KRETURNCODE, KNUMER)
+! ** PURPOSE
+!    Wrapper to LFIPOS
+!
+! ** DUMMY ARGUMENTS
+!    KRETURNCODE: error code
+!    KNUMER: logical unit number associated to file
+!
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!    26 sept 2014, S. Riette: use 64bits LFI subroutines
+!    8 nov 2018, S. Riette: Meso-NH version
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(OUT) :: KRETURNCODE
+INTEGER(KIND=INT64), INTENT(IN) :: KNUMER
+!
+! II. Local variables declaration
+INTEGER(KIND=LFI_INT) :: IRETURNCODE
+INTEGER(KIND=LFI_INT) :: INUMER
+!
+! III. LFIPOS call
+INUMER=INT(KNUMER, KIND(INUMER))
+CALL LFIPOS(IRETURNCODE, INUMER)
+IF(IRETURNCODE/=0)THEN
+  CALL LFIENG(INUMER, INT(0, LFI_INT), IRETURNCODE, .FALSE., '', 'LFIPOS', '')
+ENDIF
+KRETURNCODE=INT(IRETURNCODE,8)
+!
+END SUBROUTINE WLFIPOS
+
+!______________________________________________________________________
+
+SUBROUTINE WLFICAS(KRETURNCODE, KNUMER, CDNOMA, KLONG, KPOSEX, LDAVAN)
+! ** PURPOSE
+!    Wrapper to LFICAS
+!
+! ** DUMMY ARGUMENTS
+!    KRETURNCODE: error code
+!    KNUMER: logical unit number associated to file
+!    CDNOMA: name of next record
+!    KLONG: length of next record
+!    KPOSEX: position in file of the first word of next record
+!    LDAVAN: true if one must move forward the pointer
+!
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!    26 sept 2014, S. Riette: use 64bits LFI subroutines
+!                             use of true logical instead of integer
+!    8 nov 2018, S. Riette: Meso-NH version
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(OUT) :: KRETURNCODE
+INTEGER(KIND=INT64), INTENT(IN) :: KNUMER
+CHARACTER(LEN=16), INTENT(OUT) :: CDNOMA
+INTEGER(KIND=INT64), INTENT(OUT) :: KLONG, KPOSEX
+LOGICAL, INTENT(IN) :: LDAVAN
+!
+! II. Local variables declaration
+INTEGER(KIND=LFI_INT) :: IRETURNCODE
+INTEGER(KIND=LFI_INT) :: INUMER
+INTEGER(KIND=LFI_INT) :: ILONG, IPOSEX
+!
+! III. LFICAS call
+INUMER=INT(KNUMER, KIND(INUMER))
+CALL LFICAS(IRETURNCODE, INUMER, CDNOMA, ILONG, IPOSEX, LDAVAN)
+IF(IRETURNCODE/=0)THEN
+  CALL LFIENG(INUMER, INT(0, LFI_INT), IRETURNCODE, .FALSE., '', 'LFICAS', '')
+ENDIF
+KRETURNCODE=INT(IRETURNCODE,8)
+KLONG=INT(ILONG, 8)
+KPOSEX=INT(IPOSEX, 8)
+!
+END SUBROUTINE WLFICAS
+
+!______________________________________________________________________
+
+SUBROUTINE WLFINFO(KRETURNCODE, KNUMER, CDNOMA, KLONG, KPOSEX)
+! ** PURPOSE
+!    Wrapper to LFINFO
+!
+! ** DUMMY ARGUMENTS
+!    KRETURNCODE: error code
+!    KNUMER: logical unit number associated to file
+!    CDNOMA: name of record
+!    KLONG: length of record
+!    KPOSEX: position in file of the first word of next record
+
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!    26 sept 2014, S. Riette: use 64bits LFI subroutines
+!    8 nov 2018, S. Riette: Meso-NH version
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(OUT) :: KRETURNCODE
+INTEGER(KIND=INT64), INTENT(IN) :: KNUMER
+CHARACTER(LEN=16), INTENT(IN) :: CDNOMA
+INTEGER(KIND=INT64), INTENT(OUT) :: KLONG, KPOSEX
+!
+! II. Local variables declaration
+INTEGER(KIND=LFI_INT) :: IRETURNCODE
+INTEGER(KIND=LFI_INT) :: INUMER
+INTEGER(KIND=LFI_INT) :: ILONG, IPOSEX
+!
+! III. LFINFO call
+INUMER=INT(KNUMER, KIND(INUMER))
+CALL LFINFO(IRETURNCODE, INUMER, CDNOMA, ILONG, IPOSEX)
+IF(IRETURNCODE/=0)THEN
+  CALL LFIENG(INUMER, INT(0, LFI_INT), IRETURNCODE, .FALSE., '', 'LFINFO', '')
+ENDIF
+KRETURNCODE=INT(IRETURNCODE,8)
+KLONG=INT(ILONG, 8)
+KPOSEX=INT(IPOSEX, 8)
+!
+END SUBROUTINE WLFINFO
+
+!______________________________________________________________________
+
+SUBROUTINE WLFILEC(KRETURNCODE, KNUMER, CDNOMA, KLONG, LDABORT, KTAB)
+! ** PURPOSE
+!    Wrapper to LFILEC
+!
+! ** DUMMY ARGUMENTS
+!    KRETURNCODE: error code
+!    KNUMER: logical unit number associated to file
+!    CDNOMA: name of record
+!    KLONG: length of record
+!    LDABORT: must we raise an exception on error -21 ?
+!    KTAB: integer array read
+
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!    26 sept 2014, S. Riette: use 64bits LFI subroutines
+!                             use of true logical instead of integer
+!    8 nov 2018, S. Riette: Meso-NH version
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(OUT) :: KRETURNCODE
+INTEGER(KIND=INT64), INTENT(IN) :: KNUMER
+CHARACTER(LEN=16), INTENT(IN) :: CDNOMA
+INTEGER(KIND=INT64), INTENT(IN) :: KLONG
+LOGICAL, INTENT(IN) :: LDABORT
+INTEGER(KIND=INT64), INTENT(OUT), DIMENSION(KLONG) :: KTAB
+!
+! II. Local variables declaration
+INTEGER(KIND=LFI_INT) :: IRETURNCODE
+INTEGER(KIND=LFI_INT) :: INUMER, ILONG
+INTEGER(KIND=LFI_INT) :: ITOTLONG, IPOSEX
+INTEGER(KIND=INT64), ALLOCATABLE :: KTABTOT(:)
+!
+! III. LFILEC call
+INUMER=INT(KNUMER, KIND(INUMER))
+ILONG=INT(KLONG, KIND(ILONG))
+!
+!Because NERFAG cannot be changed easily, we read the entire article
+!even if only a part is needed, otherwise NERFAG=2 would be sufficient
+CALL WLFINFO(IRETURNCODE, INUMER, CDNOMA, ITOTLONG, IPOSEX)
+IF(ILONG .LT. ITOTLONG) THEN
+  ALLOCATE(KTABTOT(ITOTLONG))
+  CALL LFILEC(IRETURNCODE, INUMER, CDNOMA, KTABTOT, ITOTLONG)
+ELSE
+  CALL LFILEC(IRETURNCODE, INUMER, CDNOMA, KTAB, ILONG)
+ENDIF
+IF (IRETURNCODE/=0 .AND. .NOT. (IRETURNCODE==-21 .AND. .NOT. LDABORT)) THEN
+  CALL LFIENG(INUMER, INT(0, LFI_INT), IRETURNCODE, .FALSE., '', 'LFILEC', '')
+  KRETURNCODE=INT(IRETURNCODE,8)
+ELSE
+  KRETURNCODE=INT(0,8)
+ENDIF
+IF(ILONG .LT. ITOTLONG) THEN
+  KTAB(:)=KTABTOT(1:ILONG)
+  DEALLOCATE(KTABTOT)
+ENDIF
+!
+END SUBROUTINE WLFILEC
+
+!_________________________________________________________________________________________________
+
+SUBROUTINE WGET_COMPHEADER(KSIZE, KDATA, KLONG, KLONU, KTYPECOMP)
+! ** PURPOSE
+!    Wrapper to GET_COMPHEADER
+!
+! ** DUMMY ARGUMENTS
+!    KSIZE: Size of KDATA
+!    KDATA: (part of) integer array read from record
+!    KLONG: length of compressed data
+!    KLONU: length of uncompressed data
+!    KTYPECOMP: type of compression
+!
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(IN) :: KSIZE
+INTEGER(KIND=INT64), INTENT(IN), DIMENSION(KSIZE) :: KDATA
+INTEGER(KIND=INT64), INTENT(IN) :: KLONG
+INTEGER(KIND=INT64), INTENT(OUT) :: KLONU
+INTEGER(KIND=INT64), INTENT(OUT) :: KTYPECOMP
+!
+! II. Local variables declaration
+INTEGER :: ILONG
+INTEGER :: ILONU, ITYPECOMP
+!
+! III. GET_COMPHEADER call
+#ifdef MNH_COMPRESS
+ILONG=KLONG
+CALL GET_COMPHEADER(KDATA, ILONG, ILONU, ITYPECOMP)
+KLONU=INT(ILONU, 8)
+KTYPECOMP=INT(ITYPECOMP, 8)
+#else
+print*, "Error: code was compiled without COMPRESS support, please define MNH_COMPRESS"
+KLONU=INT(-1, 8)
+KTYPECOMP=INT(-1, 8)
+#endif
+!
+END SUBROUTINE WGET_COMPHEADER
+
+!_________________________________________________________________________________________________
+
+SUBROUTINE WCOMPRESS_FIELD(KTAB, KX, KY, KSIZEDECOMP, KSIZECOMP)
+! ** PURPOSE
+!    Wrapper to COMPRESS_FIELD
+!
+! ** DUMMY ARGUMENTS
+!    KTAB: decompressed integer array (IN)
+!          compressed data integer array (OUT)
+!    KX, KY: x and y dimensions
+!    KSIZEDECOMP: size of decompressed data
+!    KSIZECOMP: size of compressed integer array
+!
+! ** AUTHOR
+!    16 July 2015, S. Riette
+!
+! ** MODIFICATIONS
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(IN) :: KX, KY, KSIZEDECOMP
+INTEGER(KIND=INT64), INTENT(INOUT), DIMENSION(KSIZEDECOMP) :: KTAB
+INTEGER(KIND=INT64), INTENT(OUT) :: KSIZECOMP
+!
+! II. Local variables declaration
+INTEGER :: ISIZEDECOMP, ISIZECOMP, IX, IY
+!
+! III. COMPRESS_FIELD call
+#ifdef MNH_COMPRESS
+ISIZEDECOMP=KSIZEDECOMP
+IX=KX
+IY=KY
+CALL COMPRESS_FIELD(KTAB, IX, IY, ISIZEDECOMP, ISIZECOMP)
+KSIZECOMP=ISIZECOMP
+#else
+print*, "Error: code was compiled without COMPRESS support, please define MNH_COMPRESS"
+KSIZECOMP=INT(-1, 8)
+#endif
+!
+END SUBROUTINE WCOMPRESS_FIELD
+
+!_________________________________________________________________________________________________
+
+SUBROUTINE WDECOMPRESS_FIELD(KSIZE, KCOMP, KTYPECOMP, KLDECOMP, KDECOMP)
+! ** PURPOSE
+!    Wrapper to DECOMPRESS_FIELD
+!
+! ** DUMMY ARGUMENTS
+!    KSIZE: size of KCOMP
+!    KCOMP: compressed integer array
+!    KTYPECOMP: type of compression
+!    KDECOMP: decompressed data integer array
+!    KLDECOMP: length of decompressed data
+!
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(IN) :: KSIZE
+INTEGER(KIND=INT64), INTENT(IN), DIMENSION(KSIZE) :: KCOMP
+INTEGER(KIND=INT64), INTENT(IN) :: KTYPECOMP
+INTEGER(KIND=INT64), INTENT(IN) :: KLDECOMP
+INTEGER(KIND=INT64), INTENT(OUT), DIMENSION(KLDECOMP) :: KDECOMP
+!
+! II. Local variables declaration
+INTEGER :: ITYPECOMP, ILDECOMP
+!
+! III. DECOMPRESS_FIELD call
+#ifdef MNH_COMPRESS
+ILDECOMP=KLDECOMP
+ITYPECOMP=KTYPECOMP
+CALL DECOMPRESS_FIELD(KDECOMP, ILDECOMP, KCOMP, SIZE(KCOMP,1), ITYPECOMP)
+#else
+print*, "Error: code was compiled without COMPRESS support, please define MNH_COMPRESS"
+KDECOMP(:)=-1
+#endif
+!
+END SUBROUTINE WDECOMPRESS_FIELD
+
+!_________________________________________________________________________________________________
+
+SUBROUTINE WLFIFER(KRETURNCODE, KNUMER, CDSTTC)
+! ** PURPOSE
+!    Close a LFI file
+!
+! ** DUMMY ARGUMENTS
+!    KRETURNCODE: error code
+!    KNUMER: logical unit number associated to file
+!    CDSTTC: close status ('KEEP', 'SCRATCH', 'DELETE')
+!
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!    26 sept 2014, S. Riette: use 64bits LFI subroutines
+!    8 nov 2018, S. Riette: Meso-NH version
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(OUT) :: KRETURNCODE
+INTEGER(KIND=INT64), INTENT(IN) :: KNUMER
+CHARACTER(LEN=7), INTENT(IN) :: CDSTTC
+!
+! II.  Local variables declaration
+INTEGER(KIND=LFI_INT) :: IRETURNCODE
+INTEGER(KIND=LFI_INT) :: INUMER
+!
+! III. LFIFER call
+INUMER=INT(KNUMER, KIND(INUMER))
+CALL LFIFER(IRETURNCODE, INUMER, CDSTTC)
+IF(IRETURNCODE/=0)THEN
+  CALL LFIENG(INUMER, INT(0, LFI_INT), IRETURNCODE, .FALSE., '', 'LFIFER', '')
+ENDIF
+KRETURNCODE=INT(IRETURNCODE,8)
+!
+END SUBROUTINE WLFIFER
+
+!_________________________________________________________________________________________________
+
+SUBROUTINE WLFIECR(KRETURNCODE, KNUMER, CDNOMA, KSIZE, KTAB)
+! ** PURPOSE
+!    Wrapper to LFIECR
+!
+! ** DUMMY ARGUMENTS
+!    KRETURNCODE: error code
+!    KNUMER: logical unit number associated to file
+!    CDNOMA: name of field to write
+!    KSIZE: Size of KTAB
+!    KTAB: integer array to write
+!
+! ** AUTHOR
+!    9 April 2014, S. Riette
+!
+! ** MODIFICATIONS
+!    26 sept 2014, S. Riette: use 64bits LFI subroutines
+!    8 nov 2018, S. Riette: Meso-NH version
+!
+! I. Dummy arguments declaration
+use iso_fortran_env, only: INT64
+IMPLICIT NONE
+INTEGER(KIND=INT64), INTENT(OUT) :: KRETURNCODE
+INTEGER(KIND=INT64), INTENT(IN) :: KNUMER
+CHARACTER(LEN=16), INTENT(IN) :: CDNOMA
+INTEGER(KIND=INT64), INTENT(IN) :: KSIZE
+INTEGER(KIND=INT64), INTENT(IN), DIMENSION(KSIZE) :: KTAB
+!
+! II.  Local variables declaration
+INTEGER(KIND=LFI_INT) :: IRETURNCODE
+INTEGER(KIND=LFI_INT) :: INUMER
+INTEGER(KIND=LFI_INT) :: ISIZE
+!
+! III. LFIECR call
+INUMER=INT(KNUMER, KIND(INUMER))
+ISIZE=INT(KSIZE, KIND(ISIZE))
+CALL LFIECR(IRETURNCODE, INUMER, CDNOMA, KTAB, ISIZE)
+IF(IRETURNCODE/=0)THEN
+  CALL LFIENG(INUMER, INT(0, LFI_INT), IRETURNCODE, .FALSE., '', 'LFIECR', '')
+ENDIF
+KRETURNCODE=INT(IRETURNCODE,8)
+!
+END SUBROUTINE WLFIECR
+
+!_________________________________________________________________________________________________
diff --git a/src/MNH/BASIC.f90 b/src/MNH/BASIC.f90
old mode 100644
new mode 100755
diff --git a/src/MNH/aer_monitorn.f90 b/src/MNH/aer_monitorn.f90
index 245e8f67283a5e9db1824466f63025377bc5678d..21f1f177fdb72649cc8f5074726840a36ea06626 100644
--- a/src/MNH/aer_monitorn.f90
+++ b/src/MNH/aer_monitorn.f90
@@ -72,7 +72,8 @@ END MODULE MODI_AER_MONITOR_n
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!
+!
+!!    Bielli S. (02/2019) : Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!    EXTERNAL
 !!    --------
 !
@@ -112,7 +113,7 @@ USE MODD_LBC_n, ONLY: CLBCX, &!X-direction LBC type at left(1)
                               ! and right(2) boundaries
 USE MODD_CLOUDPAR_n, ONLY: NSPLITR  ! Nb of required small time step integration
                                     ! for rain sedimentation computation
-USE MODD_CONF,      ONLY: L1D, L2D
+USE MODD_CONF,      ONLY: L1D, L2D, NVERB
 USE MODD_CONF_n,    ONLY: LUSERC,&    ! Logical to use clouds
                           LUSERV,&    ! Logical to use wapor water
                           LUSERR,&    ! Logical to use rain water
@@ -185,9 +186,14 @@ IKE = IKU - JPVEXT
 !
 !*       1.2   calculate timestep variables
 !
+! ++ JORIS DEBUG ++
+IF (NVERB == 10) WRITE(*,*) 'dans aer_monitorn.f90 1.'
+! -- JORIS DEBUG --
 !
-  XRSVS(:,:,:,NSV_DSTBEG:NSV_DSTEND) = &
-                      MAX(XRSVS(:,:,:,NSV_DSTBEG:NSV_DSTEND), 0.)  
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+!  XRSVS(:,:,:,NSV_DSTBEG:NSV_DSTEND) = &
+!                      MAX(XRSVS(:,:,:,NSV_DSTBEG:NSV_DSTEND), 0.)  
+! -- PIERRE / MARINE SSA DUST - MODIF --
 !
 !*       2.   Sedimentation of aerosols 
 !              ------------------------
@@ -198,8 +204,11 @@ IF (LDUST.AND.LSEDIMDUST) THEN
   DO JSV = NSV_DSTBEG, NSV_DSTEND
     ZSVT(:,:,:,JSV-NSV_DSTBEG+1) = XRSVS(:,:,:,JSV) * PTSTEP / XRHODJ(:,:,:)
   ENDDO
-  CALL DUST_FILTER(ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,:),&
-                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE)) 
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+ CALL DUST_FILTER(ZSVT,XRHODREF)
+!  CALL DUST_FILTER(ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,:),&
+!                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE)) 
+! -- PIERRE / MARINE SSA DUST - MODIF --
   CALL SEDIM_DUST(XTHT(IIB:IIE,IJB:IJE,IKB:IKE), PTSTEP,&
                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE), &
                   XPABST(IIB:IIE,IJB:IJE,IKB:IKE), &
@@ -222,14 +231,17 @@ IF ((LSALT).AND.(LSEDIMSALT)) THEN
     ZSVT(:,:,:,JSV-NSV_SLTBEG+1) = XRSVS(:,:,:,JSV) * PTSTEP / XRHODJ(:,:,:)
   ENDDO
 
+! ++ JORIS DEBUG ++
   CALL SALT_FILTER(ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,:),&
-                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE)) 
+                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE))
+! 
   CALL SEDIM_SALT(XTHT(IIB:IIE,IJB:IJE,IKB:IKE),PTSTEP,&
                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE), &
                   XPABST(IIB:IIE,IJB:IJE,IKB:IKE), &
                   XZZ(IIB:IIE,IJB:IJE,IKB:IKE+1),    &
                   ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,:))  !ppp (concentration)
-!
+! -- JORIS DEBUG --
+
 DO JSV = NSV_SLTBEG, NSV_SLTEND
  XRSVS(IIB:IIE,IJB:IJE,IKB:IKE,JSV) = &
              ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,JSV-NSV_SLTBEG+1)  *&
@@ -365,7 +377,26 @@ SELECT CASE (CCLOUD)
                               ZVMASSMIN(IIB:IIE,IJB:IJE,IKB:IKE,:),&
                               PCCT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_C2R2BEG+1),&
                               PCRT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_C2R2BEG+2) )
-
+!++th++ 05/05/17 ajout LIMA
+CASE ('LIMA')
+  CALL AER_WET_DEP_KMT_WARM  (NSPLITR, PTSTEP,                     &
+                              XZZ(IIB:IIE,IJB:IJE,IKB:IKE),        &
+                              XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE),   &
+                              XRT(IIB:IIE,IJB:IJE,IKB:IKE,2),      &
+                              XRT(IIB:IIE,IJB:IJE,IKB:IKE,3),      &
+                              ZRCS(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              ZRRS(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              ZSVDST(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
+                              XTHT(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              XPABST(IIB:IIE,IJB:IJE,IKB:IKE),     &
+                              ZRGDST(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
+                              XEVAP3D(IIB:IIE,IJB:IJE,IKB:IKE),    &
+                              NMODE_DST,                           &
+                              ZDENSITY(IIB:IIE,IJB:IJE,IKB:IKE,:), &
+                              ZVMASSMIN(IIB:IIE,IJB:IJE,IKB:IKE,:),&
+                              PCCT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_LIMA_NC),&
+                              PCRT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_LIMA_NR) )
+!--th--
 END SELECT
 
 !     3.5 Compute return to moment vector
@@ -441,25 +472,25 @@ ZDENSITY(:,:,:,:) = XDENSITY_SALT
 
 !
 !     4.1 Minimum mass to transfer between dry mass or in-cloud droplets
-
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
 DO JN=1,NMODE_SLT
   IMODEIDX = JPSALTORDER(JN)
    IF (CRGUNITD=="MASS") THEN
-    ZINIRADIUS(JN) = XINIRADIUS(IMODEIDX) * EXP(-3.*(LOG(XINISIG(IMODEIDX)))**2)
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
    ELSE
-    ZINIRADIUS(JN) = XINIRADIUS(IMODEIDX)
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
    END IF
    IF (LVARSIG) THEN
-    ZSIGMIN = XSIGMIN
+    ZSIGMIN = XSIGMIN_SLT
    ELSE
-    ZSIGMIN = XINISIG(IMODEIDX)
+    ZSIGMIN = XINISIG_SLT(IMODEIDX)
    ENDIF
-   ZMASSMIN(JN) = XN0MIN(IMODEIDX) * (ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(ZSIGMIN)**2)
+   ZMASSMIN(JN) = XN0MIN_SLT(IMODEIDX) * (ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(ZSIGMIN)**2)
 ! volume/um3 =>  #/molec_{air}
    ZVMASSMIN(:,:,:,JN)=  ZMASSMIN(JN) * XMD * XPI * 4./3. * XDENSITY_SALT  / &
-                 (XMOLARWEIGHT_SALT*XM3TOUM3*XRHODREF(:,:,:))
+                 (XMOLARWEIGHT_SALT*XM3TOUM3_SALT*XRHODREF(:,:,:))
 ENDDO
-  
+! -- PIERRE / MARINE SSA DUST - MODIF --
 !
 
 !     4.2 Derive moment from aerosol moments sources
@@ -536,7 +567,25 @@ SELECT CASE (CCLOUD)
                               ZVMASSMIN(IIB:IIE,IJB:IJE,IKB:IKE,:),&
                               PCCT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_C2R2BEG+1),&
                               PCRT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_C2R2BEG+2) )
-
+!++th++05/05/17 ajout LIMA
+  CALL AER_WET_DEP_KMT_WARM  (NSPLITR, PTSTEP,                     &
+                              XZZ(IIB:IIE,IJB:IJE,IKB:IKE),        &
+                              XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE),   &
+                              XRT(IIB:IIE,IJB:IJE,IKB:IKE,2),      &
+                              XRT(IIB:IIE,IJB:IJE,IKB:IKE,3),      &
+                              ZRCS(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              ZRRS(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              ZSVSLT(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
+                              XTHT(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              XPABST(IIB:IIE,IJB:IJE,IKB:IKE),     &
+                              ZRGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
+                              XEVAP3D(IIB:IIE,IJB:IJE,IKB:IKE),    &
+                              NMODE_SLT,                           &
+                              ZDENSITY(IIB:IIE,IJB:IJE,IKB:IKE,:), &
+                              ZVMASSMIN(IIB:IIE,IJB:IJE,IKB:IKE,:),&
+                              PCCT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_LIMA_NC),&
+                              PCRT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_LIMA_NR) )
+!--th--
 END SELECT
 
 !     4.5 Compute return to moment vector
diff --git a/src/MNH/ch_aer_eqm_initn.f90 b/src/MNH/ch_aer_eqm_initn.f90
index ef4f69812ec13a06d9d50d27d85b37adf99ee756..acece90b873e701417f00e2f778e8936bca66df6 100644
--- a/src/MNH/ch_aer_eqm_initn.f90
+++ b/src/MNH/ch_aer_eqm_initn.f90
@@ -1,13 +1,8 @@
-!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
 !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !ORILAM_LIC for details.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
 !!   ########################
      MODULE MODI_CH_AER_EQM_INIT_n
 !!   ########################
@@ -49,6 +44,7 @@ END MODULE MODI_CH_AER_EQM_INIT_n
 !!    MODIFICATIONS
 !!    -------------
 !!    M.Leriche 2015 : masse molaire Black carbon à 12 g/mol
+!  P. Wautelet 05/03/2019: modify allocation procedure for XMI and XSOLORG
 !!
 !!    EXTERNAL
 !!    --------
@@ -116,15 +112,27 @@ END DO
 
 ZDEN2MOL = 1E-6 * XAVOGADRO / XMD
 
+IF ( ASSOCIATED(XMI) ) THEN
+  IF ( SIZE(XMI) == 0 ) THEN
+    DEALLOCATE( XMI )
+    XMI => NULL()
+  END IF
+END IF
 IF (.NOT.(ASSOCIATED(XMI))) THEN
   ALLOCATE(XMI(SIZE(PCHEM,1),SIZE(PCHEM,2),SIZE(PCHEM,3),NSP+NCARB+NSOA))
 END IF
 
+IF ( ASSOCIATED(XSOLORG) ) THEN
+  IF ( SIZE(XSOLORG) == 0 ) THEN
+    DEALLOCATE( XSOLORG )
+    XSOLORG => NULL()
+  END IF
+END IF
 IF (.NOT.(ASSOCIATED(XSOLORG))) THEN
   ALLOCATE(XSOLORG(SIZE(PCHEM,1),SIZE(PCHEM,2),SIZE(PCHEM,3),10))
   XSOLORG(:,:,:,:) = 0.
 END IF
-
+!
 ! Default values of molar mass
 
 XMI(:,:,:,:) = 250.
diff --git a/src/MNH/ch_aqueous_sedim1mom.f90 b/src/MNH/ch_aqueous_sedim1mom.f90
index 9bf9109b022306bf0ef99d6fd47b8d62230da921..cd0cf2e146b3e3350801ed6264a93aa9f496a87a 100644
--- a/src/MNH/ch_aqueous_sedim1mom.f90
+++ b/src/MNH/ch_aqueous_sedim1mom.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2007-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.
 !      ################################
        MODULE MODI_CH_AQUEOUS_SEDIM1MOM
@@ -79,6 +79,7 @@ END MODULE MODI_CH_AQUEOUS_SEDIM1MOM
 !!    17/09/10 (M Leriche) add LUSECHIC flag
 !!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!    16/12/15 (M Leriche) compute instantaneous rain at the surface
+!  P. Wautelet 12/02/2019: bugfix: ZRR_SEDIM was not initialized everywhere
 !!
 !-------------------------------------------------------------------------------
 !
@@ -268,6 +269,7 @@ DO JN = 1 , KSPLITR
 !
     ZZW(:) = ZFSEDR * ZZZRRS(:)**(ZEXSEDR) * ZRHODREF(:)**(ZEXSEDR-ZCEXVT)
     ZWSED(:,:,:) = UNPACK( ZZW(:),MASK=GSEDIMR(:,:,:),FIELD=0.0 )
+    ZRR_SEDIM(:,:,:) = 0.0
     DO JK = IKB , IKE
       ZRR_SEDIM(:,:,JK) = ZW(:,:,JK)*(ZWSED(:,:,JK+1)-ZWSED(:,:,JK))
     END DO
@@ -308,6 +310,7 @@ DO JN = 1 , KSPLITR
 !
     ZZW(:) = XFSEDS * ZZZRSS(:)**(XEXSEDS) * ZRHODREF(:)**(XEXSEDS-ZCEXVT)
     ZWSED(:,:,:) = UNPACK( ZZW(:),MASK=GSEDIMS(:,:,:),FIELD=0.0 )
+    ZRR_SEDIM(:,:,:) = 0.0
     DO JK = IKB , IKE
       ZRR_SEDIM(:,:,JK) = ZW(:,:,JK)*(ZWSED(:,:,JK+1)-ZWSED(:,:,JK))
     END DO
@@ -336,6 +339,7 @@ DO JN = 1 , KSPLITR
 !
     ZZW(:) = XFSEDG * ZZZRGS(:)**(XEXSEDG) * ZRHODREF(:)**(XEXSEDG-ZCEXVT)
     ZWSED(:,:,:) = UNPACK( ZZW(:),MASK=GSEDIMG(:,:,:),FIELD=0.0 )
+    ZRR_SEDIM(:,:,:) = 0.0
     DO JK = IKB , IKE
       ZRR_SEDIM(:,:,JK) = ZW(:,:,JK)*(ZWSED(:,:,JK+1)-ZWSED(:,:,JK))
     END DO
diff --git a/src/MNH/ch_f77.fx90 b/src/MNH/ch_f77.fx90
index 79387b824a2390553faa1a480964e9c3b9f034c0..be71fe6c01244c1265bc94f3e2f706cef92b5708 100644
--- a/src/MNH/ch_f77.fx90
+++ b/src/MNH/ch_f77.fx90
@@ -20,6 +20,8 @@ C**MODIFIED: 10/01/2019 (P.Wautelet) use newunit argument to open files
 C                        + bug corrections: some files were not closed
 C**MODIFIED: 10/01/2019 (P.Wautelet) replace double precision declarations by
 C                       real(kind(0.0d0)) (to allow compilation by NAG compiler)
+C**MODIFIED: 08/02/2019 (P.Wautelet) bug fixes: missing argument
+C                                             + wrong use of an non initialized value
 C!
 C!
 C!
@@ -4974,7 +4976,6 @@ c      IF(zaird .GT. nzero) aircon(izout) = zaird
 *   in subroutine.
 *   Optical depths in Lyman-alpha and SRB will be over-written
 *   in subroutine la_srb.f
-
       CALL seto2(nz,z,nw,wl,aircol,o2xs1, dto2, kout)
 
 * Ozone optical depths
@@ -20251,11 +20252,11 @@ c     INCLUDE 'params'
 
       mabs = 4
 
-      IF (mabs. EQ. 1) CALL no2xs_d(nz,tlev,nw,wl, no2xs)
-      IF (mabs .EQ. 2) CALL no2xs_jpl94(nz,tlev,nw,wl, no2xs)
-      IF (mabs .EQ. 3) CALL no2xs_har(nz,tlev,nw,wl, no2xs)
-      IF (mabs .EQ. 4) CALL no2xs_jpl06a(nz,tlev,nw,wl, no2xs)
-      IF (mabs .EQ. 5) CALL no2xs_jpl06b(nz,tlev,nw,wl, no2xs)
+      IF (mabs. EQ. 1) CALL no2xs_d(nz,tlev,nw,wl, no2xs, kout)
+      IF (mabs .EQ. 2) CALL no2xs_jpl94(nz,tlev,nw,wl, no2xs, kout)
+      IF (mabs .EQ. 3) CALL no2xs_har(nz,tlev,nw,wl, no2xs, kout)
+      IF (mabs .EQ. 4) CALL no2xs_jpl06a(nz,tlev,nw,wl, no2xs, kout)
+      IF (mabs .EQ. 5) CALL no2xs_jpl06b(nz,tlev,nw,wl, no2xs, kout)
 
 * quantum yields
 *     myld = 1   NO2_calvert.yld  (same as JPL2002)
@@ -41184,8 +41185,8 @@ c      INCLUDE 'params'
 *  Assumes that O2 = 20.95 % of air density.  If desire different O2 
 *    profile (e.g. for upper atmosphere) then can load it here.
 
-      DO iz = 1, nz
-         DO iw =1, nw - 1   
+      DO iz = 1, nz-1
+         DO iw =1, nw - 1
             dto2(iz,iw) = 0.2095 * cz(iz) * o2xs1(iw)
          ENDDO  
       ENDDO
@@ -42824,7 +42825,8 @@ c      INCLUDE 'params'
 *   calculation is based on nz-1 layers (not nz).
 
       col(nz-1) = col(nz-1) + 1.E5 * hscale * con(nz)
-  
+      col(nz) = 0.
+
 * Scale by input surface pressure:
 * min value = 1 molec cm-2
 
diff --git a/src/MNH/ch_init_constn.f90 b/src/MNH/ch_init_constn.f90
index 08109e2bfe9bbdbdabef97040250b77d9c086dfd..8473c00837d381118840260e24f6ec926bad5c1a 100644
--- a/src/MNH/ch_init_constn.f90
+++ b/src/MNH/ch_init_constn.f90
@@ -56,8 +56,8 @@ END MODULE MODI_CH_INIT_CONST_n
 !!    MODIFICATIONS
 !!    -------------
 !!    Original 16/02/01
-!!  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: 25/02/2019: bug correction for the file unit numbers
 !!    EXTERNAL
 !!    --------
 USE MODI_CH_OPEN_INPUT  ! open the general purpose ASCII input file
@@ -240,6 +240,7 @@ IF (KVERB >= 5) WRITE(KLUOUT,*) &
    "CH_INIT_CONST: reading effective Henry constant", &
    " and its temperature correction "
 CALL CH_OPEN_INPUT(CCHEM_INPUT_FILE, "HENRY_SP", TZFILE, KLUOUT, KVERB)
+ICHANNEL = TZFILE%NLU
 !
 ! read number of molecular diffusivity IHENRY
 READ(ICHANNEL, *) IHENRY
diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90
index fb7fda98074078b1bf06621026f8ffa7e4277d5a..9ea38d3e41dfab50112aa5ca053cf77ccd555513 100644
--- a/src/MNH/ch_monitorn.f90
+++ b/src/MNH/ch_monitorn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-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.
 !!    ########################
       MODULE MODI_CH_MONITOR_n
@@ -113,6 +113,7 @@ END MODULE MODI_CH_MONITOR_n
 !!    20/01/17 (G.Delautier) bug if CPROGRAM/=DIAG
 !!    01/10/17 (C.Lac) add correction of negativity
 !!    Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 12/02/2019: bugfix: ZINPRR was not initialized all the time
 !!
 !!    EXTERNAL
 !!    --------
@@ -845,6 +846,8 @@ IF (LUSECHAQ.AND.(NRRL>=2) ) THEN
                                   XRSVS(:,:,:,NSV_CHACBEG+NEQAQ/2:NSV_CHACEND),&
                                   ZINPRR(:,:)                                  )
     END SELECT
+  ELSE
+    ZINPRR(:,:) = 0.
   END IF
 ELSE IF (LUSECHAQ.AND.(NRRL==1) ) THEN
   CALL CH_AQUEOUS_CHECK (PTSTEP, XRHODREF, XRHODJ, XRRS, XRSVS, NRRL, &
diff --git a/src/MNH/compute_entr_detr.f90 b/src/MNH/compute_entr_detr.f90
index b7346fad93d7d261b08b2ec40e89ad1ed6ce95d1..da35fea05871eec70348a6e60de42ca8b85eef68 100644
--- a/src/MNH/compute_entr_detr.f90
+++ b/src/MNH/compute_entr_detr.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2009-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.
 !     ######spl
      MODULE MODI_COMPUTE_ENTR_DETR
@@ -120,6 +120,7 @@ END MODULE MODI_COMPUTE_ENTR_DETR
 !!                          improvement of continuity at the condensation level
 !!      S. Riette Nov 2013: protection against zero divide for min value of dry PDETR
 !!      R.Honnert Oct 2016 : Update with AROME
+!  P. Wautelet 08/02/2019: bug fix: compute ZEPSI_CLOUD only once and only when it is needed
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -468,7 +469,7 @@ ENDDO
 !               3.4 Computation of PENTR and PDETR
   DO JLOOP=1,SIZE(OTEST)
     IF(OTEST(JLOOP)) THEN
-      ZEPSI_CLOUD=MIN(ZDELTA,ZEPSI)
+      ZEPSI_CLOUD(JLOOP)=MIN(ZDELTA(JLOOP),ZEPSI(JLOOP))
       PENTR_CLD(JLOOP) = (1.-PPART_DRY(JLOOP))*ZCOEFFMF_CLOUD*PRHODREF(JLOOP)*ZEPSI_CLOUD(JLOOP)
       PDETR_CLD(JLOOP) = (1.-PPART_DRY(JLOOP))*ZCOEFFMF_CLOUD*PRHODREF(JLOOP)*ZDELTA(JLOOP)
       PENTR(JLOOP) = PENTR(JLOOP)+PENTR_CLD(JLOOP)
diff --git a/src/MNH/convect_updraft.f90 b/src/MNH/convect_updraft.f90
index a363aec976b3d5bb2a17f22fa6a2c3c4ee6e64f2..d860b62401954899c0df857b3178df86e8ea38c3 100644
--- a/src/MNH/convect_updraft.f90
+++ b/src/MNH/convect_updraft.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 conv 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     #################
       MODULE MODI_CONVECT_UPDRAFT
 !     #################
diff --git a/src/MNH/deallocate_model1.f90 b/src/MNH/deallocate_model1.f90
index 9a3b3a5c12ce8474778eaff273f99e3a1e3c701d..11a577e2e5a77f04b0ea4f0f24009235b5f51312 100644
--- a/src/MNH/deallocate_model1.f90
+++ b/src/MNH/deallocate_model1.f90
@@ -66,6 +66,7 @@ END MODULE MODI_DEALLOCATE_MODEL1
 !!                   06/2012 M.Tomasini add 2D nesting ADVFRC
 !!                   10/2016 M.Mazoyer New KHKO output fields
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!                   02/2019 C.Lac add rain fraction as an output field
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -187,6 +188,10 @@ IF ( ASSOCIATED(XCLDFR) .AND. KCALL==2 ) THEN
   DEALLOCATE(XCLDFR)
 END IF   
 !
+IF ( ASSOCIATED(XRAINFR) .AND. KCALL==2 ) THEN
+  DEALLOCATE(XRAINFR)
+END IF   
+!
 IF ( KCALL == 3 ) THEN
   DEALLOCATE(XSVT)
 END IF
diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 2632f9f08f9de9c63dc9dd42533becb31d1c5b93..9c7cbcb5bc7fc9f526fb80dcdc91661a9bbe26ca 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -227,6 +227,7 @@ END MODULE MODI_DEFAULT_DESFM_n
 !!                   01/2018 (J.Colin) add VISC and DRAG
 !!                   07/2017 (V. Vionnet) add blowing snow variables
 !!                   01/2019 (R. Honnert) add reduction of the mass-flux surface closure with the resolution
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1371,7 +1372,6 @@ IF (KMI == 1) THEN ! other values initialized in modd_dust
   LDEPOS_DST(:) = .FALSE.
 
   LSALT      = .FALSE.
-  NMODE_SLT  = 3
   LVARSIG_SLT= .FALSE.
   LSEDIMSALT = .FALSE.
   LDEPOS_SLT(:)     = .FALSE.
diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90
index 1ad4aa373e925a36bb4e672f821dc8777e538367..b9feff89e8ae375a275254a369052cda6d5bded6 100644
--- a/src/MNH/diag.f90
+++ b/src/MNH/diag.f90
@@ -89,6 +89,7 @@
 !!  V.Vionnet 07/2017 add LWIND_CONTRAV
 !!  11/2017      (D. Ricard, P. Marquet) add diagnostics for THETAS 
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
+!  P. Wautelet 11/02/2019: added missing use of MODI_CH_MONITOR_n
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -148,6 +149,7 @@ USE MODE_POS
 USE MODE_TIME
 !
 USE MODI_AIRCRAFT_BALLOON
+USE MODI_CH_MONITOR_n
 USE MODI_COMPUTE_R00
 USE MODI_DIAG_SURF_ATM_N
 USE MODI_INIT_MNH
diff --git a/src/MNH/effic_salt.f90 b/src/MNH/effic_salt.f90
index 71ee6dfc2ef9b7c6e9d84509b606551e4f30499d..a2636789606306e49d88e71ac4d74e2d72ef3c1a 100644
--- a/src/MNH/effic_salt.f90
+++ b/src/MNH/effic_salt.f90
@@ -57,6 +57,7 @@ END MODULE MODI_EFFIC_SALT
 !!    -------------
 !!   Original
 !!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 ! Entry variables:
 !
 ! PSVTS(INOUT)       -Array of moments included in PSVTS
diff --git a/src/MNH/end_diag_in_run.f90 b/src/MNH/end_diag_in_run.f90
index 139ba83bee5bc12af51fbb463a93fab6ad36a449..61405af363c8688e00877d1e7b5e1334eb17c292 100644
--- a/src/MNH/end_diag_in_run.f90
+++ b/src/MNH/end_diag_in_run.f90
@@ -58,6 +58,7 @@ SUBROUTINE END_DIAG_IN_RUN
 !!     Original 11/2003
 !!
 !!                   02/2018 Q.Libois ECRAD
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !! --------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
@@ -92,6 +93,9 @@ DEALLOCATE(XCURRENT_MER10M)! meridian wind at 10m
 DEALLOCATE(XCURRENT_DSTAOD)! dust aerosol optical depth
 DEALLOCATE(XCURRENT_SFCO2   ) ! CO2 Surface flux
 DEALLOCATE(XCURRENT_TKE_DISS) ! Tke dissipation rate
+DEALLOCATE(XCURRENT_SLTAOD)   ! Salt aerosol optical depth
+DEALLOCATE(XCURRENT_ZWS   )   ! Significant height of waves
+
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/endstep.f90 b/src/MNH/endstep.f90
index fb0bd478bdabc82aefe0b8e7e7165a50758a34cb..9a3da2c5443fb7d07a7e43c62891df3b1d1e7ea9 100644
--- a/src/MNH/endstep.f90
+++ b/src/MNH/endstep.f90
@@ -18,16 +18,16 @@ INTERFACE
                                  PUS,PVS,PWS,PDRYMASSS,                    &
                                  PTHS,PRS,PTKES,PSVS,                      &
                                  PLSUS,PLSVS,PLSWS,                        &
-                                 PLSTHS,PLSRVS,                            &
+                                 PLSTHS,PLSRVS,PLSZWSS,                    &
                                  PLBXUS,PLBXVS,PLBXWS,                     &
                                  PLBXTHS,PLBXRS,PLBXTKES,PLBXSVS,          &
                                  PLBYUS,PLBYVS,PLBYWS,                     &
                                  PLBYTHS,PLBYRS,PLBYTKES,PLBYSVS,          &
-                                 PUM,PVM,PWM,                              &
+                                 PUM,PVM,PWM,PZWS,                         &
                                  PUT,PVT,PWT,PPABST,PDRYMASST,             &
                                  PTHT,PRT,PTHM,PRCM,PPABSM,PTKET,PSVT,     &
                                  PLSUM,PLSVM,PLSWM,                        &
-                                 PLSTHM,PLSRVM,                            &
+                                 PLSTHM,PLSRVM,PLSZWSM,                    &
                                  PLBXUM,PLBXVM,PLBXWM,                     &
                                  PLBXTHM,PLBXRM,PLBXTKEM,PLBXSVM,          &
                                  PLBYUM,PLBYVM,PLBYWM,                     &
@@ -51,6 +51,7 @@ REAL,                     INTENT(IN) :: PDRYMASSS           !   Md source
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLSUS,PLSVS,PLSWS,& ! Large Scale 
                                         PLSTHS,PLSRVS       ! fields tendencies
 !
+REAL, DIMENSION(:,:),     INTENT(IN) :: PLSZWSS               ! Large Scale fields tendencies
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLBXUS,PLBXVS,PLBXWS,  &  !
                                         PLBXTHS,PLBXTKES          ! LBX tendancy 
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PLBXRS,PLBXSVS            ! 
@@ -68,6 +69,7 @@ REAL,                    INTENT(INOUT):: PDRYMASST                !
 !
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLSUM,PLSVM,PLSWM,& ! Large Scale fields
                                          PLSTHM,PLSRVM       !     at t-dt
+REAL, DIMENSION(:,:),   INTENT(INOUT) :: PLSZWSM  ! Large Scale fields at t-dt
 !
 REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBXUM,PLBXVM,PLBXWM,   & ! 
                                           PLBXTHM,PLBXTKEM          ! LBX fields
@@ -76,6 +78,7 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBXRM,PLBXSVM            !
 REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBYUM,PLBYVM,PLBYWM,   & ! 
                                           PLBYTHM,PLBYTKEM          ! LBY fields
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBYRM,PLBYSVM            ! 
+REAL, DIMENSION(:,:),     INTENT(INOUT) :: PZWS                  ! significant wave height
 !
 END SUBROUTINE ENDSTEP
 !
@@ -91,16 +94,16 @@ END MODULE MODI_ENDSTEP
                                  PUS,PVS,PWS,PDRYMASSS,                    &
                                  PTHS,PRS,PTKES,PSVS,                      &
                                  PLSUS,PLSVS,PLSWS,                        &
-                                 PLSTHS,PLSRVS,                            &
+                                 PLSTHS,PLSRVS,PLSZWSS,                    &
                                  PLBXUS,PLBXVS,PLBXWS,                     &
                                  PLBXTHS,PLBXRS,PLBXTKES,PLBXSVS,          &
                                  PLBYUS,PLBYVS,PLBYWS,                     &
                                  PLBYTHS,PLBYRS,PLBYTKES,PLBYSVS,          &
-                                 PUM,PVM,PWM,                              &
+                                 PUM,PVM,PWM,PZWS,                         &
                                  PUT,PVT,PWT,PPABST,PDRYMASST,             &
                                  PTHT,PRT,PTHM,PRCM,PPABSM,PTKET,PSVT,     &
                                  PLSUM,PLSVM,PLSWM,                        &
-                                 PLSTHM,PLSRVM,                            &
+                                 PLSTHM,PLSRVM,PLSZWSM,                    &
                                  PLBXUM,PLBXVM,PLBXWM,                     &
                                  PLBXTHM,PLBXRM,PLBXTKEM,PLBXSVM,          &
                                  PLBYUM,PLBYVM,PLBYWM,                     &
@@ -192,6 +195,7 @@ END MODULE MODI_ENDSTEP
 !!                 04/2013  (C.Lac)       FIT for all the variables     
 !!                 04/2014  (C.Lac)       Check on the positivity of PSVT
 !!                 J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
+!!                 02/2019  (S. Bielli)  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !------------------------------------------------------------------------------
 !
@@ -241,6 +245,7 @@ REAL,                     INTENT(IN) :: PDRYMASSS           !   Md source
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLSUS,PLSVS,PLSWS,& !    Large Scale 
                                         PLSTHS,PLSRVS       ! fields tendencies
+REAL, DIMENSION(:,:),     INTENT(IN) :: PLSZWSS               ! Large Scale fields tendencies
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLBXUS,PLBXVS,PLBXWS,  &  !
                                         PLBXTHS,PLBXTKES          ! LBX tendancy 
@@ -260,6 +265,8 @@ REAL,                    INTENT(INOUT):: PDRYMASST                !
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLSUM,PLSVM,PLSWM,& ! Large Scale fields
                                          PLSTHM,PLSRVM       !     at t-dt
 !
+REAL, DIMENSION(:,:),   INTENT(INOUT) :: PLSZWSM  ! Large Scale fields at t-dt
+!
 REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBXUM,PLBXVM,PLBXWM,   & ! 
                                           PLBXTHM,PLBXTKEM          ! LBX fields
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBXRM,PLBXSVM            !
@@ -268,6 +275,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBYUM,PLBYVM,PLBYWM,   & !
                                           PLBYTHM,PLBYTKEM          ! LBY fields
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBYRM,PLBYSVM            !   
 !
+REAL, DIMENSION(:,:),     INTENT(INOUT) :: PZWS                  ! significant wave height
 !
 !*      0.2  DECLARATIONS OF LOCAL VARIABLES
 !
@@ -383,6 +391,11 @@ ENDIF
 IF (SIZE(PLSRVS,1) /= 0) THEN
   PLSRVM(:,:,:) = MAX( PLSRVM(:,:,:) + PTSTEP * PLSRVS(:,:,:) , 0.)
 ENDIF
+
+IF (SIZE(PLSZWSS,1) /= 0) THEN
+  PLSZWSM(:,:) = MAX( PLSZWSM(:,:) + PTSTEP * PLSZWSS(:,:) , 0.)
+  PZWS(:,:) = PLSZWSM(:,:)
+ENDIF
 !
 !------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90
index a492a36b3bdc9c765346897f749a57689d8e21db..717aa871ba524e674bf2baffa19ea52659e6d26c 100644
--- a/src/MNH/ground_paramn.f90
+++ b/src/MNH/ground_paramn.f90
@@ -109,6 +109,7 @@ END MODULE MODI_GROUND_PARAM_n
 !!     (P.Wautelet) 28/03/2018 replace TEMPORAL_DIST by DATETIME_DISTANCE
 
 !!     (V. Vionnet)           18/07/2017 add coupling for blowing snow module 
+!!     (Bielli S.) 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -128,7 +129,7 @@ USE MODD_CST,        ONLY : XP00, XCPD, XRD, XRV,XRHOLW, XDAY, XPI, XLVTT, XMD,
 USE MODD_PARAMETERS, ONLY : JPVEXT, XUNDEF
 USE MODD_DYN_n,      ONLY : XTSTEP
 USE MODD_CH_MNHC_n,  ONLY : LUSECHEM
-USE MODD_FIELD_n,    ONLY : XUT, XVT, XWT, XTHT, XRT, XPABST, XSVT, XTKET
+USE MODD_FIELD_n,    ONLY : XUT, XVT, XWT, XTHT, XRT, XPABST, XSVT, XTKET, XZWS
 USE MODD_METRICS_n,  ONLY : XDXX, XDYY, XDZZ
 USE MODD_DIM_n,      ONLY : NKMAX
 USE MODD_GRID_n,     ONLY : XLON, XZZ, XDIRCOSXW, XDIRCOSYW, XDIRCOSZW, &
@@ -307,6 +308,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_DIR_SW   ! direct incoming shortwave
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SCA_SW   ! diffuse incoming shortwave
 REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PS       ! surface pressure
 REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PA       ! pressure at first atmospheric level
+REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZWS      ! significant wave height (m)
 
 REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFTQ     ! water vapor flux
 REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFTH     ! potential temperature flux
@@ -594,7 +596,7 @@ CALL COUPLING_SURF_ATM_n(YSURF_CUR,'MESONH', 'E',ZTIMEC,
                ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV,                           &
                ZP_TSRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H, ZP_QSURF,  &
                ZP_PEW_A_COEF, ZP_PEW_B_COEF,                                                  &
-               ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,                    &
+               ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,ZP_ZWS,             &
                'OK'                                                                           )
 !
 #ifdef CPLOASIS
@@ -751,12 +753,14 @@ IF (LDIAG_IN_RUN) THEN
   XCURRENT_SWDIFF(:,:) = SUM(XSCAFLASWD(:,:,:),DIM=3) 
   XCURRENT_SFCO2(:,:) = ZSFCO2(:,:)
   XCURRENT_DSTAOD(:,:)=0.0
+  XCURRENT_SLTAOD(:,:)=0.0
   IF (CRAD=='ECMW') THEN
   DO JK=IKB,IKE
     IKRAD = JK - 1 
     DO JJ=IJB,IJE
        DO JI=IIB,IIE
          XCURRENT_DSTAOD(JI,JJ)=XCURRENT_DSTAOD(JI,JJ)+XAER(JI,JJ,IKRAD,3)
+         XCURRENT_SLTAOD(JI,JJ)=XCURRENT_SLTAOD(JI,JJ)+XAER(JI,JJ,IKRAD,2)
        ENDDO
     ENDDO
   ENDDO
@@ -777,6 +781,8 @@ IF (LDIAG_IN_RUN) THEN
   CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_ZON10M)
   CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_MER10M) 
   CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_DSTAOD)
+  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_SLTAOD)
+  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_ZWS )
   CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_SFCO2 )
 
   CALL UPDATE_HALO_ll(TZFIELDSURF_ll,IINFO_ll)
@@ -815,6 +821,7 @@ ALLOCATE(ZP_DIR_SW  (KDIM1D,SIZE(XDIRSRFSWD,3)))
 ALLOCATE(ZP_SCA_SW  (KDIM1D,SIZE(XSCAFLASWD,3)))
 ALLOCATE(ZP_PS      (KDIM1D))
 ALLOCATE(ZP_PA      (KDIM1D))
+ALLOCATE(ZP_ZWS     (KDIM1D))
 
 ALLOCATE(ZP_SFTQ    (KDIM1D))
 ALLOCATE(ZP_SFTH    (KDIM1D))
@@ -861,6 +868,7 @@ ZP_CO2(:)         = RESHAPE(ZCO2(IIB:IIE,IJB:IJE),         ISHAPE_1)
 ZP_SNOW(:)        = RESHAPE(ZSNOW(IIB:IIE,IJB:IJE),        ISHAPE_1)
 ZP_RAIN(:)        = RESHAPE(ZRAIN(IIB:IIE,IJB:IJE),        ISHAPE_1)
 ZP_ZREF(:)        = RESHAPE(ZZREF(IIB:IIE,IJB:IJE),        ISHAPE_1)
+ZP_ZWS(:)         = RESHAPE(XZWS(IIB:IIE,IJB:IJE),         ISHAPE_1)
 
 DO JLAYER=1,NSV
   ZP_SV(:,JLAYER) = RESHAPE(XSVT(IIB:IIE,IJB:IJE,IKB,JLAYER), ISHAPE_1)
@@ -961,6 +969,7 @@ IF (LDIAG_IN_RUN) THEN
   XCURRENT_HU2M    (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_HU2M(:),   ISHAPE_2)
   XCURRENT_ZON10M  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_ZON10M(:), ISHAPE_2)
   XCURRENT_MER10M  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_MER10M(:), ISHAPE_2)
+  XCURRENT_ZWS  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_ZWS(:), ISHAPE_2)
 ENDIF
 !
 DO JLAYER=1,SIZE(PDIR_ALB,3)
@@ -987,6 +996,7 @@ DEALLOCATE(ZP_DIR_SW  )
 DEALLOCATE(ZP_SCA_SW  )
 DEALLOCATE(ZP_PS      )
 DEALLOCATE(ZP_PA      )
+DEALLOCATE(ZP_ZWS     )
 
 DEALLOCATE(ZP_SFTQ    )
 DEALLOCATE(ZP_SFTH    )
diff --git a/src/MNH/ice4_rainfr_vert.f90 b/src/MNH/ice4_rainfr_vert.f90
index 0448e36b0a80751f626dd3d903225c88d4788a7b..a048fc341249d8ccc9aa2f4ac580549d2614af2f 100644
--- a/src/MNH/ice4_rainfr_vert.f90
+++ b/src/MNH/ice4_rainfr_vert.f90
@@ -1,13 +1,13 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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.
 MODULE MODI_ICE4_RAINFR_VERT
 INTERFACE
 SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PPRFR, PRR)
 IMPLICIT NONE
 INTEGER,                      INTENT(IN) :: KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
-REAL, DIMENSION(KIT,KJT,KKT), INTENT(OUT)    :: PPRFR !Precipitation fraction
+REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT) :: PPRFR !Precipitation fraction
 REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)    :: PRR !Rain field
 END SUBROUTINE ICE4_RAINFR_VERT
 END INTERFACE
@@ -25,6 +25,7 @@ SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PP
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 13/02/2019: bugfix: intent of PPRFR OUT->INOUT
 !
 !
 !*      0. DECLARATIONS
@@ -37,7 +38,7 @@ IMPLICIT NONE
 !*       0.1   Declarations of dummy arguments :
 !
 INTEGER,                      INTENT(IN) :: KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
-REAL, DIMENSION(KIT,KJT,KKT), INTENT(OUT)    :: PPRFR !Precipitation fraction
+REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT)    :: PPRFR !Precipitation fraction
 REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)    :: PRR !Rain field
 !
 !*       0.2  declaration of local variables
diff --git a/src/MNH/ice4_sedimentation_split.f90 b/src/MNH/ice4_sedimentation_split.f90
index 8efa25925f8341f4da81c555c5219a903385515a..f42739740b6dab06b0fc22996f7754cace50a0a0 100644
--- a/src/MNH/ice4_sedimentation_split.f90
+++ b/src/MNH/ice4_sedimentation_split.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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.
 MODULE MODI_ICE4_SEDIMENTATION_SPLIT
 INTERFACE
@@ -34,8 +34,8 @@ REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT)           :: PRSS    ! Snow/aggregat
 REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)              :: PRST    ! Snow/aggregate m.r. at t
 REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT)           :: PRGS    ! Graupel m.r. source
 REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)              :: PRGT    ! Graupel/hail m.r. at t
-REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINPRC  ! Cloud instant precip
-REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINDEP  ! Cloud instant deposition
+REAL, DIMENSION(:,:),         INTENT(OUT)             :: PINPRC  ! Cloud instant precip
+REAL, DIMENSION(:,:),         INTENT(OUT)             :: PINDEP  ! Cloud instant deposition
 REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINPRR  ! Rain instant precip
 REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINPRI  ! Pristine ice instant precip
 REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINPRS  ! Snow instant precip
@@ -69,6 +69,7 @@ SUBROUTINE ICE4_SEDIMENTATION_SPLIT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 11/02/2019: dimensions of PINPRC and PINDEP not necessarily KIT,KJT
 !
 !
 !*      0. DECLARATIONS
@@ -107,8 +108,8 @@ REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT)           :: PRSS    ! Snow/aggregat
 REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)              :: PRST    ! Snow/aggregate m.r. at t
 REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT)           :: PRGS    ! Graupel m.r. source
 REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)              :: PRGT    ! Graupel/hail m.r. at t
-REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINPRC  ! Cloud instant precip
-REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINDEP  ! Cloud instant deposition
+REAL, DIMENSION(:,:),         INTENT(OUT)             :: PINPRC  ! Cloud instant precip
+REAL, DIMENSION(:,:),         INTENT(OUT)             :: PINDEP  ! Cloud instant deposition
 REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINPRR  ! Rain instant precip
 REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINPRI  ! Pristine ice instant precip
 REAL, DIMENSION(KIT,KJT),     INTENT(OUT)             :: PINPRS  ! Snow instant precip
diff --git a/src/MNH/ini_cpl.f90 b/src/MNH/ini_cpl.f90
index c7229f794f575e5cfdd0a775b59ed52d00a94ca4..b1ef0fa5227f135a57e4ecc88faa0b7b6d47a1f5 100644
--- a/src/MNH/ini_cpl.f90
+++ b/src/MNH/ini_cpl.f90
@@ -17,10 +17,10 @@ INTERFACE
             KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,               &
             KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
-            PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PDRYMASST,                       &
+            PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,PDRYMASST,               &
             PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
             PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM,            &
-            PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PDRYMASSS,                       &
+            PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PLSZWSS,PDRYMASSS,               &
             PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,            &
             PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS             )
 !
@@ -53,6 +53,7 @@ INTEGER, INTENT(IN):: KSIZELBYTKE_ll                ! for TKE
 INTEGER, INTENT(IN) :: KSIZELBYR_ll,KSIZELBYSV_ll    ! for Rx and SV 
 !
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLSUM,PLSVM,PLSWM ! Large Scale 
+REAL, DIMENSION(:,:),    INTENT(IN)  :: PLSZWSM           ! Significant wave height
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLSTHM, PLSRVM    ! fields at t-dt
 REAL,                    INTENT(IN)  :: PDRYMASST         ! Mass of dry air Md
 ! larger scale fields for Lateral Boundary condition
@@ -68,6 +69,7 @@ REAL, DIMENSION(:,:,:,:),        INTENT(IN) :: PLBYRM  ,PLBYSVM  ! in x and y-di
 REAL, DIMENSION(:,:,:),  INTENT(OUT) :: PLSUS,PLSVS,PLSWS  ! Large Scale 
 REAL, DIMENSION(:,:,:),  INTENT(OUT) :: PLSTHS,PLSRVS      ! source terms
 REAL,                    INTENT(OUT) :: PDRYMASSS          !  Md source 
+REAL, DIMENSION(:,:),    INTENT(OUT) :: PLSZWSS            ! Significant wave height
 ! larger scale fields sources for Lateral Boundary condition
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBXUS,PLBXVS,PLBXWS ! Wind
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBXTHS              ! Mass
@@ -94,10 +96,10 @@ END MODULE MODI_INI_CPL
              KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,              &
             KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &   
-            PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PDRYMASST,                       &
+            PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,PDRYMASST,               &
             PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
             PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM,            &
-            PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PDRYMASSS,                       &
+            PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PLSZWSS,PDRYMASSS,               &
             PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,            &
             PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS             )
 !     #####################################################################
@@ -210,6 +212,7 @@ END MODULE MODI_INI_CPL
 !!                     (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
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -275,6 +278,7 @@ INTEGER, INTENT(IN) :: KSIZELBYR_ll,KSIZELBYSV_ll    ! for Rx and SV
 !
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLSUM,PLSVM,PLSWM ! Large Scale 
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLSTHM, PLSRVM    ! fields at t-dt
+REAL, DIMENSION(:,:),    INTENT(IN)  :: PLSZWSM           ! Significant wave height at t-dt
 REAL,                    INTENT(IN)  :: PDRYMASST         ! Mass of dry air Md
 ! larger scale fields for Lateral Boundary condition
 REAL, DIMENSION(:,:,:),          INTENT(IN) :: PLBXUM,PLBXVM,PLBXWM ! Wind
@@ -288,6 +292,7 @@ REAL, DIMENSION(:,:,:,:),        INTENT(IN) :: PLBYRM  ,PLBYSVM  ! in x and y-di
 !
 REAL, DIMENSION(:,:,:),  INTENT(OUT) :: PLSUS,PLSVS,PLSWS  ! Large Scale 
 REAL, DIMENSION(:,:,:),  INTENT(OUT) :: PLSTHS,PLSRVS      ! source terms
+REAL, DIMENSION(:,:),    INTENT(OUT) :: PLSZWSS           ! Significant wave height
 REAL,                    INTENT(OUT) :: PDRYMASSS          !  Md source 
 ! larger scale fields sources for Lateral Boundary condition
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBXUS,PLBXVS,PLBXWS ! Wind
@@ -467,7 +472,8 @@ GLSOURCE=.TRUE.
 ZLENG = (NCPL_TIMES(NCPL_CUR,1)-2) * PTSTEP
 !
 CALL INI_LS(TCPLFILE(NCPL_CUR)%TZFILE,HGETRVM,GLSOURCE,PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS, &
-             PDRYMASSS,PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PDRYMASST,ZLENG,OSTEADY_DMASS)
+            PLSZWSS,PDRYMASSS,PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,PDRYMASST,ZLENG,  &
+            OSTEADY_DMASS)
 !
 !
 !*      3.2   Initialize  the LB sources
diff --git a/src/MNH/ini_diag_in_run.f90 b/src/MNH/ini_diag_in_run.f90
index 2df092c1c83f13ae1e26a1cc14c9d704603156e5..d44800cdcd9db3fe83ddd67555e70ae68b186440 100644
--- a/src/MNH/ini_diag_in_run.f90
+++ b/src/MNH/ini_diag_in_run.f90
@@ -63,6 +63,7 @@ END MODULE MODI_INI_DIAG_IN_RUN
 !!    -------------
 !!     Original 11/2003
 !!                   02/2018 Q.Libois ECRAD
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -113,6 +114,8 @@ IF (LDIAG_IN_RUN) THEN
   ALLOCATE(XCURRENT_DSTAOD(KIU,KJU))! dust aerosol optical depth
   ALLOCATE(XCURRENT_SFCO2 (KIU,KJU))! CO2 Surface flux
   ALLOCATE(XCURRENT_TKE_DISS(KIU,KJU,KKU)) ! Tke dissipation rate
+  ALLOCATE(XCURRENT_SLTAOD(KIU,KJU))! Salt aerosol optical depth
+  ALLOCATE(XCURRENT_ZWS(KIU,KJU)) ! Significant height of waves
   !
   !
   XCURRENT_RN    = XUNDEF
@@ -134,6 +137,8 @@ IF (LDIAG_IN_RUN) THEN
   XCURRENT_DSTAOD= XUNDEF
   XCURRENT_SFCO2 = XUNDEF
   XCURRENT_TKE_DISS = XUNDEF
+  XCURRENT_SLTAOD= XUNDEF
+  XCURRENT_ZWS = XUNDEF
 ELSE
   ALLOCATE(XCURRENT_RN    (0,0))! net radiation
   ALLOCATE(XCURRENT_H     (0,0))! sensible heat flux
@@ -154,6 +159,8 @@ ELSE
   ALLOCATE(XCURRENT_DSTAOD(0,0))! dust aerosol optical depth
   ALLOCATE(XCURRENT_SFCO2 (0,0))! CO2 Surface flux
   ALLOCATE(XCURRENT_TKE_DISS(0,0,0)) ! Tke dissipation rate
+  ALLOCATE(XCURRENT_SLTAOD(0,0))! Salt aerosol optical depth
+  ALLOCATE(XCURRENT_ZWS(0,0))! Significant height of waves
 END IF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/ini_lb.f90 b/src/MNH/ini_lb.f90
index 046270d70470fd32c4ec283aa52b9a171dbc65aa..79fff80584ca80575e8a9298452aac79620a63a0 100644
--- a/src/MNH/ini_lb.f90
+++ b/src/MNH/ini_lb.f90
@@ -132,7 +132,9 @@ SUBROUTINE INI_LB(TPINIFILE,OLSOURCE,KSV,                          &
 !!      J.-P. Pinty     09/02/16    Add LIMA that is LBC for CCN and IFN
 !!      M.Leriche       09/02/16    Treat gas and aq. chemicals separately
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 13/02/2019: initialize PLBXSVM and PLBYSVM in all cases
 !  P. Wautelet 14/02/2019: move UPCASE function to tools.f90
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -471,7 +473,10 @@ END IF
 !
 !*        2.6    LB-Scalar Variables
 !
-IF (KSV > 0) THEN 
+PLBXSVM(:,:,:,:) = 0.
+PLBYSVM(:,:,:,:) = 0.
+!
+IF (KSV > 0) THEN
   IF (ANY(HGETSVM(1:KSV)=='READ')) THEN
     TZFIELD%CMNHNAME   = 'HORELAX_SV'
     TZFIELD%CSTDNAME   = ''
@@ -898,7 +903,7 @@ END IF
 ! Chemical aqueous phase scalar variables
 IF (NSV_CHACEND>=NSV_CHACBEG) THEN
   TZFIELD%CSTDNAME   = ''
-  TZFIELD%CUNITS     = 'kg kg-1'
+  TZFIELD%CUNITS     = 'ppp'
   TZFIELD%CDIR       = ''
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPEREAL
@@ -954,7 +959,7 @@ END IF
 ! Chemical ice phase scalar variables
 IF (NSV_CHICEND>=NSV_CHICBEG) THEN
   TZFIELD%CSTDNAME   = ''
-  TZFIELD%CUNITS     = 'kg kg-1'
+  TZFIELD%CUNITS     = 'ppp'
   TZFIELD%CDIR       = ''
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPEREAL
@@ -1010,7 +1015,7 @@ END IF
 ! Orilam aerosol scalar variables
 IF (NSV_AEREND>=NSV_AERBEG) THEN
   TZFIELD%CSTDNAME   = ''
-  TZFIELD%CUNITS     = 'kg kg-1'
+  TZFIELD%CUNITS     = 'ppp'
   TZFIELD%CDIR       = ''
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPEREAL
@@ -1066,7 +1071,7 @@ END IF
 ! Orilam aerosols moist scalar variables
 IF (NSV_AERDEPEND>=NSV_AERDEPBEG) THEN
   TZFIELD%CSTDNAME   = ''
-  TZFIELD%CUNITS     = 'kg kg-1'
+  TZFIELD%CUNITS     = 'ppp'
   TZFIELD%CDIR       = ''
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPEREAL
@@ -1122,7 +1127,7 @@ END IF
 ! Dust scalar variables
 IF (NSV_DSTEND>=NSV_DSTBEG) THEN
   TZFIELD%CSTDNAME   = ''
-  TZFIELD%CUNITS     = 'kg kg-1'
+  TZFIELD%CUNITS     = 'ppp'
   TZFIELD%CDIR       = ''
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPEREAL
@@ -1178,7 +1183,7 @@ END IF
 !
 IF (NSV_DSTDEPEND>=NSV_DSTDEPBEG) THEN
   TZFIELD%CSTDNAME   = ''
-  TZFIELD%CUNITS     = 'kg kg-1'
+  TZFIELD%CUNITS     = 'ppp'
   TZFIELD%CDIR       = ''
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPEREAL
@@ -1235,7 +1240,7 @@ END IF
 ! Sea salt scalar variables
 IF (NSV_SLTEND>=NSV_SLTBEG) THEN
   TZFIELD%CSTDNAME   = ''
-  TZFIELD%CUNITS     = 'kg kg-1'
+  TZFIELD%CUNITS     = 'ppp'
   TZFIELD%CDIR       = ''
   TZFIELD%NGRID      = 1
   TZFIELD%NTYPE      = TYPEREAL
diff --git a/src/MNH/ini_lesn.f90 b/src/MNH/ini_lesn.f90
index 48e83c6fbdcd93516108490a50847977a4a0a0bf..b2dd7e4a18cee347d210e043c7dbc2e4d92ea6a5 100644
--- a/src/MNH/ini_lesn.f90
+++ b/src/MNH/ini_lesn.f90
@@ -33,7 +33,7 @@
 !!                       06/11/02 (V. Masson) add LES budgets
 !!                    10/2016 (C.Lac) Add droplet deposition
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!!                     02/2019 (C. Lac) Add rain fraction as a LES diagnostic
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -537,8 +537,10 @@ ELSE
 END IF
 IF (LUSERR ) THEN
   ALLOCATE(XLES_MEAN_Rr (NLES_K,NLES_TIMES,NLES_MASKS))
+  ALLOCATE(XLES_MEAN_RF (NLES_K,NLES_TIMES,NLES_MASKS))
 ELSE
   ALLOCATE(XLES_MEAN_Rr (0,0,0))
+  ALLOCATE(XLES_MEAN_RF (0,0,0))
 END IF
 IF (LUSERI ) THEN
   ALLOCATE(XLES_MEAN_Ri (NLES_K,NLES_TIMES,NLES_MASKS))
@@ -644,6 +646,7 @@ IF (LUSERC ) XLES_MEAN_KHt = XUNDEF
 IF (LUSERC ) XLES_MEAN_Rt  = XUNDEF
 IF (LUSERC ) XLES_MEAN_Rc  = XUNDEF
 IF (LUSERC ) XLES_MEAN_Cf  = XUNDEF
+IF (LUSERC ) XLES_MEAN_RF  = XUNDEF
 IF (LUSERC ) XLES_MEAN_INDCf  = XUNDEF
 IF (LUSERC ) XLES_MEAN_INDCf2 = XUNDEF
 IF (LUSERR ) XLES_MEAN_Rr  = XUNDEF
diff --git a/src/MNH/ini_ls.f90 b/src/MNH/ini_ls.f90
index 4fe067049ca0acaa938a0c3b455ae5a0a75341b0..7bb1f4f0b61e67a26d4bba0a149c284253fbcb98 100644
--- a/src/MNH/ini_ls.f90
+++ b/src/MNH/ini_ls.f90
@@ -10,9 +10,9 @@
 INTERFACE 
 !
       SUBROUTINE INI_LS(TPINIFILE,HGETRVM,OLSOURCE,              &
-           PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                      &
+           PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,              &
            PDRYMASSS,                                            &
-           PLSUMM,PLSVMM,PLSWMM,PLSTHMM,PLSRVMM,PDRYMASST,PLENG, &
+           PLSUMM,PLSVMM,PLSWMM,PLSTHMM,PLSRVMM,PLSZWSMM, PDRYMASST,PLENG, &
            OSTEADY_DMASS)
 !
 USE MODD_IO, ONLY: TFILEDATA
@@ -23,11 +23,13 @@ LOGICAL,                INTENT(IN)    :: OLSOURCE  ! Switch for the source term
 ! Larger Scale fields (source if OLSOURCE=T,  fields at time t-dt if OLSOURCE=F) :
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLSUM,PLSVM,PLSWM  ! Wind
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLSTHM,PLSRVM      ! Mass
+REAL, DIMENSION(:,:),            INTENT(INOUT) :: PLSZWSM                ! sea wave
 !if OLSOURCE=T : 
 REAL,                   INTENT(INOUT), OPTIONAL :: PDRYMASSS             ! Md source
 !Large Scale  fields at time t-dt (if OLSOURCE=T) : 
 REAL, DIMENSION(:,:,:), INTENT(IN),    OPTIONAL :: PLSUMM,PLSVMM,PLSWMM  ! Wind
 REAL, DIMENSION(:,:,:), INTENT(IN),    OPTIONAL :: PLSTHMM,PLSRVMM       ! Mass
+REAL, DIMENSION(:,:),   INTENT(IN),    OPTIONAL  :: PLSZWSMM             ! Sea wave
 REAL,                   INTENT(IN),    OPTIONAL :: PDRYMASST             ! Md(t)
 REAL,                   INTENT(IN),    OPTIONAL :: PLENG                 ! Interpolation length
 LOGICAL,                INTENT(IN),    OPTIONAL :: OSTEADY_DMASS         ! Md evolution logical switch
@@ -41,9 +43,9 @@ END MODULE MODI_INI_LS
 !
 !     ############################################################
       SUBROUTINE INI_LS(TPINIFILE,HGETRVM,OLSOURCE,              &
-           PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                      &
+           PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,              &
            PDRYMASSS,                                            &
-           PLSUMM,PLSVMM,PLSWMM,PLSTHMM,PLSRVMM,PDRYMASST,PLENG, &
+           PLSUMM,PLSVMM,PLSWMM,PLSTHMM,PLSRVMM,PLSZWSMM,PDRYMASST,PLENG, &
            OSTEADY_DMASS)
 !     ############################################################
 !
@@ -80,6 +82,7 @@ END MODULE MODI_INI_LS
 !!    -------------
 !!      Original        22/09/98
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !! 
 !-------------------------------------------------------------------------------
@@ -104,11 +107,13 @@ LOGICAL,                INTENT(IN)    :: OLSOURCE  ! Switch for the source term
 ! Larger Scale fields (source if OLSOURCE=T,  fields at time t-dt if OLSOURCE=F) :
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLSUM,PLSVM,PLSWM  ! Wind
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLSTHM,PLSRVM      ! Mass
+REAL, DIMENSION(:,:),            INTENT(INOUT) :: PLSZWSM                ! sea wave
 !if OLSOURCE=T : 
 REAL,                   INTENT(INOUT), OPTIONAL :: PDRYMASSS             ! Md source
 !Large Scale  fields at time t-dt (if OLSOURCE=T) : 
 REAL, DIMENSION(:,:,:), INTENT(IN),    OPTIONAL :: PLSUMM,PLSVMM,PLSWMM  ! Wind
 REAL, DIMENSION(:,:,:), INTENT(IN),    OPTIONAL :: PLSTHMM,PLSRVMM       ! Mass
+REAL, DIMENSION(:,:),   INTENT(IN),    OPTIONAL :: PLSZWSMM              ! Sea wave
 REAL,                   INTENT(IN),    OPTIONAL :: PDRYMASST             ! Md(t)
 REAL,                   INTENT(IN),    OPTIONAL :: PLENG                 ! Interpolation length
 LOGICAL,                INTENT(IN),    OPTIONAL :: OSTEADY_DMASS         ! Md evolution logical switch
@@ -137,11 +142,15 @@ CALL IO_Field_read(TPINIFILE,'LSUM', PLSUM)
 CALL IO_Field_read(TPINIFILE,'LSVM', PLSVM)
 CALL IO_Field_read(TPINIFILE,'LSWM', PLSWM)
 CALL IO_Field_read(TPINIFILE,'LSTHM',PLSTHM)
+CALL IO_Field_read(TPINIFILE,'ZWS',  PLSZWSM)
 !
 IF (HGETRVM == 'READ') THEN         ! LS-vapor                                    
   CALL IO_Field_read(TPINIFILE,'LSRVM',PLSRVM)
 ENDIF
 !
+IF (PRESENT(PLSZWSMM)) THEN
+    PLSZWSM(:,:)= (PLSZWSM(:,:) - PLSZWSMM(:,:)) / PLENG
+END IF
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 20ad8d343713b726b6d5d92de0938dd592b120e7..4bcf01d197d22fc7a15dbe676ee94be085c4f0e7 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -275,10 +275,14 @@ END MODULE MODI_INI_MODEL_n
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!                   V. Vionnet : 18/07/2017 : add blowing snow scheme 
 !!                   01/18 J.Colin Add DRAG 
-!!      P.Wautelet   29/01/2019: bug: add missing zero-size allocations
+!  P. Wautelet 29/01/2019: bug: add missing zero-size allocations
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
+!  P. Wautelet 13/02/2019: initialize XALBUV even if no radiation (needed in CH_INTERP_JVALUES)
+!  P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments of READ_FIELD
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
 !  P. Wautelet 14/02/2019: remove HINIFILE dummy argument from INI_RADIATIONS_ECMWF/ECRAD
+!!                   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
 !---------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -459,6 +463,8 @@ TYPE(TFILEDATA),  INTENT(IN)   :: TPINIFILE ! Initial file
 !
 !*       0.2   declarations of local variables
 !
+REAL, PARAMETER :: NALBUV_DEFAULT = 0.01 ! Arbitrary low value for XALBUV
+!
 INTEGER             :: JSV     ! Loop index
 INTEGER             :: IRESP   ! Return code of FM routines
 INTEGER             :: ILUOUT  ! Logical unit number of output-listing
@@ -526,6 +532,7 @@ REAL, DIMENSION(:,:,:,:), POINTER :: DPTR_XLBXRM,DPTR_XLBYRM
 REAL, DIMENSION(:,:,:),   POINTER ::  DPTR_XZZ
 REAL, DIMENSION(:,:,:), POINTER ::   DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM
 REAL, DIMENSION(:,:,:), POINTER ::   DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS
+REAL, DIMENSION(:,:),   POINTER ::   DPTR_XLSZWSM,DPTR_XLSZWSS
 !
 INTEGER                         ::  IIB,IJB,IIE,IJE,IDIMX,IDIMY,IMI
 !
@@ -830,13 +837,16 @@ END IF
 !
 IF (NRR>1) THEN
   ALLOCATE(XCLDFR(IIU,IJU,IKU))
+  ALLOCATE(XRAINFR(IIU,IJU,IKU))
 ELSE
   ALLOCATE(XCLDFR(0,0,0))
+  ALLOCATE(XRAINFR(0,0,0))
 END IF
 !
 ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) ;     XSVT  = 0.
 ALLOCATE(XRSVS(IIU,IJU,IKU,NSV));     XRSVS = 0.
 ALLOCATE(XRSVS_CLD(IIU,IJU,IKU,NSV)); XRSVS_CLD = 0.0
+ALLOCATE(XZWS(IIU,IJU)) ;     XZWS  = -1.
 !
 IF (LPASPOL) THEN
   ALLOCATE( XATC(IIU,IJU,IKU,NSV_PP) )
@@ -979,6 +989,7 @@ IF ( NRR > 0 ) THEN
 ELSE
   ALLOCATE(XLSRVM(0,0,0))
 END IF
+ALLOCATE(XLSZWSM(IIU,IJU)) ; XLSZWSM = -1.
 !
 !  lbc part
 !
@@ -1257,6 +1268,7 @@ IF( .NOT. LSTEADYLS )  THEN
   ALLOCATE(XLSWS(SIZE(XLSWM,1),SIZE(XLSWM,2),SIZE(XLSWM,3)))
   ALLOCATE(XLSTHS(SIZE(XLSTHM,1),SIZE(XLSTHM,2),SIZE(XLSTHM,3)))
   ALLOCATE(XLSRVS(SIZE(XLSRVM,1),SIZE(XLSRVM,2),SIZE(XLSRVM,3)))
+  ALLOCATE(XLSZWSS(SIZE(XLSZWSM,1),SIZE(XLSZWSM,2)))
 !
 ELSE
 !
@@ -1265,6 +1277,7 @@ ELSE
   ALLOCATE(XLSWS(0,0,0))
   ALLOCATE(XLSTHS(0,0,0))
   ALLOCATE(XLSRVS(0,0,0))
+  ALLOCATE(XLSZWSS(0,0))
 !
 END IF
 !  allocation of the LB fields for horizontal relaxation and Lateral Boundaries
@@ -1324,6 +1337,7 @@ ALLOCATE(XLW_BANDS (NLWB_MNH))
 ALLOCATE(XZENITH   (IIU,IJU))
 ALLOCATE(XAZIM     (IIU,IJU))
 ALLOCATE(XALBUV    (IIU,IJU))
+XALBUV(:,:) = NALBUV_DEFAULT !Set to an arbitrary low value (XALBUV is needed in CH_INTERP_JVALUES even if no radiation)
 ALLOCATE(XDIRSRFSWD(IIU,IJU,NSWB_MNH))
 ALLOCATE(XSCAFLASWD(IIU,IJU,NSWB_MNH))
 ALLOCATE(XFLALWD   (IIU,IJU))
@@ -1742,18 +1756,18 @@ IF (CCLOUD=='LIMA') CALL INIT_AEROSOL_PROPERTIES
 !              --------------------------------
 !
 CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-before read_field::XUT",PRECISION)
-CALL READ_FIELD(TPINIFILE,IIU,IJU,IKU,XTSTEP,                                 &
-                CGETTKET,CGETRVT,CGETRCT,CGETRRT,CGETRIT,CGETCIT,             &
+CALL READ_FIELD(TPINIFILE,IIU,IJU,IKU,                                        &
+                CGETTKET,CGETRVT,CGETRCT,CGETRRT,CGETRIT,CGETCIT,CGETZWS,     &
                 CGETRST,CGETRGT,CGETRHT,CGETSVT,CGETSRCT,CGETSIGS,CGETCLDFR,  &
                 CGETBL_DEPTH,CGETSBL_DEPTH,CGETPHC,CGETPHR,CUVW_ADV_SCHEME,   &
                 CTEMP_SCHEME,NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,&
                 NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                &
                 NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,        &
                 XUM,XVM,XWM,XDUM,XDVM,XDWM,                                   &
-                XUT,XVT,XWT,XTHT,XPABST,XPABSM,XTKET,XRTKEMS,                 &
-                XRT,XSVT,XCIT,XDRYMASST,                                      &
+                XUT,XVT,XWT,XTHT,XPABST,XTKET,XRTKEMS,                        &
+                XRT,XSVT,XZWS,XCIT,XDRYMASST,                                 &
                 XSIGS,XSRCT,XCLDFR,XBL_DEPTH,XSBL_DEPTH,XWTHVMF,XPHC,XPHR,    &
-                XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,                              &
+                XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XLSZWSM,                      &
                 XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,                        &
                 XLBXRM,XLBXSVM,                                               &
                 XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,                        &
@@ -1856,10 +1870,10 @@ IF ((KMI==1).AND.(.NOT. LSTEADYLS)) THEN
                NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,             &
                NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                 &
                NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,         &
-               XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XDRYMASST,                     &
+               XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XLSZWSM,XDRYMASST,             &
                XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,          &
                XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,          &
-               XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XDRYMASSS,                     &
+               XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XLSZWSS,XDRYMASSS,             &
                XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,          &
                XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS           )
   CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-after ini_cpl::XUT",PRECISION)
@@ -1946,11 +1960,13 @@ IF ( KMI > 1) THEN
   DPTR_XLSWM=>XLSWM
   DPTR_XLSTHM=>XLSTHM
   DPTR_XLSRVM=>XLSRVM
+  DPTR_XLSZWSM=>XLSZWSM
   DPTR_XLSUS=>XLSUS
   DPTR_XLSVS=>XLSVS
   DPTR_XLSWS=>XLSWS
   DPTR_XLSTHS=>XLSTHS
   DPTR_XLSRVS=>XLSRVS
+  DPTR_XLSZWSS=>XLSZWSS
   !
   DPTR_NKLIN_LBXU=>NKLIN_LBXU
   DPTR_XCOEFLIN_LBXU=>XCOEFLIN_LBXU
@@ -1975,8 +1991,8 @@ IF ( KMI > 1) THEN
        NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),                  &
        DPTR_CLBCX,DPTR_CLBCY,DPTR_XZZ,DPTR_XZHAT,                                &
        LSLEVE,XLEN1,XLEN2,                                   &
-       DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM,                      &
-       DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS,                      &
+       DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM,DPTR_XLSZWSM,         &
+       DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS,DPTR_XLSZWSS,                      &       
        DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,    &
        DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,    &
        DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,    &
diff --git a/src/MNH/ini_spawn_lsn.f90 b/src/MNH/ini_spawn_lsn.f90
index 8c580978621c68922036a3f52244a5b3f40c280f..f33f727bbc247a84af9b5ae3934f0e8de1157b72 100644
--- a/src/MNH/ini_spawn_lsn.f90
+++ b/src/MNH/ini_spawn_lsn.f90
@@ -19,8 +19,8 @@ INTERFACE
                     KDXRATIO,KDYRATIO,              &
                     HLBCX,HLBCY,PZZ,PZHAT,                                &
                     OSLEVE,PLEN1,PLEN2,                                   &
-                      PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                    &
-                      PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,                    &
+                      PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,            &
+                      PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PLSZWSS,            &
                       KKLIN_LBXU,PCOEFLIN_LBXU,KKLIN_LBYU,PCOEFLIN_LBYU,  &
                       KKLIN_LBXV,PCOEFLIN_LBXV,KKLIN_LBYV,PCOEFLIN_LBYV,  &
                       KKLIN_LBXW,PCOEFLIN_LBXW,KKLIN_LBYW,PCOEFLIN_LBYW,  &
@@ -48,8 +48,10 @@ CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
 !
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSUM,PLSVM,PLSWM ! Large Scale fields
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSTHM, PLSRVM    ! at t-dt
+REAL, DIMENSION(:,:),   INTENT(  OUT) :: PLSZWSM    ! at t-dt
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSUS,PLSVS,PLSWS ! Large Scale source
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSTHS, PLSRVS    ! terms
+REAL, DIMENSION(:,:),   INTENT(  OUT) :: PLSZWSS    ! source terms
 !  coefficients for the vertical interpolation of the LB fields
 INTEGER, DIMENSION(:,:,:), INTENT(  OUT) :: KKLIN_LBXU,KKLIN_LBYU
 REAL,    DIMENSION(:,:,:), INTENT(  OUT) :: PCOEFLIN_LBXU,PCOEFLIN_LBYU
@@ -73,8 +75,8 @@ END MODULE MODI_INI_SPAWN_LS_n
                     KDXRATIO,KDYRATIO,              &
                     HLBCX,HLBCY,PZZ,PZHAT,                                &
                     OSLEVE,PLEN1,PLEN2,                                   &
-                      PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                    &
-                      PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,                    &
+                      PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,            &
+                      PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PLSZWSS,            &
                       KKLIN_LBXU,PCOEFLIN_LBXU,KKLIN_LBYU,PCOEFLIN_LBYU,  &
                       KKLIN_LBXV,PCOEFLIN_LBXV,KKLIN_LBYV,PCOEFLIN_LBYV,  &
                       KKLIN_LBXW,PCOEFLIN_LBXW,KKLIN_LBYW,PCOEFLIN_LBYW,  &
@@ -140,6 +142,7 @@ END MODULE MODI_INI_SPAWN_LS_n
 !!                                          coeff for U
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!      J.Escobar : 18/12/2015 : Correction of bug in bound in // for NHALO <>1 
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
@@ -190,6 +193,8 @@ CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
 !
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSUM,PLSVM,PLSWM ! Large Scale fields
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSTHM, PLSRVM    ! at t-dt
+REAL, DIMENSION(:,:),   INTENT(  OUT) :: PLSZWSM     ! LS at t-dt
+REAL, DIMENSION(:,:),   INTENT(  OUT) :: PLSZWSS    ! source terms
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSUS,PLSVS,PLSWS ! Large Scale source
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSTHS, PLSRVS    ! terms
 !  coefficients for the vertical interpolation of the LB fields
@@ -231,6 +236,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTLSUM, ZTLSVM, ZTLSWM, ZTLSTHM, ZTLSRVM
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTLSUS, ZTLSVS, ZTLSWS, ZTLSTHS, ZTLSRVS
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTZS,ZZS 
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTZSMT,ZZSMT 
+REAL, DIMENSION(:,:),   ALLOCATABLE :: ZTZWS,ZTZWSS
 !
 !-------------------------------------------------------------------------------
 !
@@ -260,6 +266,7 @@ ALLOCATE(ZTLSUM(IDIMX,IDIMY,SIZE(PLSUM,3)))
 ALLOCATE(ZTLSVM(IDIMX,IDIMY,SIZE(PLSVM,3)))
 ALLOCATE(ZTLSWM(IDIMX,IDIMY,SIZE(PLSWM,3)))
 ALLOCATE(ZTLSTHM(IDIMX,IDIMY,SIZE(PLSTHM,3)))
+IF(SIZE(PLSZWSM) /= 0) ALLOCATE(ZTZWS(IDIMX,IDIMY))
 IF(SIZE(PLSRVM) /= 0) ALLOCATE(ZTLSRVM(IDIMX,IDIMY,SIZE(PLSRVM,3)))
 !
 IF(GVERT_INTERP) THEN
@@ -277,11 +284,14 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   ALLOCATE(ZTLSWS(IDIMX,IDIMY,SIZE(PLSWS,3)))
   ALLOCATE(ZTLSTHS(IDIMX,IDIMY,SIZE(PLSTHS,3)))
 ENDIF
+IF ( SIZE(PLSZWSS) /= 0 ) ALLOCATE(ZTZWSS(IDIMX,IDIMY))
 IF ( SIZE(PLSRVS) /= 0 ) ALLOCATE(ZTLSRVS(IDIMX,IDIMY,SIZE(PLSRVS,3)))
 !
 !         1.3  Specify the ls "source" fields and receiver fields
 !
 CALL SET_LSFIELD_1WAY_ll(XLSUM, ZTLSUM, KMI)
+IF ( SIZE(PLSZWSM,1) /= 0 ) &
+  CALL SET_LSFIELD_1WAY_ll(XLSZWSM, ZTZWS, KMI)
 CALL SET_LSFIELD_1WAY_ll(XLSVM, ZTLSVM, KMI)
 CALL SET_LSFIELD_1WAY_ll(XLSWM, ZTLSWM, KMI)
 CALL SET_LSFIELD_1WAY_ll(XLSTHM, ZTLSTHM, KMI)
@@ -295,6 +305,8 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   CALL SET_LSFIELD_1WAY_ll(XLSTHS, ZTLSTHS, KMI)
   IF ( SIZE(PLSRVM,1) /= 0 ) &
     CALL SET_LSFIELD_1WAY_ll(XLSRVS, ZTLSRVS, KMI)
+  IF ( SIZE(PLSZWSM,1) /= 0 ) &
+    CALL SET_LSFIELD_1WAY_ll(XLSZWSS, ZTZWSS, KMI)
 ENDIF
 !
 IF ( GVERT_INTERP ) THEN
@@ -454,6 +466,13 @@ IF ( SIZE(PLSRVM,1) /= 0 ) THEN
                  HLBCX,HLBCY,ZTLSRVM,PLSRVM(IIB:IIE,IJB:IJE,:))
 END IF
 !
+IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+  CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
+                 PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
+                 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,         &
+                 HLBCX,HLBCY,ZTZWS,PLSZWSM(IIB:IIE,IJB:IJE))
+END IF
+
 IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   !
   CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
@@ -469,6 +488,13 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   !
   END IF
   !
+  IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+    CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
+                   PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
+                   2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,         &
+                   HLBCX,HLBCY,ZTZWS+ZTIME*ZTZWSS,PLSZWSS(IIB:IIE,IJB:IJE))
+  !
+  END IF
 END IF
 !
 !*      3.2  Vertical linear interpolation on the mass grid
@@ -550,6 +576,9 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
     PLSRVS(:,:,:)  = (PLSRVS(:,:,:) - PLSRVM(:,:,:)) / ZTIME
   END IF
   !
+  IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+    PLSZWSS(:,:)  = (PLSZWSS(:,:) - PLSZWSM(:,:)) / ZTIME
+  END IF
 END IF
 !
 !------------------------------------------------------------------------------
@@ -749,12 +778,14 @@ END IF
 !
 DEALLOCATE(ZTLSUM,ZTLSVM,ZTLSWM,ZTLSTHM)
 IF(SIZE(PLSRVM) /= 0) DEALLOCATE(ZTLSRVM)
+IF(SIZE(PLSZWSM) /= 0) DEALLOCATE(ZTZWS)
 !
 IF(GVERT_INTERP) DEALLOCATE(ZTZS,ZZS)
 IF(GVERT_INTERP) DEALLOCATE(ZTZSMT,ZZSMT)
 !
 IF ( SIZE(PLSTHS,1) /= 0 ) DEALLOCATE(ZTLSUS,ZTLSVS,ZTLSWS,ZTLSTHS)
 IF ( SIZE(PLSRVS,1) /= 0 ) DEALLOCATE(ZTLSRVS)
+IF ( SIZE(PLSZWSS,1) /= 0 ) DEALLOCATE(ZTZWSS)
 !------------------------------------------------------------------------------
 NULLIFY(TZLSFIELD_ll)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSUM)
@@ -762,6 +793,7 @@ CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSVM)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSWM)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSTHM)
 IF(SIZE(PLSRVM) /= 0) CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSRVM)
+IF(SIZE(PLSZWSM) /= 0) CALL ADD2DFIELD_ll(TZLSFIELD_ll, PLSZWSM)
 IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSUS)
   CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSVS)
@@ -769,6 +801,7 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSTHS)
 ENDIF
 IF ( SIZE(PLSRVS,1) /= 0 ) CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSRVS)
+IF ( SIZE(PLSZWSS,1) /= 0 ) CALL ADD2DFIELD_ll(TZLSFIELD_ll, PLSZWSS)
 CALL UPDATE_HALO_ll(TZLSFIELD_ll,IINFO_ll)
 CALL CLEANLIST_ll(TZLSFIELD_ll)
 !
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index e18f019a1f64b2e42280264bbe36b91f2f479541..33de77351477b18db6ec1955f01b975d5d3ac7a2 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -33,8 +33,10 @@ END MODULE MODI_INI_SPECTRE_n
 !!      J.P Chaboureau       * L.A*
 !!      10/2016 (C.Lac) Cleaning of the modules
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 08/02/2019: allocate to zero-size non associated pointers
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
-!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!!
 !---------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -195,6 +197,7 @@ REAL, DIMENSION(:,:,:,:), POINTER :: DPTR_XLBXRM,DPTR_XLBYRM
 REAL, DIMENSION(:,:,:),   POINTER ::  DPTR_XZZ
 REAL, DIMENSION(:,:,:), POINTER ::   DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM
 REAL, DIMENSION(:,:,:), POINTER ::   DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS
+REAL, DIMENSION(:,:),   POINTER ::   DPTR_XLSZWSS,DPTR_XLSZWSM
 !
 !-------------------------------------------------------------------------------
 !
@@ -801,10 +804,10 @@ IF ((KMI==1).AND.(.NOT. LSTEADYLS)) THEN
                NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,             &
                NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                 &
                NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,         &
-               XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XDRYMASST,                     &
+               XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XLSZWSM,XDRYMASST,             &
                XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,          &
                XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,          &
-               XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XDRYMASSS,                     &
+               XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XLSZWSS,XDRYMASSS,             &
                XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,          &
                XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS           )
   END IF
@@ -838,11 +841,13 @@ IF ( KMI > 1) THEN
   DPTR_XLSWM=>XLSWM
   DPTR_XLSTHM=>XLSTHM
   DPTR_XLSRVM=>XLSRVM
+  DPTR_XLSZWSM=>XLSZWSM
   DPTR_XLSUS=>XLSUS
   DPTR_XLSVS=>XLSVS
   DPTR_XLSWS=>XLSWS
   DPTR_XLSTHS=>XLSTHS
   DPTR_XLSRVS=>XLSRVS
+  DPTR_XLSZWSS=>XLSZWSS
   !
   DPTR_NKLIN_LBXU=>NKLIN_LBXU
   DPTR_XCOEFLIN_LBXU=>XCOEFLIN_LBXU
@@ -867,8 +872,8 @@ IF ( KMI > 1) THEN
        NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),                  &
        DPTR_CLBCX,DPTR_CLBCY,DPTR_XZZ,DPTR_XZHAT,                                &
        LSLEVE,XLEN1,XLEN2,                                   &
-       DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM,                      &
-       DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS,                      &
+       DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM,DPTR_XLSZWSM,         &
+       DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS,DPTR_XLSZWSS,         &
        DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,    &
        DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,    &
        DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,    &
@@ -915,6 +920,10 @@ WRITE(COUTFILE,'(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))
 !*       17.    INITIALIZE THE PARAMETERS FOR THE DYNAMICS
 !               ------------------------------------------
 !
+!Allocate to zero size to not pass unallocated pointers
+ALLOCATE(XALKBAS(0))
+ALLOCATE(XALKWBAS(0))
+!
 CALL INI_DYNAMICS(XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,            &
              XZHAT,CLBCX,CLBCY,XTSTEP,                                        &
              LVE_RELAX,LVE_RELAX_GRD,LHORELAX_UVWTH,LHORELAX_RV,              &
diff --git a/src/MNH/init_salt.f90 b/src/MNH/init_salt.f90
new file mode 100644
index 0000000000000000000000000000000000000000..de95ce681e4751a7b4c244bec44bcbdfa0e6c9f8
--- /dev/null
+++ b/src/MNH/init_salt.f90
@@ -0,0 +1,74 @@
+!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
+!ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!ORILAM_LIC for details.
+!-----------------------------------------------------------------
+
+!!    ######################
+      SUBROUTINE INIT_SALT
+!!    ######################
+!     PURPOSE
+!!     -------
+!!
+!!     initialization of variables for the sea salt scheme
+!!
+!!     METHOD
+!!     ------
+!!
+!!
+!!     REFERENCE
+!!     ---------
+!!     none
+!!
+!!
+!!     AUTHOR
+!!     ------
+!!     Marine Claeys (CNRM)
+!!
+!!     MODIFICATIONS
+!!     -------------
+!!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!
+USE MODD_SALT
+!
+IMPLICIT NONE
+
+IF(NMODE_SLT == 5) THEN
+
+!JPSALTORDER = (/5, 4, 3, 2, 1 /)
+!Initial dry number median radius (um) from Ova et al., 2014
+XINIRADIUS_SLT=  (/0.009, 0.021, 0.045, 0.115, 0.415/)
+!Initial, standard deviation from  Ova et al., 2014
+XINISIG_SLT =  (/ 1.37, 1.5, 1.42, 1.53, 1.85 /)
+!Minimum allowed number concentration for any mode (#/m3)
+XN0MIN_SLT  = (/1.e1 , 1.e1, 1.e1, 1., 1.e-4 /)
+
+
+ELSE IF ( NMODE_SLT == 3) THEN
+
+! Set the order of the loops sorted by importance
+!This means that if a user choses 1 mode it will have characteristics of mode 2
+!2 modes will be mode 2 & 3, whereas 3 modes will modes 1, 2 and 3
+!JPSALTORDER = (/3, 2, 1, 4, 5/)
+! 
+   !Initial dry number median radius (um) from Vignati et al., 2001
+   ! XINIRADIUS_SLT= (/0.2, 2., 12./)
+   !Initial, standard deviation from Vignati et al., 2001
+   ! XINISIG_SLT =  (/1.9, 2., 3./)
+   !Minimum allowed number concentration for any mode (#/m3)
+   ! XN0MIN_SLT  = (/1.e1 , 1. , 1.e-4 /)
+
+
+!Pour 3 modes Schultz
+!Initial dry number median radius (um) from Schultz et al., 2004
+ XINIRADIUS_SLT= 0.5*(/0.28, 2.25, 15.32, 0., 0. /)
+!Initial, standard deviation from  Schultz et al., 2004
+ XINISIG_SLT =  (/1.9, 2., 2., 0., 0./)
+!Minimum allowed number concentration for any mode (#/m3)
+ XN0MIN_SLT  = (/1.e1 , 1. , 1.e-4, 0., 0. /)
+!
+END IF
+
+
+END SUBROUTINE INIT_SALT
diff --git a/src/MNH/lesn.f90 b/src/MNH/lesn.f90
index eea67385bf0d09f146943e76e2dd50fc7fdaaaac..3eae3fc04d59c273e750b89bb0ef769ad7e3d3f9 100644
--- a/src/MNH/lesn.f90
+++ b/src/MNH/lesn.f90
@@ -42,6 +42,7 @@
 !!                10/14    (C.Lac) Correction on user masks
 !!                10/16    (C.Lac) Add ground droplet deposition amount
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!                     02/2019 (C. Lac) Add rain fraction as a LES diagnostic
 !!
 !! --------------------------------------------------------------------------
 !
@@ -107,6 +108,7 @@ REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZEW
 REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZINDCLD   !indice cloud si rc>0
 REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZINDCLD2  !indice cloud rc>1E-5
 REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZCLDFR_LES! CLDFR    on LES vertical grid
+REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRAINFR_LES! RAINFR   on LES vertical grid
 REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZMASSF    ! massflux=rho*w
 REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZREHU     ! relative humidity
 
@@ -333,12 +335,14 @@ IF (LUSERR) THEN
   ALLOCATE(ZRWP_LES(IIU,IJU))
   ALLOCATE(ZINPRR3D_LES (IIU,IJU,NLES_K))
   ALLOCATE(ZEVAP3D_LES  (IIU,IJU,NLES_K))
+  ALLOCATE(ZRAINFR_LES(IIU,IJU,NLES_K))
 ELSE
   ALLOCATE(ZRR_LES  (0,0,0))
   ALLOCATE(ZMAXWRR2D(0,0))
   ALLOCATE(ZRWP_LES(0,0))
   ALLOCATE(ZINPRR3D_LES(0,0,0))
   ALLOCATE(ZEVAP3D_LES(0,0,0))
+  ALLOCATE(ZRAINFR_LES(0,0,0))
 END IF
 IF (LUSERI) THEN
   ALLOCATE(ZRI_LES    (IIU,IJU,NLES_K))
@@ -554,6 +558,7 @@ IF (LUSERR) THEN
   CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRR_LES )
   CALL LES_VER_INT(     XINPRR3D(:,:,:), ZINPRR3D_LES)
   CALL LES_VER_INT(    XEVAP3D(:,:,:), ZEVAP3D_LES)
+  CALL LES_VER_INT( XRAINFR(:,:,:)  ,ZRAINFR_LES )
 END IF
 IF (LUSERC) THEN
     DO JJ=1,IJU
@@ -779,6 +784,8 @@ END IF
                      XLES_ACPRR(NLES_CURRENT_TCOUNT)    )
 !   conversion de m en mm
     XLES_ACPRR(NLES_CURRENT_TCOUNT)=XLES_ACPRR(NLES_CURRENT_TCOUNT)*1000.
+    CALL LES_MEAN_ll ( ZRAINFR_LES, LLES_CURRENT_CART_MASK,            &
+                    XLES_MEAN_RF(:,NLES_CURRENT_TCOUNT,1)        )
 
   ENDIF
 !
@@ -1041,6 +1048,7 @@ DEALLOCATE(ZINDCLD2  )
 DEALLOCATE(ZINDCLD2D )
 DEALLOCATE(ZINDCLD2D2)
 DEALLOCATE(ZCLDFR_LES)
+DEALLOCATE(ZRAINFR_LES)
 DEALLOCATE(ZMASSF    )  
 DEALLOCATE(ZTEMP     )
 DEALLOCATE(ZREHU     )
diff --git a/src/MNH/lima.f90 b/src/MNH/lima.f90
index ea0244c42c031fe96d89d5e8afe19e3ed86ec63c..7da0841e1b8fde7218257de8d6d111012caebb24 100644
--- a/src/MNH/lima.f90
+++ b/src/MNH/lima.f90
@@ -95,6 +95,7 @@ END MODULE MODI_LIMA
 !!    -------------
 !!      Original   15/03/2018
 !!
+!!      B.Vié  02/2019 : minor correction on budget
 !!
 !!
 !*       0.    DECLARATIONS
@@ -640,6 +641,12 @@ Z_CR_CVRC(:,:,:) = 0.
 IF (LWARM .AND. LRAIN) THEN
    CALL LIMA_DROPS_TO_DROPLETS_CONV(PRHODREF, ZRCS*PTSTEP, ZRRS*PTSTEP, ZCCS*PTSTEP, ZCRS*PTSTEP, &
                                     Z_RR_CVRC, Z_CR_CVRC)
+   !
+   ZRCS(:,:,:) = ZRCS(:,:,:) - Z_RR_CVRC(:,:,:)/PTSTEP
+   ZRRS(:,:,:) = ZRRS(:,:,:) + Z_RR_CVRC(:,:,:)/PTSTEP
+   ZCCS(:,:,:) = ZCCS(:,:,:) - Z_CR_CVRC(:,:,:)/PTSTEP
+   ZCRS(:,:,:) = ZCRS(:,:,:) + Z_CR_CVRC(:,:,:)/PTSTEP
+   !
    IF(LBU_ENABLE) THEN
       IF (LBUDGET_RC) CALL BUDGET (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'R2C1_BU_RRC')
       IF (LBUDGET_RR) CALL BUDGET (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'R2C1_BU_RRR')
@@ -655,15 +662,15 @@ END IF
 ZTHT(:,:,:) = ZTHS(:,:,:) * PTSTEP
 ZT(:,:,:)   = ZTHT(:,:,:) * ZEXN(:,:,:)
 !
-IF ( KRR .GE. 2 ) ZRCT(:,:,:) = ZRCS(:,:,:) * PTSTEP - Z_RR_CVRC(:,:,:)
-IF ( KRR .GE. 3 ) ZRRT(:,:,:) = ZRRS(:,:,:) * PTSTEP + Z_RR_CVRC(:,:,:)
+IF ( KRR .GE. 2 ) ZRCT(:,:,:) = ZRCS(:,:,:) * PTSTEP
+IF ( KRR .GE. 3 ) ZRRT(:,:,:) = ZRRS(:,:,:) * PTSTEP
 IF ( KRR .GE. 4 ) ZRIT(:,:,:) = ZRIS(:,:,:) * PTSTEP
 IF ( KRR .GE. 5 ) ZRST(:,:,:) = ZRSS(:,:,:) * PTSTEP
 IF ( KRR .GE. 6 ) ZRGT(:,:,:) = ZRGS(:,:,:) * PTSTEP
 IF ( KRR .GE. 7 ) ZRHT(:,:,:) = ZRHS(:,:,:) * PTSTEP
 !
-IF ( LWARM )             ZCCT(:,:,:)   = ZCCS(:,:,:) * PTSTEP - Z_CR_CVRC(:,:,:)
-IF ( LWARM .AND. LRAIN ) ZCRT(:,:,:)   = ZCRS(:,:,:) * PTSTEP + Z_CR_CVRC(:,:,:)
+IF ( LWARM )             ZCCT(:,:,:)   = ZCCS(:,:,:) * PTSTEP
+IF ( LWARM .AND. LRAIN ) ZCRT(:,:,:)   = ZCRS(:,:,:) * PTSTEP
 IF ( LCOLD )             ZCIT(:,:,:)   = ZCIS(:,:,:) * PTSTEP
 ! 
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/lima_ccn_activation.f90 b/src/MNH/lima_ccn_activation.f90
index 4b6d1c348cd57772a06f9dabfac56ea23ac02229..9a2e5dcdf722a6c122da92490a71db33d8d81c9c 100644
--- a/src/MNH/lima_ccn_activation.f90
+++ b/src/MNH/lima_ccn_activation.f90
@@ -471,7 +471,7 @@ IF ( OCLOSE_OUT ) THEN
   TZFIELD%CMNHNAME   ='NACT'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
-  TZFIELD%CUNITS     = '/kg'
+  TZFIELD%CUNITS     = 'kg-1'
   TZFIELD%CDIR       = 'XY'
   TZFIELD%CCOMMENT   = 'X_Y_Z_NACT'
   TZFIELD%NGRID      = 1
diff --git a/src/MNH/lima_sedimentation.f90 b/src/MNH/lima_sedimentation.f90
index ab0ebebcacad806e971b9dd53cf218122dc3590c..36b173a84f6ddf84e9e7a3732007891dca1b5b48 100644
--- a/src/MNH/lima_sedimentation.f90
+++ b/src/MNH/lima_sedimentation.f90
@@ -61,6 +61,7 @@ END MODULE MODI_LIMA_SEDIMENTATION
 !!    -------------
 !!      Original             15/03/2018
 !!
+!!      B.Vie  02/2019  Desactivate (comment) the heat transport by droplets
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -205,14 +206,14 @@ DO JN = 1 ,  NSPLITSED(KID)
          IF (KMOMENTS==2) PCS(:,:,JK) = PCS(:,:,JK) + ZW(:,:,JK)*    &
               (ZWSEDC(:,:,JK+KKL)-ZWSEDC(:,:,JK))/PRHODREF(:,:,JK)
          ! Heat transport
-         PRT_SUM(:,:,JK-KKL) = PRT_SUM(:,:,JK-KKL) + ZW(:,:,JK-KKL)*ZWSEDR(:,:,JK)/PRHODREF(:,:,JK-KKL)
-         PRT_SUM(:,:,JK) = PRT_SUM(:,:,JK) - ZW(:,:,JK)*ZWSEDR(:,:,JK)/PRHODREF(:,:,JK)
-         PCPT(:,:,JK-KKL) = PCPT(:,:,JK-KKL) + ZC * (ZW(:,:,JK-KKL)*ZWSEDR(:,:,JK)/PRHODREF(:,:,JK-KKL))
-         PCPT(:,:,JK) = PCPT(:,:,JK) - ZC * (ZW(:,:,JK)*ZWSEDR(:,:,JK)/PRHODREF(:,:,JK))
-         ZWDT(:,:,JK) =(PRHODREF(:,:,JK+KKL)*(1.+PRT_SUM(:,:,JK))*PCPT(:,:,JK)*PT(:,:,JK) + &
-              ZW(:,:,JK)*ZWSEDR(:,:,JK+1)*ZC*PT(:,:,JK+KKL)) / &
-              (PRHODREF(:,:,JK+KKL)*(1.+PRT_SUM(:,:,JK))*PCPT(:,:,JK) + ZW(:,:,JK)*ZWSEDR(:,:,JK+KKL)*ZC)
-         ZWDT(:,:,JK) = ZWDT(:,:,JK) - PT(:,:,JK)
+         !PRT_SUM(:,:,JK-KKL) = PRT_SUM(:,:,JK-KKL) + ZW(:,:,JK-KKL)*ZWSEDR(:,:,JK)/PRHODREF(:,:,JK-KKL)
+         !PRT_SUM(:,:,JK) = PRT_SUM(:,:,JK) - ZW(:,:,JK)*ZWSEDR(:,:,JK)/PRHODREF(:,:,JK)
+         !PCPT(:,:,JK-KKL) = PCPT(:,:,JK-KKL) + ZC * (ZW(:,:,JK-KKL)*ZWSEDR(:,:,JK)/PRHODREF(:,:,JK-KKL))
+         !PCPT(:,:,JK) = PCPT(:,:,JK) - ZC * (ZW(:,:,JK)*ZWSEDR(:,:,JK)/PRHODREF(:,:,JK))
+         !ZWDT(:,:,JK) =(PRHODREF(:,:,JK+KKL)*(1.+PRT_SUM(:,:,JK))*PCPT(:,:,JK)*PT(:,:,JK) + &
+         !     ZW(:,:,JK)*ZWSEDR(:,:,JK+1)*ZC*PT(:,:,JK+KKL)) / &
+         !     (PRHODREF(:,:,JK+KKL)*(1.+PRT_SUM(:,:,JK))*PCPT(:,:,JK) + ZW(:,:,JK)*ZWSEDR(:,:,JK+KKL)*ZC)
+         !ZWDT(:,:,JK) = ZWDT(:,:,JK) - PT(:,:,JK)
       END DO
       DEALLOCATE(ZRHODREF)
       DEALLOCATE(ZPABST)
diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90
index 71974fc8c4d66eb94ee7cb0a06052efe469fa40e..08fa881a1ed3f0236d7a01cd683a8e4d61392a8e 100644
--- a/src/MNH/lima_warm_nucl.f90
+++ b/src/MNH/lima_warm_nucl.f90
@@ -539,7 +539,7 @@ IF ( OCLOSE_OUT ) THEN
   TZFIELD%CMNHNAME   ='NACT'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
-  TZFIELD%CUNITS     = '/kg'
+  TZFIELD%CUNITS     = 'kg-1'
   TZFIELD%CDIR       = 'XY'
   TZFIELD%CCOMMENT   = 'X_Y_Z_NACT'
   TZFIELD%NGRID      = 1
diff --git a/src/MNH/ls_coupling.f90 b/src/MNH/ls_coupling.f90
index 8b9430d839720d7cc00aeb1b98e29e3eecec8c9e..9af87a483a3b5cc7bcdd6c6c4b5c4bbc0b9a467d 100644
--- a/src/MNH/ls_coupling.f90
+++ b/src/MNH/ls_coupling.f90
@@ -17,10 +17,10 @@ INTERFACE
             KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,               &
             KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
-            PLSUM,PLSVM,PLSWM, PLSTHM,PLSRVM,PDRYMASST,                      &
+            PLSUM,PLSVM,PLSWM, PLSTHM,PLSRVM,PLSZWSM,PDRYMASST,              &
             PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
             PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM,            &
-            PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PDRYMASSS,                       &
+            PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PLSZWSS,PDRYMASSS,               &
             PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,            &
             PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS             )
 !
@@ -52,6 +52,7 @@ INTEGER, INTENT(IN) :: KSIZELBYR_ll,KSIZELBYSV_ll    ! for Rx and SV
 !
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLSUM,PLSVM,PLSWM ! Large Scale 
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLSTHM, PLSRVM    ! fields at t-dt
+REAL, DIMENSION(:,:),    INTENT(IN)  :: PLSZWSM              ! fields at t-dt
 REAL,                    INTENT(IN)  :: PDRYMASST         ! Mass of dry air Md
 ! larger scale fields for Lateral Boundary condition
 REAL, DIMENSION(:,:,:),          INTENT(IN) :: PLBXUM,PLBXVM,PLBXWM ! Wind
@@ -65,6 +66,7 @@ REAL, DIMENSION(:,:,:,:),        INTENT(IN) :: PLBYRM  ,PLBYSVM  ! in x and y-di
 !
 REAL, DIMENSION(:,:,:),  INTENT(OUT) :: PLSUS,PLSVS,PLSWS  ! Large Scale 
 REAL, DIMENSION(:,:,:),  INTENT(OUT) :: PLSTHS,PLSRVS      ! source terms
+REAL, DIMENSION(:,:),    INTENT(OUT) :: PLSZWSS              ! source terms
 REAL,                    INTENT(OUT) :: PDRYMASSS          !  Md source 
 ! larger scale fields sources for Lateral Boundary condition
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBXUS,PLBXVS,PLBXWS ! Wind
@@ -95,10 +97,10 @@ END MODULE MODI_LS_COUPLING
             KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,               &
             KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
-            PLSUM,PLSVM,PLSWM, PLSTHM,PLSRVM,PDRYMASST,                      &
+            PLSUM,PLSVM,PLSWM, PLSTHM,PLSRVM,PLSZWSM,PDRYMASST,              &
             PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
             PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM,            &
-            PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PDRYMASSS,                       &
+            PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PLSZWSS,PDRYMASSS,               &
             PLBXUS,PLBXVS,PLBXWS,PLBXTHS,PLBXTKES,PLBXRS,PLBXSVS,            &
             PLBYUS,PLBYVS,PLBYWS,PLBYTHS,PLBYTKES,PLBYRS,PLBYSVS             )
 !     ######################################################################
@@ -171,6 +173,7 @@ END MODULE MODI_LS_COUPLING
 !!                   05/2006    Remove KEPS
 !!                   2/2014     (escobar) add paspol for Forefire
 !  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!! Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !! 
 !------------------------------------------------------------------------------
 !
@@ -227,6 +230,7 @@ INTEGER, INTENT(IN) :: KSIZELBYR_ll,KSIZELBYSV_ll    ! for Rx and SV
 !
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLSUM,PLSVM,PLSWM ! Large Scale 
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLSTHM, PLSRVM    ! fields at t-dt
+REAL, DIMENSION(:,:),    INTENT(IN)  :: PLSZWSM
 REAL,                    INTENT(IN)  :: PDRYMASST         ! Mass of dry air Md
 ! larger scale fields for Lateral Boundary condition
 REAL, DIMENSION(:,:,:),          INTENT(IN) :: PLBXUM,PLBXVM,PLBXWM ! Wind
@@ -250,6 +254,7 @@ REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBXTKES          ! TKE
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBYTKES
 REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PLBXRS  ,PLBXSVS  ! Moisture and SV
 REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PLBYRS  ,PLBYSVS  ! in x and y-dir.
+REAL, DIMENSION(:,:),    INTENT(OUT) :: PLSZWSS              ! source terms
 !
 !
 !*       0.2   declarations of local variables
@@ -297,7 +302,7 @@ GLSOURCE=.TRUE.
 ZLENG = (NCPL_TIMES(NCPL_CUR,1) - NCPL_TIMES(NCPL_CUR-1,1)) * PTSTEP 
 !
 CALL INI_LS(TCPLFILE(NCPL_CUR)%TZFILE,HGETRVM,GLSOURCE,PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS, &
-             PDRYMASSS,PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PDRYMASST,ZLENG,OSTEADY_DMASS)
+            PLSZWSS, PDRYMASSS,PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,PDRYMASST,ZLENG,OSTEADY_DMASS)
 
 !
 !
diff --git a/src/MNH/modd_RBK90_Globaln.f90 b/src/MNH/modd_RBK90_Globaln.f90
index ccf0f737b9147d5d900639505f0281dbbdac9dd1..4d4a40e402596db7d598f3bbcaf52915afc2f4c4 100644
--- a/src/MNH/modd_RBK90_Globaln.f90
+++ b/src/MNH/modd_RBK90_Globaln.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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.
 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ! 
@@ -23,6 +23,8 @@
 ! Output root filename : RBK90
 ! 
 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+! Modifications
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 
 
 MODULE MODD_RBK90_Global_n
@@ -40,15 +42,15 @@ TYPE RBK90_Global_t
 ! Declaration of global variables
 
 ! C - Concentration of all species
-    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: C
+    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: C => NULL()
 ! VAR - Concentrations of variable species (global)
-    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: VAR
+    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: VAR => NULL()
 ! FIX - Concentrations of fixed species (global)
-    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: FIX
+    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: FIX => NULL()
 !JPP      EQUIVALENCE( C(1),VAR(1) )
 !JPP      EQUIVALENCE( C(66),FIX(1) )
 ! RCONST - Rate constants (global)
-    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: RCONST
+    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: RCONST => NULL()
 ! TIME - Current integration time
     REAL(KIND(0.0D0)) :: TIME
 ! SUN - Sunlight intensity between [0,1]
@@ -64,9 +66,9 @@ TYPE RBK90_Global_t
 ! DT - Integration step
     REAL(KIND(0.0D0)) :: DT
 ! ATOL - Absolute tolerance
-    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: ATOL
+    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: ATOL => NULL()
 ! RTOL - Relative tolerance
-    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: RTOL
+    REAL(KIND(0.0D0)), DIMENSION(:), POINTER :: RTOL => NULL()
 ! STEPMIN - Lower bound for integration step
     REAL(KIND(0.0D0)) :: STEPMIN
 ! STEPMAX - Upper bound for integration step
diff --git a/src/MNH/modd_RBK90_JacobianSPn.f90 b/src/MNH/modd_RBK90_JacobianSPn.f90
index dc7fd2c695c01ab1fd7ffb595ebd0b615b2d7fea..be6f91d417c0fa92b6859882a03bac0bc2597f95 100644
--- a/src/MNH/modd_RBK90_JacobianSPn.f90
+++ b/src/MNH/modd_RBK90_JacobianSPn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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.
 !******************************************************************
 
@@ -25,6 +25,8 @@
 ! Output root filename : RBK90
 ! 
 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+! Modifications
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 
 
 MODULE MODD_RBK90_JacobianSP_n
@@ -39,13 +41,13 @@ TYPE RBK90_JacobianSP_t
 ! Sparse Jacobian Data
 
 
-    INTEGER, DIMENSION(:), POINTER :: LU_IROW
-    INTEGER, DIMENSION(:), POINTER :: LU_ICOL
+    INTEGER, DIMENSION(:), POINTER :: LU_IROW => NULL()
+    INTEGER, DIMENSION(:), POINTER :: LU_ICOL => NULL()
 
-    INTEGER, DIMENSION(:), POINTER :: LU_CROW
-    INTEGER, DIMENSION(:), POINTER :: LU_DIAG
+    INTEGER, DIMENSION(:), POINTER :: LU_CROW => NULL()
+    INTEGER, DIMENSION(:), POINTER :: LU_DIAG => NULL()
 
-    INTEGER, DIMENSION(:), POINTER :: LU_DIM_SPECIES
+    INTEGER, DIMENSION(:), POINTER :: LU_DIM_SPECIES => NULL()
 
 END TYPE RBK90_JacobianSP_t
 
diff --git a/src/MNH/modd_aircraft_balloon.f90 b/src/MNH/modd_aircraft_balloon.f90
index 677a4c4ac525ef94bb01b47788418f6289233c8e..9ff02772fc696e682c0efc396edbb3c0b6780748 100644
--- a/src/MNH/modd_aircraft_balloon.f90
+++ b/src/MNH/modd_aircraft_balloon.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/modd_aircraft_balloon.f90,v $ $Revision: 1.1.10.1.2.1.10.2.2.2 $
-! MASDEV4_7 modd 2006/06/28 11:31:03
-!-----------------------------------------------------------------
 !     ############################
       MODULE MODD_AIRCRAFT_BALLOON
 !     ############################
@@ -26,10 +21,10 @@
 !!
 !!    REFERENCE
 !!    --------- 
-!!       
+!!
 !!    AUTHOR
 !!    ------
-!!	P. Jabouille   *Meteo France*
+!! P. Jabouille   *Meteo France*
 !!
 !!    MODIFICATIONS
 !!    -------------
@@ -37,6 +32,7 @@
 !!              Apr,19, 2001 (G.Jaubert) add CVBALL type
 !!              March, 2013 : O.Caumont, C.Lac : add vertical profiles
 !!              Oct,2016 : G.DELAUTIER LIMA
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -92,13 +88,13 @@ REAL                          :: MASS   ! mass of the balloon (kg) (if 'CVBALL')
 INTEGER                       :: SEG      ! number of aircraft flight segments
 INTEGER                       :: SEGCURN  ! current flight segment number
 REAL                          :: SEGCURT  ! current flight segment time spent
-REAL, DIMENSION(:),   POINTER :: SEGLAT   ! latitude of flight segment extremities  (LEG+1)
-REAL, DIMENSION(:),   POINTER :: SEGLON   ! longitude of flight segment extremities (LEG+1)
-REAL, DIMENSION(:),   POINTER :: SEGX     ! X of flight segment extremities         (LEG+1)
-REAL, DIMENSION(:),   POINTER :: SEGY     ! Y of flight segment extremities         (LEG+1)
-REAL, DIMENSION(:),   POINTER :: SEGP     ! pressure of flight segment extremities  (LEG+1)
-REAL, DIMENSION(:),   POINTER :: SEGZ     ! altitude of flight segment extremities  (LEG+1)
-REAL, DIMENSION(:),   POINTER :: SEGTIME  ! duration of flight segments             (LEG  )
+REAL, DIMENSION(:),   POINTER :: SEGLAT  => NULL() ! latitude of flight segment extremities  (LEG+1)
+REAL, DIMENSION(:),   POINTER :: SEGLON  => NULL() ! longitude of flight segment extremities (LEG+1)
+REAL, DIMENSION(:),   POINTER :: SEGX    => NULL() ! X of flight segment extremities         (LEG+1)
+REAL, DIMENSION(:),   POINTER :: SEGY    => NULL() ! Y of flight segment extremities         (LEG+1)
+REAL, DIMENSION(:),   POINTER :: SEGP    => NULL() ! pressure of flight segment extremities  (LEG+1)
+REAL, DIMENSION(:),   POINTER :: SEGZ    => NULL() ! altitude of flight segment extremities  (LEG+1)
+REAL, DIMENSION(:),   POINTER :: SEGTIME => NULL() ! duration of flight segments             (LEG  )
 !
 !* aircraft altitude type definition
 !
@@ -113,42 +109,42 @@ REAL                          :: P_CUR    ! current p (if 'AIRCRA' and 'ALTDEF'
 !
 !* data records
 !
-REAL, DIMENSION(:),   POINTER :: TIME     ! t(n)  (n: recording instants)
-REAL, DIMENSION(:),   POINTER :: X        ! X(n)
-REAL, DIMENSION(:),   POINTER :: Y        ! Y(n)
-REAL, DIMENSION(:),   POINTER :: Z        ! Z(n)
-REAL, DIMENSION(:),   POINTER :: XLON     ! longitude(n)
-REAL, DIMENSION(:),   POINTER :: YLAT     ! latitude (n)
-REAL, DIMENSION(:),   POINTER :: ZON      ! zonal wind(n)
-REAL, DIMENSION(:),   POINTER :: MER      ! meridian wind(n)
-REAL, DIMENSION(:),   POINTER :: W        ! w(n)  (air vertical speed)
-REAL, DIMENSION(:),   POINTER :: P        ! p(n)
-REAL, DIMENSION(:),   POINTER :: TKE      ! tke(n)
-REAL, DIMENSION(:),   POINTER :: TKE_DISS ! tke dissipation rate
-REAL, DIMENSION(:),   POINTER :: TH       ! th(n)
-REAL, DIMENSION(:,:), POINTER :: R        ! r*(n)
-REAL, DIMENSION(:,:), POINTER :: SV       ! Sv*(n)
-REAL, DIMENSION(:,:), POINTER :: RTZ      ! tot hydrometeor mixing ratio
-REAL, DIMENSION(:,:,:), POINTER :: RZ      ! water vapour mixing ratio
-REAL, DIMENSION(:,:), POINTER :: FFZ      ! horizontal wind                
-REAL, DIMENSION(:,:), POINTER :: IWCZ     ! ice water content              
-REAL, DIMENSION(:,:), POINTER :: LWCZ     ! liquid water content              
-REAL, DIMENSION(:,:), POINTER :: CIZ      ! Ice concentration
-REAL, DIMENSION(:,:), POINTER :: CCZ      ! Cloud concentration (LIMA)
-REAL, DIMENSION(:,:), POINTER :: CRZ      ! Rain concentration (LIMA)
-REAL, DIMENSION(:,:), POINTER :: CRARE     ! cloud radar reflectivity
-REAL, DIMENSION(:,:), POINTER :: CRARE_ATT ! attenuated (= more realistic) cloud radar reflectivity
-REAL, DIMENSION(:,:), POINTER :: WZ        ! vertical profile of vertical velocity
-REAL, DIMENSION(:,:), POINTER :: ZZ        ! vertical profile of mass point altitude (above sea)
-REAL, DIMENSION(:,:), POINTER :: AER      ! Extinction at 550 nm
-REAL, DIMENSION(:,:), POINTER :: DST_WL   ! Extinction by wavelength
-REAL, DIMENSION(:),   POINTER :: ZS       ! zs(n)
-REAL, DIMENSION(:),   POINTER :: TSRAD    ! Ts(n)
-REAL, DIMENSION(:,:), POINTER :: DATIME   ! record for diachro
-!
-REAL, DIMENSION(:)  ,   POINTER :: THW_FLUX ! thw_flux(n)
-REAL, DIMENSION(:)  ,   POINTER :: RCW_FLUX ! rcw_flux(n)
-REAL, DIMENSION(:,:),   POINTER :: SVW_FLUX ! psw_flux(n)
+REAL, DIMENSION(:),    POINTER :: TIME      => NULL() ! t(n)  (n: recording instants)
+REAL, DIMENSION(:),    POINTER :: X         => NULL() ! X(n)
+REAL, DIMENSION(:),    POINTER :: Y         => NULL() ! Y(n)
+REAL, DIMENSION(:),    POINTER :: Z         => NULL() ! Z(n)
+REAL, DIMENSION(:),    POINTER :: XLON      => NULL() ! longitude(n)
+REAL, DIMENSION(:),    POINTER :: YLAT      => NULL() ! latitude (n)
+REAL, DIMENSION(:),    POINTER :: ZON       => NULL() ! zonal wind(n)
+REAL, DIMENSION(:),    POINTER :: MER       => NULL() ! meridian wind(n)
+REAL, DIMENSION(:),    POINTER :: W         => NULL() ! w(n)  (air vertical speed)
+REAL, DIMENSION(:),    POINTER :: P         => NULL() ! p(n)
+REAL, DIMENSION(:),    POINTER :: TKE       => NULL() ! tke(n)
+REAL, DIMENSION(:),    POINTER :: TKE_DISS  => NULL() ! tke dissipation rate
+REAL, DIMENSION(:),    POINTER :: TH        => NULL() ! th(n)
+REAL, DIMENSION(:,:),  POINTER :: R         => NULL() ! r*(n)
+REAL, DIMENSION(:,:),  POINTER :: SV        => NULL() ! Sv*(n)
+REAL, DIMENSION(:,:),  POINTER :: RTZ       => NULL() ! tot hydrometeor mixing ratio
+REAL, DIMENSION(:,:,:),POINTER :: RZ        => NULL() ! water vapour mixing ratio
+REAL, DIMENSION(:,:),  POINTER :: FFZ       => NULL() ! horizontal wind
+REAL, DIMENSION(:,:),  POINTER :: IWCZ      => NULL() ! ice water content
+REAL, DIMENSION(:,:),  POINTER :: LWCZ      => NULL() ! liquid water content
+REAL, DIMENSION(:,:),  POINTER :: CIZ       => NULL() ! Ice concentration
+REAL, DIMENSION(:,:),  POINTER :: CCZ       => NULL() ! Cloud concentration (LIMA)
+REAL, DIMENSION(:,:),  POINTER :: CRZ       => NULL() ! Rain concentration (LIMA)
+REAL, DIMENSION(:,:),  POINTER :: CRARE     => NULL() ! cloud radar reflectivity
+REAL, DIMENSION(:,:),  POINTER :: CRARE_ATT => NULL() ! attenuated (= more realistic) cloud radar reflectivity
+REAL, DIMENSION(:,:),  POINTER :: WZ        => NULL() ! vertical profile of vertical velocity
+REAL, DIMENSION(:,:),  POINTER :: ZZ        => NULL() ! vertical profile of mass point altitude (above sea)
+REAL, DIMENSION(:,:),  POINTER :: AER       => NULL() ! Extinction at 550 nm
+REAL, DIMENSION(:,:),  POINTER :: DST_WL    => NULL() ! Extinction by wavelength
+REAL, DIMENSION(:),    POINTER :: ZS        => NULL() ! zs(n)
+REAL, DIMENSION(:),    POINTER :: TSRAD     => NULL() ! Ts(n)
+REAL, DIMENSION(:,:),  POINTER :: DATIME    => NULL() ! record for diachro
+!
+REAL, DIMENSION(:)  ,   POINTER :: THW_FLUX => NULL() ! thw_flux(n)
+REAL, DIMENSION(:)  ,   POINTER :: RCW_FLUX => NULL() ! rcw_flux(n)
+REAL, DIMENSION(:,:),   POINTER :: SVW_FLUX => NULL() ! psw_flux(n)
 END TYPE FLYER
 REAL :: XLAM_CRAD ! cloud radar wavelength (m)
 !
diff --git a/src/MNH/modd_blowsnown.f90 b/src/MNH/modd_blowsnown.f90
index 38bf7b9291a25eabec2250b1d72f199952b6acd2..531c86fdeca8d6a833945cbdc021c234ba675a38 100644
--- a/src/MNH/modd_blowsnown.f90
+++ b/src/MNH/modd_blowsnown.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2018-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.
 !-----------------------------------------------------------------
 !!     ######################
@@ -28,6 +28,7 @@
 !!
 !!     MODIFICATIONS
 !!     -------------
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !!
 !!--------------------------------------------------------------------
 !!     DECLARATIONS
@@ -39,13 +40,13 @@ TYPE BLOWSNOW_t
 !
 LOGICAL      :: LSNOWSUBL    ! switch to activate blowing snow sublimation
 !
-REAL, DIMENSION(:,:,:), POINTER :: XSNWSUBL3D ! Drifting snow instataneous
+REAL, DIMENSION(:,:,:), POINTER :: XSNWSUBL3D => NULL() ! Drifting snow instataneous
 !                              sublimation rate (kg/m3/s)
-REAL, DIMENSION(:,:,:), POINTER :: XSNWCANO ! Total mass in Canopy at time t
+REAL, DIMENSION(:,:,:), POINTER :: XSNWCANO => NULL() ! Total mass in Canopy at time t
 !     (:,:,1) : equivalent number concentration in Canopy (#/kg)
 !     (:,:,2) : equivalent mass concentration in Canopy (kg/kg)
 !     (:,:,3) : equivalent mass concentration in saltation   (kg/kg)  
-REAL, DIMENSION(:,:,:), POINTER :: XRSNWCANOS ! Source of (rho*canopy mass) at time t
+REAL, DIMENSION(:,:,:), POINTER :: XRSNWCANOS => NULL() ! Source of (rho*canopy mass) at time t
 
 
 
diff --git a/src/MNH/modd_ch_budget_n.f90 b/src/MNH/modd_ch_budget_n.f90
index 41c039d0731d1b22e34d98f84f61a0ebfa72d541..4fe8de9b6374bb96b1c3c735e8cd5b5d9800082a 100644
--- a/src/MNH/modd_ch_budget_n.f90
+++ b/src/MNH/modd_ch_budget_n.f90
@@ -1,3 +1,7 @@
+!MNH_LIC Copyright 2016-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 for details. version 1.
 !-----------------------------------------------------------------
 !     #######################
       MODULE MODD_CH_BUDGET_n
@@ -15,19 +19,20 @@
 !!
 !!**  IMPLICIT ARGUMENTS
 !!    ------------------
-!!      None 
+!!      None
 !!
 !!    REFERENCE
 !!    ---------
 !!      Book2 of documentation of Meso-NH
-!!          
+!!
 !!    AUTHOR
 !!    ------
 !!	    F. Brosse *Laboratoire d'Aerologie UPS-CNRS*
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!      Original    October 2016                   
+!!      Original    October 2016
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -37,16 +42,16 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX
 IMPLICIT NONE
 
 TYPE TREAC_BUDGET
-  REAL   ,           DIMENSION(:,:,:,:), POINTER :: XB_REAC
-  INTEGER,           DIMENSION(:)      , POINTER :: NB_REAC
+  REAL   ,           DIMENSION(:,:,:,:), POINTER :: XB_REAC => NULL()
+  INTEGER,           DIMENSION(:)      , POINTER :: NB_REAC => NULL()
 END TYPE TREAC_BUDGET
 
 TYPE TCH_BUDGET_t
 
-  CHARACTER(LEN=32),  DIMENSION(:), POINTER :: CNAMES_BUDGET
-  INTEGER,            DIMENSION(:), POINTER :: NSPEC_BUDGET
+  CHARACTER(LEN=32),  DIMENSION(:), POINTER :: CNAMES_BUDGET => NULL()
+  INTEGER,            DIMENSION(:), POINTER :: NSPEC_BUDGET => NULL()
   INTEGER                                   :: NEQ_BUDGET
-  TYPE(TREAC_BUDGET), DIMENSION(:), POINTER :: XTCHEM
+  TYPE(TREAC_BUDGET), DIMENSION(:), POINTER :: XTCHEM => NULL()
 
 END TYPE TCH_BUDGET_t
 
diff --git a/src/MNH/modd_ch_constn.f90 b/src/MNH/modd_ch_constn.f90
index 92013fb84d2edd994cd6efed8593fef41c673c7e..f7495916ef8a30dc4d42686e9e16761665ea0698 100644
--- a/src/MNH/modd_ch_constn.f90
+++ b/src/MNH/modd_ch_constn.f90
@@ -1,14 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2001-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
 !     #####################
       MODULE MODD_CH_CONST_n
 !     ######################
@@ -32,6 +26,7 @@
 !!
 !!    MODIFICATIONS
 !!    -------------
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -43,14 +38,14 @@ IMPLICIT NONE
 TYPE CH_CONST_t
 !
 
-  REAL, DIMENSION(:), POINTER :: XSREALMASSMOLVAL ! final molecular
+  REAL, DIMENSION(:), POINTER :: XSREALMASSMOLVAL => NULL() ! final molecular
                                                           ! diffusivity value
-  REAL, DIMENSION(:), POINTER :: XSREALREACTVAL ! final chemical
+  REAL, DIMENSION(:), POINTER :: XSREALREACTVAL => NULL() ! final chemical
                                                         ! reactivity factor
                                                         ! with biologie
-  REAL, DIMENSION(:,:), POINTER :: XSREALHENRYVAL ! chemical Henry
+  REAL, DIMENSION(:,:), POINTER :: XSREALHENRYVAL => NULL() ! chemical Henry
                                                           ! constant value
-  REAL                            :: XCONVERSION ! emission unit 
+  REAL                            :: XCONVERSION ! emission unit
                                                      ! conversion factor
 !
 
diff --git a/src/MNH/modd_ch_icen.f90 b/src/MNH/modd_ch_icen.f90
index 8f9323d0c2af2a37acbae0e12c2241775e0beb60..19f0a3c2662045354fc8117702c6a98e16017a11 100644
--- a/src/MNH/modd_ch_icen.f90
+++ b/src/MNH/modd_ch_icen.f90
@@ -1,15 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2015-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source: /home//MESONH/MNH-V5-1-4/src/MODIF_TMICICE/modd_ch_icen.f90
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------------------
 !!    ########################
       MODULE MODD_CH_ICE_n
 !!    ########################
@@ -28,6 +21,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!    Original 11/12/15
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -43,7 +37,7 @@ IMPLICIT NONE
 TYPE CH_ICE_t
 !
 
-  INTEGER, POINTER, DIMENSION(:)  :: NINDEXGI, NINDEXWI, NINDEXWG
+  INTEGER, POINTER, DIMENSION(:)  :: NINDEXGI => NULL(), NINDEXWI => NULL(), NINDEXWG => NULL()
 !
 !-----------------------------------------------------------------------------
 END TYPE CH_ICE_t
diff --git a/src/MNH/modd_ch_phn.f90 b/src/MNH/modd_ch_phn.f90
index b321995c92d9ae22511de0417b35898bfca2dd17..b1071e5f2dd072436fd46ed18c7f2264e3f6d2d6 100644
--- a/src/MNH/modd_ch_phn.f90
+++ b/src/MNH/modd_ch_phn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2007-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2007-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.
 !-----------------------------------------------------------------
 !!    ########################
@@ -23,6 +23,7 @@
 !!       P. Tulet      Nov 2014 accumulated moles of aqueous species that fall at the surface   
 !!       P. Tulet & M. Leriche Nov 2015 add pH in rain at the surface
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -38,11 +39,11 @@ IMPLICIT NONE
 TYPE CH_PH_t
 !
 
-!  REAL, POINTER, DIMENSION(:,:,:) :: XPHC ! cloud
-!  REAL, POINTER, DIMENSION(:,:,:) :: XPHR ! rain
-  REAL, POINTER, DIMENSION(:,:,:) :: XACPRAQ ! sum of aqueous chemical species fall at the surface by rain
-                                             ! in moles i / m2 (ratio with XACPRR for concentration
-  REAL, POINTER, DIMENSION(:,:) :: XACPHR !  mean PH in accumulated surface rain
+!  REAL, POINTER, DIMENSION(:,:,:) :: XPHC => NULL() ! cloud
+!  REAL, POINTER, DIMENSION(:,:,:) :: XPHR => NULL() ! rain
+  REAL, POINTER, DIMENSION(:,:,:) :: XACPRAQ => NULL() ! sum of aqueous chemical species fall at the surface by rain
+                                                       ! in moles i / m2 (ratio with XACPRR for concentration
+  REAL, POINTER, DIMENSION(:,:) :: XACPHR => NULL()    !  mean PH in accumulated surface rain
 !
 !-----------------------------------------------------------------------------
 END TYPE CH_PH_t
diff --git a/src/MNH/modd_ch_prodlosstotn.f90 b/src/MNH/modd_ch_prodlosstotn.f90
index 289f97e343281131b22dd047faec812e3ffe5e98..a5fb75b1cbeaaed3b87535d47e838daba5d870fd 100644
--- a/src/MNH/modd_ch_prodlosstotn.f90
+++ b/src/MNH/modd_ch_prodlosstotn.f90
@@ -1,3 +1,8 @@
+!MNH_LIC Copyright 2016-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 for details. version 1.
+!-----------------------------------------------------------------
 !!    ########################
       MODULE MODD_CH_PRODLOSSTOT_n
 !!    ########################
@@ -25,7 +30,8 @@
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!      Original    October 2016                   
+!!      Original    October 2016
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -36,11 +42,11 @@ IMPLICIT NONE
 
 TYPE CH_PRODLOSSTOT_t
 !
-    CHARACTER(LEN=32),  DIMENSION(:), POINTER :: CNAMES_PRODLOSST
-    INTEGER,            DIMENSION(:), POINTER :: NIND_SPEC
+    CHARACTER(LEN=32),  DIMENSION(:), POINTER :: CNAMES_PRODLOSST => NULL()
+    INTEGER,            DIMENSION(:), POINTER :: NIND_SPEC => NULL()
     INTEGER                                   :: NEQ_PLT
-    REAL,         DIMENSION(:,:,:,:), POINTER:: XPROD
-    REAL,         DIMENSION(:,:,:,:), POINTER:: XLOSS
+    REAL,         DIMENSION(:,:,:,:), POINTER:: XPROD => NULL()
+    REAL,         DIMENSION(:,:,:,:), POINTER:: XLOSS => NULL()
 !
 !-----------------------------------------------------------------------------
 
diff --git a/src/MNH/modd_ch_rosenbrockn.f90 b/src/MNH/modd_ch_rosenbrockn.f90
index ff5b17a033bb4353b514e9ac997c1721e0daa78b..9e46c3d64f0288c21cd927a3b51d872136cae209 100644
--- a/src/MNH/modd_ch_rosenbrockn.f90
+++ b/src/MNH/modd_ch_rosenbrockn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2007-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.
 !!    #########################
       MODULE MODD_CH_ROSENBROCK_n
@@ -20,6 +20,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!    Original 05/06/07
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -36,19 +37,19 @@ TYPE CH_ROSENBROCK_t
 !
   INTEGER :: NSPARSEDIM ! size of vectors NSPARSE_IROW and NSPARSE_ICOL
 !
-  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_IROW ! row index 
-  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_ICOL ! col index
-  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_CROW ! first row element index
-  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_DIAG ! diag index
+  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_IROW => NULL() ! row index
+  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_ICOL => NULL() ! col index
+  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_CROW => NULL() ! first row element index
+  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_DIAG => NULL() ! diag index
                                                 ! of the sparse JACobian matrix
 !
   INTEGER :: NEQ_NAQ    ! number of Non-AQueous species
   INTEGER :: NSPARSEDIM_NAQ !size of vectors NSPARSE_IROW_NAQ and NSPARSE_ICOL_NAQ
 !
-  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_IROW_NAQ ! row index 
-  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_ICOL_NAQ ! col index
-  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_CROW_NAQ ! first row element index
-  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_DIAG_NAQ ! diag index
+  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_IROW_NAQ => NULL() ! row index
+  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_ICOL_NAQ => NULL() ! col index
+  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_CROW_NAQ => NULL() ! first row element index
+  INTEGER, POINTER, DIMENSION(:) :: NSPARSE_DIAG_NAQ => NULL() ! diag index
                            ! of the sparse JACobian matrix of NonAQueous species
 !
 !
diff --git a/src/MNH/modd_csts_salt.f90 b/src/MNH/modd_csts_salt.f90
index 4c985d21a1f9e606d11aa89ec831c8ecb621a5e6..9db26edacaf63aa95a8388e544ed9eacf29f6308 100644
--- a/src/MNH/modd_csts_salt.f90
+++ b/src/MNH/modd_csts_salt.f90
@@ -33,6 +33,7 @@
 !!
 !!     MODIFICATIONS
 !!     -------------
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !!--------------------------------------------------------------------
 !!     DECLARATIONS
@@ -42,7 +43,9 @@
 IMPLICIT NONE
 !
 !densité salt a introduire
-REAL, PARAMETER  :: XDENSITY_SALT     = 2.1e3     ![kg/m3] density of dust
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+REAL, PARAMETER  :: XDENSITY_SALT     = 2.2e3     ![kg/m3] density of dust
+! -- PIERRE / MARINE SSA DUST - MODIF --
 REAL, PARAMETER  :: XMOLARWEIGHT_SALT = 58.e-3   ![kg/mol] molar weight dust
 REAL, PARAMETER  :: XM3TOUM3_SALT     = 1.d18     ![um3/m3] conversion factor
 REAL, PARAMETER  :: XUM3TOM3_SALT     = 1.d-18    ![m3/um3] conversion factor
diff --git a/src/MNH/modd_diag_in_run.f90 b/src/MNH/modd_diag_in_run.f90
index 4c52ea1175777bf35c09d329002634b54f7c99ca..b7bba80d0c045a7787cf64d952de4b44c6a2961f 100644
--- a/src/MNH/modd_diag_in_run.f90
+++ b/src/MNH/modd_diag_in_run.f90
@@ -11,6 +11,7 @@
 MODULE MODD_DIAG_IN_RUN
 ! Modifications
 !!                   02/2018 Q.Libois ECRAD
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !
 !* stores instantaneous diagnostic arrays for the current time-step
 !
@@ -37,4 +38,6 @@ REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_MER10M! meridian wind at 10m
 REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_DSTAOD! dust aerosol optical depth
 REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_SFCO2    ! CO2 Surface flux
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: XCURRENT_TKE_DISS ! Tke dissipation rate
+REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_SLTAOD   ! Salt aerosol optical depth
+REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_ZWS      ! Significant height of waves
 END MODULE MODD_DIAG_IN_RUN
diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90
index 5f5e1847b0950cce83e8cb26aad68dbc4fbb2c5d..1bfaab8943aa48f79fea1868b07d09fe513e44e8 100644
--- a/src/MNH/modd_fieldn.f90
+++ b/src/MNH/modd_fieldn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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 for details. version 1.
@@ -49,6 +49,9 @@
 !!                               for Theta and r (noted _CLD)
 !!                     04/16    (M.Mazoyer) New supersaturation fields
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!                   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 06/03/2019: correct XZWS entry
 !!
 !-------------------------------------------------------------------------------
 !
@@ -59,6 +62,7 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX
 IMPLICIT NONE
 
 TYPE FIELD_t
+  REAL, DIMENSION(:,:),   POINTER :: XZWS=>NULL()    ! significant sea wave
 !  REAL, DIMENSION(:,:,:), POINTER :: XUT=>NULL(),XVT=>NULL(),XWT=>NULL()
                                       ! U,V,W  at time t
   REAL, DIMENSION(:,:,:), POINTER :: XRUS=>NULL(),XRVS=>NULL(),XRWS=>NULL()
@@ -108,6 +112,7 @@ END TYPE FIELD_t
 
 TYPE(FIELD_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: FIELD_MODEL
 
+REAL, DIMENSION(:,:),   POINTER :: XZWS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XUT=>NULL(),XVT=>NULL(),XWT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XRUS=>NULL(),XRVS=>NULL(),XRWS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XRUS_PRES=>NULL(),XRVS_PRES=>NULL(),XRWS_PRES=>NULL()
@@ -133,6 +138,7 @@ REAL, DIMENSION(:,:,:), POINTER :: XSRC=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XSIGS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XCLDFR=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XRAINFR=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XCIT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XTHM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XPABSM=>NULL()
@@ -147,6 +153,7 @@ INTEGER, INTENT(IN) :: KFROM, KTO
 INTEGER :: IID,IRESP
 !
 ! Save current state for allocated arrays
+!FIELD_MODEL(KFROM)%XZWS=>XZWS !Done in FIELDLIST_GOTO_MODEL
 !FIELD_MODEL(KFROM)%XUT=>XUT !Done in FIELDLIST_GOTO_MODEL
 !FIELD_MODEL(KFROM)%XVT=>XVT !Done in FIELDLIST_GOTO_MODEL
 !FIELD_MODEL(KFROM)%XWT=>XWT !Done in FIELDLIST_GOTO_MODEL
@@ -182,6 +189,7 @@ FIELD_MODEL(KFROM)%XPABSM=>XPABSM
 FIELD_MODEL(KFROM)%XRCM=>XRCM
 !
 ! Current model is set to model KTO
+!XZWS=>FIELD_MODEL(KTO)%XZWS !Done in FIELDLIST_GOTO_MODEL
 !XUT=>FIELD_MODEL(KTO)%XUT !Done in FIELDLIST_GOTO_MODEL
 !XVT=>FIELD_MODEL(KTO)%XVT !Done in FIELDLIST_GOTO_MODEL
 !XWT=>FIELD_MODEL(KTO)%XWT !Done in FIELDLIST_GOTO_MODEL
diff --git a/src/MNH/modd_getn.f90 b/src/MNH/modd_getn.f90
index 7a583779d04dd284bda63e2f567b548931c21c26..bae3402d5f9a9453dbc6f7f0fa706e3755793aa3 100644
--- a/src/MNH/modd_getn.f90
+++ b/src/MNH/modd_getn.f90
@@ -52,6 +52,7 @@
 !!      V. Masson   01/2004   surface externalization (rm CGETSURF)
 !!                  05/2006   Remove EPS and LGETALL
 !!      M. Leriche  04/2010   add get indicators for pH in cloud and rain
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -102,6 +103,7 @@ TYPE GET_t
   CHARACTER (LEN=4)  :: CGETBL_DEPTH          ! Get indicator for the BL depth
   CHARACTER (LEN=4)  :: CGETSBL_DEPTH         ! Get indicator for the SBL depth
   CHARACTER (LEN=4)  :: CGETPHC,CGETPHR       ! Get indicator for the pH values
+  CHARACTER (LEN=4)  :: CGETZWS
                                 ! in cloud water and rainwater
 !
 END TYPE GET_t
@@ -133,6 +135,7 @@ CHARACTER (LEN=4), POINTER :: CGETBL_DEPTH=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETSBL_DEPTH=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETPHC=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETPHR=>NULL()
+CHARACTER (LEN=4), POINTER :: CGETZWS=>NULL()
 
 CONTAINS
 
@@ -179,6 +182,7 @@ CGETSRC=>GET_MODEL(KTO)%CGETSRC
 CGETCLDFR=>GET_MODEL(KTO)%CGETCLDFR
 CGETSRCT=>GET_MODEL(KTO)%CGETSRCT
 CGETCIT=>GET_MODEL(KTO)%CGETCIT
+CGETZWS=>GET_MODEL(KTO)%CGETZWS
 CGETCONV=>GET_MODEL(KTO)%CGETCONV
 CGETRAD=>GET_MODEL(KTO)%CGETRAD
 CGETCLOUD=>GET_MODEL(KTO)%CGETCLOUD
diff --git a/src/MNH/modd_lesn.f90 b/src/MNH/modd_lesn.f90
index dd37f5461e2c5e7c7146c82e8ef724ca066ae8d3..9fe76c3f8f7eacbc68b7724d4f0df26562d791d3 100644
--- a/src/MNH/modd_lesn.f90
+++ b/src/MNH/modd_lesn.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/modd_lesn.f90,v $ $Revision: 1.2.2.2.2.1.2.1.12.2 $ $Date: 2014/01/09 15:01:56 $
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
 !     ############### 
       MODULE MODD_LES_n
 !     ###############
@@ -22,13 +17,13 @@
 !!
 !!**  IMPLICIT ARGUMENTS
 !!    ------------------ 
-!!      None  
+!!      None
 !!
 !!    REFERENCE
 !!    ---------
 !!      Book2 of documentation of Meso-NH (module MODD_LES)
 !!      Technical Specifications Report of the Meso-NH (chapters 2 and 3)
-!!      
+!!
 !!
 !!    AUTHOR
 !!    ------
@@ -36,7 +31,7 @@
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!      Original    March 10, 1995                
+!!      Original    March 10, 1995
 !!
 !!       (J.Stein)  Sept. 25, 1995  add the model number in LES mode
 !!       J. Cuxart  Oct.   4, 1996  New time series
@@ -44,6 +39,8 @@
 !!       V. Masson  Nov.   6, 2002  LES budgets
 !!       O.Thouron  June,     2008  New radiation diagnostics
 !!                    10/2016 (C.Lac) Add droplet deposition
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
+!!                    02/2019 (C. Lac) Add rain fraction as a LES diagnostic
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -117,6 +114,7 @@ TYPE LES_t
   REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Cf=>NULL()  ! <CLDFR>
   REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_INDCf=>NULL()  ! <Cf> tq rc>0 (0 OU 1)
   REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_INDCf2=>NULL()  ! <Cf> tq rc>1E-5 (0 OU 1)
+  REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_RF=>NULL()  ! <RAINFR>
   REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Mf=>NULL()  ! <Mf> 
   REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_KHt=>NULL()! <Kh for thet
   REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_KHr=>NULL()! <Kh for qr>
@@ -647,20 +645,20 @@ TYPE LES_t
 !
   REAL, DIMENSION(:,:,:), POINTER :: XCORRk_WW=>NULL()   ! between w and w
 !
-!lw and sw fluxes up and down                                                 
-  REAL, DIMENSION(:,:), POINTER :: XLES_SWU   !mean on the domain of the sw_up flux                         
+!lw and sw fluxes up and down
+  REAL, DIMENSION(:,:), POINTER :: XLES_SWU => NULL()   !mean on the domain of the sw_up flux
                                                  !temporal serie
-  REAL, DIMENSION(:,:), POINTER :: XLES_SWD   !mean on the domain of the sw_down flux                       
+  REAL, DIMENSION(:,:), POINTER :: XLES_SWD => NULL()   !mean on the domain of the sw_down flux
                                                  !temporal serie
-  REAL, DIMENSION(:,:), POINTER :: XLES_LWU   !mean on the domain of the lw_up flux                          
+  REAL, DIMENSION(:,:), POINTER :: XLES_LWU => NULL()   !mean on the domain of the lw_up flux
                                                  !temporal serie
-  REAL, DIMENSION(:,:), POINTER :: XLES_LWD   !mean on the domain of the lw_down flux                        
+  REAL, DIMENSION(:,:), POINTER :: XLES_LWD => NULL()   !mean on the domain of the lw_down flux
                                                  !temporal serie
-  REAL, DIMENSION(:,:), POINTER :: XLES_DTHRADSW   !mean on the domain of dthrad_sw flux                        
+  REAL, DIMENSION(:,:), POINTER :: XLES_DTHRADSW => NULL()   !mean on the domain of dthrad_sw flux
                                                  !temporal serie
-  REAL, DIMENSION(:,:), POINTER :: XLES_DTHRADLW   !mean on the domain of dthrad_lw flux                        
+  REAL, DIMENSION(:,:), POINTER :: XLES_DTHRADLW => NULL()   !mean on the domain of dthrad_lw flux
                                                  !temporal serie
-  REAL, DIMENSION(:,:), POINTER :: XLES_RADEFF   ! effective radius                       
+  REAL, DIMENSION(:,:), POINTER :: XLES_RADEFF => NULL()   ! effective radius
 !-------------------------------------------------------------------------------
 !
 END TYPE LES_t
@@ -698,6 +696,7 @@ REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Rc=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Cf=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_INDCf=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_INDCf2=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_RF=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Mf=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_KHt=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_KHr=>NULL()
@@ -1125,6 +1124,7 @@ LES_MODEL(KFROM)%XLES_MEAN_Rc=>XLES_MEAN_Rc
 LES_MODEL(KFROM)%XLES_MEAN_Cf=>XLES_MEAN_Cf
 LES_MODEL(KFROM)%XLES_MEAN_INDCf=>XLES_MEAN_INDCf
 LES_MODEL(KFROM)%XLES_MEAN_INDCf2=>XLES_MEAN_INDCf2
+LES_MODEL(KFROM)%XLES_MEAN_RF=>XLES_MEAN_RF
 LES_MODEL(KFROM)%XLES_MEAN_Mf=>XLES_MEAN_Mf
 LES_MODEL(KFROM)%XLES_MEAN_KHt=>XLES_MEAN_KHt
 LES_MODEL(KFROM)%XLES_MEAN_KHr=>XLES_MEAN_KHr
@@ -1553,6 +1553,7 @@ XLES_MEAN_Rc=>LES_MODEL(KTO)%XLES_MEAN_Rc
 XLES_MEAN_Cf=>LES_MODEL(KTO)%XLES_MEAN_Cf
 XLES_MEAN_INDCf=>LES_MODEL(KTO)%XLES_MEAN_INDCf
 XLES_MEAN_INDCf2=>LES_MODEL(KTO)%XLES_MEAN_INDCf2
+XLES_MEAN_RF=>LES_MODEL(KTO)%XLES_MEAN_RF
 XLES_MEAN_Mf=>LES_MODEL(KTO)%XLES_MEAN_Mf
 XLES_MEAN_KHt=>LES_MODEL(KTO)%XLES_MEAN_KHt
 XLES_MEAN_KHr=>LES_MODEL(KTO)%XLES_MEAN_KHr
diff --git a/src/MNH/modd_lsfieldn.f90 b/src/MNH/modd_lsfieldn.f90
index 208f1d4d2bb3a8ae3cdd6b34a35324f76449d7a8..6274b8dd6075620ef5b74a9c58629da9b5884af1 100644
--- a/src/MNH/modd_lsfieldn.f90
+++ b/src/MNH/modd_lsfieldn.f90
@@ -36,6 +36,7 @@
 !!                                 2D arrays to store values at lateral boundaries
 !!                  20/05/06  Remove EPS
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !
@@ -55,12 +56,15 @@ TYPE LSFIELD_t
 !                              ! time t-dt for larger scales 
 !  REAL, DIMENSION(:,:,:), POINTER :: XLSRVM=>NULL() ! Rv (mixing ratio for vapor)
 !                              ! at time t-dt for larger scales 
+ REAL, DIMENSION(:,:),   POINTER :: XLSZWSM=>NULL() ! height of sea waves
   REAL, DIMENSION(:,:,:), POINTER :: XLSUS=>NULL(),XLSVS=>NULL(),XLSWS=>NULL() ! Tendency of 
                               ! U,V,W for larger scales 
   REAL, DIMENSION(:,:,:), POINTER :: XLSTHS=>NULL()     ! Tendency of 
                               ! theta for larger scales
   REAL, DIMENSION(:,:,:), POINTER :: XLSRVS=>NULL() ! Tendency of 
 !                              ! RV for larger scales
+REAL, DIMENSION(:,:),   POINTER :: XLSZWSS=>NULL() ! Tendency of 
+!                              ! sea wave for larger scales
 !    previously  present for LS for V * Prhodj
 !
 !  Large scale variables for horizontal lbc
@@ -104,8 +108,10 @@ TYPE(LSFIELD_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: LSFIELD_MODEL
 REAL, DIMENSION(:,:,:), POINTER :: XLSUM=>NULL(),XLSVM=>NULL(),XLSWM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSTHM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSRVM=>NULL()
+REAL, DIMENSION(:,:),   POINTER :: XLSZWSM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSUS=>NULL(),XLSVS=>NULL(),XLSWS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSTHS=>NULL()
+REAL, DIMENSION(:,:),   POINTER :: XLSZWSS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSRVS=>NULL()
 REAL, DIMENSION(:,:,:),   POINTER :: XLBXUM=>NULL(),XLBXVM=>NULL(),XLBXWM=>NULL()
 REAL, DIMENSION(:,:,:),   POINTER :: XLBXTHM=>NULL()
@@ -143,11 +149,13 @@ INTEGER, INTENT(IN) :: KFROM, KTO
 !LSFIELD_MODEL(KFROM)%XLSWM=>XLSWM !Done in FIELDLIST_GOTO_MODEL
 !LSFIELD_MODEL(KFROM)%XLSTHM=>XLSTHM !Done in FIELDLIST_GOTO_MODEL
 !LSFIELD_MODEL(KFROM)%XLSRVM=>XLSRVM !Done in FIELDLIST_GOTO_MODEL
+LSFIELD_MODEL(KFROM)%XLSZWSM=>XLSZWSM
 LSFIELD_MODEL(KFROM)%XLSUS=>XLSUS
 LSFIELD_MODEL(KFROM)%XLSVS=>XLSVS
 LSFIELD_MODEL(KFROM)%XLSWS=>XLSWS
 LSFIELD_MODEL(KFROM)%XLSTHS=>XLSTHS
 LSFIELD_MODEL(KFROM)%XLSRVS=>XLSRVS
+LSFIELD_MODEL(KFROM)%XLSZWSS=>XLSZWSS
 !LSFIELD_MODEL(KFROM)%XLBXUM=>XLBXUM !Done in FIELDLIST_GOTO_MODEL
 !LSFIELD_MODEL(KFROM)%XLBXVM=>XLBXVM !Done in FIELDLIST_GOTO_MODEL
 !LSFIELD_MODEL(KFROM)%XLBXWM=>XLBXWM !Done in FIELDLIST_GOTO_MODEL
@@ -199,11 +207,13 @@ LSFIELD_MODEL(KFROM)%NKLIN_LBYM=>NKLIN_LBYM
 !XLSWM=>LSFIELD_MODEL(KTO)%XLSWM !Done in FIELDLIST_GOTO_MODEL
 !XLSTHM=>LSFIELD_MODEL(KTO)%XLSTHM !Done in FIELDLIST_GOTO_MODEL
 !XLSRVM=>LSFIELD_MODEL(KTO)%XLSRVM !Done in FIELDLIST_GOTO_MODEL
+XLSZWSM=>LSFIELD_MODEL(KTO)%XLSZWSM
 XLSUS=>LSFIELD_MODEL(KTO)%XLSUS
 XLSVS=>LSFIELD_MODEL(KTO)%XLSVS
 XLSWS=>LSFIELD_MODEL(KTO)%XLSWS
 XLSTHS=>LSFIELD_MODEL(KTO)%XLSTHS
 XLSRVS=>LSFIELD_MODEL(KTO)%XLSRVS
+XLSZWSS=>LSFIELD_MODEL(KTO)%XLSZWSS
 !XLBXUM=>LSFIELD_MODEL(KTO)%XLBXUM !Done in FIELDLIST_GOTO_MODEL
 !XLBXVM=>LSFIELD_MODEL(KTO)%XLBXVM !Done in FIELDLIST_GOTO_MODEL
 !XLBXWM=>LSFIELD_MODEL(KTO)%XLBXWM !Done in FIELDLIST_GOTO_MODEL
diff --git a/src/MNH/modd_nesting.f90 b/src/MNH/modd_nesting.f90
index 077e976819222b8ea362026da445b3113b47bda1..d644d0260864d317790838b253b26c75aca6bac0 100644
--- a/src/MNH/modd_nesting.f90
+++ b/src/MNH/modd_nesting.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1995-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-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.
 !-----------------------------------------------------------------
 !     ###################
@@ -24,7 +24,7 @@
 !!    REFERENCE
 !!    ---------
 !!      Book2 of documentation of Meso-NH (module MODD_NESTING)
-!!       
+!!
 !!    AUTHOR
 !!    ------
 !!	J.P. Lafore   *Meteo France*
@@ -32,8 +32,9 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    18/08/95
-!!      updated     29/07/96  (J.P. Lafore) MY_NAME(m) introduction          
+!!      updated     29/07/96  (J.P. Lafore) MY_NAME(m) introduction
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -81,11 +82,11 @@ LOGICAL,SAVE,  DIMENSION(JPMODELMAX) :: L2D_NEST         ! Logical for 2D model
 LOGICAL,SAVE,  DIMENSION(JPMODELMAX) :: LPACK_NEST       ! Logical to compress 1D or 2D FM files of model m
 !
 TYPE REAL_FIELD2D_ALL
-    REAL, DIMENSION(:,:), POINTER :: XFIELD2D
+    REAL, DIMENSION(:,:), POINTER :: XFIELD2D => NULL()
 END TYPE REAL_FIELD2D_ALL
 
 TYPE REAL_FIELD1D_ALL
-    REAL, DIMENSION(:), POINTER :: XFIELD1D
+    REAL, DIMENSION(:), POINTER :: XFIELD1D => NULL()
 END TYPE REAL_FIELD1D_ALL
 !
 TYPE(REAL_FIELD2D_ALL), DIMENSION(JPMODELMAX), TARGET :: TXZS   ! orography of model m
diff --git a/src/MNH/modd_nudgingn.f90 b/src/MNH/modd_nudgingn.f90
index c4f4768bacd7ec1d74954871dcf574ef392c79bf..2bdadfb0f3c65b676df5f51f1b8f24c213e5dc7e 100644
--- a/src/MNH/modd_nudgingn.f90
+++ b/src/MNH/modd_nudgingn.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2006-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 modd 2006/05/24 18:05:50
-!-----------------------------------------------------------------
 !     ###################
       MODULE MODD_NUDGING_n
 !     ###################
@@ -32,6 +27,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original       15/05/06
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !!
 !-------------------------------------------------------------------------------
 !
@@ -49,8 +45,8 @@ END TYPE NUDGING_t
 
 TYPE(NUDGING_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: NUDGING_MODEL
 
-LOGICAL, POINTER :: LNUDGING   
-REAL, POINTER :: XTNUDGING  
+LOGICAL, POINTER :: LNUDGING  => NULL()
+REAL,    POINTER :: XTNUDGING => NULL()
 
 CONTAINS
 
diff --git a/src/MNH/modd_param_ecradn.f90 b/src/MNH/modd_param_ecradn.f90
index 988888427f73a72b906136430fc581646778aa82..a7bf0b344753be234bbed47285ed5880b1de3018 100644
--- a/src/MNH/modd_param_ecradn.f90
+++ b/src/MNH/modd_param_ecradn.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2017-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 modd 2006/11/23 17:28:26
-!-----------------------------------------------------------------
 !     ######################## 
       MODULE MODD_PARAM_ECRAD_n
 !     ########################
@@ -38,6 +33,7 @@
 !!    -------------
 !!      Original      29/05/2017 add ECRAD parameters as namelist
 !!      Q. Libois
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -213,7 +209,7 @@ LOGICAL, POINTER :: LAPPROXSWUPDATE=>NULL()
 LOGICAL, POINTER :: LAPPROXLWUPDATE=>NULL()
 CHARACTER (LEN=255), POINTER :: CDATADIR=>NULL()
 #ifdef MNH_ECRAD
-type(config_type), pointer :: rad_config
+type(config_type), pointer :: rad_config => NULL()
 #endif
 CONTAINS
 
diff --git a/src/MNH/modd_radiationsn.f90 b/src/MNH/modd_radiationsn.f90
index 455a2bc04fccdd17251079516537718561c1c621..ec51e9e32cf0b37c8915903f16f156d690234f55 100644
--- a/src/MNH/modd_radiationsn.f90
+++ b/src/MNH/modd_radiationsn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1995-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-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.
 !-----------------------------------------------------------------
 !      ########################
@@ -37,6 +37,7 @@
 !!                    03/03/03 (V. Masson) surface radiative schemes and
 !!                                         multiple wavelengths for surface SW
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !!
 !-------------------------------------------------------------------------------
 !
@@ -108,18 +109,18 @@ TYPE RADIATIONS_t
 !  REAL, DIMENSION(:,:,:),       POINTER :: XSCA_ALB=>NULL()   ! scattered albedo for each spectral band
 !  REAL, DIMENSION(:,:,:),       POINTER :: XEMIS=>NULL()      ! emissivity
 !  REAL, DIMENSION(:,:),         POINTER :: XTSRAD=>NULL()      ! surface temperature
-  REAL, DIMENSION(:,:),         POINTER :: XSEA=>NULL()       ! sea fraction
+  REAL, DIMENSION(:,:),         POINTER :: XSEA=>NULL()        ! sea fraction
 !
 !  REAL, DIMENSION(:,:),         POINTER :: XZENITH=>NULL()    ! zenithal angle  (radian from the vertical)
 !  REAL, DIMENSION(:,:),         POINTER :: XAZIM=>NULL()      ! azimuthal angle (radian from N, clockwise)
-  REAL, DIMENSION(:,:),         POINTER :: XALBUV=>NULL()     ! UV albedo
-  REAL, DIMENSION(:,:,:),       POINTER :: XSWU    !SW_UP
-  REAL, DIMENSION(:,:,:),       POINTER :: XSWD    !SW_DOWN 
-  REAL, DIMENSION(:,:,:),       POINTER :: XLWU    !LW_UP 
-  REAL, DIMENSION(:,:,:),       POINTER :: XLWD    !LW_DOWN 
-  REAL, DIMENSION(:,:,:),       POINTER :: XDTHRADSW    !DTHRAD SW
-  REAL, DIMENSION(:,:,:),       POINTER :: XDTHRADLW    !DTHRAD LW
-  REAL, DIMENSION(:,:,:),       POINTER :: XRADEFF    !effective radius
+  REAL, DIMENSION(:,:),         POINTER :: XALBUV=>NULL()      ! UV albedo
+  REAL, DIMENSION(:,:,:),       POINTER :: XSWU => NULL()      ! SW_UP
+  REAL, DIMENSION(:,:,:),       POINTER :: XSWD => NULL()      ! SW_DOWN
+  REAL, DIMENSION(:,:,:),       POINTER :: XLWU => NULL()      ! LW_UP
+  REAL, DIMENSION(:,:,:),       POINTER :: XLWD => NULL()      ! LW_DOWN
+  REAL, DIMENSION(:,:,:),       POINTER :: XDTHRADSW => NULL() ! DTHRAD SW
+  REAL, DIMENSION(:,:,:),       POINTER :: XDTHRADLW => NULL() ! DTHRAD LW
+  REAL, DIMENSION(:,:,:),       POINTER :: XRADEFF   => NULL() ! effective radius
 !
 END TYPE RADIATIONS_t
 
diff --git a/src/MNH/modd_salt.f90 b/src/MNH/modd_salt.f90
index 01f908fe1e56873f0a8c7db97be309d50a94aa63..907b95672080fb541fd8a47c907051f9fd893687 100644
--- a/src/MNH/modd_salt.f90
+++ b/src/MNH/modd_salt.f90
@@ -35,6 +35,7 @@
 !!     -------------
 !! 
 !!     2014 P.Tulet modif XINIRADIUS_SLT and XN0MIN_SLT
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 USE MODD_PARAMETERS, ONLY: JPMODELMAX
 !!--------------------------------------------------------------------
@@ -42,51 +43,64 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX
 !!     ------------
 IMPLICIT NONE
 !
-
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+LOGICAL      :: LSLTMACC  = .FALSE.   ! switch to active pronostic sea salts  from MACC
 LOGICAL      :: LSALT     = .FALSE.   ! switch to active pronostic sea salts
+LOGICAL      :: LONLY     = .FALSE.
+LOGICAL      :: LREAD_ONLY_HS_MACC     = .FALSE.
 LOGICAL      :: LSLTINIT  = .FALSE.   ! switch to initialize pronostic sea salts
 LOGICAL      :: LSLTPRES  = .FALSE.   ! switch to know if pronostic salts exist            
 LOGICAL,DIMENSION(JPMODELMAX)  :: LDEPOS_SLT = .FALSE.    ! switch to SLT wet depositon
-INTEGER      :: NMODE_SLT= 3  ! number of sea salt modes (max 3; default = 3)
+
+!INTEGER      :: NMODE_SLT= 3  ! number of sea salt modes (max 3; default = 3)
+INTEGER :: NMODE_SLT= 5  ! number of sea salt modes (max 5; default = 3)
 !
 CHARACTER(LEN=9),DIMENSION(:),ALLOCATABLE :: CDESLTNAMES
-CHARACTER(LEN=9),DIMENSION(6), PARAMETER  :: YPDESLT_INI = &
-     (/'DESLTM31C','DESLTM32C','DESLTM33C' &
-      ,'DESLTM31R','DESLTM32R','DESLTM33R' /)
-CHARACTER(LEN=6),DIMENSION(:),ALLOCATABLE :: CSALTNAMES
-CHARACTER(LEN=6),DIMENSION(9), PARAMETER  :: YPSALT_INI = &
-     (/'SLTM01','SLTM31','SLTM61' &
-      ,'SLTM02','SLTM32','SLTM62' &
-      ,'SLTM03','SLTM33','SLTM63' /)
-! Set the order of the loops sorted by importance
-!This means that if a user choses 1 mode it will have characteristics of mode 2
-!2 modes will be mode 2 & 3, whereas 3 modes will modes 1, 2 and 3
-INTEGER, DIMENSION(3),PARAMETER  :: JPSALTORDER = (/3, 2, 1/)
-! 
-REAL, ALLOCATABLE :: XSLTMSS(:,:,:)   ! [kg/m3] total mass concentration of sea salt
+CHARACTER(LEN=6),DIMENSION(:), ALLOCATABLE :: CSALTNAMES
+CHARACTER(LEN=9),DIMENSION(10), PARAMETER  :: YPDESLT_INI = &
+    (/'DESLTM31C','DESLTM32C','DESLTM33C','DESLTM34C', 'DESLTM35C', &
+      'DESLTM31R','DESLTM32R','DESLTM33R', 'DESLTM34R','DESLTM35R' /)
+
+CHARACTER(LEN=6),DIMENSION(15), PARAMETER  :: YPSALT_INI = &
+                  (/'SLTM01','SLTM31','SLTM61',&
+                    'SLTM02','SLTM32','SLTM62',&
+                    'SLTM03','SLTM33','SLTM63',&
+                    'SLTM04','SLTM34','SLTM64',&
+                    'SLTM05','SLTM35','SLTM65' /)
+
+INTEGER, DIMENSION(5),PARAMETER  :: JPSALTORDER = (/3, 2, 1, 5, 4/)
+
+!Test Thomas (definir rayons et sigma ici si on veut desactiver initialisation MACC)
+
+!REAL, DIMENSION(5) :: XINIRADIUS_SLT,XINISIG_SLT,XN0MIN_SLT
+
+!Initial dry number median radius (um) from Ova et al., 2014
+REAL,DIMENSION(5)    :: XINIRADIUS_SLT=  (/0.009, 0.021, 0.045, 0.115, 0.415/)
+!Initial, standard deviation from  Ova et al., 2014
+REAL,DIMENSION(5)      :: XINISIG_SLT =  (/ 1.37, 1.5, 1.42, 1.53, 1.85 /)
+!Minimum allowed number concentration for any mode (#/m3)
+REAL,DIMENSION(5)  :: XN0MIN_SLT  = (/1.e1 , 1.e1, 1.e1, 1., 1.e-4 /)
+
+!Test Thomas
+
+REAL, DIMENSION(:,:,:), ALLOCATABLE :: XSLTMSS   ! [kg/m3] total mass concentration of sea salt
 !
 ! aerosol lognormal parameterization
-CHARACTER(LEN=4)  :: CRGUNITS   = 'MASS'  ! type of log-normal geometric mean radius
+CHARACTER(LEN=4)  :: CRGUNITS   = 'NUMB'  ! type of log-normal geometric mean radius
 !                                         !given in namelist (mass on number)
 !
 LOGICAL      :: LRGFIX_SLT   = .FALSE.    ! switch to fix RG (sedimentation)
 LOGICAL      :: LVARSIG_SLT  = .FALSE.    ! switch to active pronostic dispersion for all modes
 LOGICAL      :: LSEDIMSALT   = .FALSE.    ! switch to active aerosol sedimentation
 REAL         :: XSIGMIN_SLT   = 1.20      ! minimum dispersion value for sea salt mode
+!REAL         :: XSIGMIN_SLT   = 0.      ! minimum dispersion value for sea salt mode
 REAL         :: XSIGMAX_SLT   = 3.60      ! maximum dispersion value for sea salt mode
 REAL         :: XCOEFRADMAX_SLT  = 10.    ! maximum increasement for Rg mode sea salt
-REAL         :: XCOEFRADMIN_SLT  = 0.1    ! maximum decreasement for Rg mode sea salt
-!
+REAL         :: XCOEFRADMIN_SLT  = 0.1    ! minimum decreasement for Rg mode sea salt
+!REAL         :: XCOEFRADMIN_SLT  = 0.    ! minimum decreasement for Rg mode sea salt
 
-!Initial dry number median radius (um) from Vignati et al., 2001
-!REAL, DIMENSION(3)          :: XINIRADIUS_SLT= (/0.2, 2., 12./)
-!Initial, standard deviation from Vignati et al., 2001
-!REAL, DIMENSION(3)          :: XINISIG_SLT =  (/1.9, 2., 3./)
-!Initial dry number median radius (um) from Schultz et al., 2004
-REAL, DIMENSION(3)          :: XINIRADIUS_SLT= 0.5*(/0.28, 2.25, 15.32/)
-!Initial, standard deviation from  Schultz et al., 2004
-REAL, DIMENSION(3)          :: XINISIG_SLT =  (/1.9, 2., 2./)
-!Minimum allowed number concentration for any mode (#/m3)
-REAL, DIMENSION(3)          :: XN0MIN_SLT  = (/1.e1 , 1. , 1.e-4 /)
+
+!
+! -- PIERRE / MARINE SSA DUST - MODIF --
 !
 END MODULE MODD_SALT
diff --git a/src/MNH/modd_spawn.f90 b/src/MNH/modd_spawn.f90
index 41f83c8a1d5ede0151a11e0ca4c1329dd1a40150..8d432e588f5fbce395ee2385fb50883f8eb5f41e 100644
--- a/src/MNH/modd_spawn.f90
+++ b/src/MNH/modd_spawn.f90
@@ -33,6 +33,7 @@
 !!      Original    12/07/99
 !!      Modification 08/04/04   (G.Jaubert) Spawning 1 option
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -79,12 +80,14 @@ REAL,DIMENSION(:,:,:,:),SAVE,POINTER :: XRT1  => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XUT1    => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XVT1    => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XWT1    => NULL()
+REAL,DIMENSION(:,:),  SAVE,POINTER :: XZWS1   => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSRCT1  => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSIGS1  => NULL()
 TYPE(DATE_TIME),      SAVE,POINTER :: TDTCUR1 => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSUM1  => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSVM1  => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSWM1  => NULL()
+REAL,DIMENSION(:,:)  ,SAVE,POINTER :: XLSZWSM1=> NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSTHM1 => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSRVM1 => NULL()
 !
diff --git a/src/MNH/modd_sub_modeln.f90 b/src/MNH/modd_sub_modeln.f90
index 50cd6ec7b1c58144a357c9c1d343ef56eff62093..48bfede318410cd24a6a6431857a57c50da89ed0 100644
--- a/src/MNH/modd_sub_modeln.f90
+++ b/src/MNH/modd_sub_modeln.f90
@@ -1,11 +1,12 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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.
 !-----------------------------------------------------------------
 ! Modifications:
 !  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  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
 !-----------------------------------------------------------------
 !     #################
       MODULE MODD_SUB_MODEL_n
@@ -17,19 +18,19 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX
 IMPLICIT NONE
 
 TYPE SUB_MODEL_t
-  TYPE(LIST_ll), POINTER :: TZFIELDS_ll,TZLSFIELD_ll,TZFIELDM_ll
+  TYPE(LIST_ll), POINTER :: TZFIELDS_ll => NULL(), TZLSFIELD_ll => NULL(), TZFIELDM_ll => NULL()
                        ! list of fields to update halo
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2M_ll, TZLSHALO2_ll
+  TYPE(HALO2LIST_ll), POINTER :: TZHALO2M_ll => NULL(), TZLSHALO2_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  ! for meteorological scalars
-  TYPE(LIST_ll), POINTER :: TZFIELDMT_ll ! for momentum
-  TYPE(LIST_ll), POINTER :: TZFIELDSC_ll  ! for tracer scalars
+  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
 ! list of fields for the halo updates (2nd layer) at time t
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2T_ll
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2MT_ll
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2SC_ll
+  TYPE(HALO2LIST_ll), POINTER :: TZHALO2T_ll  => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: TZHALO2MT_ll => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: TZHALO2SC_ll => NULL()
   INTEGER :: IBAK, IOUT          ! number of the backup / output
   REAL*8,DIMENSION(2)    :: XT_START
   REAL*8,DIMENSION(2)    :: XT_STORE,XT_BOUND,XT_GUESS
diff --git a/src/MNH/modd_timez.f90 b/src/MNH/modd_timez.f90
index bf8bcbd11bd9acbed926181f9113595557bb62bc..9c9235ed4da7b7779e6ac6cbd3007a64e2b62dff 100644
--- a/src/MNH/modd_timez.f90
+++ b/src/MNH/modd_timez.f90
@@ -1,7 +1,10 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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.
+!-----------------------------------------------------------------
+! Modifications
+!  P. Wautelet 08/02/2019: add missing NULL association for pointers
 MODULE MODD_TIMEZ
 
   USE MODD_PARAMETERS, ONLY: JPMODELMAX
@@ -26,7 +29,7 @@ MODULE MODD_TIMEZ
      REAL*8,DIMENSION(2) :: T_WRIT3D_WRIT = 0.0
      REAL*8,DIMENSION(2) :: T_WRIT3D_WAIT = 0.0
      REAL*8,DIMENSION(2) :: T_WRIT3D_ALL  = 0.0
-     
+
      REAL*8,DIMENSION(2) :: T_WRIT2D_GATH = 0.0
      REAL*8,DIMENSION(2) :: T_WRIT2D_WRIT = 0.0
      REAL*8,DIMENSION(2) :: T_WRIT2D_ALL  = 0.0
@@ -51,7 +54,7 @@ MODULE MODD_TIMEZ
 
 TYPE(SUB_TIMEZ_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: SUB_TIMEZN
 
-TYPE(SUB_TIMEZ_t), POINTER  :: TIMEZ
+TYPE(SUB_TIMEZ_t), POINTER  :: TIMEZ => NULL()
 
 CONTAINS
 
diff --git a/src/MNH/mode_salt_psd.f90 b/src/MNH/mode_salt_psd.f90
index e361c1dfac7aa5e7831247959f959777e4d6eec4..dc5a8611ef01cbc1505633c4b5a97c2a9848e699 100644
--- a/src/MNH/mode_salt_psd.f90
+++ b/src/MNH/mode_salt_psd.f90
@@ -23,9 +23,14 @@
 !!
 !!    MODIFICATIONS
 !!    -------------
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !-------------------------------------------------------------------------------
 !
+! ++ JORIS DEBUG ++
+USE MODD_CONF, ONLY : NVERB
+! -- JORIS DEBUG --
+!
 USE MODD_CSTS_SALT         !Constants which are important for sea salt calculations
 USE MODD_SALT              !Dust module which contains even more constants
 USE MODD_CST, ONLY :    &
@@ -137,6 +142,11 @@ ALLOCATE (ZINIRADIUS(NMODE_SLT))
     
 ZSV(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
 
+! ++ JORIS DBG ++
+ZRG(:,:,:)= XMNH_TINY
+ZM(:,:,:,:)= XMNH_TINY
+! -- JORIS DBG --
+
 DO JN=1,NMODE_SLT
   IMODEIDX = JPSALTORDER(JN)
   !Calculations here are for one mode only
@@ -235,6 +245,10 @@ DO JN=1,NMODE_SLT
          * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
          / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
     ZM(:,:,:,NM3(JN)) = MAX(ZM(:,:,:,NM3(JN)), ZMMIN(NM3(JN)))
+!Modif salt/dust 5.1. beg
+       PSVT(:,:,:,JN) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+!Modif salt/dust 5.1. end
 
     ZM(:,:,:,NM0(JN))=  ZM(:,:,:,NM3(JN))/&
        ((ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(XINISIG_SLT(JPSALTORDER(JN)))**2))
@@ -280,6 +294,21 @@ DO JN=1,NMODE_SLT
   END IF
   !   
   !Get number median radius (eqn. 7 in Orilam manuscript)
+  ! ++ JORIS DBG ++
+  IF (NVERB ==15) THEN
+    WRITE(*,*) 'SHAPE(ZM) =', SHAPE(ZM)
+    WRITE(*,*) 'MINVAL(ZM), MAXVAL(ZM) =', MINVAL(ZM), MAXVAL(ZM)
+    WRITE(*,*) 'MINLOC(ZM), MAXLOC(ZM) =', MINLOC(ZM), MAXLOC(ZM)
+    WRITE(*,*) 'SHAPE(ZRG) =', SHAPE(ZRG)
+    WRITE(*,*) 'MINVAL(ZRG), MAXVAL(ZRG) =', MINVAL(ZRG), MAXVAL(ZRG)
+    WRITE(*,*) 'MINLOC(ZRG), MAXLOC(ZRG) =', MINLOC(ZRG), MAXLOC(ZRG)
+    WRITE(*,*) 'XSIXTH_SALT =', XSIXTH_SALT
+    WRITE(*,*) 'JN =', JN
+    WRITE(*,*) 'NM0 =', NM0
+    WRITE(*,*) 'NM3 =', NM3
+    WRITE(*,*) 'NM6 =', NM6
+  ENDIF
+  ! -- JORIS DBG --
   ZRG(:,:,:)=    &
           (      &
           ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))    &
@@ -414,7 +443,9 @@ END SUBROUTINE PPP2SALT
 !
 
     ! PSVT need to be positive
-    PSVT(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
+!Modif salt/dust 5.1. beg
+!    PSVT(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
+!Modif salt/dust 5.1. end
     
     DO JN=1,NMODE_SLT
     IMODEIDX = JPSALTORDER(JN)
@@ -629,8 +660,10 @@ ALLOCATE (ZSIGMA(SIZE(PSVT,1)))
 ALLOCATE (ZRG(SIZE(PSVT,1)))
 ALLOCATE (ZSV(SIZE(PSVT,1), SIZE(PSVT,2)))
 ALLOCATE (ZINIRADIUS(NMODE_SLT))
-    
+
+!Modif salt/dust 5.1. beg
 ZSV(:,:) = MAX(PSVT(:,:), XMNH_TINY)
+!Modif salt/dust 5.1. end
 
 DO JN=1,NMODE_SLT
   IMODEIDX = JPSALTORDER(JN)
diff --git a/src/MNH/mode_salt_psd_wet.f90 b/src/MNH/mode_salt_psd_wet.f90
new file mode 100644
index 0000000000000000000000000000000000000000..cb5af52f838a83cd4997f9fad234eb1919262d24
--- /dev/null
+++ b/src/MNH/mode_salt_psd_wet.f90
@@ -0,0 +1,926 @@
+!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
+!ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!ORILAM_LIC for details.
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/Attic/mode_salt_psd.f90,v $ $Revision: 1.1.2.1.2.1.2.1.2.1 $ $Date: 2013/07/12 13:55:08 $
+!-----------------------------------------------------------------
+!!   ########################
+     MODULE MODE_SALT_PSD_WET
+!!   ########################
+!!
+!!    PURPOSE
+!!    -------
+!! MODULE SALT PSD (Particle Size Distribution)
+!! Purpose: Contains subroutines to convert from transported variables (ppp)
+!! to understandable aerosol variables, e.g. #/m3, kg/m3, sigma, R_{n}
+!!
+!!    AUTHOR
+!!    ------
+!!      Alf Grini (CNRM/GMEI)
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      M. Claeys - (CNRM-GMEI) 2015
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!-------------------------------------------------------------------------------
+!
+USE MODD_CSTS_SALT         !Constants which are important for sea salt calculations
+USE MODD_SALT              !Dust module which contains even more constants
+USE MODD_CST, ONLY :    &
+       XPI              & !Definition of pi
+      ,XBOLTZ           & ! Boltzman constant 
+      ,XAVOGADRO        & ![molec/mol] avogadros number
+      ,XG               & ! Gravity constant
+      ,XP00             & ! Reference pressure
+      ,XMD              & ![kg/mol] molar weight of air
+      ,XRD              & ! Gaz constant for dry air
+      ,XCPD             & !  Cpd (dry air)
+      ,XRHOLW           & ! Densité de l'eau
+      ,XMV              & ! Molar weight of water
+      ,XALPI            &
+      ,XBETAI           &
+      ,XGAMI            &
+      ,XTT             
+USE MODD_CST, ONLY : XMNH_TINY
+USE MODE_THERMO             ! Pour calcul de la pression de vapeur saturante
+USE MODD_PARAM_n,    ONLY : CCLOUD
+
+
+!
+IMPLICIT NONE
+!
+CONTAINS
+!
+!!   ############################################################
+  SUBROUTINE PPP2SALT_WET(          &
+       PSVT                         & !I [ppp] input scalar variables (moment of distribution)
+       , PRHODREF                   & !I [kg/m3] density of air       
+       , PPABST                     & !I Pression
+       , PTHT                       & !I Potential temperature
+       , PRT                        & !I Large scale vapor mixing ratio
+       , PSIG3D                     & !O [-] standard deviation of aerosol distribution
+       , PRG3D                      & !O [um] number median wet radius of aerosol distribution
+       , PN3D                       & !O [#/m3] number concentration of aerosols
+       , PMASS3D                    & !O [kg/m3]wet mass concentration of aerosol
+       , PM3D                       & !O aerosols moments 0, 3 and 6
+       , PDENSITY_WET               & !O [g/m2] density of wet aerosol (water + salt)
+       )
+!!   ############################################################
+!
+!!
+!!    PURPOSE
+!!    -------
+!!    Translate the three moments M0, M3 and M6 given in ppp into
+!!    Values which can be understood more easily (R, sigma, N, M)
+!!    
+!!    Calcul the wet radius of the particles, using RH and Gerber (1985) relation
+!!    The mass of the aerosols is calculated using the new radius and the
+!density of water and salt
+!!
+!!    CALLING STRUCTURE NOTE: OPTIONAL VARIABLES
+!!    -------
+!!    CALL PPP2AEROS(PSVT, PRHODREF, PSIG3D=SIGVAR,  &
+!!       PRG3D=RVAR, PN3D=NVAR, PM3D=MASSVAR)
+!!
+!!    REFERENCE
+!!    ---------
+!!    none
+!!
+!!    AUTHOR
+!!    ------
+!!    Pierre TULET (LA)
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!    2005 Alf Grini (CNRM)
+!!    2006 Jean-Pierre Chaboureau (LA)
+!!    2015 Marine Claeys (CNRM)
+!!    EXTERNAL
+!!    --------
+!!    None
+!!
+    IMPLICIT NONE
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.     DECLARATIONS
+!               ------------
+!
+!*      0.1    declarations of arguments
+!
+REAL, DIMENSION(:,:,:,:),           INTENT(INOUT) :: PSVT      !I [ppp] first moment
+REAL, DIMENSION(:,:,:),             INTENT(IN)    :: PRHODREF  !I [kg/m3] density of air
+REAL, DIMENSION(:,:,:),             INTENT(IN)    :: PPABST    !I Pression
+REAL, DIMENSION(:,:,:),             INTENT(IN)    :: PTHT      !I Potential temperature
+REAL, DIMENSION(:,:,:,:),           INTENT(IN)    :: PRT       !I Large scale vapor mixing ratio
+
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PSIG3D   !O [-] standard deviation
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PRG3D    !O [um] number median radius 
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PN3D     !O [#/m3] number concentration
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PMASS3D  !O [kg_{aer}/m3] wet mass concentration
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PM3D     !O aerosols moments 
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PDENSITY_WET  !O Density of wet aerosol (water + salt) 
+!
+!
+!*      0.2    declarations local variables
+!
+REAL                                  :: ZRHOI    ! [kg/m3] density of aerosol
+REAL                                  :: ZRHOLW   ! [kg/m3] density of water
+REAL                                  :: ZMI      ! [kg/mol] molar weight of aerosol
+REAL                                  :: ZMV      ! [kg/mol] molar weight of water
+REAL                                  :: ZRGMIN   ! [um] minimum radius accepted
+REAL                                  :: ZSIGMIN  ! minimum standard deviation accepted
+
+REAL, PARAMETER                       :: C1 = 0.7674
+REAL, PARAMETER                       :: C2 = 3.079
+REAL, PARAMETER                       :: C3 = 2.572E-11
+REAL, PARAMETER                       :: C4 = -1.424
+
+REAL,DIMENSION(:,:,:,:), ALLOCATABLE  :: ZM       ! [aerosol units] local array which goes to output later
+REAL,DIMENSION(:,:,:,:), ALLOCATABLE  :: ZSV      ! [sea salts moment concentration]
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN    ! [aerosol units] minimum values for N, sigma, M
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM0      ! [idx] index for Mode 0 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM3      ! [idx] indexes for Mode 3 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM6      ! [idx] indexes for Mode 6 in passed variables
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS      ! initial mean radius
+INTEGER                               :: JN,IMODEIDX,JJ  ! [idx] loop counters
+
+REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3), NMODE_SLT)  :: ZMASS3D, &
+                                                                       ZMASS3D_SLT         ![kg/m3] mass of one sea salt mode
+
+REAL,DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3))  :: ZTEMP, ZREHU, ZREHU_tmp
+REAL,DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3), NMODE_SLT)  :: ZDENSITY_WET      ! [g/m2] Aerosol wet density (salt + water) 
+REAL,DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3))  :: ZSIGMA            ! [-] standard deviation 
+REAL,DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3))  :: ZRG, ZRG_WET      ! [um] number median radius, and nuber median wet radius 
+!
+!-------------------------------------------------------------------------------
+!
+
+!+ Marine
+!  Calcul de RH
+! Pris dans write_lfi_for_diag pour le calcul de RH
+ZTEMP(:,:,:) = PTHT(:,:,:) * (PPABST(:,:,:) / XP00)**(XRD/XCPD)
+
+ZREHU_tmp(:,:,:) = SM_FOES(ZTEMP(:,:,:))  ! SM_FOES = to compute saturation vapor pressure
+ZREHU_tmp(:,:,:) = (XMV / XMD) * ZREHU_tmp(:,:,:) / (PPABST(:,:,:) - ZREHU_tmp(:,:,:))
+!XMD,XMV      ! Molar mass of dry air and molar mass of vapor, PPABST: pression
+
+ZREHU(:,:,:) = PRT(:,:,:,1) / ZREHU_tmp(:,:,:)
+
+IF (CCLOUD(1:3) =='ICE' .OR. CCLOUD =='C3R5')  THEN
+  WHERE ( ZTEMP(:,:,:) <  XTT) ! XTT : Triple point temperature
+    ZREHU_tmp(:,:,:) = EXP( XALPI - XBETAI/ZTEMP(:,:,:) & ! XALPI,XBETAI,XGAMI ! Constants for saturation vapor pressure 
+                       - XGAMI*ALOG(ZTEMP(:,:,:)) ) !saturation over ice
+    ZREHU_tmp(:,:,:) = (XMV / XMD) * ZREHU_tmp(:,:,:) / (PPABST(:,:,:) - ZREHU_tmp(:,:,:))
+    ZREHU(:,:,:) = PRT(:,:,:,1) / ZREHU_tmp(:,:,:)
+  END WHERE
+END IF
+
+ZREHU(:,:,:) = MIN(MAX(ZREHU(:,:,:), 0.02),0.95)
+
+
+!        1.1    initialisation 
+!
+!Calculations here are for one mode only
+!
+ALLOCATE (NM0(NMODE_SLT))
+ALLOCATE (NM3(NMODE_SLT))
+ALLOCATE (NM6(NMODE_SLT))
+ALLOCATE (ZM(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3), NMODE_SLT*3))
+ALLOCATE (ZMMIN(NMODE_SLT*3))
+ALLOCATE (ZSV(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3), SIZE(PSVT,4)))
+ALLOCATE (ZINIRADIUS(NMODE_SLT))
+    
+ZSV(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
+
+DO JN = 1, NMODE_SLT
+  IMODEIDX = JPSALTORDER(JN)
+  !Calculations here are for one mode only
+  IF (CRGUNITS == "MASS") THEN
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
+  ELSE
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
+  END IF
+
+  !Set counter for number, M3 and M6
+  NM0(JN) = 1 + (JN - 1) * 3
+  NM3(JN) = 2 + (JN - 1) * 3
+  NM6(JN) = 3 + (JN - 1) * 3
+  !Get minimum values possible
+  ZMMIN(NM0(JN)) = XN0MIN_SLT(IMODEIDX)
+  ZRGMIN         = ZINIRADIUS(JN)
+  IF (LVARSIG_SLT) THEN
+    ZSIGMIN = XSIGMIN_SLT
+  ELSE
+    ZSIGMIN = XINISIG_SLT(IMODEIDX)
+  ENDIF
+  ZMMIN(NM3(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**3)*EXP(4.5 * LOG(ZSIGMIN)**2) 
+  ZMMIN(NM6(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**6)*EXP(18. * LOG(ZSIGMIN)**2)
+END DO
+!
+!Set density of aerosol, here sea salt (kg/m3) and water
+ZRHOI = XDENSITY_SALT
+ZRHOLW = XRHOLW
+!Set molecular weight of sea salt and water!NOTE THAT THIS IS NOW IN KG
+ZMI   = XMOLARWEIGHT_SALT
+ZMV   = XMV
+!
+!
+DO JN = 1, NMODE_SLT
+  !
+  IF (LVARSIG_SLT) THEN ! give M6 (case of variable standard deviation)
+  !
+  !Get number concentration (#/molec_{air}==>#/m3)
+    ZM(:,:,:,NM0(JN))=                         &
+         ZSV(:,:,:,1+(JN-1)*3)                 & !#/molec_{air}
+         * XAVOGADRO                           & !==>#/mole
+         / XMD                                 & !==>#/kg_{air}
+         * PRHODREF(:,:,:)                       !==>#/m3
+  ! 
+  !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+    ZM(:,:,:,NM3(JN)) =                        &
+         ZSV(:,:,:,2+(JN-1)*3)                 & !molec_{aer}/molec_{aer}
+         * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+         * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+         * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+         * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+         / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+     !Limit mass concentration to minimum value
+    ZM(:,:,:,NM3(JN)) = MAX(ZM(:,:,:,NM3(JN)), ZMMIN(NM3(JN)))
+  ! 
+    ZM(:,:,:,NM6(JN)) = ZSV(:,:,:,3+(JN-1)*3)  & !um6/molec_{air}*(cm3/m3)
+         * 1.d-6                               & !==> um6/molec_{air}
+         * XAVOGADRO                           & !==> um6/mole_{air}
+         / XMD                                 & !==> um6/kg_{air}
+         * PRHODREF(:,:,:)                       !==> um6/m3_{air}
+     !Limit m6 concentration to minimum value
+    ZM(:,:,:,NM6(JN)) =  MAX(ZM(:,:,:,NM6(JN)), ZMMIN(NM6(JN)))
+  !
+  !Get sigma (only if sigma is allowed to vary)
+    !Get intermediate values for sigma M3^2/(M0*M6) (ORILAM paper, eqn 8)
+    ZSIGMA(:,:,:)=ZM(:,:,:,NM3(JN))**2/(ZM(:,:,:,NM0(JN))*ZM(:,:,:,NM6(JN)))
+    !Limit the intermediate value, can not be larger than 1
+    ZSIGMA(:,:,:)=MIN(1-1E-10,ZSIGMA(:,:,:))
+    !Limit the value for intermediate, can not be smaller than 0
+    ZSIGMA(:,:,:)=MAX(1E-10,ZSIGMA(:,:,:))
+    !Calculate log(sigma)
+    ZSIGMA(:,:,:)= LOG(ZSIGMA(:,:,:))
+    !Finally get the real sigma the negative sign is because of 
+    !The way the equation is written (M3^2/(M0*M6)) instead of (M0*M6)/M3^3
+    ZSIGMA(:,:,:)= EXP(1./3.*SQRT(-ZSIGMA(:,:,:)))
+    !Limit the value to reasonable ones
+    ZSIGMA(:,:,:) =  MAX( XSIGMIN_SLT, MIN( XSIGMAX_SLT, ZSIGMA(:,:,:) ) )
+
+  !
+    !Put back M6 so that it fits the sigma which is possibly modified above
+    !The following makes M6 consistent with N, R, SIGMA
+    ZM(:,:,:,NM6(JN)) = ZM(:,:,:,NM0(JN)) &
+         * ( (ZM(:,:,:,NM3(JN))/ZM(:,:,:,NM0(JN)))**(1./3.) &
+         * exp(-(3./2.)*log(ZSIGMA(:,:,:))**2))**6 &
+         * exp(18.*log(ZSIGMA(:,:,:))**2)
+
+  ELSE ! compute M6 from M0, M3 and SIGMA
+    ! 
+    ZSIGMA(:,:,:) = XINISIG_SLT(JPSALTORDER(JN))
+    IF (LRGFIX_SLT) THEN
+
+    !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+    ZM(:,:,:,NM3(JN)) =                        &
+         ZSV(:,:,:,JN)                         & !molec_{aer}/molec_{aer}
+         * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+         * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+         * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+         * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+         / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+
+    ZM(:,:,:,NM3(JN)) = MAX(ZM(:,:,:,NM3(JN)), ZMMIN(NM3(JN)))
+       PSVT(:,:,:,JN) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+
+    ZM(:,:,:,NM0(JN))=  ZM(:,:,:,NM3(JN))/&
+       ((ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(XINISIG_SLT(JPSALTORDER(JN)))**2))
+
+
+
+    ELSE
+
+    !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+      ZM(:,:,:,NM3(JN)) =                        &
+           ZSV(:,:,:,2+(JN-1)*2)                 & !molec_{aer}/molec_{aer}
+           * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+           * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+           * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+           * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+           / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+
+ 
+    !Get number concentration (#/molec_{air}==>#/m3)
+       ZM(:,:,:,NM0(JN))=                         &
+           ZSV(:,:,:,1+(JN-1)*2)                 & !#/molec_{air}
+           * XAVOGADRO                           & !==>#/mole
+           / XMD                                 & !==>#/kg_{air}
+           * PRHODREF(:,:,:)                       !==>#/m3
+
+    ! Limit concentration to minimum values
+      WHERE ((ZM(:,:,:,NM0(JN)) < ZMMIN(NM0(JN)) ).OR. &
+             (ZM(:,:,:,NM3(JN)) < ZMMIN(NM3(JN)) )) 
+         ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+         ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+         PSVT(:,:,:,1+(JN-1)*2) = ZM(:,:,:,NM0(JN)) * XMD / &
+         (XAVOGADRO * PRHODREF(:,:,:) )
+         PSVT(:,:,:,2+(JN-1)*2) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                                (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+      ENDWHERE
+    END IF
+
+    ZM(:,:,:,NM6(JN)) = ZM(:,:,:,NM0(JN))                   &
+         * ( (ZM(:,:,:,NM3(JN))/ZM(:,:,:,NM0(JN)))**(1./3.) &
+         * exp(-(3./2.)*log(ZSIGMA(:,:,:))**2))**6          &
+         * exp(18.*log(ZSIGMA(:,:,:))**2)
+    
+  !
+  END IF
+  !   
+  !Get number median radius (eqn. 7 in Orilam manuscript)
+  ZRG(:,:,:)=    &
+          (      &
+          ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))    &
+          /(ZM(:,:,:,NM6(JN))*ZM(:,:,:,NM0(JN))*ZM(:,:,:,NM0(JN))*ZM(:,:,:,NM0(JN))) &
+          )                                                                          &
+          ** XSIXTH_SALT 
+
+
+  !ZRG(:,:,:)=MIN(ZRG(:,:,:),ZINIRADIUS(JN))
+  !Give the sigma-values to the passed array
+  IF(PRESENT(PSIG3D)) PSIG3D(:,:,:,JN) = ZSIGMA(:,:,:)
+  !
+  !Set the number concentrations in the passed array
+  IF(PRESENT(PN3D)) PN3D(:,:,:,JN) = ZM(:,:,:,NM0(JN))
+  !
+!  !Get the number median radius
+!  IF(PRESENT(PRG3D)) PRG3D(:,:,:,JN)= ZRG(:,:,:)
+  !
+  !
+  !+ Marine
+!!!!!!!!!!! Wet radius calculus
+
+!Test pour Marine
+
+  ZRG_WET(:,:,:) =  C1 * (ZRG(:,:,:)*1.d-4)**C2 ! Pour le calcul, ZRG en cm! (d'où 1.d-4)
+
+!+ Marine test
+
+  ZRG_WET(:,:,:) =  ZRG_WET(:,:,:) / (C3 * ((ZRG(:,:,:)*1.d-4)**C4) - LOG10(ZREHU(:,:,:)))
+  ZRG_WET(:,:,:) =  ZRG_WET(:,:,:) + (ZRG(:,:,:)*1.d-4)**3 
+  ZRG_WET(:,:,:) = ( ZRG_WET(:,:,:)**(1./3) )*1.d4 ! *1.d4 pour repasser de cm à micromètres
+
+  !Get the number median radius
+  IF(PRESENT(PRG3D)) PRG3D(:,:,:,JN) = ZRG_WET(:,:,:)
+
+
+
+! Wet density calcul
+  ZDENSITY_WET(:,:,:,JN)=(ZRHOI * ZRG(:,:,:) * ZRG(:,:,:) * ZRG(:,:,:) + &
+          ZRHOLW * (ZRG_WET(:,:,:) * ZRG_WET(:,:,:) * ZRG_WET(:,:,:)- &
+          ZRG(:,:,:) * ZRG(:,:,:) * ZRG(:,:,:))) &
+         / (ZRG_WET(:,:,:) * ZRG_WET(:,:,:) * ZRG_WET(:,:,:)) 
+
+!Wet mass
+  ZMASS3D(:,:,:,JN)=    &
+          ZM(:,:,:,NM0(JN)) & !#/m^3_{air}
+           * XPI*4./3.       &
+           * ZDENSITY_WET(:,:,:,JN)           &    !==>kg/m^3_{aeros}/m^3_{air}
+           * ZRG_WET(:,:,:) * ZRG_WET(:,:,:) * ZRG_WET(:,:,:) &
+           * XUM3TOM3_SALT        &    !==>kg/m^3_{air}
+           * exp(4.5*log(ZSIGMA(:,:,:))*log(ZSIGMA(:,:,:)))
+ 
+! Salt Mass
+  ZMASS3D_SLT(:,:,:,JN)=     &
+              ZM(:,:,:,NM0(JN)) &    !#/m^3_{air}
+              * XPI*4./3.       &
+              * ZRHOI           &    !==>kg/m^3_{aeros}/m^3_{air}
+              * ZRG(:,:,:) * ZRG(:,:,:) * ZRG(:,:,:) &
+              * XUM3TOM3_SALT        &    !==>kg/m^3_{air}
+              * exp(4.5*log(ZSIGMA(:,:,:))*log(ZSIGMA(:,:,:)))
+
+  IF(PRESENT(PMASS3D)) THEN 
+    PMASS3D(:,:,:,JN)= ZMASS3D(:,:,:,JN)
+  ENDIF
+
+  IF(PRESENT(PDENSITY_WET)) THEN
+    PDENSITY_WET(:,:,:,JN) = ZDENSITY_WET(:,:,:,JN)
+  ENDIF
+!
+END DO  !Loop on modes
+!
+IF(PRESENT(PM3D)) PM3D(:,:,:,:) = ZM(:,:,:,:)
+!
+DEALLOCATE(ZINIRADIUS)
+DEALLOCATE(ZSV)
+DEALLOCATE(ZMMIN)
+DEALLOCATE(ZM)
+DEALLOCATE(NM6)
+DEALLOCATE(NM3)
+DEALLOCATE(NM0)
+
+!+ Marine
+
+END SUBROUTINE PPP2SALT_WET
+
+!!   ############################################################
+  SUBROUTINE SALT2PPP(             &
+       PSVT                         & !IO [ppp] input scalar variables (moment of distribution)
+       , PRHODREF                   & !I [kg/m3] density of air       
+       , PSIG3D                     & !I [-] standard deviation of aerosol distribution
+       , PRG3D                      & !I [um] number median diameter of aerosol distribution
+       )
+!!   ############################################################
+!
+!!
+!!    PURPOSE
+!!    -------
+!!    Translate the sea salt Mass, RG and SIGMA in the  three moments M0, M3 and M6 given in ppp 
+!! 
+!!    CALLING STRUCTURE NOTE: OPTIONAL VARIABLES
+!!    -------
+!!    CALL PPP2AEROS(PSVT, PRHODREF, PSIG3D=SIGVAR,  &
+!!       PRG3D=RVAR, PN3D=NVAR)
+!!
+!!    REFERENCE
+!!    ---------
+!!    none
+!!
+!!    AUTHOR
+!!    ------
+!!    Pierre TULET (LA)
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!    Alf Grini (CNRM)
+!!
+!!    EXTERNAL
+!!    --------
+!!    None
+!!
+    IMPLICIT NONE
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.     DECLARATIONS
+!               ------------
+!
+!*      0.1    declarations of arguments
+!
+    !INPUT
+    REAL,       DIMENSION(:,:,:),    INTENT(IN)     :: PRHODREF !I [kg/m3] density of air
+    REAL,       DIMENSION(:,:,:,:),  INTENT(IN)     :: PSIG3D   !O [-] standard deviation
+    REAL,       DIMENSION(:,:,:,:),  INTENT(IN)     :: PRG3D    !O [um] number median diameter
+
+    !OUTPUT
+    REAL,       DIMENSION(:,:,:,:),  INTENT(INOUT)  :: PSVT  !IO [#/molec_{air}] first moment
+                                                                !IO [molec_{aer}/molec_{air} 3rd moment
+                                                                !IO [um6/molec_{air}*(cm3/m3)] 6th moment
+!
+!
+!*      0.2    declarations local variables
+!
+    REAL                                  :: ZRHOI               ! [kg/m3] density of aerosol
+    REAL                                  :: ZMI                 ! [kg/mol] molar weight of aerosol
+    REAL                                  :: ZRGMIN              ! [um] minimum radius accepted
+    REAL                                  :: ZSIGMIN             ! minimum standard deviation accepted
+    REAL,DIMENSION(:,:,:,:), ALLOCATABLE  :: ZM                  ! [aerosol units] local array which goes to output later
+    REAL,DIMENSION(:,:,:),   ALLOCATABLE  :: ZSIGMA              ! aersol standard deviation
+    REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN               ! [aerosol units] minimum values for N, sigma, M
+    REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS          ! initial mean radius
+    INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM0                 ! [idx] index for Mode 0 in passed variables
+    INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM3                 ! [idx] indexes for Mode 3 in passed variables
+    INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM6                 ! [idx] indexes for Mode 6 in passed variables
+    INTEGER                               :: JJ, JN              ! [idx] loop counters
+    INTEGER                               :: IMODEIDX
+!
+!-------------------------------------------------------------------------------
+!
+!        1.1    initialisation 
+
+
+    ALLOCATE (NM0(NMODE_SLT))
+    ALLOCATE (NM3(NMODE_SLT))
+    ALLOCATE (NM6(NMODE_SLT))
+    ALLOCATE (ZINIRADIUS(NMODE_SLT))
+    ALLOCATE (ZMMIN(NMODE_SLT*3))
+    ALLOCATE (ZM(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3), NMODE_SLT*3))
+    ALLOCATE (ZSIGMA(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3)))
+
+    !Set density of aerosol, here sea salt (kg/m3)
+    ZRHOI = XDENSITY_SALT
+    !Set molecular weight of sea salt !NOTE THAT THIS IS NOW IN KG
+    ZMI   = XMOLARWEIGHT_SALT
+!
+
+    ! PSVT need to be positive
+!    PSVT(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
+    
+    DO JN=1,NMODE_SLT
+      IMODEIDX = JPSALTORDER(JN)
+    !Calculations here are for one mode only
+      IF (CRGUNITS=="MASS") THEN
+        ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
+      ELSE
+        ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
+      END IF
+
+    !Set counter for number, M3 and M6
+      NM0(JN) = 1+(JN-1)*3
+      NM3(JN) = 2+(JN-1)*3
+      NM6(JN) = 3+(JN-1)*3
+
+    !Get minimum values possible
+      ZMMIN(NM0(JN)) = XN0MIN_SLT(IMODEIDX)
+      ZRGMIN     =  ZINIRADIUS(JN)
+      IF (LVARSIG_SLT) THEN
+        ZSIGMIN = XSIGMIN_SLT
+      ELSE
+        ZSIGMIN = XINISIG_SLT(IMODEIDX)
+      ENDIF
+      ZMMIN(NM3(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**3)*EXP(4.5 * LOG(ZSIGMIN)**2) 
+      ZMMIN(NM6(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**6)*EXP(18. * LOG(ZSIGMIN)**2)
+    END DO
+
+    !Set density of aerosol, here sea salt (kg/m3)
+    ZRHOI = XDENSITY_SALT
+    !Set molecular weight of sea salt !NOTE THAT THIS IS NOW IN KG
+    ZMI   = XMOLARWEIGHT_SALT
+!
+    DO JN=1,NMODE_SLT
+     !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+     IF (LVARSIG_SLT) THEN
+       ZM(:,:,:,NM3(JN)) =                        &
+            PSVT(:,:,:,2+(JN-1)*3)                & !molec_{aer}/molec_{aer}
+            * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+            * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+            * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+            * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+            / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+    ELSE 
+      IF ((LRGFIX_SLT)) THEN
+        ZM(:,:,:,NM3(JN)) =                   &
+            PSVT(:,:,:,JN)                        & !molec_{aer}/molec_{aer}
+            * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+            * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+            * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+            * XM3TOUM3_SALT                       & !==>um3_{aer}/m3_{air}
+            / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+           ZM(:,:,:,NM3(JN)) = MAX(ZM(:,:,:,NM3(JN)), ZMMIN(NM3(JN)))
+      ELSE
+        ZM(:,:,:,NM3(JN)) =                        &
+            PSVT(:,:,:,2+(JN-1)*2)                & !molec_{aer}/molec_{aer}
+            * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+            * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+            * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+            * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+            / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+      END IF
+    END IF
+! calculate moment 0 from dispersion and mean radius
+    ZM(:,:,:,NM0(JN))=  ZM(:,:,:,NM3(JN))/&
+       ((PRG3D(:,:,:,JN)**3)*EXP(4.5 * LOG(PSIG3D(:,:,:,JN))**2))
+
+! calculate moment 6 from dispersion and mean radius
+    ZM(:,:,:,NM6(JN)) = ZM(:,:,:,NM0(JN)) * (PRG3D(:,:,:,JN)**6) * &
+               EXP(18 *(LOG(PSIG3D(:,:,:,JN)))**2)
+
+    IF (LVARSIG_SLT) THEN
+      WHERE ((ZM(:,:,:,NM0(JN)) .LT. ZMMIN(NM0(JN))).OR.&
+             (ZM(:,:,:,NM3(JN)) .LT. ZMMIN(NM3(JN))).OR.&
+             (ZM(:,:,:,NM6(JN)) .LT. ZMMIN(NM6(JN))))
+        ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+        ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+        ZM(:,:,:,NM6(JN)) = ZMMIN(NM6(JN))
+      END WHERE
+    ELSE  IF (.NOT.(LRGFIX_SLT)) THEN
+
+      WHERE ((ZM(:,:,:,NM0(JN)) .LT. ZMMIN(NM0(JN))).OR.&
+             (ZM(:,:,:,NM3(JN)) .LT. ZMMIN(NM3(JN))))
+        ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+        ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+      END WHERE
+    ENDIF
+
+     
+     ! return to concentration #/m3 =>  (#/molec_{air}
+    IF (LVARSIG_SLT) THEN
+      PSVT(:,:,:,1+(JN-1)*3) = ZM(:,:,:,NM0(JN)) * XMD / &
+                               (XAVOGADRO*PRHODREF(:,:,:))
+
+      PSVT(:,:,:,2+(JN-1)*3) = ZM(:,:,:,NM3(JN)) * XMD  * XPI * 4./3 * ZRHOI / &
+                               (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+
+      PSVT(:,:,:,3+(JN-1)*3) = ZM(:,:,:,NM6(JN)) * XMD  / &
+                               ( XAVOGADRO*PRHODREF(:,:,:) * 1.d-6) 
+    ELSE IF (LRGFIX_SLT) THEN
+      PSVT(:,:,:,JN)         = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                               (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+    ELSE
+      PSVT(:,:,:,1+(JN-1)*2) = ZM(:,:,:,NM0(JN)) * XMD / &
+                               (XAVOGADRO*PRHODREF(:,:,:))
+
+      PSVT(:,:,:,2+(JN-1)*2) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                               (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+    END IF
+!
+END DO  !Loop on modes
+
+DEALLOCATE(ZINIRADIUS)
+DEALLOCATE(ZMMIN)
+DEALLOCATE(ZSIGMA)
+DEALLOCATE(ZM)
+DEALLOCATE(NM6)
+DEALLOCATE(NM3)
+DEALLOCATE(NM0)
+!
+END SUBROUTINE SALT2PPP
+!
+!!   ############################################################
+  SUBROUTINE PPP2SALT1D(             &
+       PSVT                         & !I [ppp] input scalar variables (moment of distribution)
+       , PRHODREF                   & !I [kg/m3] density of air       
+       , PSIG1D                     & !O [-] standard deviation of aerosol distribution
+       , PRG1D                      & !O [um] number median diameter of aerosol distribution
+       , PN1D                       & !O [#/m3] number concentration of aerosols
+       , PMASS1D                    & !O [kg/m3] mass concentration of aerosol
+       , PM1D                       & !O aerosols moments 0, 3 and 6
+       )
+!!   ############################################################
+!
+!!
+!!    PURPOSE
+!!    -------
+!!    Translate the three moments M0, M3 and M6 given in ppp into
+!!    Values which can be understood more easily (R, sigma, N, M)
+!! 
+!!    CALLING STRUCTURE NOTE: OPTIONAL VARIABLES
+!!    -------
+!!    CALL PPP2AEROS(PSVT, PRHODREF, PSIG3D=SIGVAR,  &
+!!       PRG3D=RVAR, PN3D=NVAR, PM3D=MASSVAR)
+!!
+!!    REFERENCE
+!!    ---------
+!!    none
+!!
+!!    AUTHOR
+!!    ------
+!!    Pierre TULET (LA)
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!    2005 Alf Grini (CNRM)
+!!    2006 Jean-Pierre Chaboureau (LA)
+!!
+!!    EXTERNAL
+!!    --------
+!!    None
+!!
+    IMPLICIT NONE
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.     DECLARATIONS
+!               ------------
+!
+!*      0.1    declarations of arguments
+!
+REAL,       DIMENSION(:,:),  INTENT(INOUT)  :: PSVT      !I [ppp] first moment
+REAL,       DIMENSION(:),    INTENT(IN)     :: PRHODREF !I [kg/m3] density of air
+
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PSIG1D   !O [-] standard deviation
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PRG1D    !O [um] number median diameter
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PN1D     !O [#/m3] number concentration
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PMASS1D  !O [kg_{aer}/m3] mass concentration
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PM1D     !O aerosols moments 
+!
+!
+!*      0.2    declarations local variables
+!
+REAL                                  :: ZRHOI               ! [kg/m3] density of aerosol
+REAL                                  :: ZMI                 ! [kg/mol] molar weight of aerosol
+REAL                                  :: ZRGMIN              ! [um] minimum radius accepted
+REAL                                  :: ZSIGMIN             ! minimum standard deviation accepted
+REAL,DIMENSION(:,:), ALLOCATABLE  :: ZM                  ! [aerosol units] local array which goes to output later
+REAL,DIMENSION(:,:), ALLOCATABLE  :: ZSV                 ! [sea salts moment concentration]
+REAL,DIMENSION(:),   ALLOCATABLE  :: ZSIGMA              ! [-] standard deviation
+REAL,DIMENSION(:),   ALLOCATABLE  :: ZRG                 ! [um] number median diameter
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN               ! [aerosol units] minimum values for N, sigma, M
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM0                 ! [idx] index for Mode 0 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM3                 ! [idx] indexes for Mode 3 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM6                 ! [idx] indexes for Mode 6 in passed variables
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS          ! initial mean radius
+INTEGER                               :: JN,IMODEIDX,JJ      ! [idx] loop counters
+!
+!-------------------------------------------------------------------------------
+!
+!        1.1    initialisation 
+!
+!Calculations here are for one mode only
+!
+ALLOCATE (NM0(NMODE_SLT))
+ALLOCATE (NM3(NMODE_SLT))
+ALLOCATE (NM6(NMODE_SLT))
+ALLOCATE (ZM(SIZE(PSVT,1), NMODE_SLT*3))
+ALLOCATE (ZMMIN(NMODE_SLT*3))
+ALLOCATE (ZSIGMA(SIZE(PSVT,1)))
+ALLOCATE (ZRG(SIZE(PSVT,1)))
+ALLOCATE (ZSV(SIZE(PSVT,1), SIZE(PSVT,2)))
+ALLOCATE (ZINIRADIUS(NMODE_SLT))
+    
+!ZSV(:,:) = MAX(PSVT(:,:), XMNH_TINY)
+
+DO JN=1,NMODE_SLT
+  IMODEIDX = JPSALTORDER(JN)
+  !Calculations here are for one mode only
+  IF (CRGUNITS=="MASS") THEN
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
+  ELSE
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
+  END IF
+
+  !Set counter for number, M3 and M6
+  NM0(JN) = 1+(JN-1)*3
+  NM3(JN) = 2+(JN-1)*3
+  NM6(JN) = 3+(JN-1)*3
+  !Get minimum values possible
+  ZMMIN(NM0(JN)) = XN0MIN_SLT(IMODEIDX)
+  ZRGMIN         = ZINIRADIUS(JN)
+  IF (LVARSIG_SLT) THEN
+    ZSIGMIN = XSIGMIN_SLT
+  ELSE
+    ZSIGMIN = XINISIG_SLT(IMODEIDX)
+  ENDIF
+  ZMMIN(NM3(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**3)*EXP(4.5 * LOG(ZSIGMIN)**2) 
+  ZMMIN(NM6(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**6)*EXP(18. * LOG(ZSIGMIN)**2)
+END DO
+!
+!Set density of aerosol, here sea salt (kg/m3)
+ZRHOI = XDENSITY_SALT
+!Set molecular weight of sea salt !NOTE THAT THIS IS NOW IN KG
+ZMI   = XMOLARWEIGHT_SALT
+!
+!
+DO JN=1,NMODE_SLT
+  !
+  IF (LVARSIG_SLT) THEN ! give M6 (case of variable standard deviation)
+  !
+  !Get number concentration (#/molec_{air}==>#/m3)
+    ZM(:,NM0(JN))=                         &
+         ZSV(:,1+(JN-1)*3)                 & !#/molec_{air}
+         * XAVOGADRO                           & !==>#/mole
+         / XMD                                 & !==>#/kg_{air}
+         * PRHODREF(:)                       !==>#/m3
+  ! 
+  !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+    ZM(:,NM3(JN)) =                        &
+         ZSV(:,2+(JN-1)*3)                 & !molec_{aer}/molec_{aer}
+         * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+         * PRHODREF(:)                     & !==>kg_{aer}/m3_{air}
+         * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+         * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+         / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+     !Limit mass concentration to minimum value
+    ZM(:,NM3(JN)) = MAX(ZM(:,NM3(JN)), ZMMIN(NM3(JN)))
+  ! 
+    ZM(:,NM6(JN)) = ZSV(:,3+(JN-1)*3)  & !um6/molec_{air}*(cm3/m3)
+         * 1.d-6                               & !==> um6/molec_{air}
+         * XAVOGADRO                           & !==> um6/mole_{air}
+         / XMD                                 & !==> um6/kg_{air}
+         * PRHODREF(:)                       !==> um6/m3_{air}
+     !Limit m6 concentration to minimum value
+    ZM(:,NM6(JN)) =  MAX(ZM(:,NM6(JN)), ZMMIN(NM6(JN)))
+  !
+  !Get sigma (only if sigma is allowed to vary)
+    !Get intermediate values for sigma M3^2/(M0*M6) (ORILAM paper, eqn 8)
+    ZSIGMA(:)=ZM(:,NM3(JN))**2/(ZM(:,NM0(JN))*ZM(:,NM6(JN)))
+    !Limit the intermediate value, can not be larger than 1
+    ZSIGMA(:)=MIN(1-1E-10,ZSIGMA(:))
+    !Limit the value for intermediate, can not be smaller than 0
+    ZSIGMA(:)=MAX(1E-10,ZSIGMA(:))
+    !Calculate log(sigma)
+    ZSIGMA(:)= LOG(ZSIGMA(:))
+    !Finally get the real sigma the negative sign is because of 
+    !The way the equation is written (M3^2/(M0*M6)) instead of (M0*M6)/M3^3
+    ZSIGMA(:)= EXP(1./3.*SQRT(-ZSIGMA(:)))
+    !Limit the value to reasonable ones
+    ZSIGMA(:) =  MAX( XSIGMIN_SLT, MIN( XSIGMAX_SLT, ZSIGMA(:) ) )
+
+  !
+    !Put back M6 so that it fits the sigma which is possibly modified above
+    !The following makes M6 consistent with N, R, SIGMA
+    ZM(:,NM6(JN)) = ZM(:,NM0(JN)) &
+         * ( (ZM(:,NM3(JN))/ZM(:,NM0(JN)))**(1./3.) &
+         * exp(-(3./2.)*log(ZSIGMA(:))**2))**6 &
+         * exp(18.*log(ZSIGMA(:))**2)
+
+  ELSE ! compute M6 from M0, M3 and SIGMA
+    ! 
+    ZSIGMA(:) = XINISIG_SLT(JPSALTORDER(JN))
+    IF (LRGFIX_SLT) THEN
+
+    !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+      ZM(:,NM3(JN)) =                        &
+           ZSV(:,JN)                         & !molec_{aer}/molec_{aer}
+           * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+           * PRHODREF(:)                     & !==>kg_{aer}/m3_{air}
+           * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+           * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+           / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+      ZM(:,NM3(JN)) = MAX(ZM(:,NM3(JN)), ZMMIN(NM3(JN)))
+
+      ZM(:,NM0(JN))=  ZM(:,NM3(JN))/&
+         ((ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(XINISIG_SLT(JPSALTORDER(JN)))**2))
+
+    ELSE
+
+    !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+      ZM(:,NM3(JN)) =                        &
+           ZSV(:,2+(JN-1)*2)                 & !molec_{aer}/molec_{aer}
+           * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+           * PRHODREF(:)                     & !==>kg_{aer}/m3_{air}
+           * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+           * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+           / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+
+ 
+    !Get number concentration (#/molec_{air}==>#/m3)
+      ZM(:,NM0(JN))=                         &
+          ZSV(:,1+(JN-1)*2)                 & !#/molec_{air}
+          * XAVOGADRO                           & !==>#/mole
+          / XMD                                 & !==>#/kg_{air}
+          * PRHODREF(:)                       !==>#/m3
+
+    ! Limit concentration to minimum values
+      WHERE ((ZM(:,NM0(JN)) < ZMMIN(NM0(JN)) ).OR. &
+             (ZM(:,NM3(JN)) < ZMMIN(NM3(JN)) )) 
+        ZM(:,NM0(JN)) = ZMMIN(NM0(JN))
+        ZM(:,NM3(JN)) = ZMMIN(NM3(JN))
+        PSVT(:,1+(JN-1)*2) = ZM(:,NM0(JN)) * XMD / &
+                            (XAVOGADRO * PRHODREF(:) )
+        PSVT(:,2+(JN-1)*2) = ZM(:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                             (ZMI*PRHODREF(:)*XM3TOUM3_SALT)
+      ENDWHERE
+
+    END IF
+
+    ZM(:,NM6(JN)) = ZM(:,NM0(JN))                   &
+         * ( (ZM(:,NM3(JN))/ZM(:,NM0(JN)))**(1./3.) &
+         * exp(-(3./2.)*log(ZSIGMA(:))**2))**6          &
+         * exp(18.*log(ZSIGMA(:))**2)
+    
+  !
+  END IF
+  !   
+  !Get number median radius (eqn. 7 in Orilam manuscript)
+  ZRG(:)=    &
+          (      &
+          ZM(:,NM3(JN))*ZM(:,NM3(JN))*ZM(:,NM3(JN))*ZM(:,NM3(JN))    &
+          /(ZM(:,NM6(JN))*ZM(:,NM0(JN))*ZM(:,NM0(JN))*ZM(:,NM0(JN))) &
+          )                                                                          &
+          ** XSIXTH_SALT 
+  !ZRG(:)=MIN(ZRG(:),ZINIRADIUS(JN))
+  !Give the sigma-values to the passed array
+  IF(PRESENT(PSIG1D)) PSIG1D(:,JN) = ZSIGMA(:)
+  !
+  !Set the number concentrations in the passed array
+  IF(PRESENT(PN1D)) PN1D(:,JN) = ZM(:,NM0(JN))
+  !
+  !Get the number median radius
+  IF(PRESENT(PRG1D)) PRG1D(:,JN)= ZRG(:)
+  !
+  IF(PRESENT(PMASS1D))THEN
+       PMASS1D(:,JN)=     &
+            ZM(:,NM0(JN)) &    !#/m^3_{air}
+            * XPI*4./3.       &    
+            * ZRHOI           &    !==>kg/m^3_{aeros}/m^3_{air}
+            * ZRG(:) * ZRG(:) * ZRG(:) &
+            * XUM3TOM3_SALT        &    !==>kg/m^3_{air}
+            * exp(4.5*log(ZSIGMA(:))*log(ZSIGMA(:)))
+  ENDIF
+!
+END DO  !Loop on modes
+!
+IF(PRESENT(PM1D)) PM1D(:,:) = ZM(:,:)
+!
+DEALLOCATE(ZINIRADIUS)
+DEALLOCATE(ZSV)
+DEALLOCATE(ZRG)
+DEALLOCATE(ZSIGMA)
+DEALLOCATE(ZMMIN)
+DEALLOCATE(ZM)
+DEALLOCATE(NM6)
+DEALLOCATE(NM3)
+DEALLOCATE(NM0)
+!
+END SUBROUTINE PPP2SALT1D
+
+!!   ############################################################
+END MODULE MODE_SALT_PSD_WET
diff --git a/src/MNH/mode_saltopt.f90 b/src/MNH/mode_saltopt.f90
index ac1b4099d92e0dd752a1e5460a39f8ba41587e0d..d7fd28f3f1912d0a897de0aa93aebc050b6a761a 100644
--- a/src/MNH/mode_saltopt.f90
+++ b/src/MNH/mode_saltopt.f90
@@ -14,8 +14,11 @@
 !!    PURPOSE
 !!    -------
 !!
+!!    MODIFICATIONS
+!!    -------------
 !!
-
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!
   IMPLICIT NONE
   PUBLIC
   PRIVATE :: SALTOPT_LKT
@@ -27,6 +30,9 @@ CONTAINS
        PSVT                   & !I [moments/molec_{air}] Transported moments of sea salts
        ,PZZ                   & !I [m] height of layers
        ,PRHODREF              & !I [kg/m3] density of air
+       ,PTHT                  &
+       ,PPABST                &
+       ,PRT                   &
        ,PPIZA_WVL             & !O [-] single scattering albedo of sea salt layer for all SW wavelengths
        ,PCGA_WVL              & !O [-] assymetry factor for sea salt layer for all SW wavelengths
        ,PTAUREL_WVL           & !O [-] opt.depth/opt.depth(550) for sea salt layer for all SW wvl 
@@ -35,14 +41,18 @@ CONTAINS
        )
     
 
-    USE MODE_SALT_PSD   !Conversion procedures from moments to radius, ,number, mass and sigma
+    USE MODE_SALT_PSD_WET   !Conversion procedures from moments to radius, ,number, mass and sigma
+    USE MODE_SALT_PSD
     USE MODD_SALT, ONLY : NMODE_SLT
+
     IMPLICIT NONE
     
     !INPUT
     REAL, DIMENSION(:,:,:,:),INTENT(IN)      :: PSVT       !I [moments/molec_{air}] transported moments of sea salt
     REAL, DIMENSION(:,:,:),INTENT(IN)        :: PZZ        !I [m] height of layers
     REAL, DIMENSION(:,:,:),INTENT(IN)        :: PRHODREF   !I [kg/m3] density of air
+    REAL, DIMENSION(:,:,:),INTENT(IN)        :: PTHT, PPABST   !I
+    REAL, DIMENSION(:,:,:,:),INTENT(IN)      :: PRT
     INTEGER, INTENT(IN)                      :: KSWB       !I [nbr] number of shortwave wavelengths
     REAL, PARAMETER                          :: EPSILON=1.e-8 !a very low number for optical depth in a layer
 
@@ -57,6 +67,7 @@ CONTAINS
     REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3), NMODE_SLT) :: ZMASS         ![kg/m3] mass of one sea salt mode
     REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3), NMODE_SLT) :: ZRADIUS       ![um] number median radius of one sea salt mode
     REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3), NMODE_SLT) :: ZSIGMA        ![-] dispersion coefficient one sea salt mode
+    REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3), NMODE_SLT) :: ZDENSITY        ![-] [g/m2] density of wet aerosol (water + sea salt)
     REAL, ALLOCATABLE, DIMENSION(:,:,:,:)                   :: ZTAU550_MDE   ![-] opt.depth 550nm one mode
     REAL, ALLOCATABLE, DIMENSION(:,:,:,:,:)                 :: ZTAU_WVL_MDE  ![-] opt.depth @ wvl, one mode
     REAL, ALLOCATABLE, DIMENSION(:,:,:,:,:)                 :: ZPIZA_WVL_MDE ![-] single scattering albedo @ wvl, one mode
@@ -70,15 +81,26 @@ CONTAINS
     ALLOCATE(ZCGA_WVL_MDE(SIZE(PTAU550,1),SIZE(PTAU550,2),SIZE(PTAU550,3),KSWB,NMODE_SLT))
     
     ZSVT(:,:,:,:)=PSVT(:,:,:,:)
-
-    CALL PPP2SALT(     &
+    CALL PPP2SALT_WET(     &
          ZSVT                                   & !I [moments/molec_{air}] moments of sea salt for all modes
          ,PRHODREF                              & !I [kg/m3] air density
+         ,PPABST                                & !I Pression
+         ,PTHT                                  & !I Potential temperature
+         ,PRT                                   & !I Large scale vapor mixing ratio
          ,PSIG3D=ZSIGMA                         & !O [-] dispersion coefficient
          ,PRG3D=ZRADIUS                         & !O [um] number median radius
          ,PMASS3D=ZMASS                         & !O [kg/m3] mass of sea salt
+         ,PDENSITY_WET=ZDENSITY                 & !0 [g/m2] density of wet aerosol (water + salt)
          )
-       
+
+!    CALL PPP2SALT(     &
+!         ZSVT                                   & !I [moments/molec_{air}] moments of sea salt for all modes
+!         ,PRHODREF                              & !I [kg/m3] air density
+!         ,PSIG3D=ZSIGMA                         & !O [-] dispersion coefficient
+!         ,PRG3D=ZRADIUS                         & !O [um] number median radius
+!         ,PMASS3D=ZMASS                         & !O [kg/m3] mass of sea salt
+!         )
+
     DO JMDE=1,NMODE_SLT
        !Get sea salt optical properties from look up tables
        CALL SALTOPT_LKT(                     &
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 62c57bedeaab8450f31cc9529be58ba865eae45e..44fde5f596477bcc1cbcaa3d7b283a8a9b1130a8 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -255,6 +255,8 @@ END MODULE MODI_MODEL_n
 !                                  to allow to disable writes (for bench purposes)
 !  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
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -498,6 +500,7 @@ REAL, DIMENSION(:,:,:,:), POINTER :: DPTR_XLBXRM,DPTR_XLBYRM
 REAL, DIMENSION(:,:,:),   POINTER ::  DPTR_XZZ
 REAL, DIMENSION(:,:,:), POINTER :: DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM
 REAL, DIMENSION(:,:,:), POINTER :: DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS
+REAL, DIMENSION(:,:),   POINTER :: DPTR_XLSZWSM,DPTR_XLSZWSS
 REAL, DIMENSION(:,:,:), POINTER :: DPTR_XLBXUS,DPTR_XLBYUS,DPTR_XLBXVS,DPTR_XLBYVS
 REAL, DIMENSION(:,:,:), POINTER :: DPTR_XLBXWS,DPTR_XLBYWS,DPTR_XLBXTHS,DPTR_XLBYTHS
 REAL, DIMENSION(:,:,:), POINTER :: DPTR_XLBXTKES,DPTR_XLBYTKES
@@ -673,6 +676,7 @@ IF (KTCOUNT == 1) THEN
     CALL ADD3DFIELD_ll(TZLSFIELD_ll, XLSVM)
     CALL ADD3DFIELD_ll(TZLSFIELD_ll, XLSWM)
     CALL ADD3DFIELD_ll(TZLSFIELD_ll, XLSTHM)
+    CALL ADD2DFIELD_ll(TZLSFIELD_ll, XLSZWSM)
     IF (NRR >= 1) THEN
       CALL ADD3DFIELD_ll(TZLSFIELD_ll, XLSRVM)
     ENDIF
@@ -702,6 +706,7 @@ IF (KTCOUNT == 1) THEN
   !
     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)
     END IF
   END IF
@@ -799,11 +804,13 @@ IF (IMI/=1 .AND. NDAD(IMI)/=IMI .AND. (ISYNCHRO==1 .OR. NDTRATIO(IMI) == 1) ) TH
   DPTR_XLSUM=>XLSUM
   DPTR_XLSVM=>XLSVM
   DPTR_XLSWM=>XLSWM
+  DPTR_XLSZWSM=>XLSZWSM
   DPTR_XLSTHS=>XLSTHS
   DPTR_XLSRVS=>XLSRVS
   DPTR_XLSUS=>XLSUS
   DPTR_XLSVS=>XLSVS
   DPTR_XLSWS=>XLSWS
+  DPTR_XLSZWSS=>XLSZWSS
   !
   IF ( LSTEADYLS                     ) THEN
     NCPL_CUR=0
@@ -818,8 +825,8 @@ IF (IMI/=1 .AND. NDAD(IMI)/=IMI .AND. (ISYNCHRO==1 .OR. NDTRATIO(IMI) == 1) ) TH
              DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4,        &
              NDXRATIO_ALL(IMI),NDYRATIO_ALL(IMI),                    &
              DPTR_CLBCX,DPTR_CLBCY,DPTR_XZZ,DPTR_XZHAT,LSLEVE,XLEN1,XLEN2,DPTR_XCOEFLIN_LBXM, &
-             DPTR_XLSTHM,DPTR_XLSRVM,DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,                        &
-             DPTR_XLSTHS,DPTR_XLSRVS,DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS                         )
+             DPTR_XLSTHM,DPTR_XLSRVM,DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSZWSM,                        &
+             DPTR_XLSTHS,DPTR_XLSRVS,DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS, DPTR_XLSZWSS                         )
       END IF
     END IF
     !
@@ -1409,10 +1416,10 @@ IF (.NOT. LSTEADYLS) THEN
              NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,             &
              NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                 &
              NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,         &
-             XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XDRYMASST,                     &
+             XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XLSZWSM,XDRYMASST,             &
              XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,          &
              XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,          &
-             XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XDRYMASSS,                     &
+             XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XLSZWSS,XDRYMASSS,             &
              XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,          &
              XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS           )
       !
@@ -1804,7 +1811,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           XINPRC,ZINPRC3D,XINPRR, XINPRR3D, XEVAP3D,             &
                           XINPRS,ZINPRS3D, XINPRG,ZINPRG3D, XINPRH,ZINPRH3D,   &
                           XSOLORG, XMI,ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG, ZSPEEDH, &
-                          XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO,                &
+                          XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO, XRAINFR,       &
                           ZSEA, ZTOWN                                          )
     DEALLOCATE(ZTOWN)
   ELSE
@@ -1822,7 +1829,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           XINPRC,ZINPRC3D,XINPRR, XINPRR3D, XEVAP3D,             &
                           XINPRS,ZINPRS3D, XINPRG,ZINPRG3D, XINPRH,ZINPRH3D,   &
                           XSOLORG, XMI,ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG, ZSPEEDH, &
-                          XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO                 )
+                          XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO, XRAINFR        )
   END IF
   XRTHS_CLD  = XRTHS - XRTHS_CLD
   XRRS_CLD   = XRRS  - XRRS_CLD
@@ -1979,16 +1986,16 @@ CALL ENDSTEP  ( XTSTEP,NRR,NSV,KTCOUNT,IMI,               &
                 XRUS,XRVS,XRWS,XDRYMASSS,                 &
                 XRTHS,XRRS,XRTKES,XRSVS,                  &
                 XLSUS,XLSVS,XLSWS,                        &
-                XLSTHS,XLSRVS,                            &
+                XLSTHS,XLSRVS,XLSZWSS,                    &
                 XLBXUS,XLBXVS,XLBXWS,                     &
                 XLBXTHS,XLBXRS,XLBXTKES,XLBXSVS,          &
                 XLBYUS,XLBYVS,XLBYWS,                     &
                 XLBYTHS,XLBYRS,XLBYTKES,XLBYSVS,          &
-                XUM,XVM,XWM,                              &
+                XUM,XVM,XWM,XZWS,                         &
                 XUT,XVT,XWT,XPABST,XDRYMASST,             &
                 XTHT, XRT, XTHM, XRCM, XPABSM,XTKET, XSVT,&
                 XLSUM,XLSVM,XLSWM,                        &
-                XLSTHM,XLSRVM,                            &
+                XLSTHM,XLSRVM,XLSZWSM,                    &
                 XLBXUM,XLBXVM,XLBXWM,                     &
                 XLBXTHM,XLBXRM,XLBXTKEM,XLBXSVM,          &
                 XLBYUM,XLBYVM,XLBYWM,                     &
diff --git a/src/MNH/modn_salt.f90 b/src/MNH/modn_salt.f90
index 92fa8499839e57ba36cd792c698c10913e1fc6f1..0b7e674471ace04ac31394ff115436386cd9c2c8 100644
--- a/src/MNH/modn_salt.f90
+++ b/src/MNH/modn_salt.f90
@@ -25,6 +25,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!    Original 24/02/05
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -38,6 +39,6 @@ IMPLICIT NONE
 !
 NAMELIST /NAM_SALT/ LSALT, CRGUNITS, LVARSIG_SLT,LSEDIMSALT,XN0MIN_SLT, XINIRADIUS_SLT, &
                XINISIG_SLT, XSIGMIN_SLT, XSIGMAX_SLT, XCOEFRADMAX_SLT, XCOEFRADMIN_SLT, &
-               NMODE_SLT, LRGFIX_SLT, LDEPOS_SLT
+               NMODE_SLT, LRGFIX_SLT, LDEPOS_SLT, LONLY
 !
 END MODULE MODN_SALT
diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90
index 7f87fe6a13d3f4db0206e5f280770f60005e5c21..98db95e8653abc0640a8faf4e33a1be51fb9f6b1 100644
--- a/src/MNH/prep_real_case.f90
+++ b/src/MNH/prep_real_case.f90
@@ -380,6 +380,7 @@
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -689,6 +690,9 @@ IF (GFOUND) READ(IPRE_REAL1,NAM_AERO_CONF)
 CALL POSNAM(IPRE_REAL1,'NAM_CONFZ',GFOUND,ILUOUT0)
 IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_CONFZ)
 !
+! Sea salt
+CALL INIT_SALT
+!
 !*       4.3   set soil scheme to ISBA for initialization from GRIB
 !
 IF (YATMFILETYPE=='GRIBEX') THEN
diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90
index efd8bca80356f5b3747ce324fea9400efffca735..b4533c7242178308fa29ecdb204beab23fc3d097 100644
--- a/src/MNH/radiations.f90
+++ b/src/MNH/radiations.f90
@@ -118,6 +118,7 @@ CONTAINS
 !!      J.Escobar 28/06/2018 : Reproductible parallelisation of CLOUD_ONLY case
 !!      J.Escobar 20/07/2018 : for real*4 compilation, convert with REAL(X) argument to SUM_DD... 
 !!      P.Wautelet 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -926,13 +927,15 @@ IF (CAOP=='EXPL') THEN
         PSVT(IIB:IIE,IJB:IJE,:,NSV_SLTBEG:NSV_SLTEND)        &  !I [ppp] sea salt scalar concentration
         ,PZZ(IIB:IIE,IJB:IJE,:)                   &  !I [m] height of layers
         ,PRHODREF(IIB:IIE,IJB:IJE,:)              &  !I [kg/m3] density of air
+        ,PTHT(IIB:IIE,IJB:IJE,:)                  &  !I [K] potential temperature
+        ,PPABST(IIB:IIE,IJB:IJE,:)                &  !I [hPa] pressure
+        ,PRT(IIB:IIE,IJB:IJE,:,:)                 &  !I [kg/kg] water mixing ratio
         ,ZPIZA_SLT_TMP(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT,:)   &  !O [-] single scattering albedo of sea salt
         ,ZCGA_SLT_TMP(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT,:)    &  !O [-] assymetry factor for sea salt
         ,ZTAUREL_SLT_TMP(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT,:) &  !O [-] opt.depth(wvl=lambda)/opt.depth(wvl=550nm)
         ,PAER_SLT(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT)            &  !O [-] optical depth of sea salt at wvl=550nm
         ,KSWB_OLD                                    &  !I |nbr] number of shortwave bands
         )
-
  ENDIF
 
  ZTAUREL_EQ_TMP(:,:,:,:)=ZTAUREL_DST_TMP(:,:,:,:)+ZTAUREL_AER_TMP(:,:,:,:)+ZTAUREL_SLT_TMP(:,:,:,:)
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index 4e627a348e442705cbf91d93d75cfcbb859361f3..463fcaabb182a481864acff23f89aae0a9eda7bb 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -14,7 +14,7 @@ INTERFACE
                             PTHT, PRVT, PRCT, PRRT, PRIT, PRST, &
                             PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, &
                             PINPRC,PINPRR, PINPRR3D, PEVAP3D,           &
-                            PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN,                   &
+                            PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN,  &
                             PRHT, PRHS, PINPRH, PFPR                        )
 !
 !
@@ -70,6 +70,7 @@ REAL, DIMENSION(:,:,:),INTENT(OUT)      :: PINPRR3D! Rain inst precip 3D
 REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PEVAP3D! Rain evap profile
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRS! Snow instant precip
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRG! Graupel instant precip
+REAL, DIMENSION(:,:,:), INTENT(OUT)     :: PRAINFR! Rain fraction            
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Sea Mask
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN! Fraction that is town 
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHT    ! Hail m.r. at t
@@ -87,7 +88,7 @@ END MODULE MODI_RAIN_ICE
                             PTHT, PRVT, PRCT, PRRT, PRIT, PRST, &
                             PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, &
                             PINPRC,PINPRR, PINPRR3D, PEVAP3D,           &
-                            PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN,                   &
+                            PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN,  &
                             PRHT, PRHS, PINPRH, PFPR                        )
 !     ######################################################################
 !
@@ -239,6 +240,7 @@ END MODULE MODI_RAIN_ICE
 !!      (C. Abiven, Y. Léauté, V. Seigner, S. Riette) Phasing of Turner rain subgrid param
 !!      J.Escobar : 8/2018 : for real*4 , bis => limit exp() in RAIN_ICE_SLOW with XMNH_HUGE_12_LOG
 !!      P.Wautelet 01/02/2019: add missing initialization for PFPR
+!!                   02/2019 C.Lac add rain fraction as an output field
 !
 !*       0.    DECLARATIONS
 !              ------------
@@ -316,6 +318,7 @@ REAL, DIMENSION(:,:,:),INTENT(OUT)      :: PINPRR3D! Rain inst precip 3D
 REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PEVAP3D! Rain evap profile
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRS! Snow instant precip
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRG! Graupel instant precip
+REAL, DIMENSION(:,:,:), INTENT(OUT)     :: PRAINFR! Rain fraction            
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Sea Mask
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN! Fraction that is town
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHT    ! Hail m.r. at t
@@ -379,7 +382,6 @@ REAL,    DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) ::  &
                                      ZRAY,   & ! Cloud Mean radius
                                      ZLBC,   & ! XLBC weighted by sea fraction
                                      ZFSEDC
-REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZRAINFR  ! Rain fraction
 REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZHLC_HCF3D  ! HLCLOUDS cloud fraction in high water content part
 REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZHLC_LCF3D  ! HLCLOUDS cloud fraction in low water content part
 REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZHLC_HRC3D  ! HLCLOUDS cloud water content in high water content part
@@ -807,10 +809,10 @@ IF( IMICRO >= 0 ) THEN
 
   !Diagnostic of precipitation fraction
   ZW(:,:,:) = 0.
-  ZRAINFR(:,:,:) = UNPACK( ZRF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
-  CALL RAINFR_VERT(ZRAINFR(:,:,:), PRRT(:,:,:))
+  PRAINFR(:,:,:) = UNPACK( ZRF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+  CALL RAINFR_VERT(PRAINFR(:,:,:), PRRT(:,:,:))
   DO JL=1,IMICRO
-    ZRF(JL)=ZRAINFR(I1(JL),I2(JL),I3(JL))
+    ZRF(JL)=PRAINFR(I1(JL),I2(JL),I3(JL))
   END DO
 !
   CALL RAIN_ICE_SLOW
@@ -900,8 +902,8 @@ IF( IMICRO >= 0 ) THEN
   ZW(:,:,:) = PCIT(:,:,:)
   PCIT(:,:,:) = UNPACK( ZCIT(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
 !
-  ZW(:,:,:) = ZRAINFR(:,:,:)
-  ZRAINFR(:,:,:) = UNPACK( ZRF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
+  ZW(:,:,:) = PRAINFR(:,:,:)
+  PRAINFR(:,:,:) = UNPACK( ZRF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
 !
   ZW(:,:,:) = 0.
   ZHLC_HCF3D(:,:,:) = UNPACK( ZHLC_HCF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) )
@@ -1082,7 +1084,7 @@ ELSE
   CALL PRINT_MSG(NVERB_FATAL,'GEN','RAIN_ICE','')  
 END IF
 !sedimentation of rain fraction
-CALL RAINFR_VERT(ZRAINFR, PRRS(:,:,:)*PTSTEP)
+CALL RAINFR_VERT(PRAINFR, PRRS(:,:,:)*PTSTEP)
 
 !
 !
diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90
index 3f92b1f9e2ce57a6e0e24aa0197cde7ae640dc99..c761841286a25d436d66cf54640eb4001f2ff3c6 100644
--- a/src/MNH/rain_ice_red.f90
+++ b/src/MNH/rain_ice_red.f90
@@ -13,7 +13,7 @@ INTERFACE
                             PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                   &
                             PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,       &
                             PINPRC,PINPRR, PINPRR3D, PEVAP3D,           &
-                            PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN,                   &
+                            PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN,  &
                             PRHT, PRHS, PINPRH, PFPR                              )
 !
 !
@@ -69,6 +69,7 @@ REAL, DIMENSION(:,:,:),INTENT(OUT)      :: PINPRR3D! Rain inst precip 3D
 REAL, DIMENSION(:,:,:), INTENT(OUT)     :: PEVAP3D! Rain evap profile
 REAL, DIMENSION(:,:), INTENT(OUT)       :: PINPRS! Snow instant precip
 REAL, DIMENSION(:,:), INTENT(OUT)       :: PINPRG! Graupel instant precip
+REAL, DIMENSION(:,:,:), INTENT(OUT)     :: PRAINFR! Rain fraction            
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Sea Mask
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN! Fraction that is town 
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHT    ! Hail m.r. at t
@@ -86,7 +87,7 @@ END MODULE MODI_RAIN_ICE_RED
                             PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                   &
                             PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,       &
                             PINPRC,PINPRR, PINPRR3D, PEVAP3D,           &
-                            PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN,                   &
+                            PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN,  &
                             PRHT, PRHS, PINPRH, PFPR                              )
 !     ######################################################################
 !
@@ -237,6 +238,7 @@ END MODULE MODI_RAIN_ICE_RED
 !!      J.Escobar : 10/2017 : for real*4 , limit exp() in RAIN_ICE_SLOW with XMNH_HUGE_12_LOG
 !!      (C. Abiven, Y. Léauté, V. Seigner, S. Riette) Phasing of Turner rain subgrid param
 !!      (S. Riette) Source code split into several files
+!!                  02/2019 C.Lac add rain fraction as an output field
 !
 !*       0.    DECLARATIONS
 !              ------------
@@ -313,6 +315,7 @@ REAL, DIMENSION(:,:,:),INTENT(OUT)      :: PINPRR3D! Rain inst precip 3D
 REAL, DIMENSION(:,:,:), INTENT(OUT)     :: PEVAP3D! Rain evap profile
 REAL, DIMENSION(:,:), INTENT(OUT)       :: PINPRS! Snow instant precip
 REAL, DIMENSION(:,:), INTENT(OUT)       :: PINPRG! Graupel instant precip
+REAL, DIMENSION(:,:,:), INTENT(OUT)     :: PRAINFR! Rain fraction            
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Sea Mask
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN! Fraction that is town 
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHT    ! Hail m.r. at t
@@ -345,7 +348,7 @@ REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: &
 REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZZ_LVFACT, ZZ_LSFACT
 !
 !Diagnostics
-REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZRAINFR,   &
+REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) ::            &
                                                          & ZHLC_HCF3D,& ! HLCLOUDS cloud fraction in high water content part
                                                          & ZHLC_LCF3D,& ! HLCLOUDS cloud fraction in low water content part
                                                          & ZHLC_HRC3D,& ! HLCLOUDS cloud water content in high water content
@@ -778,7 +781,7 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
                         &ZRS_TEND, ZRG_TEND, ZRH_TEND, &
                         &ZA_TH, ZA_RV, ZA_RC, ZA_RR, ZA_RI, ZA_RS, ZA_RG, ZA_RH, &
                         &ZB_TH, ZB_RV, ZB_RC, ZB_RR, ZB_RI, ZB_RS, ZB_RG, ZB_RH, &
-                        &ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, ZRAINFR)
+                        &ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, PRAINFR)
     ! External tendencies
     IF(LEXT_TEND) THEN
       ZA_TH(:) = ZA_TH(:) + ZEXT_TH(:)
@@ -1032,7 +1035,7 @@ IF(IMICRO>0) THEN
   ZHLC_LRC3D(:,:,:) = UNPACK(ZHLC_LRC(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))
   PCIT(:,:,:) = UNPACK(ZCIT(:), MASK=LDMICRO(:,:,:), FIELD=PCIT(:,:,:))
 ELSE
-  ZRAINFR(:,:,:)=0.
+  PRAINFR(:,:,:)=0.
   ZHLC_HCF3D(:,:,:)=0.
   ZHLC_LCF3D(:,:,:)=0.
   ZHLC_HRC3D(:,:,:)=0.
@@ -1539,7 +1542,7 @@ IF(LSEDIM_AFTER) THEN
                   CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:), 12, 'SEDI_BU_RRH')
   !
   !sedimentation of rain fraction
-  CALL ICE4_RAINFR_VERT(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKT, KKL, ZRAINFR, PRRS(:,:,:)*PTSTEP)
+  CALL ICE4_RAINFR_VERT(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKT, KKL, PRAINFR, PRRS(:,:,:)*PTSTEP)
 
 ENDIF
 !
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index b782886d0fab5b6b3c4ce7c142ac3c64eab8df5b..77142fbfa8efcb5e552b560d667cc3c35cfafa46 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -128,6 +128,7 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!         Pergaud  : 2018 add GFS
 !!                   01/2019 (G.Delautier via Q.Rodier) for GRIB2 ARPEGE and AROME from EPYGRAM
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -153,6 +154,7 @@ USE MODI_INI_CTURB
 USE MODI_CH_OPEN_INPUT
 !
 USE MODD_IO, ONLY: TFILEDATA
+USE MODD_FIELD_n, ONLY: XZWS
 USE MODD_CONF
 USE MODD_CONF_n
 USE MODD_CST
@@ -325,6 +327,7 @@ INTEGER                            :: IMI
 TYPE(TFILEDATA),POINTER             :: TZFILE
 INTEGER, DIMENSION(JP_GFS)    :: IP_GFS   ! list of pressure levels for GFS model
 INTEGER :: IVERSION,ILEVTYPE
+LOGICAL                                       :: GFIND  ! to test if sea wave height is found
 !---------------------------------------------------------------------------------------
 IP_GFS=(/1000,975,950,925,900,850,800,750,700,650,600,550,500,450,400,350,300,&
            250,200,150,100,70,50,30,20,10/)!
@@ -565,6 +568,55 @@ ELSE IF (HFILE=='CHEM') THEN
 END IF
 DEALLOCATE (ZOUT)
 !
+! *** BEGIN MODIF SB ADD HS ***
+!---------------------------------------------------------------------------------------
+!* 2.3 bis Read and interpol Sea Wave significant height
+!---------------------------------------------------------------------------------------
+WRITE (ILUOUT0,'(A)') ' | Searching sea wave significant height'
+SELECT CASE (IMODEL)
+  CASE(0) ! ECMWF
+    ALLOCATE (XZWS(IIU,IJU))
+    GFIND=.FALSE.
+    !    
+    CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=140229)
+    IF(INUM < 0) THEN
+      CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=229)
+      !
+      IF(INUM < 0) THEN
+        WRITE (ILUOUT0,'(A)')' | !!! WARNING !!! Sea wave height is missing in '// &
+               'the GRIB file - the default value of 2 meters is used'
+        XZWS = 2.0       
+      ELSE
+        GFIND=.TRUE.
+      END IF
+    ELSE
+      GFIND=.TRUE. 
+    END IF
+  !
+  IF(GFIND) THEN
+    !!!!!!!!!!! Faire en sorte de le faire que pour le CASE(0)
+    ! Sea wave significant height disponible uniquement pour ECMWF
+    ! recuperation du tableau de valeurs
+    CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
+    ALLOCATE(IINLO(INJ))
+    CALL COORDINATE_CONVERSION(IMODEL,IGRIB(INUM),IIU,IJU,ZLONOUT,ZLATOUT,&
+          ZXOUT,ZYOUT,INI,ZPARAM,IINLO)
+    ALLOCATE(ZVALUE(ISIZE))
+    CALL GRIB_GET(IGRIB(INUM),'values',ZVALUE)
+    ! Change 9999 value to -1
+    WHERE(ZVALUE.EQ.9999.) ZVALUE=0.
+    ALLOCATE(ZOUT(INO))
+    CALL HORIBL(ZPARAM(3),ZPARAM(4),ZPARAM(5),ZPARAM(6),INT(ZPARAM(2)),IINLO,INI, &
+              ZVALUE,INO,ZXOUT,ZYOUT,ZOUT,.FALSE.,PTIME_HORI,.FALSE.)
+    DEALLOCATE(IINLO)
+    DEALLOCATE(ZVALUE)
+    ! Stores the field in a 2 dimension array
+    CALL ARRAY_1D_TO_2D (INO,ZOUT,IIU,IJU,XZWS)
+    DEALLOCATE (ZOUT)
+  END IF
+END SELECT
+  ! *** END MODIF SB ADD HS ***
+!
 !---------------------------------------------------------------------------------------
 !* 2.4 Interpolation surface pressure
 !---------------------------------------------------------------------------------------
@@ -1880,14 +1932,15 @@ INTEGER :: ILUOUT0   ! Logical unit number of the listing
 ILUOUT0 = TLUOUT0%NLU
 !
 ISEARCH=0
+! Initialize as not found
+KNUM = -1
+!
 IF (PRESENT(KPARAM)) ISEARCH=ISEARCH+1
 IF (PRESENT(KDIS)) ISEARCH=ISEARCH+1
 IF (PRESENT(KCAT)) ISEARCH=ISEARCH+1
 IF (PRESENT(KNUMBER)) ISEARCH=ISEARCH+1
 IF (PRESENT(KLEV1)) ISEARCH=ISEARCH+1
-
-
-
+!
 DO JLOOP=1,SIZE(KGRIB)
       IFOUND = 0
       ! 
@@ -1980,16 +2033,15 @@ DO JLOOP=1,SIZE(KGRIB)
           CYCLE
         ENDIF
       ENDIF
-      ! 
+      !
       IF (IFOUND == ISEARCH) THEN
           KNUM=JLOOP
           EXIT
       ELSE  ! field not found
           KNUM=-1
       END IF
- 
 END DO
-
+!
 END SUBROUTINE SEARCH_FIELD
 !#################################################################################
 SUBROUTINE COORDINATE_CONVERSION(KMODEL,KGRIB,KNOLON,KNOLARG,&
diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90
index b92f56cc4b6cae6afbdcab28f7a2f32d732c197a..a9dc2f9a8d73555227191200084063a3d06d6906 100644
--- a/src/MNH/read_chem_data_netcdf_case.f90
+++ b/src/MNH/read_chem_data_netcdf_case.f90
@@ -83,6 +83,7 @@ END MODULE MODI_READ_CHEM_DATA_NETCDF_CASE
 !!      Original    23/01/12 (C. Mari) 
 !!      A. Berger   20/03/12 adapt whatever the chemical mechanism in BASIC
 !!      P. Wautelet 30/10/17 use F90 module for netCDF
+!!      J.Pianezzej 13/02/2019 : correction for use of MEGAN
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -389,7 +390,7 @@ ELSEIF (CDUMMY1=="12") THEN
        itimeindex=2
 ELSEIF (CDUMMY1=="18") THEN
        itimeindex=3
-ELSEIF (CDUMMY1=="24") THEN
+ELSEIF ((CDUMMY1=="24").OR.(CDUMMY1=="00")) THEN
        itimeindex=4
 ENDIF
  start3d(4) = itimeindex
diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index 05faa7b8cceae9bee1a98d0086e549be36dc5725..b4393217782ed982df17b7094e2333753076ac3d 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -291,6 +291,7 @@ END MODULE MODI_READ_EXSEG_n
 !!      Modification   01/2019   (Q. Rodier) define XCEDIS depending on BL89 or RM17 mixing length
 !!      Modification   01/2019   (P. Wautelet) bugs correction: incorrect writes
 !!      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
 !!------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1738,6 +1739,7 @@ END IF
 IF (LSALT) THEN
   IF (OSALT) THEN
     CGETSVT(NSV_SLTBEG:NSV_SLTEND)='READ'
+    CGETZWS='READ'
 !   IF(CCONF=='START') CGETSVT(NSV_SLTBEG:NSV_SLTEND)='INIT'
   ELSE
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
@@ -1745,6 +1747,7 @@ IF (LSALT) THEN
          &SCHEME IN INITIAL FMFILE",/,&
          & "THE SALT VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
     CGETSVT(NSV_SLTBEG:NSV_SLTEND)='INIT'
+    CGETZWS='INIT'
   END IF
   IF (LDEPOS_SLT(KMI)) THEN
 
@@ -1769,9 +1772,9 @@ IF (LSALT) THEN
     CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='INIT'    
    END IF
   END IF
-  IF(NMODE_SLT.GT.3 .OR. NMODE_SLT.LT.1) THEN
+  IF(NMODE_SLT.GT.5 .OR. NMODE_SLT.LT.1) THEN
     WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("SALT MODES MUST BE BETWEEN 1 and 3 ")') 
+    WRITE(UNIT=ILUOUT,FMT='("SALT MODES MUST BE BETWEEN 1 and 5 ")') 
  !callabortstop
     CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF     
@@ -1805,7 +1808,7 @@ IF (LSALT) THEN
     IF(.NOT.ALLOCATED(CDESLTNAMES)) THEN
       ALLOCATE(CDESLTNAMES(NMODE_SLT*2))
       DO JMODE=1,NMODE_SLT  
-        IMODEIDX=JPDUSTORDER(JMODE)
+        IMODEIDX=JPSALTORDER(JMODE)
         CDESLTNAMES(JMODE) = YPDESLT_INI(IMODEIDX)
         CDESLTNAMES(NMODE_SLT+JMODE) = YPDESLT_INI(NMODE_SLT+IMODEIDX)
       ENDDO
diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90
index 9c305af69bacfa0e96570b3cd35f20cc524de61c..ccdc3730df9f76c6ab240559af1af772d0211fc6 100644
--- a/src/MNH/read_field.f90
+++ b/src/MNH/read_field.f90
@@ -8,23 +8,23 @@
 !
 INTERFACE 
 !
-      SUBROUTINE READ_FIELD(TPINIFILE,KIU,KJU,KKU,PTSTEP,                    &
-            HGETTKET,HGETRVT,HGETRCT,HGETRRT,HGETRIT,HGETCIT,                &
+      SUBROUTINE READ_FIELD(TPINIFILE,KIU,KJU,KKU,                           &
+            HGETTKET,HGETRVT,HGETRCT,HGETRRT,HGETRIT,HGETCIT,HGETZWS,        &
             HGETRST,HGETRGT,HGETRHT,HGETSVT,HGETSRCT,HGETSIGS,HGETCLDFR,     &
             HGETBL_DEPTH,HGETSBL_DEPTH,HGETPHC,HGETPHR,HUVW_ADV_SCHEME,      &
             HTEMP_SCHEME,KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,  &
             KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
             PUM,PVM,PWM,PDUM,PDVM,PDWM,                                      &
-            PUT,PVT,PWT,PTHT,PPABST,PPABSM,PTKET,PRTKEMS,                    &
-            PRT,PSVT,PCIT,PDRYMASST,                                         &
+            PUT,PVT,PWT,PTHT,PPABST,PTKET,PRTKEMS,                           &
+            PRT,PSVT,PZWS,PCIT,PDRYMASST,                                    &            
             PSIGS,PSRCT,PCLDFR,PBL_DEPTH,PSBL_DEPTH,PWTHVMF,PPHC,PPHR,       &
-            PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                                 &
+            PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM, PLSZWSM,                        &
             PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
             PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM,            &
             KFRC,TPDTFRC,PUFRC,PVFRC,PWFRC,PTHFRC,PRVFRC,                    &
             PTENDTHFRC,PTENDRVFRC,PGXTHFRC,PGYTHFRC,PPGROUNDFRC,PATC,        &
-            PTENDUFRC,PTENDVFRC,                                             &            
+            PTENDUFRC,PTENDVFRC,                                             &
             KADVFRC,TPDTADVFRC,PDTHFRC,PDRVFRC,                              &
             KRELFRC,TPDTRELFRC, PTHREL, PRVREL,                              &
             PVTH_FLUX_M,PWTH_FLUX_M,PVU_FLUX_M,                              &
@@ -37,13 +37,11 @@ USE MODD_TIME ! for type DATE_TIME
 TYPE(TFILEDATA),           INTENT(IN)  :: TPINIFILE    !Initial file
 INTEGER,                   INTENT(IN)  :: KIU, KJU, KKU   
                              ! array sizes in x, y and z  directions
-REAL,                      INTENT(IN)  :: PTSTEP       
-                             ! current Time STEP   
 ! 
 CHARACTER (LEN=*),         INTENT(IN)  :: HGETTKET,                          &
                                           HGETRVT,HGETRCT,HGETRRT,           &
                                           HGETRIT,HGETRST,HGETRGT,HGETRHT,   & 
-                                          HGETCIT,HGETSRCT,                  &
+                                          HGETCIT,HGETSRCT, HGETZWS,         &
                                           HGETSIGS,HGETCLDFR,HGETBL_DEPTH,   &
                                           HGETSBL_DEPTH,HGETPHC,HGETPHR
 CHARACTER (LEN=*), DIMENSION(:),INTENT(IN)  :: HGETSVT
@@ -72,9 +70,9 @@ REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PUT,PVT,PWT     ! U,V,W at t
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PTHT,PTKET      ! theta, tke and
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PRTKEMS         ! tke adv source
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABST          ! pressure at t
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABSM          ! pressure at t-1
 REAL, DIMENSION(:,:,:,:),  INTENT(OUT) :: PRT,PSVT        ! moist and scalar
                                                           ! variables at t
+REAL, DIMENSION(:,:),      INTENT(OUT) :: PZWS
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PSRCT           ! turbulent flux
                                                           !  <s'Rc'> at t 
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PCIT            ! ice conc. at t
@@ -88,6 +86,7 @@ REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPHR            ! pH value in rainwate
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSUM,PLSVM,PLSWM    ! Wind
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSTHM,  PLSRVM      ! Mass
 ! LB fields
+REAL, DIMENSION(:,:),            INTENT(OUT) :: PLSZWSM              ! significant height of sea waves
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBXUM,PLBXVM,PLBXWM ! Wind
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBXTHM              ! Mass
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBYUM,PLBYVM,PLBYWM ! Wind
@@ -124,23 +123,23 @@ END INTERFACE
 END MODULE MODI_READ_FIELD
 !
 !     ########################################################################
-      SUBROUTINE READ_FIELD(TPINIFILE,KIU,KJU,KKU,PTSTEP,                    &
-            HGETTKET,HGETRVT,HGETRCT,HGETRRT,HGETRIT,HGETCIT,                &
+      SUBROUTINE READ_FIELD(TPINIFILE,KIU,KJU,KKU,                           &
+            HGETTKET,HGETRVT,HGETRCT,HGETRRT,HGETRIT,HGETCIT,HGETZWS,        &
             HGETRST,HGETRGT,HGETRHT,HGETSVT,HGETSRCT,HGETSIGS,HGETCLDFR,     &
             HGETBL_DEPTH,HGETSBL_DEPTH,HGETPHC,HGETPHR,HUVW_ADV_SCHEME,      &
             HTEMP_SCHEME,KSIZELBX_ll,KSIZELBXU_ll,KSIZELBY_ll,KSIZELBYV_ll,  &
             KSIZELBXTKE_ll,KSIZELBYTKE_ll,                                   &
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
             PUM,PVM,PWM,PDUM,PDVM,PDWM,                                      &
-            PUT,PVT,PWT,PTHT,PPABST,PPABSM,PTKET,PRTKEMS,                    &
-            PRT,PSVT,PCIT,PDRYMASST,                                         &
+            PUT,PVT,PWT,PTHT,PPABST,PTKET,PRTKEMS,                           &
+            PRT,PSVT,PZWS,PCIT,PDRYMASST,                                    &
             PSIGS,PSRCT,PCLDFR,PBL_DEPTH,PSBL_DEPTH,PWTHVMF,PPHC,PPHR,       &
-            PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                                 &
+            PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,                         &
             PLBXUM,PLBXVM,PLBXWM,PLBXTHM,PLBXTKEM,PLBXRM,PLBXSVM,            &
             PLBYUM,PLBYVM,PLBYWM,PLBYTHM,PLBYTKEM,PLBYRM,PLBYSVM,            &
             KFRC,TPDTFRC,PUFRC,PVFRC,PWFRC,PTHFRC,PRVFRC,                    &
             PTENDTHFRC,PTENDRVFRC,PGXTHFRC,PGYTHFRC,PPGROUNDFRC,PATC,        &
-            PTENDUFRC,PTENDVFRC,                                             &            
+            PTENDUFRC,PTENDVFRC,                                             &
             KADVFRC,TPDTADVFRC,PDTHFRC,PDRVFRC,                              &
             KRELFRC,TPDTRELFRC, PTHREL, PRVREL,                              &
             PVTH_FLUX_M,PWTH_FLUX_M,PVU_FLUX_M,                              &
@@ -238,6 +237,8 @@ END MODULE MODI_READ_FIELD
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!          V. Vionnet  07/17    add blowing snow scheme
 !!          P. Wautelet 01/2019  corrected intent of PDUM,PDVM,PDWM (OUT->INOUT)
+!  P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments (bugfix: PPABSM was intent(OUT))
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -294,13 +295,11 @@ IMPLICIT NONE
 TYPE(TFILEDATA),           INTENT(IN)  :: TPINIFILE    !Initial file
 INTEGER,                   INTENT(IN)  :: KIU, KJU, KKU   
                              ! array sizes in x, y and z  directions
-REAL,                      INTENT(IN)  :: PTSTEP       
-                             ! current Time STEP   
 ! 
 CHARACTER (LEN=*),         INTENT(IN)  :: HGETTKET,                          &
                                           HGETRVT,HGETRCT,HGETRRT,           &
                                           HGETRIT,HGETRST,HGETRGT,HGETRHT,   & 
-                                          HGETCIT,HGETSRCT,                  &
+                                          HGETCIT,HGETSRCT,HGETZWS,          &
                                           HGETSIGS,HGETCLDFR,HGETBL_DEPTH,   &
                                           HGETSBL_DEPTH,HGETPHC,HGETPHR
 CHARACTER (LEN=*), DIMENSION(:),INTENT(IN)  :: HGETSVT
@@ -331,9 +330,9 @@ REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PUT,PVT,PWT     ! U,V,W at t
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PTHT,PTKET      ! theta, tke and
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PRTKEMS         ! tke adv source
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABST          ! pressure at t
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABSM          ! pressure at t-1
 REAL, DIMENSION(:,:,:,:),  INTENT(OUT) :: PRT,PSVT        ! moist and scalar
                                                           ! variables at t
+REAL, DIMENSION(:,:),      INTENT(OUT) :: PZWS
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PSRCT           ! turbulent flux
                                                           !  <s'Rc'> at t 
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PCIT            ! ice conc. at t
@@ -346,6 +345,7 @@ REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPHR            ! pH value in rainwate
 !
 !
 ! Larger Scale fields
+REAL, DIMENSION(:,:),            INTENT(OUT) :: PLSZWSM              ! significant height of sea waves
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSUM,PLSVM,PLSWM    ! Wind
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSTHM,  PLSRVM      ! Mass
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLBXUM,PLBXVM,PLBXWM ! Wind
@@ -461,6 +461,13 @@ SELECT CASE(HGETTKET)
     PRTKEMS(:,:,:) = 0.
 END SELECT 
 !
+SELECT CASE(HGETZWS)
+  CASE('READ')
+  CALL IO_Field_read(TPINIFILE,'ZWS',PZWS)
+  CASE('INIT')
+  PZWS(:,:)=0.
+END SELECT 
+!
 SELECT CASE(HGETRVT)             ! vapor
   CASE('READ')
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
@@ -1198,7 +1205,7 @@ END IF
 !*       2.2a  3D LS fields  
 !
 !
-CALL INI_LS(TPINIFILE,HGETRVT,GLSOURCE,PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM)
+CALL INI_LS(TPINIFILE,HGETRVT,GLSOURCE,PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM)
 !
 !
 !*       2.2b  2D "surfacic" LB fields   
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index 67ba3a572efe55a7e8b683070b6504db2680a8b9..88210cf5983cfb77302569cfe4506d6889c78d14 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -22,7 +22,7 @@ INTERFACE
                                   PINPRS,PINPRS3D,PINPRG,PINPRG3D,PINPRH,PINPRH3D,     &
                                   PSOLORG,PMI,                                         &
                                   PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,         &
-                                  PINDEP, PSUPSAT,  PNACT, PNPRO,PSSPRO,               &
+                                  PINDEP, PSUPSAT,  PNACT, PNPRO,PSSPRO, PRAINFR,      &
                                   PSEA,PTOWN          )   
 !
 USE MODD_IO, ONLY: TFILEDATA
@@ -133,6 +133,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSUPSAT  !sursat
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNACT  !concentrtaion d'aérosols activés au temps t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNPRO  !concentrtaion d'aérosols activés au temps t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSSPRO   !sursat
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRAINFR ! Rain fraction                
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA      ! Land Sea mask
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN      ! Town fraction
 !
@@ -156,7 +157,7 @@ END MODULE MODI_RESOLVED_CLOUD
                                   PINPRS,PINPRS3D,PINPRG,PINPRG3D,PINPRH,PINPRH3D,     &
                                   PSOLORG,PMI,                                         &
                                   PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,         &
-                                  PINDEP, PSUPSAT,  PNACT, PNPRO,PSSPRO,               &
+                                  PINDEP, PSUPSAT,  PNACT, PNPRO,PSSPRO, PRAINFR,      &
                                   PSEA,PTOWN          )   
 !     ##########################################################################
 !
@@ -265,6 +266,7 @@ END MODULE MODI_RESOLVED_CLOUD
 !!                            ICE3/ICE4 modified, old version under LRED=F   
 !!  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
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -419,6 +421,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSUPSAT  !sursat
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNACT  !concentrtaion d'aérosols activés au temps t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNPRO  !concentrtaion d'aérosols activés au temps t
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSSPRO   !sursat
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRAINFR ! Rain fraction                
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA      ! Land Sea mask
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN      ! Town fraction
 !
@@ -918,8 +921,8 @@ SELECT CASE ( HCLOUD )
                    PRS(:,:,:,4)>ZRSMIN(4) .OR. &
                    PRS(:,:,:,5)>ZRSMIN(5) .OR. &
                    PRS(:,:,:,6)>ZRSMIN(6)
-      CALL RAIN_ICE_RED ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1,            &
-                    PTSTEP, KRR, LLMICRO, ZEXN,            &
+      CALL RAIN_ICE_RED ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1,      &
+                    PTSTEP, KRR, LLMICRO, ZEXN,                          &
                     ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,&
                     PTHT, PRT(:,:,:,1), PRT(:,:,:,2),                    &
                     PRT(:,:,:,3), PRT(:,:,:,4),                          &
@@ -927,18 +930,18 @@ SELECT CASE ( HCLOUD )
                     PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),      &
                     PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),            &
                     PINPRC,PINPRR, PINPRR3D, PEVAP3D,                    &
-                    PINPRS, PINPRG, PSIGS, PINDEP, PSEA,PTOWN, PFPR=ZFPR)
+                    PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA,PTOWN, PFPR=ZFPR)
     ELSE 
-      CALL RAIN_ICE ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1,            &
-                    KSPLITR, PTSTEP, KRR,                           &
+      CALL RAIN_ICE ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1,          &
+                    KSPLITR, PTSTEP, KRR,                                &
                     ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,&
                     PTHT, PRT(:,:,:,1), PRT(:,:,:,2),                    &
                     PRT(:,:,:,3), PRT(:,:,:,4),                          &
                     PRT(:,:,:,5), PRT(:,:,:,6),                          &
                     PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),      &
                     PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),            &
-                    PINPRC,PINPRR, PINPRR3D, PEVAP3D,           &
-                    PINPRS, PINPRG, PSIGS,PINDEP,             &
+                    PINPRC,PINPRR, PINPRR3D, PEVAP3D,                    &
+                    PINPRS, PINPRG, PSIGS,PINDEP, PRAINFR,               &
                     PSEA,PTOWN, PFPR=ZFPR)
     END IF
 !
@@ -1009,7 +1012,7 @@ SELECT CASE ( HCLOUD )
                     PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),       &
                     PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),             &
                     PINPRC, PINPRR, PINPRR3D, PEVAP3D,                    &
-                    PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN,           &
+                    PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN,  &
                     PRT(:,:,:,7), PRS(:,:,:,7), PINPRH, PFPR=ZFPR         )
     ELSE
       CALL RAIN_ICE ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1,         &
@@ -1021,7 +1024,7 @@ SELECT CASE ( HCLOUD )
                     PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),       &
                     PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),             &
                     PINPRC, PINPRR, PINPRR3D, PEVAP3D,           &
-                    PINPRS, PINPRG, PSIGS,PINDEP,              &
+                    PINPRS, PINPRG, PSIGS,PINDEP, PRAINFR,                &
                     PSEA, PTOWN,                                          &
                     PRT(:,:,:,7),  PRS(:,:,:,7), PINPRH,PFPR=ZFPR )
      END IF
diff --git a/src/MNH/salt_filter.f90 b/src/MNH/salt_filter.f90
index bff76dfe979c1d70196c4698031c2fa097ef0aee..bc40e889136a14db3727ae76c2c90da0e3572948 100644
--- a/src/MNH/salt_filter.f90
+++ b/src/MNH/salt_filter.f90
@@ -45,19 +45,8 @@ END MODULE MODI_SALT_FILTER
 !!   MODIFICATIONS
 !!    -------------
 !!   Original
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
-! Entry variables:
-!
-! PRSVS(INOUT)       -Array of moments included in PRSVS
-!
-!*************************************************************
-! Exit variables:
-!
-!*************************************************************
-! Variables used during the deposition velocity calculation
-! 
-! ZVGK       -Polydisperse settling velocity of the kth moment (m/s)
-!************************************************************
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -66,10 +55,12 @@ END MODULE MODI_SALT_FILTER
 !   IMPLICIT ARGUMENTS
 !
 USE MODD_SALT
-USE MODD_CSTS_SALT
-!
 USE MODE_SALT_PSD
-USE MODD_CST, ONLY : XMNH_TINY
+
+!+ Marine
+USE MODI_INIT_SALT
+!- Marine
+
 !
 IMPLICIT NONE
 !
@@ -78,27 +69,156 @@ IMPLICIT NONE
 REAL,  DIMENSION(:,:,:,:),  INTENT(INOUT) :: PSV
 REAL,  DIMENSION(:,:,:),    INTENT(IN)    :: PRHODREF
 !
-!*       0.2   Declarations of local variables :
-!
-INTEGER :: JN
-INTEGER :: IMODEIDX
-REAL,    DIMENSION(NMODE_SLT*3) :: ZPMIN
-REAL,    DIMENSION(NMODE_SLT)   :: ZINIRADIUS
-REAL,    DIMENSION(SIZE(PSV,1), SIZE(PSV,2), SIZE(PSV,3), NMODE_SLT*3)  :: ZM                  ! [aerosol units] local array which goes to output later
-
-REAL :: ZRGMIN, ZSIGMIN
-REAL :: ZRHOP, ZMI
-INTEGER,DIMENSION(NMODE_SLT) :: NM0, NM3, NM6
-!
-!*       0.3  initialize constant
-!
-ZRHOP = XDENSITY_SALT
-ZMI   = XMOLARWEIGHT_SALT ! molecular mass in kg/mol
-!
+!*      0.2    declarations local variables
+!
+REAL                                  :: ZRHOI               ! [kg/m3] density of aerosol
+REAL                                  :: ZMI                 ! [kg/mol] molar weight of aerosol
+REAL                                  :: ZRGMIN              ! [um] minimum radius accepted
+REAL                                  :: ZSIGMIN             ! minimum standard deviation accepted
+REAL,DIMENSION(:,:,:,:), ALLOCATABLE  :: ZM                  ! [aerosol units] local array which goes to output later
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN               ! [aerosol units] minimum values for N, sigma, M
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM0                 ! [idx] index for Mode 0 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM3                 ! [idx] indexes for Mode 3 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM6                 ! [idx] indexes for Mode 6 in passed variables
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS          ! initial mean radius
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZINISIGMA           ! initial standard deviation
+INTEGER                               :: JN,IMODEIDX,JJ      ! [idx] loop counters
+
 !-------------------------------------------------------------------------------
+!+ Marine
+CALL INIT_SALT
+!- Marine
+
+
+ALLOCATE (NM0(NMODE_SLT))
+ALLOCATE (NM3(NMODE_SLT))
+ALLOCATE (NM6(NMODE_SLT))
+ALLOCATE (ZM(SIZE(PSV,1), SIZE(PSV,2), SIZE(PSV,3), NMODE_SLT*3))
+ALLOCATE (ZMMIN(NMODE_SLT*3))
+ALLOCATE (ZINIRADIUS(NMODE_SLT))
+ALLOCATE (ZINISIGMA(NMODE_SLT))
+
+PSV(:,:,:,:) = MAX(PSV(:,:,:,:), XMNH_TINY)
+
+DO JN=1,NMODE_SLT
+  IMODEIDX = JPSALTORDER(JN)
+  !Calculations here are for one mode only
+   ZINISIGMA(JN) = XINISIG_SLT(IMODEIDX)
+  IF (CRGUNITS=="MASS") THEN
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
+  ELSE
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
+  END IF
+
+  !Set counter for number, M3 and M6
+  NM0(JN) = 1+(JN-1)*3
+  NM3(JN) = 2+(JN-1)*3
+  NM6(JN) = 3+(JN-1)*3
+  !Get minimum values possible
+  ZMMIN(NM0(JN)) = XN0MIN_SLT(IMODEIDX)
+  ZRGMIN         = ZINIRADIUS(JN)
+  IF (LVARSIG_SLT) THEN
+    ZSIGMIN = XSIGMIN_SLT
+  ELSE
+    ZSIGMIN = XINISIG_SLT(IMODEIDX)
+  ENDIF
+  ZMMIN(NM3(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**3)*EXP(4.5 * LOG(ZSIGMIN)**2)
+  ZMMIN(NM6(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**6)*EXP(18. * LOG(ZSIGMIN)**2)
+END DO
+!
+!Set density of aerosol, here dust (kg/m3)
+ZRHOI = XDENSITY_SALT
+!Set molecular weight of dust !NOTE THAT THIS IS NOW IN KG
+ZMI   = XMOLARWEIGHT_SALT
+!
+DO JN=1,NMODE_SLT
+     !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+     IF (LVARSIG_SLT) THEN
+     ZM(:,:,:,NM3(JN)) =                        &
+          PSV(:,:,:,2+(JN-1)*3)                & !molec_{aer}/molec_{aer}
+          * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+          * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+          * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+          * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+          / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+    ELSE
+       IF ((LRGFIX_SLT)) THEN
+          ZM(:,:,:,NM3(JN)) =                   &
+          PSV(:,:,:,JN)                        & !molec_{aer}/molec_{aer}
+          * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+          * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+          * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+          * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+          / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+      ELSE
+          ZM(:,:,:,NM3(JN)) =                   &
+          PSV(:,:,:,2+(JN-1)*2)                & !molec_{aer}/molec_{aer}
+          * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+          * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+          * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+          * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+          / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+      END IF
+    END IF
+
+! calculate moment 0 from dispersion and mean radius
+     ZM(:,:,:,NM0(JN))=  ZM(:,:,:,NM3(JN))/&
+       ((ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(ZINISIGMA(JN))**2))
+
+
+! calculate moment 6 from dispersion and mean radius
+     ZM(:,:,:,NM6(JN)) = ZM(:,:,:,NM0(JN)) * (ZINIRADIUS(JN)**6) * &
+               EXP(18 *(LOG(ZINISIGMA(JN)))**2)
+
+     IF (LVARSIG_SLT) THEN
+     WHERE ((ZM(:,:,:,NM0(JN)) .LT. ZMMIN(NM0(JN))).OR.&
+            (ZM(:,:,:,NM3(JN)) .LT. ZMMIN(NM3(JN))).OR.&
+            (ZM(:,:,:,NM6(JN)) .LT. ZMMIN(NM6(JN))))
+     ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+     ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+     ZM(:,:,:,NM6(JN)) = ZMMIN(NM6(JN))
+     END WHERE
+
+     ELSE IF (.NOT.(LRGFIX_SLT)) THEN
+
+     WHERE ((ZM(:,:,:,NM0(JN)) .LT. ZMMIN(NM0(JN))).OR.&
+            (ZM(:,:,:,NM3(JN)) .LT. ZMMIN(NM3(JN))))
+     ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+     ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+     END WHERE
+     ENDIF
+
+    ! return to concentration #/m3 =>  (#/molec_{air}
+     IF (LVARSIG_SLT) THEN
+     PSV(:,:,:,1+(JN-1)*3) = ZM(:,:,:,NM0(JN)) * XMD / &
+                              (XAVOGADRO*PRHODREF(:,:,:))
+
+     PSV(:,:,:,2+(JN-1)*3) = ZM(:,:,:,NM3(JN)) * XMD  * XPI * 4./3 * ZRHOI / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+
+     PSV(:,:,:,3+(JN-1)*3) = ZM(:,:,:,NM6(JN)) * XMD  / &
+                              ( XAVOGADRO*PRHODREF(:,:,:) * 1.d-6)
+     ELSE IF (LRGFIX_SLT) THEN
+      PSV(:,:,:,JN)        = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+     ELSE
+     PSV(:,:,:,1+(JN-1)*2) = ZM(:,:,:,NM0(JN)) * XMD / &
+                              (XAVOGADRO*PRHODREF(:,:,:))
+
+     PSV(:,:,:,2+(JN-1)*2) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+     END IF
 
 !
-PSV(:,:,:,:) =  MAX(PSV(:,:,:,:), XMNH_TINY)
-!
+END DO  !Loop on modes
+
+DEALLOCATE(ZINIRADIUS)
+DEALLOCATE(ZMMIN)
+DEALLOCATE(ZINISIGMA)
+DEALLOCATE(ZM)
+DEALLOCATE(NM6)
+DEALLOCATE(NM3)
+DEALLOCATE(NM0)
+
 
 END SUBROUTINE SALT_FILTER
diff --git a/src/MNH/saltlfin.f90 b/src/MNH/saltlfin.f90
index c3a2650b09b25c8d0c1e9b9d87396867f464e2f3..3b637b2785bdb83d2d1002ef60ffa646c4963729 100644
--- a/src/MNH/saltlfin.f90
+++ b/src/MNH/saltlfin.f90
@@ -14,10 +14,14 @@
 !
 INTERFACE
 !
-SUBROUTINE SALTLFI_n(PSV, PRHODREF)
+!++cb++24/10/16
+!SUBROUTINE SALTLFI_n(PSV, PRHODREF)
+SUBROUTINE SALTLFI_n(PSV, PRHODREF, PZZ)
 IMPLICIT NONE
-REAL,       DIMENSION(:,:,:,:),  INTENT(INOUT) :: PSV
-REAL,       DIMENSION(:,:,:),  INTENT(IN) :: PRHODREF
+REAL, DIMENSION(:,:,:,:),  INTENT(INOUT) :: PSV
+REAL, DIMENSION(:,:,:),    INTENT(IN)    :: PRHODREF
+REAL, DIMENSION(:,:,:),    INTENT(IN)    :: PZZ
+
 END SUBROUTINE SALTLFI_n
 !
 END INTERFACE
@@ -26,7 +30,8 @@ END MODULE MODI_SALTLFI_n
 !
 !
 !     ############################################################
-      SUBROUTINE SALTLFI_n(PSV, PRHODREF)
+!      SUBROUTINE SALTLFI_n(PSV, PRHODREF)
+      SUBROUTINE SALTLFI_n(PSV, PRHODREF, PZZ)
 !     ############################################################
 !
 !!    PURPOSE
@@ -43,9 +48,9 @@ END MODULE MODI_SALTLFI_n
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!    none
-!!
 !!    2014    P.Tulet  modif calcul ZM
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+
 !!    EXTERNAL
 !!    --------
 !!    None
@@ -57,7 +62,9 @@ END MODULE MODI_SALTLFI_n
 !
 USE MODD_SALT
 USE MODD_NSV
-USE MODD_GRID_n, ONLY: XZZ
+!++cb++24/10/16
+!USE MODD_GRID_n, ONLY: XZZ
+!--cb--
 USE MODD_CSTS_SALT
 USE MODD_CST, ONLY :    &
        XPI              & !Definition of pi
@@ -75,6 +82,7 @@ IMPLICIT NONE
 !
 REAL,   DIMENSION(:,:,:,:),    INTENT(INOUT) :: PSV
 REAL,   DIMENSION(:,:,:),      INTENT(IN) :: PRHODREF
+REAL,   DIMENSION(:,:,:),      INTENT(IN) :: PZZ
 !
 !
 !*      0.2    declarations local variables
@@ -88,6 +96,9 @@ REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN
 REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS, ZINISIGMA
 REAL,DIMENSION(:,:),     ALLOCATABLE  :: ZSEA
 INTEGER :: IKU
+!+Marine
+INTEGER :: IMOMENTS
+!-Marine
 INTEGER :: JI, JJ, JN, JK  ! loop counter
 INTEGER :: IMODEIDX  ! index mode
 REAL, PARAMETER  :: ZN_SALT=0.1 ! particles of sea salt/cm3 {air}
@@ -102,6 +113,7 @@ REAL    :: ZN_SALTN
 !        1.1    initialisation 
 !
 IKU=SIZE(PSV,3)
+!+ Marine
 !
 ALLOCATE (IM0(NMODE_SLT))
 ALLOCATE (IM3(NMODE_SLT))
@@ -115,11 +127,20 @@ ALLOCATE (ZMMIN(NMODE_SLT*3))
 ALLOCATE (ZSEA(SIZE(PSV,1), SIZE(PSV,2)))
 
 ZSEA(:,:) = 0.
-WHERE ((XZZ(:,:,1) .LT. 0.1).AND.(XZZ(:,:,1) .GE. 0.)) 
+!++cb++20/10/16
+!WHERE ((XZZ(:,:,1) .LT. 0.1).AND.(XZZ(:,:,1) .GE. 0.)) 
+!  ZSEA(:,:) = 1.
+!END WHERE
+!++cb++24/10/16
+!WHERE (XZZ(:,:,1) .LE. 0.01) 
+WHERE (PZZ(:,:,1) .LE. 0.01)
+!--cb--
   ZSEA(:,:) = 1.
 END WHERE
+!--cb--
 !
 !
+!+ Marine
 DO JN = 1, NMODE_SLT
   IM0(JN) = 1+(JN-1)*3
   IM3(JN) = 2+(JN-1)*3
@@ -146,8 +167,8 @@ DO JN = 1, NMODE_SLT
 ENDDO
 !
 !
-ZRHOI = XDENSITY_SALT !1.8e3 !++changed alfgr
-!ZMI   = XMOLARWEIGHT_SALT*1.D3 !100.  !++changed alfgr
+!XDENSITY_SALT est fixé dans modd_csts_salt.f90
+ZRHOI = XDENSITY_SALT 
 ZMI   = XMOLARWEIGHT_SALT 
 ZDEN2MOL = 1E-6 * XAVOGADRO / XMD
 ZFAC=(4./3.)*XPI*ZRHOI*1.e-9
@@ -158,18 +179,49 @@ DO JN=1,NMODE_SLT
 !*       1.1    calculate moment 0 from sea salt number by m3
 !
 ! initial vertical profil of sea salt  and convert in  #/m3
-  IF (JN == 1) ZN_SALTN = 1E-4  *  ZN_SALT *1E6
-  IF (JN == 2) ZN_SALTN = 1.   *  ZN_SALT *1E6
-  IF (JN == 3) ZN_SALTN = 10 *  ZN_SALT *1E6
-  DO JK=1, SIZE(XZZ,3) 
-    DO JJ=1, SIZE(XZZ,2) 
-      DO JI=1, SIZE(XZZ,1) 
-        IF (XZZ(JI,JJ,JK) .LT. 600.) THEN
-         ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN 
-        ELSE IF ((XZZ(JI,JJ,JK) .GE. 600.).AND.(XZZ(JI,JJ,JK) .LT. 1000.)) THEN 
-         ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN - ZN_SALTN*(1.-1E-3)*(XZZ(JI,JJ,JK)-600.) / 400.
-        ELSE IF (XZZ(JI,JJ,JK) .GE. 1000.) THEN
-         ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN *1E-3
+!+Marine : (reprendre XN0MIN_SLT de modd_salt.f90).
+! Pas plus simple de fixer une dimension à ZN_SALT qui dépend de JN pour ne pas
+! avoir à rappeler le schéma d'émission?
+
+  IF(NMODE_SLT == 5)THEN
+
+
+    IF (JN == 1) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 2) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 3) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 4) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 5) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+
+  ELSE 
+!  IF (JN == 1) ZN_SALTN = 1E-4  *  ZN_SALT *1E6
+!  IF (JN == 2) ZN_SALTN = 1.   *  ZN_SALT *1E6
+!  IF (JN == 3) ZN_SALTN = 10 *  ZN_SALT *1E6
+
+    IF (JN == 1) ZN_SALTN =  XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 2) ZN_SALTN =  XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 3) ZN_SALTN =  XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+
+  END IF
+
+
+!-Marine
+
+  DO JK=1, SIZE(PSV,3) 
+    DO JJ=1, SIZE(PSV,2) 
+      DO JI=1, SIZE(PSV,1) 
+!++cb++24/10/16
+!        IF (XZZ(JI,JJ,JK) .LT. 600.) THEN
+        IF (PZZ(JI,JJ,JK) .LT. 600.) THEN
+          ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN 
+!        ELSE IF ((XZZ(JI,JJ,JK) .GE. 600.).AND.(XZZ(JI,JJ,JK) .LT. 1000.)) THEN 
+        ELSE IF ((PZZ(JI,JJ,JK) .GE. 600.).AND.(PZZ(JI,JJ,JK) .LT. 1000.)) THEN
+!          ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN - ZN_SALTN*(1.-1E-3)*(XZZ(JI,JJ,JK)-600.) / 400.
+          ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN - &
+                                 ZN_SALTN * (1.-1E-3) * (PZZ(JI,JJ,JK)-600.) / 400.
+!        ELSE IF (XZZ(JI,JJ,JK) .GE. 1000.) THEN
+        ELSE IF (PZZ(JI,JJ,JK) .GE. 1000.) THEN
+          ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN * 1E-3
+!--cb--
         END IF
       END DO
     END DO
@@ -179,7 +231,7 @@ DO JN=1,NMODE_SLT
     END WHERE
     WHERE ((ZSEA(:,:) .GT. 0.).AND.(ZSEA(:,:) .LT. 1.))
       ZM(:,:,JK,IM0(JN)) = ZM(:,:,JK,IM0(JN))-(ZM(:,:,JK,IM0(JN)) -ZN_SALTN *1E-3) * &
-      (1. - ZSEA(:,:))
+                           (1. - ZSEA(:,:))
     END WHERE
   END DO
 
@@ -198,12 +250,31 @@ DO JN=1,NMODE_SLT
   ZM(:,:,:,IM6(JN)) = MAX(ZMMIN(IM6(JN)), ZM(:,:,:,IM6(JN)))
 !
 !*       1.4    output concentration
+!+ Marine
+!  PSV(:,:,:,1+(JN-1)*3) = ZM(:,:,:,IM0(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:))
+!  PSV(:,:,:,2+(JN-1)*3) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
+!                           (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+!
+!  PSV(:,:,:,3+(JN-1)*3) = ZM(:,:,:,IM6(JN)) *  XMD / (XAVOGADRO*PRHODREF(:,:,:)*1.d-6)
 !
-  PSV(:,:,:,1+(JN-1)*3) = ZM(:,:,:,IM0(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:))
-  PSV(:,:,:,2+(JN-1)*3) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
-                           (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+!++cb++20/10/16
+  IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG + 1) / NMODE_SLT
+!--cb--
 
-  PSV(:,:,:,3+(JN-1)*3) = ZM(:,:,:,IM6(JN)) *  XMD / (XAVOGADRO*PRHODREF(:,:,:)*1.d-6)
+  IF (IMOMENTS == 3) THEN
+    PSV(:,:,:,1+(JN-1)*3) = ZM(:,:,:,IM0(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:))
+    PSV(:,:,:,2+(JN-1)*3) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
+                            (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+
+    PSV(:,:,:,3+(JN-1)*3) = ZM(:,:,:,IM6(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:)*1.d-6)
+  ELSE IF (IMOMENTS == 2) THEN
+    PSV(:,:,:,1+(JN-1)*2) = ZM(:,:,:,IM0(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:))
+    PSV(:,:,:,2+(JN-1)*2) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
+                            (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+  ELSE 
+    PSV(:,:,:,JN) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
+                            (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+  END IF
 !
 END DO
 !
diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90
index 8c6748d5abac3302d794703c6d982d7cc120c137..aac71414c42db5dfd3753030b13afcf27dee31ec 100644
--- a/src/MNH/spawn_field2.f90
+++ b/src/MNH/spawn_field2.f90
@@ -9,9 +9,9 @@ MODULE MODI_SPAWN_FIELD2
 INTERFACE
 !
       SUBROUTINE SPAWN_FIELD2(KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,HTURB,   &
-               PUT,PVT,PWT,PTHVT,PRT,PHUT,PTKET,PSVT,PATC,                     &
+               PUT,PVT,PWT,PTHVT,PRT,PHUT,PTKET,PSVT,PZWS,PATC,                &
                PSRCT,PSIGS,                                                    &
-               PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                                &
+               PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,                        &
                PDTHFRC,PDRVFRC,PTHREL,PRVREL,                                  &
                PVU_FLUX_M,PVTH_FLUX_M,PWTH_FLUX_M,                             &
                TPSONFILE,KIUSON,KJUSON,                                        &
@@ -30,11 +30,13 @@ REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PUT,PVT,PWT        !  model 2
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTKET              ! variables
 REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRT,PSVT,PATC      !   at t
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTHVT,PHUT         !
+REAL, DIMENSION(:,:),     INTENT(OUT) :: PZWS
 !
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PSRCT,PSIGS  ! secondary
                                                             ! prognostic variables
            ! Larger Scale fields for relaxation and diffusion
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSUM, PLSVM, PLSWM 
+REAL, DIMENSION(:,:),            INTENT(OUT) :: PLSZWSM
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSTHM,  PLSRVM     
 REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PDTHFRC,PDRVFRC
 REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PTHREL,PRVREL
@@ -55,9 +57,9 @@ END INTERFACE
 END MODULE MODI_SPAWN_FIELD2
 !     ##########################################################################
       SUBROUTINE SPAWN_FIELD2(KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,HTURB,   &
-               PUT,PVT,PWT,PTHVT,PRT,PHUT,PTKET,PSVT,PATC,                     &
+               PUT,PVT,PWT,PTHVT,PRT,PHUT,PTKET,PSVT, PZWS,PATC,                &
                PSRCT,PSIGS,                                                    &
-               PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                                &
+               PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,                        &
                PDTHFRC,PDRVFRC,PTHREL,PRVREL,                                  &
                PVU_FLUX_M,PVTH_FLUX_M,PWTH_FLUX_M,                             &
                TPSONFILE,KIUSON,KJUSON,                                        &
@@ -150,6 +152,7 @@ END MODULE MODI_SPAWN_FIELD2
 !!      Modification    01/2016  (JP Pinty) Add LIMA
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!      Modification 05/03/2018 (J.Escobar) bypass gridnesting special case KD(X/Y)RATIO == 1 not parallelized
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -205,6 +208,7 @@ INTEGER,   INTENT(IN)  :: KDYRATIO   ! between model 2 and model 1
 CHARACTER (LEN=4), INTENT(IN) :: HTURB !  Kind of turbulence parameterization
 !
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PUT,PVT,PWT        !  model 2
+REAL, DIMENSION(:,:),     INTENT(OUT) :: PZWS
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTKET              ! variables
 REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRT,PSVT,PATC      !   at t
 REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PTHVT,PHUT         !
@@ -213,6 +217,7 @@ REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PSRCT,PSIGS  ! secondary
                                                             ! prognostic variables
            ! Larger Scale fields for relaxation and diffusion
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSUM, PLSVM, PLSWM 
+REAL, DIMENSION(:,:),            INTENT(OUT) :: PLSZWSM
 REAL, DIMENSION(:,:,:),          INTENT(OUT) :: PLSTHM,  PLSRVM 
 REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PDTHFRC,PDRVFRC
 REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PTHREL,PRVREL
@@ -238,6 +243,7 @@ REAL, DIMENSION(SIZE(XRT1,1),SIZE(XRT1,2),SIZE(XRT1,3)) :: ZHUT ! relative humid
 REAL, DIMENSION(SIZE(XTHT1,1),SIZE(XTHT1,2),SIZE(XTHT1,3)) :: ZTHVT! virtual pot. T
                                                                 ! (model 1)          
 !$20140708
+REAL, DIMENSION(:,:),   ALLOCATABLE   :: ZZWS_C, ZLSZWSM_C
 !$***** 3D
 REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZUT_C, ZLSUM_C 
 REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZVT_C, ZLSVM_C
@@ -261,6 +267,7 @@ INTEGER  :: IINFO_ll
 !$
 ! Arrays for reading fields of input SON 1 file
 REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZWORK3D
+REAL, DIMENSION(:,:),   ALLOCATABLE   :: ZWORK2D
 REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZTHT1,ZTHVT1
 REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZPABST1,ZHUT1
 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRT1
@@ -291,6 +298,7 @@ CALL COMPUTE_THV_HU(CONF_MODEL(1)%LUSERV,XRT1,XTHT1,XPABST1,ZTHVT,ZHUT)
 !
 IF (PRESENT(TPSONFILE)) THEN
   ALLOCATE(ZWORK3D(KIUSON,KJUSON,SIZE(PUT,3)))
+  ALLOCATE(ZWORK2D(KIUSON,KJUSON))
   ALLOCATE(ZPABST1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUT,3)))
   ALLOCATE(ZTHT1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUT,3)))
   ALLOCATE(ZTHVT1(KIE1-KIB1+1,KJE1-KJB1+1,SIZE(PUT,3)))
@@ -402,6 +410,8 @@ END IF
   CALL GET_CHILD_DIM_ll(2, IDIMX_C, IDIMY_C, IINFO_ll)
 !
 !$20140708 use  ZTHVM_C in BIKAT top cal PTHVM_C
+  ALLOCATE(ZZWS_C(IDIMX_C,IDIMY_C))
+  ALLOCATE(ZLSZWSM_C(IDIMX_C,IDIMY_C))
   !$**** 3D
   ALLOCATE(ZUT_C(IDIMX_C,IDIMY_C,SIZE(PUT,3)))
   ALLOCATE(ZLSUM_C(IDIMX_C,IDIMY_C,SIZE(PUT,3)))
@@ -434,6 +444,8 @@ END IF
   ZVT_C   =0.
   ZWT_C   =0.
   ZTHVT_C =0.
+  ZZWS_C  =0.
+  ZLSZWSM_C=0.
   ZHUT_C  =0.
   ZTKET_C =0.
   ZSRCT_C =0.
@@ -449,6 +461,14 @@ END IF
   ZRVREL_C=0.
   ZTHREL_C=00
 !
+    CALL SET_LSFIELD_1WAY_ll(XZWS1(:,:),ZZWS_C(:,:),2)
+    CALL SET_LSFIELD_1WAY_ll(XLSZWSM1(:,:),ZLSZWSM_C(:,:),2)
+    !
+    CALL LS_FORCING_ll(2, IINFO_ll, .TRUE.)
+    CALL GO_TOMODEL_ll(2, IINFO_ll)
+    CALL GOTO_MODEL(2)
+    CALL UNSET_LSFIELD_1WAY_ll()
+    !
   !$***** 3D VARS
   DO JI=1,SIZE(PUT,3)
     CALL GOTO_MODEL(1)
@@ -566,6 +586,21 @@ END IF
                    2,2,IDIMX_C-1,IDIMY_C-1,KDXRATIO,KDYRATIO,3,     &
                    LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,ZLSVM_C,PLSVM)
     CALL MPPDB_CHECK3D(PLSVM,"SPAWN_FIELD2:PLSVM",PRECISION)
+
+!                        Interpolation of the ZWS variable at t
+!
+    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
+                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
+                   2,2,IDIMX_C-1,IDIMY_C-1,KDXRATIO,KDYRATIO,3,     &
+                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,ZZWS_C,PZWS)
+    CALL MPPDB_CHECK2D(PZWS,"SPAWN_FIELD2:PZWS",PRECISION)
+!
+    CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
+                   XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
+                   2,2,IDIMX_C-1,IDIMY_C-1,KDXRATIO,KDYRATIO,3,     &
+                   LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,ZLSZWSM_C,PLSZWSM)
+    CALL MPPDB_CHECK2D(PLSZWSM,"SPAWN_FIELD2:PLSZWSM",PRECISION)
+!
 !
 !                        Interpolation of variables at t
 !
@@ -725,6 +760,8 @@ IF (PRESENT(TPSONFILE)) THEN
   PVT(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
   CALL IO_Field_read(TPSONFILE,'WT',ZWORK3D) ! W wind component at time t
   PWT(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
+  CALL IO_Field_read(TPSONFILE,'ZWS',ZWORK2D) !
+  PZWS(KIB2:KIE2,KJB2:KJE2) = ZWORK2D(KIB1:KIE1,KJB1:KJE1)
   !
   ! moist variables
   !
diff --git a/src/MNH/spawn_lsn.f90 b/src/MNH/spawn_lsn.f90
index 74f43ed3e08b907f5d8a4b778f63f4b72249cd79..b7e8c6605ae79c2e98d1c62506da7c0351dbe6a2 100644
--- a/src/MNH/spawn_lsn.f90
+++ b/src/MNH/spawn_lsn.f90
@@ -21,9 +21,9 @@ INTERFACE
                     HLBCX,HLBCY,PZZ,PZHAT,OSLEVE,PLEN1,PLEN2,        &
                     PCOEFLIN_LBXM,                                   &
                                   PLSTHM,PLSRVM,                     &
-                                  PLSUM,PLSVM,PLSWM,                 &
+                                  PLSUM,PLSVM,PLSWM,PLSZWSM,         &
                                   PLSTHS,PLSRVS,                     &
-                                  PLSUS,PLSVS,PLSWS                  )
+                                  PLSUS,PLSVS,PLSWS,PLSZWSS          )
 !
 INTEGER,   INTENT(IN)  :: KDAD      ! number of the DAD model
 REAL,             INTENT(IN)    :: PTSTEP   !  Time step
@@ -48,8 +48,11 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PCOEFLIN_LBXM ! coefficient used for
 !  
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLSTHM,PLSRVM ! Large Scale fields at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLSUM,PLSVM,PLSWM ! Large Scale fields at t-dt
+REAL, DIMENSION(:,:),   INTENT(IN)    :: PLSZWSM          ! Large Scale fields at t-dt
+
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLSTHS,PLSRVS ! Large Scale source terms 
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLSUS,PLSVS,PLSWS ! Large Scale source terms 
+REAL, DIMENSION(:,:),   INTENT(OUT)   :: PLSZWSS
 !
 END SUBROUTINE SPAWN_LS_n
 !
@@ -65,10 +68,10 @@ END MODULE MODI_SPAWN_LS_n
                     KDXRATIO,KDYRATIO,                               &
                     HLBCX,HLBCY,PZZ,PZHAT,OSLEVE,PLEN1,PLEN2,        &
                     PCOEFLIN_LBXM,                                   &
-                                  PLSTHM,PLSRVM,                     &
+                                  PLSTHM,PLSRVM,PLSZWSM,             &
                                   PLSUM,PLSVM,PLSWM,                 &
                                   PLSTHS,PLSRVS,                     &
-                                  PLSUS,PLSVS,PLSWS                  )
+                                  PLSUS,PLSVS,PLSWS,PLSZWSS          )
 !     ################################################################
 !
 !!****  *SPAWN_LS_n* - Refresh of the Large Scale sources 
@@ -125,7 +128,7 @@ END MODULE MODI_SPAWN_LS_n
 !!      Original     22/12/97
 !!    P. Jabouille   19/04/00 parallelisation
 !!      J.Escobar : 18/12/2015 : Correction of bug in bound in // for NHALO <>1 
-!!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
@@ -174,8 +177,10 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PCOEFLIN_LBXM ! coefficient used for
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLSTHM,PLSRVM ! Large Scale fields at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLSUM,PLSVM,PLSWM ! Large Scale fields at t-dt
+REAL, DIMENSION(:,:),   INTENT(IN)    :: PLSZWSM          ! Large Scale fields at t-dt
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLSTHS,PLSRVS ! Large Scale source terms
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLSUS,PLSVS,PLSWS ! Large Scale source terms
+REAL, DIMENSION(:,:),   INTENT(OUT)   :: PLSZWSS
 !
 !
 !*       0.2   declarations of local variables
@@ -202,8 +207,10 @@ TYPE(LIST_ll), POINTER :: TZLSFIELD_ll   ! list of metric coefficient fields
 INTEGER :: IINFO_ll, IDIMX, IDIMY
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTLSUM, ZTLSVM, ZTLSWM, ZTLSTHM, ZTLSRVM
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTZS,ZZS
+REAL, DIMENSION(:,:),   ALLOCATABLE :: ZTZWS
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTZSMT,ZZSMT
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: Z1,Z2,Z3,Z4,Z5
+REAL, DIMENSION(:,:),   ALLOCATABLE :: Z6
 !
 !-------------------------------------------------------------------------------
 !
@@ -235,6 +242,7 @@ ALLOCATE(ZTLSVM(IDIMX,IDIMY,SIZE(PLSVM,3)))
 ALLOCATE(ZTLSWM(IDIMX,IDIMY,SIZE(PLSWM,3)))
 ALLOCATE(ZTLSTHM(IDIMX,IDIMY,SIZE(PLSTHM,3)))
 ALLOCATE(ZTLSRVM(IDIMX,IDIMY,SIZE(PLSRVM,3)))
+ALLOCATE(ZTZWS(IDIMX,IDIMY))
 !
 IF(GVERT_INTERP) THEN
   ALLOCATE(ZTZS  (IDIMX,IDIMY,1))
@@ -250,6 +258,7 @@ ALLOCATE(Z2(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
 ALLOCATE(Z3(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
 ALLOCATE(Z4(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
 ALLOCATE(Z5(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
+ALLOCATE(Z6(SIZE(XLSUM,1),SIZE(XLSUM,2)))
 !
 Z1=XLSUM+XLSUS*ZTIME
 CALL SET_LSFIELD_1WAY_ll(Z1, ZTLSUM, KMI)
@@ -263,6 +272,10 @@ IF ( SIZE(PLSRVM,1) /= 0 ) THEN
   Z5=XLSRVM+XLSRVS*ZTIME
   CALL SET_LSFIELD_1WAY_ll(Z5, ZTLSRVM, KMI)
 ENDIF
+IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+  Z6=XLSZWSM+XLSZWSS*ZTIME
+  CALL SET_LSFIELD_1WAY_ll(Z6, ZTZWS, KMI)
+ENDIF
 !
 IF ( GVERT_INTERP ) THEN
    CALL SET_LSFIELD_1WAY_ll(ZZS,   ZTZS,   KMI)
@@ -273,7 +286,7 @@ ENDIF
 !
 CALL LS_FORCING_ll(KMI, IINFO_ll)
 !
-DEALLOCATE(Z1,Z2,Z3,Z4,Z5)
+DEALLOCATE(Z1,Z2,Z3,Z4,Z5,Z6)
 !
 !        1.5  Back to the (current) child model
 !
@@ -355,6 +368,12 @@ IF ( SIZE(PLSRVM,1) /= 0 ) THEN
                  2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,         &
                  HLBCX,HLBCY,ZTLSRVM,PLSRVS(IIB:IIE,IJB:IJE,:))
 END IF
+IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+  CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
+                 PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
+                 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,         &
+                 HLBCX,HLBCY,ZTZWS,PLSZWSS(IIB:IIE,IJB:IJE))
+END IF
 !
 !*      3.2  Vertical linear interpolation on the mass grid
 !
@@ -384,6 +403,9 @@ PLSTHS(:,:,:)   = (PLSTHS(:,:,:) - PLSTHM(:,:,:)) / ZTIME
 IF ( SIZE(PLSRVM,1) /= 0 ) THEN
   PLSRVS(:,:,:)   = (PLSRVS(:,:,:) - PLSRVM(:,:,:)) / ZTIME
 END IF
+IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+  PLSZWSS(:,:)   = (PLSZWSS(:,:) - PLSZWSM(:,:)) / ZTIME
+END IF
 !
 !------------------------------------------------------------------------------
 !
@@ -454,6 +476,7 @@ PLSVS(:,:,:)   = (PLSVS(:,:,:) - PLSVM(:,:,:)) / ZTIME
 !
 DEALLOCATE(ZTLSUM,ZTLSVM,ZTLSWM,ZTLSTHM,ZTLSRVM)
 IF(GVERT_INTERP) DEALLOCATE(ZTZS,ZZS)
+DEALLOCATE(ZTLSUM,ZTLSVM,ZTLSWM,ZTLSTHM,ZTLSRVM,ZTZWS)
 IF(GVERT_INTERP) DEALLOCATE(ZTZSMT,ZZSMT)
 !
 NULLIFY(TZLSFIELD_ll)
@@ -462,6 +485,7 @@ CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSVS)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSWS)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSTHS)
 IF(SIZE(PLSRVM) /= 0) CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSRVS)
+IF(SIZE(PLSZWSM) /= 0) CALL ADD2DFIELD_ll(TZLSFIELD_ll, PLSZWSS)
 CALL UPDATE_HALO_ll(TZLSFIELD_ll,IINFO_ll)
 CALL CLEANLIST_ll(TZLSFIELD_ll)
 !------------------------------------------------------------------------------
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index b54c1e9e30b07e2e2137c877fe50b2f91961307d..24e5b49b47e6fd51f5f8832e05edad824ca61593 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -193,6 +193,7 @@ END MODULE MODI_SPAWN_MODEL2
 !!                    10/2016 (C.Lac) Add droplet deposition
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -704,6 +705,8 @@ ALLOCATE(ZJ(IIU,IJU,IKU))
 !
 !*       4.2   Prognostic (and diagnostic) variables (module MODD_FIELD2) :
 !
+ALLOCATE(XZWS(IIU,IJU))
+ALLOCATE(XLSZWSM(IIU,IJU))
 ALLOCATE(XUT(IIU,IJU,IKU))
 ALLOCATE(XVT(IIU,IJU,IKU))
 ALLOCATE(XWT(IIU,IJU,IKU))
@@ -1118,18 +1121,18 @@ ALLOCATE(ZHUT(IIU,IJU,IKU))
 MPPDB_CHECK_LB = .TRUE.
 IF (GNOSON) THEN
   CALL SPAWN_FIELD2 (NXOR,NYOR,NXEND,NYEND,NDXRATIO,NDYRATIO,CTURB,            &
-                 XUT,XVT,XWT,ZTHVT,XRT,ZHUT,XTKET,XSVT,XATC,                   &
+                 XUT,XVT,XWT,ZTHVT,XRT,ZHUT,XTKET,XSVT,XZWS,XATC,              &
                  XSRCT,XSIGS,                                                  &
-                 XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,                              &
+                 XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XLSZWSM,                      &
                  XDTHFRC,XDRVFRC,XTHREL,XRVREL,                                &
                  XVU_FLUX_M,XVTH_FLUX_M,XWTH_FLUX_M            )
   CALL MPPDB_CHECK3D(XUT,"SPAWN_M2 after SPAWN_FIELD2:XUT",PRECISION)
 ELSE
   CALL MPPDB_CHECK3D(XUT,"SPAWN_M2 before SPAWN_FIELD2:XUT",PRECISION)
   CALL SPAWN_FIELD2 (NXOR,NYOR,NXEND,NYEND,NDXRATIO,NDYRATIO,CTURB,            &
-                 XUT,XVT,XWT,ZTHVT,XRT,ZHUT,XTKET,XSVT,XATC,                   &
+                 XUT,XVT,XWT,ZTHVT,XRT,ZHUT,XTKET,XSVT,XZWS,XATC,              &
                  XSRCT,XSIGS,                                                  &
-                 XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,                              &
+                 XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XLSZWSM,                      &
                  XDTHFRC,XDRVFRC,XTHREL,XRVREL,                                &                 
                  XVU_FLUX_M, XVTH_FLUX_M,XWTH_FLUX_M,                          &
                  TZSONFILE,IIUSON,IJUSON,                                      &
diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90
index 4e654fff1a5c861403f7daecffc5a958b379936e..16867d7f2c1cac9c3ebd56d546add0e8a389cc42 100644
--- a/src/MNH/spawning.f90
+++ b/src/MNH/spawning.f90
@@ -76,6 +76,7 @@
 !!  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
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -294,12 +295,14 @@ XRT1 => XRT
 XUT1 => XUT
 XVT1 => XVT
 XWT1 => XWT
+XZWS1 => XZWS
 XSRCT1 => XSRCT
 XSIGS1 => XSIGS
 TDTCUR1 => TDTCUR
 XLSUM1 => XLSUM
 XLSVM1 => XLSVM
 XLSWM1 => XLSWM
+XLSZWSM1 => XLSZWSM
 XLSTHM1 => XLSTHM
 XLSRVM1 => XLSRVM
 !
diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90
index 5e789e752b255bf7d6cecb36fcf4fcb429a5223b..32f0fd5835e0e93685737ecda1cee76b6bffd2c0 100644
--- a/src/MNH/write_lbn.f90
+++ b/src/MNH/write_lbn.f90
@@ -76,6 +76,7 @@ END MODULE MODI_WRITE_LB_n
 !!     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!    J.-P. Pinty  09/02/16 Add LIMA that is LBC for CCN and IFN
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -111,6 +112,8 @@ USE MODI_CH_AER_REALLFI_n
 USE MODD_CONF
 USE MODD_REF,   ONLY : XRHODREFZ
 USE MODD_CONF,  ONLY : CPROGRAM
+USE MODD_GRID_n, ONLY : XZZ
+USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT
 USE MODD_DUST
 USE MODD_SALT
 USE MODI_DUSTLFI_n
@@ -144,6 +147,12 @@ INTEGER            :: JK
 INTEGER            :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX
 INTEGER            :: IMI    ! Current model index
 CHARACTER(LEN=2)   :: INDICE ! to index CCN and IFN fields of LIMA scheme
+INTEGER           :: I
+INTEGER           :: ILBX,ILBY
+INTEGER           :: IIB, IIE, IJB, IJE, IKB, IKE
+INTEGER           :: IIU, IJU, IKU
+REAL, DIMENSION(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)) :: ZLBXZZ
+REAL, DIMENSION(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3)) :: ZLBYZZ
 CHARACTER(LEN=100) :: YMSG
 TYPE(TFIELDDATA)   :: TZFIELD
 !-------------------------------------------------------------------------------
@@ -154,6 +163,16 @@ TYPE(TFIELDDATA)   :: TZFIELD
 ILUOUT = TLUOUT%NLU
 !
 IMI = GET_CURRENT_MODEL_INDEX()
+
+IIB=JPHEXT+1
+IIE=SIZE(XZZ,1)-JPHEXT
+IIU=SIZE(XZZ,1)
+IJB=JPHEXT+1
+IJE=SIZE(XZZ,2)-JPHEXT
+IJU=SIZE(XZZ,2)
+IKB=JPVEXT+1
+IKE=SIZE(XZZ,3)-JPVEXT
+IKU=SIZE(XZZ,3)
 !
 !        2.  WRITE THE DIMENSION OF LB FIELDS
 !            --------------------------------
@@ -456,7 +475,7 @@ IF (NSV >=1) THEN
     END IF
     !
     TZFIELD%CSTDNAME   = ''
-    TZFIELD%CUNITS     = 'kg kg-1'
+    TZFIELD%CUNITS     = 'ppp'
     TZFIELD%CDIR       = ''
     TZFIELD%NGRID      = 1
     TZFIELD%NTYPE      = TYPEREAL
@@ -664,7 +683,7 @@ IF (NSV >=1) THEN
       !in the same order as the variables in XSVM (i.e. following JPDUSTORDER)
       !
       TZFIELD%CSTDNAME   = ''
-      TZFIELD%CUNITS     = 'kg kg-1'
+      TZFIELD%CUNITS     = 'ppp'
       TZFIELD%CDIR       = ''
       TZFIELD%NGRID      = 1
       TZFIELD%NTYPE      = TYPEREAL
@@ -717,6 +736,19 @@ IF (NSV >=1) THEN
     DO JK=1,size(XLBYSVM,3)
       ZRHODREFY(:,:,JK) =  XRHODREFZ(JK)
     ENDDO
+    IIU  = SIZE(XZZ,1)
+    IJU  = SIZE(XZZ,2)
+    IKU  = SIZE(XZZ,3)
+    IF (SIZE(ZLBXZZ) .NE. 0 ) THEN
+      ILBX=SIZE(ZLBXZZ,1)/2-1
+      ZLBXZZ(1:ILBX+1,:,:)         = XZZ(IIB-1:IIB-1+ILBX,:,:)
+      ZLBXZZ(ILBX+2:2*ILBX+2,:,:)  = XZZ(IIE+1-ILBX:IIE+1,:,:)
+    ENDIF
+    IF (SIZE(ZLBYZZ) .NE. 0 ) THEN
+      ILBY=SIZE(ZLBYZZ,2)/2-1
+      ZLBYZZ(:,1:ILBY+1,:)        = XZZ(:,IJB-1:IJB-1+ILBY,:)
+      ZLBYZZ(:,ILBY+2:2*ILBY+2,:) = XZZ(:,IJE+1-ILBY:IJE+1,:)
+    ENDIF
     IF (NSIZELBXSV_ll /= 0) &
       XLBXSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND) = MAX(XLBXSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), 0.)
     IF (NSIZELBYSV_ll /= 0) &
@@ -727,16 +759,16 @@ IF (NSV >=1) THEN
         XLBYSVM(:,:,:,NSV_SLTDEPBEG:NSV_SLTDEPEND) = MAX(XLBYSVM(:,:,:,NSV_SLTDEPBEG:NSV_SLTDEPEND), 0.)      
     IF ((LSLTINIT).OR.(LSLTPRES)) THEN ! GRIBEX case (dust initialization)
       IF ((NSIZELBXSV_ll /= 0).AND.(CPROGRAM == 'REAL ').AND.(NSV_SLT > 1)) THEN
-        CALL SALTLFI_n(XLBXSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), ZRHODREFX)
+        CALL SALTLFI_n(XLBXSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), ZRHODREFX, ZLBXZZ)
       END IF
       IF ((NSIZELBYSV_ll /= 0).AND.(CPROGRAM == 'REAL ').AND.(NSV_SLT > 1)) THEN
-        CALL SALTLFI_n(XLBYSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), ZRHODREFY)
+        CALL SALTLFI_n(XLBYSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), ZRHODREFY, ZLBYZZ)
       END IF
       IF ((NSIZELBXSV_ll /= 0).AND.(CPROGRAM == 'IDEAL ').AND.(NSV_SLT > 1)) THEN
-        CALL SALTLFI_n(XLBXSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), ZRHODREFX)
+        CALL SALTLFI_n(XLBXSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), ZRHODREFX, ZLBXZZ)
       END IF
       IF ((NSIZELBYSV_ll /= 0).AND.(CPROGRAM == 'IDEAL ').AND.(NSV_SLT > 1)) THEN
-        CALL SALTLFI_n(XLBYSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), ZRHODREFY)
+        CALL SALTLFI_n(XLBYSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), ZRHODREFY, ZLBYZZ)
       END IF
     END IF
     !
@@ -810,7 +842,7 @@ IF (NSV >=1) THEN
       ! We are in the subprogram MESONH, CSALTNAMES are allocated and are 
       !in the same order as the variables in XSVM (i.e. following JPSALTORDER)
       TZFIELD%CSTDNAME   = ''
-      TZFIELD%CUNITS     = 'kg kg-1'
+      TZFIELD%CUNITS     = 'ppp'
       TZFIELD%CDIR       = ''
       TZFIELD%NGRID      = 1
       TZFIELD%NTYPE      = TYPEREAL
diff --git a/src/MNH/write_lesn.f90 b/src/MNH/write_lesn.f90
index f269d460d47d5cdc59f20fdaf0e006dc849b2bfb..1ae4ad90c4df2ed27e600a5de13bbcc226ba3c50 100644
--- a/src/MNH/write_lesn.f90
+++ b/src/MNH/write_lesn.f90
@@ -56,7 +56,8 @@ END MODULE MODI_WRITE_LES_n
 !!                          11/15 (C.Lac) Add production terms of TKE
 !!                    10/2016 (C.Lac) Add droplet deposition
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!!!!                     02/2019 (C. Lac) Add rain fraction as a LES diagnostic
+
 !! --------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
@@ -382,6 +383,10 @@ IF (LUSERR) &
 CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RR ",YSUBTITLE(:), &
   "Mean Rr Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Rr,HLES_AVG)
 
+IF (LUSERR) &
+CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RF ",YSUBTITLE(:), &
+  "Mean RF Profile"//YSUBTITLE(:),"1",XLES_MEAN_RF,HLES_AVG)
+
 IF (LUSERI) &
 CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RI ",YSUBTITLE(:), &
   "Mean Ri Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Ri,HLES_AVG)
diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90
index c81ac0f78b8fa326bf02f9f427f60ab7b78c3c85..086c612361f34deb835812a13f8dec670c0500a1 100644
--- a/src/MNH/write_lfifm1_for_diag.f90
+++ b/src/MNH/write_lfifm1_for_diag.f90
@@ -142,6 +142,8 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!       D.Ricard and P.Marquet 2016-2017 : THETAL + THETAS1 POVOS1 or THETAS2 POVOS2
 !!                                        if  LMOIST_L     LMOIST_S1   or  LMOIST_S2
+!  P. Wautelet 08/02/2019: minor bug: compute ZWORK36 only when needed
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -429,6 +431,7 @@ CALL IO_Field_write(TPFILE,'ZHAT',XZHAT)
 CALL IO_Field_write(TPFILE,'ZTOP',XZTOP)
 !
 CALL IO_Field_write(TPFILE,'ZS',   XZS)
+CALL IO_Field_write(TPFILE,'ZWS',  XZWS)
 CALL IO_Field_write(TPFILE,'ZSMT', XZSMT)
 CALL IO_Field_write(TPFILE,'SLEVE',LSLEVE)
 !
@@ -738,14 +741,14 @@ IF (LHU_FLX) THEN
   ZWORK35(:,:,:) = XRHODREF(:,:,:) * XRT(:,:,:,1)
   ZWORK31(:,:,:) = MXM(ZWORK35(:,:,:)) * XUT(:,:,:)
   ZWORK32(:,:,:) = MYM(ZWORK35(:,:,:)) * XVT(:,:,:)
+  ZWORK35(:,:,:) = GX_U_M(1,IKU,1,ZWORK31,XDXX,XDZZ,XDZX) + GY_V_M(1,IKU,1,ZWORK32,XDYY,XDZZ,XDZY)
   IF  (CCLOUD(1:3) == 'ICE' .OR. CCLOUD == 'LIMA') THEN
     ZWORK36(:,:,:) = ZWORK35(:,:,:) + XRHODREF(:,:,:) * (XRT(:,:,:,2) + &
     XRT(:,:,:,3) + XRT(:,:,:,4) + XRT(:,:,:,5) + XRT(:,:,:,6))
     ZWORK33(:,:,:) = MXM(ZWORK36(:,:,:)) * XUT(:,:,:)
     ZWORK34(:,:,:) = MYM(ZWORK36(:,:,:)) * XVT(:,:,:)
+    ZWORK36(:,:,:) = GX_U_M(1,IKU,1,ZWORK33,XDXX,XDZZ,XDZX) + GY_V_M(1,IKU,1,ZWORK34,XDYY,XDZZ,XDZY)
   ENDIF
-  ZWORK35(:,:,:) = GX_U_M(1,IKU,1,ZWORK31,XDXX,XDZZ,XDZX) + GY_V_M(1,IKU,1,ZWORK32,XDYY,XDZZ,XDZY)
-  ZWORK36(:,:,:) = GX_U_M(1,IKU,1,ZWORK33,XDXX,XDZZ,XDZX) + GY_V_M(1,IKU,1,ZWORK34,XDYY,XDZZ,XDZY)
   !
   ! Integration sur 3000 m
   !
@@ -1528,14 +1531,14 @@ IF (LSALT) THEN
   TZFIELD%LTIMEDEP   = .TRUE.
   !
   DO JJ=1,NMODE_SLT
-    TZFIELD%CMNHNAME   = 'SLTRGA'
-    TZFIELD%CLONGNAME  = 'SLTRGA'
+    WRITE(TZFIELD%CMNHNAME,'(A6,I1)')'SLTRGA',JJ
+    TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
     TZFIELD%CUNITS     = 'um'
     WRITE(TZFIELD%CCOMMENT,'(A18,I1)')'RG (nb) SALT MODE ',JJ
     CALL IO_Field_write(TPFILE,TZFIELD,ZRG_SLT(:,:,:,JJ))
     !
-    TZFIELD%CMNHNAME   = 'SLTRGAM'
-    TZFIELD%CLONGNAME  = 'SLTRGAM'
+    WRITE(TZFIELD%CMNHNAME,'(A7,I1)')'SLTRGAM',JJ
+    TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
     TZFIELD%CUNITS     = 'um'
     WRITE(TZFIELD%CCOMMENT,'(A17,I1)')'RG (m) SALT MODE ',JJ
     ZWORK31(:,:,:)=ZRG_SLT(:,:,:,JJ) / (EXP(-3.*(LOG(ZSIG_SLT(:,:,:,JJ)))**2))
@@ -1706,14 +1709,14 @@ IF (LDUST) THEN
   CALL PPP2DUST(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND),XRHODREF,&
                PSIG3D=ZSIG_DST, PRG3D=ZRG_DST, PN3D=ZN0_DST)
   DO JJ=1,NMODE_DST
-    TZFIELD%CMNHNAME   = 'DSTRGA'
-    TZFIELD%CLONGNAME  = 'DSTRGA'
+    WRITE(TZFIELD%CMNHNAME,'(A6,I1)')'DSTRGA',JJ
+    TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
     TZFIELD%CUNITS     = 'um'
     WRITE(TZFIELD%CCOMMENT,'(A18,I1)')'RG (nb) DUST MODE ',JJ
     CALL IO_Field_write(TPFILE,TZFIELD,ZRG_DST(:,:,:,JJ))
     !
-    TZFIELD%CMNHNAME   = 'DSTRGAM'
-    TZFIELD%CLONGNAME  = 'DSTRGAM'
+    WRITE(TZFIELD%CMNHNAME,'(A7,I1)')'DSTRGAM',JJ
+    TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
     TZFIELD%CUNITS     = 'um'
     WRITE(TZFIELD%CCOMMENT,'(A17,I1)')'RG (m) DUST MODE ',JJ
     ZWORK31(:,:,:)=ZRG_DST(:,:,:,JJ) / (EXP(-3.*(LOG(ZSIG_DST(:,:,:,JJ)))**2))
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index f08abfb1593d357c0c02505093c418d337b125ad..a58b90932f844534eaa6bfc1213b03eab95bab45 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -169,7 +169,8 @@ END MODULE MODI_WRITE_LFIFM_n
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!       V. Vionnet    07/2017, add blowing snow variables
 !!       P.Wautelet    11/01/2019: bug correction in write XBL_DEPTH->XSBL_DEPTH
-!!                   
+!!       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
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -393,6 +394,9 @@ IF (.NOT.LCARTESIAN) THEN
 END IF
 !
 CALL IO_Field_write(TPFILE,'ZS',   XZS)
+IF(ASSOCIATED(XZWS)) THEN
+  CALL IO_Field_write(TPFILE,'ZWS',  XZWS)
+END IF
 CALL IO_Field_write(TPFILE,'ZSMT', XZSMT)
 CALL IO_Field_write(TPFILE,'SLEVE',LSLEVE)
 !
@@ -1249,9 +1253,9 @@ IF (NSV >=1) THEN
   ! sea salt scalar variables
   IF (LSALT) THEN
     IF ((CPROGRAM == 'REAL  ').AND.(NSV_SLT > 1).AND.(IMI==1).AND.(LSLTINIT)) &
-      CALL SALTLFI_n(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF)
+      CALL SALTLFI_n(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF, XZZ)
     IF ((CPROGRAM == 'IDEAL ').AND.(NSV_SLT > 1).AND.(IMI==1)) &
-      CALL SALTLFI_n(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF)
+      CALL SALTLFI_n(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF, XZZ)
     !At this point, we have the tracer array in order of importance, i.e.
     !if mode 2 is most important it will occupy place 1-3 of XSVT  
     IF (((CPROGRAM == 'REAL  ').AND.(LSLTINIT)).OR.&
@@ -1517,6 +1521,7 @@ ENDIF
 !
 IF (NRR > 1 .AND. CPROGRAM == 'MESONH') THEN
   CALL IO_Field_write(TPFILE,'CLDFR',XCLDFR)
+  CALL IO_Field_write(TPFILE,'RAINFR',XRAINFR)
 END IF
 !
 !
diff --git a/src/Makefile b/src/Makefile
index ef4e4220cf8b008d851c17ba137fa40a7bf4382a..57b158f16ffcefc0f28ef9192ff29175a580f425 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#MNH_LIC Copyright 1994-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.
 ##########################################################
 #                                                        #
@@ -58,7 +58,7 @@ include Rules.$(ARCH)$(F).mk
 #   All modification are allowed !!!!!                   #
 #   adding new subroutines                               #
 #       or                                               #
-#   adding new modules                                   #       
+#   adding new modules                                   #
 #                                                        #
 #   REM : if during modification, you deleting some      #
 #         FORTRAN subroutines you must also deleted the  #
@@ -339,8 +339,8 @@ gribapi_clean :
 ##########################################################
 ifeq "$(VER_CDF)" "CDFAUTO"
 #
-HDF_OPT    = ${OPT_BASE_I4:-$OPT_BASE}
-NETCDF_OPT = ${OPT_BASE_I4:-$OPT_BASE}
+HDF_OPT    ?= ${OPT_BASE_I4:-$OPT_BASE}
+NETCDF_OPT ?= ${OPT_BASE_I4:-$OPT_BASE}
 #
 cdf : $(CDF_MOD)
 $(CDF_MOD) :
@@ -352,6 +352,12 @@ $(CDF_MOD) :
 	cd ${DIR_CDFC} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-dap \
 	CC="$(CC)" CFLAGS="$(NETCDF_OPT)" CPPFLAGS="${INC_NETCDF}" ${CDF_CONF} LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lhdf5_hl -lhdf5 -lsz -laec -lz" && \
 	$(MAKE) && $(MAKE) install && $(MAKE) clean
+ifdef MNH_FOREFIRE
+	cd ${DIR_CDFCXX} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 \
+	CXX="$(CXX)" CXXFLAGS="$(NETCDF_OPT)" FC="$(FC)" FCFLAGS="$(NETCDF_OPT) $(NETCDF_SUPPFLAGS)" FFLAGS="$(NETCDF_OPT)"  \
+	CPPFLAGS="${INC_NETCDF}" ${CDF_CONF} LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lnetcdf -lhdf5_hl -lhdf5 -lsz -laec -lz" && \
+	$(MAKE) && $(MAKE) install && $(MAKE) clean
+endif
 	cd ${DIR_CDFF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 \
 	CC="$(CC)" CFLAGS="$(NETCDF_OPT)" FC="$(FC)" FCFLAGS="$(NETCDF_OPT) $(NETCDF_SUPPFLAGS)" FFLAGS="$(NETCDF_OPT)"  \
 	CPPFLAGS="${INC_NETCDF}" ${CDF_CONF} LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lnetcdf -lhdf5_hl -lhdf5 -lsz -laec -lz" && \
@@ -363,6 +369,9 @@ cleancdf :
 	cd ${DIR_LIBAEC} && $(MAKE) clean
 	cd ${DIR_HDF} && $(MAKE) clean 
 	cd ${DIR_CDFC} && $(MAKE) clean 
+ifdef MNH_FOREFIRE
+	cd ${DIR_CDFCXX} && $(MAKE) clean 
+endif
 	cd ${DIR_CDFF} && $(MAKE) clean
 endif
 ##########################################################
@@ -380,8 +389,26 @@ cleanmaster : cleanoasis
 cleanoasis :
 	- [ -d ${OASIS_PATH} ] && rm -fr  ${OASIS_PATH}
 endif
+##########################################################
+#                                                        #
+# EXTRA LIB : S4PY                                       #
+#                                                        #
+##########################################################
+ifdef MNH_S4PY
+all : libs4py.so
 
+OBJ_S4PY=$(OBJDIR_MASTER)/spll_wcompress_field.o $(OBJDIR_MASTER)/spll_wdecompress_field.o \
+$(OBJDIR_MASTER)/spll_wget_compheader.o $(OBJDIR_MASTER)/spll_wlficas.o \
+$(OBJDIR_MASTER)/spll_wlfiecr.o $(OBJDIR_MASTER)/spll_wlfifer.o \
+$(OBJDIR_MASTER)/spll_wlfilec.o $(OBJDIR_MASTER)/spll_wlfinaf.o \
+$(OBJDIR_MASTER)/spll_wlfinfo.o $(OBJDIR_MASTER)/spll_wlfiouv.o $(OBJDIR_MASTER)/spll_wlfipos.o \
+$(OBJDIR_MASTER)/spll_NEWLFI_ALL.o $(OBJDIR_MASTER)/spll_lockasgn.o \
+$(OBJDIR_MASTER)/spll_lockoff.o $(OBJDIR_MASTER)/spll_lockon.o $(OBJDIR_MASTER)/spll_lockrel.o \
+$(OBJDIR_MASTER)/fswap8buff.o $(OBJDIR_MASTER)/spll_remark2.o
 
+libs4py.so : progmaster
+	$(CC) -shared $(LDFLAGS) -o $(OBJDIR_MASTER)/$@ $(OBJ_S4PY) $(LIBS)
+endif
 ##########################################################
 #                                                        #
 # PROGRAM RULES                                          #
diff --git a/src/Makefile.MESONH.mk b/src/Makefile.MESONH.mk
index dec8ef951b1034ce02176b1fbded65f365c62729..3aa94d76ffaa1a3af42ec426573e5e30845d9387 100644
--- a/src/Makefile.MESONH.mk
+++ b/src/Makefile.MESONH.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#MNH_LIC Copyright 1994-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.
 ##########################################################
 #                                                        #
@@ -242,6 +242,30 @@ VPATH               += $(DIR_NEWLFI)
 #ARCH_XYZ    := $(ARCH_XYZ)-$(VER_NEWLFI)
 endif
 ##########################################################
+#           Source COMPRESS                              #
+##########################################################
+ifdef MNH_COMPRESS
+DIR_COMPRESS           = ../LIBTOOLS/lib/COMPRESS/src
+INC_COMPRESS           = -I$(B)$(DIR_COMPRESS)
+DIR_MASTER            += $(DIR_COMPRESS)
+OBJS_LISTE_MASTER     += bitbuff.o nearestpow2.o
+INC                   += $(INC_COMPRESS)
+VPATH                 += $(DIR_COMPRESS)
+CPPFLAGS_COMPRESS     ?= -DLITTLE_endian
+CPPFLAGS              += $(CPPFLAGS_COMPRESS)
+endif
+##########################################################
+#           Source S4PY                                  #
+##########################################################
+ifdef MNH_S4PY
+DIR_S4PY               = LIB/s4py
+INC_S4PY               = -I$(B)$(DIR_S4PY)
+DIR_MASTER            += $(DIR_S4PY)
+OBJS_LISTE_MASTER     += init_gfortran.o
+INC                   += $(INC_S4PY)
+VPATH                 += $(DIR_S4PY)
+endif
+##########################################################
 #           Source FOREFIRE                              #
 ##########################################################
 ifdef MNH_FOREFIRE
@@ -252,6 +276,7 @@ OBJS_LISTE_MASTER     += C_ForeFire_Interface.o
 INC                   += $(INC_FOREFIRE)
 VPATH                 += $(DIR_FOREFIRE)
 CPPFLAGS              += -DMNH_FOREFIRE
+ARCH_XYZ    := $(ARCH_XYZ)-FF
 endif
 ##########################################################
 #           Source TOOLS                                 #
@@ -467,6 +492,7 @@ endif
 #
 ifeq "$(VER_CDF)" "CDFAUTO"
 DIR_CDFC?=${SRC_MESONH}/src/LIB/netcdf-${VERSION_CDFC}
+DIR_CDFCXX?=${SRC_MESONH}/src/LIB/netcdf-cxx-${VERSION_CDFCXX}
 DIR_CDFF?=${SRC_MESONH}/src/LIB/netcdf-fortran-${VERSION_CDFF}
 CDF_PATH?=${SRC_MESONH}/src/LIB/netcdf-${ARCH}-R${MNH_REAL}I${MNH_INT}
 CDF_MOD?=${CDF_PATH}/include/netcdf.mod
diff --git a/src/Rules.AIX64.mk b/src/Rules.AIX64.mk
index c4ef4492eee78739b86f173fac6967d98ddd59a7..2324039953ef2d7ef7b676cec5241af35b39ae9c 100644
--- a/src/Rules.AIX64.mk
+++ b/src/Rules.AIX64.mk
@@ -101,6 +101,16 @@ CNAME_GRIBEX=""
 #if MNH_TOOLS exists => compile the tools
 MNH_TOOLS = yes
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
diff --git a/src/Rules.BG.mk b/src/Rules.BG.mk
index 27714a08ab0da4d517e5d9367ad918a9d62e4cc5..ced46f4b4675a32db16d0937fc2f313d6a1b4ea2 100644
--- a/src/Rules.BG.mk
+++ b/src/Rules.BG.mk
@@ -112,6 +112,16 @@ CNAME_GRIBEX=""
 #if MNH_TOOLS exists => compile the tools
 #MNH_TOOLS = no
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+#MNH_COMPRESS=no
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
diff --git a/src/Rules.BGQ.mk b/src/Rules.BGQ.mk
index ae3daf2777e3423ba880a4b4c4a39613d411872c..69d8268ebc1a5de8111437a1cf437ba4f66d63d3 100644
--- a/src/Rules.BGQ.mk
+++ b/src/Rules.BGQ.mk
@@ -171,6 +171,16 @@ GRIBAPI_CONF= --host=powerpc64-bgq-linux
 #if MNH_TOOLS exists => compile the tools
 #MNH_TOOLS = no
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+#MNH_COMPRESS=no
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
diff --git a/src/Rules.LXNAGfor.mk b/src/Rules.LXNAGfor.mk
index 9a40610466148ba8a3231a40a8ed40a468673149..6d4220480813871f4efeffe54534c24959be9e02 100644
--- a/src/Rules.LXNAGfor.mk
+++ b/src/Rules.LXNAGfor.mk
@@ -94,6 +94,16 @@ NETCDF_SUPPFLAGS = -dusty -kind=byte
 #if MNH_TOOLS exists => compile the tools
 MNH_TOOLS = yes
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
@@ -121,5 +131,5 @@ OBJS_I4=spll_modd_netcdf.o
 $(OBJS_I4) : OPT = $(OPT_BASE_I4)
 endif
 # 
-LIST_MISMATCH=MPI_Allgatherv,MPI_Allreduce,MPI_Bcast,MPI_Bsend,MPI_Gather,MPI_Gatherv,MPI_Recv,LEPOLY
+LIST_MISMATCH=MPI_Allgatherv,MPI_Allreduce,MPI_Bcast,MPI_Bsend,MPI_Gather,MPI_Gatherv,MPI_Recv,LEPOLY,EXTRACT_BBUFF,FILL_BBUFF
 
diff --git a/src/Rules.LXarm.mk b/src/Rules.LXarm.mk
index 9e959994231b56a93294b10df67b694f4881dcff..7a612027dcffb6b1140107fcd9f0e0da63affa7d 100644
--- a/src/Rules.LXarm.mk
+++ b/src/Rules.LXarm.mk
@@ -116,7 +116,15 @@ MNH_TOOLS=yes
 endif
 endif
 #
+## COMPRESS flag
 #
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
 #
 ##########################################################
 #                                                        #
diff --git a/src/Rules.LXcray.mk b/src/Rules.LXcray.mk
index 5898140d280b750d12947a3d51dc2d4e72292ebf..3602bcc51402db97b7794ee09faba18315f52ce4 100644
--- a/src/Rules.LXcray.mk
+++ b/src/Rules.LXcray.mk
@@ -109,6 +109,16 @@ GRIBAPI_CONF="FCFLAGS= -em -ef "
 #if MNH_TOOLS exists => compile the tools
 MNH_TOOLS = yes
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
diff --git a/src/Rules.LXg95.mk b/src/Rules.LXg95.mk
index f326e14f5e1fdb021c171e201d6cd761a2c18afa..62b3d39ca93b2d91dfb9bd15ea2cea879fe869a9 100644
--- a/src/Rules.LXg95.mk
+++ b/src/Rules.LXg95.mk
@@ -81,6 +81,16 @@ CNAME_GRIBEX=g95
 #if MNH_TOOLS exists => compile the tools
 MNH_TOOLS = yes
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
diff --git a/src/Rules.LXgfortran.mk b/src/Rules.LXgfortran.mk
index e182448b3e133c37ed59150e19797aca84ea1d3a..ce4c05ef73dc8cb7ae46c7d24d74e7f38f3eda69 100644
--- a/src/Rules.LXgfortran.mk
+++ b/src/Rules.LXgfortran.mk
@@ -58,6 +58,7 @@ endif
 #
 #  
 CC = gcc
+CXX = g++
 FC = gfortran 
 ifeq "$(VER_MPI)" "MPIAUTO"
 F90 = mpif90
@@ -97,6 +98,8 @@ CNAME_GRIBEX=_gfortran
 # Netcdf/HDF5 flags
 #
 HDF_CONF= CFLAGS=-std=c99
+HDF_OPT ?= -fPIC
+NETCDF_OPT ?= -fPIC
 #
 ## LIBTOOLS flags
 #
@@ -107,7 +110,15 @@ MNH_TOOLS=yes
 endif
 endif
 #
+## COMPRESS flag
 #
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
 #
 ##########################################################
 #                                                        #
diff --git a/src/Rules.LXifort.mk b/src/Rules.LXifort.mk
index 8321534b0da08027fdc41774c59f1c08dc58fffe..1133f292bc994c6766f112d0ab8b67b9b5996cf7 100644
--- a/src/Rules.LXifort.mk
+++ b/src/Rules.LXifort.mk
@@ -128,6 +128,7 @@ endif
 #
 #
 CC ?= gcc
+CXX ?= g++
 FC = ifort
 ifeq "$(VER_MPI)" "MPIAUTO"
 ifneq "$(findstring TAU,$(XYZ))" ""
@@ -191,6 +192,12 @@ endif
 TARGET_GRIBEX=linux
 CNAME_GRIBEX=ifort
 #
+# Netcdf/HDF5 flags
+#
+HDF_CONF= CFLAGS=-std=c99
+HDF_OPT ?= -fPIC
+NETCDF_OPT ?= -fPIC
+#
 # LIBTOOLS flags
 #
 #if MNH_TOOLS exists => compile the tools
@@ -198,6 +205,16 @@ ifeq "$(MNH_INT)" "4"
 MNH_TOOLS=yes
 endif
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
diff --git a/src/Rules.LXpathf95.mk b/src/Rules.LXpathf95.mk
index 79a8e1c75211f03099530892f7d2fd9c39964bb9..cc0d1aa43f16cb6228b7598a690e22bd283dc7df 100644
--- a/src/Rules.LXpathf95.mk
+++ b/src/Rules.LXpathf95.mk
@@ -57,6 +57,16 @@ CNAME_GRIBEX=pathf95
 #if MNH_TOOLS exists => compile the tools
 MNH_TOOLS = yes
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
diff --git a/src/Rules.LXpgi.mk b/src/Rules.LXpgi.mk
index 4bb43023e46a300864b9db96f1ae9ddbfcc16d29..6296bbea4a82435b69e51a18c2b65dbcfe1a9845 100644
--- a/src/Rules.LXpgi.mk
+++ b/src/Rules.LXpgi.mk
@@ -116,6 +116,16 @@ CNAME_GRIBEX=_pgf77
 #if MNH_TOOLS exists => compile the tools
 MNH_TOOLS = yes
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
diff --git a/src/Rules.SX8.mk b/src/Rules.SX8.mk
index e5bb540f66d76050a6a8b064dbf354dbf02f4736..abbaf87223dc98a19966a3ffc2103598aa463696 100644
--- a/src/Rules.SX8.mk
+++ b/src/Rules.SX8.mk
@@ -103,6 +103,16 @@ CNAME_GRIBEX=sxmpif90
 #if MNH_TOOLS exists => compile the tools
 #MNH_TOOLS = no
 #
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+#MNH_COMPRESS=no
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
diff --git a/src/SURFEX/average_diag.F90 b/src/SURFEX/average_diag.F90
index 14364414e2a727b0a4b755b47730504e59c2ca61..158ea03afe9871fea872a33336159082b6ca6aec 100644
--- a/src/SURFEX/average_diag.F90
+++ b/src/SURFEX/average_diag.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2003-2019 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #########
       SUBROUTINE AVERAGE_DIAG(PFRAC_TILE, DGO, D, ND, DC, NDC      )                                
@@ -37,6 +37,7 @@
 !!      Modified    08/2009 (B. Decharme) : new diag
 !     02/2010 - S. Riette - Security for wind average in case of XUNDEF values
 !       B. decharme 04/2013 : Add EVAP and SUBL diag
+!       P. Wautelet 02/2019: bug: fixed intent of PFIELD_OUT (OUT->INOUT)
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -323,7 +324,7 @@ IMPLICIT NONE
 !
 REAL, DIMENSION(:),INTENT(IN)   :: PFRAC
 REAL, DIMENSION(:),INTENT(IN)   :: PFIELD_IN
-REAL, DIMENSION(:), INTENT(OUT) :: PFIELD_OUT
+REAL, DIMENSION(:), INTENT(INOUT) :: PFIELD_OUT
 INTEGER, INTENT(IN) :: KTILE
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 INTEGER :: JT
@@ -350,7 +351,7 @@ IMPLICIT NONE
 !
 REAL, DIMENSION(:),INTENT(IN)   :: PFRAC
 REAL, DIMENSION(:,:),INTENT(IN)   :: PFIELD_IN
-REAL, DIMENSION(:,:), INTENT(OUT) :: PFIELD_OUT
+REAL, DIMENSION(:,:), INTENT(INOUT) :: PFIELD_OUT
 INTEGER, INTENT(IN) :: KTILE
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 INTEGER :: JT, JL
@@ -379,7 +380,7 @@ IMPLICIT NONE
 REAL, DIMENSION(:),INTENT(IN)   :: PFRAC
 REAL, DIMENSION(:),INTENT(IN)   :: PFIELD_IN
 REAL, DIMENSION(:),INTENT(IN)   :: PREF
-REAL, DIMENSION(:), INTENT(OUT) :: PFIELD_OUT
+REAL, DIMENSION(:), INTENT(INOUT) :: PFIELD_OUT
 INTEGER, INTENT(IN) :: KTILE
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
@@ -413,7 +414,7 @@ IMPLICIT NONE
 !
 REAL, DIMENSION(:),INTENT(IN)   :: PFRAC
 REAL, DIMENSION(:),INTENT(IN)   :: PFIELD_IN
-REAL, DIMENSION(:),  INTENT(OUT)  :: PFIELD_OUT
+REAL, DIMENSION(:),  INTENT(INOUT)  :: PFIELD_OUT
 INTEGER, INTENT(IN) :: KTILE
 REAL, DIMENSION(:), INTENT(INOUT) :: PLAND
 REAL, DIMENSION(:), INTENT(INOUT) :: PSEA
diff --git a/src/SURFEX/bilin_value.F90 b/src/SURFEX/bilin_value.F90
index f4aac84c2e69c97f7092bddfdd7178fec9c166fc..48bf32aaa3335f04288061dc54d8d8cb34df244a 100644
--- a/src/SURFEX/bilin_value.F90
+++ b/src/SURFEX/bilin_value.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2004-2019 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #########
      SUBROUTINE BILIN_VALUE (KLUOUT,KX,KY,PFIELD1,PCX,PCY,KCI,KCJ,PFIELD2)
@@ -77,7 +77,7 @@
 !!
 !!      Original     01/2004
 ! TD&DD: added OpenMP directives
-
+!       P. Wautelet 08/02/2019: initialize ZFIELD1 even if of size=1
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -200,7 +200,8 @@ ELSE
       IS2 = IBOR(2,2,0)-IBOR(2,1,0)+1
       ISIZE = IS1*IS2
       ALLOCATE(ZFIELD1(IS1,IS2,INL))
-      IF (SUM(IBOR(:,:,0))/=0) THEN    
+      IF(ISIZE==1) ZFIELD1(:,:,:) = XUNDEF !Necessary to initialize ZFIELD1 in all cases (value could be anything)
+      IF (SUM(IBOR(:,:,0))/=0) THEN
         DO JL=IBOR(2,1,0),IBOR(2,2,0)
           ZFIELD1(:,JL-IBOR(2,1,0)+1,:) = PFIELD1(KX*(JL-1)+IBOR(1,1,0):KX*(JL-1)+IBOR(1,2,0),:)
         ENDDO
diff --git a/src/SURFEX/convert_patch_isba.F90 b/src/SURFEX/convert_patch_isba.F90
index 0ad47ed03181fa254b9bb6478e062eaa474c80b7..cad66666339946c838b566938c50ad491b38e4f0 100644
--- a/src/SURFEX/convert_patch_isba.F90
+++ b/src/SURFEX/convert_patch_isba.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2010-2019 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #########
       SUBROUTINE CONVERT_PATCH_ISBA (DTCO, DTV, IO, KDEC, KDEC2, PCOVER, OCOVER,&
@@ -45,7 +45,8 @@
 !!                           albedo, UV albedo not defined (conserv nrj when
 !!                           coupled to atmosphere)
 !!    P Samuelsson  10/2014  MEB
-!!
+!  P. Wautelet 15/02/2019: bugfix: allocate ZSTRESS only when its size has a meaning
+!
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
@@ -671,13 +672,14 @@ SUBROUTINE SET_STRESS
 IMPLICIT NONE
 !
 REAL, DIMENSION(PK%NSIZE_P)   :: ZWORK
-REAL, DIMENSION(SIZE(DTV%LPAR_STRESS,1),NVEGTYPE) :: ZSTRESS
+REAL, DIMENSION(:,:), ALLOCATABLE :: ZSTRESS
 INTEGER :: JI
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 IF (LHOOK) CALL DR_HOOK('CONVERT_PATCH_ISBA:SET_STRESS',0,ZHOOK_HANDLE)
 !
 IF (GDATA .AND. ANY(DTV%LDATA_STRESS)) THEN
+  ALLOCATE( ZSTRESS( SIZE(DTV%LPAR_STRESS,1),NVEGTYPE ) )
   ZSTRESS(:,:)=0.
   DO JVEG=1,NVEGTYPE
     DO JI = 1,PK%NSIZE_P
@@ -686,6 +688,7 @@ IF (GDATA .AND. ANY(DTV%LDATA_STRESS)) THEN
   ENDDO
   CALL AV_PGD_PARAM(DTV%XPAR_LAI, DTV%XPAR_VEG, &
                       ZWORK,DTV%XPAR_VEGTYPE,ZSTRESS,YVEG,'ARI',PK%NR_P,IO%NPATCH,KPATCH,KDECADE=KDEC2)
+  DEALLOCATE( ZSTRESS )
 ELSE
   CALL AV_PGD_1P(DTCO, ZWORK,PCOVER,XDATA_STRESS(:,:),YVEG,'ARI',OCOVER,PK%NR_P,IO%NPATCH,KPATCH,KDECADE=KDEC)
 ENDIF
diff --git a/src/SURFEX/coupling_isban.F90 b/src/SURFEX/coupling_isban.F90
index 1250e5719706301ef0e8e6e8fbc5f1db109bc8ea..45e5eea8f4176584b60b89e1c51e6e98230261d6 100644
--- a/src/SURFEX/coupling_isban.F90
+++ b/src/SURFEX/coupling_isban.F90
@@ -69,6 +69,7 @@ SUBROUTINE COUPLING_ISBA_n (DTCO, UG, U, USS, NAG, CHI, NCHI, MGN, MSF,  DTI, ID
 !!      P. LeMoigne  12/2014 EBA scheme update
 !!      R. Seferian  05/2015 : Add coupling fiels to vegetation_evol call
 !!      P. Tulet     06/2016 : call coupling_megan add RN leaves for MEGAN
+!!      J. Pianezzej 02/2019 : correction for use of MEGAN
 !!-------------------------------------------------------------------
 !
 USE MODD_DATA_COVER_n, ONLY : DATA_COVER_t
@@ -1154,6 +1155,12 @@ ENDIF
 IF (CHI%SVI%NBEQ>0 .AND. CHI%LCH_BIO_FLUX) THEN
  IF ((TRIM(CHI%CPARAMBVOC) == 'MEGAN').AND.(ANY(PEK%XLAI(:)/=XUNDEF))) THEN
 
+!UPG*PT
+ WHERE (GBK%XIACAN > 2000.) ! non physical values
+  GBK%XIACAN = 0.
+ END WHERE
+!UPG*PT
+
  CALL COUPLING_MEGAN_n(MGN, CHI, GK, PEK, &
                        KYEAR, KMONTH, KDAY, PTIME, IO%LTR_ML, &
                        IP_SLTYP, ZP_PFT, ZP_EF, &
diff --git a/src/SURFEX/coupling_megann.F90 b/src/SURFEX/coupling_megann.F90
index 6d5641bf78b6f3acecc378ebc22d0bd2b51e0803..88bb6fd8a65007c6e2a7ad20bf6366a8f53cb603 100644
--- a/src/SURFEX/coupling_megann.F90
+++ b/src/SURFEX/coupling_megann.F90
@@ -29,6 +29,7 @@
 !!    -------------
 !!    Original: 25/10/2014
 !!    Modified: 06/07/2017, J. Pianezze, adaptation for SurfEx v8.0
+!!    Modified: 06/07/2018, P. Tulet, correction for T leaf
 !!
 !!    EXTERNAL
 !!    --------
@@ -132,27 +133,14 @@ ZPFD(:) = 0.
 DO JSM = 1,SIZE(PIACAN,2)
   ZPFD(:) = ZPFD(:) + PIACAN(:, JSM)
 END DO
-! Test car PIACAN prends des valeurs non physiques au lever du soleil
-WHERE (ZPFD(:) .GT. 2000.) ZPFD(:) = 0.
 !
-! compute sun and shade leaf temperature upon RN_SHADE and RN_SUNLIT
-! thanks to D. Carrer
-!
-ZLSUT(:) = PTEMP(:) + 3.
+! UPG*PT en attendat un calcul propre. Temperature des feuilles à l'ombre egale a la
+! température de l'air. La temparature des feuilles au soleil egale a la valeur
+! max entre la temperature de l'air et la temperaure radiative.
+ZLSUT(:) = MAX(PLEAFT(:),PTEMP(:))
 ZLSHT(:) = PTEMP(:)
-!
-IF (OTR_ML) THEN
-  ! 
-  ZRN(:) = PRN_SUNLIT(:)**2 + PRN_SHADE(:)**2
-  !
-  WHERE ( ZRN(:).NE.0. )
-    ! for sun leaves
-    ZLSUT(:) = PLEAFT(:) * PRN_SUNLIT(:) * (PRN_SUNLIT(:)+PRN_SHADE(:))/ZRN(:)
-    ! for shade leaves
-    ZLSHT(:) = PLEAFT(:) * PRN_SHADE (:) * (PRN_SUNLIT(:)+PRN_SHADE(:))/ZRN(:)
-  END WHERE
-  !
-END IF
+!UPG*PT
+
 !
 ! MEGAN : calcul des facteurs d'ajustement et de perte dans la canopée.
 ! ZCFSPEC: classe de sorties MEGAN (voir SPC_NOCONVER.EXT)
diff --git a/src/SURFEX/coupling_seaflux_orogn.F90 b/src/SURFEX/coupling_seaflux_orogn.F90
index 71b257f9f1cc6ad8c05be6223221fbc855a7ea35..5d222e8480eba4d94bac84f3c51a259ecb074d32 100644
--- a/src/SURFEX/coupling_seaflux_orogn.F90
+++ b/src/SURFEX/coupling_seaflux_orogn.F90
@@ -11,7 +11,7 @@ SUBROUTINE COUPLING_SEAFLUX_OROG_n (SM, DST, SLT, HPROGRAM, HCOUPLING, PTIMEC, P
                                     PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB,&
                                     PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF,       &
                                     PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF,  &
-                                    PPEQ_B_COEF, HTEST                        )  
+                                    PPEQ_B_COEF, PZWS, HTEST                        )  
 !     ###############################################################################
 !
 !!****  *COUPLING_SEAFLUX_OROG_n * - Modifies the input forcing if not
@@ -38,6 +38,7 @@ SUBROUTINE COUPLING_SEAFLUX_OROG_n (SM, DST, SLT, HPROGRAM, HCOUPLING, PTIMEC, P
 !!      J. Escobar    09/2012 SIZE(PTA) not allowed without-interface , replace by KI
 !!      B. Decharme  04/2013 new coupling variables
 !!                           improve forcing vertical shift
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!-------------------------------------------------------------
 !
 !
@@ -106,6 +107,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
@@ -204,7 +206,7 @@ ENDIF
                              PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB,  &
                              PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF,         &
                              PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, ZPET_B_COEF,    &
-                             ZPEQ_B_COEF, HTEST                                     )
+                             ZPEQ_B_COEF, PZWS, HTEST                                     )
 !
 IF (LHOOK) CALL DR_HOOK('COUPLING_SEAFLUX_OROG_N',1,ZHOOK_HANDLE)
 !-------------------------------------------------------------------------------------
diff --git a/src/SURFEX/coupling_seaflux_sbln.F90 b/src/SURFEX/coupling_seaflux_sbln.F90
index 857f16473668a9831029b3f31d3bcaab7deb85c3..53aa72d42ebc46a6e8c6ca068027000af37bd2d6 100644
--- a/src/SURFEX/coupling_seaflux_sbln.F90
+++ b/src/SURFEX/coupling_seaflux_sbln.F90
@@ -11,7 +11,7 @@ SUBROUTINE COUPLING_SEAFLUX_SBL_n (CHS, DTS, DGS, O, OR, G, S, SB, DST, SLT,
                                   PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                          &
                                   PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF,      &
                                   PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF,  &
-                                  PPEQ_B_COEF, HTEST                                             )
+                                  PPEQ_B_COEF, PZWS, HTEST                                           )
 !     ###############################################################################
 !
 !!****  *COUPLING_SEAFLUX_SBL_n * - Adds a SBL into SEAFLUX
@@ -38,6 +38,7 @@ SUBROUTINE COUPLING_SEAFLUX_SBL_n (CHS, DTS, DGS, O, OR, G, S, SB, DST, SLT,
 !!      S. Riette   10/2009 Iterative computation of XZ0
 !!      S. Riette   01/2010 Use of interpol_sbl to compute 10m wind diagnostic
 !!      B. Decharme  04/2013 new coupling variables
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !----------------------------------------------------------------
 !
 !
@@ -122,6 +123,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
 REAL, DIMENSION(KI), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
@@ -302,7 +304,7 @@ END IF
              PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, ZPA,&
              PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB,      &
              PEMIS, PTSURF, PZ0, PZ0H, PQSURF, ZPEW_A_COEF, ZPEW_B_COEF,              &
-             ZPET_A_COEF, ZPEQ_A_COEF, ZPET_B_COEF, ZPEQ_B_COEF, HTEST)
+             ZPET_A_COEF, ZPEQ_A_COEF, ZPET_B_COEF, ZPEQ_B_COEF, PZWS, HTEST)
 !
 !-------------------------------------------------------------------------------------
 !
diff --git a/src/SURFEX/coupling_seafluxn.F90 b/src/SURFEX/coupling_seafluxn.F90
index 5ea7b516c971576bf25a3d80fa24f72ba2f7690c..f7fc56d8021d2435be11826b58f57e6579b6ea9c 100644
--- a/src/SURFEX/coupling_seafluxn.F90
+++ b/src/SURFEX/coupling_seafluxn.F90
@@ -10,7 +10,7 @@ SUBROUTINE COUPLING_SEAFLUX_n (CHS, DTS, DGS, O, OR, G, S, DST, SLT, &
                                PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS,      &
                                PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF,    &
                                PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF,        &
-                               PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,  HTEST                 )  
+                               PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PZWS,  HTEST              )  
 !     ###############################################################################
 !
 !!****  *COUPLING_SEAFLUX_n * - Driver of the WATER_FLUX scheme for sea   
@@ -49,6 +49,7 @@ SUBROUTINE COUPLING_SEAFLUX_n (CHS, DTS, DGS, O, OR, G, S, DST, SLT, &
 !!      Modified    01/2015 : R. Séférian interactive ocaen surface albedo
 !!      Modified    03/2014 : M.N. Bouin possibility of wave parameters from external source
 !!      Modified    11/2014 : J. Pianezze : add currents for wave coupling
+!!      Modified    02/2019 : S. Bielli Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!                                       
 !!---------------------------------------------------------------------
 !
@@ -157,6 +158,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
 REAL, DIMENSION(KI), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
@@ -232,6 +234,8 @@ REAL, DIMENSION(KI) :: ZHU        ! Near surface relative humidity
 REAL, DIMENSION(KI) :: ZQA        ! specific humidity (kg/kg)
 REAL, DIMENSION(KI) :: ZEMIS      ! Emissivity at time t
 REAL, DIMENSION(KI) :: ZTRAD      ! Radiative temperature at time t
+REAL, DIMENSION(KI) :: ZHS        ! significant wave height
+REAL, DIMENSION(KI) :: ZTP        ! peak period
 !
 REAL, DIMENSION(KI) :: ZSST       ! XSST corrected for anomalously low values (which actually are sea-ice temp)
 REAL, DIMENSION(KI) :: ZMASK      ! A mask for diagnosing where seaice exists (or, for coupling_iceflux, may appear)
@@ -245,14 +249,17 @@ INTEGER                          :: ISIZE_ICE    ! number of points with some se
 !
 INTEGER                          :: ISWB       ! number of shortwave spectral bands
 INTEGER                          :: JSWB       ! loop counter on shortwave spectral bands
-INTEGER                          :: ISLT       ! number of sea salt variable
 !
 INTEGER :: IBEG, IEND
+INTEGER                          :: ISLT, IDST, JSV, IMOMENT   ! number of sea salt, dust variables
+!
+INTEGER :: ILUOUT
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !-------------------------------------------------------------------------------------
 ! Preliminaries:
 !-------------------------------------------------------------------------------------
+CALL GET_LUOUT(HPROGRAM,ILUOUT)
 IF (LHOOK) CALL DR_HOOK('COUPLING_SEAFLUX_N',0,ZHOOK_HANDLE)
 IF (HTEST/='OK') THEN
   CALL ABOR1_SFX('COUPLING_SEAFLUXN: FATAL ERROR DURING ARGUMENT TRANSFER')        
@@ -277,6 +284,8 @@ ZUSTAR   (:) = XUNDEF
 ZZ0      (:) = XUNDEF
 ZZ0H     (:) = XUNDEF
 ZQSAT    (:) = XUNDEF
+ZHS      (:) = XUNDEF
+ZTP      (:) = XUNDEF
 !
 ZSFTQ_ICE(:) = XUNDEF
 ZSFTH_ICE(:) = XUNDEF
@@ -317,6 +326,24 @@ PSFTS(:,:) = 0.
 ZHU = 1.
 !
 ZQA(:) = PQA(:) / PRHOA(:)
+
+! HS value from ECMWF file
+ZHS(:) = PZWS(:)
+#ifdef CPLOASIS
+! HS value from WW3 if activated
+IF (LCPL_WAVE) THEN
+  ZHS(:)=S%XHS(:)
+  ZTP(:)=S%XTP(:)
+ELSE
+  ZHS(:)=PZWS(:)
+  ZTP(:)=S%XTP(:)
+END IF
+#endif
+! if HS value is undef : constant value and alert message
+IF (ALL(ZHS==XUNDEF)) THEN
+ ZHS(:)=2.
+ WRITE (ILUOUT,*) 'WARNING : no HS values from ECMWF or WW3, then it is initialized to a constant value of 2 m'
+END IF
 !
 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 ! Time evolution
@@ -374,8 +401,16 @@ CALL COARE30_SEAFLUX(S, ZMASK, ISIZE_WATER, ISIZE_ICE,        &
               PTA, ZEXNA ,PRHOA, ZSST, ZEXNS, ZQA, PRAIN,     &
               PSNOW, ZWIND, PZREF, PUREF, PPS, ZQSAT,         &
               ZSFTH, ZSFTQ, ZUSTAR,                           &
-              ZCD, ZCDN, ZCH, ZCE, ZRI, ZRESA_SEA, ZZ0H       )  
+              ZCD, ZCDN, ZCH, ZCE, ZRI, ZRESA_SEA, ZZ0H     )
 END SELECT
+
+#ifdef CPLOASIS
+IF (.NOT. LCPL_WAVE) THEN
+  S%XHS(:)=ZHS(:)
+  S%XTP(:)=ZTP(:)
+END IF
+#endif
+
 !
 !-------------------------------------------------------------------------------------
 !radiative properties at time t
@@ -442,7 +477,7 @@ PSFCO2(:) = - ZWIND(:)**2 * 1.13E-3 * 8.7 * 44.E-3 / ( 365*24*3600 )
 ! Scalar fluxes:
 !-------------------------------------------------------------------------------------
 !
-IF (CHS%SVS%NBEQ>0) THEN
+IF (CHS%SVS%NBEQ>0.AND.(KI.GT.0)) THEN
   !
   IF (CHS%CCH_DRY_DEP == "WES89") THEN
     !
@@ -475,7 +510,7 @@ IF (CHS%SVS%NBEQ>0) THEN
   !
 ENDIF
 !
-IF (CHS%SVS%NDSTEQ>0) THEN
+IF (CHS%SVS%NDSTEQ>0.AND.(KI.GT.0)) THEN
   !
   IBEG = CHS%SVS%NSV_DSTBEG
   IEND = CHS%SVS%NSV_DSTEND
@@ -499,7 +534,7 @@ IF (CHS%SVS%NDSTEQ>0) THEN
 ENDIF
 
 !
-IF (CHS%SVS%NSLTEQ>0) THEN
+IF (CHS%SVS%NSLTEQ>0.AND.(KI.GT.0)) THEN
   !
   IBEG = CHS%SVS%NSV_SLTBEG
   IEND = CHS%SVS%NSV_SLTEND
@@ -510,6 +545,9 @@ IF (CHS%SVS%NSLTEQ>0) THEN
                       SIZE(ZUSTAR,1),           & !I [nbr] number of sea point
                       ISLT,                     & !I [nbr] number of sea salt variables
                       ZWIND,                    & !I [m/s] wind velocity
+                      ZHS,                      & !I [m] significant sea wave
+                      S%XSST,                   &
+                      ZUSTAR,                   &
                       PSFTS(:,IBEG:IEND) )   
   !
   CALL DSLT_DEP(PSV(:,IBEG:IEND), PSFTS(:,IBEG:IEND), ZUSTAR, ZRESA_SEA, PTA, &
@@ -517,11 +555,11 @@ IF (CHS%SVS%NSLTEQ>0) THEN
                 XDENSITY_SLT, XMOLARWEIGHT_SLT, ZCONVERTFACM0_SLT, ZCONVERTFACM6_SLT, &
                 ZCONVERTFACM3_SLT, LVARSIG_SLT, LRGFIX_SLT, CVERMOD  )  
   !
-  CALL MASSFLUX2MOMENTFLUX(         &
-                PSFTS(:,IBEG:IEND), & !I/O ![kg/m2/sec] In: flux of only mass, out: flux of moments
+  CALL MASSFLUX2MOMENTFLUX(                     &
+                PSFTS(:,IBEG:IEND),             & !I/O [kg/m2/sec] In: flux of only mass, out: flux of moments
                 PRHOA,                          & !I [kg/m3] air density
-                SLT%XEMISRADIUS_SLT,            &!I [um] emitted radius for the modes (max 3)
-                SLT%XEMISSIG_SLT,               &!I [-] emitted sigma for the different modes (max 3)
+                SLT%XEMISRADIUS_SLT,            & !I [um] emitted radius for the modes (max 3)
+                SLT%XEMISSIG_SLT,               & !I [-] emitted sigma for the different modes (max 3)
                 NSLTMDE,                        &
                 ZCONVERTFACM0_SLT,              &
                 ZCONVERTFACM6_SLT,              &
diff --git a/src/SURFEX/coupling_sean.F90 b/src/SURFEX/coupling_sean.F90
index 97a8b1f7c6b4bc5a12c04551a6e869c22869d3b8..ca4ae208190a3df6849a9732c4918ee675ba8c55 100644
--- a/src/SURFEX/coupling_sean.F90
+++ b/src/SURFEX/coupling_sean.F90
@@ -10,7 +10,7 @@ SUBROUTINE COUPLING_SEA_n (SM, DGO, DL, DLC, U, DST, SLT, HPROGRAM, HCOUPLING, P
                  PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                    &
                  PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF,                &
                  PPEW_A_COEF, PPEW_B_COEF,                                                   &
-                 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST   )  
+                 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PZWS, HTEST   )  
 !     ###############################################################################
 !
 !!****  *COUPLING_SEA_n * - Chooses the surface schemes for sea   
@@ -33,6 +33,7 @@ SUBROUTINE COUPLING_SEA_n (SM, DGO, DL, DLC, U, DST, SLT, HPROGRAM, HCOUPLING, P
 !!    -------------
 !!      Original    01/2004
 !!      B. Decharme  04/2013 new coupling variables
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!-----------------------------------------------------------------------
 !
 !
@@ -104,6 +105,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
@@ -150,7 +152,7 @@ IF (U%CSEA=='SEAFLX') THEN
                  PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                    &
                  PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF,                &
                  PPEW_A_COEF, PPEW_B_COEF,                                                   &
-                 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST                 )  
+                 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PZWS, HTEST              )  
 ELSE IF (U%CSEA=='FLUX  ') THEN
   CALL COUPLING_IDEAL_FLUX(DGO, DL, DLC, HPROGRAM, HCOUPLING, PTIMEC,                      &
                  PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW,                           &
diff --git a/src/SURFEX/coupling_sltn.F90 b/src/SURFEX/coupling_sltn.F90
index 7e66f3fa5f6cbd143802a1d3f054ce40c4e5b0cc..284fc093527a26c6342ca61c0ac9e7b190aa9b7b 100644
--- a/src/SURFEX/coupling_sltn.F90
+++ b/src/SURFEX/coupling_sltn.F90
@@ -3,16 +3,26 @@
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !SFX_LIC for details. version 1.
 SUBROUTINE COUPLING_SLT_n (SLT, &
-      KI,                   &!I [nbr] number of sea points 
-      KSLT,                 &!I [nbr] number of sea points 
-      PWIND,                &!I Wind velocity
-      PSFSLT                &!O [kg/m2/sec] flux of sea salt
+      KI,                       &!I [nbr] number of sea points 
+      KSLT,                     &!I [nbr] number of sea salt variables 
+      PWIND,                    &!I Wind velocity
+! ++ PIERRE / MARINE SSA - MODIF ++
+      PWHEIGHT,                 &! Significant height of wind-generated waves (in ECMWF analyses)
+                                 ! local pour l'instant, PWHEIGHT plus tard
+      PSST,                     &! Sea water temperature (C) 
+      PUSTAR,                   &! Friction velocity (ecmwf?) Calcule dans coupling_seafluxn.F90
+! -- PIERRE / MARINE SSA - MODIF --
+      PSFSLT                    &!O [kg/m2/sec] production flux of sea salt
       ) 
   
 !PURPOSE
 !-------
 !  Compute sea salt emission  upon Vignatti et al, 2001
+! ++ PIERRE / MARINE SSA - MODIF ++
+!  Compute sea salt emission  upon Ovadnevaite et al, 2014
+! -- PIERRE / MARINE SSA - MODIF --
 !
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !AUTHOR
 !-------
 ! P. Tulet
@@ -35,45 +45,64 @@ TYPE(SLT_t), INTENT(INOUT) :: SLT
 INTEGER, INTENT(IN)                :: KI             !I Number of sea points
 INTEGER, INTENT(IN)                :: KSLT           !I Number of sea salt emission variables
 REAL, DIMENSION(KI),      INTENT(IN)  :: PWIND       !I wind velocity
-REAL, DIMENSION(KI,KSLT), INTENT(OUT) :: PSFSLT      !Out: mole particles per mole air m/s *(MWdst/MWair*rhoair)(index #1)
-                                                     !Out: kg/m2/s (index #2)
-                                                     !Out: moles m6/moles air m/s *(MWdst/MWair*rhoair)(index #3)
+REAL, DIMENSION(KI,KSLT), INTENT(OUT) :: PSFSLT      !Out: kg/m2/s (index #2)
+! ++ PIERRE / MARINE SSA - MODIF ++
+REAL, DIMENSION(KI),      INTENT(INOUT)  :: PWHEIGHT !Significant height of wind-generated waves (in ECMWF analyses)
+REAL, DIMENSION(KI),      INTENT(IN)  :: PUSTAR   !Friction velocity (ecmwf?) : Unite: m.s^(-2)?
+REAL, DIMENSION(KI),      INTENT(IN)  :: PSST     ! Sea surface temperature (K)
+! -- PIERRE / MARINE SSA - MODIF --
+
 !LOCAL VARIABLES
-REAL,DIMENSION(KI,3)  :: ZSFSLT_MDE       ! sea salt flux from modes
-INTEGER               :: JN, JI           !Counter for sea salt modes
-REAL, DIMENSION(KI)   :: DZSPEED 
-INTEGER, DIMENSION(KI):: WCL
-REAL                  :: ZCONVERTFACM0_SLT
-REAL                  :: ZCONVERTFACM3_SLT
-REAL                  :: ZCONVERTFACM6_SLT
-!
-!REAL, PARAMETER :: MASS1FLUX(0:40) = (/  &
-!          0.000E+00, 2.483E-15, 2.591E-14, 1.022E-13, 2.707E-13, 5.761E-13,  &
-!          1.068E-12, 1.800E-12, 2.829E-12, 4.215E-12, 6.023E-12, 8.317E-12, &
-!          1.117E-11, 1.464E-11, 1.882E-11, 2.378E-11, 2.959E-11, 3.633E-11, &
-!          4.409E-11, 5.296E-11, 6.301E-11, 7.433E-11, 8.693E-11, 1.012E-10, &
-!          1.168E-10, 1.342E-10, 1.532E-10, 1.741E-10, 1.970E-10, 2.219E-10, &
-!          2.489E-10, 2.781E-10, 3.097E-10, 3.437E-10, 3.803E-10, 4.195E-10, &
-!          4.616E-10, 5.065E-10, 5.544E-10, 6.054E-10, 6.711E-10             /) 
-!
-!REAL, PARAMETER :: MASS2FLUX(0:40) = (/  &
-!          0.000E+00, 2.319E-13, 2.411E-12, 9.481E-12, 2.505E-11, 5.321E-11,  &
-!          9.850E-11, 1.658E-10, 2.602E-10, 3.874E-10, 5.529E-10, 7.628E-10,  &
-!          1.023E-09, 1.341E-09, 1.722E-09, 2.175E-09, 2.704E-09, 3.319E-09,  &
-!          4.026E-09, 4.832E-09, 5.746E-09, 6.776E-09, 7.925E-09, 9.214E-09,  &
-!          1.064E-08, 1.221E-08, 1.394E-08, 1.584E-08, 1.791E-08, 2.016E-08,  &
-!          2.261E-08, 2.526E-08, 2.812E-08, 3.120E-08, 3.451E-08, 3.806E-08,  &
-!          4.186E-08, 4.592E-08, 5.025E-08, 5.486E-08, 6.014E-08             /) 
-!
-!REAL, PARAMETER :: MASS3FLUX(0:40) = (/ 0.0, &
-!        1.783E-12, 1.579E-11, 5.852E-11, 1.501E-10, 3.134E-10, 5.740E-10, &
-!        9.597E-10, 1.500E-09, 2.227E-09, 3.175E-09, 4.378E-09, 5.872E-09, &
-!        7.698E-09, 9.897E-09, 1.250E-08, 1.556E-08, 1.912E-08, 2.323E-08, &
-!        2.792E-08, 3.325E-08, 3.927E-08, 4.608E-08, 5.356E-08, 6.194E-08, &
+REAL,DIMENSION(KI,JPMODE_SLT)  :: ZSFSLT_MDE ! sea salt flux from modes
+INTEGER                        :: JN, JI, II !Counter for sea salt modes
+REAL, DIMENSION(KI)            :: DZSPEED 
+INTEGER, DIMENSION(KI)         :: WCL
+REAL                           :: ZCONVERTFACM0_SLT  ![kg/mole*mole/molec] conversion factor
+                                                     !for moment fluxes and used fluxes
+REAL                           :: ZCONVERTFACM3_SLT 
+REAL                           :: ZCONVERTFACM6_SLT 
+!
+! ++ PIERRE / MARINE SSA - MODIF ++
+
+REAL, DIMENSION(5)             :: ZNUWATER   !  Temperature-dependant kinematic viscosity of 
+                                             ! sea-water (table of data to interpolate) (m².s-¹)
+REAL, DIMENSION(5)             :: ZWT ! Sea water temperature in table
+REAL, DIMENSION(KI)            :: ZREYNOLDS ! Reynolds Number
+REAL, DIMENSION(KI)            :: ZHVAGUE  ! sea wave height from wind if ZWS is unknown.
+REAL, DIMENSION(KI)            :: ZVISCO ! Temperature-dependant kinematic viscosity
+                                         ! of sea-water interpolated
+! -- PIERRE / MARINE SSA - MODIF --
+!
+!REAL, PARAMETER :: mass1flux(0:40) = (/  &
+!        0.000E+00, 2.483E-15, 2.591E-14, 1.022E-13, 2.707E-13, 5.761E-13,  &
+!        1.068E-12, 1.800E-12, 2.829E-12, 4.215E-12, 6.023E-12, 8.317E-12, &
+!        1.117E-11, 1.464E-11, 1.882E-11, 2.378E-11, 2.959E-11, 3.633E-11, &
+!        4.409E-11, 5.296E-11, 6.301E-11, 7.433E-11, 8.693E-11, 1.012E-10, &
+!        1.168E-10, 1.342E-10, 1.532E-10, 1.741E-10, 1.970E-10, 2.219E-10, &
+!        2.489E-10, 2.781E-10, 3.097E-10, 3.437E-10, 3.803E-10, 4.195E-10, &
+!        4.616E-10, 5.065E-10, 5.544E-10, 6.054E-10, 6.711E-10             /) 
+
+!REAL, PARAMETER :: mass2flux(0:40) = (/  &
+!        0.000E+00, 2.319E-13, 2.411E-12, 9.481E-12, 2.505E-11, 5.321E-11,  &
+!        9.850E-11, 1.658E-10, 2.602E-10, 3.874E-10, 5.529E-10, 7.628E-10,  &
+!       1.023E-09, 1.341E-09, 1.722E-09, 2.175E-09, 2.704E-09, 3.319E-09,  &
+!       4.026E-09, 4.832E-09, 5.746E-09, 6.776E-09, 7.925E-09, 9.214E-09,  &
+!       1.064E-08, 1.221E-08, 1.394E-08, 1.584E-08, 1.791E-08, 2.016E-08,  &
+!        2.261E-08, 2.526E-08, 2.812E-08, 3.120E-08, 3.451E-08, 3.806E-08,  &
+!        4.186E-08, 4.592E-08, 5.025E-08, 5.486E-08, 6.014E-08             /) 
+
+!REAL, PARAMETER :: mass3flux(0:40) = (/ 0.0, &
+!      1.783E-12, 1.579E-11, 5.852E-11, 1.501E-10, 3.134E-10, 5.740E-10, &
+!      9.597E-10, 1.500E-09, 2.227E-09, 3.175E-09, 4.378E-09, 5.872E-09, &
+!      7.698E-09, 9.897E-09, 1.250E-08, 1.556E-08, 1.912E-08, 2.323E-08, &
+!      2.792E-08, 3.325E-08, 3.927E-08, 4.608E-08, 5.356E-08, 6.194E-08, &
 !        7.121E-08, 8.143E-08, 9.266E-08, 1.049E-07, 1.183E-07, 1.329E-07, &
 !        1.487E-07, 1.658E-07, 1.843E-07, 2.041E-07, 2.255E-07, 2.484E-07, &
 !        2.729E-07, 2.991E-07, 3.270E-07, 3.517E-07 /) 
 
+REAL, PARAMETER :: HVAGUE(1:9) = (/ 0., 0.1, 0.5, 1.25, 2.5, 4., 6., 9., 14. /)
+REAL, PARAMETER :: VVENT(1:9) = (/  1., 2.7, 4.1, 6.3, 8.3, 11.1, 13.8, &
+                                    16.6, 19.4/)
 
 REAL, PARAMETER :: NUMB1FLUX(0:40) = (/ &
          0.000E+00, 3.004E+01, 3.245E+02, 1.306E+03, 3.505E+03, 7.542E+03,  &
@@ -107,7 +136,7 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !!    M0=#/molec_{air}
 !!    M6=um6/molec_{air}*1.d6
 !!    The surface model should have (for sea salt)
-!!    M0=#/m3*[kg_{dst}/mole_{dst}/XAVOGADRO]
+!!    M0=#/m3*[kg_{slt}/mole_{slt}/XAVOGADRO]
 !!    M3=kg/m3
 !!    M6=um6/m3
 !!    REFERENCE
@@ -119,71 +148,175 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('COUPLING_SLT_N',0,ZHOOK_HANDLE)
 !
 !Factor which is needed so that all gains normal units when leaving ground paramn
-ZCONVERTFACM0_SLT = XMOLARWEIGHT_SLT / XAVOGADRO !(kg_dst/mol_dst)/(molec/mol)
+ZCONVERTFACM0_SLT = XMOLARWEIGHT_SLT / XAVOGADRO !(kg_slt/mol_slt)/(molec/mol)
 !Factor which is needed for moment 6, there is a factor 1.d6 transported around in M6 in MESONH
 ZCONVERTFACM6_SLT = XMOLARWEIGHT_SLT / XAVOGADRO*1.d6
 ZCONVERTFACM3_SLT = 4./3.*XPI*XDENSITY_SLT / 1.d18
 !
 PSFSLT(:,:)=0.d0
 !
-IF (CEMISPARAM_SLT.eq."Vig01")THEN
-  !
-  ! Vignatti et al. 2001 (in particles.cm-2.s-1)
-  ZSFSLT_MDE(:,1) =  10**(0.09  *PWIND(:) + 0.283)   ! fine mode
-  ZSFSLT_MDE(:,2) =  10**(0.0422*PWIND(:) + 0.288)   ! median mode
-  ZSFSLT_MDE(:,3) =  10**(0.069 *PWIND(:) - 3.5)     ! coarse mode
-  ! convert into  particles.m-2.s-1)
-  ZSFSLT_MDE(:,1) = MAX(ZSFSLT_MDE(:,1) * 1E4, 1E-10)  
-  ZSFSLT_MDE(:,2) = MAX(ZSFSLT_MDE(:,2) * 1E4, 1E-10)  
-  ZSFSLT_MDE(:,3) = MAX(ZSFSLT_MDE(:,3) * 1E4, 1E-10)  
-  !
-ELSE ! Use Schultz et al., 2004
-  !
+!+ Marine
+IF (CEMISPARAM_SLT .eq. "Ova14") THEN ! Rajouter Ova14 dans fichier initialisation
+  ZHVAGUE(:)  = 0.
+  DO II = 1, 8
+!++cb++19/10/16 modif de la formule : + de vent => vagues + hautes
+!    WHERE ((PWIND(:) .GT. VVENT(II)).AND.(PWIND(:) .LT. VVENT(II+1)))
+    WHERE ((PWIND(:) .GT. VVENT(II)).AND.(PWIND(:) .LT. VVENT(II+1)))
+!      ZHVAGUE(:) = HVAGUE(II) + (VVENT(II+1)  - PWIND(:)) * &
+      ZHVAGUE(:) = HVAGUE(II) + (PWIND(:)     - VVENT(II+1)) * &
+                                (HVAGUE(II+1) - HVAGUE(II)) / &
+                                (VVENT(II+1)  - VVENT(II))
+!--cb--
+    ENDWHERE
+  ENDDO
+
+  WHERE (PWIND(:) .GE. VVENT(9))
+    ZHVAGUE(:) = HVAGUE(9)
+  END WHERE
+
+  WHERE (PWHEIGHT(:) .EQ. -1.)
+    PWHEIGHT(:) = ZHVAGUE(:)
+  END WHERE
+
+  ZWT = (/ 273.15, 283.15, 293.15, 303.15, 313.15 /)  ! Unite : K
+  ZNUWATER = (/ 1.854E-6, 1.36E-6, 1.051E-6, 0.843E-6, 0.695E-6 /) 
+! Unite : m².s^(-1) Pour une salinite = 35g/kg.
+! En mer Mediterranee = 38.5g/kg (Lewis and Schwartz)
+
+! Initialisation des valeurs de ZVISCO, ZREYNOLDS
+  ZVISCO(:)    = 0.
+  ZREYNOLDS(:) = 0.
+
+  ! Tableau d'interpolation pour calculer ZNUWATER en fonction de la SST
+  ! Cas ou 0 < SST < 10 C
+  WHERE ((PSST(:) >= 273.15).AND.(PSST(:) < 283.15))
+    ZVISCO(:) = ZNUWATER(1) + (PSST(:) - ZWT(1)) * (ZNUWATER(2)-ZNUWATER(1)) / &
+                (ZWT(2) - ZWT(1))
+  ENDWHERE
+
+  ! Cas ou 10 < SST < 20 C
+  WHERE ((PSST(:) >= 283.15).AND.(PSST(:) < 293.15))
+    ZVISCO(:) = ZNUWATER(2) + (PSST(:) - ZWT(2)) * (ZNUWATER(3)-ZNUWATER(2)) / &
+                (ZWT(3) - ZWT(2))
+  ENDWHERE
+
+  ! Cas ou 20 < SST < 30 C
+  WHERE ((PSST(:) >= 293.15).AND.(PSST(:) < 303.15))
+    ZVISCO(:) = ZNUWATER(3) + (PSST(:) - ZWT(3)) * (ZNUWATER(4)-ZNUWATER(3)) / &
+                (ZWT(4) - ZWT(3))
+  ENDWHERE
+
+  ! Cas ou 30 < SST < 40 C
+  WHERE ((PSST(:) >= 303.15).AND.(PSST(:) < 313.15))
+    ZVISCO(:) = ZNUWATER(4) + (PSST(:) - ZWT(4)) * (ZNUWATER(5)-ZNUWATER(4)) / &
+                (ZWT(5) - ZWT(4))
+  ENDWHERE
+
+! Calcul du nombre de Reynolds
+  ZREYNOLDS(:) = (PUSTAR(:) * PWHEIGHT(:)) / ZVISCO(:)
+
+! Calcul du flux en nombre pour chaque mode
+
+! Ovadnevaite et al. 2014 
+!!!!! Total number flux, Unite ZSDSLT_MDE ne correspond pas au total number
+!flux mais au size dependent SSA production flux
+
+! Ecrire equation integration pour chaque mode
+
+!Condition d'emission : ZREYNOLDS > 1E5
+
+  WHERE (ZREYNOLDS(:) > 1.E5)
+    ZSFSLT_MDE(:,1) = 104.51 * ( ZREYNOLDS(:) - 1.E5)**0.556
+    ZSFSLT_MDE(:,2) = 0.044  * ( ZREYNOLDS(:) - 1.E5)**1.08
+    ZSFSLT_MDE(:,3) = 149.64 * ( ZREYNOLDS(:) - 1.E5)**0.545
+    ZSFSLT_MDE(:,4) = 2.96   * ( ZREYNOLDS(:) - 1.E5)**0.79
+  ENDWHERE
+  WHERE (ZREYNOLDS(:) > 2.E5)
+    ZSFSLT_MDE(:,5) = 0.52   * ( ZREYNOLDS(:) - 2.E5)**0.87
+  ENDWHERE
+
+
+
+  WHERE (ZREYNOLDS(:) <= 1.E5)
+    ZSFSLT_MDE(:,1) = 1.E-10
+    ZSFSLT_MDE(:,2) = 1.E-10
+    ZSFSLT_MDE(:,3) = 1.E-10
+    ZSFSLT_MDE(:,4) = 1.E-10
+  ENDWHERE
+  WHERE (ZREYNOLDS(:) <= 2.E5)
+    ZSFSLT_MDE(:,5) = 1.E-10
+  ENDWHERE
+
+! Controle avec des valeurs limites , Pas besoin de la conversion 1E4 pour Ova
+! car deja en m-2
+  ZSFSLT_MDE(:,1) = MAX(ZSFSLT_MDE(:,1) , 1.E-10)
+  ZSFSLT_MDE(:,2) = MAX(ZSFSLT_MDE(:,2) , 1.E-10)
+  ZSFSLT_MDE(:,3) = MAX(ZSFSLT_MDE(:,3) , 1.E-10)
+  ZSFSLT_MDE(:,4) = MAX(ZSFSLT_MDE(:,4) , 1.E-10)
+  ZSFSLT_MDE(:,5) = MAX(ZSFSLT_MDE(:,5) , 1.E-10)
+!- Marine
+
+ELSEIF (CEMISPARAM_SLT .eq. "Vig01") THEN
+! Vignatti et al. 2001 (in particles.cm-2.s-1) : en #.cm-3 en fait
+  ZSFSLT_MDE(:,1) =  10.**(0.09  *PWIND(:) + 0.283)   ! fine mode
+  ZSFSLT_MDE(:,2) =  10.**(0.0422*PWIND(:) + 0.288)   ! median mode
+  ZSFSLT_MDE(:,3) =  10.**(0.069 *PWIND(:) - 3.5)     ! coarse mode
+
+! convert into  particles.m-2.s-1)
+  ZSFSLT_MDE(:,1) = MAX(ZSFSLT_MDE(:,1) * 1.E4, 1.E-10)
+  ZSFSLT_MDE(:,2) = MAX(ZSFSLT_MDE(:,2) * 1.E4, 1.E-10)
+  ZSFSLT_MDE(:,3) = MAX(ZSFSLT_MDE(:,3) * 1.E4, 1.E-10)
+!
+ELSEIF (CEMISPARAM_SLT .eq. "Sch04") THEN! Use Schultz et al., 2004
   WCL(:) = INT(PWIND(:))
   WCL(:) = MAX (0, MIN(WCL(:), 39))
-  !
+ 
   DZSPEED(:) = MAX(0., MIN(PWIND(:) - FLOAT(WCL(:)), 1.))
-  !
-  ! Flux given  in  particles.m-2 s-1
-  !
-  DO JI=1,KI
-    !plm-gfortran
-    ZSFSLT_MDE(JI,1) = NUMB1FLUX(WCL(JI)) + (NUMB1FLUX(WCL(JI)+1)-NUMB1FLUX(WCL(JI)))*DZSPEED(JI)
-    ZSFSLT_MDE(JI,2) = NUMB2FLUX(WCL(JI)) + (NUMB2FLUX(WCL(JI)+1)-NUMB2FLUX(WCL(JI)))*DZSPEED(JI)
-    ZSFSLT_MDE(JI,3) = NUMB3FLUX(WCL(JI)) + (NUMB3FLUX(WCL(JI)+1)-NUMB3FLUX(WCL(JI)))*DZSPEED(JI)
-    !plm-gfortran
-  ENDDO
-  !
+ !
+ ! Flux given  in  particles.m-2 s-1
+ !
+  DO JI = 1, KI
+   !plm-gfortran
+    ZSFSLT_MDE(JI,1) = NUMB1FLUX(WCL(JI)) + &
+                      (NUMB1FLUX(WCL(JI)+1)-NUMB1FLUX(WCL(JI)))*DZSPEED(JI)
+    ZSFSLT_MDE(JI,2) = NUMB2FLUX(WCL(JI)) + &
+                      (NUMB2FLUX(WCL(JI)+1)-NUMB2FLUX(WCL(JI)))*DZSPEED(JI)
+    ZSFSLT_MDE(JI,3) = NUMB3FLUX(WCL(JI)) + &
+                      (NUMB3FLUX(WCL(JI)+1)-NUMB3FLUX(WCL(JI)))*DZSPEED(JI)
+   !plm-gfortran
+  END DO
 END IF
 !
-DO JN=1,JPMODE_SLT
+DO JN = 1, JPMODE_SLT
+
+! convert  particles.m-2 s-1 into kg.m-2.s-1
+! N'est calculé que pour le moment 3 (en masse), la conversion pour les autres
+! flux de moments se fait plus tard (mode_dslt_surf.F90 MASSFLUX2MOMENTFLUX)
+!+Marine
   !
-  IF (LVARSIG_SLT) THEN
-    !
-    PSFSLT(:,1+(JN-1)*3) = ZSFSLT_MDE(:,JORDER_SLT(JN))
-    PSFSLT(:,2+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * (SLT%XEMISRADIUS_SLT(JN)**3)*EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JN))**2)  
-    PSFSLT(:,3+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * (SLT%XEMISRADIUS_SLT(JN)**6)*EXP(18. * LOG(SLT%XEMISSIG_SLT(JN))**2)  
-    !
-    ! Conversion into fluxes
-    PSFSLT(:,1+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * ZCONVERTFACM0_SLT
-    PSFSLT(:,2+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * ZCONVERTFACM3_SLT
-    PSFSLT(:,3+(JN-1)*3) = PSFSLT(:,3+(JN-1)*3) * ZCONVERTFACM6_SLT
-
-  ELSE IF (LRGFIX_SLT) THEN
-    PSFSLT(:,JN) =  ZSFSLT_MDE(:,JORDER_SLT(JN)) * (SLT%XEMISRADIUS_SLT(JN)**3)*EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JN))**2) 
-    ! Conversion into fluxes
-    PSFSLT(:,JN) = PSFSLT(:,JN) * ZCONVERTFACM3_SLT
-
-  ELSE
-    PSFSLT(:,1+(JN-1)*2) = ZSFSLT_MDE(:,JORDER_SLT(JN)) 
-    PSFSLT(:,2+(JN-1)*2) = PSFSLT(:,1+(JN-1)*2) * (SLT%XEMISRADIUS_SLT(JN)**3)*EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JN))**2) 
-
-    ! Conversion into fluxes
-    PSFSLT(:,1+(JN-1)*2) = PSFSLT(:,1+(JN-1)*2) * ZCONVERTFACM0_SLT
-    PSFSLT(:,2+(JN-1)*2) = PSFSLT(:,1+(JN-1)*2) * ZCONVERTFACM3_SLT
-
-  ENDIF
+  IF (LVARSIG_SLT) THEN ! cas 3 moment
+
+    PSFSLT(:,2+(JN-1)*3) = ZSFSLT_MDE(:,JORDER_SLT(JN)) &
+                            * ((SLT%XEMISRADIUS_SLT(JORDER_SLT(JN))**3) &
+                            * EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JORDER_SLT(JN)))**2)) &
+                            * ZCONVERTFACM3_SLT
+
+  ELSEIF (LRGFIX_SLT) THEN ! cas 1 moment
+    PSFSLT(:,JN) =  ZSFSLT_MDE(:,JORDER_SLT(JN)) &
+                      * (SLT%XEMISRADIUS_SLT(JORDER_SLT(JN))**3) &
+                      * EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JORDER_SLT(JN)))**2) &
+                      * ZCONVERTFACM3_SLT
+
+  ELSE ! cas 2 moments
+
+    PSFSLT(:,2+(JN-1)*2) = ZSFSLT_MDE(:,JORDER_SLT(JN)) &
+                            * ((SLT%XEMISRADIUS_SLT(JORDER_SLT(JN))**3) &
+                            * EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JORDER_SLT(JN)))**2)) &
+                            * ZCONVERTFACM3_SLT
+! -- PIERRE / MARINE SSA - MODIF --
+  END IF
 END DO
 
+
 IF (LHOOK) CALL DR_HOOK('COUPLING_SLT_N',1,ZHOOK_HANDLE)
 END SUBROUTINE COUPLING_SLT_n
diff --git a/src/SURFEX/coupling_surf_atmn.F90 b/src/SURFEX/coupling_surf_atmn.F90
index 9ee9651c22ceb72b66851668e76cfc2771982a1e..9a52eed46e1b6525e9e0ad2a000b97fc84ef205e 100644
--- a/src/SURFEX/coupling_surf_atmn.F90
+++ b/src/SURFEX/coupling_surf_atmn.F90
@@ -10,7 +10,7 @@ SUBROUTINE COUPLING_SURF_ATM_n (YSC, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR,
                                 PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, &
                                 PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF,     &
                                 PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF,       &
-                                PPET_B_COEF, PPEQ_B_COEF, HTEST           )
+                                PPET_B_COEF, PPEQ_B_COEF, PZWS, HTEST           )
 !     #################################################################################
 !
 !!****  *COUPLING_INLAND_WATER_n * - Driver to call the schemes for the 
@@ -39,6 +39,7 @@ SUBROUTINE COUPLING_SURF_ATM_n (YSC, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR,
 !!      Modified    06/2013 by J.Escobar  : replace DOUBLE PRECISION by REAL to handle problem for promotion of real on IBM SP
 !!      R. Séférian 03/2014 Adding decoupling between CO2 seen by photosynthesis and radiative CO2
 !!      P. Wautelet 02/2019 bug correction KI->KSIZE for size of KMASK argument in TREAT_SURF
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!-------------------------------------------------------------
 !
 !
@@ -128,6 +129,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
@@ -475,6 +477,7 @@ REAL, DIMENSION(KSIZE) :: ZP_LW       ! longwave radiation (on horizontal surf.)
 !                                              !                                       (W/m2)
 REAL, DIMENSION(KSIZE) :: ZP_PS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KSIZE) :: ZP_PA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KSIZE) :: ZP_ZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KSIZE) :: ZP_ZS       ! atmospheric model orography           (m)
 REAL, DIMENSION(KSIZE) :: ZP_CO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KSIZE,KSV) :: ZP_SV       ! scalar concentration in the air
@@ -532,6 +535,7 @@ DO JJ=1,KSIZE
   ZP_LW(JJ)         = PLW         (JI)
   ZP_PS(JJ)         = PPS         (JI)
   ZP_PA(JJ)         = PPA         (JI)
+  ZP_ZWS(JJ)        = PZWS        (JI)
   ZP_ZS(JJ)         = PZS         (JI)
 ENDDO
 !
@@ -584,7 +588,7 @@ IF (KTILE==1) THEN
                       ZP_PS, ZP_PA, ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV,     &
                       ZP_TRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H,     &
                       ZP_QSURF, ZP_PEW_A_COEF, ZP_PEW_B_COEF, ZP_PET_A_COEF, ZP_PEQ_A_COEF,  &
-                      ZP_PET_B_COEF, ZP_PEQ_B_COEF, 'OK'        )
+                      ZP_PET_B_COEF, ZP_PEQ_B_COEF, ZP_ZWS, 'OK'        )
   !
 ELSEIF (KTILE==2) THEN
   !
diff --git a/src/SURFEX/default_ch_bio_flux.F90 b/src/SURFEX/default_ch_bio_flux.F90
index a7a3abb71f9543286b4bd27a23babb4f77ecb218..b303ab82f9f9e2de19605c054e48b2b6094dd80e 100644
--- a/src/SURFEX/default_ch_bio_flux.F90
+++ b/src/SURFEX/default_ch_bio_flux.F90
@@ -3,7 +3,7 @@
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !SFX_LIC for details. version 1.
 !     #########
-      SUBROUTINE DEFAULT_CH_BIO_FLUX(OCH_BIO_FLUX)
+      SUBROUTINE DEFAULT_CH_BIO_FLUX(OCH_BIO_FLUX,PDAILYPAR,PDAILYTEMP)
 !     ########################################################################
 !
 !!****  *DEFAULT_CH_BIO_FLUX* - routine to set default values for the configuration for CH_BIO_FLUX scheme
@@ -32,7 +32,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    08/2007 
-
+!!      J.Pianezzej 02/2019 : correction for use of MEGAN
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -49,6 +49,8 @@ IMPLICIT NONE
 !              -------------------------
 !
 LOGICAL,  INTENT(OUT) :: OCH_BIO_FLUX  ! flag for the calculation of biogenic fluxes
+REAL,     INTENT(OUT), OPTIONAL :: PDAILYPAR  ! default values for megan PAR   temperature
+REAL,     INTENT(OUT), OPTIONAL :: PDAILYTEMP ! default values for megan daily temperature
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 
 !
@@ -60,6 +62,8 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 IF (LHOOK) CALL DR_HOOK('DEFAULT_CH_BIO_FLUX',0,ZHOOK_HANDLE)
 OCH_BIO_FLUX= .FALSE.
+IF (PRESENT(PDAILYPAR))  PDAILYPAR   = 200.
+IF (PRESENT(PDAILYTEMP)) PDAILYTEMP  = 293.
 IF (LHOOK) CALL DR_HOOK('DEFAULT_CH_BIO_FLUX',1,ZHOOK_HANDLE)
 !
 !-------------------------------------------------------------------------------
diff --git a/src/SURFEX/default_slt.F90 b/src/SURFEX/default_slt.F90
index e4f99f54a4c89da71b6fe82f411f277676888cc0..ca96f03f98d0b5c56c5cbd4b31838ac4d8c27045 100644
--- a/src/SURFEX/default_slt.F90
+++ b/src/SURFEX/default_slt.F90
@@ -32,6 +32,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    03/2005 
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -52,8 +53,10 @@ IMPLICIT NONE
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 IF (LHOOK) CALL DR_HOOK('DEFAULT_SLT',0,ZHOOK_HANDLE)
-CEMISPARAM_SLT = 'Vig01'
-JPMODE_SLT     = 3
+! ++ PIERRE / MARINE SSA - MODIF ++
+CEMISPARAM_SLT = 'Ova14'
+JPMODE_SLT     = 5
+! -- PIERRE / MARINE SSA - MODIF --
 LVARSIG_SLT    = .FALSE.
 LRGFIX_SLT     = .TRUE.
 IF (LHOOK) CALL DR_HOOK('DEFAULT_SLT',1,ZHOOK_HANDLE)
diff --git a/src/SURFEX/get_type_dimn.F90 b/src/SURFEX/get_type_dimn.F90
index b3b98462276242e11e3e7f37dc6cbc980aea6adc..05c60f73b86f8f402d50e74c1027f4e0a674dadf 100644
--- a/src/SURFEX/get_type_dimn.F90
+++ b/src/SURFEX/get_type_dimn.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2004-2019 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #####################################
       SUBROUTINE GET_TYPE_DIM_n (DTCO, U, &
@@ -26,6 +26,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    01/2004
+!  P. Wautelet 15/02/2019: move computation of ZLAND (to prevent use of non initialized values)
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -99,7 +100,6 @@ ELSE
   ZWATER  = U%XWATER
   ZTOWN   = U%XTOWN
 END IF
-ZLAND = ZTOWN + ZNATURE
 !
 ALLOCATE(ZFULL(ILU))
 ZFULL=1.
@@ -124,6 +124,7 @@ SELECT CASE (HTYPE)
    KDIM = COUNT(ZWATER(:) > 0.)
    !
   CASE ('LAND  ')
+   ZLAND = ZTOWN + ZNATURE
    KDIM = COUNT(ZLAND(:) > 0.)
    !
 END SELECT
diff --git a/src/SURFEX/init_isban.F90 b/src/SURFEX/init_isban.F90
index a6680248b113d1754300bc218d5eb03e11f17c14..dfa0031efbe28ff219ee22d8797ece38d3b8b20b 100644
--- a/src/SURFEX/init_isban.F90
+++ b/src/SURFEX/init_isban.F90
@@ -57,6 +57,7 @@ SUBROUTINE INIT_ISBA_n (DTCO, OREAD_BUDGETC, UG, U, USS, GCP, IM, DTZ,&
 !!      P. Wautelet    16/02/2018: bug correction: allocate some work arrays to 0,1,1 instead of 0,0,1 (crash with XLF)
 !!      V.VIonnet       2017 : Blow snow
 !!      P.Tulet        06/16 : add MEGAN coupling  
+!!      J.Pianezzej    02/2019 : correction for use of MEGAN
 !!
 !-------------------------------------------------------------------------------
 !
@@ -234,7 +235,7 @@ IF (LNAM_READ) THEN
                    IM%O%NNBYEARSPINS, IM%O%NNBYEARSPINW, IM%O%LNITRO_DILU     )
  !                  
  CALL DEFAULT_CH_DEP(IM%CHI%CCH_DRY_DEP)
- CALL DEFAULT_CH_BIO_FLUX(IM%CHI%LCH_BIO_FLUX)                  
+ CALL DEFAULT_CH_BIO_FLUX(IM%CHI%LCH_BIO_FLUX,PDAILYPAR=IM%MGN%XDAILYPAR,PDAILYTEMP=IM%MGN%XDAILYTEMP)                  
  CALL DEFAULT_DIAG_ISBA(IM%ID%O%N2M, IM%ID%O%LSURF_BUDGET, IM%ID%O%L2M_MIN_ZS, IM%ID%O%LRAD_BUDGET, &
                         IM%ID%O%LCOEF, IM%ID%O%LSURF_VARS, IM%ID%DE%LSURF_EVAP_BUDGET,              &
                         IM%ID%DM%LSURF_MISC_BUDGET, IM%ID%DM%LSURF_DIAG_ALBEDO,                     &
diff --git a/src/SURFEX/init_megann.F90 b/src/SURFEX/init_megann.F90
index e4654e149343b95b7002b1189942119ca50ede36..ee3b097f8a6b1a5ee6374c4458225f0cd1d16d81 100644
--- a/src/SURFEX/init_megann.F90
+++ b/src/SURFEX/init_megann.F90
@@ -25,6 +25,7 @@ SUBROUTINE INIT_MEGAN_n(IO, S, K, NP, MSF, MGN, PLAT, HSV, PMEGAN_FIELDS)
 !!    -------------
 !!    Original: 25/10/14
 !!    Modified: 06/2017, J. Pianezze, adaptation for SurfEx v8.0
+!!    Modified: 06/2018, P. Tulet,  add PFT and LAI
 !!
 !!
 !!    EXTERNAL
@@ -44,7 +45,8 @@ USE MODD_DATA_COVER_PAR, ONLY : NVT_C4, NVT_TRBE, NVT_TRBD, NVT_TEBE, &
                     NVT_BOGR, NVT_SHRB, NVT_GRAS, NVT_TROG, NVT_C3,   &
                     NVT_NO, NVT_ROCK, NVT_SNOW, NVT_IRR, NVT_PARK
 !
-USE MODD_SURF_PAR, ONLY : XUNDEF
+USE MODD_SURF_PAR,   ONLY : XUNDEF
+USE MODD_DATA_COVER, ONLY : XDATA_LAI
 !
 USE MODI_VEGTYPE_TO_PATCH
 #ifdef MNH_MEGAN
@@ -86,9 +88,9 @@ REAL, DIMENSION(SIZE(K%XCLAY,1),IO%NPATCH) :: ZH_TREE
 REAL,DIMENSION(SIZE(K%XCLAY,1)) :: ZSILT
 REAL,DIMENSION(SIZE(K%XCLAY,1)) :: ZLAI
 !
-IF (.NOT.IO%LTR_ML) THEN
-  CALL ABOR1_SFX('INIT_MEGANN: FATAL ERROR PUT LTR_ML = T in NAM_ISBA (PREP_PGD step)')
-END IF
+!IF (.NOT.IO%LTR_ML) THEN
+!  CALL ABOR1_SFX('INIT_MEGANN: FATAL ERROR PUT LTR_ML = T in NAM_ISBA (PREP_PGD step)')
+!END IF
 !
 ALLOCATE(MGN%XPFT   (N_MGN_PFT,SIZE(K%XCLAY,1)))
 ALLOCATE(MGN%XEF    (N_MGN_SPC,SIZE(K%XCLAY,1)))
@@ -497,7 +499,25 @@ DO JSV=1, MSF%NMEGAN_NBR
   IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFBIDER")  MGN%XEF(18,:) = PMEGAN_FIELDS(:,JSV)
   IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFSTRESS") MGN%XEF(19,:) = PMEGAN_FIELDS(:,JSV)
   IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "EFOTHER")  MGN%XEF(20,:) = PMEGAN_FIELDS(:,JSV)
+!  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "LAI")      PLAI(:,1)     = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT1")     MGN%XPFT(1,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT2")     MGN%XPFT(2,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT3")     MGN%XPFT(3,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT4")     MGN%XPFT(4,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT5")     MGN%XPFT(5,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT6")     MGN%XPFT(6,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT7")     MGN%XPFT(7,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT8")     MGN%XPFT(8,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT9")     MGN%XPFT(9,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT10")    MGN%XPFT(10,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT11")    MGN%XPFT(11,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT12")    MGN%XPFT(12,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT13")    MGN%XPFT(13,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT14")    MGN%XPFT(14,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT15")    MGN%XPFT(15,:) = PMEGAN_FIELDS(:,JSV)
+  IF (TRIM(MSF%CMEGAN_NAME(JSV)) == "PFT16")    MGN%XPFT(16,:) = PMEGAN_FIELDS(:,JSV)
 END DO
+
 #endif
 !
 !---------------------------------------------------------------------------
diff --git a/src/SURFEX/init_slt.F90 b/src/SURFEX/init_slt.F90
index 2320d6517af47881244b62bf2f3fb97d39c4841e..44e1e1bf988df95211f08f3e438b918468c72617 100644
--- a/src/SURFEX/init_slt.F90
+++ b/src/SURFEX/init_slt.F90
@@ -5,7 +5,36 @@
 SUBROUTINE INIT_SLT (SLT, &
                      HPROGRAM  &! Program calling unit
        )  
-
+!     ######################################################################
+!
+!!****  *INIT_SLT* - 
+!!
+!!    PURPOSE
+!!    -------
+!
+!!**  METHOD
+!!    ------
+!!    !!
+!!    EXTERNAL
+!!    --------
+!!    
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!    REFERENCE
+!!    ---------
+!!    
+!!
+!!    AUTHOR
+!!    ------
+!!    ?
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!! 
+!------------------------------------------------------------------------------
+!
 !
 USE MODD_SLT_n, ONLY : SLT_t
 !
@@ -38,14 +67,28 @@ ALLOCATE(SLT%XEMISSIG_SLT   (NSLTMDE))
 !Get initial size distributions. This is cut and pasted
 !from dead routine dstpsd.F90
 !Check for different source parameterizations
-IF(CEMISPARAM_SLT.eq."Vig01") THEN
+
+IF (CEMISPARAM_SLT.eq."Ova14") THEN
+  NSLTMDE = 5
+!  JORDER_SLT = (/3,2,1,4,5/) !Salt modes in order of importance
   CRGUNITS   = 'NUMB'
-  XEMISRADIUS_INI_SLT(:) = (/ 0.2, 2.0, 12.  /)  ! [um]  Number median radius She84 p. 75 Table 1
-  XEMISSIG_INI_SLT   (:) = (/ 1.9, 2.0, 3.00 /)  ! [frc] Geometric standard deviation She84 p. 75 Table 1
-ELSE  ! use default of Schultz et al, 2004
-  CRGUNITS   = 'MASS'
-  XEMISRADIUS_INI_SLT(:) = 0.5*(/0.28, 2.25, 15.32/) ! [um] Mass median radius
-  XEMISSIG_INI_SLT   (:) =     (/1.59, 2.00, 2.00 /) ! [frc] Geometric standard deviation
+  XEMISRADIUS_INI_SLT = (/0.009, 0.021, 0.045, 0.115, 0.415/)
+  XEMISSIG_INI_SLT = (/1.37, 1.5, 1.42, 1.53, 1.85/)
+
+ELSE IF(CEMISPARAM_SLT.eq."Vig01") THEN
+   NSLTMDE = 5
+!  JORDER_SLT = (/3,2,1,4,5/) !Salt modes in order of importance, only three modes
+   CRGUNITS   = 'NUMB'
+   XEMISRADIUS_INI_SLT =  (/ 0.2,  2.0, 12.,0.,0. /)         ! [um]  Number median radius Viganati et al., 2001
+   XEMISSIG_INI_SLT = (/ 1.9, 2.0, 3.00,0.,0.  /)  ! [frc] Geometric standard deviation Viganati et al., 2001
+
+ELSE IF(CEMISPARAM_SLT.eq."Sch04") THEN ! use default of Schultz et al, 2004
+   NSLTMDE = 5
+!  JORDER_SLT = (/3,2,1,4,5/), only three modes
+   CRGUNITS   = 'MASS'
+   XEMISRADIUS_INI_SLT = 0.5*(/0.28, 2.25, 15.32, 0., 0./)! [um] Mass median radius
+   XEMISSIG_INI_SLT = (/1.59, 2.00, 2.00, 0., 0./) ! [frc] Geometric standard deviation
+
 ENDIF
 !
 DO JMODE=1,NSLTMDE
diff --git a/src/SURFEX/modd_megann.F90 b/src/SURFEX/modd_megann.F90
index 25702d033b72cedd26ba9206b71617c6045379fe..3f1e4e1c66ca15aaa3b303c705fc692fc5dbd184 100644
--- a/src/SURFEX/modd_megann.F90
+++ b/src/SURFEX/modd_megann.F90
@@ -26,6 +26,7 @@
 !!    -------------
 !!  16/07/2003 (P. Tulet)    restructured for externalization
 !!  24/05/2017 (J. Pianezze) adaptation for SurfEx v8.0
+!!  13/02/2019 (J. Pianezze) correction for use of MEGAN
 !------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -185,8 +186,8 @@ YMEGAN%LCONVERSION=.FALSE.
 YMEGAN%NVARS3D=0
 YMEGAN%N_SCON_SPC=0
 YMEGAN%XDROUGHT=0.
-YMEGAN%XDAILYPAR=0.
-YMEGAN%XDAILYTEMP=0.
+YMEGAN%XDAILYPAR=150.
+YMEGAN%XDAILYTEMP=293.
 YMEGAN%XMODPREC=0.
 IF (LHOOK) CALL DR_HOOK("MODD_MEGAN_n:MEGAN_INIT",1,ZHOOK_HANDLE)
 END SUBROUTINE MEGAN_INIT
diff --git a/src/SURFEX/modd_slt_surf.F90 b/src/SURFEX/modd_slt_surf.F90
index 0ee1b2b658f75509634126c22cb7e93e5e97c9ff..589cfb655881a5efb184c08463b4ba564280a427 100644
--- a/src/SURFEX/modd_slt_surf.F90
+++ b/src/SURFEX/modd_slt_surf.F90
@@ -4,13 +4,18 @@
 !SFX_LIC for details. version 1.
 MODULE MODD_SLT_SURF
 !
+! MODIFICATIONS
+!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+
+
 IMPLICIT NONE
 !
 REAL, PARAMETER  :: XDENSITY_SLT     = 2.1e3    ! [kg/m3] density of sea salt
 REAL, PARAMETER  :: XMOLARWEIGHT_SLT = 58.e-3   ! [kg/mol] molar weight sea salt
 !
-INTEGER, PARAMETER  :: NEMISMODES_MAX=3
-INTEGER, DIMENSION(NEMISMODES_MAX), PARAMETER :: JORDER_SLT=(/3,2,1/) !Dust modes in order of importance
+INTEGER, PARAMETER  :: NEMISMODES_MAX=5
+INTEGER, DIMENSION(NEMISMODES_MAX), PARAMETER :: JORDER_SLT=(/3,2,1,5,4/) !Dust modes in order of importance
 !Set emission related parameters
 REAL,DIMENSION(NEMISMODES_MAX)   :: XEMISRADIUS_INI_SLT          ! number madian radius initialization for sea salt mode (um)
 REAL,DIMENSION(NEMISMODES_MAX)   :: XEMISSIG_INI_SLT             ! dispersion initialization for sea salt mode
diff --git a/src/SURFEX/modd_sltn.F90 b/src/SURFEX/modd_sltn.F90
index 84a48d74c4c7c20da51619e79970ec1ebc6e72ad..4187b72f2450b5a50a00f2607d1ec550871476ad 100644
--- a/src/SURFEX/modd_sltn.F90
+++ b/src/SURFEX/modd_sltn.F90
@@ -10,25 +10,43 @@ MODULE MODD_SLT_n
 !
 !Author: Alf Grini / Pierre Tulet
 !
+! MODIFICATIONS
+!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+
 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
 USE PARKIND1  ,ONLY : JPRB
 !
 IMPLICIT NONE
-!
+
 TYPE SLT_t
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+!  REAL, DIMENSION(:,:,:),POINTER :: XSFSLT                      ! Sea Salt variables to be send to output
+! -- PIERRE / MARINE SSA DUST - MODIF --
   REAL,DIMENSION(:), POINTER     :: XEMISRADIUS_SLT             ! Number median radius for each source mode
   REAL,DIMENSION(:), POINTER     :: XEMISSIG_SLT                ! sigma for each source mode
 END TYPE SLT_t
+
+
+
+ CONTAINS
+
 !
-CONTAINS
-!
+
+
+
+
 SUBROUTINE SLT_INIT(YSLT)
 TYPE(SLT_t), INTENT(INOUT) :: YSLT
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK("MODD_SLT_N:SLT_INIT",0,ZHOOK_HANDLE)
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+!  NULLIFY(YSLT%XSFSLT)
+! -- PIERRE / MARINE SSA DUST - MODIF --
   NULLIFY(YSLT%XEMISRADIUS_SLT)
   NULLIFY(YSLT%XEMISSIG_SLT)
 IF (LHOOK) CALL DR_HOOK("MODD_SLT_N:SLT_INIT",1,ZHOOK_HANDLE)
 END SUBROUTINE SLT_INIT
-!
+
+
 END MODULE MODD_SLT_n
diff --git a/src/SURFEX/modn_slt.F90 b/src/SURFEX/modn_slt.F90
index 44a889c3f838d35db853431031274e7c30b52680..091c4e400dd9203e36752aa5084e7f688cc20846 100644
--- a/src/SURFEX/modn_slt.F90
+++ b/src/SURFEX/modn_slt.F90
@@ -20,10 +20,11 @@
 !!    MODIFICATIONS
 !!    -------------
 !!    Original 24/02/05
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
-USE MODD_SLT_SURF, ONLY : CEMISPARAM_SLT
+USE MODD_SLT_SURF
 !!
 !-----------------------------------------------------------------------------
 !
@@ -32,7 +33,6 @@ USE MODD_SLT_SURF, ONLY : CEMISPARAM_SLT
 IMPLICIT NONE
 SAVE
 NAMELIST /NAM_SURF_SLT/  &
-       CEMISPARAM_SLT            !Parameterization type   
-
+       CEMISPARAM_SLT, LVARSIG_SLT, LRGFIX_SLT, JPMODE_SLT            !Parameterization type
 !
 END MODULE MODN_SLT
diff --git a/src/configure b/src/configure
index ad0fab6be40d075c84bad39fbdabcdda25d303ed..9b3b03becf7cb4155f9587dbb2cde9aa3a9b5c45 100755
--- a/src/configure
+++ b/src/configure
@@ -9,12 +9,13 @@ if [ "x$XYZ" = "x" ]
 then
 # 
 export VERSION_MASTER=${VERSION_MASTER:-MNH-V5-4}
-export VERSION_BUG=${VERSION_BUG:-1}
+export VERSION_BUG=${VERSION_BUG:-2}
 export VERSION_XYZ=${VERSION_XYZ:-${VERSION_MASTER}-${VERSION_BUG}${VER_OASIS:+-${VER_OASIS}}}
 export VERSION_DATE=${VERSION_DATE:-"dd/mm/yyyy"}
 export VERSION_LIBAEC=${VERSION_LIBAEC:-"0.3.2"}
 export VERSION_HDF=${VERSION_HDF:-"1.8.20"}
 export VERSION_CDFC=${VERSION_CDFC:-"4.5.0"}
+export VERSION_CDFCXX=${VERSION_CDFCXX:-"4.2"}
 export VERSION_CDFF=${VERSION_CDFF:-"4.4.4"}
 export VERSION_GRIBAPI=${VERSION_GRIBAPI:-"1.26.0-Source"}
 export MNH_INT=${MNH_INT:-"4"}
@@ -186,10 +187,9 @@ module load ga/\${VER_GA}
                 export MVWORK=${MVWORK:-YES}
                 export VER_CDF=${VER_CDF:-CDFAUTO}
                 export MNHENV=${MNHENV:-"
-#export OBJDIR_PATH=$WORKDIR/DIR_OBJ_ADA
-export MP_MPILIB=pempi
+#export MP_MPILIB=pempi
 module purge
-module load intel/2013.1
+module load intel/2018.2
 "}
               ;;
 AIX*)
@@ -430,7 +430,7 @@ fi
 #
 ${LOCAL}/bin/eval_dollar  profile_mesonh.ihm > profile_mesonh
 chmod +x profile_mesonh
-XYZ=${ARCH}-R${MNH_REAL}I${MNH_INT}-${VERSION_XYZ}${MNH_ECRAD:+-ECRAD}${VER_USER:+-${VER_USER}}-${VER_MPI}-${OPTLEVEL}
+XYZ=${ARCH}-R${MNH_REAL}I${MNH_INT}-${VERSION_XYZ}${MNH_ECRAD:+-ECRAD}${MNH_FOREFIRE:+-FF}${VER_USER:+-${VER_USER}}-${VER_MPI}-${OPTLEVEL}
 cp profile_mesonh profile_mesonh-${XYZ}
 #
 #  Do some post-install stuff
@@ -467,6 +467,7 @@ if [ "x${VER_CDF}" == "xCDFAUTO" ] ;then
 ( cd $LOCAL/src/LIB ; [ ! -d libaec-${VERSION_LIBAEC} ] && tar xvfz libaec-${VERSION_LIBAEC}.tar.gz )
 ( cd $LOCAL/src/LIB ; [ ! -d hdf5-${VERSION_HDF} ] && tar xvfz hdf5-${VERSION_HDF}.tar.gz )
 ( cd $LOCAL/src/LIB ; [ ! -d netcdf-${VERSION_CDFC} ] && tar xvfz netcdf-${VERSION_CDFC}.tar.gz )
+( cd $LOCAL/src/LIB ; [ ! -d netcdf-cxx-${VERSION_CDFCXX} ] && tar xvfz netcdf-cxx-${VERSION_CDFCXX}.tar.gz )
 ( cd $LOCAL/src/LIB ; [ ! -d netcdf-fortran-${VERSION_CDFF} ] && tar xvfz netcdf-fortran-${VERSION_CDFF}.tar.gz )
 fi
 #
diff --git a/src/job_make_examples_IBM_ada b/src/job_make_examples_IBM_ada
index 1dda93499733b1e16b67c7c4efadd636d8e953a5..d21cac773ced02c3139245c19dec26ea2981df77 100755
--- a/src/job_make_examples_IBM_ada
+++ b/src/job_make_examples_IBM_ada
@@ -1,11 +1,11 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#MNH_LIC Copyright 1994-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.
 # Nom arbitraire du travail LoadLeveler
 # @ job_name = Sortie_examples_ada
 # Type de travail
-# @ job_type = parallel
+# @ job_type = mpich
 # Fichier de sortie standard du travail
 # @ output = $(job_name).$(jobid)
 # Fichier de sortie d'erreur du travail
@@ -14,7 +14,7 @@
 # @ wall_clock_limit = 3600
 # Nombre de processus demande (ici 1)
 # @ total_tasks = 4
-# @ environment = $DISPLAY
+# @ environment = NB_TASKS=$(total_tasks)
 # @ queue
 
 cd $LOADL_STEP_INITDIR
@@ -26,13 +26,10 @@ set -x
 
 #001_2Drelief 002_3Drelief 003_KW78 004_Reunion 007_16janvier
 
-export MONORUN="Poe -world_sizes 1 "
-export MPIRUN="Poe -world_sizes 4 "
+export MONORUN="Mpirun -np 1 "
+export MPIRUN="Mpirun -prepend-rank -np $NB_TASKS "
 export POSTRUN=" echo "
 
-export MP_MPILIB=pempi
-export MP_LABELIO=yes
-
 time make -k 001_2Drelief
 time make -k 002_3Drelief
 time make -k 003_KW78
@@ -48,4 +45,3 @@ make -k << EOF
 EOF
 #
 
-