diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index ff01011b61356a50b1bc7bade6b190141bcf930f..86eb6589f4c65e4b1ee9cf50ae70b63835889dcf 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 245e8f67283a5e9db1824466f63025377bc5678d..21f1f177fdb72649cc8f5074726840a36ea06626 100644
--- a/src/MNH/aer_monitorn.f90
+++ b/src/MNH/aer_monitorn.f90
@@ -72,7 +72,8 @@ END MODULE MODI_AER_MONITOR_n
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!
+!
+!!    Bielli S. (02/2019) : Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!    EXTERNAL
 !!    --------
 !
@@ -112,7 +113,7 @@ USE MODD_LBC_n, ONLY: CLBCX, &!X-direction LBC type at left(1)
                               ! and right(2) boundaries
 USE MODD_CLOUDPAR_n, ONLY: NSPLITR  ! Nb of required small time step integration
                                     ! for rain sedimentation computation
-USE MODD_CONF,      ONLY: L1D, L2D
+USE MODD_CONF,      ONLY: L1D, L2D, NVERB
 USE MODD_CONF_n,    ONLY: LUSERC,&    ! Logical to use clouds
                           LUSERV,&    ! Logical to use wapor water
                           LUSERR,&    ! Logical to use rain water
@@ -185,9 +186,14 @@ IKE = IKU - JPVEXT
 !
 !*       1.2   calculate timestep variables
 !
+! ++ JORIS DEBUG ++
+IF (NVERB == 10) WRITE(*,*) 'dans aer_monitorn.f90 1.'
+! -- JORIS DEBUG --
 !
-  XRSVS(:,:,:,NSV_DSTBEG:NSV_DSTEND) = &
-                      MAX(XRSVS(:,:,:,NSV_DSTBEG:NSV_DSTEND), 0.)  
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+!  XRSVS(:,:,:,NSV_DSTBEG:NSV_DSTEND) = &
+!                      MAX(XRSVS(:,:,:,NSV_DSTBEG:NSV_DSTEND), 0.)  
+! -- PIERRE / MARINE SSA DUST - MODIF --
 !
 !*       2.   Sedimentation of aerosols 
 !              ------------------------
@@ -198,8 +204,11 @@ IF (LDUST.AND.LSEDIMDUST) THEN
   DO JSV = NSV_DSTBEG, NSV_DSTEND
     ZSVT(:,:,:,JSV-NSV_DSTBEG+1) = XRSVS(:,:,:,JSV) * PTSTEP / XRHODJ(:,:,:)
   ENDDO
-  CALL DUST_FILTER(ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,:),&
-                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE)) 
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+ CALL DUST_FILTER(ZSVT,XRHODREF)
+!  CALL DUST_FILTER(ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,:),&
+!                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE)) 
+! -- PIERRE / MARINE SSA DUST - MODIF --
   CALL SEDIM_DUST(XTHT(IIB:IIE,IJB:IJE,IKB:IKE), PTSTEP,&
                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE), &
                   XPABST(IIB:IIE,IJB:IJE,IKB:IKE), &
@@ -222,14 +231,17 @@ IF ((LSALT).AND.(LSEDIMSALT)) THEN
     ZSVT(:,:,:,JSV-NSV_SLTBEG+1) = XRSVS(:,:,:,JSV) * PTSTEP / XRHODJ(:,:,:)
   ENDDO
 
+! ++ JORIS DEBUG ++
   CALL SALT_FILTER(ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,:),&
-                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE)) 
+                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE))
+! 
   CALL SEDIM_SALT(XTHT(IIB:IIE,IJB:IJE,IKB:IKE),PTSTEP,&
                   XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE), &
                   XPABST(IIB:IIE,IJB:IJE,IKB:IKE), &
                   XZZ(IIB:IIE,IJB:IJE,IKB:IKE+1),    &
                   ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,:))  !ppp (concentration)
-!
+! -- JORIS DEBUG --
+
 DO JSV = NSV_SLTBEG, NSV_SLTEND
  XRSVS(IIB:IIE,IJB:IJE,IKB:IKE,JSV) = &
              ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,JSV-NSV_SLTBEG+1)  *&
@@ -365,7 +377,26 @@ SELECT CASE (CCLOUD)
                               ZVMASSMIN(IIB:IIE,IJB:IJE,IKB:IKE,:),&
                               PCCT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_C2R2BEG+1),&
                               PCRT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_C2R2BEG+2) )
-
+!++th++ 05/05/17 ajout LIMA
+CASE ('LIMA')
+  CALL AER_WET_DEP_KMT_WARM  (NSPLITR, PTSTEP,                     &
+                              XZZ(IIB:IIE,IJB:IJE,IKB:IKE),        &
+                              XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE),   &
+                              XRT(IIB:IIE,IJB:IJE,IKB:IKE,2),      &
+                              XRT(IIB:IIE,IJB:IJE,IKB:IKE,3),      &
+                              ZRCS(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              ZRRS(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              ZSVDST(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
+                              XTHT(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              XPABST(IIB:IIE,IJB:IJE,IKB:IKE),     &
+                              ZRGDST(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
+                              XEVAP3D(IIB:IIE,IJB:IJE,IKB:IKE),    &
+                              NMODE_DST,                           &
+                              ZDENSITY(IIB:IIE,IJB:IJE,IKB:IKE,:), &
+                              ZVMASSMIN(IIB:IIE,IJB:IJE,IKB:IKE,:),&
+                              PCCT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_LIMA_NC),&
+                              PCRT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_LIMA_NR) )
+!--th--
 END SELECT
 
 !     3.5 Compute return to moment vector
@@ -441,25 +472,25 @@ ZDENSITY(:,:,:,:) = XDENSITY_SALT
 
 !
 !     4.1 Minimum mass to transfer between dry mass or in-cloud droplets
-
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
 DO JN=1,NMODE_SLT
   IMODEIDX = JPSALTORDER(JN)
    IF (CRGUNITD=="MASS") THEN
-    ZINIRADIUS(JN) = XINIRADIUS(IMODEIDX) * EXP(-3.*(LOG(XINISIG(IMODEIDX)))**2)
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
    ELSE
-    ZINIRADIUS(JN) = XINIRADIUS(IMODEIDX)
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
    END IF
    IF (LVARSIG) THEN
-    ZSIGMIN = XSIGMIN
+    ZSIGMIN = XSIGMIN_SLT
    ELSE
-    ZSIGMIN = XINISIG(IMODEIDX)
+    ZSIGMIN = XINISIG_SLT(IMODEIDX)
    ENDIF
-   ZMASSMIN(JN) = XN0MIN(IMODEIDX) * (ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(ZSIGMIN)**2)
+   ZMASSMIN(JN) = XN0MIN_SLT(IMODEIDX) * (ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(ZSIGMIN)**2)
 ! volume/um3 =>  #/molec_{air}
    ZVMASSMIN(:,:,:,JN)=  ZMASSMIN(JN) * XMD * XPI * 4./3. * XDENSITY_SALT  / &
-                 (XMOLARWEIGHT_SALT*XM3TOUM3*XRHODREF(:,:,:))
+                 (XMOLARWEIGHT_SALT*XM3TOUM3_SALT*XRHODREF(:,:,:))
 ENDDO
-  
+! -- PIERRE / MARINE SSA DUST - MODIF --
 !
 
 !     4.2 Derive moment from aerosol moments sources
@@ -536,7 +567,25 @@ SELECT CASE (CCLOUD)
                               ZVMASSMIN(IIB:IIE,IJB:IJE,IKB:IKE,:),&
                               PCCT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_C2R2BEG+1),&
                               PCRT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_C2R2BEG+2) )
-
+!++th++05/05/17 ajout LIMA
+  CALL AER_WET_DEP_KMT_WARM  (NSPLITR, PTSTEP,                     &
+                              XZZ(IIB:IIE,IJB:IJE,IKB:IKE),        &
+                              XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE),   &
+                              XRT(IIB:IIE,IJB:IJE,IKB:IKE,2),      &
+                              XRT(IIB:IIE,IJB:IJE,IKB:IKE,3),      &
+                              ZRCS(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              ZRRS(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              ZSVSLT(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
+                              XTHT(IIB:IIE,IJB:IJE,IKB:IKE),       &
+                              XPABST(IIB:IIE,IJB:IJE,IKB:IKE),     &
+                              ZRGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
+                              XEVAP3D(IIB:IIE,IJB:IJE,IKB:IKE),    &
+                              NMODE_SLT,                           &
+                              ZDENSITY(IIB:IIE,IJB:IJE,IKB:IKE,:), &
+                              ZVMASSMIN(IIB:IIE,IJB:IJE,IKB:IKE,:),&
+                              PCCT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_LIMA_NC),&
+                              PCRT=ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,NSV_LIMA_NR) )
+!--th--
 END SELECT
 
 !     4.5 Compute return to moment vector
diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 2632f9f08f9de9c63dc9dd42533becb31d1c5b93..9c7cbcb5bc7fc9f526fb80dcdc91661a9bbe26ca 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -227,6 +227,7 @@ END MODULE MODI_DEFAULT_DESFM_n
 !!                   01/2018 (J.Colin) add VISC and DRAG
 !!                   07/2017 (V. Vionnet) add blowing snow variables
 !!                   01/2019 (R. Honnert) add reduction of the mass-flux surface closure with the resolution
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1371,7 +1372,6 @@ IF (KMI == 1) THEN ! other values initialized in modd_dust
   LDEPOS_DST(:) = .FALSE.
 
   LSALT      = .FALSE.
-  NMODE_SLT  = 3
   LVARSIG_SLT= .FALSE.
   LSEDIMSALT = .FALSE.
   LDEPOS_SLT(:)     = .FALSE.
diff --git a/src/MNH/effic_salt.f90 b/src/MNH/effic_salt.f90
index 71ee6dfc2ef9b7c6e9d84509b606551e4f30499d..a2636789606306e49d88e71ac4d74e2d72ef3c1a 100644
--- a/src/MNH/effic_salt.f90
+++ b/src/MNH/effic_salt.f90
@@ -57,6 +57,7 @@ END MODULE MODI_EFFIC_SALT
 !!    -------------
 !!   Original
 !!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 ! Entry variables:
 !
 ! PSVTS(INOUT)       -Array of moments included in PSVTS
diff --git a/src/MNH/end_diag_in_run.f90 b/src/MNH/end_diag_in_run.f90
index 139ba83bee5bc12af51fbb463a93fab6ad36a449..61405af363c8688e00877d1e7b5e1334eb17c292 100644
--- a/src/MNH/end_diag_in_run.f90
+++ b/src/MNH/end_diag_in_run.f90
@@ -58,6 +58,7 @@ SUBROUTINE END_DIAG_IN_RUN
 !!     Original 11/2003
 !!
 !!                   02/2018 Q.Libois ECRAD
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !! --------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
@@ -92,6 +93,9 @@ DEALLOCATE(XCURRENT_MER10M)! meridian wind at 10m
 DEALLOCATE(XCURRENT_DSTAOD)! dust aerosol optical depth
 DEALLOCATE(XCURRENT_SFCO2   ) ! CO2 Surface flux
 DEALLOCATE(XCURRENT_TKE_DISS) ! Tke dissipation rate
+DEALLOCATE(XCURRENT_SLTAOD)   ! Salt aerosol optical depth
+DEALLOCATE(XCURRENT_ZWS   )   ! Significant height of waves
+
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/endstep.f90 b/src/MNH/endstep.f90
index fb0bd478bdabc82aefe0b8e7e7165a50758a34cb..9a3da2c5443fb7d07a7e43c62891df3b1d1e7ea9 100644
--- a/src/MNH/endstep.f90
+++ b/src/MNH/endstep.f90
@@ -18,16 +18,16 @@ INTERFACE
                                  PUS,PVS,PWS,PDRYMASSS,                    &
                                  PTHS,PRS,PTKES,PSVS,                      &
                                  PLSUS,PLSVS,PLSWS,                        &
-                                 PLSTHS,PLSRVS,                            &
+                                 PLSTHS,PLSRVS,PLSZWSS,                    &
                                  PLBXUS,PLBXVS,PLBXWS,                     &
                                  PLBXTHS,PLBXRS,PLBXTKES,PLBXSVS,          &
                                  PLBYUS,PLBYVS,PLBYWS,                     &
                                  PLBYTHS,PLBYRS,PLBYTKES,PLBYSVS,          &
-                                 PUM,PVM,PWM,                              &
+                                 PUM,PVM,PWM,PZWS,                         &
                                  PUT,PVT,PWT,PPABST,PDRYMASST,             &
                                  PTHT,PRT,PTHM,PRCM,PPABSM,PTKET,PSVT,     &
                                  PLSUM,PLSVM,PLSWM,                        &
-                                 PLSTHM,PLSRVM,                            &
+                                 PLSTHM,PLSRVM,PLSZWSM,                    &
                                  PLBXUM,PLBXVM,PLBXWM,                     &
                                  PLBXTHM,PLBXRM,PLBXTKEM,PLBXSVM,          &
                                  PLBYUM,PLBYVM,PLBYWM,                     &
@@ -51,6 +51,7 @@ REAL,                     INTENT(IN) :: PDRYMASSS           !   Md source
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLSUS,PLSVS,PLSWS,& ! Large Scale 
                                         PLSTHS,PLSRVS       ! fields tendencies
 !
+REAL, DIMENSION(:,:),     INTENT(IN) :: PLSZWSS               ! Large Scale fields tendencies
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLBXUS,PLBXVS,PLBXWS,  &  !
                                         PLBXTHS,PLBXTKES          ! LBX tendancy 
 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PLBXRS,PLBXSVS            ! 
@@ -68,6 +69,7 @@ REAL,                    INTENT(INOUT):: PDRYMASST                !
 !
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLSUM,PLSVM,PLSWM,& ! Large Scale fields
                                          PLSTHM,PLSRVM       !     at t-dt
+REAL, DIMENSION(:,:),   INTENT(INOUT) :: PLSZWSM  ! Large Scale fields at t-dt
 !
 REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBXUM,PLBXVM,PLBXWM,   & ! 
                                           PLBXTHM,PLBXTKEM          ! LBX fields
@@ -76,6 +78,7 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBXRM,PLBXSVM            !
 REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBYUM,PLBYVM,PLBYWM,   & ! 
                                           PLBYTHM,PLBYTKEM          ! LBY fields
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBYRM,PLBYSVM            ! 
+REAL, DIMENSION(:,:),     INTENT(INOUT) :: PZWS                  ! significant wave height
 !
 END SUBROUTINE ENDSTEP
 !
@@ -91,16 +94,16 @@ END MODULE MODI_ENDSTEP
                                  PUS,PVS,PWS,PDRYMASSS,                    &
                                  PTHS,PRS,PTKES,PSVS,                      &
                                  PLSUS,PLSVS,PLSWS,                        &
-                                 PLSTHS,PLSRVS,                            &
+                                 PLSTHS,PLSRVS,PLSZWSS,                    &
                                  PLBXUS,PLBXVS,PLBXWS,                     &
                                  PLBXTHS,PLBXRS,PLBXTKES,PLBXSVS,          &
                                  PLBYUS,PLBYVS,PLBYWS,                     &
                                  PLBYTHS,PLBYRS,PLBYTKES,PLBYSVS,          &
-                                 PUM,PVM,PWM,                              &
+                                 PUM,PVM,PWM,PZWS,                         &
                                  PUT,PVT,PWT,PPABST,PDRYMASST,             &
                                  PTHT,PRT,PTHM,PRCM,PPABSM,PTKET,PSVT,     &
                                  PLSUM,PLSVM,PLSWM,                        &
-                                 PLSTHM,PLSRVM,                            &
+                                 PLSTHM,PLSRVM,PLSZWSM,                    &
                                  PLBXUM,PLBXVM,PLBXWM,                     &
                                  PLBXTHM,PLBXRM,PLBXTKEM,PLBXSVM,          &
                                  PLBYUM,PLBYVM,PLBYWM,                     &
@@ -192,6 +195,7 @@ END MODULE MODI_ENDSTEP
 !!                 04/2013  (C.Lac)       FIT for all the variables     
 !!                 04/2014  (C.Lac)       Check on the positivity of PSVT
 !!                 J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
+!!                 02/2019  (S. Bielli)  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !------------------------------------------------------------------------------
 !
@@ -241,6 +245,7 @@ REAL,                     INTENT(IN) :: PDRYMASSS           !   Md source
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLSUS,PLSVS,PLSWS,& !    Large Scale 
                                         PLSTHS,PLSRVS       ! fields tendencies
+REAL, DIMENSION(:,:),     INTENT(IN) :: PLSZWSS               ! Large Scale fields tendencies
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN) :: PLBXUS,PLBXVS,PLBXWS,  &  !
                                         PLBXTHS,PLBXTKES          ! LBX tendancy 
@@ -260,6 +265,8 @@ REAL,                    INTENT(INOUT):: PDRYMASST                !
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLSUM,PLSVM,PLSWM,& ! Large Scale fields
                                          PLSTHM,PLSRVM       !     at t-dt
 !
+REAL, DIMENSION(:,:),   INTENT(INOUT) :: PLSZWSM  ! Large Scale fields at t-dt
+!
 REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBXUM,PLBXVM,PLBXWM,   & ! 
                                           PLBXTHM,PLBXTKEM          ! LBX fields
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBXRM,PLBXSVM            !
@@ -268,6 +275,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PLBYUM,PLBYVM,PLBYWM,   & !
                                           PLBYTHM,PLBYTKEM          ! LBY fields
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PLBYRM,PLBYSVM            !   
 !
+REAL, DIMENSION(:,:),     INTENT(INOUT) :: PZWS                  ! significant wave height
 !
 !*      0.2  DECLARATIONS OF LOCAL VARIABLES
 !
@@ -383,6 +391,11 @@ ENDIF
 IF (SIZE(PLSRVS,1) /= 0) THEN
   PLSRVM(:,:,:) = MAX( PLSRVM(:,:,:) + PTSTEP * PLSRVS(:,:,:) , 0.)
 ENDIF
+
+IF (SIZE(PLSZWSS,1) /= 0) THEN
+  PLSZWSM(:,:) = MAX( PLSZWSM(:,:) + PTSTEP * PLSZWSS(:,:) , 0.)
+  PZWS(:,:) = PLSZWSM(:,:)
+ENDIF
 !
 !------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90
index a492a36b3bdc9c765346897f749a57689d8e21db..717aa871ba524e674bf2baffa19ea52659e6d26c 100644
--- a/src/MNH/ground_paramn.f90
+++ b/src/MNH/ground_paramn.f90
@@ -109,6 +109,7 @@ END MODULE MODI_GROUND_PARAM_n
 !!     (P.Wautelet) 28/03/2018 replace TEMPORAL_DIST by DATETIME_DISTANCE
 
 !!     (V. Vionnet)           18/07/2017 add coupling for blowing snow module 
+!!     (Bielli S.) 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -128,7 +129,7 @@ USE MODD_CST,        ONLY : XP00, XCPD, XRD, XRV,XRHOLW, XDAY, XPI, XLVTT, XMD,
 USE MODD_PARAMETERS, ONLY : JPVEXT, XUNDEF
 USE MODD_DYN_n,      ONLY : XTSTEP
 USE MODD_CH_MNHC_n,  ONLY : LUSECHEM
-USE MODD_FIELD_n,    ONLY : XUT, XVT, XWT, XTHT, XRT, XPABST, XSVT, XTKET
+USE MODD_FIELD_n,    ONLY : XUT, XVT, XWT, XTHT, XRT, XPABST, XSVT, XTKET, XZWS
 USE MODD_METRICS_n,  ONLY : XDXX, XDYY, XDZZ
 USE MODD_DIM_n,      ONLY : NKMAX
 USE MODD_GRID_n,     ONLY : XLON, XZZ, XDIRCOSXW, XDIRCOSYW, XDIRCOSZW, &
@@ -307,6 +308,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_DIR_SW   ! direct incoming shortwave
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SCA_SW   ! diffuse incoming shortwave
 REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PS       ! surface pressure
 REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PA       ! pressure at first atmospheric level
+REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZWS      ! significant wave height (m)
 
 REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFTQ     ! water vapor flux
 REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFTH     ! potential temperature flux
@@ -594,7 +596,7 @@ CALL COUPLING_SURF_ATM_n(YSURF_CUR,'MESONH', 'E',ZTIMEC,
                ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV,                           &
                ZP_TSRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H, ZP_QSURF,  &
                ZP_PEW_A_COEF, ZP_PEW_B_COEF,                                                  &
-               ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,                    &
+               ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,ZP_ZWS,             &
                'OK'                                                                           )
 !
 #ifdef CPLOASIS
@@ -751,12 +753,14 @@ IF (LDIAG_IN_RUN) THEN
   XCURRENT_SWDIFF(:,:) = SUM(XSCAFLASWD(:,:,:),DIM=3) 
   XCURRENT_SFCO2(:,:) = ZSFCO2(:,:)
   XCURRENT_DSTAOD(:,:)=0.0
+  XCURRENT_SLTAOD(:,:)=0.0
   IF (CRAD=='ECMW') THEN
   DO JK=IKB,IKE
     IKRAD = JK - 1 
     DO JJ=IJB,IJE
        DO JI=IIB,IIE
          XCURRENT_DSTAOD(JI,JJ)=XCURRENT_DSTAOD(JI,JJ)+XAER(JI,JJ,IKRAD,3)
+         XCURRENT_SLTAOD(JI,JJ)=XCURRENT_SLTAOD(JI,JJ)+XAER(JI,JJ,IKRAD,2)
        ENDDO
     ENDDO
   ENDDO
@@ -777,6 +781,8 @@ IF (LDIAG_IN_RUN) THEN
   CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_ZON10M)
   CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_MER10M) 
   CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_DSTAOD)
+  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_SLTAOD)
+  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_ZWS )
   CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_SFCO2 )
 
   CALL UPDATE_HALO_ll(TZFIELDSURF_ll,IINFO_ll)
@@ -815,6 +821,7 @@ ALLOCATE(ZP_DIR_SW  (KDIM1D,SIZE(XDIRSRFSWD,3)))
 ALLOCATE(ZP_SCA_SW  (KDIM1D,SIZE(XSCAFLASWD,3)))
 ALLOCATE(ZP_PS      (KDIM1D))
 ALLOCATE(ZP_PA      (KDIM1D))
+ALLOCATE(ZP_ZWS     (KDIM1D))
 
 ALLOCATE(ZP_SFTQ    (KDIM1D))
 ALLOCATE(ZP_SFTH    (KDIM1D))
@@ -861,6 +868,7 @@ ZP_CO2(:)         = RESHAPE(ZCO2(IIB:IIE,IJB:IJE),         ISHAPE_1)
 ZP_SNOW(:)        = RESHAPE(ZSNOW(IIB:IIE,IJB:IJE),        ISHAPE_1)
 ZP_RAIN(:)        = RESHAPE(ZRAIN(IIB:IIE,IJB:IJE),        ISHAPE_1)
 ZP_ZREF(:)        = RESHAPE(ZZREF(IIB:IIE,IJB:IJE),        ISHAPE_1)
+ZP_ZWS(:)         = RESHAPE(XZWS(IIB:IIE,IJB:IJE),         ISHAPE_1)
 
 DO JLAYER=1,NSV
   ZP_SV(:,JLAYER) = RESHAPE(XSVT(IIB:IIE,IJB:IJE,IKB,JLAYER), ISHAPE_1)
@@ -961,6 +969,7 @@ IF (LDIAG_IN_RUN) THEN
   XCURRENT_HU2M    (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_HU2M(:),   ISHAPE_2)
   XCURRENT_ZON10M  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_ZON10M(:), ISHAPE_2)
   XCURRENT_MER10M  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_MER10M(:), ISHAPE_2)
+  XCURRENT_ZWS  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_ZWS(:), ISHAPE_2)
 ENDIF
 !
 DO JLAYER=1,SIZE(PDIR_ALB,3)
@@ -987,6 +996,7 @@ DEALLOCATE(ZP_DIR_SW  )
 DEALLOCATE(ZP_SCA_SW  )
 DEALLOCATE(ZP_PS      )
 DEALLOCATE(ZP_PA      )
+DEALLOCATE(ZP_ZWS     )
 
 DEALLOCATE(ZP_SFTQ    )
 DEALLOCATE(ZP_SFTH    )
diff --git a/src/MNH/ini_cpl.f90 b/src/MNH/ini_cpl.f90
index 5f7909787d20886c40be811715f3efb431fa15a4..d7dac918ae716215f9d5e9fedc996fb47b7464e2 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 2df092c1c83f13ae1e26a1cc14c9d704603156e5..d44800cdcd9db3fe83ddd67555e70ae68b186440 100644
--- a/src/MNH/ini_diag_in_run.f90
+++ b/src/MNH/ini_diag_in_run.f90
@@ -63,6 +63,7 @@ END MODULE MODI_INI_DIAG_IN_RUN
 !!    -------------
 !!     Original 11/2003
 !!                   02/2018 Q.Libois ECRAD
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -113,6 +114,8 @@ IF (LDIAG_IN_RUN) THEN
   ALLOCATE(XCURRENT_DSTAOD(KIU,KJU))! dust aerosol optical depth
   ALLOCATE(XCURRENT_SFCO2 (KIU,KJU))! CO2 Surface flux
   ALLOCATE(XCURRENT_TKE_DISS(KIU,KJU,KKU)) ! Tke dissipation rate
+  ALLOCATE(XCURRENT_SLTAOD(KIU,KJU))! Salt aerosol optical depth
+  ALLOCATE(XCURRENT_ZWS(KIU,KJU)) ! Significant height of waves
   !
   !
   XCURRENT_RN    = XUNDEF
@@ -134,6 +137,8 @@ IF (LDIAG_IN_RUN) THEN
   XCURRENT_DSTAOD= XUNDEF
   XCURRENT_SFCO2 = XUNDEF
   XCURRENT_TKE_DISS = XUNDEF
+  XCURRENT_SLTAOD= XUNDEF
+  XCURRENT_ZWS = XUNDEF
 ELSE
   ALLOCATE(XCURRENT_RN    (0,0))! net radiation
   ALLOCATE(XCURRENT_H     (0,0))! sensible heat flux
@@ -154,6 +159,8 @@ ELSE
   ALLOCATE(XCURRENT_DSTAOD(0,0))! dust aerosol optical depth
   ALLOCATE(XCURRENT_SFCO2 (0,0))! CO2 Surface flux
   ALLOCATE(XCURRENT_TKE_DISS(0,0,0)) ! Tke dissipation rate
+  ALLOCATE(XCURRENT_SLTAOD(0,0))! Salt aerosol optical depth
+  ALLOCATE(XCURRENT_ZWS(0,0))! Significant height of waves
 END IF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/ini_lb.f90 b/src/MNH/ini_lb.f90
index 087ffad6779d3f8a8d1e0968c9c8bc04edc5a878..d204ff419e4b1e95f06c122e62ce9f78c31575ef 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 5cf2317848635d0bd4a48ae78935e2f84b5f579f..4addd03ac9dad7bfe05a215c7a5e6c32fc627926 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 dd7d2119fc914b868c71ea58e284b70296a34796..c879f7b8bf1b78a3b6e9d76c013582cfa413c1c0 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 8c580978621c68922036a3f52244a5b3f40c280f..f33f727bbc247a84af9b5ae3934f0e8de1157b72 100644
--- a/src/MNH/ini_spawn_lsn.f90
+++ b/src/MNH/ini_spawn_lsn.f90
@@ -19,8 +19,8 @@ INTERFACE
                     KDXRATIO,KDYRATIO,              &
                     HLBCX,HLBCY,PZZ,PZHAT,                                &
                     OSLEVE,PLEN1,PLEN2,                                   &
-                      PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                    &
-                      PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,                    &
+                      PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,            &
+                      PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PLSZWSS,            &
                       KKLIN_LBXU,PCOEFLIN_LBXU,KKLIN_LBYU,PCOEFLIN_LBYU,  &
                       KKLIN_LBXV,PCOEFLIN_LBXV,KKLIN_LBYV,PCOEFLIN_LBYV,  &
                       KKLIN_LBXW,PCOEFLIN_LBXW,KKLIN_LBYW,PCOEFLIN_LBYW,  &
@@ -48,8 +48,10 @@ CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
 !
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSUM,PLSVM,PLSWM ! Large Scale fields
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSTHM, PLSRVM    ! at t-dt
+REAL, DIMENSION(:,:),   INTENT(  OUT) :: PLSZWSM    ! at t-dt
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSUS,PLSVS,PLSWS ! Large Scale source
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSTHS, PLSRVS    ! terms
+REAL, DIMENSION(:,:),   INTENT(  OUT) :: PLSZWSS    ! source terms
 !  coefficients for the vertical interpolation of the LB fields
 INTEGER, DIMENSION(:,:,:), INTENT(  OUT) :: KKLIN_LBXU,KKLIN_LBYU
 REAL,    DIMENSION(:,:,:), INTENT(  OUT) :: PCOEFLIN_LBXU,PCOEFLIN_LBYU
@@ -73,8 +75,8 @@ END MODULE MODI_INI_SPAWN_LS_n
                     KDXRATIO,KDYRATIO,              &
                     HLBCX,HLBCY,PZZ,PZHAT,                                &
                     OSLEVE,PLEN1,PLEN2,                                   &
-                      PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,                    &
-                      PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,                    &
+                      PLSUM,PLSVM,PLSWM,PLSTHM,PLSRVM,PLSZWSM,            &
+                      PLSUS,PLSVS,PLSWS,PLSTHS,PLSRVS,PLSZWSS,            &
                       KKLIN_LBXU,PCOEFLIN_LBXU,KKLIN_LBYU,PCOEFLIN_LBYU,  &
                       KKLIN_LBXV,PCOEFLIN_LBXV,KKLIN_LBYV,PCOEFLIN_LBYV,  &
                       KKLIN_LBXW,PCOEFLIN_LBXW,KKLIN_LBYW,PCOEFLIN_LBYW,  &
@@ -140,6 +142,7 @@ END MODULE MODI_INI_SPAWN_LS_n
 !!                                          coeff for U
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!      J.Escobar : 18/12/2015 : Correction of bug in bound in // for NHALO <>1 
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
@@ -190,6 +193,8 @@ CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
 !
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSUM,PLSVM,PLSWM ! Large Scale fields
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSTHM, PLSRVM    ! at t-dt
+REAL, DIMENSION(:,:),   INTENT(  OUT) :: PLSZWSM     ! LS at t-dt
+REAL, DIMENSION(:,:),   INTENT(  OUT) :: PLSZWSS    ! source terms
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSUS,PLSVS,PLSWS ! Large Scale source
 REAL, DIMENSION(:,:,:), INTENT(  OUT) :: PLSTHS, PLSRVS    ! terms
 !  coefficients for the vertical interpolation of the LB fields
@@ -231,6 +236,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTLSUM, ZTLSVM, ZTLSWM, ZTLSTHM, ZTLSRVM
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTLSUS, ZTLSVS, ZTLSWS, ZTLSTHS, ZTLSRVS
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTZS,ZZS 
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTZSMT,ZZSMT 
+REAL, DIMENSION(:,:),   ALLOCATABLE :: ZTZWS,ZTZWSS
 !
 !-------------------------------------------------------------------------------
 !
@@ -260,6 +266,7 @@ ALLOCATE(ZTLSUM(IDIMX,IDIMY,SIZE(PLSUM,3)))
 ALLOCATE(ZTLSVM(IDIMX,IDIMY,SIZE(PLSVM,3)))
 ALLOCATE(ZTLSWM(IDIMX,IDIMY,SIZE(PLSWM,3)))
 ALLOCATE(ZTLSTHM(IDIMX,IDIMY,SIZE(PLSTHM,3)))
+IF(SIZE(PLSZWSM) /= 0) ALLOCATE(ZTZWS(IDIMX,IDIMY))
 IF(SIZE(PLSRVM) /= 0) ALLOCATE(ZTLSRVM(IDIMX,IDIMY,SIZE(PLSRVM,3)))
 !
 IF(GVERT_INTERP) THEN
@@ -277,11 +284,14 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   ALLOCATE(ZTLSWS(IDIMX,IDIMY,SIZE(PLSWS,3)))
   ALLOCATE(ZTLSTHS(IDIMX,IDIMY,SIZE(PLSTHS,3)))
 ENDIF
+IF ( SIZE(PLSZWSS) /= 0 ) ALLOCATE(ZTZWSS(IDIMX,IDIMY))
 IF ( SIZE(PLSRVS) /= 0 ) ALLOCATE(ZTLSRVS(IDIMX,IDIMY,SIZE(PLSRVS,3)))
 !
 !         1.3  Specify the ls "source" fields and receiver fields
 !
 CALL SET_LSFIELD_1WAY_ll(XLSUM, ZTLSUM, KMI)
+IF ( SIZE(PLSZWSM,1) /= 0 ) &
+  CALL SET_LSFIELD_1WAY_ll(XLSZWSM, ZTZWS, KMI)
 CALL SET_LSFIELD_1WAY_ll(XLSVM, ZTLSVM, KMI)
 CALL SET_LSFIELD_1WAY_ll(XLSWM, ZTLSWM, KMI)
 CALL SET_LSFIELD_1WAY_ll(XLSTHM, ZTLSTHM, KMI)
@@ -295,6 +305,8 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   CALL SET_LSFIELD_1WAY_ll(XLSTHS, ZTLSTHS, KMI)
   IF ( SIZE(PLSRVM,1) /= 0 ) &
     CALL SET_LSFIELD_1WAY_ll(XLSRVS, ZTLSRVS, KMI)
+  IF ( SIZE(PLSZWSM,1) /= 0 ) &
+    CALL SET_LSFIELD_1WAY_ll(XLSZWSS, ZTZWSS, KMI)
 ENDIF
 !
 IF ( GVERT_INTERP ) THEN
@@ -454,6 +466,13 @@ IF ( SIZE(PLSRVM,1) /= 0 ) THEN
                  HLBCX,HLBCY,ZTLSRVM,PLSRVM(IIB:IIE,IJB:IJE,:))
 END IF
 !
+IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+  CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
+                 PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
+                 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,         &
+                 HLBCX,HLBCY,ZTZWS,PLSZWSM(IIB:IIE,IJB:IJE))
+END IF
+
 IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   !
   CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
@@ -469,6 +488,13 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   !
   END IF
   !
+  IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+    CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
+                   PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
+                   2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,         &
+                   HLBCX,HLBCY,ZTZWS+ZTIME*ZTZWSS,PLSZWSS(IIB:IIE,IJB:IJE))
+  !
+  END IF
 END IF
 !
 !*      3.2  Vertical linear interpolation on the mass grid
@@ -550,6 +576,9 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
     PLSRVS(:,:,:)  = (PLSRVS(:,:,:) - PLSRVM(:,:,:)) / ZTIME
   END IF
   !
+  IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+    PLSZWSS(:,:)  = (PLSZWSS(:,:) - PLSZWSM(:,:)) / ZTIME
+  END IF
 END IF
 !
 !------------------------------------------------------------------------------
@@ -749,12 +778,14 @@ END IF
 !
 DEALLOCATE(ZTLSUM,ZTLSVM,ZTLSWM,ZTLSTHM)
 IF(SIZE(PLSRVM) /= 0) DEALLOCATE(ZTLSRVM)
+IF(SIZE(PLSZWSM) /= 0) DEALLOCATE(ZTZWS)
 !
 IF(GVERT_INTERP) DEALLOCATE(ZTZS,ZZS)
 IF(GVERT_INTERP) DEALLOCATE(ZTZSMT,ZZSMT)
 !
 IF ( SIZE(PLSTHS,1) /= 0 ) DEALLOCATE(ZTLSUS,ZTLSVS,ZTLSWS,ZTLSTHS)
 IF ( SIZE(PLSRVS,1) /= 0 ) DEALLOCATE(ZTLSRVS)
+IF ( SIZE(PLSZWSS,1) /= 0 ) DEALLOCATE(ZTZWSS)
 !------------------------------------------------------------------------------
 NULLIFY(TZLSFIELD_ll)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSUM)
@@ -762,6 +793,7 @@ CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSVM)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSWM)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSTHM)
 IF(SIZE(PLSRVM) /= 0) CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSRVM)
+IF(SIZE(PLSZWSM) /= 0) CALL ADD2DFIELD_ll(TZLSFIELD_ll, PLSZWSM)
 IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSUS)
   CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSVS)
@@ -769,6 +801,7 @@ IF ( SIZE(PLSTHS,1) /= 0 ) THEN
   CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSTHS)
 ENDIF
 IF ( SIZE(PLSRVS,1) /= 0 ) CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSRVS)
+IF ( SIZE(PLSZWSS,1) /= 0 ) CALL ADD2DFIELD_ll(TZLSFIELD_ll, PLSZWSS)
 CALL UPDATE_HALO_ll(TZLSFIELD_ll,IINFO_ll)
 CALL CLEANLIST_ll(TZLSFIELD_ll)
 !
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index b932716fc7e9519cdf8662b3e95cdafc598e2c7e..89fe2916a6f9d2d667dba4dd1ef78453250ce323 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 0000000000000000000000000000000000000000..de95ce681e4751a7b4c244bec44bcbdfa0e6c9f8
--- /dev/null
+++ b/src/MNH/init_salt.f90
@@ -0,0 +1,74 @@
+!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
+!ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!ORILAM_LIC for details.
+!-----------------------------------------------------------------
+
+!!    ######################
+      SUBROUTINE INIT_SALT
+!!    ######################
+!     PURPOSE
+!!     -------
+!!
+!!     initialization of variables for the sea salt scheme
+!!
+!!     METHOD
+!!     ------
+!!
+!!
+!!     REFERENCE
+!!     ---------
+!!     none
+!!
+!!
+!!     AUTHOR
+!!     ------
+!!     Marine Claeys (CNRM)
+!!
+!!     MODIFICATIONS
+!!     -------------
+!!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!
+USE MODD_SALT
+!
+IMPLICIT NONE
+
+IF(NMODE_SLT == 5) THEN
+
+!JPSALTORDER = (/5, 4, 3, 2, 1 /)
+!Initial dry number median radius (um) from Ova et al., 2014
+XINIRADIUS_SLT=  (/0.009, 0.021, 0.045, 0.115, 0.415/)
+!Initial, standard deviation from  Ova et al., 2014
+XINISIG_SLT =  (/ 1.37, 1.5, 1.42, 1.53, 1.85 /)
+!Minimum allowed number concentration for any mode (#/m3)
+XN0MIN_SLT  = (/1.e1 , 1.e1, 1.e1, 1., 1.e-4 /)
+
+
+ELSE IF ( NMODE_SLT == 3) THEN
+
+! Set the order of the loops sorted by importance
+!This means that if a user choses 1 mode it will have characteristics of mode 2
+!2 modes will be mode 2 & 3, whereas 3 modes will modes 1, 2 and 3
+!JPSALTORDER = (/3, 2, 1, 4, 5/)
+! 
+   !Initial dry number median radius (um) from Vignati et al., 2001
+   ! XINIRADIUS_SLT= (/0.2, 2., 12./)
+   !Initial, standard deviation from Vignati et al., 2001
+   ! XINISIG_SLT =  (/1.9, 2., 3./)
+   !Minimum allowed number concentration for any mode (#/m3)
+   ! XN0MIN_SLT  = (/1.e1 , 1. , 1.e-4 /)
+
+
+!Pour 3 modes Schultz
+!Initial dry number median radius (um) from Schultz et al., 2004
+ XINIRADIUS_SLT= 0.5*(/0.28, 2.25, 15.32, 0., 0. /)
+!Initial, standard deviation from  Schultz et al., 2004
+ XINISIG_SLT =  (/1.9, 2., 2., 0., 0./)
+!Minimum allowed number concentration for any mode (#/m3)
+ XN0MIN_SLT  = (/1.e1 , 1. , 1.e-4, 0., 0. /)
+!
+END IF
+
+
+END SUBROUTINE INIT_SALT
diff --git a/src/MNH/ls_coupling.f90 b/src/MNH/ls_coupling.f90
index b2d17436aded6339a4c727650852033aaa8ac48d..24238e398d3ac9b80170747fbeb47cb5ab41deb6 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 4c985d21a1f9e606d11aa89ec831c8ecb621a5e6..9db26edacaf63aa95a8388e544ed9eacf29f6308 100644
--- a/src/MNH/modd_csts_salt.f90
+++ b/src/MNH/modd_csts_salt.f90
@@ -33,6 +33,7 @@
 !!
 !!     MODIFICATIONS
 !!     -------------
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !!--------------------------------------------------------------------
 !!     DECLARATIONS
@@ -42,7 +43,9 @@
 IMPLICIT NONE
 !
 !densit� salt a introduire
-REAL, PARAMETER  :: XDENSITY_SALT     = 2.1e3     ![kg/m3] density of dust
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+REAL, PARAMETER  :: XDENSITY_SALT     = 2.2e3     ![kg/m3] density of dust
+! -- PIERRE / MARINE SSA DUST - MODIF --
 REAL, PARAMETER  :: XMOLARWEIGHT_SALT = 58.e-3   ![kg/mol] molar weight dust
 REAL, PARAMETER  :: XM3TOUM3_SALT     = 1.d18     ![um3/m3] conversion factor
 REAL, PARAMETER  :: XUM3TOM3_SALT     = 1.d-18    ![m3/um3] conversion factor
diff --git a/src/MNH/modd_diag_in_run.f90 b/src/MNH/modd_diag_in_run.f90
index 4c52ea1175777bf35c09d329002634b54f7c99ca..b7bba80d0c045a7787cf64d952de4b44c6a2961f 100644
--- a/src/MNH/modd_diag_in_run.f90
+++ b/src/MNH/modd_diag_in_run.f90
@@ -11,6 +11,7 @@
 MODULE MODD_DIAG_IN_RUN
 ! Modifications
 !!                   02/2018 Q.Libois ECRAD
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !
 !* stores instantaneous diagnostic arrays for the current time-step
 !
@@ -37,4 +38,6 @@ REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_MER10M! meridian wind at 10m
 REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_DSTAOD! dust aerosol optical depth
 REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_SFCO2    ! CO2 Surface flux
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: XCURRENT_TKE_DISS ! Tke dissipation rate
+REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_SLTAOD   ! Salt aerosol optical depth
+REAL, DIMENSION(:,:),   ALLOCATABLE :: XCURRENT_ZWS      ! Significant height of waves
 END MODULE MODD_DIAG_IN_RUN
diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90
index c1a0be8f9e0f84db061d3b232b2a086f7a64d82f..7a91f15cc757113aaa76f87549a4bc01de7e02e5 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 7a583779d04dd284bda63e2f567b548931c21c26..bae3402d5f9a9453dbc6f7f0fa706e3755793aa3 100644
--- a/src/MNH/modd_getn.f90
+++ b/src/MNH/modd_getn.f90
@@ -52,6 +52,7 @@
 !!      V. Masson   01/2004   surface externalization (rm CGETSURF)
 !!                  05/2006   Remove EPS and LGETALL
 !!      M. Leriche  04/2010   add get indicators for pH in cloud and rain
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -102,6 +103,7 @@ TYPE GET_t
   CHARACTER (LEN=4)  :: CGETBL_DEPTH          ! Get indicator for the BL depth
   CHARACTER (LEN=4)  :: CGETSBL_DEPTH         ! Get indicator for the SBL depth
   CHARACTER (LEN=4)  :: CGETPHC,CGETPHR       ! Get indicator for the pH values
+  CHARACTER (LEN=4)  :: CGETZWS
                                 ! in cloud water and rainwater
 !
 END TYPE GET_t
@@ -133,6 +135,7 @@ CHARACTER (LEN=4), POINTER :: CGETBL_DEPTH=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETSBL_DEPTH=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETPHC=>NULL()
 CHARACTER (LEN=4), POINTER :: CGETPHR=>NULL()
+CHARACTER (LEN=4), POINTER :: CGETZWS=>NULL()
 
 CONTAINS
 
@@ -179,6 +182,7 @@ CGETSRC=>GET_MODEL(KTO)%CGETSRC
 CGETCLDFR=>GET_MODEL(KTO)%CGETCLDFR
 CGETSRCT=>GET_MODEL(KTO)%CGETSRCT
 CGETCIT=>GET_MODEL(KTO)%CGETCIT
+CGETZWS=>GET_MODEL(KTO)%CGETZWS
 CGETCONV=>GET_MODEL(KTO)%CGETCONV
 CGETRAD=>GET_MODEL(KTO)%CGETRAD
 CGETCLOUD=>GET_MODEL(KTO)%CGETCLOUD
diff --git a/src/MNH/modd_lsfieldn.f90 b/src/MNH/modd_lsfieldn.f90
index 208f1d4d2bb3a8ae3cdd6b34a35324f76449d7a8..6274b8dd6075620ef5b74a9c58629da9b5884af1 100644
--- a/src/MNH/modd_lsfieldn.f90
+++ b/src/MNH/modd_lsfieldn.f90
@@ -36,6 +36,7 @@
 !!                                 2D arrays to store values at lateral boundaries
 !!                  20/05/06  Remove EPS
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !
@@ -55,12 +56,15 @@ TYPE LSFIELD_t
 !                              ! time t-dt for larger scales 
 !  REAL, DIMENSION(:,:,:), POINTER :: XLSRVM=>NULL() ! Rv (mixing ratio for vapor)
 !                              ! at time t-dt for larger scales 
+ REAL, DIMENSION(:,:),   POINTER :: XLSZWSM=>NULL() ! height of sea waves
   REAL, DIMENSION(:,:,:), POINTER :: XLSUS=>NULL(),XLSVS=>NULL(),XLSWS=>NULL() ! Tendency of 
                               ! U,V,W for larger scales 
   REAL, DIMENSION(:,:,:), POINTER :: XLSTHS=>NULL()     ! Tendency of 
                               ! theta for larger scales
   REAL, DIMENSION(:,:,:), POINTER :: XLSRVS=>NULL() ! Tendency of 
 !                              ! RV for larger scales
+REAL, DIMENSION(:,:),   POINTER :: XLSZWSS=>NULL() ! Tendency of 
+!                              ! sea wave for larger scales
 !    previously  present for LS for V * Prhodj
 !
 !  Large scale variables for horizontal lbc
@@ -104,8 +108,10 @@ TYPE(LSFIELD_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: LSFIELD_MODEL
 REAL, DIMENSION(:,:,:), POINTER :: XLSUM=>NULL(),XLSVM=>NULL(),XLSWM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSTHM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSRVM=>NULL()
+REAL, DIMENSION(:,:),   POINTER :: XLSZWSM=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSUS=>NULL(),XLSVS=>NULL(),XLSWS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSTHS=>NULL()
+REAL, DIMENSION(:,:),   POINTER :: XLSZWSS=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XLSRVS=>NULL()
 REAL, DIMENSION(:,:,:),   POINTER :: XLBXUM=>NULL(),XLBXVM=>NULL(),XLBXWM=>NULL()
 REAL, DIMENSION(:,:,:),   POINTER :: XLBXTHM=>NULL()
@@ -143,11 +149,13 @@ INTEGER, INTENT(IN) :: KFROM, KTO
 !LSFIELD_MODEL(KFROM)%XLSWM=>XLSWM !Done in FIELDLIST_GOTO_MODEL
 !LSFIELD_MODEL(KFROM)%XLSTHM=>XLSTHM !Done in FIELDLIST_GOTO_MODEL
 !LSFIELD_MODEL(KFROM)%XLSRVM=>XLSRVM !Done in FIELDLIST_GOTO_MODEL
+LSFIELD_MODEL(KFROM)%XLSZWSM=>XLSZWSM
 LSFIELD_MODEL(KFROM)%XLSUS=>XLSUS
 LSFIELD_MODEL(KFROM)%XLSVS=>XLSVS
 LSFIELD_MODEL(KFROM)%XLSWS=>XLSWS
 LSFIELD_MODEL(KFROM)%XLSTHS=>XLSTHS
 LSFIELD_MODEL(KFROM)%XLSRVS=>XLSRVS
+LSFIELD_MODEL(KFROM)%XLSZWSS=>XLSZWSS
 !LSFIELD_MODEL(KFROM)%XLBXUM=>XLBXUM !Done in FIELDLIST_GOTO_MODEL
 !LSFIELD_MODEL(KFROM)%XLBXVM=>XLBXVM !Done in FIELDLIST_GOTO_MODEL
 !LSFIELD_MODEL(KFROM)%XLBXWM=>XLBXWM !Done in FIELDLIST_GOTO_MODEL
@@ -199,11 +207,13 @@ LSFIELD_MODEL(KFROM)%NKLIN_LBYM=>NKLIN_LBYM
 !XLSWM=>LSFIELD_MODEL(KTO)%XLSWM !Done in FIELDLIST_GOTO_MODEL
 !XLSTHM=>LSFIELD_MODEL(KTO)%XLSTHM !Done in FIELDLIST_GOTO_MODEL
 !XLSRVM=>LSFIELD_MODEL(KTO)%XLSRVM !Done in FIELDLIST_GOTO_MODEL
+XLSZWSM=>LSFIELD_MODEL(KTO)%XLSZWSM
 XLSUS=>LSFIELD_MODEL(KTO)%XLSUS
 XLSVS=>LSFIELD_MODEL(KTO)%XLSVS
 XLSWS=>LSFIELD_MODEL(KTO)%XLSWS
 XLSTHS=>LSFIELD_MODEL(KTO)%XLSTHS
 XLSRVS=>LSFIELD_MODEL(KTO)%XLSRVS
+XLSZWSS=>LSFIELD_MODEL(KTO)%XLSZWSS
 !XLBXUM=>LSFIELD_MODEL(KTO)%XLBXUM !Done in FIELDLIST_GOTO_MODEL
 !XLBXVM=>LSFIELD_MODEL(KTO)%XLBXVM !Done in FIELDLIST_GOTO_MODEL
 !XLBXWM=>LSFIELD_MODEL(KTO)%XLBXWM !Done in FIELDLIST_GOTO_MODEL
diff --git a/src/MNH/modd_salt.f90 b/src/MNH/modd_salt.f90
index 01f908fe1e56873f0a8c7db97be309d50a94aa63..907b95672080fb541fd8a47c907051f9fd893687 100644
--- a/src/MNH/modd_salt.f90
+++ b/src/MNH/modd_salt.f90
@@ -35,6 +35,7 @@
 !!     -------------
 !! 
 !!     2014 P.Tulet modif XINIRADIUS_SLT and XN0MIN_SLT
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 USE MODD_PARAMETERS, ONLY: JPMODELMAX
 !!--------------------------------------------------------------------
@@ -42,51 +43,64 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX
 !!     ------------
 IMPLICIT NONE
 !
-
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+LOGICAL      :: LSLTMACC  = .FALSE.   ! switch to active pronostic sea salts  from MACC
 LOGICAL      :: LSALT     = .FALSE.   ! switch to active pronostic sea salts
+LOGICAL      :: LONLY     = .FALSE.
+LOGICAL      :: LREAD_ONLY_HS_MACC     = .FALSE.
 LOGICAL      :: LSLTINIT  = .FALSE.   ! switch to initialize pronostic sea salts
 LOGICAL      :: LSLTPRES  = .FALSE.   ! switch to know if pronostic salts exist            
 LOGICAL,DIMENSION(JPMODELMAX)  :: LDEPOS_SLT = .FALSE.    ! switch to SLT wet depositon
-INTEGER      :: NMODE_SLT= 3  ! number of sea salt modes (max 3; default = 3)
+
+!INTEGER      :: NMODE_SLT= 3  ! number of sea salt modes (max 3; default = 3)
+INTEGER :: NMODE_SLT= 5  ! number of sea salt modes (max 5; default = 3)
 !
 CHARACTER(LEN=9),DIMENSION(:),ALLOCATABLE :: CDESLTNAMES
-CHARACTER(LEN=9),DIMENSION(6), PARAMETER  :: YPDESLT_INI = &
-     (/'DESLTM31C','DESLTM32C','DESLTM33C' &
-      ,'DESLTM31R','DESLTM32R','DESLTM33R' /)
-CHARACTER(LEN=6),DIMENSION(:),ALLOCATABLE :: CSALTNAMES
-CHARACTER(LEN=6),DIMENSION(9), PARAMETER  :: YPSALT_INI = &
-     (/'SLTM01','SLTM31','SLTM61' &
-      ,'SLTM02','SLTM32','SLTM62' &
-      ,'SLTM03','SLTM33','SLTM63' /)
-! Set the order of the loops sorted by importance
-!This means that if a user choses 1 mode it will have characteristics of mode 2
-!2 modes will be mode 2 & 3, whereas 3 modes will modes 1, 2 and 3
-INTEGER, DIMENSION(3),PARAMETER  :: JPSALTORDER = (/3, 2, 1/)
-! 
-REAL, ALLOCATABLE :: XSLTMSS(:,:,:)   ! [kg/m3] total mass concentration of sea salt
+CHARACTER(LEN=6),DIMENSION(:), ALLOCATABLE :: CSALTNAMES
+CHARACTER(LEN=9),DIMENSION(10), PARAMETER  :: YPDESLT_INI = &
+    (/'DESLTM31C','DESLTM32C','DESLTM33C','DESLTM34C', 'DESLTM35C', &
+      'DESLTM31R','DESLTM32R','DESLTM33R', 'DESLTM34R','DESLTM35R' /)
+
+CHARACTER(LEN=6),DIMENSION(15), PARAMETER  :: YPSALT_INI = &
+                  (/'SLTM01','SLTM31','SLTM61',&
+                    'SLTM02','SLTM32','SLTM62',&
+                    'SLTM03','SLTM33','SLTM63',&
+                    'SLTM04','SLTM34','SLTM64',&
+                    'SLTM05','SLTM35','SLTM65' /)
+
+INTEGER, DIMENSION(5),PARAMETER  :: JPSALTORDER = (/3, 2, 1, 5, 4/)
+
+!Test Thomas (definir rayons et sigma ici si on veut desactiver initialisation MACC)
+
+!REAL, DIMENSION(5) :: XINIRADIUS_SLT,XINISIG_SLT,XN0MIN_SLT
+
+!Initial dry number median radius (um) from Ova et al., 2014
+REAL,DIMENSION(5)    :: XINIRADIUS_SLT=  (/0.009, 0.021, 0.045, 0.115, 0.415/)
+!Initial, standard deviation from  Ova et al., 2014
+REAL,DIMENSION(5)      :: XINISIG_SLT =  (/ 1.37, 1.5, 1.42, 1.53, 1.85 /)
+!Minimum allowed number concentration for any mode (#/m3)
+REAL,DIMENSION(5)  :: XN0MIN_SLT  = (/1.e1 , 1.e1, 1.e1, 1., 1.e-4 /)
+
+!Test Thomas
+
+REAL, DIMENSION(:,:,:), ALLOCATABLE :: XSLTMSS   ! [kg/m3] total mass concentration of sea salt
 !
 ! aerosol lognormal parameterization
-CHARACTER(LEN=4)  :: CRGUNITS   = 'MASS'  ! type of log-normal geometric mean radius
+CHARACTER(LEN=4)  :: CRGUNITS   = 'NUMB'  ! type of log-normal geometric mean radius
 !                                         !given in namelist (mass on number)
 !
 LOGICAL      :: LRGFIX_SLT   = .FALSE.    ! switch to fix RG (sedimentation)
 LOGICAL      :: LVARSIG_SLT  = .FALSE.    ! switch to active pronostic dispersion for all modes
 LOGICAL      :: LSEDIMSALT   = .FALSE.    ! switch to active aerosol sedimentation
 REAL         :: XSIGMIN_SLT   = 1.20      ! minimum dispersion value for sea salt mode
+!REAL         :: XSIGMIN_SLT   = 0.      ! minimum dispersion value for sea salt mode
 REAL         :: XSIGMAX_SLT   = 3.60      ! maximum dispersion value for sea salt mode
 REAL         :: XCOEFRADMAX_SLT  = 10.    ! maximum increasement for Rg mode sea salt
-REAL         :: XCOEFRADMIN_SLT  = 0.1    ! maximum decreasement for Rg mode sea salt
-!
+REAL         :: XCOEFRADMIN_SLT  = 0.1    ! minimum decreasement for Rg mode sea salt
+!REAL         :: XCOEFRADMIN_SLT  = 0.    ! minimum decreasement for Rg mode sea salt
 
-!Initial dry number median radius (um) from Vignati et al., 2001
-!REAL, DIMENSION(3)          :: XINIRADIUS_SLT= (/0.2, 2., 12./)
-!Initial, standard deviation from Vignati et al., 2001
-!REAL, DIMENSION(3)          :: XINISIG_SLT =  (/1.9, 2., 3./)
-!Initial dry number median radius (um) from Schultz et al., 2004
-REAL, DIMENSION(3)          :: XINIRADIUS_SLT= 0.5*(/0.28, 2.25, 15.32/)
-!Initial, standard deviation from  Schultz et al., 2004
-REAL, DIMENSION(3)          :: XINISIG_SLT =  (/1.9, 2., 2./)
-!Minimum allowed number concentration for any mode (#/m3)
-REAL, DIMENSION(3)          :: XN0MIN_SLT  = (/1.e1 , 1. , 1.e-4 /)
+
+!
+! -- PIERRE / MARINE SSA DUST - MODIF --
 !
 END MODULE MODD_SALT
diff --git a/src/MNH/modd_spawn.f90 b/src/MNH/modd_spawn.f90
index 41f83c8a1d5ede0151a11e0ca4c1329dd1a40150..8d432e588f5fbce395ee2385fb50883f8eb5f41e 100644
--- a/src/MNH/modd_spawn.f90
+++ b/src/MNH/modd_spawn.f90
@@ -33,6 +33,7 @@
 !!      Original    12/07/99
 !!      Modification 08/04/04   (G.Jaubert) Spawning 1 option
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -79,12 +80,14 @@ REAL,DIMENSION(:,:,:,:),SAVE,POINTER :: XRT1  => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XUT1    => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XVT1    => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XWT1    => NULL()
+REAL,DIMENSION(:,:),  SAVE,POINTER :: XZWS1   => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSRCT1  => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSIGS1  => NULL()
 TYPE(DATE_TIME),      SAVE,POINTER :: TDTCUR1 => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSUM1  => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSVM1  => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSWM1  => NULL()
+REAL,DIMENSION(:,:)  ,SAVE,POINTER :: XLSZWSM1=> NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSTHM1 => NULL()
 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSRVM1 => NULL()
 !
diff --git a/src/MNH/mode_salt_psd.f90 b/src/MNH/mode_salt_psd.f90
index e361c1dfac7aa5e7831247959f959777e4d6eec4..dc5a8611ef01cbc1505633c4b5a97c2a9848e699 100644
--- a/src/MNH/mode_salt_psd.f90
+++ b/src/MNH/mode_salt_psd.f90
@@ -23,9 +23,14 @@
 !!
 !!    MODIFICATIONS
 !!    -------------
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !-------------------------------------------------------------------------------
 !
+! ++ JORIS DEBUG ++
+USE MODD_CONF, ONLY : NVERB
+! -- JORIS DEBUG --
+!
 USE MODD_CSTS_SALT         !Constants which are important for sea salt calculations
 USE MODD_SALT              !Dust module which contains even more constants
 USE MODD_CST, ONLY :    &
@@ -137,6 +142,11 @@ ALLOCATE (ZINIRADIUS(NMODE_SLT))
     
 ZSV(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
 
+! ++ JORIS DBG ++
+ZRG(:,:,:)= XMNH_TINY
+ZM(:,:,:,:)= XMNH_TINY
+! -- JORIS DBG --
+
 DO JN=1,NMODE_SLT
   IMODEIDX = JPSALTORDER(JN)
   !Calculations here are for one mode only
@@ -235,6 +245,10 @@ DO JN=1,NMODE_SLT
          * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
          / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
     ZM(:,:,:,NM3(JN)) = MAX(ZM(:,:,:,NM3(JN)), ZMMIN(NM3(JN)))
+!Modif salt/dust 5.1. beg
+       PSVT(:,:,:,JN) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+!Modif salt/dust 5.1. end
 
     ZM(:,:,:,NM0(JN))=  ZM(:,:,:,NM3(JN))/&
        ((ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(XINISIG_SLT(JPSALTORDER(JN)))**2))
@@ -280,6 +294,21 @@ DO JN=1,NMODE_SLT
   END IF
   !   
   !Get number median radius (eqn. 7 in Orilam manuscript)
+  ! ++ JORIS DBG ++
+  IF (NVERB ==15) THEN
+    WRITE(*,*) 'SHAPE(ZM) =', SHAPE(ZM)
+    WRITE(*,*) 'MINVAL(ZM), MAXVAL(ZM) =', MINVAL(ZM), MAXVAL(ZM)
+    WRITE(*,*) 'MINLOC(ZM), MAXLOC(ZM) =', MINLOC(ZM), MAXLOC(ZM)
+    WRITE(*,*) 'SHAPE(ZRG) =', SHAPE(ZRG)
+    WRITE(*,*) 'MINVAL(ZRG), MAXVAL(ZRG) =', MINVAL(ZRG), MAXVAL(ZRG)
+    WRITE(*,*) 'MINLOC(ZRG), MAXLOC(ZRG) =', MINLOC(ZRG), MAXLOC(ZRG)
+    WRITE(*,*) 'XSIXTH_SALT =', XSIXTH_SALT
+    WRITE(*,*) 'JN =', JN
+    WRITE(*,*) 'NM0 =', NM0
+    WRITE(*,*) 'NM3 =', NM3
+    WRITE(*,*) 'NM6 =', NM6
+  ENDIF
+  ! -- JORIS DBG --
   ZRG(:,:,:)=    &
           (      &
           ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))    &
@@ -414,7 +443,9 @@ END SUBROUTINE PPP2SALT
 !
 
     ! PSVT need to be positive
-    PSVT(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
+!Modif salt/dust 5.1. beg
+!    PSVT(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
+!Modif salt/dust 5.1. end
     
     DO JN=1,NMODE_SLT
     IMODEIDX = JPSALTORDER(JN)
@@ -629,8 +660,10 @@ ALLOCATE (ZSIGMA(SIZE(PSVT,1)))
 ALLOCATE (ZRG(SIZE(PSVT,1)))
 ALLOCATE (ZSV(SIZE(PSVT,1), SIZE(PSVT,2)))
 ALLOCATE (ZINIRADIUS(NMODE_SLT))
-    
+
+!Modif salt/dust 5.1. beg
 ZSV(:,:) = MAX(PSVT(:,:), XMNH_TINY)
+!Modif salt/dust 5.1. end
 
 DO JN=1,NMODE_SLT
   IMODEIDX = JPSALTORDER(JN)
diff --git a/src/MNH/mode_salt_psd_wet.f90 b/src/MNH/mode_salt_psd_wet.f90
new file mode 100644
index 0000000000000000000000000000000000000000..cb5af52f838a83cd4997f9fad234eb1919262d24
--- /dev/null
+++ b/src/MNH/mode_salt_psd_wet.f90
@@ -0,0 +1,926 @@
+!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
+!ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!ORILAM_LIC for details.
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/Attic/mode_salt_psd.f90,v $ $Revision: 1.1.2.1.2.1.2.1.2.1 $ $Date: 2013/07/12 13:55:08 $
+!-----------------------------------------------------------------
+!!   ########################
+     MODULE MODE_SALT_PSD_WET
+!!   ########################
+!!
+!!    PURPOSE
+!!    -------
+!! MODULE SALT PSD (Particle Size Distribution)
+!! Purpose: Contains subroutines to convert from transported variables (ppp)
+!! to understandable aerosol variables, e.g. #/m3, kg/m3, sigma, R_{n}
+!!
+!!    AUTHOR
+!!    ------
+!!      Alf Grini (CNRM/GMEI)
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      M. Claeys - (CNRM-GMEI) 2015
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!-------------------------------------------------------------------------------
+!
+USE MODD_CSTS_SALT         !Constants which are important for sea salt calculations
+USE MODD_SALT              !Dust module which contains even more constants
+USE MODD_CST, ONLY :    &
+       XPI              & !Definition of pi
+      ,XBOLTZ           & ! Boltzman constant 
+      ,XAVOGADRO        & ![molec/mol] avogadros number
+      ,XG               & ! Gravity constant
+      ,XP00             & ! Reference pressure
+      ,XMD              & ![kg/mol] molar weight of air
+      ,XRD              & ! Gaz constant for dry air
+      ,XCPD             & !  Cpd (dry air)
+      ,XRHOLW           & ! Densité de l'eau
+      ,XMV              & ! Molar weight of water
+      ,XALPI            &
+      ,XBETAI           &
+      ,XGAMI            &
+      ,XTT             
+USE MODD_CST, ONLY : XMNH_TINY
+USE MODE_THERMO             ! Pour calcul de la pression de vapeur saturante
+USE MODD_PARAM_n,    ONLY : CCLOUD
+
+
+!
+IMPLICIT NONE
+!
+CONTAINS
+!
+!!   ############################################################
+  SUBROUTINE PPP2SALT_WET(          &
+       PSVT                         & !I [ppp] input scalar variables (moment of distribution)
+       , PRHODREF                   & !I [kg/m3] density of air       
+       , PPABST                     & !I Pression
+       , PTHT                       & !I Potential temperature
+       , PRT                        & !I Large scale vapor mixing ratio
+       , PSIG3D                     & !O [-] standard deviation of aerosol distribution
+       , PRG3D                      & !O [um] number median wet radius of aerosol distribution
+       , PN3D                       & !O [#/m3] number concentration of aerosols
+       , PMASS3D                    & !O [kg/m3]wet mass concentration of aerosol
+       , PM3D                       & !O aerosols moments 0, 3 and 6
+       , PDENSITY_WET               & !O [g/m2] density of wet aerosol (water + salt)
+       )
+!!   ############################################################
+!
+!!
+!!    PURPOSE
+!!    -------
+!!    Translate the three moments M0, M3 and M6 given in ppp into
+!!    Values which can be understood more easily (R, sigma, N, M)
+!!    
+!!    Calcul the wet radius of the particles, using RH and Gerber (1985) relation
+!!    The mass of the aerosols is calculated using the new radius and the
+!density of water and salt
+!!
+!!    CALLING STRUCTURE NOTE: OPTIONAL VARIABLES
+!!    -------
+!!    CALL PPP2AEROS(PSVT, PRHODREF, PSIG3D=SIGVAR,  &
+!!       PRG3D=RVAR, PN3D=NVAR, PM3D=MASSVAR)
+!!
+!!    REFERENCE
+!!    ---------
+!!    none
+!!
+!!    AUTHOR
+!!    ------
+!!    Pierre TULET (LA)
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!    2005 Alf Grini (CNRM)
+!!    2006 Jean-Pierre Chaboureau (LA)
+!!    2015 Marine Claeys (CNRM)
+!!    EXTERNAL
+!!    --------
+!!    None
+!!
+    IMPLICIT NONE
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.     DECLARATIONS
+!               ------------
+!
+!*      0.1    declarations of arguments
+!
+REAL, DIMENSION(:,:,:,:),           INTENT(INOUT) :: PSVT      !I [ppp] first moment
+REAL, DIMENSION(:,:,:),             INTENT(IN)    :: PRHODREF  !I [kg/m3] density of air
+REAL, DIMENSION(:,:,:),             INTENT(IN)    :: PPABST    !I Pression
+REAL, DIMENSION(:,:,:),             INTENT(IN)    :: PTHT      !I Potential temperature
+REAL, DIMENSION(:,:,:,:),           INTENT(IN)    :: PRT       !I Large scale vapor mixing ratio
+
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PSIG3D   !O [-] standard deviation
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PRG3D    !O [um] number median radius 
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PN3D     !O [#/m3] number concentration
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PMASS3D  !O [kg_{aer}/m3] wet mass concentration
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PM3D     !O aerosols moments 
+REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(OUT)   :: PDENSITY_WET  !O Density of wet aerosol (water + salt) 
+!
+!
+!*      0.2    declarations local variables
+!
+REAL                                  :: ZRHOI    ! [kg/m3] density of aerosol
+REAL                                  :: ZRHOLW   ! [kg/m3] density of water
+REAL                                  :: ZMI      ! [kg/mol] molar weight of aerosol
+REAL                                  :: ZMV      ! [kg/mol] molar weight of water
+REAL                                  :: ZRGMIN   ! [um] minimum radius accepted
+REAL                                  :: ZSIGMIN  ! minimum standard deviation accepted
+
+REAL, PARAMETER                       :: C1 = 0.7674
+REAL, PARAMETER                       :: C2 = 3.079
+REAL, PARAMETER                       :: C3 = 2.572E-11
+REAL, PARAMETER                       :: C4 = -1.424
+
+REAL,DIMENSION(:,:,:,:), ALLOCATABLE  :: ZM       ! [aerosol units] local array which goes to output later
+REAL,DIMENSION(:,:,:,:), ALLOCATABLE  :: ZSV      ! [sea salts moment concentration]
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN    ! [aerosol units] minimum values for N, sigma, M
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM0      ! [idx] index for Mode 0 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM3      ! [idx] indexes for Mode 3 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM6      ! [idx] indexes for Mode 6 in passed variables
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS      ! initial mean radius
+INTEGER                               :: JN,IMODEIDX,JJ  ! [idx] loop counters
+
+REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3), NMODE_SLT)  :: ZMASS3D, &
+                                                                       ZMASS3D_SLT         ![kg/m3] mass of one sea salt mode
+
+REAL,DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3))  :: ZTEMP, ZREHU, ZREHU_tmp
+REAL,DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3), NMODE_SLT)  :: ZDENSITY_WET      ! [g/m2] Aerosol wet density (salt + water) 
+REAL,DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3))  :: ZSIGMA            ! [-] standard deviation 
+REAL,DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3))  :: ZRG, ZRG_WET      ! [um] number median radius, and nuber median wet radius 
+!
+!-------------------------------------------------------------------------------
+!
+
+!+ Marine
+!  Calcul de RH
+! Pris dans write_lfi_for_diag pour le calcul de RH
+ZTEMP(:,:,:) = PTHT(:,:,:) * (PPABST(:,:,:) / XP00)**(XRD/XCPD)
+
+ZREHU_tmp(:,:,:) = SM_FOES(ZTEMP(:,:,:))  ! SM_FOES = to compute saturation vapor pressure
+ZREHU_tmp(:,:,:) = (XMV / XMD) * ZREHU_tmp(:,:,:) / (PPABST(:,:,:) - ZREHU_tmp(:,:,:))
+!XMD,XMV      ! Molar mass of dry air and molar mass of vapor, PPABST: pression
+
+ZREHU(:,:,:) = PRT(:,:,:,1) / ZREHU_tmp(:,:,:)
+
+IF (CCLOUD(1:3) =='ICE' .OR. CCLOUD =='C3R5')  THEN
+  WHERE ( ZTEMP(:,:,:) <  XTT) ! XTT : Triple point temperature
+    ZREHU_tmp(:,:,:) = EXP( XALPI - XBETAI/ZTEMP(:,:,:) & ! XALPI,XBETAI,XGAMI ! Constants for saturation vapor pressure 
+                       - XGAMI*ALOG(ZTEMP(:,:,:)) ) !saturation over ice
+    ZREHU_tmp(:,:,:) = (XMV / XMD) * ZREHU_tmp(:,:,:) / (PPABST(:,:,:) - ZREHU_tmp(:,:,:))
+    ZREHU(:,:,:) = PRT(:,:,:,1) / ZREHU_tmp(:,:,:)
+  END WHERE
+END IF
+
+ZREHU(:,:,:) = MIN(MAX(ZREHU(:,:,:), 0.02),0.95)
+
+
+!        1.1    initialisation 
+!
+!Calculations here are for one mode only
+!
+ALLOCATE (NM0(NMODE_SLT))
+ALLOCATE (NM3(NMODE_SLT))
+ALLOCATE (NM6(NMODE_SLT))
+ALLOCATE (ZM(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3), NMODE_SLT*3))
+ALLOCATE (ZMMIN(NMODE_SLT*3))
+ALLOCATE (ZSV(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3), SIZE(PSVT,4)))
+ALLOCATE (ZINIRADIUS(NMODE_SLT))
+    
+ZSV(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
+
+DO JN = 1, NMODE_SLT
+  IMODEIDX = JPSALTORDER(JN)
+  !Calculations here are for one mode only
+  IF (CRGUNITS == "MASS") THEN
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
+  ELSE
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
+  END IF
+
+  !Set counter for number, M3 and M6
+  NM0(JN) = 1 + (JN - 1) * 3
+  NM3(JN) = 2 + (JN - 1) * 3
+  NM6(JN) = 3 + (JN - 1) * 3
+  !Get minimum values possible
+  ZMMIN(NM0(JN)) = XN0MIN_SLT(IMODEIDX)
+  ZRGMIN         = ZINIRADIUS(JN)
+  IF (LVARSIG_SLT) THEN
+    ZSIGMIN = XSIGMIN_SLT
+  ELSE
+    ZSIGMIN = XINISIG_SLT(IMODEIDX)
+  ENDIF
+  ZMMIN(NM3(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**3)*EXP(4.5 * LOG(ZSIGMIN)**2) 
+  ZMMIN(NM6(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**6)*EXP(18. * LOG(ZSIGMIN)**2)
+END DO
+!
+!Set density of aerosol, here sea salt (kg/m3) and water
+ZRHOI = XDENSITY_SALT
+ZRHOLW = XRHOLW
+!Set molecular weight of sea salt and water!NOTE THAT THIS IS NOW IN KG
+ZMI   = XMOLARWEIGHT_SALT
+ZMV   = XMV
+!
+!
+DO JN = 1, NMODE_SLT
+  !
+  IF (LVARSIG_SLT) THEN ! give M6 (case of variable standard deviation)
+  !
+  !Get number concentration (#/molec_{air}==>#/m3)
+    ZM(:,:,:,NM0(JN))=                         &
+         ZSV(:,:,:,1+(JN-1)*3)                 & !#/molec_{air}
+         * XAVOGADRO                           & !==>#/mole
+         / XMD                                 & !==>#/kg_{air}
+         * PRHODREF(:,:,:)                       !==>#/m3
+  ! 
+  !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+    ZM(:,:,:,NM3(JN)) =                        &
+         ZSV(:,:,:,2+(JN-1)*3)                 & !molec_{aer}/molec_{aer}
+         * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+         * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+         * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+         * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+         / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+     !Limit mass concentration to minimum value
+    ZM(:,:,:,NM3(JN)) = MAX(ZM(:,:,:,NM3(JN)), ZMMIN(NM3(JN)))
+  ! 
+    ZM(:,:,:,NM6(JN)) = ZSV(:,:,:,3+(JN-1)*3)  & !um6/molec_{air}*(cm3/m3)
+         * 1.d-6                               & !==> um6/molec_{air}
+         * XAVOGADRO                           & !==> um6/mole_{air}
+         / XMD                                 & !==> um6/kg_{air}
+         * PRHODREF(:,:,:)                       !==> um6/m3_{air}
+     !Limit m6 concentration to minimum value
+    ZM(:,:,:,NM6(JN)) =  MAX(ZM(:,:,:,NM6(JN)), ZMMIN(NM6(JN)))
+  !
+  !Get sigma (only if sigma is allowed to vary)
+    !Get intermediate values for sigma M3^2/(M0*M6) (ORILAM paper, eqn 8)
+    ZSIGMA(:,:,:)=ZM(:,:,:,NM3(JN))**2/(ZM(:,:,:,NM0(JN))*ZM(:,:,:,NM6(JN)))
+    !Limit the intermediate value, can not be larger than 1
+    ZSIGMA(:,:,:)=MIN(1-1E-10,ZSIGMA(:,:,:))
+    !Limit the value for intermediate, can not be smaller than 0
+    ZSIGMA(:,:,:)=MAX(1E-10,ZSIGMA(:,:,:))
+    !Calculate log(sigma)
+    ZSIGMA(:,:,:)= LOG(ZSIGMA(:,:,:))
+    !Finally get the real sigma the negative sign is because of 
+    !The way the equation is written (M3^2/(M0*M6)) instead of (M0*M6)/M3^3
+    ZSIGMA(:,:,:)= EXP(1./3.*SQRT(-ZSIGMA(:,:,:)))
+    !Limit the value to reasonable ones
+    ZSIGMA(:,:,:) =  MAX( XSIGMIN_SLT, MIN( XSIGMAX_SLT, ZSIGMA(:,:,:) ) )
+
+  !
+    !Put back M6 so that it fits the sigma which is possibly modified above
+    !The following makes M6 consistent with N, R, SIGMA
+    ZM(:,:,:,NM6(JN)) = ZM(:,:,:,NM0(JN)) &
+         * ( (ZM(:,:,:,NM3(JN))/ZM(:,:,:,NM0(JN)))**(1./3.) &
+         * exp(-(3./2.)*log(ZSIGMA(:,:,:))**2))**6 &
+         * exp(18.*log(ZSIGMA(:,:,:))**2)
+
+  ELSE ! compute M6 from M0, M3 and SIGMA
+    ! 
+    ZSIGMA(:,:,:) = XINISIG_SLT(JPSALTORDER(JN))
+    IF (LRGFIX_SLT) THEN
+
+    !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+    ZM(:,:,:,NM3(JN)) =                        &
+         ZSV(:,:,:,JN)                         & !molec_{aer}/molec_{aer}
+         * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+         * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+         * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+         * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+         / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+
+    ZM(:,:,:,NM3(JN)) = MAX(ZM(:,:,:,NM3(JN)), ZMMIN(NM3(JN)))
+       PSVT(:,:,:,JN) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+
+    ZM(:,:,:,NM0(JN))=  ZM(:,:,:,NM3(JN))/&
+       ((ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(XINISIG_SLT(JPSALTORDER(JN)))**2))
+
+
+
+    ELSE
+
+    !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+      ZM(:,:,:,NM3(JN)) =                        &
+           ZSV(:,:,:,2+(JN-1)*2)                 & !molec_{aer}/molec_{aer}
+           * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+           * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+           * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+           * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+           / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+
+ 
+    !Get number concentration (#/molec_{air}==>#/m3)
+       ZM(:,:,:,NM0(JN))=                         &
+           ZSV(:,:,:,1+(JN-1)*2)                 & !#/molec_{air}
+           * XAVOGADRO                           & !==>#/mole
+           / XMD                                 & !==>#/kg_{air}
+           * PRHODREF(:,:,:)                       !==>#/m3
+
+    ! Limit concentration to minimum values
+      WHERE ((ZM(:,:,:,NM0(JN)) < ZMMIN(NM0(JN)) ).OR. &
+             (ZM(:,:,:,NM3(JN)) < ZMMIN(NM3(JN)) )) 
+         ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+         ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+         PSVT(:,:,:,1+(JN-1)*2) = ZM(:,:,:,NM0(JN)) * XMD / &
+         (XAVOGADRO * PRHODREF(:,:,:) )
+         PSVT(:,:,:,2+(JN-1)*2) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                                (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+      ENDWHERE
+    END IF
+
+    ZM(:,:,:,NM6(JN)) = ZM(:,:,:,NM0(JN))                   &
+         * ( (ZM(:,:,:,NM3(JN))/ZM(:,:,:,NM0(JN)))**(1./3.) &
+         * exp(-(3./2.)*log(ZSIGMA(:,:,:))**2))**6          &
+         * exp(18.*log(ZSIGMA(:,:,:))**2)
+    
+  !
+  END IF
+  !   
+  !Get number median radius (eqn. 7 in Orilam manuscript)
+  ZRG(:,:,:)=    &
+          (      &
+          ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))*ZM(:,:,:,NM3(JN))    &
+          /(ZM(:,:,:,NM6(JN))*ZM(:,:,:,NM0(JN))*ZM(:,:,:,NM0(JN))*ZM(:,:,:,NM0(JN))) &
+          )                                                                          &
+          ** XSIXTH_SALT 
+
+
+  !ZRG(:,:,:)=MIN(ZRG(:,:,:),ZINIRADIUS(JN))
+  !Give the sigma-values to the passed array
+  IF(PRESENT(PSIG3D)) PSIG3D(:,:,:,JN) = ZSIGMA(:,:,:)
+  !
+  !Set the number concentrations in the passed array
+  IF(PRESENT(PN3D)) PN3D(:,:,:,JN) = ZM(:,:,:,NM0(JN))
+  !
+!  !Get the number median radius
+!  IF(PRESENT(PRG3D)) PRG3D(:,:,:,JN)= ZRG(:,:,:)
+  !
+  !
+  !+ Marine
+!!!!!!!!!!! Wet radius calculus
+
+!Test pour Marine
+
+  ZRG_WET(:,:,:) =  C1 * (ZRG(:,:,:)*1.d-4)**C2 ! Pour le calcul, ZRG en cm! (d'où 1.d-4)
+
+!+ Marine test
+
+  ZRG_WET(:,:,:) =  ZRG_WET(:,:,:) / (C3 * ((ZRG(:,:,:)*1.d-4)**C4) - LOG10(ZREHU(:,:,:)))
+  ZRG_WET(:,:,:) =  ZRG_WET(:,:,:) + (ZRG(:,:,:)*1.d-4)**3 
+  ZRG_WET(:,:,:) = ( ZRG_WET(:,:,:)**(1./3) )*1.d4 ! *1.d4 pour repasser de cm à micromètres
+
+  !Get the number median radius
+  IF(PRESENT(PRG3D)) PRG3D(:,:,:,JN) = ZRG_WET(:,:,:)
+
+
+
+! Wet density calcul
+  ZDENSITY_WET(:,:,:,JN)=(ZRHOI * ZRG(:,:,:) * ZRG(:,:,:) * ZRG(:,:,:) + &
+          ZRHOLW * (ZRG_WET(:,:,:) * ZRG_WET(:,:,:) * ZRG_WET(:,:,:)- &
+          ZRG(:,:,:) * ZRG(:,:,:) * ZRG(:,:,:))) &
+         / (ZRG_WET(:,:,:) * ZRG_WET(:,:,:) * ZRG_WET(:,:,:)) 
+
+!Wet mass
+  ZMASS3D(:,:,:,JN)=    &
+          ZM(:,:,:,NM0(JN)) & !#/m^3_{air}
+           * XPI*4./3.       &
+           * ZDENSITY_WET(:,:,:,JN)           &    !==>kg/m^3_{aeros}/m^3_{air}
+           * ZRG_WET(:,:,:) * ZRG_WET(:,:,:) * ZRG_WET(:,:,:) &
+           * XUM3TOM3_SALT        &    !==>kg/m^3_{air}
+           * exp(4.5*log(ZSIGMA(:,:,:))*log(ZSIGMA(:,:,:)))
+ 
+! Salt Mass
+  ZMASS3D_SLT(:,:,:,JN)=     &
+              ZM(:,:,:,NM0(JN)) &    !#/m^3_{air}
+              * XPI*4./3.       &
+              * ZRHOI           &    !==>kg/m^3_{aeros}/m^3_{air}
+              * ZRG(:,:,:) * ZRG(:,:,:) * ZRG(:,:,:) &
+              * XUM3TOM3_SALT        &    !==>kg/m^3_{air}
+              * exp(4.5*log(ZSIGMA(:,:,:))*log(ZSIGMA(:,:,:)))
+
+  IF(PRESENT(PMASS3D)) THEN 
+    PMASS3D(:,:,:,JN)= ZMASS3D(:,:,:,JN)
+  ENDIF
+
+  IF(PRESENT(PDENSITY_WET)) THEN
+    PDENSITY_WET(:,:,:,JN) = ZDENSITY_WET(:,:,:,JN)
+  ENDIF
+!
+END DO  !Loop on modes
+!
+IF(PRESENT(PM3D)) PM3D(:,:,:,:) = ZM(:,:,:,:)
+!
+DEALLOCATE(ZINIRADIUS)
+DEALLOCATE(ZSV)
+DEALLOCATE(ZMMIN)
+DEALLOCATE(ZM)
+DEALLOCATE(NM6)
+DEALLOCATE(NM3)
+DEALLOCATE(NM0)
+
+!+ Marine
+
+END SUBROUTINE PPP2SALT_WET
+
+!!   ############################################################
+  SUBROUTINE SALT2PPP(             &
+       PSVT                         & !IO [ppp] input scalar variables (moment of distribution)
+       , PRHODREF                   & !I [kg/m3] density of air       
+       , PSIG3D                     & !I [-] standard deviation of aerosol distribution
+       , PRG3D                      & !I [um] number median diameter of aerosol distribution
+       )
+!!   ############################################################
+!
+!!
+!!    PURPOSE
+!!    -------
+!!    Translate the sea salt Mass, RG and SIGMA in the  three moments M0, M3 and M6 given in ppp 
+!! 
+!!    CALLING STRUCTURE NOTE: OPTIONAL VARIABLES
+!!    -------
+!!    CALL PPP2AEROS(PSVT, PRHODREF, PSIG3D=SIGVAR,  &
+!!       PRG3D=RVAR, PN3D=NVAR)
+!!
+!!    REFERENCE
+!!    ---------
+!!    none
+!!
+!!    AUTHOR
+!!    ------
+!!    Pierre TULET (LA)
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!    Alf Grini (CNRM)
+!!
+!!    EXTERNAL
+!!    --------
+!!    None
+!!
+    IMPLICIT NONE
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.     DECLARATIONS
+!               ------------
+!
+!*      0.1    declarations of arguments
+!
+    !INPUT
+    REAL,       DIMENSION(:,:,:),    INTENT(IN)     :: PRHODREF !I [kg/m3] density of air
+    REAL,       DIMENSION(:,:,:,:),  INTENT(IN)     :: PSIG3D   !O [-] standard deviation
+    REAL,       DIMENSION(:,:,:,:),  INTENT(IN)     :: PRG3D    !O [um] number median diameter
+
+    !OUTPUT
+    REAL,       DIMENSION(:,:,:,:),  INTENT(INOUT)  :: PSVT  !IO [#/molec_{air}] first moment
+                                                                !IO [molec_{aer}/molec_{air} 3rd moment
+                                                                !IO [um6/molec_{air}*(cm3/m3)] 6th moment
+!
+!
+!*      0.2    declarations local variables
+!
+    REAL                                  :: ZRHOI               ! [kg/m3] density of aerosol
+    REAL                                  :: ZMI                 ! [kg/mol] molar weight of aerosol
+    REAL                                  :: ZRGMIN              ! [um] minimum radius accepted
+    REAL                                  :: ZSIGMIN             ! minimum standard deviation accepted
+    REAL,DIMENSION(:,:,:,:), ALLOCATABLE  :: ZM                  ! [aerosol units] local array which goes to output later
+    REAL,DIMENSION(:,:,:),   ALLOCATABLE  :: ZSIGMA              ! aersol standard deviation
+    REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN               ! [aerosol units] minimum values for N, sigma, M
+    REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS          ! initial mean radius
+    INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM0                 ! [idx] index for Mode 0 in passed variables
+    INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM3                 ! [idx] indexes for Mode 3 in passed variables
+    INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM6                 ! [idx] indexes for Mode 6 in passed variables
+    INTEGER                               :: JJ, JN              ! [idx] loop counters
+    INTEGER                               :: IMODEIDX
+!
+!-------------------------------------------------------------------------------
+!
+!        1.1    initialisation 
+
+
+    ALLOCATE (NM0(NMODE_SLT))
+    ALLOCATE (NM3(NMODE_SLT))
+    ALLOCATE (NM6(NMODE_SLT))
+    ALLOCATE (ZINIRADIUS(NMODE_SLT))
+    ALLOCATE (ZMMIN(NMODE_SLT*3))
+    ALLOCATE (ZM(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3), NMODE_SLT*3))
+    ALLOCATE (ZSIGMA(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3)))
+
+    !Set density of aerosol, here sea salt (kg/m3)
+    ZRHOI = XDENSITY_SALT
+    !Set molecular weight of sea salt !NOTE THAT THIS IS NOW IN KG
+    ZMI   = XMOLARWEIGHT_SALT
+!
+
+    ! PSVT need to be positive
+!    PSVT(:,:,:,:) = MAX(PSVT(:,:,:,:), XMNH_TINY)
+    
+    DO JN=1,NMODE_SLT
+      IMODEIDX = JPSALTORDER(JN)
+    !Calculations here are for one mode only
+      IF (CRGUNITS=="MASS") THEN
+        ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
+      ELSE
+        ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
+      END IF
+
+    !Set counter for number, M3 and M6
+      NM0(JN) = 1+(JN-1)*3
+      NM3(JN) = 2+(JN-1)*3
+      NM6(JN) = 3+(JN-1)*3
+
+    !Get minimum values possible
+      ZMMIN(NM0(JN)) = XN0MIN_SLT(IMODEIDX)
+      ZRGMIN     =  ZINIRADIUS(JN)
+      IF (LVARSIG_SLT) THEN
+        ZSIGMIN = XSIGMIN_SLT
+      ELSE
+        ZSIGMIN = XINISIG_SLT(IMODEIDX)
+      ENDIF
+      ZMMIN(NM3(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**3)*EXP(4.5 * LOG(ZSIGMIN)**2) 
+      ZMMIN(NM6(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**6)*EXP(18. * LOG(ZSIGMIN)**2)
+    END DO
+
+    !Set density of aerosol, here sea salt (kg/m3)
+    ZRHOI = XDENSITY_SALT
+    !Set molecular weight of sea salt !NOTE THAT THIS IS NOW IN KG
+    ZMI   = XMOLARWEIGHT_SALT
+!
+    DO JN=1,NMODE_SLT
+     !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+     IF (LVARSIG_SLT) THEN
+       ZM(:,:,:,NM3(JN)) =                        &
+            PSVT(:,:,:,2+(JN-1)*3)                & !molec_{aer}/molec_{aer}
+            * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+            * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+            * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+            * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+            / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+    ELSE 
+      IF ((LRGFIX_SLT)) THEN
+        ZM(:,:,:,NM3(JN)) =                   &
+            PSVT(:,:,:,JN)                        & !molec_{aer}/molec_{aer}
+            * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+            * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+            * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+            * XM3TOUM3_SALT                       & !==>um3_{aer}/m3_{air}
+            / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+           ZM(:,:,:,NM3(JN)) = MAX(ZM(:,:,:,NM3(JN)), ZMMIN(NM3(JN)))
+      ELSE
+        ZM(:,:,:,NM3(JN)) =                        &
+            PSVT(:,:,:,2+(JN-1)*2)                & !molec_{aer}/molec_{aer}
+            * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+            * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+            * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+            * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+            / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+      END IF
+    END IF
+! calculate moment 0 from dispersion and mean radius
+    ZM(:,:,:,NM0(JN))=  ZM(:,:,:,NM3(JN))/&
+       ((PRG3D(:,:,:,JN)**3)*EXP(4.5 * LOG(PSIG3D(:,:,:,JN))**2))
+
+! calculate moment 6 from dispersion and mean radius
+    ZM(:,:,:,NM6(JN)) = ZM(:,:,:,NM0(JN)) * (PRG3D(:,:,:,JN)**6) * &
+               EXP(18 *(LOG(PSIG3D(:,:,:,JN)))**2)
+
+    IF (LVARSIG_SLT) THEN
+      WHERE ((ZM(:,:,:,NM0(JN)) .LT. ZMMIN(NM0(JN))).OR.&
+             (ZM(:,:,:,NM3(JN)) .LT. ZMMIN(NM3(JN))).OR.&
+             (ZM(:,:,:,NM6(JN)) .LT. ZMMIN(NM6(JN))))
+        ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+        ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+        ZM(:,:,:,NM6(JN)) = ZMMIN(NM6(JN))
+      END WHERE
+    ELSE  IF (.NOT.(LRGFIX_SLT)) THEN
+
+      WHERE ((ZM(:,:,:,NM0(JN)) .LT. ZMMIN(NM0(JN))).OR.&
+             (ZM(:,:,:,NM3(JN)) .LT. ZMMIN(NM3(JN))))
+        ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+        ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+      END WHERE
+    ENDIF
+
+     
+     ! return to concentration #/m3 =>  (#/molec_{air}
+    IF (LVARSIG_SLT) THEN
+      PSVT(:,:,:,1+(JN-1)*3) = ZM(:,:,:,NM0(JN)) * XMD / &
+                               (XAVOGADRO*PRHODREF(:,:,:))
+
+      PSVT(:,:,:,2+(JN-1)*3) = ZM(:,:,:,NM3(JN)) * XMD  * XPI * 4./3 * ZRHOI / &
+                               (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+
+      PSVT(:,:,:,3+(JN-1)*3) = ZM(:,:,:,NM6(JN)) * XMD  / &
+                               ( XAVOGADRO*PRHODREF(:,:,:) * 1.d-6) 
+    ELSE IF (LRGFIX_SLT) THEN
+      PSVT(:,:,:,JN)         = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                               (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+    ELSE
+      PSVT(:,:,:,1+(JN-1)*2) = ZM(:,:,:,NM0(JN)) * XMD / &
+                               (XAVOGADRO*PRHODREF(:,:,:))
+
+      PSVT(:,:,:,2+(JN-1)*2) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                               (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+    END IF
+!
+END DO  !Loop on modes
+
+DEALLOCATE(ZINIRADIUS)
+DEALLOCATE(ZMMIN)
+DEALLOCATE(ZSIGMA)
+DEALLOCATE(ZM)
+DEALLOCATE(NM6)
+DEALLOCATE(NM3)
+DEALLOCATE(NM0)
+!
+END SUBROUTINE SALT2PPP
+!
+!!   ############################################################
+  SUBROUTINE PPP2SALT1D(             &
+       PSVT                         & !I [ppp] input scalar variables (moment of distribution)
+       , PRHODREF                   & !I [kg/m3] density of air       
+       , PSIG1D                     & !O [-] standard deviation of aerosol distribution
+       , PRG1D                      & !O [um] number median diameter of aerosol distribution
+       , PN1D                       & !O [#/m3] number concentration of aerosols
+       , PMASS1D                    & !O [kg/m3] mass concentration of aerosol
+       , PM1D                       & !O aerosols moments 0, 3 and 6
+       )
+!!   ############################################################
+!
+!!
+!!    PURPOSE
+!!    -------
+!!    Translate the three moments M0, M3 and M6 given in ppp into
+!!    Values which can be understood more easily (R, sigma, N, M)
+!! 
+!!    CALLING STRUCTURE NOTE: OPTIONAL VARIABLES
+!!    -------
+!!    CALL PPP2AEROS(PSVT, PRHODREF, PSIG3D=SIGVAR,  &
+!!       PRG3D=RVAR, PN3D=NVAR, PM3D=MASSVAR)
+!!
+!!    REFERENCE
+!!    ---------
+!!    none
+!!
+!!    AUTHOR
+!!    ------
+!!    Pierre TULET (LA)
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!    2005 Alf Grini (CNRM)
+!!    2006 Jean-Pierre Chaboureau (LA)
+!!
+!!    EXTERNAL
+!!    --------
+!!    None
+!!
+    IMPLICIT NONE
+!!
+!-------------------------------------------------------------------------------
+!
+!*       0.     DECLARATIONS
+!               ------------
+!
+!*      0.1    declarations of arguments
+!
+REAL,       DIMENSION(:,:),  INTENT(INOUT)  :: PSVT      !I [ppp] first moment
+REAL,       DIMENSION(:),    INTENT(IN)     :: PRHODREF !I [kg/m3] density of air
+
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PSIG1D   !O [-] standard deviation
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PRG1D    !O [um] number median diameter
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PN1D     !O [#/m3] number concentration
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PMASS1D  !O [kg_{aer}/m3] mass concentration
+REAL,       DIMENSION(:,:),  OPTIONAL, INTENT(OUT)     :: PM1D     !O aerosols moments 
+!
+!
+!*      0.2    declarations local variables
+!
+REAL                                  :: ZRHOI               ! [kg/m3] density of aerosol
+REAL                                  :: ZMI                 ! [kg/mol] molar weight of aerosol
+REAL                                  :: ZRGMIN              ! [um] minimum radius accepted
+REAL                                  :: ZSIGMIN             ! minimum standard deviation accepted
+REAL,DIMENSION(:,:), ALLOCATABLE  :: ZM                  ! [aerosol units] local array which goes to output later
+REAL,DIMENSION(:,:), ALLOCATABLE  :: ZSV                 ! [sea salts moment concentration]
+REAL,DIMENSION(:),   ALLOCATABLE  :: ZSIGMA              ! [-] standard deviation
+REAL,DIMENSION(:),   ALLOCATABLE  :: ZRG                 ! [um] number median diameter
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN               ! [aerosol units] minimum values for N, sigma, M
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM0                 ! [idx] index for Mode 0 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM3                 ! [idx] indexes for Mode 3 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM6                 ! [idx] indexes for Mode 6 in passed variables
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS          ! initial mean radius
+INTEGER                               :: JN,IMODEIDX,JJ      ! [idx] loop counters
+!
+!-------------------------------------------------------------------------------
+!
+!        1.1    initialisation 
+!
+!Calculations here are for one mode only
+!
+ALLOCATE (NM0(NMODE_SLT))
+ALLOCATE (NM3(NMODE_SLT))
+ALLOCATE (NM6(NMODE_SLT))
+ALLOCATE (ZM(SIZE(PSVT,1), NMODE_SLT*3))
+ALLOCATE (ZMMIN(NMODE_SLT*3))
+ALLOCATE (ZSIGMA(SIZE(PSVT,1)))
+ALLOCATE (ZRG(SIZE(PSVT,1)))
+ALLOCATE (ZSV(SIZE(PSVT,1), SIZE(PSVT,2)))
+ALLOCATE (ZINIRADIUS(NMODE_SLT))
+    
+!ZSV(:,:) = MAX(PSVT(:,:), XMNH_TINY)
+
+DO JN=1,NMODE_SLT
+  IMODEIDX = JPSALTORDER(JN)
+  !Calculations here are for one mode only
+  IF (CRGUNITS=="MASS") THEN
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
+  ELSE
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
+  END IF
+
+  !Set counter for number, M3 and M6
+  NM0(JN) = 1+(JN-1)*3
+  NM3(JN) = 2+(JN-1)*3
+  NM6(JN) = 3+(JN-1)*3
+  !Get minimum values possible
+  ZMMIN(NM0(JN)) = XN0MIN_SLT(IMODEIDX)
+  ZRGMIN         = ZINIRADIUS(JN)
+  IF (LVARSIG_SLT) THEN
+    ZSIGMIN = XSIGMIN_SLT
+  ELSE
+    ZSIGMIN = XINISIG_SLT(IMODEIDX)
+  ENDIF
+  ZMMIN(NM3(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**3)*EXP(4.5 * LOG(ZSIGMIN)**2) 
+  ZMMIN(NM6(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**6)*EXP(18. * LOG(ZSIGMIN)**2)
+END DO
+!
+!Set density of aerosol, here sea salt (kg/m3)
+ZRHOI = XDENSITY_SALT
+!Set molecular weight of sea salt !NOTE THAT THIS IS NOW IN KG
+ZMI   = XMOLARWEIGHT_SALT
+!
+!
+DO JN=1,NMODE_SLT
+  !
+  IF (LVARSIG_SLT) THEN ! give M6 (case of variable standard deviation)
+  !
+  !Get number concentration (#/molec_{air}==>#/m3)
+    ZM(:,NM0(JN))=                         &
+         ZSV(:,1+(JN-1)*3)                 & !#/molec_{air}
+         * XAVOGADRO                           & !==>#/mole
+         / XMD                                 & !==>#/kg_{air}
+         * PRHODREF(:)                       !==>#/m3
+  ! 
+  !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+    ZM(:,NM3(JN)) =                        &
+         ZSV(:,2+(JN-1)*3)                 & !molec_{aer}/molec_{aer}
+         * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+         * PRHODREF(:)                     & !==>kg_{aer}/m3_{air}
+         * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+         * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+         / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+     !Limit mass concentration to minimum value
+    ZM(:,NM3(JN)) = MAX(ZM(:,NM3(JN)), ZMMIN(NM3(JN)))
+  ! 
+    ZM(:,NM6(JN)) = ZSV(:,3+(JN-1)*3)  & !um6/molec_{air}*(cm3/m3)
+         * 1.d-6                               & !==> um6/molec_{air}
+         * XAVOGADRO                           & !==> um6/mole_{air}
+         / XMD                                 & !==> um6/kg_{air}
+         * PRHODREF(:)                       !==> um6/m3_{air}
+     !Limit m6 concentration to minimum value
+    ZM(:,NM6(JN)) =  MAX(ZM(:,NM6(JN)), ZMMIN(NM6(JN)))
+  !
+  !Get sigma (only if sigma is allowed to vary)
+    !Get intermediate values for sigma M3^2/(M0*M6) (ORILAM paper, eqn 8)
+    ZSIGMA(:)=ZM(:,NM3(JN))**2/(ZM(:,NM0(JN))*ZM(:,NM6(JN)))
+    !Limit the intermediate value, can not be larger than 1
+    ZSIGMA(:)=MIN(1-1E-10,ZSIGMA(:))
+    !Limit the value for intermediate, can not be smaller than 0
+    ZSIGMA(:)=MAX(1E-10,ZSIGMA(:))
+    !Calculate log(sigma)
+    ZSIGMA(:)= LOG(ZSIGMA(:))
+    !Finally get the real sigma the negative sign is because of 
+    !The way the equation is written (M3^2/(M0*M6)) instead of (M0*M6)/M3^3
+    ZSIGMA(:)= EXP(1./3.*SQRT(-ZSIGMA(:)))
+    !Limit the value to reasonable ones
+    ZSIGMA(:) =  MAX( XSIGMIN_SLT, MIN( XSIGMAX_SLT, ZSIGMA(:) ) )
+
+  !
+    !Put back M6 so that it fits the sigma which is possibly modified above
+    !The following makes M6 consistent with N, R, SIGMA
+    ZM(:,NM6(JN)) = ZM(:,NM0(JN)) &
+         * ( (ZM(:,NM3(JN))/ZM(:,NM0(JN)))**(1./3.) &
+         * exp(-(3./2.)*log(ZSIGMA(:))**2))**6 &
+         * exp(18.*log(ZSIGMA(:))**2)
+
+  ELSE ! compute M6 from M0, M3 and SIGMA
+    ! 
+    ZSIGMA(:) = XINISIG_SLT(JPSALTORDER(JN))
+    IF (LRGFIX_SLT) THEN
+
+    !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+      ZM(:,NM3(JN)) =                        &
+           ZSV(:,JN)                         & !molec_{aer}/molec_{aer}
+           * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+           * PRHODREF(:)                     & !==>kg_{aer}/m3_{air}
+           * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+           * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+           / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+      ZM(:,NM3(JN)) = MAX(ZM(:,NM3(JN)), ZMMIN(NM3(JN)))
+
+      ZM(:,NM0(JN))=  ZM(:,NM3(JN))/&
+         ((ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(XINISIG_SLT(JPSALTORDER(JN)))**2))
+
+    ELSE
+
+    !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+      ZM(:,NM3(JN)) =                        &
+           ZSV(:,2+(JN-1)*2)                 & !molec_{aer}/molec_{aer}
+           * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+           * PRHODREF(:)                     & !==>kg_{aer}/m3_{air}
+           * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+           * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+           / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+
+ 
+    !Get number concentration (#/molec_{air}==>#/m3)
+      ZM(:,NM0(JN))=                         &
+          ZSV(:,1+(JN-1)*2)                 & !#/molec_{air}
+          * XAVOGADRO                           & !==>#/mole
+          / XMD                                 & !==>#/kg_{air}
+          * PRHODREF(:)                       !==>#/m3
+
+    ! Limit concentration to minimum values
+      WHERE ((ZM(:,NM0(JN)) < ZMMIN(NM0(JN)) ).OR. &
+             (ZM(:,NM3(JN)) < ZMMIN(NM3(JN)) )) 
+        ZM(:,NM0(JN)) = ZMMIN(NM0(JN))
+        ZM(:,NM3(JN)) = ZMMIN(NM3(JN))
+        PSVT(:,1+(JN-1)*2) = ZM(:,NM0(JN)) * XMD / &
+                            (XAVOGADRO * PRHODREF(:) )
+        PSVT(:,2+(JN-1)*2) = ZM(:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                             (ZMI*PRHODREF(:)*XM3TOUM3_SALT)
+      ENDWHERE
+
+    END IF
+
+    ZM(:,NM6(JN)) = ZM(:,NM0(JN))                   &
+         * ( (ZM(:,NM3(JN))/ZM(:,NM0(JN)))**(1./3.) &
+         * exp(-(3./2.)*log(ZSIGMA(:))**2))**6          &
+         * exp(18.*log(ZSIGMA(:))**2)
+    
+  !
+  END IF
+  !   
+  !Get number median radius (eqn. 7 in Orilam manuscript)
+  ZRG(:)=    &
+          (      &
+          ZM(:,NM3(JN))*ZM(:,NM3(JN))*ZM(:,NM3(JN))*ZM(:,NM3(JN))    &
+          /(ZM(:,NM6(JN))*ZM(:,NM0(JN))*ZM(:,NM0(JN))*ZM(:,NM0(JN))) &
+          )                                                                          &
+          ** XSIXTH_SALT 
+  !ZRG(:)=MIN(ZRG(:),ZINIRADIUS(JN))
+  !Give the sigma-values to the passed array
+  IF(PRESENT(PSIG1D)) PSIG1D(:,JN) = ZSIGMA(:)
+  !
+  !Set the number concentrations in the passed array
+  IF(PRESENT(PN1D)) PN1D(:,JN) = ZM(:,NM0(JN))
+  !
+  !Get the number median radius
+  IF(PRESENT(PRG1D)) PRG1D(:,JN)= ZRG(:)
+  !
+  IF(PRESENT(PMASS1D))THEN
+       PMASS1D(:,JN)=     &
+            ZM(:,NM0(JN)) &    !#/m^3_{air}
+            * XPI*4./3.       &    
+            * ZRHOI           &    !==>kg/m^3_{aeros}/m^3_{air}
+            * ZRG(:) * ZRG(:) * ZRG(:) &
+            * XUM3TOM3_SALT        &    !==>kg/m^3_{air}
+            * exp(4.5*log(ZSIGMA(:))*log(ZSIGMA(:)))
+  ENDIF
+!
+END DO  !Loop on modes
+!
+IF(PRESENT(PM1D)) PM1D(:,:) = ZM(:,:)
+!
+DEALLOCATE(ZINIRADIUS)
+DEALLOCATE(ZSV)
+DEALLOCATE(ZRG)
+DEALLOCATE(ZSIGMA)
+DEALLOCATE(ZMMIN)
+DEALLOCATE(ZM)
+DEALLOCATE(NM6)
+DEALLOCATE(NM3)
+DEALLOCATE(NM0)
+!
+END SUBROUTINE PPP2SALT1D
+
+!!   ############################################################
+END MODULE MODE_SALT_PSD_WET
diff --git a/src/MNH/mode_saltopt.f90 b/src/MNH/mode_saltopt.f90
index ac1b4099d92e0dd752a1e5460a39f8ba41587e0d..d7fd28f3f1912d0a897de0aa93aebc050b6a761a 100644
--- a/src/MNH/mode_saltopt.f90
+++ b/src/MNH/mode_saltopt.f90
@@ -14,8 +14,11 @@
 !!    PURPOSE
 !!    -------
 !!
+!!    MODIFICATIONS
+!!    -------------
 !!
-
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!
   IMPLICIT NONE
   PUBLIC
   PRIVATE :: SALTOPT_LKT
@@ -27,6 +30,9 @@ CONTAINS
        PSVT                   & !I [moments/molec_{air}] Transported moments of sea salts
        ,PZZ                   & !I [m] height of layers
        ,PRHODREF              & !I [kg/m3] density of air
+       ,PTHT                  &
+       ,PPABST                &
+       ,PRT                   &
        ,PPIZA_WVL             & !O [-] single scattering albedo of sea salt layer for all SW wavelengths
        ,PCGA_WVL              & !O [-] assymetry factor for sea salt layer for all SW wavelengths
        ,PTAUREL_WVL           & !O [-] opt.depth/opt.depth(550) for sea salt layer for all SW wvl 
@@ -35,14 +41,18 @@ CONTAINS
        )
     
 
-    USE MODE_SALT_PSD   !Conversion procedures from moments to radius, ,number, mass and sigma
+    USE MODE_SALT_PSD_WET   !Conversion procedures from moments to radius, ,number, mass and sigma
+    USE MODE_SALT_PSD
     USE MODD_SALT, ONLY : NMODE_SLT
+
     IMPLICIT NONE
     
     !INPUT
     REAL, DIMENSION(:,:,:,:),INTENT(IN)      :: PSVT       !I [moments/molec_{air}] transported moments of sea salt
     REAL, DIMENSION(:,:,:),INTENT(IN)        :: PZZ        !I [m] height of layers
     REAL, DIMENSION(:,:,:),INTENT(IN)        :: PRHODREF   !I [kg/m3] density of air
+    REAL, DIMENSION(:,:,:),INTENT(IN)        :: PTHT, PPABST   !I
+    REAL, DIMENSION(:,:,:,:),INTENT(IN)      :: PRT
     INTEGER, INTENT(IN)                      :: KSWB       !I [nbr] number of shortwave wavelengths
     REAL, PARAMETER                          :: EPSILON=1.e-8 !a very low number for optical depth in a layer
 
@@ -57,6 +67,7 @@ CONTAINS
     REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3), NMODE_SLT) :: ZMASS         ![kg/m3] mass of one sea salt mode
     REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3), NMODE_SLT) :: ZRADIUS       ![um] number median radius of one sea salt mode
     REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3), NMODE_SLT) :: ZSIGMA        ![-] dispersion coefficient one sea salt mode
+    REAL, DIMENSION(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3), NMODE_SLT) :: ZDENSITY        ![-] [g/m2] density of wet aerosol (water + sea salt)
     REAL, ALLOCATABLE, DIMENSION(:,:,:,:)                   :: ZTAU550_MDE   ![-] opt.depth 550nm one mode
     REAL, ALLOCATABLE, DIMENSION(:,:,:,:,:)                 :: ZTAU_WVL_MDE  ![-] opt.depth @ wvl, one mode
     REAL, ALLOCATABLE, DIMENSION(:,:,:,:,:)                 :: ZPIZA_WVL_MDE ![-] single scattering albedo @ wvl, one mode
@@ -70,15 +81,26 @@ CONTAINS
     ALLOCATE(ZCGA_WVL_MDE(SIZE(PTAU550,1),SIZE(PTAU550,2),SIZE(PTAU550,3),KSWB,NMODE_SLT))
     
     ZSVT(:,:,:,:)=PSVT(:,:,:,:)
-
-    CALL PPP2SALT(     &
+    CALL PPP2SALT_WET(     &
          ZSVT                                   & !I [moments/molec_{air}] moments of sea salt for all modes
          ,PRHODREF                              & !I [kg/m3] air density
+         ,PPABST                                & !I Pression
+         ,PTHT                                  & !I Potential temperature
+         ,PRT                                   & !I Large scale vapor mixing ratio
          ,PSIG3D=ZSIGMA                         & !O [-] dispersion coefficient
          ,PRG3D=ZRADIUS                         & !O [um] number median radius
          ,PMASS3D=ZMASS                         & !O [kg/m3] mass of sea salt
+         ,PDENSITY_WET=ZDENSITY                 & !0 [g/m2] density of wet aerosol (water + salt)
          )
-       
+
+!    CALL PPP2SALT(     &
+!         ZSVT                                   & !I [moments/molec_{air}] moments of sea salt for all modes
+!         ,PRHODREF                              & !I [kg/m3] air density
+!         ,PSIG3D=ZSIGMA                         & !O [-] dispersion coefficient
+!         ,PRG3D=ZRADIUS                         & !O [um] number median radius
+!         ,PMASS3D=ZMASS                         & !O [kg/m3] mass of sea salt
+!         )
+
     DO JMDE=1,NMODE_SLT
        !Get sea salt optical properties from look up tables
        CALL SALTOPT_LKT(                     &
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index a903c134fac224153fbdb1462f1b5942baefb0fa..8731123547563e0128956764c67786a1da8cde16 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 92fa8499839e57ba36cd792c698c10913e1fc6f1..0b7e674471ace04ac31394ff115436386cd9c2c8 100644
--- a/src/MNH/modn_salt.f90
+++ b/src/MNH/modn_salt.f90
@@ -25,6 +25,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!    Original 24/02/05
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -38,6 +39,6 @@ IMPLICIT NONE
 !
 NAMELIST /NAM_SALT/ LSALT, CRGUNITS, LVARSIG_SLT,LSEDIMSALT,XN0MIN_SLT, XINIRADIUS_SLT, &
                XINISIG_SLT, XSIGMIN_SLT, XSIGMAX_SLT, XCOEFRADMAX_SLT, XCOEFRADMIN_SLT, &
-               NMODE_SLT, LRGFIX_SLT, LDEPOS_SLT
+               NMODE_SLT, LRGFIX_SLT, LDEPOS_SLT, LONLY
 !
 END MODULE MODN_SALT
diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90
index a11651b58556f0605edf0f6d6f4e4a325ad29826..b4ea670d87dd6107b79e2bcc5a5a95fc73aacdb3 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 2bec821d736e9e3a9ff5ff6a75182ab7f12edfd9..807b5e1c604aeac9724ff37c7bda41f30de547bf 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 8f4e4835a34e939884aa517bc353b000a844383b..ade924eadf78caaefc6d50429522bb2b4882e267 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 e8f0e9d738b2c9c6fe179715410d8ec5850e9f33..83d45636d8ac4bef7534dd6e1ddab45f402761ed 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 cba6d68cd76965ba93841e36c1390241bb450540..15878a3b6dac327f77cab71ab0175b47369089bc 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 bff76dfe979c1d70196c4698031c2fa097ef0aee..bc40e889136a14db3727ae76c2c90da0e3572948 100644
--- a/src/MNH/salt_filter.f90
+++ b/src/MNH/salt_filter.f90
@@ -45,19 +45,8 @@ END MODULE MODI_SALT_FILTER
 !!   MODIFICATIONS
 !!    -------------
 !!   Original
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
-! Entry variables:
-!
-! PRSVS(INOUT)       -Array of moments included in PRSVS
-!
-!*************************************************************
-! Exit variables:
-!
-!*************************************************************
-! Variables used during the deposition velocity calculation
-! 
-! ZVGK       -Polydisperse settling velocity of the kth moment (m/s)
-!************************************************************
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -66,10 +55,12 @@ END MODULE MODI_SALT_FILTER
 !   IMPLICIT ARGUMENTS
 !
 USE MODD_SALT
-USE MODD_CSTS_SALT
-!
 USE MODE_SALT_PSD
-USE MODD_CST, ONLY : XMNH_TINY
+
+!+ Marine
+USE MODI_INIT_SALT
+!- Marine
+
 !
 IMPLICIT NONE
 !
@@ -78,27 +69,156 @@ IMPLICIT NONE
 REAL,  DIMENSION(:,:,:,:),  INTENT(INOUT) :: PSV
 REAL,  DIMENSION(:,:,:),    INTENT(IN)    :: PRHODREF
 !
-!*       0.2   Declarations of local variables :
-!
-INTEGER :: JN
-INTEGER :: IMODEIDX
-REAL,    DIMENSION(NMODE_SLT*3) :: ZPMIN
-REAL,    DIMENSION(NMODE_SLT)   :: ZINIRADIUS
-REAL,    DIMENSION(SIZE(PSV,1), SIZE(PSV,2), SIZE(PSV,3), NMODE_SLT*3)  :: ZM                  ! [aerosol units] local array which goes to output later
-
-REAL :: ZRGMIN, ZSIGMIN
-REAL :: ZRHOP, ZMI
-INTEGER,DIMENSION(NMODE_SLT) :: NM0, NM3, NM6
-!
-!*       0.3  initialize constant
-!
-ZRHOP = XDENSITY_SALT
-ZMI   = XMOLARWEIGHT_SALT ! molecular mass in kg/mol
-!
+!*      0.2    declarations local variables
+!
+REAL                                  :: ZRHOI               ! [kg/m3] density of aerosol
+REAL                                  :: ZMI                 ! [kg/mol] molar weight of aerosol
+REAL                                  :: ZRGMIN              ! [um] minimum radius accepted
+REAL                                  :: ZSIGMIN             ! minimum standard deviation accepted
+REAL,DIMENSION(:,:,:,:), ALLOCATABLE  :: ZM                  ! [aerosol units] local array which goes to output later
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN               ! [aerosol units] minimum values for N, sigma, M
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM0                 ! [idx] index for Mode 0 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM3                 ! [idx] indexes for Mode 3 in passed variables
+INTEGER,DIMENSION(:),    ALLOCATABLE  :: NM6                 ! [idx] indexes for Mode 6 in passed variables
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS          ! initial mean radius
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZINISIGMA           ! initial standard deviation
+INTEGER                               :: JN,IMODEIDX,JJ      ! [idx] loop counters
+
 !-------------------------------------------------------------------------------
+!+ Marine
+CALL INIT_SALT
+!- Marine
+
+
+ALLOCATE (NM0(NMODE_SLT))
+ALLOCATE (NM3(NMODE_SLT))
+ALLOCATE (NM6(NMODE_SLT))
+ALLOCATE (ZM(SIZE(PSV,1), SIZE(PSV,2), SIZE(PSV,3), NMODE_SLT*3))
+ALLOCATE (ZMMIN(NMODE_SLT*3))
+ALLOCATE (ZINIRADIUS(NMODE_SLT))
+ALLOCATE (ZINISIGMA(NMODE_SLT))
+
+PSV(:,:,:,:) = MAX(PSV(:,:,:,:), XMNH_TINY)
+
+DO JN=1,NMODE_SLT
+  IMODEIDX = JPSALTORDER(JN)
+  !Calculations here are for one mode only
+   ZINISIGMA(JN) = XINISIG_SLT(IMODEIDX)
+  IF (CRGUNITS=="MASS") THEN
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
+  ELSE
+    ZINIRADIUS(JN) = XINIRADIUS_SLT(IMODEIDX)
+  END IF
+
+  !Set counter for number, M3 and M6
+  NM0(JN) = 1+(JN-1)*3
+  NM3(JN) = 2+(JN-1)*3
+  NM6(JN) = 3+(JN-1)*3
+  !Get minimum values possible
+  ZMMIN(NM0(JN)) = XN0MIN_SLT(IMODEIDX)
+  ZRGMIN         = ZINIRADIUS(JN)
+  IF (LVARSIG_SLT) THEN
+    ZSIGMIN = XSIGMIN_SLT
+  ELSE
+    ZSIGMIN = XINISIG_SLT(IMODEIDX)
+  ENDIF
+  ZMMIN(NM3(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**3)*EXP(4.5 * LOG(ZSIGMIN)**2)
+  ZMMIN(NM6(JN)) = ZMMIN(NM0(JN)) * (ZRGMIN**6)*EXP(18. * LOG(ZSIGMIN)**2)
+END DO
+!
+!Set density of aerosol, here dust (kg/m3)
+ZRHOI = XDENSITY_SALT
+!Set molecular weight of dust !NOTE THAT THIS IS NOW IN KG
+ZMI   = XMOLARWEIGHT_SALT
+!
+DO JN=1,NMODE_SLT
+     !calculate moment 3 from total aerosol mass (molec_{aer}/molec_{air} ==>
+     IF (LVARSIG_SLT) THEN
+     ZM(:,:,:,NM3(JN)) =                        &
+          PSV(:,:,:,2+(JN-1)*3)                & !molec_{aer}/molec_{aer}
+          * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+          * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+          * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+          * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+          / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+    ELSE
+       IF ((LRGFIX_SLT)) THEN
+          ZM(:,:,:,NM3(JN)) =                   &
+          PSV(:,:,:,JN)                        & !molec_{aer}/molec_{aer}
+          * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+          * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+          * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+          * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+          / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+      ELSE
+          ZM(:,:,:,NM3(JN)) =                   &
+          PSV(:,:,:,2+(JN-1)*2)                & !molec_{aer}/molec_{aer}
+          * (ZMI/XMD)                           & !==>kg_{aer}/kg_{aer}
+          * PRHODREF(:,:,:)                     & !==>kg_{aer}/m3_{air}
+          * (1.d0/ZRHOI)                        & !==>m3_{aer}/m3_{air}
+          * XM3TOUM3_SALT                            & !==>um3_{aer}/m3_{air}
+          / (XPI * 4./3.)                         !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
+      END IF
+    END IF
+
+! calculate moment 0 from dispersion and mean radius
+     ZM(:,:,:,NM0(JN))=  ZM(:,:,:,NM3(JN))/&
+       ((ZINIRADIUS(JN)**3)*EXP(4.5 * LOG(ZINISIGMA(JN))**2))
+
+
+! calculate moment 6 from dispersion and mean radius
+     ZM(:,:,:,NM6(JN)) = ZM(:,:,:,NM0(JN)) * (ZINIRADIUS(JN)**6) * &
+               EXP(18 *(LOG(ZINISIGMA(JN)))**2)
+
+     IF (LVARSIG_SLT) THEN
+     WHERE ((ZM(:,:,:,NM0(JN)) .LT. ZMMIN(NM0(JN))).OR.&
+            (ZM(:,:,:,NM3(JN)) .LT. ZMMIN(NM3(JN))).OR.&
+            (ZM(:,:,:,NM6(JN)) .LT. ZMMIN(NM6(JN))))
+     ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+     ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+     ZM(:,:,:,NM6(JN)) = ZMMIN(NM6(JN))
+     END WHERE
+
+     ELSE IF (.NOT.(LRGFIX_SLT)) THEN
+
+     WHERE ((ZM(:,:,:,NM0(JN)) .LT. ZMMIN(NM0(JN))).OR.&
+            (ZM(:,:,:,NM3(JN)) .LT. ZMMIN(NM3(JN))))
+     ZM(:,:,:,NM0(JN)) = ZMMIN(NM0(JN))
+     ZM(:,:,:,NM3(JN)) = ZMMIN(NM3(JN))
+     END WHERE
+     ENDIF
+
+    ! return to concentration #/m3 =>  (#/molec_{air}
+     IF (LVARSIG_SLT) THEN
+     PSV(:,:,:,1+(JN-1)*3) = ZM(:,:,:,NM0(JN)) * XMD / &
+                              (XAVOGADRO*PRHODREF(:,:,:))
+
+     PSV(:,:,:,2+(JN-1)*3) = ZM(:,:,:,NM3(JN)) * XMD  * XPI * 4./3 * ZRHOI / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+
+     PSV(:,:,:,3+(JN-1)*3) = ZM(:,:,:,NM6(JN)) * XMD  / &
+                              ( XAVOGADRO*PRHODREF(:,:,:) * 1.d-6)
+     ELSE IF (LRGFIX_SLT) THEN
+      PSV(:,:,:,JN)        = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+     ELSE
+     PSV(:,:,:,1+(JN-1)*2) = ZM(:,:,:,NM0(JN)) * XMD / &
+                              (XAVOGADRO*PRHODREF(:,:,:))
+
+     PSV(:,:,:,2+(JN-1)*2) = ZM(:,:,:,NM3(JN)) * XMD * XPI * 4./3. * ZRHOI  / &
+                              (ZMI*PRHODREF(:,:,:)*XM3TOUM3_SALT)
+     END IF
 
 !
-PSV(:,:,:,:) =  MAX(PSV(:,:,:,:), XMNH_TINY)
-!
+END DO  !Loop on modes
+
+DEALLOCATE(ZINIRADIUS)
+DEALLOCATE(ZMMIN)
+DEALLOCATE(ZINISIGMA)
+DEALLOCATE(ZM)
+DEALLOCATE(NM6)
+DEALLOCATE(NM3)
+DEALLOCATE(NM0)
+
 
 END SUBROUTINE SALT_FILTER
diff --git a/src/MNH/saltlfin.f90 b/src/MNH/saltlfin.f90
index c3a2650b09b25c8d0c1e9b9d87396867f464e2f3..3b637b2785bdb83d2d1002ef60ffa646c4963729 100644
--- a/src/MNH/saltlfin.f90
+++ b/src/MNH/saltlfin.f90
@@ -14,10 +14,14 @@
 !
 INTERFACE
 !
-SUBROUTINE SALTLFI_n(PSV, PRHODREF)
+!++cb++24/10/16
+!SUBROUTINE SALTLFI_n(PSV, PRHODREF)
+SUBROUTINE SALTLFI_n(PSV, PRHODREF, PZZ)
 IMPLICIT NONE
-REAL,       DIMENSION(:,:,:,:),  INTENT(INOUT) :: PSV
-REAL,       DIMENSION(:,:,:),  INTENT(IN) :: PRHODREF
+REAL, DIMENSION(:,:,:,:),  INTENT(INOUT) :: PSV
+REAL, DIMENSION(:,:,:),    INTENT(IN)    :: PRHODREF
+REAL, DIMENSION(:,:,:),    INTENT(IN)    :: PZZ
+
 END SUBROUTINE SALTLFI_n
 !
 END INTERFACE
@@ -26,7 +30,8 @@ END MODULE MODI_SALTLFI_n
 !
 !
 !     ############################################################
-      SUBROUTINE SALTLFI_n(PSV, PRHODREF)
+!      SUBROUTINE SALTLFI_n(PSV, PRHODREF)
+      SUBROUTINE SALTLFI_n(PSV, PRHODREF, PZZ)
 !     ############################################################
 !
 !!    PURPOSE
@@ -43,9 +48,9 @@ END MODULE MODI_SALTLFI_n
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!    none
-!!
 !!    2014    P.Tulet  modif calcul ZM
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+
 !!    EXTERNAL
 !!    --------
 !!    None
@@ -57,7 +62,9 @@ END MODULE MODI_SALTLFI_n
 !
 USE MODD_SALT
 USE MODD_NSV
-USE MODD_GRID_n, ONLY: XZZ
+!++cb++24/10/16
+!USE MODD_GRID_n, ONLY: XZZ
+!--cb--
 USE MODD_CSTS_SALT
 USE MODD_CST, ONLY :    &
        XPI              & !Definition of pi
@@ -75,6 +82,7 @@ IMPLICIT NONE
 !
 REAL,   DIMENSION(:,:,:,:),    INTENT(INOUT) :: PSV
 REAL,   DIMENSION(:,:,:),      INTENT(IN) :: PRHODREF
+REAL,   DIMENSION(:,:,:),      INTENT(IN) :: PZZ
 !
 !
 !*      0.2    declarations local variables
@@ -88,6 +96,9 @@ REAL,DIMENSION(:),       ALLOCATABLE  :: ZMMIN
 REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS, ZINISIGMA
 REAL,DIMENSION(:,:),     ALLOCATABLE  :: ZSEA
 INTEGER :: IKU
+!+Marine
+INTEGER :: IMOMENTS
+!-Marine
 INTEGER :: JI, JJ, JN, JK  ! loop counter
 INTEGER :: IMODEIDX  ! index mode
 REAL, PARAMETER  :: ZN_SALT=0.1 ! particles of sea salt/cm3 {air}
@@ -102,6 +113,7 @@ REAL    :: ZN_SALTN
 !        1.1    initialisation 
 !
 IKU=SIZE(PSV,3)
+!+ Marine
 !
 ALLOCATE (IM0(NMODE_SLT))
 ALLOCATE (IM3(NMODE_SLT))
@@ -115,11 +127,20 @@ ALLOCATE (ZMMIN(NMODE_SLT*3))
 ALLOCATE (ZSEA(SIZE(PSV,1), SIZE(PSV,2)))
 
 ZSEA(:,:) = 0.
-WHERE ((XZZ(:,:,1) .LT. 0.1).AND.(XZZ(:,:,1) .GE. 0.)) 
+!++cb++20/10/16
+!WHERE ((XZZ(:,:,1) .LT. 0.1).AND.(XZZ(:,:,1) .GE. 0.)) 
+!  ZSEA(:,:) = 1.
+!END WHERE
+!++cb++24/10/16
+!WHERE (XZZ(:,:,1) .LE. 0.01) 
+WHERE (PZZ(:,:,1) .LE. 0.01)
+!--cb--
   ZSEA(:,:) = 1.
 END WHERE
+!--cb--
 !
 !
+!+ Marine
 DO JN = 1, NMODE_SLT
   IM0(JN) = 1+(JN-1)*3
   IM3(JN) = 2+(JN-1)*3
@@ -146,8 +167,8 @@ DO JN = 1, NMODE_SLT
 ENDDO
 !
 !
-ZRHOI = XDENSITY_SALT !1.8e3 !++changed alfgr
-!ZMI   = XMOLARWEIGHT_SALT*1.D3 !100.  !++changed alfgr
+!XDENSITY_SALT est fix� dans modd_csts_salt.f90
+ZRHOI = XDENSITY_SALT 
 ZMI   = XMOLARWEIGHT_SALT 
 ZDEN2MOL = 1E-6 * XAVOGADRO / XMD
 ZFAC=(4./3.)*XPI*ZRHOI*1.e-9
@@ -158,18 +179,49 @@ DO JN=1,NMODE_SLT
 !*       1.1    calculate moment 0 from sea salt number by m3
 !
 ! initial vertical profil of sea salt  and convert in  #/m3
-  IF (JN == 1) ZN_SALTN = 1E-4  *  ZN_SALT *1E6
-  IF (JN == 2) ZN_SALTN = 1.   *  ZN_SALT *1E6
-  IF (JN == 3) ZN_SALTN = 10 *  ZN_SALT *1E6
-  DO JK=1, SIZE(XZZ,3) 
-    DO JJ=1, SIZE(XZZ,2) 
-      DO JI=1, SIZE(XZZ,1) 
-        IF (XZZ(JI,JJ,JK) .LT. 600.) THEN
-         ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN 
-        ELSE IF ((XZZ(JI,JJ,JK) .GE. 600.).AND.(XZZ(JI,JJ,JK) .LT. 1000.)) THEN 
-         ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN - ZN_SALTN*(1.-1E-3)*(XZZ(JI,JJ,JK)-600.) / 400.
-        ELSE IF (XZZ(JI,JJ,JK) .GE. 1000.) THEN
-         ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN *1E-3
+!+Marine : (reprendre XN0MIN_SLT de modd_salt.f90).
+! Pas plus simple de fixer une dimension � ZN_SALT qui d�pend de JN pour ne pas
+! avoir � rappeler le sch�ma d'�mission?
+
+  IF(NMODE_SLT == 5)THEN
+
+
+    IF (JN == 1) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 2) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 3) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 4) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 5) ZN_SALTN = XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+
+  ELSE 
+!  IF (JN == 1) ZN_SALTN = 1E-4  *  ZN_SALT *1E6
+!  IF (JN == 2) ZN_SALTN = 1.   *  ZN_SALT *1E6
+!  IF (JN == 3) ZN_SALTN = 10 *  ZN_SALT *1E6
+
+    IF (JN == 1) ZN_SALTN =  XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 2) ZN_SALTN =  XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+    IF (JN == 3) ZN_SALTN =  XN0MIN_SLT(JPSALTORDER(JN)) *  ZN_SALT *1E6
+
+  END IF
+
+
+!-Marine
+
+  DO JK=1, SIZE(PSV,3) 
+    DO JJ=1, SIZE(PSV,2) 
+      DO JI=1, SIZE(PSV,1) 
+!++cb++24/10/16
+!        IF (XZZ(JI,JJ,JK) .LT. 600.) THEN
+        IF (PZZ(JI,JJ,JK) .LT. 600.) THEN
+          ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN 
+!        ELSE IF ((XZZ(JI,JJ,JK) .GE. 600.).AND.(XZZ(JI,JJ,JK) .LT. 1000.)) THEN 
+        ELSE IF ((PZZ(JI,JJ,JK) .GE. 600.).AND.(PZZ(JI,JJ,JK) .LT. 1000.)) THEN
+!          ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN - ZN_SALTN*(1.-1E-3)*(XZZ(JI,JJ,JK)-600.) / 400.
+          ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN - &
+                                 ZN_SALTN * (1.-1E-3) * (PZZ(JI,JJ,JK)-600.) / 400.
+!        ELSE IF (XZZ(JI,JJ,JK) .GE. 1000.) THEN
+        ELSE IF (PZZ(JI,JJ,JK) .GE. 1000.) THEN
+          ZM(JI,JJ,JK,IM0(JN)) = ZN_SALTN * 1E-3
+!--cb--
         END IF
       END DO
     END DO
@@ -179,7 +231,7 @@ DO JN=1,NMODE_SLT
     END WHERE
     WHERE ((ZSEA(:,:) .GT. 0.).AND.(ZSEA(:,:) .LT. 1.))
       ZM(:,:,JK,IM0(JN)) = ZM(:,:,JK,IM0(JN))-(ZM(:,:,JK,IM0(JN)) -ZN_SALTN *1E-3) * &
-      (1. - ZSEA(:,:))
+                           (1. - ZSEA(:,:))
     END WHERE
   END DO
 
@@ -198,12 +250,31 @@ DO JN=1,NMODE_SLT
   ZM(:,:,:,IM6(JN)) = MAX(ZMMIN(IM6(JN)), ZM(:,:,:,IM6(JN)))
 !
 !*       1.4    output concentration
+!+ Marine
+!  PSV(:,:,:,1+(JN-1)*3) = ZM(:,:,:,IM0(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:))
+!  PSV(:,:,:,2+(JN-1)*3) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
+!                           (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+!
+!  PSV(:,:,:,3+(JN-1)*3) = ZM(:,:,:,IM6(JN)) *  XMD / (XAVOGADRO*PRHODREF(:,:,:)*1.d-6)
 !
-  PSV(:,:,:,1+(JN-1)*3) = ZM(:,:,:,IM0(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:))
-  PSV(:,:,:,2+(JN-1)*3) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
-                           (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+!++cb++20/10/16
+  IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG + 1) / NMODE_SLT
+!--cb--
 
-  PSV(:,:,:,3+(JN-1)*3) = ZM(:,:,:,IM6(JN)) *  XMD / (XAVOGADRO*PRHODREF(:,:,:)*1.d-6)
+  IF (IMOMENTS == 3) THEN
+    PSV(:,:,:,1+(JN-1)*3) = ZM(:,:,:,IM0(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:))
+    PSV(:,:,:,2+(JN-1)*3) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
+                            (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+
+    PSV(:,:,:,3+(JN-1)*3) = ZM(:,:,:,IM6(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:)*1.d-6)
+  ELSE IF (IMOMENTS == 2) THEN
+    PSV(:,:,:,1+(JN-1)*2) = ZM(:,:,:,IM0(JN)) * XMD / (XAVOGADRO*PRHODREF(:,:,:))
+    PSV(:,:,:,2+(JN-1)*2) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
+                            (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+  ELSE 
+    PSV(:,:,:,JN) = ZM(:,:,:,IM3(JN)) * XMD*XPI * 4./3.  / &
+                            (ZMI*PRHODREF(:,:,:)*(1.d0/ZRHOI)*XM3TOUM3_SALT)
+  END IF
 !
 END DO
 !
diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90
index b083a03d68516e936982ae973153c0c63e69351b..b49d86cc6228e7e64050ebcda9de4a23c9c2b0b9 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 74f43ed3e08b907f5d8a4b778f63f4b72249cd79..b7e8c6605ae79c2e98d1c62506da7c0351dbe6a2 100644
--- a/src/MNH/spawn_lsn.f90
+++ b/src/MNH/spawn_lsn.f90
@@ -21,9 +21,9 @@ INTERFACE
                     HLBCX,HLBCY,PZZ,PZHAT,OSLEVE,PLEN1,PLEN2,        &
                     PCOEFLIN_LBXM,                                   &
                                   PLSTHM,PLSRVM,                     &
-                                  PLSUM,PLSVM,PLSWM,                 &
+                                  PLSUM,PLSVM,PLSWM,PLSZWSM,         &
                                   PLSTHS,PLSRVS,                     &
-                                  PLSUS,PLSVS,PLSWS                  )
+                                  PLSUS,PLSVS,PLSWS,PLSZWSS          )
 !
 INTEGER,   INTENT(IN)  :: KDAD      ! number of the DAD model
 REAL,             INTENT(IN)    :: PTSTEP   !  Time step
@@ -48,8 +48,11 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PCOEFLIN_LBXM ! coefficient used for
 !  
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLSTHM,PLSRVM ! Large Scale fields at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLSUM,PLSVM,PLSWM ! Large Scale fields at t-dt
+REAL, DIMENSION(:,:),   INTENT(IN)    :: PLSZWSM          ! Large Scale fields at t-dt
+
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLSTHS,PLSRVS ! Large Scale source terms 
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLSUS,PLSVS,PLSWS ! Large Scale source terms 
+REAL, DIMENSION(:,:),   INTENT(OUT)   :: PLSZWSS
 !
 END SUBROUTINE SPAWN_LS_n
 !
@@ -65,10 +68,10 @@ END MODULE MODI_SPAWN_LS_n
                     KDXRATIO,KDYRATIO,                               &
                     HLBCX,HLBCY,PZZ,PZHAT,OSLEVE,PLEN1,PLEN2,        &
                     PCOEFLIN_LBXM,                                   &
-                                  PLSTHM,PLSRVM,                     &
+                                  PLSTHM,PLSRVM,PLSZWSM,             &
                                   PLSUM,PLSVM,PLSWM,                 &
                                   PLSTHS,PLSRVS,                     &
-                                  PLSUS,PLSVS,PLSWS                  )
+                                  PLSUS,PLSVS,PLSWS,PLSZWSS          )
 !     ################################################################
 !
 !!****  *SPAWN_LS_n* - Refresh of the Large Scale sources 
@@ -125,7 +128,7 @@ END MODULE MODI_SPAWN_LS_n
 !!      Original     22/12/97
 !!    P. Jabouille   19/04/00 parallelisation
 !!      J.Escobar : 18/12/2015 : Correction of bug in bound in // for NHALO <>1 
-!!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
@@ -174,8 +177,10 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PCOEFLIN_LBXM ! coefficient used for
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLSTHM,PLSRVM ! Large Scale fields at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLSUM,PLSVM,PLSWM ! Large Scale fields at t-dt
+REAL, DIMENSION(:,:),   INTENT(IN)    :: PLSZWSM          ! Large Scale fields at t-dt
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLSTHS,PLSRVS ! Large Scale source terms
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLSUS,PLSVS,PLSWS ! Large Scale source terms
+REAL, DIMENSION(:,:),   INTENT(OUT)   :: PLSZWSS
 !
 !
 !*       0.2   declarations of local variables
@@ -202,8 +207,10 @@ TYPE(LIST_ll), POINTER :: TZLSFIELD_ll   ! list of metric coefficient fields
 INTEGER :: IINFO_ll, IDIMX, IDIMY
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTLSUM, ZTLSVM, ZTLSWM, ZTLSTHM, ZTLSRVM
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTZS,ZZS
+REAL, DIMENSION(:,:),   ALLOCATABLE :: ZTZWS
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTZSMT,ZZSMT
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: Z1,Z2,Z3,Z4,Z5
+REAL, DIMENSION(:,:),   ALLOCATABLE :: Z6
 !
 !-------------------------------------------------------------------------------
 !
@@ -235,6 +242,7 @@ ALLOCATE(ZTLSVM(IDIMX,IDIMY,SIZE(PLSVM,3)))
 ALLOCATE(ZTLSWM(IDIMX,IDIMY,SIZE(PLSWM,3)))
 ALLOCATE(ZTLSTHM(IDIMX,IDIMY,SIZE(PLSTHM,3)))
 ALLOCATE(ZTLSRVM(IDIMX,IDIMY,SIZE(PLSRVM,3)))
+ALLOCATE(ZTZWS(IDIMX,IDIMY))
 !
 IF(GVERT_INTERP) THEN
   ALLOCATE(ZTZS  (IDIMX,IDIMY,1))
@@ -250,6 +258,7 @@ ALLOCATE(Z2(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
 ALLOCATE(Z3(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
 ALLOCATE(Z4(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
 ALLOCATE(Z5(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
+ALLOCATE(Z6(SIZE(XLSUM,1),SIZE(XLSUM,2)))
 !
 Z1=XLSUM+XLSUS*ZTIME
 CALL SET_LSFIELD_1WAY_ll(Z1, ZTLSUM, KMI)
@@ -263,6 +272,10 @@ IF ( SIZE(PLSRVM,1) /= 0 ) THEN
   Z5=XLSRVM+XLSRVS*ZTIME
   CALL SET_LSFIELD_1WAY_ll(Z5, ZTLSRVM, KMI)
 ENDIF
+IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+  Z6=XLSZWSM+XLSZWSS*ZTIME
+  CALL SET_LSFIELD_1WAY_ll(Z6, ZTZWS, KMI)
+ENDIF
 !
 IF ( GVERT_INTERP ) THEN
    CALL SET_LSFIELD_1WAY_ll(ZZS,   ZTZS,   KMI)
@@ -273,7 +286,7 @@ ENDIF
 !
 CALL LS_FORCING_ll(KMI, IINFO_ll)
 !
-DEALLOCATE(Z1,Z2,Z3,Z4,Z5)
+DEALLOCATE(Z1,Z2,Z3,Z4,Z5,Z6)
 !
 !        1.5  Back to the (current) child model
 !
@@ -355,6 +368,12 @@ IF ( SIZE(PLSRVM,1) /= 0 ) THEN
                  2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,         &
                  HLBCX,HLBCY,ZTLSRVM,PLSRVS(IIB:IIE,IJB:IJE,:))
 END IF
+IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+  CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
+                 PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
+                 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,         &
+                 HLBCX,HLBCY,ZTZWS,PLSZWSS(IIB:IIE,IJB:IJE))
+END IF
 !
 !*      3.2  Vertical linear interpolation on the mass grid
 !
@@ -384,6 +403,9 @@ PLSTHS(:,:,:)   = (PLSTHS(:,:,:) - PLSTHM(:,:,:)) / ZTIME
 IF ( SIZE(PLSRVM,1) /= 0 ) THEN
   PLSRVS(:,:,:)   = (PLSRVS(:,:,:) - PLSRVM(:,:,:)) / ZTIME
 END IF
+IF ( SIZE(PLSZWSM,1) /= 0 ) THEN
+  PLSZWSS(:,:)   = (PLSZWSS(:,:) - PLSZWSM(:,:)) / ZTIME
+END IF
 !
 !------------------------------------------------------------------------------
 !
@@ -454,6 +476,7 @@ PLSVS(:,:,:)   = (PLSVS(:,:,:) - PLSVM(:,:,:)) / ZTIME
 !
 DEALLOCATE(ZTLSUM,ZTLSVM,ZTLSWM,ZTLSTHM,ZTLSRVM)
 IF(GVERT_INTERP) DEALLOCATE(ZTZS,ZZS)
+DEALLOCATE(ZTLSUM,ZTLSVM,ZTLSWM,ZTLSTHM,ZTLSRVM,ZTZWS)
 IF(GVERT_INTERP) DEALLOCATE(ZTZSMT,ZZSMT)
 !
 NULLIFY(TZLSFIELD_ll)
@@ -462,6 +485,7 @@ CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSVS)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSWS)
 CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSTHS)
 IF(SIZE(PLSRVM) /= 0) CALL ADD3DFIELD_ll(TZLSFIELD_ll, PLSRVS)
+IF(SIZE(PLSZWSM) /= 0) CALL ADD2DFIELD_ll(TZLSFIELD_ll, PLSZWSS)
 CALL UPDATE_HALO_ll(TZLSFIELD_ll,IINFO_ll)
 CALL CLEANLIST_ll(TZLSFIELD_ll)
 !------------------------------------------------------------------------------
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index d920dbc0cf86068f1382448fc4e0a07c59680955..2811911fc7159b5ab6a0e40a45421b0569baf8e7 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 7ab352665080b6bc19ddcea1d8107ccae3e71e25..04eda8bb61e31d15c1375edd6cff67660277ab25 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 b4044c86b79cec0bdaa52f3a69c0e968b622a9c9..0334fe22c9e5714fbe7413cbfe5478dfa4a1685c 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 188a9f0c62e3d5fad935766cb65ab8130b1cb91e..235aa1ec29fc0093828c1c5c9b83bc94e70f0d9f 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 7d7b49854a196e64109bf64ded0a794ec0cbdfe9..6b6eb5b1845bd1ef123bad6be6e44a1ad2a08a01 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 71b257f9f1cc6ad8c05be6223221fbc855a7ea35..5d222e8480eba4d94bac84f3c51a259ecb074d32 100644
--- a/src/SURFEX/coupling_seaflux_orogn.F90
+++ b/src/SURFEX/coupling_seaflux_orogn.F90
@@ -11,7 +11,7 @@ SUBROUTINE COUPLING_SEAFLUX_OROG_n (SM, DST, SLT, HPROGRAM, HCOUPLING, PTIMEC, P
                                     PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB,&
                                     PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF,       &
                                     PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF,  &
-                                    PPEQ_B_COEF, HTEST                        )  
+                                    PPEQ_B_COEF, PZWS, HTEST                        )  
 !     ###############################################################################
 !
 !!****  *COUPLING_SEAFLUX_OROG_n * - Modifies the input forcing if not
@@ -38,6 +38,7 @@ SUBROUTINE COUPLING_SEAFLUX_OROG_n (SM, DST, SLT, HPROGRAM, HCOUPLING, PTIMEC, P
 !!      J. Escobar    09/2012 SIZE(PTA) not allowed without-interface , replace by KI
 !!      B. Decharme  04/2013 new coupling variables
 !!                           improve forcing vertical shift
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!-------------------------------------------------------------
 !
 !
@@ -106,6 +107,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
@@ -204,7 +206,7 @@ ENDIF
                              PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB,  &
                              PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF,         &
                              PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, ZPET_B_COEF,    &
-                             ZPEQ_B_COEF, HTEST                                     )
+                             ZPEQ_B_COEF, PZWS, HTEST                                     )
 !
 IF (LHOOK) CALL DR_HOOK('COUPLING_SEAFLUX_OROG_N',1,ZHOOK_HANDLE)
 !-------------------------------------------------------------------------------------
diff --git a/src/SURFEX/coupling_seaflux_sbln.F90 b/src/SURFEX/coupling_seaflux_sbln.F90
index 857f16473668a9831029b3f31d3bcaab7deb85c3..53aa72d42ebc46a6e8c6ca068027000af37bd2d6 100644
--- a/src/SURFEX/coupling_seaflux_sbln.F90
+++ b/src/SURFEX/coupling_seaflux_sbln.F90
@@ -11,7 +11,7 @@ SUBROUTINE COUPLING_SEAFLUX_SBL_n (CHS, DTS, DGS, O, OR, G, S, SB, DST, SLT,
                                   PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                          &
                                   PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF,      &
                                   PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF,  &
-                                  PPEQ_B_COEF, HTEST                                             )
+                                  PPEQ_B_COEF, PZWS, HTEST                                           )
 !     ###############################################################################
 !
 !!****  *COUPLING_SEAFLUX_SBL_n * - Adds a SBL into SEAFLUX
@@ -38,6 +38,7 @@ SUBROUTINE COUPLING_SEAFLUX_SBL_n (CHS, DTS, DGS, O, OR, G, S, SB, DST, SLT,
 !!      S. Riette   10/2009 Iterative computation of XZ0
 !!      S. Riette   01/2010 Use of interpol_sbl to compute 10m wind diagnostic
 !!      B. Decharme  04/2013 new coupling variables
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !----------------------------------------------------------------
 !
 !
@@ -122,6 +123,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
 REAL, DIMENSION(KI), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
@@ -302,7 +304,7 @@ END IF
              PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, ZPA,&
              PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB,      &
              PEMIS, PTSURF, PZ0, PZ0H, PQSURF, ZPEW_A_COEF, ZPEW_B_COEF,              &
-             ZPET_A_COEF, ZPEQ_A_COEF, ZPET_B_COEF, ZPEQ_B_COEF, HTEST)
+             ZPET_A_COEF, ZPEQ_A_COEF, ZPET_B_COEF, ZPEQ_B_COEF, PZWS, HTEST)
 !
 !-------------------------------------------------------------------------------------
 !
diff --git a/src/SURFEX/coupling_seafluxn.F90 b/src/SURFEX/coupling_seafluxn.F90
index 5ea7b516c971576bf25a3d80fa24f72ba2f7690c..f7fc56d8021d2435be11826b58f57e6579b6ea9c 100644
--- a/src/SURFEX/coupling_seafluxn.F90
+++ b/src/SURFEX/coupling_seafluxn.F90
@@ -10,7 +10,7 @@ SUBROUTINE COUPLING_SEAFLUX_n (CHS, DTS, DGS, O, OR, G, S, DST, SLT, &
                                PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS,      &
                                PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF,    &
                                PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF,        &
-                               PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,  HTEST                 )  
+                               PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PZWS,  HTEST              )  
 !     ###############################################################################
 !
 !!****  *COUPLING_SEAFLUX_n * - Driver of the WATER_FLUX scheme for sea   
@@ -49,6 +49,7 @@ SUBROUTINE COUPLING_SEAFLUX_n (CHS, DTS, DGS, O, OR, G, S, DST, SLT, &
 !!      Modified    01/2015 : R. Séférian interactive ocaen surface albedo
 !!      Modified    03/2014 : M.N. Bouin possibility of wave parameters from external source
 !!      Modified    11/2014 : J. Pianezze : add currents for wave coupling
+!!      Modified    02/2019 : S. Bielli Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!                                       
 !!---------------------------------------------------------------------
 !
@@ -157,6 +158,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
 REAL, DIMENSION(KI), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
@@ -232,6 +234,8 @@ REAL, DIMENSION(KI) :: ZHU        ! Near surface relative humidity
 REAL, DIMENSION(KI) :: ZQA        ! specific humidity (kg/kg)
 REAL, DIMENSION(KI) :: ZEMIS      ! Emissivity at time t
 REAL, DIMENSION(KI) :: ZTRAD      ! Radiative temperature at time t
+REAL, DIMENSION(KI) :: ZHS        ! significant wave height
+REAL, DIMENSION(KI) :: ZTP        ! peak period
 !
 REAL, DIMENSION(KI) :: ZSST       ! XSST corrected for anomalously low values (which actually are sea-ice temp)
 REAL, DIMENSION(KI) :: ZMASK      ! A mask for diagnosing where seaice exists (or, for coupling_iceflux, may appear)
@@ -245,14 +249,17 @@ INTEGER                          :: ISIZE_ICE    ! number of points with some se
 !
 INTEGER                          :: ISWB       ! number of shortwave spectral bands
 INTEGER                          :: JSWB       ! loop counter on shortwave spectral bands
-INTEGER                          :: ISLT       ! number of sea salt variable
 !
 INTEGER :: IBEG, IEND
+INTEGER                          :: ISLT, IDST, JSV, IMOMENT   ! number of sea salt, dust variables
+!
+INTEGER :: ILUOUT
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !-------------------------------------------------------------------------------------
 ! Preliminaries:
 !-------------------------------------------------------------------------------------
+CALL GET_LUOUT(HPROGRAM,ILUOUT)
 IF (LHOOK) CALL DR_HOOK('COUPLING_SEAFLUX_N',0,ZHOOK_HANDLE)
 IF (HTEST/='OK') THEN
   CALL ABOR1_SFX('COUPLING_SEAFLUXN: FATAL ERROR DURING ARGUMENT TRANSFER')        
@@ -277,6 +284,8 @@ ZUSTAR   (:) = XUNDEF
 ZZ0      (:) = XUNDEF
 ZZ0H     (:) = XUNDEF
 ZQSAT    (:) = XUNDEF
+ZHS      (:) = XUNDEF
+ZTP      (:) = XUNDEF
 !
 ZSFTQ_ICE(:) = XUNDEF
 ZSFTH_ICE(:) = XUNDEF
@@ -317,6 +326,24 @@ PSFTS(:,:) = 0.
 ZHU = 1.
 !
 ZQA(:) = PQA(:) / PRHOA(:)
+
+! HS value from ECMWF file
+ZHS(:) = PZWS(:)
+#ifdef CPLOASIS
+! HS value from WW3 if activated
+IF (LCPL_WAVE) THEN
+  ZHS(:)=S%XHS(:)
+  ZTP(:)=S%XTP(:)
+ELSE
+  ZHS(:)=PZWS(:)
+  ZTP(:)=S%XTP(:)
+END IF
+#endif
+! if HS value is undef : constant value and alert message
+IF (ALL(ZHS==XUNDEF)) THEN
+ ZHS(:)=2.
+ WRITE (ILUOUT,*) 'WARNING : no HS values from ECMWF or WW3, then it is initialized to a constant value of 2 m'
+END IF
 !
 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 ! Time evolution
@@ -374,8 +401,16 @@ CALL COARE30_SEAFLUX(S, ZMASK, ISIZE_WATER, ISIZE_ICE,        &
               PTA, ZEXNA ,PRHOA, ZSST, ZEXNS, ZQA, PRAIN,     &
               PSNOW, ZWIND, PZREF, PUREF, PPS, ZQSAT,         &
               ZSFTH, ZSFTQ, ZUSTAR,                           &
-              ZCD, ZCDN, ZCH, ZCE, ZRI, ZRESA_SEA, ZZ0H       )  
+              ZCD, ZCDN, ZCH, ZCE, ZRI, ZRESA_SEA, ZZ0H     )
 END SELECT
+
+#ifdef CPLOASIS
+IF (.NOT. LCPL_WAVE) THEN
+  S%XHS(:)=ZHS(:)
+  S%XTP(:)=ZTP(:)
+END IF
+#endif
+
 !
 !-------------------------------------------------------------------------------------
 !radiative properties at time t
@@ -442,7 +477,7 @@ PSFCO2(:) = - ZWIND(:)**2 * 1.13E-3 * 8.7 * 44.E-3 / ( 365*24*3600 )
 ! Scalar fluxes:
 !-------------------------------------------------------------------------------------
 !
-IF (CHS%SVS%NBEQ>0) THEN
+IF (CHS%SVS%NBEQ>0.AND.(KI.GT.0)) THEN
   !
   IF (CHS%CCH_DRY_DEP == "WES89") THEN
     !
@@ -475,7 +510,7 @@ IF (CHS%SVS%NBEQ>0) THEN
   !
 ENDIF
 !
-IF (CHS%SVS%NDSTEQ>0) THEN
+IF (CHS%SVS%NDSTEQ>0.AND.(KI.GT.0)) THEN
   !
   IBEG = CHS%SVS%NSV_DSTBEG
   IEND = CHS%SVS%NSV_DSTEND
@@ -499,7 +534,7 @@ IF (CHS%SVS%NDSTEQ>0) THEN
 ENDIF
 
 !
-IF (CHS%SVS%NSLTEQ>0) THEN
+IF (CHS%SVS%NSLTEQ>0.AND.(KI.GT.0)) THEN
   !
   IBEG = CHS%SVS%NSV_SLTBEG
   IEND = CHS%SVS%NSV_SLTEND
@@ -510,6 +545,9 @@ IF (CHS%SVS%NSLTEQ>0) THEN
                       SIZE(ZUSTAR,1),           & !I [nbr] number of sea point
                       ISLT,                     & !I [nbr] number of sea salt variables
                       ZWIND,                    & !I [m/s] wind velocity
+                      ZHS,                      & !I [m] significant sea wave
+                      S%XSST,                   &
+                      ZUSTAR,                   &
                       PSFTS(:,IBEG:IEND) )   
   !
   CALL DSLT_DEP(PSV(:,IBEG:IEND), PSFTS(:,IBEG:IEND), ZUSTAR, ZRESA_SEA, PTA, &
@@ -517,11 +555,11 @@ IF (CHS%SVS%NSLTEQ>0) THEN
                 XDENSITY_SLT, XMOLARWEIGHT_SLT, ZCONVERTFACM0_SLT, ZCONVERTFACM6_SLT, &
                 ZCONVERTFACM3_SLT, LVARSIG_SLT, LRGFIX_SLT, CVERMOD  )  
   !
-  CALL MASSFLUX2MOMENTFLUX(         &
-                PSFTS(:,IBEG:IEND), & !I/O ![kg/m2/sec] In: flux of only mass, out: flux of moments
+  CALL MASSFLUX2MOMENTFLUX(                     &
+                PSFTS(:,IBEG:IEND),             & !I/O [kg/m2/sec] In: flux of only mass, out: flux of moments
                 PRHOA,                          & !I [kg/m3] air density
-                SLT%XEMISRADIUS_SLT,            &!I [um] emitted radius for the modes (max 3)
-                SLT%XEMISSIG_SLT,               &!I [-] emitted sigma for the different modes (max 3)
+                SLT%XEMISRADIUS_SLT,            & !I [um] emitted radius for the modes (max 3)
+                SLT%XEMISSIG_SLT,               & !I [-] emitted sigma for the different modes (max 3)
                 NSLTMDE,                        &
                 ZCONVERTFACM0_SLT,              &
                 ZCONVERTFACM6_SLT,              &
diff --git a/src/SURFEX/coupling_sean.F90 b/src/SURFEX/coupling_sean.F90
index 97a8b1f7c6b4bc5a12c04551a6e869c22869d3b8..ca4ae208190a3df6849a9732c4918ee675ba8c55 100644
--- a/src/SURFEX/coupling_sean.F90
+++ b/src/SURFEX/coupling_sean.F90
@@ -10,7 +10,7 @@ SUBROUTINE COUPLING_SEA_n (SM, DGO, DL, DLC, U, DST, SLT, HPROGRAM, HCOUPLING, P
                  PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                    &
                  PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF,                &
                  PPEW_A_COEF, PPEW_B_COEF,                                                   &
-                 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST   )  
+                 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PZWS, HTEST   )  
 !     ###############################################################################
 !
 !!****  *COUPLING_SEA_n * - Chooses the surface schemes for sea   
@@ -33,6 +33,7 @@ SUBROUTINE COUPLING_SEA_n (SM, DGO, DL, DLC, U, DST, SLT, HPROGRAM, HCOUPLING, P
 !!    -------------
 !!      Original    01/2004
 !!      B. Decharme  04/2013 new coupling variables
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!-----------------------------------------------------------------------
 !
 !
@@ -104,6 +105,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
@@ -150,7 +152,7 @@ IF (U%CSEA=='SEAFLX') THEN
                  PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                    &
                  PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF,                &
                  PPEW_A_COEF, PPEW_B_COEF,                                                   &
-                 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST                 )  
+                 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PZWS, HTEST              )  
 ELSE IF (U%CSEA=='FLUX  ') THEN
   CALL COUPLING_IDEAL_FLUX(DGO, DL, DLC, HPROGRAM, HCOUPLING, PTIMEC,                      &
                  PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW,                           &
diff --git a/src/SURFEX/coupling_sltn.F90 b/src/SURFEX/coupling_sltn.F90
index 7e66f3fa5f6cbd143802a1d3f054ce40c4e5b0cc..284fc093527a26c6342ca61c0ac9e7b190aa9b7b 100644
--- a/src/SURFEX/coupling_sltn.F90
+++ b/src/SURFEX/coupling_sltn.F90
@@ -3,16 +3,26 @@
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !SFX_LIC for details. version 1.
 SUBROUTINE COUPLING_SLT_n (SLT, &
-      KI,                   &!I [nbr] number of sea points 
-      KSLT,                 &!I [nbr] number of sea points 
-      PWIND,                &!I Wind velocity
-      PSFSLT                &!O [kg/m2/sec] flux of sea salt
+      KI,                       &!I [nbr] number of sea points 
+      KSLT,                     &!I [nbr] number of sea salt variables 
+      PWIND,                    &!I Wind velocity
+! ++ PIERRE / MARINE SSA - MODIF ++
+      PWHEIGHT,                 &! Significant height of wind-generated waves (in ECMWF analyses)
+                                 ! local pour l'instant, PWHEIGHT plus tard
+      PSST,                     &! Sea water temperature (C) 
+      PUSTAR,                   &! Friction velocity (ecmwf?) Calcule dans coupling_seafluxn.F90
+! -- PIERRE / MARINE SSA - MODIF --
+      PSFSLT                    &!O [kg/m2/sec] production flux of sea salt
       ) 
   
 !PURPOSE
 !-------
 !  Compute sea salt emission  upon Vignatti et al, 2001
+! ++ PIERRE / MARINE SSA - MODIF ++
+!  Compute sea salt emission  upon Ovadnevaite et al, 2014
+! -- PIERRE / MARINE SSA - MODIF --
 !
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !AUTHOR
 !-------
 ! P. Tulet
@@ -35,45 +45,64 @@ TYPE(SLT_t), INTENT(INOUT) :: SLT
 INTEGER, INTENT(IN)                :: KI             !I Number of sea points
 INTEGER, INTENT(IN)                :: KSLT           !I Number of sea salt emission variables
 REAL, DIMENSION(KI),      INTENT(IN)  :: PWIND       !I wind velocity
-REAL, DIMENSION(KI,KSLT), INTENT(OUT) :: PSFSLT      !Out: mole particles per mole air m/s *(MWdst/MWair*rhoair)(index #1)
-                                                     !Out: kg/m2/s (index #2)
-                                                     !Out: moles m6/moles air m/s *(MWdst/MWair*rhoair)(index #3)
+REAL, DIMENSION(KI,KSLT), INTENT(OUT) :: PSFSLT      !Out: kg/m2/s (index #2)
+! ++ PIERRE / MARINE SSA - MODIF ++
+REAL, DIMENSION(KI),      INTENT(INOUT)  :: PWHEIGHT !Significant height of wind-generated waves (in ECMWF analyses)
+REAL, DIMENSION(KI),      INTENT(IN)  :: PUSTAR   !Friction velocity (ecmwf?) : Unite: m.s^(-2)?
+REAL, DIMENSION(KI),      INTENT(IN)  :: PSST     ! Sea surface temperature (K)
+! -- PIERRE / MARINE SSA - MODIF --
+
 !LOCAL VARIABLES
-REAL,DIMENSION(KI,3)  :: ZSFSLT_MDE       ! sea salt flux from modes
-INTEGER               :: JN, JI           !Counter for sea salt modes
-REAL, DIMENSION(KI)   :: DZSPEED 
-INTEGER, DIMENSION(KI):: WCL
-REAL                  :: ZCONVERTFACM0_SLT
-REAL                  :: ZCONVERTFACM3_SLT
-REAL                  :: ZCONVERTFACM6_SLT
-!
-!REAL, PARAMETER :: MASS1FLUX(0:40) = (/  &
-!          0.000E+00, 2.483E-15, 2.591E-14, 1.022E-13, 2.707E-13, 5.761E-13,  &
-!          1.068E-12, 1.800E-12, 2.829E-12, 4.215E-12, 6.023E-12, 8.317E-12, &
-!          1.117E-11, 1.464E-11, 1.882E-11, 2.378E-11, 2.959E-11, 3.633E-11, &
-!          4.409E-11, 5.296E-11, 6.301E-11, 7.433E-11, 8.693E-11, 1.012E-10, &
-!          1.168E-10, 1.342E-10, 1.532E-10, 1.741E-10, 1.970E-10, 2.219E-10, &
-!          2.489E-10, 2.781E-10, 3.097E-10, 3.437E-10, 3.803E-10, 4.195E-10, &
-!          4.616E-10, 5.065E-10, 5.544E-10, 6.054E-10, 6.711E-10             /) 
-!
-!REAL, PARAMETER :: MASS2FLUX(0:40) = (/  &
-!          0.000E+00, 2.319E-13, 2.411E-12, 9.481E-12, 2.505E-11, 5.321E-11,  &
-!          9.850E-11, 1.658E-10, 2.602E-10, 3.874E-10, 5.529E-10, 7.628E-10,  &
-!          1.023E-09, 1.341E-09, 1.722E-09, 2.175E-09, 2.704E-09, 3.319E-09,  &
-!          4.026E-09, 4.832E-09, 5.746E-09, 6.776E-09, 7.925E-09, 9.214E-09,  &
-!          1.064E-08, 1.221E-08, 1.394E-08, 1.584E-08, 1.791E-08, 2.016E-08,  &
-!          2.261E-08, 2.526E-08, 2.812E-08, 3.120E-08, 3.451E-08, 3.806E-08,  &
-!          4.186E-08, 4.592E-08, 5.025E-08, 5.486E-08, 6.014E-08             /) 
-!
-!REAL, PARAMETER :: MASS3FLUX(0:40) = (/ 0.0, &
-!        1.783E-12, 1.579E-11, 5.852E-11, 1.501E-10, 3.134E-10, 5.740E-10, &
-!        9.597E-10, 1.500E-09, 2.227E-09, 3.175E-09, 4.378E-09, 5.872E-09, &
-!        7.698E-09, 9.897E-09, 1.250E-08, 1.556E-08, 1.912E-08, 2.323E-08, &
-!        2.792E-08, 3.325E-08, 3.927E-08, 4.608E-08, 5.356E-08, 6.194E-08, &
+REAL,DIMENSION(KI,JPMODE_SLT)  :: ZSFSLT_MDE ! sea salt flux from modes
+INTEGER                        :: JN, JI, II !Counter for sea salt modes
+REAL, DIMENSION(KI)            :: DZSPEED 
+INTEGER, DIMENSION(KI)         :: WCL
+REAL                           :: ZCONVERTFACM0_SLT  ![kg/mole*mole/molec] conversion factor
+                                                     !for moment fluxes and used fluxes
+REAL                           :: ZCONVERTFACM3_SLT 
+REAL                           :: ZCONVERTFACM6_SLT 
+!
+! ++ PIERRE / MARINE SSA - MODIF ++
+
+REAL, DIMENSION(5)             :: ZNUWATER   !  Temperature-dependant kinematic viscosity of 
+                                             ! sea-water (table of data to interpolate) (m².s-¹)
+REAL, DIMENSION(5)             :: ZWT ! Sea water temperature in table
+REAL, DIMENSION(KI)            :: ZREYNOLDS ! Reynolds Number
+REAL, DIMENSION(KI)            :: ZHVAGUE  ! sea wave height from wind if ZWS is unknown.
+REAL, DIMENSION(KI)            :: ZVISCO ! Temperature-dependant kinematic viscosity
+                                         ! of sea-water interpolated
+! -- PIERRE / MARINE SSA - MODIF --
+!
+!REAL, PARAMETER :: mass1flux(0:40) = (/  &
+!        0.000E+00, 2.483E-15, 2.591E-14, 1.022E-13, 2.707E-13, 5.761E-13,  &
+!        1.068E-12, 1.800E-12, 2.829E-12, 4.215E-12, 6.023E-12, 8.317E-12, &
+!        1.117E-11, 1.464E-11, 1.882E-11, 2.378E-11, 2.959E-11, 3.633E-11, &
+!        4.409E-11, 5.296E-11, 6.301E-11, 7.433E-11, 8.693E-11, 1.012E-10, &
+!        1.168E-10, 1.342E-10, 1.532E-10, 1.741E-10, 1.970E-10, 2.219E-10, &
+!        2.489E-10, 2.781E-10, 3.097E-10, 3.437E-10, 3.803E-10, 4.195E-10, &
+!        4.616E-10, 5.065E-10, 5.544E-10, 6.054E-10, 6.711E-10             /) 
+
+!REAL, PARAMETER :: mass2flux(0:40) = (/  &
+!        0.000E+00, 2.319E-13, 2.411E-12, 9.481E-12, 2.505E-11, 5.321E-11,  &
+!        9.850E-11, 1.658E-10, 2.602E-10, 3.874E-10, 5.529E-10, 7.628E-10,  &
+!       1.023E-09, 1.341E-09, 1.722E-09, 2.175E-09, 2.704E-09, 3.319E-09,  &
+!       4.026E-09, 4.832E-09, 5.746E-09, 6.776E-09, 7.925E-09, 9.214E-09,  &
+!       1.064E-08, 1.221E-08, 1.394E-08, 1.584E-08, 1.791E-08, 2.016E-08,  &
+!        2.261E-08, 2.526E-08, 2.812E-08, 3.120E-08, 3.451E-08, 3.806E-08,  &
+!        4.186E-08, 4.592E-08, 5.025E-08, 5.486E-08, 6.014E-08             /) 
+
+!REAL, PARAMETER :: mass3flux(0:40) = (/ 0.0, &
+!      1.783E-12, 1.579E-11, 5.852E-11, 1.501E-10, 3.134E-10, 5.740E-10, &
+!      9.597E-10, 1.500E-09, 2.227E-09, 3.175E-09, 4.378E-09, 5.872E-09, &
+!      7.698E-09, 9.897E-09, 1.250E-08, 1.556E-08, 1.912E-08, 2.323E-08, &
+!      2.792E-08, 3.325E-08, 3.927E-08, 4.608E-08, 5.356E-08, 6.194E-08, &
 !        7.121E-08, 8.143E-08, 9.266E-08, 1.049E-07, 1.183E-07, 1.329E-07, &
 !        1.487E-07, 1.658E-07, 1.843E-07, 2.041E-07, 2.255E-07, 2.484E-07, &
 !        2.729E-07, 2.991E-07, 3.270E-07, 3.517E-07 /) 
 
+REAL, PARAMETER :: HVAGUE(1:9) = (/ 0., 0.1, 0.5, 1.25, 2.5, 4., 6., 9., 14. /)
+REAL, PARAMETER :: VVENT(1:9) = (/  1., 2.7, 4.1, 6.3, 8.3, 11.1, 13.8, &
+                                    16.6, 19.4/)
 
 REAL, PARAMETER :: NUMB1FLUX(0:40) = (/ &
          0.000E+00, 3.004E+01, 3.245E+02, 1.306E+03, 3.505E+03, 7.542E+03,  &
@@ -107,7 +136,7 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !!    M0=#/molec_{air}
 !!    M6=um6/molec_{air}*1.d6
 !!    The surface model should have (for sea salt)
-!!    M0=#/m3*[kg_{dst}/mole_{dst}/XAVOGADRO]
+!!    M0=#/m3*[kg_{slt}/mole_{slt}/XAVOGADRO]
 !!    M3=kg/m3
 !!    M6=um6/m3
 !!    REFERENCE
@@ -119,71 +148,175 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('COUPLING_SLT_N',0,ZHOOK_HANDLE)
 !
 !Factor which is needed so that all gains normal units when leaving ground paramn
-ZCONVERTFACM0_SLT = XMOLARWEIGHT_SLT / XAVOGADRO !(kg_dst/mol_dst)/(molec/mol)
+ZCONVERTFACM0_SLT = XMOLARWEIGHT_SLT / XAVOGADRO !(kg_slt/mol_slt)/(molec/mol)
 !Factor which is needed for moment 6, there is a factor 1.d6 transported around in M6 in MESONH
 ZCONVERTFACM6_SLT = XMOLARWEIGHT_SLT / XAVOGADRO*1.d6
 ZCONVERTFACM3_SLT = 4./3.*XPI*XDENSITY_SLT / 1.d18
 !
 PSFSLT(:,:)=0.d0
 !
-IF (CEMISPARAM_SLT.eq."Vig01")THEN
-  !
-  ! Vignatti et al. 2001 (in particles.cm-2.s-1)
-  ZSFSLT_MDE(:,1) =  10**(0.09  *PWIND(:) + 0.283)   ! fine mode
-  ZSFSLT_MDE(:,2) =  10**(0.0422*PWIND(:) + 0.288)   ! median mode
-  ZSFSLT_MDE(:,3) =  10**(0.069 *PWIND(:) - 3.5)     ! coarse mode
-  ! convert into  particles.m-2.s-1)
-  ZSFSLT_MDE(:,1) = MAX(ZSFSLT_MDE(:,1) * 1E4, 1E-10)  
-  ZSFSLT_MDE(:,2) = MAX(ZSFSLT_MDE(:,2) * 1E4, 1E-10)  
-  ZSFSLT_MDE(:,3) = MAX(ZSFSLT_MDE(:,3) * 1E4, 1E-10)  
-  !
-ELSE ! Use Schultz et al., 2004
-  !
+!+ Marine
+IF (CEMISPARAM_SLT .eq. "Ova14") THEN ! Rajouter Ova14 dans fichier initialisation
+  ZHVAGUE(:)  = 0.
+  DO II = 1, 8
+!++cb++19/10/16 modif de la formule : + de vent => vagues + hautes
+!    WHERE ((PWIND(:) .GT. VVENT(II)).AND.(PWIND(:) .LT. VVENT(II+1)))
+    WHERE ((PWIND(:) .GT. VVENT(II)).AND.(PWIND(:) .LT. VVENT(II+1)))
+!      ZHVAGUE(:) = HVAGUE(II) + (VVENT(II+1)  - PWIND(:)) * &
+      ZHVAGUE(:) = HVAGUE(II) + (PWIND(:)     - VVENT(II+1)) * &
+                                (HVAGUE(II+1) - HVAGUE(II)) / &
+                                (VVENT(II+1)  - VVENT(II))
+!--cb--
+    ENDWHERE
+  ENDDO
+
+  WHERE (PWIND(:) .GE. VVENT(9))
+    ZHVAGUE(:) = HVAGUE(9)
+  END WHERE
+
+  WHERE (PWHEIGHT(:) .EQ. -1.)
+    PWHEIGHT(:) = ZHVAGUE(:)
+  END WHERE
+
+  ZWT = (/ 273.15, 283.15, 293.15, 303.15, 313.15 /)  ! Unite : K
+  ZNUWATER = (/ 1.854E-6, 1.36E-6, 1.051E-6, 0.843E-6, 0.695E-6 /) 
+! Unite : m².s^(-1) Pour une salinite = 35g/kg.
+! En mer Mediterranee = 38.5g/kg (Lewis and Schwartz)
+
+! Initialisation des valeurs de ZVISCO, ZREYNOLDS
+  ZVISCO(:)    = 0.
+  ZREYNOLDS(:) = 0.
+
+  ! Tableau d'interpolation pour calculer ZNUWATER en fonction de la SST
+  ! Cas ou 0 < SST < 10 C
+  WHERE ((PSST(:) >= 273.15).AND.(PSST(:) < 283.15))
+    ZVISCO(:) = ZNUWATER(1) + (PSST(:) - ZWT(1)) * (ZNUWATER(2)-ZNUWATER(1)) / &
+                (ZWT(2) - ZWT(1))
+  ENDWHERE
+
+  ! Cas ou 10 < SST < 20 C
+  WHERE ((PSST(:) >= 283.15).AND.(PSST(:) < 293.15))
+    ZVISCO(:) = ZNUWATER(2) + (PSST(:) - ZWT(2)) * (ZNUWATER(3)-ZNUWATER(2)) / &
+                (ZWT(3) - ZWT(2))
+  ENDWHERE
+
+  ! Cas ou 20 < SST < 30 C
+  WHERE ((PSST(:) >= 293.15).AND.(PSST(:) < 303.15))
+    ZVISCO(:) = ZNUWATER(3) + (PSST(:) - ZWT(3)) * (ZNUWATER(4)-ZNUWATER(3)) / &
+                (ZWT(4) - ZWT(3))
+  ENDWHERE
+
+  ! Cas ou 30 < SST < 40 C
+  WHERE ((PSST(:) >= 303.15).AND.(PSST(:) < 313.15))
+    ZVISCO(:) = ZNUWATER(4) + (PSST(:) - ZWT(4)) * (ZNUWATER(5)-ZNUWATER(4)) / &
+                (ZWT(5) - ZWT(4))
+  ENDWHERE
+
+! Calcul du nombre de Reynolds
+  ZREYNOLDS(:) = (PUSTAR(:) * PWHEIGHT(:)) / ZVISCO(:)
+
+! Calcul du flux en nombre pour chaque mode
+
+! Ovadnevaite et al. 2014 
+!!!!! Total number flux, Unite ZSDSLT_MDE ne correspond pas au total number
+!flux mais au size dependent SSA production flux
+
+! Ecrire equation integration pour chaque mode
+
+!Condition d'emission : ZREYNOLDS > 1E5
+
+  WHERE (ZREYNOLDS(:) > 1.E5)
+    ZSFSLT_MDE(:,1) = 104.51 * ( ZREYNOLDS(:) - 1.E5)**0.556
+    ZSFSLT_MDE(:,2) = 0.044  * ( ZREYNOLDS(:) - 1.E5)**1.08
+    ZSFSLT_MDE(:,3) = 149.64 * ( ZREYNOLDS(:) - 1.E5)**0.545
+    ZSFSLT_MDE(:,4) = 2.96   * ( ZREYNOLDS(:) - 1.E5)**0.79
+  ENDWHERE
+  WHERE (ZREYNOLDS(:) > 2.E5)
+    ZSFSLT_MDE(:,5) = 0.52   * ( ZREYNOLDS(:) - 2.E5)**0.87
+  ENDWHERE
+
+
+
+  WHERE (ZREYNOLDS(:) <= 1.E5)
+    ZSFSLT_MDE(:,1) = 1.E-10
+    ZSFSLT_MDE(:,2) = 1.E-10
+    ZSFSLT_MDE(:,3) = 1.E-10
+    ZSFSLT_MDE(:,4) = 1.E-10
+  ENDWHERE
+  WHERE (ZREYNOLDS(:) <= 2.E5)
+    ZSFSLT_MDE(:,5) = 1.E-10
+  ENDWHERE
+
+! Controle avec des valeurs limites , Pas besoin de la conversion 1E4 pour Ova
+! car deja en m-2
+  ZSFSLT_MDE(:,1) = MAX(ZSFSLT_MDE(:,1) , 1.E-10)
+  ZSFSLT_MDE(:,2) = MAX(ZSFSLT_MDE(:,2) , 1.E-10)
+  ZSFSLT_MDE(:,3) = MAX(ZSFSLT_MDE(:,3) , 1.E-10)
+  ZSFSLT_MDE(:,4) = MAX(ZSFSLT_MDE(:,4) , 1.E-10)
+  ZSFSLT_MDE(:,5) = MAX(ZSFSLT_MDE(:,5) , 1.E-10)
+!- Marine
+
+ELSEIF (CEMISPARAM_SLT .eq. "Vig01") THEN
+! Vignatti et al. 2001 (in particles.cm-2.s-1) : en #.cm-3 en fait
+  ZSFSLT_MDE(:,1) =  10.**(0.09  *PWIND(:) + 0.283)   ! fine mode
+  ZSFSLT_MDE(:,2) =  10.**(0.0422*PWIND(:) + 0.288)   ! median mode
+  ZSFSLT_MDE(:,3) =  10.**(0.069 *PWIND(:) - 3.5)     ! coarse mode
+
+! convert into  particles.m-2.s-1)
+  ZSFSLT_MDE(:,1) = MAX(ZSFSLT_MDE(:,1) * 1.E4, 1.E-10)
+  ZSFSLT_MDE(:,2) = MAX(ZSFSLT_MDE(:,2) * 1.E4, 1.E-10)
+  ZSFSLT_MDE(:,3) = MAX(ZSFSLT_MDE(:,3) * 1.E4, 1.E-10)
+!
+ELSEIF (CEMISPARAM_SLT .eq. "Sch04") THEN! Use Schultz et al., 2004
   WCL(:) = INT(PWIND(:))
   WCL(:) = MAX (0, MIN(WCL(:), 39))
-  !
+ 
   DZSPEED(:) = MAX(0., MIN(PWIND(:) - FLOAT(WCL(:)), 1.))
-  !
-  ! Flux given  in  particles.m-2 s-1
-  !
-  DO JI=1,KI
-    !plm-gfortran
-    ZSFSLT_MDE(JI,1) = NUMB1FLUX(WCL(JI)) + (NUMB1FLUX(WCL(JI)+1)-NUMB1FLUX(WCL(JI)))*DZSPEED(JI)
-    ZSFSLT_MDE(JI,2) = NUMB2FLUX(WCL(JI)) + (NUMB2FLUX(WCL(JI)+1)-NUMB2FLUX(WCL(JI)))*DZSPEED(JI)
-    ZSFSLT_MDE(JI,3) = NUMB3FLUX(WCL(JI)) + (NUMB3FLUX(WCL(JI)+1)-NUMB3FLUX(WCL(JI)))*DZSPEED(JI)
-    !plm-gfortran
-  ENDDO
-  !
+ !
+ ! Flux given  in  particles.m-2 s-1
+ !
+  DO JI = 1, KI
+   !plm-gfortran
+    ZSFSLT_MDE(JI,1) = NUMB1FLUX(WCL(JI)) + &
+                      (NUMB1FLUX(WCL(JI)+1)-NUMB1FLUX(WCL(JI)))*DZSPEED(JI)
+    ZSFSLT_MDE(JI,2) = NUMB2FLUX(WCL(JI)) + &
+                      (NUMB2FLUX(WCL(JI)+1)-NUMB2FLUX(WCL(JI)))*DZSPEED(JI)
+    ZSFSLT_MDE(JI,3) = NUMB3FLUX(WCL(JI)) + &
+                      (NUMB3FLUX(WCL(JI)+1)-NUMB3FLUX(WCL(JI)))*DZSPEED(JI)
+   !plm-gfortran
+  END DO
 END IF
 !
-DO JN=1,JPMODE_SLT
+DO JN = 1, JPMODE_SLT
+
+! convert  particles.m-2 s-1 into kg.m-2.s-1
+! N'est calculé que pour le moment 3 (en masse), la conversion pour les autres
+! flux de moments se fait plus tard (mode_dslt_surf.F90 MASSFLUX2MOMENTFLUX)
+!+Marine
   !
-  IF (LVARSIG_SLT) THEN
-    !
-    PSFSLT(:,1+(JN-1)*3) = ZSFSLT_MDE(:,JORDER_SLT(JN))
-    PSFSLT(:,2+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * (SLT%XEMISRADIUS_SLT(JN)**3)*EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JN))**2)  
-    PSFSLT(:,3+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * (SLT%XEMISRADIUS_SLT(JN)**6)*EXP(18. * LOG(SLT%XEMISSIG_SLT(JN))**2)  
-    !
-    ! Conversion into fluxes
-    PSFSLT(:,1+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * ZCONVERTFACM0_SLT
-    PSFSLT(:,2+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * ZCONVERTFACM3_SLT
-    PSFSLT(:,3+(JN-1)*3) = PSFSLT(:,3+(JN-1)*3) * ZCONVERTFACM6_SLT
-
-  ELSE IF (LRGFIX_SLT) THEN
-    PSFSLT(:,JN) =  ZSFSLT_MDE(:,JORDER_SLT(JN)) * (SLT%XEMISRADIUS_SLT(JN)**3)*EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JN))**2) 
-    ! Conversion into fluxes
-    PSFSLT(:,JN) = PSFSLT(:,JN) * ZCONVERTFACM3_SLT
-
-  ELSE
-    PSFSLT(:,1+(JN-1)*2) = ZSFSLT_MDE(:,JORDER_SLT(JN)) 
-    PSFSLT(:,2+(JN-1)*2) = PSFSLT(:,1+(JN-1)*2) * (SLT%XEMISRADIUS_SLT(JN)**3)*EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JN))**2) 
-
-    ! Conversion into fluxes
-    PSFSLT(:,1+(JN-1)*2) = PSFSLT(:,1+(JN-1)*2) * ZCONVERTFACM0_SLT
-    PSFSLT(:,2+(JN-1)*2) = PSFSLT(:,1+(JN-1)*2) * ZCONVERTFACM3_SLT
-
-  ENDIF
+  IF (LVARSIG_SLT) THEN ! cas 3 moment
+
+    PSFSLT(:,2+(JN-1)*3) = ZSFSLT_MDE(:,JORDER_SLT(JN)) &
+                            * ((SLT%XEMISRADIUS_SLT(JORDER_SLT(JN))**3) &
+                            * EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JORDER_SLT(JN)))**2)) &
+                            * ZCONVERTFACM3_SLT
+
+  ELSEIF (LRGFIX_SLT) THEN ! cas 1 moment
+    PSFSLT(:,JN) =  ZSFSLT_MDE(:,JORDER_SLT(JN)) &
+                      * (SLT%XEMISRADIUS_SLT(JORDER_SLT(JN))**3) &
+                      * EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JORDER_SLT(JN)))**2) &
+                      * ZCONVERTFACM3_SLT
+
+  ELSE ! cas 2 moments
+
+    PSFSLT(:,2+(JN-1)*2) = ZSFSLT_MDE(:,JORDER_SLT(JN)) &
+                            * ((SLT%XEMISRADIUS_SLT(JORDER_SLT(JN))**3) &
+                            * EXP(4.5 * LOG(SLT%XEMISSIG_SLT(JORDER_SLT(JN)))**2)) &
+                            * ZCONVERTFACM3_SLT
+! -- PIERRE / MARINE SSA - MODIF --
+  END IF
 END DO
 
+
 IF (LHOOK) CALL DR_HOOK('COUPLING_SLT_N',1,ZHOOK_HANDLE)
 END SUBROUTINE COUPLING_SLT_n
diff --git a/src/SURFEX/coupling_surf_atmn.F90 b/src/SURFEX/coupling_surf_atmn.F90
index 9ee9651c22ceb72b66851668e76cfc2771982a1e..9a52eed46e1b6525e9e0ad2a000b97fc84ef205e 100644
--- a/src/SURFEX/coupling_surf_atmn.F90
+++ b/src/SURFEX/coupling_surf_atmn.F90
@@ -10,7 +10,7 @@ SUBROUTINE COUPLING_SURF_ATM_n (YSC, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR,
                                 PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, &
                                 PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF,     &
                                 PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF,       &
-                                PPET_B_COEF, PPEQ_B_COEF, HTEST           )
+                                PPET_B_COEF, PPEQ_B_COEF, PZWS, HTEST           )
 !     #################################################################################
 !
 !!****  *COUPLING_INLAND_WATER_n * - Driver to call the schemes for the 
@@ -39,6 +39,7 @@ SUBROUTINE COUPLING_SURF_ATM_n (YSC, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR,
 !!      Modified    06/2013 by J.Escobar  : replace DOUBLE PRECISION by REAL to handle problem for promotion of real on IBM SP
 !!      R. Séférian 03/2014 Adding decoupling between CO2 seen by photosynthesis and radiative CO2
 !!      P. Wautelet 02/2019 bug correction KI->KSIZE for size of KMASK argument in TREAT_SURF
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!-------------------------------------------------------------
 !
 !
@@ -128,6 +129,7 @@ REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizonta
 !                                             !                                       (W/m2)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KI), INTENT(IN)  :: PZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
@@ -475,6 +477,7 @@ REAL, DIMENSION(KSIZE) :: ZP_LW       ! longwave radiation (on horizontal surf.)
 !                                              !                                       (W/m2)
 REAL, DIMENSION(KSIZE) :: ZP_PS       ! pressure at atmospheric model surface (Pa)
 REAL, DIMENSION(KSIZE) :: ZP_PA       ! pressure at forcing level             (Pa)
+REAL, DIMENSION(KSIZE) :: ZP_ZWS      ! significant sea wave                  (m)
 REAL, DIMENSION(KSIZE) :: ZP_ZS       ! atmospheric model orography           (m)
 REAL, DIMENSION(KSIZE) :: ZP_CO2      ! CO2 concentration in the air          (kg/m3)
 REAL, DIMENSION(KSIZE,KSV) :: ZP_SV       ! scalar concentration in the air
@@ -532,6 +535,7 @@ DO JJ=1,KSIZE
   ZP_LW(JJ)         = PLW         (JI)
   ZP_PS(JJ)         = PPS         (JI)
   ZP_PA(JJ)         = PPA         (JI)
+  ZP_ZWS(JJ)        = PZWS        (JI)
   ZP_ZS(JJ)         = PZS         (JI)
 ENDDO
 !
@@ -584,7 +588,7 @@ IF (KTILE==1) THEN
                       ZP_PS, ZP_PA, ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV,     &
                       ZP_TRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H,     &
                       ZP_QSURF, ZP_PEW_A_COEF, ZP_PEW_B_COEF, ZP_PET_A_COEF, ZP_PEQ_A_COEF,  &
-                      ZP_PET_B_COEF, ZP_PEQ_B_COEF, 'OK'        )
+                      ZP_PET_B_COEF, ZP_PEQ_B_COEF, ZP_ZWS, 'OK'        )
   !
 ELSEIF (KTILE==2) THEN
   !
diff --git a/src/SURFEX/default_slt.F90 b/src/SURFEX/default_slt.F90
index e4f99f54a4c89da71b6fe82f411f277676888cc0..ca96f03f98d0b5c56c5cbd4b31838ac4d8c27045 100644
--- a/src/SURFEX/default_slt.F90
+++ b/src/SURFEX/default_slt.F90
@@ -32,6 +32,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    03/2005 
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -52,8 +53,10 @@ IMPLICIT NONE
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 IF (LHOOK) CALL DR_HOOK('DEFAULT_SLT',0,ZHOOK_HANDLE)
-CEMISPARAM_SLT = 'Vig01'
-JPMODE_SLT     = 3
+! ++ PIERRE / MARINE SSA - MODIF ++
+CEMISPARAM_SLT = 'Ova14'
+JPMODE_SLT     = 5
+! -- PIERRE / MARINE SSA - MODIF --
 LVARSIG_SLT    = .FALSE.
 LRGFIX_SLT     = .TRUE.
 IF (LHOOK) CALL DR_HOOK('DEFAULT_SLT',1,ZHOOK_HANDLE)
diff --git a/src/SURFEX/init_slt.F90 b/src/SURFEX/init_slt.F90
index 2320d6517af47881244b62bf2f3fb97d39c4841e..44e1e1bf988df95211f08f3e438b918468c72617 100644
--- a/src/SURFEX/init_slt.F90
+++ b/src/SURFEX/init_slt.F90
@@ -5,7 +5,36 @@
 SUBROUTINE INIT_SLT (SLT, &
                      HPROGRAM  &! Program calling unit
        )  
-
+!     ######################################################################
+!
+!!****  *INIT_SLT* - 
+!!
+!!    PURPOSE
+!!    -------
+!
+!!**  METHOD
+!!    ------
+!!    !!
+!!    EXTERNAL
+!!    --------
+!!    
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!    REFERENCE
+!!    ---------
+!!    
+!!
+!!    AUTHOR
+!!    ------
+!!    ?
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!! 
+!------------------------------------------------------------------------------
+!
 !
 USE MODD_SLT_n, ONLY : SLT_t
 !
@@ -38,14 +67,28 @@ ALLOCATE(SLT%XEMISSIG_SLT   (NSLTMDE))
 !Get initial size distributions. This is cut and pasted
 !from dead routine dstpsd.F90
 !Check for different source parameterizations
-IF(CEMISPARAM_SLT.eq."Vig01") THEN
+
+IF (CEMISPARAM_SLT.eq."Ova14") THEN
+  NSLTMDE = 5
+!  JORDER_SLT = (/3,2,1,4,5/) !Salt modes in order of importance
   CRGUNITS   = 'NUMB'
-  XEMISRADIUS_INI_SLT(:) = (/ 0.2, 2.0, 12.  /)  ! [um]  Number median radius She84 p. 75 Table 1
-  XEMISSIG_INI_SLT   (:) = (/ 1.9, 2.0, 3.00 /)  ! [frc] Geometric standard deviation She84 p. 75 Table 1
-ELSE  ! use default of Schultz et al, 2004
-  CRGUNITS   = 'MASS'
-  XEMISRADIUS_INI_SLT(:) = 0.5*(/0.28, 2.25, 15.32/) ! [um] Mass median radius
-  XEMISSIG_INI_SLT   (:) =     (/1.59, 2.00, 2.00 /) ! [frc] Geometric standard deviation
+  XEMISRADIUS_INI_SLT = (/0.009, 0.021, 0.045, 0.115, 0.415/)
+  XEMISSIG_INI_SLT = (/1.37, 1.5, 1.42, 1.53, 1.85/)
+
+ELSE IF(CEMISPARAM_SLT.eq."Vig01") THEN
+   NSLTMDE = 5
+!  JORDER_SLT = (/3,2,1,4,5/) !Salt modes in order of importance, only three modes
+   CRGUNITS   = 'NUMB'
+   XEMISRADIUS_INI_SLT =  (/ 0.2,  2.0, 12.,0.,0. /)         ! [um]  Number median radius Viganati et al., 2001
+   XEMISSIG_INI_SLT = (/ 1.9, 2.0, 3.00,0.,0.  /)  ! [frc] Geometric standard deviation Viganati et al., 2001
+
+ELSE IF(CEMISPARAM_SLT.eq."Sch04") THEN ! use default of Schultz et al, 2004
+   NSLTMDE = 5
+!  JORDER_SLT = (/3,2,1,4,5/), only three modes
+   CRGUNITS   = 'MASS'
+   XEMISRADIUS_INI_SLT = 0.5*(/0.28, 2.25, 15.32, 0., 0./)! [um] Mass median radius
+   XEMISSIG_INI_SLT = (/1.59, 2.00, 2.00, 0., 0./) ! [frc] Geometric standard deviation
+
 ENDIF
 !
 DO JMODE=1,NSLTMDE
diff --git a/src/SURFEX/modd_slt_surf.F90 b/src/SURFEX/modd_slt_surf.F90
index 0ee1b2b658f75509634126c22cb7e93e5e97c9ff..589cfb655881a5efb184c08463b4ba564280a427 100644
--- a/src/SURFEX/modd_slt_surf.F90
+++ b/src/SURFEX/modd_slt_surf.F90
@@ -4,13 +4,18 @@
 !SFX_LIC for details. version 1.
 MODULE MODD_SLT_SURF
 !
+! MODIFICATIONS
+!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+
+
 IMPLICIT NONE
 !
 REAL, PARAMETER  :: XDENSITY_SLT     = 2.1e3    ! [kg/m3] density of sea salt
 REAL, PARAMETER  :: XMOLARWEIGHT_SLT = 58.e-3   ! [kg/mol] molar weight sea salt
 !
-INTEGER, PARAMETER  :: NEMISMODES_MAX=3
-INTEGER, DIMENSION(NEMISMODES_MAX), PARAMETER :: JORDER_SLT=(/3,2,1/) !Dust modes in order of importance
+INTEGER, PARAMETER  :: NEMISMODES_MAX=5
+INTEGER, DIMENSION(NEMISMODES_MAX), PARAMETER :: JORDER_SLT=(/3,2,1,5,4/) !Dust modes in order of importance
 !Set emission related parameters
 REAL,DIMENSION(NEMISMODES_MAX)   :: XEMISRADIUS_INI_SLT          ! number madian radius initialization for sea salt mode (um)
 REAL,DIMENSION(NEMISMODES_MAX)   :: XEMISSIG_INI_SLT             ! dispersion initialization for sea salt mode
diff --git a/src/SURFEX/modd_sltn.F90 b/src/SURFEX/modd_sltn.F90
index 84a48d74c4c7c20da51619e79970ec1ebc6e72ad..4187b72f2450b5a50a00f2607d1ec550871476ad 100644
--- a/src/SURFEX/modd_sltn.F90
+++ b/src/SURFEX/modd_sltn.F90
@@ -10,25 +10,43 @@ MODULE MODD_SLT_n
 !
 !Author: Alf Grini / Pierre Tulet
 !
+! MODIFICATIONS
+!
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+
 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
 USE PARKIND1  ,ONLY : JPRB
 !
 IMPLICIT NONE
-!
+
 TYPE SLT_t
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+!  REAL, DIMENSION(:,:,:),POINTER :: XSFSLT                      ! Sea Salt variables to be send to output
+! -- PIERRE / MARINE SSA DUST - MODIF --
   REAL,DIMENSION(:), POINTER     :: XEMISRADIUS_SLT             ! Number median radius for each source mode
   REAL,DIMENSION(:), POINTER     :: XEMISSIG_SLT                ! sigma for each source mode
 END TYPE SLT_t
+
+
+
+ CONTAINS
+
 !
-CONTAINS
-!
+
+
+
+
 SUBROUTINE SLT_INIT(YSLT)
 TYPE(SLT_t), INTENT(INOUT) :: YSLT
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK("MODD_SLT_N:SLT_INIT",0,ZHOOK_HANDLE)
+! ++ PIERRE / MARINE SSA DUST - MODIF ++
+!  NULLIFY(YSLT%XSFSLT)
+! -- PIERRE / MARINE SSA DUST - MODIF --
   NULLIFY(YSLT%XEMISRADIUS_SLT)
   NULLIFY(YSLT%XEMISSIG_SLT)
 IF (LHOOK) CALL DR_HOOK("MODD_SLT_N:SLT_INIT",1,ZHOOK_HANDLE)
 END SUBROUTINE SLT_INIT
-!
+
+
 END MODULE MODD_SLT_n
diff --git a/src/SURFEX/modn_slt.F90 b/src/SURFEX/modn_slt.F90
index 44a889c3f838d35db853431031274e7c30b52680..091c4e400dd9203e36752aa5084e7f688cc20846 100644
--- a/src/SURFEX/modn_slt.F90
+++ b/src/SURFEX/modn_slt.F90
@@ -20,10 +20,11 @@
 !!    MODIFICATIONS
 !!    -------------
 !!    Original 24/02/05
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
-USE MODD_SLT_SURF, ONLY : CEMISPARAM_SLT
+USE MODD_SLT_SURF
 !!
 !-----------------------------------------------------------------------------
 !
@@ -32,7 +33,6 @@ USE MODD_SLT_SURF, ONLY : CEMISPARAM_SLT
 IMPLICIT NONE
 SAVE
 NAMELIST /NAM_SURF_SLT/  &
-       CEMISPARAM_SLT            !Parameterization type   
-
+       CEMISPARAM_SLT, LVARSIG_SLT, LRGFIX_SLT, JPMODE_SLT            !Parameterization type
 !
 END MODULE MODN_SLT