diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90
index e030f6f5e8b7e1bdc23ae065c93eececa507e54d..6d135c72c053f1094f5978b6deb5fd48d6f4f802 100644
--- a/src/MNH/ground_paramn.f90
+++ b/src/MNH/ground_paramn.f90
@@ -143,9 +143,11 @@ USE MODD_ARGSLIST_ll,       ONLY: LIST_ll
 USE MODD_BLOWSNOW,          ONLY: LBLOWSNOW, NBLOWSNOW_2D, YPBLOWSNOW_2D
 USE MODD_BLOWSNOW_n,        ONLY: XRSNWCANOS
 USE MODD_BUDGET,            ONLY: LBUDGET_TH, LBUDGET_RV, NBUDGET_RV, NBUDGET_TH, TBUDGETS
-USE MODD_CH_AEROSOL,        ONLY: LORILAM
+USE MODD_CH_AEROSOL,        ONLY: LORILAM, NSP, NCARB, NSOA
+USE MODD_CH_AERO_n,         ONLY: XMI
 USE MODD_CH_FLX_n,          ONLY: XCHFLX
 USE MODD_CH_MNHC_n,         ONLY: LUSECHEM
+USE MODD_CH_M9_SCHEME
 USE MODD_CONF,              ONLY: CPROGRAM, LCARTESIAN, NHALO, NVERB
 USE MODD_CONF_n,            ONLY: NRR
 USE MODD_COUPLING_LEVELS_n
@@ -160,7 +162,8 @@ USE MODD_DIM_n,             ONLY: NKMAX
 USE MODD_DIMPHYEX,          ONLY: DIMPHYEX_t
 USE MODD_DUST,              ONLY: LDUST 
 USE MODD_DYN_n,             ONLY: XTSTEP
-USE MODD_FIELD_n,           ONLY: XUT, XVT, XWT, XTHT, XRT, XPABST, XSVT, XTKET, XZWS, XRTHS, XRRS
+USE MODD_FIELD_n,           ONLY: XUT, XVT, XWT, XTHT, XRT, XPABST, XSVT, XTKET, XZWS, XRTHS, XRRS, &
+                                  XFLX_SLT, XFLXT_SLT, XFLX_AER, XFLXT_AER, XFLX_DMS, XFLXT_DMS
 USE MODD_FIRE_n,            ONLY: XLSPHI, XBMAP, XFMR0, XFMRFA, XFMWF0, XFMR00, XFMIGNITION, XFMFUELTYPE,    &
                                   XFIRETAU, XFLUXPARAMH, XFLUXPARAMW, XFIRERW, XFMASE, XFMAWC, XFMWALKIG,    &
                                   XFMFLUXHDH, XFMFLUXHDW, XFMHWS, XFMWINDU, XFMWINDV, XFMWINDW, XGRADLSPHIX, &
@@ -187,7 +190,7 @@ USE MODD_RADIATIONS_n,      ONLY: XFLALWD, XCCO2, XTSIDER, &
                                   XSW_BANDS, XDIRSRFSWD, XSCAFLASWD, &
                                   XZENITH, XAZIM, XAER, XSWU, XLWU
 USE MODD_REF_n,             ONLY: XEXNREF, XRHODREF, XRHODJ
-USE MODD_SALT,              ONLY: LSALT
+USE MODD_SALT,              ONLY: LSALT, NMODE_SLT, XINIRADIUS_SLT, XINISIG_SLT, CRGUNITS, JPSALTORDER
 USE MODD_STATION_n,         ONLY: LSTATION
 USE MODD_SURF_PAR,          ONLY: XUNDEF_SFX => XUNDEF
 USE MODD_TIME,              ONLY: TDTSEG
@@ -455,6 +458,11 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZFIREFUELMAP                     ! Fuel
 CHARACTER(LEN=7)                      :: YFUELMAPFILE                     ! Fuel Map file name
 TYPE(LIST_ll), POINTER                :: TZFIELDFIRE_ll                   ! list of fields to exchange
 !
+INTEGER :: II
+INTEGER :: JSV_DMS, JSV_SLT   ! index for sea salt flux
+INTEGER :: IMOMENTS  ! number of moments for sea salt
+REAL,DIMENSION(:),       ALLOCATABLE  :: ZINIRADIUS          ! initial mean radius
+INTEGER                               :: IMODEIDX            ! [idx] loop counters
 !-------------------------------------------------------------------------------
 !
 !
@@ -1065,6 +1073,13 @@ IF (LUSECHEM) THEN
       PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / ( XAVOGADRO * XRHODREF(:,:,IKB))
       IF ((LCHEMDIAG).AND.(CPROGRAM == 'DIAG  ')) XCHFLX(:,:,JSV-NSV_CHEMBEG+1) = PSFSV(:,:,JSV)    
    END DO
+    IF (CPROGRAM == 'MESONH') THEN
+    ! net flux of so2 in kg/m2/s
+    XFLX_DMS(:,:) = ZSFTS(:,:,NSV_CHEMBEG-1+JP_DMS) *62.13E-3 / XAVOGADRO
+    ! total net flux of so2 in kg/m2
+    XFLXT_DMS(:,:) = XFLXT_DMS(:,:)+ ZSFTS(:,:,NSV_CHEMBEG-1+JP_DMS)*XTSTEP
+    END IF
+
 ELSE
   PSFSV(:,:,NSV_CHEMBEG:NSV_CHEMEND) = 0.
 END IF
@@ -1088,6 +1103,39 @@ IF (LSALT) THEN
 ELSE
   PSFSV(:,:,NSV_SLTBEG:NSV_SLTEND) = 0.
 END IF
+
+IF ((LSALT).AND.(CPROGRAM == 'MESONH')) THEN
+  IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG + 1) / NMODE_SLT
+  ALLOCATE (ZINIRADIUS(NMODE_SLT))
+
+  DO JSV = 1, NMODE_SLT
+    JSV_SLT = NSV_SLTBEG + 1 + (JSV-1)*IMOMENTS
+
+    IF (IMOMENTS == 1) THEN ! conversion number to mass
+    IMODEIDX = JPSALTORDER(JSV)
+      IF (CRGUNITS=="MASS") THEN
+       ZINIRADIUS(JSV) = XINIRADIUS_SLT(IMODEIDX) * EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
+      ELSE
+       ZINIRADIUS(JSV) = XINIRADIUS_SLT(IMODEIDX)
+      END IF
+
+    
+! Instantaneous net flux
+    XFLX_SLT(:,:,JSV) = ZSFTS(:,:,JSV_SLT-1) * 4./3. * XPI * XMD / 1.d18 * ZINIRADIUS(JSV)**3 / &
+                        (EXP(-4.5*(LOG(XINISIG_SLT(IMODEIDX)))**2))
+
+    ELSE ! moment 2 or 3,  direct mass flux from surfex
+! Instantaneous net flux
+    XFLX_SLT(:,:,JSV) = ZSFTS(:,:,JSV_SLT) 
+    END IF
+
+! Total net flux
+    XFLXT_SLT(:,:,JSV) = XFLXT_SLT(:,:,JSV) + &
+                         ZSFTS(:,:,JSV_SLT) * XTSTEP
+  END DO
+  DEALLOCATE(ZINIRADIUS)
+END IF
+
 !
 !* conversion from aerosol flux (molec/m2/s) to (ppv.m.s-1)
 !
@@ -1095,6 +1143,19 @@ IF (LORILAM) THEN
   DO JSV=NSV_AERBEG,NSV_AEREND
     PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / ( XAVOGADRO * XRHODREF(:,:,IKB))
   END DO
+  IF (CPROGRAM == 'MESONH') THEN
+  DO JSV=NSV_AERBEG,NSV_AERBEG+(NSP+NCARB+NSOA)*2-1
+  JI=INT((JSV-NSV_AERBEG+1)/2. +0.5)
+! Instantaneous net flux (kg/m2/s)
+    XFLX_AER(:,:,JSV-NSV_AERBEG+1) = ZSFTS(:,:,JSV) * XMI(:,:,IKB,JI) &
+                                     *1E-3  / XAVOGADRO
+
+! Total net flux
+    XFLXT_AER(:,:,JSV-NSV_AERBEG+1) = XFLXT_AER(:,:,JSV-NSV_AERBEG+1) + &
+                         XFLX_AER(:,:,JSV-NSV_AERBEG+1) * XTSTEP
+  END DO
+  END IF
+
 ELSE
   PSFSV(:,:,NSV_AERBEG:NSV_AEREND) = 0.
 END IF
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index ecaae1f6ef7aec7571272cdbd978fa948f962b43..d9d28aef64039c9e0a5d4a91061179ff639f3a39 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -394,7 +394,7 @@ USE MODD_RECYCL_PARAM_n
 USE MODD_REF
 USE MODD_REF_n
 USE MODD_RELFRC_n
-use MODD_SALT,              only: LSALT
+use MODD_SALT,              only: LSALT, NMODE_SLT
 use MODD_SALT_OPT_LKT,      only: NMAX_RADIUS_LKT_SALT=>NMAX_RADIUS_LKT, NMAX_SIGMA_LKT_SALT=>NMAX_SIGMA_LKT,               &
                                   NMAX_WVL_SW_SALT=>NMAX_WVL_SW,                                                            &
                                   XEXT_COEFF_WVL_LKT_SALT=>XEXT_COEFF_WVL_LKT, XEXT_COEFF_550_LKT_SALT=>XEXT_COEFF_550_LKT, &
@@ -2555,6 +2555,22 @@ RCCO2 = 360.0E-06 * 44.0E-03 / XMD
 !
 !*      17.2   Externalized surface fields
 !              ---------------------------
+IF (CPROGRAM=='MESONH') THEN
+  ! ajout flux aerosols marins
+  ALLOCATE(XFLXT_SLT(IIU,IJU,NMODE_SLT))
+  ALLOCATE(XFLX_SLT(IIU,IJU,NMODE_SLT))
+  ALLOCATE(XFLX_AER(IIU,IJU,NSV_AER))
+  ALLOCATE(XFLXT_AER(IIU,IJU,NSV_AER))
+  ALLOCATE(XFLX_DMS(IIU,IJU))
+  ALLOCATE(XFLXT_DMS(IIU,IJU))
+  XFLX_SLT(:,:,:) = 0.
+  XFLXT_SLT(:,:,:) = 0.
+  XFLX_AER(:,:,:) = 0.
+  XFLXT_AER(:,:,:) = 0.
+  XFLX_DMS(:,:) = 0.
+  XFLXT_DMS(:,:) = 0.
+END IF
+
 !
 ALLOCATE(ZCO2(IIU,IJU))
 ZCO2(:,:) = XCCO2
diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90
index 9cc888e85f70d9bf95afbda9d907a9e5c572dd19..5073c5450d0926938ae467295e5846be79f2af9a 100644
--- a/src/MNH/modd_fieldn.f90
+++ b/src/MNH/modd_fieldn.f90
@@ -129,6 +129,13 @@ TYPE FIELD_t
   REAL, DIMENSION(:,:,:), POINTER :: XHLC_HCF=>NULL()
   REAL, DIMENSION(:,:,:), POINTER :: XHLI_HRI=>NULL()
   REAL, DIMENSION(:,:,:), POINTER :: XHLI_HCF=>NULL()
+  REAL, DIMENSION(:,:,:), POINTER :: XFLX_SLT=>NULL()    ! 
+  REAL, DIMENSION(:,:,:), POINTER :: XFLXT_SLT=>NULL()
+  REAL, DIMENSION(:,:,:), POINTER :: XFLX_AER=>NULL()    ! 
+  REAL, DIMENSION(:,:,:), POINTER :: XFLXT_AER=>NULL()
+  REAL, DIMENSION(:,:), POINTER :: XFLX_DMS=>NULL()    ! 
+  REAL, DIMENSION(:,:), POINTER :: XFLXT_DMS=>NULL()
+
   !
 END TYPE FIELD_t
 
@@ -174,6 +181,13 @@ REAL, DIMENSION(:,:,:), POINTER :: XRCM=>NULL()
 REAL, DIMENSION(:,:),   POINTER :: XFLUCTUNW=>NULL(),XFLUCTVNN=>NULL(),XFLUCTUTN=>NULL(),XFLUCTVTW=>NULL()
 REAL, DIMENSION(:,:),   POINTER :: XFLUCTUNE=>NULL(),XFLUCTVNS=>NULL(),XFLUCTUTS=>NULL(),XFLUCTVTE=>NULL()
 REAL, DIMENSION(:,:),   POINTER :: XFLUCTWTW=>NULL(),XFLUCTWTN=>NULL(),XFLUCTWTE=>NULL(),XFLUCTWTS=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XFLX_SLT=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XFLXT_SLT=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XFLX_AER=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XFLXT_AER=>NULL()
+REAL, DIMENSION(:,:), POINTER :: XFLX_DMS=>NULL()
+REAL, DIMENSION(:,:), POINTER :: XFLXT_DMS=>NULL()
+
 
 CONTAINS
 
@@ -235,6 +249,13 @@ FIELD_MODEL(KFROM)%XHLC_HRC=>XHLC_HRC
 FIELD_MODEL(KFROM)%XHLC_HCF=>XHLC_HCF
 FIELD_MODEL(KFROM)%XHLI_HRI=>XHLI_HRI
 FIELD_MODEL(KFROM)%XHLI_HCF=>XHLI_HCF
+
+FIELD_MODEL(KFROM)%XFLX_SLT  => XFLX_SLT
+FIELD_MODEL(KFROM)%XFLXT_SLT => XFLXT_SLT
+FIELD_MODEL(KFROM)%XFLX_AER  => XFLX_AER
+FIELD_MODEL(KFROM)%XFLXT_AER => XFLXT_AER
+FIELD_MODEL(KFROM)%XFLX_DMS  => XFLX_DMS
+FIELD_MODEL(KFROM)%XFLXT_DMS => XFLXT_DMS
 !
 ! Current model is set to model KTO
 !XZWS=>FIELD_MODEL(KTO)%XZWS !Done in FIELDLIST_GOTO_MODEL
@@ -290,6 +311,15 @@ XHLC_HRC=>FIELD_MODEL(KTO)%XHLC_HRC
 XHLC_HCF=>FIELD_MODEL(KTO)%XHLC_HCF
 XHLI_HRI=>FIELD_MODEL(KTO)%XHLI_HRI
 XHLI_HCF=>FIELD_MODEL(KTO)%XHLI_HCF
+
+XFLX_SLT=>FIELD_MODEL(KTO)%XFLX_SLT
+XFLXT_SLT=>FIELD_MODEL(KTO)%XFLXT_SLT
+XFLX_AER=>FIELD_MODEL(KTO)%XFLX_AER
+XFLXT_AER=>FIELD_MODEL(KTO)%XFLXT_AER
+XFLX_DMS=>FIELD_MODEL(KTO)%XFLX_DMS
+XFLXT_DMS=>FIELD_MODEL(KTO)%XFLXT_DMS
+
 END SUBROUTINE FIELD_GOTO_MODEL
 
+
 END MODULE MODD_FIELD_n
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index b09dcfb7dad528cd2bad0d76b1c5c5154b75bc60..7f5b1ab8624962cb9217f76e52012f6c2fb5e180 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -223,6 +223,7 @@ USE MODD_EOL_SHARED_IO
 USE MODD_FIELD_n
 use modd_field,       only: NMNHDIM_UNUSED, tfieldmetadata, tfieldlist, NMNHDIM_NI, NMNHDIM_NJ, NMNHDIM_NOTLISTED, &
                             TYPECHAR, TYPEDATE, TYPEINT, TYPELOG, TYPEREAL
+use mode_field,           only: Find_field_id_from_mnhname
 USE MODD_FIRE_n
 #ifdef MNH_FOREFIRE
 USE MODD_FOREFIRE
@@ -301,6 +302,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: JSV            ! loop index for scalar variables
 !
 CHARACTER(LEN=3)  :: YFRC           ! to mark the time of the forcing
+CHARACTER(LEN=1)  :: YFRC1          ! to mark the time of the forcing
 INTEGER           :: JT             ! loop index
 !
 REAL,DIMENSION(:,:), ALLOCATABLE  :: ZWORK2D     ! Working array
@@ -1128,6 +1130,98 @@ IF (NSV >= 1 ) THEN
   END IF
   END IF
 
+IF ((LORILAM).AND.(CPROGRAM == 'MESONH')) THEN
+DO JSV = 1 , NSV_AER
+    TZFIELD = TFIELDMETADATA(                                      &
+      CMNHNAME   = 'FLX_'//TRIM(UPCASE(CAERONAMES(JSV))),          &
+      CSTDNAME   = '',                                             &
+      CLONGNAME  = 'FLX_'//TRIM(UPCASE(CAERONAMES(JSV))),          &
+      CUNITS     = 'kg m-2 s-1',                                   &
+      CDIR       = 'XY',                                           &
+      CCOMMENT   = 'Aerosols mass flux', &
+      NGRID      = 1,                                              &
+      NTYPE      = TYPEREAL,                                       &
+      NDIMS      = 2,                                              &
+      LTIMEDEP   = .TRUE.                                          )
+    CALL IO_Field_write(TPFILE,TZFIELD,XFLX_AER(:,:,JSV))
+
+    TZFIELD = TFIELDMETADATA(                                      &
+      CMNHNAME   = 'FLXT_'//TRIM(UPCASE(CAERONAMES(JSV))),         &
+      CSTDNAME   = '',                                             &
+      CLONGNAME  = 'FLXT_'//TRIM(UPCASE(CAERONAMES(JSV))),         &
+      CUNITS     = 'kg m-2',                                       &
+      CDIR       = 'XY',                                           &
+      CCOMMENT   = 'Integrated aerosols flux since start/restart',  &
+      NGRID      = 1,                                              &
+      NTYPE      = TYPEREAL,                                       &
+      NDIMS      = 2,                                              &
+      LTIMEDEP   = .TRUE.                                          )
+    CALL IO_Field_write(TPFILE,TZFIELD,XFLXT_AER(:,:,JSV))
+END DO
+END IF
+
+IF ((LSALT).AND.(CPROGRAM == 'MESONH')) THEN
+DO JSV = 1 , NMODE_SLT
+    WRITE (YFRC1,'(I1.1)') JSV
+
+    TZFIELD = TFIELDMETADATA(                                      &
+      CMNHNAME   = 'FLX_SLT'//YFRC1,                               &
+      CSTDNAME   = '',                                             &
+      CLONGNAME  = 'FLX_SLT'//YFRC1,                               &
+      CUNITS     = 'part m-2 s-1',                                   &
+      CDIR       = 'XY',                                           &
+      CCOMMENT   = 'Sea salt mass flux',                           &
+      NGRID      = 1,                                              &
+      NTYPE      = TYPEREAL,                                       &
+      NDIMS      = 2,                                              &
+      LTIMEDEP   = .TRUE.                                          )
+    CALL IO_Field_write(TPFILE,TZFIELD,XFLX_SLT(:,:,JSV))
+
+    TZFIELD = TFIELDMETADATA(                                      &
+      CMNHNAME   = 'FLXT_SLT'//YFRC1,                              &
+      CSTDNAME   = '',                                             &
+      CLONGNAME  = 'FLXT_SLT'//YFRC1,                              &
+      CUNITS     = 'part m-2',                                       &
+      CDIR       = 'XY',                                           &
+      CCOMMENT   = 'Integrated sea salt flux since start/restart', &
+      NGRID      = 1,                                              &
+      NTYPE      = TYPEREAL,                                       &
+      NDIMS      = 2,                                              &
+      LTIMEDEP   = .TRUE.                                          )
+    CALL IO_Field_write(TPFILE,TZFIELD,XFLXT_SLT(:,:,JSV))
+END DO
+END IF
+
+IF ((LUSECHEM).AND.(CPROGRAM == 'MESONH')) THEN
+    TZFIELD = TFIELDMETADATA(                                      &
+      CMNHNAME   = 'FLX_DMS',                                      &
+      CSTDNAME   = '',                                             &
+      CLONGNAME  = 'FLX_DMS',                                      &
+      CUNITS     = 'kg m-2 s-1',                                   &
+      CDIR       = 'XY',                                           &
+      CCOMMENT   = 'Sea salt mass flux', &
+      NGRID      = 1,                                              &
+      NTYPE      = TYPEREAL,                                       &
+      NDIMS      = 2,                                              &
+      LTIMEDEP   = .TRUE.                                          )
+    CALL IO_Field_write(TPFILE,TZFIELD,XFLX_DMS(:,:))
+
+    TZFIELD = TFIELDMETADATA(                                      &
+      CMNHNAME   = 'FLXT_DMS',                                     &
+      CSTDNAME   = '',                                             &
+      CLONGNAME  = 'FLXT_DMS',                                     &
+      CUNITS     = 'kg m-2',                                       &
+      CDIR       = 'XY',                                           &
+      CCOMMENT   = 'Integrated sea salt flux since start/restart', &
+      NGRID      = 1,                                              &
+      NTYPE      = TYPEREAL,                                       &
+      NDIMS      = 2,                                              &
+      LTIMEDEP   = .TRUE.                                          )
+    CALL IO_Field_write(TPFILE,TZFIELD,XFLXT_DMS(:,:))
+END IF
+
+
+
   ! electrical scalar variables
   IF (CELEC /= 'NONE') THEN
     CALL IO_Field_write(TPFILE,'EFIELDU',XEFIELDU)