From b0e04b95e6ef8de779c4e2e7027c80336ad1f184 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Fri, 1 Mar 2019 16:08:17 +0100
Subject: [PATCH] Soline Bielli : 01/03/2019: Sea salt update: the significant
 sea wave height now influences salt emission. The sea salt is either set to a
 default value of 2meters or read in ECMWF Grib file (if the variable exists).
 Now 5 modes are available (3 before) and the order in output is changed. The
 large-scale sea wave height from ECMWF grib is 2D. HALO2 update of the ls
 variable in modeln is not yet adapted to 2D field (it is switch off in this
 version for this variable).

---
 src/LIB/SURCOUCHE/src/mode_field.f90  |  18 +
 src/MNH/aer_monitorn.f90              |  85 ++-
 src/MNH/default_desfmn.f90            |   2 +-
 src/MNH/effic_salt.f90                |   1 +
 src/MNH/end_diag_in_run.f90           |   4 +
 src/MNH/endstep.f90                   |  25 +-
 src/MNH/ground_paramn.f90             |  14 +-
 src/MNH/ini_cpl.f90                   |  16 +-
 src/MNH/ini_diag_in_run.f90           |   7 +
 src/MNH/ini_lb.f90                    |  15 +-
 src/MNH/ini_ls.f90                    |  17 +-
 src/MNH/ini_modeln.f90                |  22 +-
 src/MNH/ini_spawn_lsn.f90             |  41 +-
 src/MNH/ini_spectren.f90              |  12 +-
 src/MNH/init_salt.f90                 |  74 ++
 src/MNH/ls_coupling.f90               |  15 +-
 src/MNH/modd_csts_salt.f90            |   5 +-
 src/MNH/modd_diag_in_run.f90          |   3 +
 src/MNH/modd_fieldn.f90               |   9 +
 src/MNH/modd_getn.f90                 |   4 +
 src/MNH/modd_lsfieldn.f90             |  10 +
 src/MNH/modd_salt.f90                 |  72 +-
 src/MNH/modd_spawn.f90                |   3 +
 src/MNH/mode_salt_psd.f90             |  37 +-
 src/MNH/mode_salt_psd_wet.f90         | 926 ++++++++++++++++++++++++++
 src/MNH/mode_saltopt.f90              |  32 +-
 src/MNH/modeln.f90                    |  20 +-
 src/MNH/modn_salt.f90                 |   3 +-
 src/MNH/prep_real_case.f90            |   4 +
 src/MNH/radiations.f90                |   5 +-
 src/MNH/read_all_data_grib_case.f90   |  64 +-
 src/MNH/read_exsegn.f90               |   9 +-
 src/MNH/read_field.f90                |  30 +-
 src/MNH/salt_filter.f90               | 188 +++++-
 src/MNH/saltlfin.f90                  | 125 +++-
 src/MNH/spawn_field2.f90              |  45 +-
 src/MNH/spawn_lsn.f90                 |  36 +-
 src/MNH/spawn_model2.f90              |  11 +-
 src/MNH/spawning.f90                  |   3 +
 src/MNH/write_lbn.f90                 |  46 +-
 src/MNH/write_lfifm1_for_diag.f90     |  18 +-
 src/MNH/write_lfin.f90                |   8 +-
 src/SURFEX/coupling_seaflux_orogn.F90 |   6 +-
 src/SURFEX/coupling_seaflux_sbln.F90  |   6 +-
 src/SURFEX/coupling_seafluxn.F90      |  58 +-
 src/SURFEX/coupling_sean.F90          |   6 +-
 src/SURFEX/coupling_sltn.F90          | 315 ++++++---
 src/SURFEX/coupling_surf_atmn.F90     |   8 +-
 src/SURFEX/default_slt.F90            |   7 +-
 src/SURFEX/init_slt.F90               |  59 +-
 src/SURFEX/modd_slt_surf.F90          |   9 +-
 src/SURFEX/modd_sltn.F90              |  26 +-
 src/SURFEX/modn_slt.F90               |   6 +-
 53 files changed, 2243 insertions(+), 347 deletions(-)
 create mode 100644 src/MNH/init_salt.f90
 create mode 100644 src/MNH/mode_salt_psd_wet.f90

diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index ff01011b6..86eb6589f 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -9,6 +9,7 @@
 !  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
 !                   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
 !-----------------------------------------------------------------
 MODULE MODE_FIELD
 !
@@ -896,6 +897,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   = 'surface_altitude'
+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'
@@ -4160,6 +4175,9 @@ IF( KFROM/=KTO) THEN
 !
 ! MODD_FIELD_n variables
 !
+! *** BEGIN SB ADD HS ***
+CALL FIND_FIELD_ID_FROM_MNHNAME('ZWS',   IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XZWS
+! *** END SB ADD HS ***
 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
diff --git a/src/MNH/aer_monitorn.f90 b/src/MNH/aer_monitorn.f90
index 245e8f672..21f1f177f 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/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 2632f9f08..9c7cbcb5b 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/effic_salt.f90 b/src/MNH/effic_salt.f90
index 71ee6dfc2..a26367896 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 139ba83be..61405af36 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 fb0bd478b..9a3da2c54 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 a492a36b3..717aa871b 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/ini_cpl.f90 b/src/MNH/ini_cpl.f90
index 5f7909787..d7dac918a 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             )
 !     #####################################################################
@@ -209,6 +211,7 @@ END MODULE MODI_INI_CPL
 !!                     (J.Escobar) 26/03/2014 bug in init of NSV_USER on RESTA case
 !!                     (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
+!!      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 2df092c1c..d44800cdc 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 087ffad67..d204ff419 100644
--- a/src/MNH/ini_lb.f90
+++ b/src/MNH/ini_lb.f90
@@ -133,6 +133,7 @@ SUBROUTINE INI_LB(TPINIFILE,OLSOURCE,KSV,                          &
 !!      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
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -900,7 +901,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
@@ -956,7 +957,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
@@ -1012,7 +1013,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
@@ -1068,7 +1069,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
@@ -1124,7 +1125,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
@@ -1180,7 +1181,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
@@ -1237,7 +1238,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_ls.f90 b/src/MNH/ini_ls.f90
index 5cf231784..4addd03ac 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_ll, 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
 !!
 !! 
 !-------------------------------------------------------------------------------
@@ -105,11 +108,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
@@ -138,11 +143,15 @@ CALL IO_READ_FIELD(TPINIFILE,'LSUM', PLSUM)
 CALL IO_READ_FIELD(TPINIFILE,'LSVM', PLSVM)
 CALL IO_READ_FIELD(TPINIFILE,'LSWM', PLSWM)
 CALL IO_READ_FIELD(TPINIFILE,'LSTHM',PLSTHM)
+CALL IO_READ_FIELD(TPINIFILE,'ZWS',PLSZWSM)
 !
 IF (HGETRVM == 'READ') THEN         ! LS-vapor                                    
   CALL IO_READ_FIELD(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 dd7d2119f..c879f7b8b 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -282,6 +282,7 @@ END MODULE MODI_INI_MODEL_n
 !  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
 !!                   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
@@ -532,6 +533,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
 !
@@ -845,6 +847,7 @@ 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) )
@@ -987,6 +990,7 @@ IF ( NRR > 0 ) THEN
 ELSE
   ALLOCATE(XLSRVM(0,0,0))
 END IF
+ALLOCATE(XLSZWSM(IIU,IJU)) ; XLSZWSM = -1.
 !
 !  lbc part
 !
@@ -1265,6 +1269,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
 !
@@ -1273,6 +1278,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
@@ -1752,7 +1758,7 @@ 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,                                        &
-                CGETTKET,CGETRVT,CGETRCT,CGETRRT,CGETRIT,CGETCIT,             &
+                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,&
@@ -1760,9 +1766,9 @@ CALL READ_FIELD(TPINIFILE,IIU,IJU,IKU,                                        &
                 NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,        &
                 XUM,XVM,XWM,XDUM,XDVM,XDWM,                                   &
                 XUT,XVT,XWT,XTHT,XPABST,XTKET,XRTKEMS,                        &
-                XRT,XSVT,XCIT,XDRYMASST,                                      &
+                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,                        &
@@ -1865,10 +1871,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)
@@ -1955,11 +1961,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
@@ -1984,8 +1992,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 8c5809786..f33f727bb 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 b932716fc..89fe2916a 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -35,6 +35,7 @@ END MODULE MODI_INI_SPECTRE_n
 !!      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
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !---------------------------------------------------------------------------------
 !
@@ -198,6 +199,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
 !
 !-------------------------------------------------------------------------------
 !
@@ -804,10 +806,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
@@ -841,11 +843,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
@@ -870,8 +874,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/init_salt.f90 b/src/MNH/init_salt.f90
new file mode 100644
index 000000000..de95ce681
--- /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/ls_coupling.f90 b/src/MNH/ls_coupling.f90
index b2d17436a..24238e398 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
 !! 
 !------------------------------------------------------------------------------
 !
@@ -228,6 +231,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
@@ -251,6 +255,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
@@ -298,7 +303,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_csts_salt.f90 b/src/MNH/modd_csts_salt.f90
index 4c985d21a..9db26edac 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 4c52ea117..b7bba80d0 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 c1a0be8f9..7a91f15cc 100644
--- a/src/MNH/modd_fieldn.f90
+++ b/src/MNH/modd_fieldn.f90
@@ -50,6 +50,7 @@
 !!                     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
 !!
 !-------------------------------------------------------------------------------
 !
@@ -81,6 +82,8 @@ TYPE FIELD_t
   REAL, DIMENSION(:,:,:), POINTER :: XRTKES=>NULL()   ! Source of kinetic energy
                                                      ! (rho e)
 !  REAL, DIMENSION(:,:,:), POINTER :: XPABST=>NULL()   ! absolute pressure at
+  REAL, DIMENSION(:,:),   POINTER :: XZWS=>NULL()    ! significant sea wave
+  REAL, DIMENSION(:,:),   POINTER :: XZWSS=>NULL()    ! significant sea wave
 !                                                     ! time t
 !  REAL, DIMENSION(:,:,:,:), POINTER :: XRT=>NULL()    ! Moist variables (rho Rn) 
 !                                                     ! at time t
@@ -114,6 +117,8 @@ REAL, DIMENSION(:,:,:), POINTER :: XRUS=>NULL(),XRVS=>NULL(),XRWS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XRUS_PRES=>NULL(),XRVS_PRES=>NULL(),XRWS_PRES=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XTHT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XRTHS=>NULL()
+REAL, DIMENSION(:,:),   POINTER :: XZWS=>NULL()
+REAL, DIMENSION(:,:),   POINTER :: XZWSS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XRTHS_CLD=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XSUPSAT=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XNACT=>NULL()
@@ -159,6 +164,8 @@ FIELD_MODEL(KFROM)%XRWS=>XRWS
 !FIELD_MODEL(KFROM)%XRVS_PRES=>XRVS_PRES !Done in FIELDLIST_GOTO_MODEL
 !FIELD_MODEL(KFROM)%XRWS_PRES=>XRWS_PRES !Done in FIELDLIST_GOTO_MODEL
 !FIELD_MODEL(KFROM)%XTHT=>XTHT !Done in FIELDLIST_GOTO_MODEL
+FIELD_MODEL(KFROM)%XZWS=>XZWS
+FIELD_MODEL(KFROM)%XZWSS=>XZWSS
 FIELD_MODEL(KFROM)%XRTHS=>XRTHS
 !FIELD_MODEL(KFROM)%XRTHS_CLD=>XRTHS_CLD !Done in FIELDLIST_GOTO_MODEL
 !FIELD_MODEL(KFROM)%XSUPSAT=>XSUPSAT !Done in FIELDLIST_GOTO_MODEL
@@ -193,6 +200,8 @@ XRWS=>FIELD_MODEL(KTO)%XRWS
 !XRUS_PRES=>FIELD_MODEL(KTO)%XRUS_PRES !Done in FIELDLIST_GOTO_MODEL
 !XRVS_PRES=>FIELD_MODEL(KTO)%XRVS_PRES !Done in FIELDLIST_GOTO_MODEL
 !XRWS_PRES=>FIELD_MODEL(KTO)%XRWS_PRES !Done in FIELDLIST_GOTO_MODEL
+XZWS=>FIELD_MODEL(KTO)%XZWS
+XZWSS=>FIELD_MODEL(KTO)%XZWSS
 !XTHT=>FIELD_MODEL(KTO)%XTHT !Done in FIELDLIST_GOTO_MODEL
 XRTHS=>FIELD_MODEL(KTO)%XRTHS
 !XRTHS_CLD=>FIELD_MODEL(KTO)%XRTHS_CLD !Done in FIELDLIST_GOTO_MODEL
diff --git a/src/MNH/modd_getn.f90 b/src/MNH/modd_getn.f90
index 7a583779d..bae3402d5 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_lsfieldn.f90 b/src/MNH/modd_lsfieldn.f90
index 208f1d4d2..6274b8dd6 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_salt.f90 b/src/MNH/modd_salt.f90
index 01f908fe1..907b95672 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 41f83c8a1..8d432e588 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/mode_salt_psd.f90 b/src/MNH/mode_salt_psd.f90
index e361c1dfa..dc5a8611e 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 000000000..cb5af52f8
--- /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 ac1b4099d..d7fd28f3f 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 a903c134f..873112354 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -254,6 +254,7 @@ END MODULE MODI_MODEL_n
 !!  Philippe Wautelet: 21/01/2019: add LIO_ALLOW_NO_BACKUP and LIO_NO_WRITE to modd_io_ll
 !                                  to allow to disable writes (for bench purposes)
 !!                   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
@@ -497,6 +498,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
@@ -672,6 +674,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
@@ -701,6 +704,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
@@ -798,11 +802,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
@@ -817,8 +823,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
     !
@@ -1408,10 +1414,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           )
       !
@@ -1978,16 +1984,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 92fa84998..0b7e67447 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 a11651b58..b4ea670d8 100644
--- a/src/MNH/prep_real_case.f90
+++ b/src/MNH/prep_real_case.f90
@@ -379,6 +379,7 @@
 !!    P.Wautelet : 08/07/2016 : removed MNH_NCWRIT define
 !!     B.VIE 2016 : LIMA
 !!  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
@@ -688,6 +689,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 2bec821d7..807b5e1c6 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/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index 8f4e4835a..ade924ead 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
@@ -152,6 +153,7 @@ USE MODI_CH_AER_INIT_SOA
 USE MODI_INI_CTURB
 USE MODI_CH_OPEN_INPUT
 !
+USE MODD_FIELD_n, ONLY: XZWS
 USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_CONF
 USE MODD_CONF_n
@@ -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
 !---------------------------------------------------------------------------------------
@@ -1882,14 +1934,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
       ! 
@@ -1982,16 +2035,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_exsegn.f90 b/src/MNH/read_exsegn.f90
index e8f0e9d73..83d45636d 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
@@ -1739,6 +1740,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
@@ -1746,6 +1748,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
 
@@ -1770,9 +1773,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     
@@ -1806,7 +1809,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 cba6d68cd..15878a3b6 100644
--- a/src/MNH/read_field.f90
+++ b/src/MNH/read_field.f90
@@ -9,7 +9,7 @@
 INTERFACE 
 !
       SUBROUTINE READ_FIELD(TPINIFILE,KIU,KJU,KKU,                           &
-            HGETTKET,HGETRVT,HGETRCT,HGETRRT,HGETRIT,HGETCIT,                &
+            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,  &
@@ -17,9 +17,9 @@ INTERFACE
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
             PUM,PVM,PWM,PDUM,PDVM,PDWM,                                      &
             PUT,PVT,PWT,PTHT,PPABST,PTKET,PRTKEMS,                           &
-            PRT,PSVT,PCIT,PDRYMASST,                                         &
+            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,                    &
@@ -41,7 +41,7 @@ INTEGER,                   INTENT(IN)  :: KIU, KJU, KKU
 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,6 +72,7 @@ REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PRTKEMS         ! tke adv source
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABST          ! pressure at t
 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
@@ -85,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
@@ -122,7 +124,7 @@ END MODULE MODI_READ_FIELD
 !
 !     ########################################################################
       SUBROUTINE READ_FIELD(TPINIFILE,KIU,KJU,KKU,                           &
-            HGETTKET,HGETRVT,HGETRCT,HGETRRT,HGETRIT,HGETCIT,                &
+            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,  &
@@ -130,9 +132,9 @@ END MODULE MODI_READ_FIELD
             KSIZELBXR_ll,KSIZELBYR_ll,KSIZELBXSV_ll,KSIZELBYSV_ll,           &
             PUM,PVM,PWM,PDUM,PDVM,PDWM,                                      &
             PUT,PVT,PWT,PTHT,PPABST,PTKET,PRTKEMS,                           &
-            PRT,PSVT,PCIT,PDRYMASST,                                         &
+            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,                    &
@@ -236,6 +238,7 @@ END MODULE MODI_READ_FIELD
 !!          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
@@ -296,7 +299,7 @@ INTEGER,                   INTENT(IN)  :: KIU, KJU, KKU
 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
@@ -329,6 +332,7 @@ REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PRTKEMS         ! tke adv source
 REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PPABST          ! pressure at t
 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
@@ -341,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
@@ -456,6 +461,13 @@ SELECT CASE(HGETTKET)
     PRTKEMS(:,:,:) = 0.
 END SELECT 
 !
+SELECT CASE(HGETZWS)
+  CASE('READ')
+  CALL IO_READ_FIELD(TPINIFILE,'ZWS',PZWS)
+  CASE('INIT')
+  PZWS(:,:)=0.
+END SELECT 
+!
 SELECT CASE(HGETRVT)             ! vapor
   CASE('READ')
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
@@ -1193,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/salt_filter.f90 b/src/MNH/salt_filter.f90
index bff76dfe9..bc40e8891 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 c3a2650b0..3b637b278 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 b083a03d6..b49d86cc6 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_READ_FIELD(TPSONFILE,'WT',ZWORK3D) ! W wind component at time t
   PWT(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
+  CALL IO_READ_FIELD(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 74f43ed3e..b7e8c6605 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 d920dbc0c..2811911fc 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -191,6 +191,7 @@ END MODULE MODI_SPAWN_MODEL2
 !!      Modification    01/2016  (JP Pinty) Add LIMA
 !!                    10/2016 (C.Lac) Add droplet deposition
 !!  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
@@ -703,6 +704,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))
@@ -1117,18 +1120,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 7ab352665..04eda8bb6 100644
--- a/src/MNH/spawning.f90
+++ b/src/MNH/spawning.f90
@@ -74,6 +74,7 @@
 !!      J.Escobar : 19/04/2016 : Pb IOZ/NETCDF , missing OPARALLELIO=.FALSE. for PGD files
 !!  06/2016     (G.Delautier) phasage surfex 8
 !!  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
@@ -292,12 +293,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 b4044c86b..0334fe22c 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_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90
index 188a9f0c6..235aa1ec2 100644
--- a/src/MNH/write_lfifm1_for_diag.f90
+++ b/src/MNH/write_lfifm1_for_diag.f90
@@ -143,6 +143,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG
 !!       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
@@ -430,6 +431,7 @@ CALL IO_WRITE_FIELD(TPFILE,'ZHAT',XZHAT)
 CALL IO_WRITE_FIELD(TPFILE,'ZTOP',XZTOP)
 !
 CALL IO_WRITE_FIELD(TPFILE,'ZS',   XZS)
+CALL IO_WRITE_FIELD(TPFILE,'ZWS',  XZWS)
 CALL IO_WRITE_FIELD(TPFILE,'ZSMT', XZSMT)
 CALL IO_WRITE_FIELD(TPFILE,'SLEVE',LSLEVE)
 !
@@ -1529,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_WRITE_FIELD(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))
@@ -1707,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_WRITE_FIELD(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 7d7b49854..6b6eb5b18 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -170,6 +170,7 @@ END MODULE MODI_WRITE_LFIFM_n
 !!       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_WRITE_FIELD(TPFILE,'ZS',   XZS)
+IF(ASSOCIATED(XZWS)) THEN
+  CALL IO_WRITE_FIELD(TPFILE,'ZWS',  XZWS)
+END IF
 CALL IO_WRITE_FIELD(TPFILE,'ZSMT', XZSMT)
 CALL IO_WRITE_FIELD(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.&
diff --git a/src/SURFEX/coupling_seaflux_orogn.F90 b/src/SURFEX/coupling_seaflux_orogn.F90
index 71b257f9f..5d222e848 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 857f16473..53aa72d42 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 5ea7b516c..f7fc56d80 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 97a8b1f7c..ca4ae2081 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 7e66f3fa5..284fc0935 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 9ee9651c2..9a52eed46 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_slt.F90 b/src/SURFEX/default_slt.F90
index e4f99f54a..ca96f03f9 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/init_slt.F90 b/src/SURFEX/init_slt.F90
index 2320d6517..44e1e1bf9 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_slt_surf.F90 b/src/SURFEX/modd_slt_surf.F90
index 0ee1b2b65..589cfb655 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 84a48d74c..4187b72f2 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 44a889c3f..091c4e400 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
-- 
GitLab