diff --git a/src/LIB/SURCOUCHE/src/modd_io.f90 b/src/LIB/SURCOUCHE/src/modd_io.f90
index 47e3f7ddd27a9e5750ca02b987d745792d143bd5..41dd6cc85ec00a24796fa250a966441f1df783b8 100644
--- a/src/LIB/SURCOUCHE/src/modd_io.f90
+++ b/src/LIB/SURCOUCHE/src/modd_io.f90
@@ -49,8 +49,19 @@ END TYPE TOUTBAK
 
 !Structure describing the characteristics of a file
 TYPE TFILEDATA
-  CHARACTER(LEN=28) :: CFILENAME             !Filename
-  CHARACTER(LEN=7)  :: CFILETYPE = "UNKNOWN" !Filetype (backup, output...)
+  CHARACTER(LEN=28) :: CNAME               !Filename
+  CHARACTER(LEN=7)  :: CTYPE   = "UNKNOWN" !Filetype (backup, output...)
+  CHARACTER(LEN=7)  :: CFORMAT = "UNKNOWN" !Fileformat (NETCDF4, LFI...)
+  CHARACTER(LEN=7)  :: CMODE   = "UNKNOWN" !Opening mode (read, write...)
+  LOGICAL           :: LOPENED = .FALSE.   !Is the file opened
+  INTEGER           :: NOPEN   = 0         !Number of times the file has been opened (during the current execution)
+  !
+  ! Fields for LFI files
+  INTEGER :: NLFINPRAR = 0  !Number of predicted articles of the LFI file (non crucial)
+  INTEGER :: NLFININAR = -1 !Number of articles present at opening of the LFI file
+  INTEGER :: NLFITYPE  = -1 !Type of the file (used to generate list of files to transfers)
+  INTEGER :: NLFIVERB  = 1  !LFI verbosity level
+  !
   TYPE(TFILEDATA),POINTER :: TFILE_PREV => NULL()
   TYPE(TFILEDATA),POINTER :: TFILE_NEXT => NULL()
 END TYPE TFILEDATA
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 1ac060212d6e6eb7cb180f9e37bfdaaf08c0ef50..7788c184895b1f1241ad2f056213ba531270e8eb 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -278,6 +278,7 @@ USE MODD_LUNIT
 USE MODD_GRID, ONLY: XLONORI,XLATORI
 USE MODD_SERIES, ONLY: LSERIES
 USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD,CTURBLEN_CLOUD,XCEI
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 USE MODD_SUB_MODEL_n
 USE MODD_GET_n
@@ -428,6 +429,7 @@ INTEGER :: INPRAR               ! number of articles predicted  in
 INTEGER :: ININAR               ! number of articles  present in
                                 !  the LFIFM file
 INTEGER :: ITYPE                ! type of file (cpio or not)
+INTEGER :: IVERB                ! LFI verbosity level
 LOGICAL :: GSTEADY_DMASS        ! conditional call to mass computation
 !
                                 ! for computing time analysis
@@ -525,6 +527,8 @@ REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZTMP
 TYPE(LIST_ll), POINTER :: TZFIELDC_ll   ! list of fields to exchange
 TYPE(HALO2LIST_ll), POINTER :: TZHALO2C_ll   ! list of fields to exchange
 !
+TYPE(TFILEDATA),POINTER :: TZFILE
+CHARACTER(LEN=:),ALLOCATABLE :: YMODE
 !-------------------------------------------------------------------------------
 !
 !*       0.    MICROPHYSICAL SCHEME
@@ -906,12 +910,21 @@ IF (IOUT < NOUT_NUMB ) THEN
   IF (KTCOUNT == TOUTBAKN(IOUT+1)%NSTEP) THEN
     IOUT=IOUT+1
     GCLOSE_OUT=.TRUE.
-    INPRAR = 22 +2*(4+NRR+NSV)
     !
-    YFMFILE  = TOUTBAKN(IOUT)%TFILE%CFILENAME
+    TZFILE => TOUTBAKN(IOUT)%TFILE
+    YFMFILE  = TZFILE%CNAME
     YDADFILE = TOUTBAKN(IOUT)%CDADFILENAME
+    YMODE    = TZFILE%CMODE
+    INPRAR   = TZFILE%NLFINPRAR
+    ITYPE    = TZFILE%NLFITYPE
+    IVERB    = TZFILE%NLFIVERB
+    !
+    CALL FMOPEN_ll(YFMFILE,YMODE,CLUOUT,INPRAR,ITYPE,IVERB,ININAR,IRESP)
+    !
+    TZFILE%NLFININAR = ININAR
+    TZFILE%LOPENED = .TRUE.
+    TZFILE%NOPEN   = TZFILE%NOPEN + 1
     !
-    CALL FMOPEN_ll(YFMFILE,'WRITE',CLUOUT,INPRAR,ITYPE,NVERB,ININAR,IRESP)
     YDESFM=ADJUSTL(ADJUSTR(YFMFILE)//'.des')
     !    
     CALL WRITE_DESFM_n(IMI,YDESFM,CLUOUT)
@@ -923,12 +936,12 @@ IF (IOUT < NOUT_NUMB ) THEN
       CALL WRITE_SURF_ATM_n(YSURF_CUR,'MESONH','ALL',.FALSE.)
     END IF
     !
-    ! Reinitialize Lagragian variables at every model output
+    ! Reinitialize Lagragian variables at every model backup
     IF (LLG .AND. LINIT_LG .AND. CINIT_LG=='FMOUT') THEN
       CALL INI_LG(XXHAT,XYHAT,XZZ,XSVT,XLBXSVM,XLBYSVM)
-      IF (NVERB>=5) THEN
+      IF (IVERB>=5) THEN
         WRITE(UNIT=ILUOUT,FMT=*) '************************************'
-        WRITE(UNIT=ILUOUT,FMT=*) '*** Lagrangian variables refreshed after ',TRIM(YFMFILE),' output'
+        WRITE(UNIT=ILUOUT,FMT=*) '*** Lagrangian variables refreshed after ',TRIM(YFMFILE),' backup'
         WRITE(UNIT=ILUOUT,FMT=*) '************************************'
       END IF
     END IF
@@ -1900,6 +1913,7 @@ XT_STEP_BUD = XT_STEP_BUD + ZTIME2 - ZTIME1 + XTIME_BU
 IF (GCLOSE_OUT) THEN
   GCLOSE_OUT=.FALSE.
   CALL FMCLOS_ll(YFMFILE,'KEEP',CLUOUT,IRESP)
+  TZFILE%LOPENED = .FALSE.
 END IF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/set_grid.f90 b/src/MNH/set_grid.f90
index 57f978c3c24dcf4b27b0494ec66ab77470ae2935..824b4c0ec5271a5817e8acde9d607b92dfb1309e 100644
--- a/src/MNH/set_grid.f90
+++ b/src/MNH/set_grid.f90
@@ -243,6 +243,7 @@ USE MODD_BUDGET
 USE MODD_DYN
 USE MODD_FMOUT
 USE MODD_NESTING
+USE MODD_NSV, ONLY: NSV
 !
 USE MODE_GRIDCART
 USE MODE_GRIDPROJ
@@ -717,9 +718,26 @@ DO IMI = 1, NMODEL
           TFILE_LAST => TFILE_LAST%TFILE_NEXT
         ENDIF
         OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE => TFILE_LAST
-        OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CFILETYPE="BACKUP"
+        OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CTYPE="BACKUP"
+        OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CMODE="WRITE"
         WRITE (YNUMBER,FMT="('.',I3.3)") IPOS
-        OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CFILENAME=ADJUSTL(ADJUSTR(IO_SURF_MNH_MODEL(IMI)%COUTFILE)//YNUMBER)
+        OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CNAME=ADJUSTL(ADJUSTR(IO_SURF_MNH_MODEL(IMI)%COUTFILE)//YNUMBER)
+        OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%NLFITYPE=1 !1: to be transfered
+!PW: TODO: set NLFIVERB only when useful (only if LFI file...)
+        OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%NLFIVERB=NVERB
+        IF (LIOCDF4) THEN
+          OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CTYPE='NETCDF4'
+          IF (LLFIOUT) THEN
+            PRINT *,'Warning: LLFIOUT + LIOCDF4 = .TRUE. not yet implemented with new IO data structures'
+            OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%NLFINPRAR= 22+2*(4+NRR+NSV)
+          END IF
+        ELSE IF (LLFIOUT) THEN
+          OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CTYPE='LFI'
+          OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%NLFINPRAR= 22+2*(4+NRR+NSV)
+        ELSE
+          PRINT *,'Error: unknown backup fileformat'
+          CALL ABORT
+        ENDIF
     END IF
   END DO
   !
@@ -733,7 +751,7 @@ DO IMI = 1, NMODEL
   IF (NDAD(IMI) == IMI .OR.  IMI == 1) THEN
     OUT_MODEL(IMI)%TOUTBAKN(:)%NOUTDAD = 0
     !Check IPOS>0 because TOUTBAKN(0) does not exist (IPOS=0 only if no backups)
-    IF(IPOS>0) OUT_MODEL(IMI)%TOUTBAKN(IPOS)%CDADFILENAME = OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CFILENAME
+    IF(IPOS>0) OUT_MODEL(IMI)%TOUTBAKN(IPOS)%CDADFILENAME = OUT_MODEL(IMI)%TOUTBAKN(IPOS)%TFILE%CNAME
   ELSE
     DO IPOS = 1,OUT_MODEL(IMI)%NOUT_NUMB
       IDX = 0
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index ae506e4692c42f305bb34fa117354f76691e8904..f71aacaba15f0fcb3aa375b97eb79a3f95437f20 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -376,7 +376,7 @@ YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
 IF (PRESENT(TPFILE)) THEN
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TPFILE%CFILETYPE,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TPFILE%CTYPE,IGRID,ILENCH,YCOMMENT,IRESP)
 ELSE
   CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,"UNKNOWN",IGRID,ILENCH,YCOMMENT,IRESP)
 ENDIF