diff --git a/src/MNH/get_nb_procio_read_mnh.f90 b/src/MNH/get_nb_procio_read_mnh.f90
index 717dde4b8e27c12e2eeeaae20ce0243cc1f22b59..7cb260fd4cc34288954f570773c0456e07e8de0f 100644
--- a/src/MNH/get_nb_procio_read_mnh.f90
+++ b/src/MNH/get_nb_procio_read_mnh.f90
@@ -36,9 +36,7 @@
 !!
 !-------------------------------------------------------------------------------
 !
-USE MODD_IO_SURF_MNH,  ONLY : COUT, TPINFILE
-!
-USE MODE_FM,           ONLY : FMLOOK_ll
+USE MODD_IO_SURF_MNH,  ONLY : TOUT, TPINFILE
 !
 IMPLICIT NONE
 !
@@ -52,9 +50,8 @@ INTEGER, INTENT(OUT) :: KRESP      ! return-code
 !
 !*      0.2   Declarations of local variables
 !
-!----------------------------------------------------------------
 INTEGER :: IRESP
-INTEGER :: ILUPRI
+!----------------------------------------------------------------
 !
 !*      1. get the number of processes used for IO
 !
@@ -67,9 +64,8 @@ ELSE
 END IF
 !----------------------------------------------------------------
 IF (IRESP.NE.0) THEN
-  CALL FMLOOK_ll(COUT,COUT,ILUPRI,IRESP)
-  WRITE (ILUPRI,*) ' exit from GET_NB_PROCIO_READ_MNH with RESP:',IRESP
-  WRITE (ILUPRI,*) '   | TPINFILE%CNAME = ',TRIM(ADJUSTL(TPINFILE%CNAME))
+  WRITE (TOUT%NLU,*) ' exit from GET_NB_PROCIO_READ_MNH with RESP:',IRESP
+  WRITE (TOUT%NLU,*) '   | TPINFILE%CNAME = ',TRIM(ADJUSTL(TPINFILE%CNAME))
 END IF
 KRESP = IRESP
 !
diff --git a/src/MNH/get_nb_procio_write_mnh.f90 b/src/MNH/get_nb_procio_write_mnh.f90
index 4d76a142c0643b771b6cb601f92d2b1b2d5767ad..24087a743cfa5eccf70a624b37f301c1c73a792e 100644
--- a/src/MNH/get_nb_procio_write_mnh.f90
+++ b/src/MNH/get_nb_procio_write_mnh.f90
@@ -36,11 +36,6 @@
 !!
 !-------------------------------------------------------------------------------
 !
-USE MODD_IO_ll,            ONLY : TFILEDATA
-USE MODD_IO_SURF_MNH,      ONLY : COUT, COUTFILE
-!
-USE MODE_FM,               ONLY : FMLOOK_ll
-USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_FIND_BYNAME
 !
 IMPLICIT NONE
 !
@@ -54,28 +49,9 @@ INTEGER, INTENT(OUT) :: KRESP      ! return-code
 !
 !*      0.2   Declarations of local variables
 !
+!NONE
 !----------------------------------------------------------------
-INTEGER                 :: IRESP
-INTEGER                 :: ILUPRI
-TYPE(TFILEDATA),POINTER :: TZFILE
-!
-!*      1. get the number of processes used for IO
-!
-IRESP = 0
-!
-TZFILE => NULL()
-CALL IO_FILE_FIND_BYNAME(TRIM(COUTFILE),TZFILE,IRESP)
-IF (IRESP==0) THEN
-  KNB_PROCIO = 2
-ELSE
-  IRESP = -61
-END IF
-!----------------------------------------------------------------
-IF (IRESP.NE.0) THEN
-  CALL FMLOOK_ll(COUT,COUT,ILUPRI,IRESP)
-  WRITE (ILUPRI,*) ' exit from GET_NB_PROCIO_WRITE_MNH with RESP:',IRESP
-  WRITE (ILUPRI,*) '   | COUTFILE = ',COUTFILE
-END IF
-KRESP = IRESP
+KNB_PROCIO = 2
+KRESP = 0
 !
   END SUBROUTINE GET_NB_PROCIO_WRITE_MNH
diff --git a/src/MNH/mnhclose_aux_io_surf.f90 b/src/MNH/mnhclose_aux_io_surf.f90
index 7709c1dadd74d66f3af47efa25c8bfdcb9c7ec2f..9497f55e3fb33291786938a953c5dc0efbc82fc2 100644
--- a/src/MNH/mnhclose_aux_io_surf.f90
+++ b/src/MNH/mnhclose_aux_io_surf.f90
@@ -63,7 +63,7 @@ USE MODE_ll
 USE MODE_FM
 USE MODE_IO_ll
 
-USE MODD_IO_SURF_MNH, ONLY : COUT, TPINFILE, CACTION, NMASK_ALL, NMASK
+USE MODD_IO_SURF_MNH, ONLY : TPINFILE, CACTION, NMASK_ALL, NMASK
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/mnhend_io_surfn.f90 b/src/MNH/mnhend_io_surfn.f90
index aa0847a4c277b5203d547847ab5d53956d634970..60a524b3142852b62b6e7399367cec551a4029ef 100644
--- a/src/MNH/mnhend_io_surfn.f90
+++ b/src/MNH/mnhend_io_surfn.f90
@@ -59,8 +59,8 @@ END MODULE MODI_MNHEND_IO_SURF_n
 USE MODE_ll
 USE MODE_FM
 USE MODE_IO_ll
-
-USE MODD_IO_SURF_MNH, ONLY : CACTION, CFILE, TPINFILE, COUTFILE, NMASK, NMASK_ALL
+!
+USE MODD_IO_SURF_MNH, ONLY : CACTION, TPINFILE, COUTFILE, NMASK, NMASK_ALL
 !
 IMPLICIT NONE
 !
@@ -78,7 +78,6 @@ INTEGER           :: IRESP          ! return-code if a problem appears
 !
 CACTION='     '
 !
-CFILE    = '                           '
 COUTFILE = '                           '
 TPINFILE => NULL()
 !
diff --git a/src/MNH/mnhinit_io_surfn.f90 b/src/MNH/mnhinit_io_surfn.f90
index ba0a0f84340a6a38603f06b35563b20f1538a84a..8a05a19942e5709a1f24a44f78ead33bddbf7969 100644
--- a/src/MNH/mnhinit_io_surfn.f90
+++ b/src/MNH/mnhinit_io_surfn.f90
@@ -60,20 +60,19 @@ END MODULE MODI_MNHINIT_IO_SURF_n
 !              ------------
 !
 !
-USE MODD_IO_SURF_MNH, ONLY : COUT, CFILE, TPINFILE, COUTFILE, NLUOUT,  &
-         NMASK, CMASK, NIU, NJU, NIB, NJB, NIE, NJE, CACTION,          &
-         NMASK_ALL, NIU_ALL, NJU_ALL, NIB_ALL, NJB_ALL,                &
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE, COUTFILE, &
+         NMASK, CMASK, NIU, NJU, NIB, NJB, NIE, NJE, CACTION,  &
+         NMASK_ALL, NIU_ALL, NJU_ALL, NIB_ALL, NJB_ALL,        &
          NIE_ALL, NJE_ALL, NHALO
 !
 USE MODD_CONF,           ONLY : CPROGRAM
-USE MODD_LUNIT_n,        ONLY : CINIFILE,CINIFILEPGD,CMASK_SURFEX
-USE MODD_LUNIT,          ONLY : CLUOUT0, COUTFMFILE, CPGDFILE
+USE MODD_LUNIT_n,        ONLY : CINIFILE,CINIFILEPGD,CMASK_SURFEX, TLUOUT
+USE MODD_LUNIT,          ONLY : CLUOUT0, COUTFMFILE, CPGDFILE, TLUOUT0
 !
 USE MODD_DIM_n,          ONLY : NIMAX, NJMAX, NIMAX_ll, NJMAX_ll
 USE MODD_PARAMETERS,     ONLY : JPHEXT
 !
 USE MODE_ll
-USE MODE_FM
 USE MODE_IO_ll
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
 USE MODE_MODELN_HANDLER
@@ -114,14 +113,11 @@ CACTION = HACTION
 !
 SELECT CASE(CPROGRAM)
   CASE('MESONH','SPAWN ')
-    IMI = GET_CURRENT_MODEL_INDEX() 
-    WRITE(COUT,FMT='(A14,I1,A13)') 'OUTPUT_LISTING',IMI,'            '
+    TOUT => TLUOUT
   CASE DEFAULT
-    COUT = CLUOUT0
+    TOUT => TLUOUT0
 END SELECT
 !
-CALL FMLOOK_ll(COUT,COUT,NLUOUT,IRESP)
-!
 !
 !*       2.    initialization of surface file
 !
@@ -129,14 +125,11 @@ IF (HACTION=='READ ') THEN
   SELECT CASE(CPROGRAM)
     CASE('MESONH','DIAG  ')
       IF(CMASK_SURFEX=="PGD") THEN
-        CFILE=CINIFILEPGD
         CALL IO_FILE_FIND_BYNAME(TRIM(CINIFILEPGD),TPINFILE,IRESP)
       ELSE
-        CFILE=CINIFILE
         CALL IO_FILE_FIND_BYNAME(TRIM(CINIFILE),TPINFILE,IRESP)
       ENDIF
     CASE('REAL  ','IDEAL ','NESPGD','SPAWN ','ZOOMPG')
-      CFILE=CPGDFILE
       CALL IO_FILE_FIND_BYNAME(TRIM(CPGDFILE),TPINFILE,IRESP)
   END SELECT
 ELSE IF (HACTION=='WRITE') THEN
@@ -175,7 +168,7 @@ DEALLOCATE(ZFULL)
 !* dimension and mask for distributed field on processors
 CALL GET_TYPE_DIM_n(YSURF_CUR%DTCO,YSURF_CUR%U,HMASK,ILM)
 ALLOCATE(NMASK(ILM))
-CALL GET_SURF_MASK_n(YSURF_CUR%DTCO,YSURF_CUR%U,HMASK,ILM,NMASK,ILU,NLUOUT)
+CALL GET_SURF_MASK_n(YSURF_CUR%DTCO,YSURF_CUR%U,HMASK,ILM,NMASK,ILU,TOUT%NLU)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/mnhopen_aux_io_surf.f90 b/src/MNH/mnhopen_aux_io_surf.f90
index e8a9f1d2d0795ef5c0c08f2a289e2c2319c22454..a88cfce9270dfb173174c5dd34b5d84c71bd1b46 100644
--- a/src/MNH/mnhopen_aux_io_surf.f90
+++ b/src/MNH/mnhopen_aux_io_surf.f90
@@ -57,15 +57,16 @@ END MODULE MODI_MNHOPEN_AUX_IO_SURF
 !              ------------
 !
 !
-USE MODD_IO_SURF_MNH, ONLY : COUT, CFILE, TPINFILE, COUTFILE, NLUOUT, &
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE, COUTFILE, &
          NMASK_ALL, CMASK, NIU_ALL, NJU_ALL, NIB_ALL, NJB_ALL, NIE_ALL, NJE_ALL, CACTION, &
          NMASK, NIU, NJU, NIB, NJB, NIE, NJE
 !
 USE MODD_CONF,           ONLY : CPROGRAM
 USE MODD_PARAMETERS,     ONLY : JPHEXT
-USE MODD_LUNIT,          ONLY : CLUOUT0, COUTFMFILE, CPGDFILE
+USE MODD_LUNIT,          ONLY : CLUOUT0, COUTFMFILE, CPGDFILE, TLUOUT0
+USE MODD_LUNIT_n,        ONLY : TLUOUT
 !
-USE MODE_FM
+USE MODE_FM,     ONLY: IO_FILE_OPEN_ll
 USE MODE_FMREAD
 USE MODE_IO_ll
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST,IO_FILE_FIND_BYNAME
@@ -93,6 +94,7 @@ INTEGER           :: IJMAX          ! number of points in Y direction
 !
 !
 INTEGER           :: ILU            ! 1D physical dimension of XCOVER
+INTEGER           :: ILUOUT
 REAL, DIMENSION(:),   ALLOCATABLE :: ZFULL  ! total cover
 INTEGER           :: IJPHEXT
 !-------------------------------------------------------------------------------
@@ -105,19 +107,18 @@ INTEGER           :: IJPHEXT
 !
 SELECT CASE(CPROGRAM)
   CASE('MESONH','SPAWN ')
-    CALL GET_MODEL_NUMBER_ll  (IMI)
-    WRITE(COUT,FMT='(A14,I1,A13)') 'OUTPUT_LISTING',IMI,'            '
+    TOUT => TLUOUT
   CASE DEFAULT
-    COUT = CLUOUT0
+    TOUT => TLUOUT0
 END SELECT
 !
-CALL FMLOOK_ll(COUT,COUT,NLUOUT,IRESP)
+ILUOUT = TOUT%NLU
 !
 !
 !*       2.    initialization of surface file
 !
 IF (LEN_TRIM(CACTION)>0) THEN
-  WRITE(NLUOUT,*) 'file ',HFILE,' cannot be opened because another MESONH file is in use'
+  WRITE(ILUOUT,*) 'file ',HFILE,' cannot be opened because another MESONH file is in use'
 END IF
 !
 IF (HFILE/=COUTFMFILE .AND. HFILE/=CPGDFILE) THEN
@@ -133,7 +134,6 @@ ELSE
   CALL IO_FILE_FIND_BYNAME(TRIM(HFILE),TPINFILE,IRESP)
 END IF
 !
-CFILE    = HFILE
 COUTFILE = HFILE
 !
 !
@@ -145,9 +145,9 @@ CALL MNH_SURF_GRID_IO_INIT(IIMAX,IJMAX)
 IJPHEXT= 1
 CALL IO_READ_FIELD(TPINFILE,'JPHEXT',IJPHEXT)
 IF ( IJPHEXT .NE. JPHEXT ) THEN
-   WRITE(NLUOUT,FMT=*) ' MNHOPEN_AUX_IO : JPHEXT in PRE_PGD1.nam/NAM_CONF_PGD ( or default value )&
+   WRITE(ILUOUT,FMT=*) ' MNHOPEN_AUX_IO : JPHEXT in PRE_PGD1.nam/NAM_CONF_PGD ( or default value )&
       & JPHEXT=',JPHEXT
-   WRITE(NLUOUT,FMT=*) ' different from PGD files=',HFILE ,' value JPHEXT=',IJPHEXT
+   WRITE(ILUOUT,FMT=*) ' different from PGD files=',HFILE ,' value JPHEXT=',IJPHEXT
    CALL PRINT_MSG(NVERB_FATAL,'IO','MNHOPEN_AUX_IO_SURF','')
 END IF
 !
@@ -171,7 +171,7 @@ CMASK=HMASK
   CALL GET_1D_MASK(ILU,ILU,ZFULL,NMASK_ALL)
   DEALLOCATE(ZFULL)
 !ELSE
-!  WRITE(NLUOUT,*) 'mask "',HMASK,'" for reading not supported for auxilliary MESONH file'
+!  WRITE(ILUOUT,*) 'mask "',HMASK,'" for reading not supported for auxilliary MESONH file'
 !END IF
 !
 !
diff --git a/src/MNH/modd_io_surf_mnh.f90 b/src/MNH/modd_io_surf_mnh.f90
index 830660da86b64ab8581ed974ebc461cffedc2cfc..320697f961cd99637c11124b2f91a4e6f2ddcd1b 100644
--- a/src/MNH/modd_io_surf_mnh.f90
+++ b/src/MNH/modd_io_surf_mnh.f90
@@ -44,52 +44,33 @@ IMPLICIT NONE
 INTEGER                              :: NHALO = 0
 
 TYPE IO_SURF_MNH_t
-!$20140403 JUAN upgraded this modd to have // and mutlimodels use
-!$20140403 cancel the SAVE in structure def as made in already // modd in MNH
-!$
-!CHARACTER(LEN=28),SAVE :: CFILE       ! Name of the input FM-file
-!CHARACTER(LEN=28),SAVE :: COUTFILE    ! Name of the output FM-file
-!CHARACTER(LEN=28),SAVE :: COUT        ! Name of output_listing file
-!INTEGER                :: NLUOUT      ! output listing logical unit
-!CHARACTER(LEN=6),SAVE          :: CMASK
-CHARACTER(LEN=28)              :: CFILE       ! Name of the input FM-file
-TYPE(TFILEDATA),POINTER        :: TPINFILE => NULL() ! Input FM-file
-CHARACTER(LEN=28)              :: COUTFILE    ! Name of the output FM-file
-CHARACTER(LEN=28)              :: COUT        ! Name of output_listing file
-INTEGER                        :: NLUOUT      ! output listing logical unit
-CHARACTER(LEN=6)               :: CMASK
-INTEGER, DIMENSION(:), POINTER :: NMASK=>NULL()     ! 1D mask to read only interesting surface
-!                                           ! points on current processor
-INTEGER, DIMENSION(:), POINTER :: NMASK_ALL=>NULL() ! 1D mask to read all surface points all processors
-!
-CHARACTER(LEN=5)               :: CACTION = '     '! action being done ('READ ','WRITE')
-!
-! number of points in each direction on current processor
-INTEGER                              :: NIU,NJU
-! indices of physical points in each direction on current processor
-INTEGER                              :: NIB,NJB,NIE,NJE
-! number of points in each direction on all processors
-INTEGER                              :: NIU_ALL,NJU_ALL
-! indices of physical points in each direction on all processors
-INTEGER                              :: NIB_ALL,NJB_ALL,NIE_ALL,NJE_ALL
-!
-!!INTEGER                              :: NHALO = 0
-! number of points added on each side (N,E,S,W) to the fields
-! the HALO is added   when the field is read    (works only for grid coordinates)
-!  note that at reading, this also modifies the numbers of points (IMAX, JMAX)
-! the HALO is removed when the field is written (works for all fields)
-!
+  TYPE(TFILEDATA),POINTER        :: TPINFILE => NULL() ! Input FM-file
+  CHARACTER(LEN=28)              :: COUTFILE    ! Name of the output FM-file
+  TYPE(TFILEDATA),POINTER        :: TOUT => NULL() ! Output_listing file
+  CHARACTER(LEN=6)               :: CMASK
+  INTEGER, DIMENSION(:), POINTER :: NMASK=>NULL()     ! 1D mask to read only interesting surface
+  !                                           ! points on current processor
+  INTEGER, DIMENSION(:), POINTER :: NMASK_ALL=>NULL() ! 1D mask to read all surface points all processors
+  !
+  CHARACTER(LEN=5)               :: CACTION = '     '! action being done ('READ ','WRITE')
+  !
+  ! number of points in each direction on current processor
+  INTEGER                              :: NIU,NJU
+  ! indices of physical points in each direction on current processor
+  INTEGER                              :: NIB,NJB,NIE,NJE
+  ! number of points in each direction on all processors
+  INTEGER                              :: NIU_ALL,NJU_ALL
+  ! indices of physical points in each direction on all processors
+  INTEGER                              :: NIB_ALL,NJB_ALL,NIE_ALL,NJE_ALL
 END type IO_SURF_MNH_t
 !
 TYPE(IO_SURF_MNH_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: IO_SURF_MNH_MODEL
 !
 !!!!!!!!!!!!!!!!!!!! LOCAL VARIABLE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !
-CHARACTER(LEN=28)     ,POINTER :: CFILE =>NULL()      ! Name of the input FM-file
 TYPE(TFILEDATA)       ,POINTER :: TPINFILE => NULL()  ! Input FM-file
 CHARACTER(LEN=28)     ,POINTER :: COUTFILE =>NULL()   ! Name of the output FM-file
-CHARACTER(LEN=28)     ,POINTER :: COUT =>NULL()       ! Name of output_listing file
-INTEGER               ,POINTER :: NLUOUT =>NULL()     ! output listing logical unit
+TYPE(TFILEDATA)       ,POINTER :: TOUT => NULL()      ! Output_listing file
 CHARACTER(LEN=6)      ,POINTER :: CMASK =>NULL()
 INTEGER, DIMENSION(:), POINTER :: NMASK=>NULL()     ! 1D mask to read only interesting surface
 !                                           ! points on current processor
@@ -106,11 +87,6 @@ INTEGER             , POINTER  :: NIU_ALL=>NULL(),NJU_ALL=>NULL()
 ! indices of physical points in each direction on all processors
 INTEGER             , POINTER  :: NIB_ALL=>NULL(),NJB_ALL=>NULL(),NIE_ALL=>NULL(),NJE_ALL=>NULL()
 !
-!$20140403 you hardly want to set the NHALO inside the structure since it
-!$connects with NAMELIST PGDFILE makign things difficult
-!$NHALO IS =1 whatever the model is !!
-!!INTEGER             , POINTER  :: NHALO=>NULL()
-
 CONTAINS
 
 SUBROUTINE IO_SURF_MNH_GOTO_MODEL(KFROM, KTO)
@@ -120,11 +96,9 @@ IO_SURF_MNH_MODEL(KFROM)%NMASK=>NMASK
 IO_SURF_MNH_MODEL(KFROM)%NMASK_ALL=>NMASK_ALL
 
 ! current model is set for model KTO 
-CFILE=>IO_SURF_MNH_MODEL(KTO)%CFILE
 TPINFILE=>IO_SURF_MNH_MODEL(KTO)%TPINFILE
 COUTFILE=>IO_SURF_MNH_MODEL(KTO)%COUTFILE
-COUT=>IO_SURF_MNH_MODEL(KTO)%COUT
-NLUOUT=>IO_SURF_MNH_MODEL(KTO)%NLUOUT
+TOUT=>IO_SURF_MNH_MODEL(KTO)%TOUT
 CMASK=>IO_SURF_MNH_MODEL(KTO)%CMASK
 NMASK=>IO_SURF_MNH_MODEL(KTO)%NMASK
 NMASK_ALL=>IO_SURF_MNH_MODEL(KTO)%NMASK_ALL
@@ -141,7 +115,6 @@ NIB_ALL=>IO_SURF_MNH_MODEL(KTO)%NIB_ALL
 NJB_ALL=>IO_SURF_MNH_MODEL(KTO)%NJB_ALL
 NIE_ALL=>IO_SURF_MNH_MODEL(KTO)%NIE_ALL
 NJE_ALL=>IO_SURF_MNH_MODEL(KTO)%NJE_ALL
-!!NHALO=>IO_SURF_MNH_MODEL(KTO)%NHALO
 END SUBROUTINE IO_SURF_MNH_GOTO_MODEL
 
 END MODULE MODD_IO_SURF_MNH
diff --git a/src/MNH/read_surf_mnh.f90 b/src/MNH/read_surf_mnh.f90
index 186aa2e97b714ca769374f1479fdbea920eee97f..cd25880819d09943df57dd9dc4499e401f8d6ac0 100644
--- a/src/MNH/read_surf_mnh.f90
+++ b/src/MNH/read_surf_mnh.f90
@@ -54,7 +54,7 @@ USE MODE_FMREAD
 USE MODE_GRIDPROJ
 USE MODE_MSG
 !
-USE MODD_IO_SURF_MNH,        ONLY : COUT, TPINFILE, NLUOUT
+USE MODD_IO_SURF_MNH,        ONLY : TOUT, TPINFILE
 !
 USE MODI_GET_SURF_UNDEF
 !
@@ -71,7 +71,7 @@ CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT ! comment
 !
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
-
+INTEGER           :: ILUOUT
 INTEGER           :: IMASDEV
 INTEGER           :: IID,IRESP
 INTEGER           :: IIMAX,IJMAX
@@ -84,6 +84,8 @@ TYPE(TFIELDDATA)  :: TZFIELD
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
+ILUOUT = TOUT%NLU
+!
 IF (HREC=='LONORI' .OR. HREC=='LATORI') THEN
   CALL IO_READ_FIELD(TPINFILE,'MASDEV',IMASDEV)
   IF (IMASDEV<=45) THEN
@@ -151,11 +153,11 @@ ELSE
 END IF
 
 IF (KRESP /=0) THEN
-  WRITE(NLUOUT,*) 'WARNING'
-  WRITE(NLUOUT,*) '-------'
-  WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-  WRITE(NLUOUT,*) 'default value may be used, who knows???'
-  WRITE(NLUOUT,*) ' '
+  WRITE(ILUOUT,*) 'WARNING'
+  WRITE(ILUOUT,*) '-------'
+  WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+  WRITE(ILUOUT,*) 'default value may be used, who knows???'
+  WRITE(ILUOUT,*) ' '
 ENDIF
 !-------------------------------------------------------------------------------
 END SUBROUTINE READ_SURFX0_MNH
@@ -210,7 +212,7 @@ USE MODE_MSG
 !
 USE MODD_CST,         ONLY : XPI
 !
-USE MODD_IO_SURF_MNH, ONLY : COUT, CFILE, TPINFILE, NLUOUT,  NMASK, &
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE, NMASK, &
                              NIU, NJU, NIB, NJB, NIE, NJE, &
                              NIU_ALL, NJU_ALL, NIB_ALL,    &
                              NJB_ALL, NIE_ALL, NJE_ALL,    &
@@ -240,6 +242,7 @@ CHARACTER(LEN=1),       INTENT(IN) :: HDIR     ! type of field :
 !
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
+INTEGER           :: ILUOUT
 INTEGER           :: JI, JJ         ! loop counters
 
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZWORK  ! work array read in the file
@@ -259,6 +262,7 @@ TYPE(TFIELDDATA)  :: TZFIELD
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX1_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
 KRESP = 0
+ILUOUT = TOUT%NLU
 !
 IF (HDIR=='A') THEN
   IIU = NIU_ALL
@@ -454,11 +458,11 @@ ELSE
   END IF
 !
   IF (KRESP /=0) THEN
-    WRITE(NLUOUT,*) 'WARNING'
-    WRITE(NLUOUT,*) '-------'
-    WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-    WRITE(NLUOUT,*) 'default value may be used, who knows???'
-    WRITE(NLUOUT,*) ' '
+    WRITE(ILUOUT,*) 'WARNING'
+    WRITE(ILUOUT,*) '-------'
+    WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+    WRITE(ILUOUT,*) 'default value may be used, who knows???'
+    WRITE(ILUOUT,*) ' '
   ELSE IF (HDIR=='H' .OR. HDIR=='A') THEN
     CALL PACK_2D_1D(IMASK,ZWORK(IIB:IIE,IJB:IJE),PFIELD)
     CALL GET_SURF_UNDEF(ZUNDEF)
@@ -524,15 +528,15 @@ END SUBROUTINE READ_SURFX1_MNH
 !             ------------
 !
 USE MODE_ll
-USE MODE_FIELD,         ONLY: TFIELDDATA,TYPEREAL
+USE MODE_FIELD,       ONLY : TFIELDDATA,TYPEREAL
 USE MODE_FM
 USE MODE_FMREAD
 USE MODE_IO_ll
 USE MODE_MSG
 !
-USE MODD_IO_SURF_MNH, ONLY : COUT, CFILE , NLUOUT, TPINFILE, NMASK, NIU, NJU, NIB, NJB, NIE, NJE, &
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE, NMASK, NIU, NJU, NIB, NJB, NIE, NJE, &
                              NIU_ALL, NJU_ALL, NIB_ALL, NJB_ALL, NIE_ALL, NJE_ALL, NMASK_ALL
-USE MODD_PARAMETERS, ONLY: XUNDEF
+USE MODD_PARAMETERS,  ONLY : XUNDEF
 !
 USE MODI_PACK_2D_1D
 !
@@ -557,7 +561,7 @@ CHARACTER(LEN=1),        INTENT(IN)  :: HDIR     ! type of field :
 !
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
-
+INTEGER           :: ILUOUT
 INTEGER           :: JP             ! loop index
 
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORK  ! work array read in the file
@@ -567,6 +571,8 @@ TYPE(TFIELDDATA)  :: TZFIELD
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX2_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
+ILUOUT = TOUT%NLU
+!
 !! Reading of a 3D field, masked (2 first dimensions) and with
 !! 2 first dimensions packed into only 1 (results in a 2D array instead of 3D)
 !
@@ -599,11 +605,11 @@ ELSE
 END IF
 !
 IF (KRESP /=0) THEN
-    WRITE(NLUOUT,*) 'WARNING'
-    WRITE(NLUOUT,*) '-------'
-    WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-    WRITE(NLUOUT,*) 'default value may be used, who knows???'
-    WRITE(NLUOUT,*) ' '
+    WRITE(ILUOUT,*) 'WARNING'
+    WRITE(ILUOUT,*) '-------'
+    WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+    WRITE(ILUOUT,*) 'default value may be used, who knows???'
+    WRITE(ILUOUT,*) ' '
     DEALLOCATE(ZWORK)
  ELSE IF (HDIR=='H') THEN
     DO JP=1,SIZE(PFIELD,2)
@@ -666,20 +672,20 @@ END SUBROUTINE READ_SURFX2_MNH
 !             ------------
 !
 USE MODE_ll
-USE MODE_FIELD, ONLY: TFIELDDATA,TYPELOG,TYPEREAL
+USE MODE_FIELD,          ONLY: TFIELDDATA,TYPELOG,TYPEREAL
 USE MODE_FM
 USE MODE_FMREAD
 USE MODE_IO_ll
 USE MODE_MSG
 !
 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER
-USE MODD_CST,         ONLY : XPI
+USE MODD_CST,            ONLY : XPI
 !
-USE MODD_IO_SURF_MNH, ONLY : COUT, CFILE, TPINFILE, NLUOUT, NMASK, &
-                             NIU, NJU, NIB, NJB, NIE, NJE, &
-                             NIU_ALL, NJU_ALL, NIB_ALL,    &
-                             NJB_ALL, NIE_ALL, NJE_ALL,    &
-                             NMASK_ALL
+USE MODD_IO_SURF_MNH,    ONLY : TOUT, TPINFILE, NMASK, &
+                                NIU, NJU, NIB, NJB, NIE, NJE, &
+                                NIU_ALL, NJU_ALL, NIB_ALL,    &
+                                NJB_ALL, NIE_ALL, NJE_ALL,    &
+                                NMASK_ALL
 !
 USE MODI_PACK_2D_1D
 !
@@ -703,7 +709,8 @@ CHARACTER(LEN=1),          INTENT(IN) :: HDIR     ! type of field :
 !
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
-
+INTEGER           :: ILUOUT
+!
 CHARACTER(LEN=LEN_HREC) :: YREC
 CHARACTER(LEN=2)  :: YDIR
 CHARACTER(LEN=2)  :: YSTORAGE_TYPE
@@ -724,6 +731,7 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX2COV_MNH',TRIM(TPINFILE%CNAME)//': re
 !
 KRESP = 0
 IRESP = 0
+ILUOUT = TOUT%NLU
 !
 IF (HDIR=='A') THEN
   YDIR="--"
@@ -805,10 +813,10 @@ ELSE
 END IF
 !
 IF (KRESP /=0) THEN
-  WRITE(NLUOUT,*) 'WARNING'
-  WRITE(NLUOUT,*) '-------'
-  WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-  WRITE(NLUOUT,*) ' '
+  WRITE(ILUOUT,*) 'WARNING'
+  WRITE(ILUOUT,*) '-------'
+  WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+  WRITE(ILUOUT,*) ' '
 ELSE IF (HDIR=='H' .OR. HDIR=='A') THEN
    ICOVER=0
    DO JL2=1,NCOVER
@@ -864,7 +872,7 @@ END SUBROUTINE READ_SURFX2COV_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-USE MODE_FIELD, ONLY: TFIELDDATA,TYPELOG,TYPEREAL
+USE MODE_FIELD,       ONLY : TFIELDDATA,TYPELOG,TYPEREAL
 USE MODE_FM
 USE MODE_FMREAD
 USE MODE_ll
@@ -873,7 +881,7 @@ USE MODE_MSG
 !
 USE MODD_CST,         ONLY : XPI
 !
-USE MODD_IO_SURF_MNH, ONLY : COUT, CFILE, TPINFILE, NLUOUT, NMASK, &
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE, NMASK, &
                              NIU, NJU, NIB, NJB, NIE, NJE, &
                              NIU_ALL, NJU_ALL, NIB_ALL,    &
                              NJB_ALL, NIE_ALL, NJE_ALL,    &
@@ -901,7 +909,8 @@ CHARACTER(LEN=1),       INTENT(IN) :: HDIR     ! type of field :
 !
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
-
+INTEGER           :: ILUOUT
+!
 CHARACTER(LEN=LEN_HREC) :: YREC
 CHARACTER(LEN=2)  :: YDIR
 CHARACTER(LEN=2)  :: YSTORAGE_TYPE
@@ -921,6 +930,7 @@ TYPE(TFIELDDATA) :: TZFIELD
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX2COV_1COV_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
 KRESP = 0
+ILUOUT = TOUT%NLU
 !YDIR1 = 'H'
 !IF (PRESENT(HDIR)) YDIR1 = HDIR
 YDIR1 = HDIR
@@ -984,18 +994,18 @@ IF (.NOT. GCOVER_PACKED) THEN
   TZFIELD%NDIMS      = 2
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,ZWORK2D,KRESP)
 ELSE
-  WRITE(NLUOUT,*) 'WARNING'
-  WRITE(NLUOUT,*) '-------'
-  WRITE(NLUOUT,*) 'error : GCOVER_PACKED = ', GCOVER_PACKED, ' and we try to read the covers one by one '
-  WRITE(NLUOUT,*) ' '
+  WRITE(ILUOUT,*) 'WARNING'
+  WRITE(ILUOUT,*) '-------'
+  WRITE(ILUOUT,*) 'error : GCOVER_PACKED = ', GCOVER_PACKED, ' and we try to read the covers one by one '
+  WRITE(ILUOUT,*) ' '
   CALL ABORT
 END IF
 !
 IF (KRESP /=0) THEN
-  WRITE(NLUOUT,*) 'WARNING'
-  WRITE(NLUOUT,*) '-------'
-  WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-  WRITE(NLUOUT,*) ' '
+  WRITE(ILUOUT,*) 'WARNING'
+  WRITE(ILUOUT,*) '-------'
+  WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+  WRITE(ILUOUT,*) ' '
 ELSE IF (YDIR1=='H' .OR. YDIR1=='A') THEN
    CALL PACK_2D_1D(IMASK,ZWORK2D(IIB:IIE,IJB:IJE),PFIELD(:))
 END IF
@@ -1049,14 +1059,14 @@ END SUBROUTINE READ_SURFX2COV_1COV_MNH
 !             ------------
 !
 USE MODE_ll
-USE MODE_FIELD, ONLY: TFIELDDATA,TYPEINT
+USE MODE_FIELD,       ONLY: TFIELDDATA,TYPEINT
 USE MODE_FM
 USE MODE_FMREAD
 USE MODE_MSG
 !
-USE MODD_IO_SURF_MNH,     ONLY : COUT, CFILE, TPINFILE, NLUOUT, NMASK, &
-                                 NIU, NJU, NIB, NJB, NIE, NJE
-USE MODD_CONF,            ONLY : CPROGRAM
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE, NMASK, &
+                             NIU, NJU, NIB, NJB, NIE, NJE
+USE MODD_CONF,        ONLY : CPROGRAM
 !
 !
 !
@@ -1072,6 +1082,7 @@ CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT ! comment
 !*      0.2   Declarations of local variables
 !
 INTEGER          :: IIMAX, IJMAX
+INTEGER          :: ILUOUT
 TYPE(TFIELDDATA) :: TZFIELD
 !
 !-------------------------------------------------------------------------------
@@ -1079,6 +1090,7 @@ TYPE(TFIELDDATA) :: TZFIELD
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFN0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
 KRESP=0
+ILUOUT = TOUT%NLU
 !
 IF (HREC=='DIM_FULL' .AND. ( CPROGRAM=='IDEAL ' .OR.  &
                                   CPROGRAM=='SPAWN ' .OR. CPROGRAM=='ZOOMPG' ))THEN
@@ -1098,11 +1110,11 @@ ELSE
    CALL IO_READ_FIELD(TPINFILE,TZFIELD,KFIELD,KRESP)
 
     IF (KRESP /=0) THEN
-      WRITE(NLUOUT,*) 'WARNING'
-      WRITE(NLUOUT,*) '-------'
-      WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-      WRITE(NLUOUT,*) 'default value may be used, who knows???'
-      WRITE(NLUOUT,*) ' '
+      WRITE(ILUOUT,*) 'WARNING'
+      WRITE(ILUOUT,*) '-------'
+      WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+      WRITE(ILUOUT,*) 'default value may be used, who knows???'
+      WRITE(ILUOUT,*) ' '
    ENDIF
 
 ENDIF
@@ -1150,13 +1162,13 @@ END SUBROUTINE READ_SURFN0_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-USE MODE_FIELD, ONLY: TFIELDDATA,TYPEINT
+USE MODE_FIELD,       ONLY: TFIELDDATA,TYPEINT
 USE MODE_FM
 USE MODE_FMREAD
 USE MODE_MSG
 !
-USE MODD_IO_SURF_MNH,     ONLY : COUT, CFILE, TPINFILE, NLUOUT, NMASK, &
-                                 NIU, NJU, NIB, NJB, NIE, NJE
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE, NMASK, &
+                             NIU, NJU, NIB, NJB, NIE, NJE
 !
 USE MODI_PACK_2D_1D
 !
@@ -1178,6 +1190,7 @@ CHARACTER(LEN=1),       INTENT(IN)  :: HDIR     ! type of field :
 !
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
+INTEGER           :: ILUOUT
 !
 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IWORK  ! work array read in the file
 TYPE(TFIELDDATA) :: TZFIELD
@@ -1185,6 +1198,8 @@ TYPE(TFIELDDATA) :: TZFIELD
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFN1_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
+ILUOUT = TOUT%NLU
+!
 IF (HDIR=='-') THEN
 !
   TZFIELD%CMNHNAME   = TRIM(HREC)
@@ -1213,11 +1228,11 @@ ELSE IF (HDIR=='H') THEN
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,IWORK,KRESP)
 !
  IF (KRESP /=0) THEN
-    WRITE(NLUOUT,*) 'WARNING'
-    WRITE(NLUOUT,*) '-------'
-    WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-    WRITE(NLUOUT,*) 'default value may be used, who knows???'
-    WRITE(NLUOUT,*) ' '
+    WRITE(ILUOUT,*) 'WARNING'
+    WRITE(ILUOUT,*) '-------'
+    WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+    WRITE(ILUOUT,*) 'default value may be used, who knows???'
+    WRITE(ILUOUT,*) ' '
  ELSE
     CALL PACK_2D_1D(NMASK,IWORK(NIB:NIE,NJB:NJE),KFIELD)
  END IF
@@ -1270,15 +1285,15 @@ END SUBROUTINE READ_SURFN1_MNH
 !             ------------
 !
 USE MODE_ll
-USE MODE_FIELD, ONLY: TFIELDDATA,TYPECHAR
+USE MODE_FIELD,       ONLY : TFIELDDATA,TYPECHAR
 USE MODE_FM
 USE MODE_FMREAD
 USE MODE_MSG
 USE MODE_POS
 !
-USE MODD_IO_SURF_MNH,        ONLY : COUT, CFILE, TPINFILE, NLUOUT
-USE MODD_CONF,               ONLY : LCARTESIAN, CPROGRAM
-USE MODD_LUNIT,              ONLY : CPGDFILE
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE
+USE MODD_CONF,        ONLY : LCARTESIAN, CPROGRAM
+USE MODD_LUNIT,       ONLY : CPGDFILE
 !
 !
 IMPLICIT NONE
@@ -1295,6 +1310,7 @@ CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT  ! comment
 INTEGER           :: IRESP          ! return code
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
+INTEGER           :: ILUOUT
 !
 INTEGER           :: IMASDEV      ! mesonh version of the input file
 INTEGER           :: ILUDES       ! .des file logical unit
@@ -1304,12 +1320,14 @@ LOGICAL           :: GFOUND
 CHARACTER(LEN=4)  :: CTURB,CRAD,CGROUND,CCLOUD,CDCONV,CELEC
 CHARACTER(LEN=6)  :: CSEA_FLUX
 TYPE(TFIELDDATA)  :: TZFIELD
+!
 NAMELIST/NAM_PARAMn/CTURB,CRAD,CGROUND,CCLOUD,CDCONV,CSEA_FLUX, CELEC
 !----------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFC0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
 KRESP = 0
+ILUOUT = TOUT%NLU
 ! On lit la version de Mesonh usilisée pour fabriquer le fichier
 !
 CALL IO_READ_FIELD(TPINFILE,'MASDEV',IMASDEV)
@@ -1323,8 +1341,8 @@ ELSE IF (HREC=='SNOW_ROOF_TYPE'.AND.IMASDEV<46) THEN
 ELSE IF (HREC=='PHOTO'.AND.IMASDEV<46) THEN
   HFIELD='NON'
 ELSE IF ( HREC=='GRID_TYPE'.AND. (IMASDEV<46 .OR. &
-                           (CPROGRAM=='IDEAL ' .AND. CPGDFILE/=COUT) .OR. &
-                           (CPROGRAM=='SPAWN ' .AND. CPGDFILE/=COUT) .OR. &
+                           (CPROGRAM=='IDEAL ' .AND. CPGDFILE/=TOUT%CNAME) .OR. &
+                           (CPROGRAM=='SPAWN ' .AND. CPGDFILE/=TOUT%CNAME) .OR. &
                            CPROGRAM=='ZOOMPG'                         )) THEN
   IF (LCARTESIAN) THEN
     HFIELD="CARTESIAN "
@@ -1339,9 +1357,9 @@ ELSE IF ( (HREC=='NATURE'.OR.HREC=='SEA   '.OR.HREC=='WATER ' &
        CGROUND='ISBA'
      ELSE
        CGROUND='NONE'
-       YDESFM=ADJUSTL(ADJUSTR(CFILE)//'.des')
-       CALL FMLOOK_ll(YDESFM,COUT,ILUDES,IRESP)
-       CALL POSNAM(ILUDES,'NAM_PARAMN',GFOUND,NLUOUT)
+       YDESFM=ADJUSTL(ADJUSTR(TPINFILE%CNAME)//'.des')
+       CALL FMLOOK_ll(YDESFM,TOUT%CNAME,ILUDES,IRESP)
+       CALL POSNAM(ILUDES,'NAM_PARAMN',GFOUND,ILUOUT)
        IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_PARAMn)
      END IF
      IF (CGROUND=='NONE') THEN
@@ -1354,9 +1372,9 @@ ELSE IF ( (HREC=='NATURE'.OR.HREC=='SEA   '.OR.HREC=='WATER ' &
        IF(HREC=='NATURE') HFIELD ='ISBA  '
        IF(HREC=='TOWN  ') HFIELD ='TEB   '
      ELSE
-       WRITE(NLUOUT,*) ' '
-       WRITE(NLUOUT,*) 'error when reading article', HREC,'KRESP=',KRESP
-       WRITE(NLUOUT,*) 'avec CGROUND = "',CGROUND,'"'
+       WRITE(ILUOUT,*) ' '
+       WRITE(ILUOUT,*) 'error when reading article', HREC,'KRESP=',KRESP
+       WRITE(ILUOUT,*) 'avec CGROUND = "',CGROUND,'"'
  !callabortstop
 CALL ABORT
        STOP
@@ -1375,11 +1393,11 @@ ELSE
    CALL IO_READ_FIELD(TPINFILE,TZFIELD,HFIELD,KRESP)
    !
    IF (KRESP /=0) THEN
-      WRITE(NLUOUT,*) 'WARNING'
-      WRITE(NLUOUT,*) '-------'
-      WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-      WRITE(NLUOUT,*) 'default value may be used, who knows???'
-      WRITE(NLUOUT,*) ' '
+      WRITE(ILUOUT,*) 'WARNING'
+      WRITE(ILUOUT,*) '-------'
+      WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+      WRITE(ILUOUT,*) 'default value may be used, who knows???'
+      WRITE(ILUOUT,*) ' '
  !callabortstop
 CALL ABORT
       STOP
@@ -1431,10 +1449,10 @@ END SUBROUTINE READ_SURFC0_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-USE MODD_IO_SURF_MNH,     ONLY : COUT, CFILE , TPINFILE, NLUOUT, NMASK, &
-                                 NIU, NJU, NIB, NJB, NIE, NJE
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE, NMASK, &
+                             NIU, NJU, NIB, NJB, NIE, NJE
 !
-USE MODE_FIELD, ONLY: TFIELDDATA,TYPEINT,TYPELOG
+USE MODE_FIELD,       ONLY : TFIELDDATA,TYPEINT,TYPELOG
 USE MODE_FM
 USE MODE_FMREAD
 USE MODE_MSG
@@ -1461,13 +1479,15 @@ CHARACTER(LEN=1),       INTENT(IN)  :: HDIR     ! type of field :
 !
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
-
+INTEGER           :: ILUOUT
 LOGICAL, DIMENSION(:,:), ALLOCATABLE :: GWORK  ! work array read in the file
 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IWORK  ! work array read in the file
 TYPE(TFIELDDATA)  :: TZFIELD
 !-------------------------------------------------------------------------------
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFL1_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
+ILUOUT = TOUT%NLU
+!
 IF (HDIR=='-') THEN
   TZFIELD%CMNHNAME   = TRIM(HREC)
   TZFIELD%CSTDNAME   = ''
@@ -1481,11 +1501,11 @@ IF (HDIR=='-') THEN
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,OFIELD,KRESP)
 
   IF (KRESP /=0) THEN
-    WRITE(NLUOUT,*) 'WARNING'
-    WRITE(NLUOUT,*) '-------'
-    WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-    WRITE(NLUOUT,*) 'default value may be used, who knows???'
-    WRITE(NLUOUT,*) ' '
+    WRITE(ILUOUT,*) 'WARNING'
+    WRITE(ILUOUT,*) '-------'
+    WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+    WRITE(ILUOUT,*) 'default value may be used, who knows???'
+    WRITE(ILUOUT,*) ' '
   ENDIF
 ELSE IF (HDIR=='H') THEN
   ALLOCATE(GWORK(NIU,NJU))
@@ -1506,11 +1526,11 @@ ELSE IF (HDIR=='H') THEN
   DEALLOCATE(IWORK)
 !
   IF (KRESP /=0) THEN
-    WRITE(NLUOUT,*) 'WARNING'
-    WRITE(NLUOUT,*) '-------'
-    WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-    WRITE(NLUOUT,*) 'default value may be used, who knows???'
-    WRITE(NLUOUT,*) ' '
+    WRITE(ILUOUT,*) 'WARNING'
+    WRITE(ILUOUT,*) '-------'
+    WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+    WRITE(ILUOUT,*) 'default value may be used, who knows???'
+    WRITE(ILUOUT,*) ' '
   ELSE
     CALL PACK_2D_1D(NMASK,GWORK(NIB:NIE,NJB:NJE),OFIELD)
   END IF
@@ -1560,12 +1580,12 @@ END SUBROUTINE READ_SURFL1_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-USE MODE_FIELD, ONLY: TFIELDDATA,TYPELOG
+USE MODE_FIELD,       ONLY : TFIELDDATA,TYPELOG
 USE MODE_FM
 USE MODE_FMREAD
 USE MODE_MSG
 !
-USE MODD_IO_SURF_MNH,        ONLY : COUT, CFILE, TPINFILE, NLUOUT
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE
 !
 !
 IMPLICIT NONE
@@ -1580,10 +1600,13 @@ CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT ! comment
 !*      0.2   Declarations of local variables
 !
 INTEGER           :: IMASDEV        ! MESONH version
+INTEGER           :: ILUOUT
 TYPE(TFIELDDATA)  :: TZFIELD
 !-------------------------------------------------------------------------------
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFL0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
+ILUOUT = TOUT%NLU
+!
 IF (HREC(1:4)=='BUDC') THEN
   CALL IO_READ_FIELD(TPINFILE,'MASDEV',IMASDEV)
   IF (IMASDEV<=45) THEN
@@ -1615,11 +1638,11 @@ CALL IO_READ_FIELD(TPINFILE,TZFIELD,OFIELD,KRESP)
 HCOMMENT = TZFIELD%CCOMMENT
 !
 IF (KRESP /=0) THEN
-  WRITE(NLUOUT,*) 'WARNING'
-  WRITE(NLUOUT,*) '-------'
-  WRITE(NLUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
-  WRITE(NLUOUT,*) 'default value may be used, who knows???'
-  WRITE(NLUOUT,*) ' '
+  WRITE(ILUOUT,*) 'WARNING'
+  WRITE(ILUOUT,*) '-------'
+  WRITE(ILUOUT,*) 'error when reading article ', HREC,'KRESP=',KRESP
+  WRITE(ILUOUT,*) 'default value may be used, who knows???'
+  WRITE(ILUOUT,*) ' '
 ENDIF
 !-------------------------------------------------------------------------------
 END SUBROUTINE READ_SURFL0_MNH
@@ -1670,7 +1693,7 @@ USE MODE_FM
 USE MODE_FMREAD
 USE MODE_MSG
 !
-USE MODD_IO_SURF_MNH,        ONLY : COUT, CFILE, TPINFILE, NLUOUT
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE
 USE MODD_TYPE_DATE
 !
 !
@@ -1690,6 +1713,7 @@ CHARACTER(LEN=100),     INTENT(OUT)   :: HCOMMENT ! comment
 !
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
+INTEGER           :: ILUOUT
 !
 CHARACTER(LEN=LEN_HREC)        :: YRECFM     ! Name of the article to be written
 CHARACTER(LEN=40)              :: YFILETYPE40! MESONH file type
@@ -1702,6 +1726,8 @@ TYPE(DATE_TIME)        :: TZDATETIME
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFT0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
+ILUOUT = TOUT%NLU
+!
 CALL IO_READ_FIELD(TPINFILE,'MASDEV',IMASDEV)
 IF (IMASDEV<46) THEN
   CALL IO_READ_FIELD(TPINFILE,'STORAGE_TYPE',YFILETYPE2)
@@ -1719,11 +1745,11 @@ ELSE
   YFILETYPE2 = YFILETYPE40(1:2)
 END IF
 IF (YFILETYPE2(1:2)=='PG') THEN
-  WRITE(NLUOUT,*) 'WARNING'
-  WRITE(NLUOUT,*) '-------'
-  WRITE(NLUOUT,*) 'Date is not read in a PGD file'
-  WRITE(NLUOUT,*) 'Atmospheric model value is kept'
-  WRITE(NLUOUT,*) ' '
+  WRITE(ILUOUT,*) 'WARNING'
+  WRITE(ILUOUT,*) '-------'
+  WRITE(ILUOUT,*) 'Date is not read in a PGD file'
+  WRITE(ILUOUT,*) 'Atmospheric model value is kept'
+  WRITE(ILUOUT,*) ' '
   KRESP = -2
   RETURN
 END IF
@@ -1731,11 +1757,11 @@ END IF
 CALL IO_READ_FIELD(TPINFILE,HREC,TZDATETIME,KRESP)
 !
 IF (KRESP /=0) THEN
-  WRITE(NLUOUT,*) 'WARNING'
-  WRITE(NLUOUT,*) '-------'
-  WRITE(NLUOUT,*) 'error when reading article ',YRECFM,'KRESP=',KRESP
-  WRITE(NLUOUT,*) 'default value may be used, who knows???'
-  WRITE(NLUOUT,*) ' '
+  WRITE(ILUOUT,*) 'WARNING'
+  WRITE(ILUOUT,*) '-------'
+  WRITE(ILUOUT,*) 'error when reading article ',YRECFM,'KRESP=',KRESP
+  WRITE(ILUOUT,*) 'default value may be used, who knows???'
+  WRITE(ILUOUT,*) ' '
 ENDIF
 !
 KYEAR  = TZDATETIME%TDATE%YEAR
@@ -1792,7 +1818,7 @@ USE MODE_FM
 USE MODE_FMREAD
 USE MODE_MSG
 !
-USE MODD_IO_SURF_MNH,        ONLY : COUT, CFILE, TPINFILE, NLUOUT
+USE MODD_IO_SURF_MNH, ONLY : TOUT, TPINFILE
 !
 !
 IMPLICIT NONE
@@ -1813,6 +1839,7 @@ CHARACTER(LEN=100),      INTENT(OUT)   :: HCOMMENT ! comment
 !
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
+INTEGER           :: ILUOUT
 !
 CHARACTER(LEN=LEN_HREC)        :: YRECFM     ! Name of the article to be written
 CHARACTER(LEN=40)              :: YFILETYPE40! MESONH file type
@@ -1824,6 +1851,8 @@ TYPE(TFIELDDATA)       :: TZFIELD
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFT1_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
+ILUOUT = TOUT%NLU
+!
 CALL IO_READ_FIELD(TPINFILE,'MASDEV',IMASDEV)
 IF (IMASDEV<46) THEN
   CALL IO_READ_FIELD(TPINFILE,'STORAGE_TYPE',YFILETYPE2)
@@ -1841,11 +1870,11 @@ ELSE
   YFILETYPE2 = YFILETYPE40(1:2)
 END IF
 !IF (YFILETYPE2(1:2)=='PG') THEN
-!  WRITE(NLUOUT,*) 'WARNING'
-!  WRITE(NLUOUT,*) '-------'
-!  WRITE(NLUOUT,*) 'Date is not read in a PGD file'
-!  WRITE(NLUOUT,*) 'Atmospheric model value is kept'
-!  WRITE(NLUOUT,*) ' '
+!  WRITE(ILUOUT,*) 'WARNING'
+!  WRITE(ILUOUT,*) '-------'
+!  WRITE(ILUOUT,*) 'Date is not read in a PGD file'
+!  WRITE(ILUOUT,*) 'Atmospheric model value is kept'
+!  WRITE(ILUOUT,*) ' '
 !  KRESP = -2
 !  RETURN
 !END IF
@@ -1867,11 +1896,11 @@ KMONTH(:) = ITDATE(2,:)
 KDAY(:)   = ITDATE(3,:)
 !
 IF (KRESP /=0) THEN
-  WRITE(NLUOUT,*) 'WARNING'
-  WRITE(NLUOUT,*) '-------'
-  WRITE(NLUOUT,*) 'error when reading article ',YRECFM,'KRESP=',KRESP
-  WRITE(NLUOUT,*) 'default value may be used, who knows???'
-  WRITE(NLUOUT,*) ' '
+  WRITE(ILUOUT,*) 'WARNING'
+  WRITE(ILUOUT,*) '-------'
+  WRITE(ILUOUT,*) 'error when reading article ',YRECFM,'KRESP=',KRESP
+  WRITE(ILUOUT,*) 'default value may be used, who knows???'
+  WRITE(ILUOUT,*) ' '
 ENDIF
 !
 TZFIELD%CMNHNAME   = TRIM(HREC)//'%TIME'
@@ -1887,11 +1916,11 @@ TZFIELD%NDIMS      = 1
 CALL IO_READ_FIELD(TPINFILE,TZFIELD,PTIME(:),KRESP)
 !
 IF (KRESP /=0) THEN
-  WRITE(NLUOUT,*) 'WARNING'
-  WRITE(NLUOUT,*) '-------'
-  WRITE(NLUOUT,*) 'error when reading article ',YRECFM,'KRESP=',KRESP
-  WRITE(NLUOUT,*) 'default value may be used, who knows???'
-  WRITE(NLUOUT,*) ' '
+  WRITE(ILUOUT,*) 'WARNING'
+  WRITE(ILUOUT,*) '-------'
+  WRITE(ILUOUT,*) 'error when reading article ',YRECFM,'KRESP=',KRESP
+  WRITE(ILUOUT,*) 'default value may be used, who knows???'
+  WRITE(ILUOUT,*) ' '
 ENDIF
 !-------------------------------------------------------------------------------
 END SUBROUTINE READ_SURFT1_MNH