From 30cd338ddda4137e24a13247a3659da404d63114 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Thu, 30 Mar 2017 15:58:44 +0200
Subject: [PATCH] Philippe 30/03/2017: IO: use file structure instead of
 filename in arguments + add fields in TFIELDLIST

---
 src/LIB/SURCOUCHE/src/modd_io.f90      |   4 +-
 src/LIB/SURCOUCHE/src/mode_field.f90   | 368 ++++++++++++++++++++++++-
 src/MNH/advection_metsv.f90            |  23 +-
 src/MNH/c2r2_adjust.f90                |  18 +-
 src/MNH/compute_r00.f90                |  28 +-
 src/MNH/diag.f90                       |  14 +-
 src/MNH/khko_notadjust.f90             |  21 +-
 src/MNH/lima_adjust.f90                |  20 +-
 src/MNH/lima_cold.f90                  |  62 ++---
 src/MNH/lima_cold_hom_nucl.f90         |  16 +-
 src/MNH/lima_cold_sedimentation.f90    |  12 -
 src/MNH/lima_cold_slow_processes.f90   |  34 +--
 src/MNH/lima_meyers.f90                |  30 +-
 src/MNH/lima_mixed.f90                 |  38 +--
 src/MNH/lima_phillips.f90              |  34 +--
 src/MNH/lima_warm.f90                  |  65 ++---
 src/MNH/lima_warm_coal.f90             |  14 +-
 src/MNH/lima_warm_evap.f90             |  34 +--
 src/MNH/lima_warm_nucl.f90             |  30 +-
 src/MNH/lima_warm_sedim.f90            |  12 -
 src/MNH/modeln.f90                     |  56 ++--
 src/MNH/paspol.f90                     |  52 ++--
 src/MNH/phys_paramn.f90                |  23 +-
 src/MNH/prandtl.f90                    |  27 +-
 src/MNH/radiations.f90                 | 145 +++++-----
 src/MNH/rain_c2r2_khko.f90             |  28 +-
 src/MNH/resolved_cloud.f90             |  75 ++---
 src/MNH/shallow_mf_pack.f90            |  93 ++++---
 src/MNH/tke_eps_sources.f90            |  23 +-
 src/MNH/turb.f90                       |  38 +--
 src/MNH/turb_cloud_index.f90           |  32 ++-
 src/MNH/turb_hor.f90                   |  27 +-
 src/MNH/turb_hor_dyn_corr.f90          |  22 +-
 src/MNH/turb_hor_splt.f90              |  17 +-
 src/MNH/turb_hor_sv_flux.f90           |  21 +-
 src/MNH/turb_hor_thermo_corr.f90       |  25 +-
 src/MNH/turb_hor_thermo_flux.f90       |  28 +-
 src/MNH/turb_hor_uv.f90                |  19 +-
 src/MNH/turb_hor_uw.f90                |  18 +-
 src/MNH/turb_hor_vw.f90                |  18 +-
 src/MNH/turb_ver.f90                   |  33 ++-
 src/MNH/turb_ver_dyn_flux.f90          |  21 +-
 src/MNH/turb_ver_sv_flux.f90           |  19 +-
 src/MNH/turb_ver_thermo_corr.f90       |  23 +-
 src/MNH/turb_ver_thermo_flux.f90       |  22 +-
 src/MNH/uv_to_zonal_and_merid.f90      |  52 ++--
 src/MNH/write_lfifm1_for_diag.f90      |  12 +-
 src/MNH/write_lfifm1_for_diag_supp.f90 | 152 +++++-----
 48 files changed, 1168 insertions(+), 830 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/modd_io.f90 b/src/LIB/SURCOUCHE/src/modd_io.f90
index d65039cd4..52a690279 100644
--- a/src/LIB/SURCOUCHE/src/modd_io.f90
+++ b/src/LIB/SURCOUCHE/src/modd_io.f90
@@ -86,7 +86,7 @@ TYPE TFILEDATA
   LOGICAL                  :: LNCREDUCE_FLOAT_PRECISION = .FALSE. ! Reduce the precision of floats to single precision
                                                                   ! instead of double precision
   LOGICAL                  :: LNCCOMPRESS = .FALSE. ! Do compression on fields
-  INTEGER(KIND=IDCDF_KIND) :: NNCCOMPRESS_LEVEL     ! Compression level
+  INTEGER(KIND=IDCDF_KIND) :: NNCCOMPRESS_LEVEL = 0 ! Compression level
   !
   TYPE(TFILEDATA),POINTER :: TFILE_PREV => NULL()
   TYPE(TFILEDATA),POINTER :: TFILE_NEXT => NULL()
@@ -97,4 +97,6 @@ TYPE(TFILEDATA),POINTER,SAVE :: TFILE_LAST  => NULL()
 
 TYPE(TFILEDATA),POINTER,SAVE :: TFILE_SURFEX  => NULL() !Pointer used to find the file used when writing SURFEX fields in write_surf_mnh.f90
 
+TYPE(TFILEDATA),TARGET, SAVE :: TFILE_DUMMY = TFILEDATA(CNAME="dummy") !Non existing file which can be used as a dummy target
+
 END MODULE MODD_IO_ll
diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index b4053138e..27aa93d13 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -7,13 +7,13 @@ MODULE MODE_FIELD
 USE MODD_CONF, ONLY : CPROGRAM
 USE MODD_IO_ll, ONLY : NVERB_DEBUG,NVERB_INFO,NVERB_WARNING,NVERB_ERROR,NVERB_FATAL
 USE MODD_PARAMETERS
-USE MODD_PARAM_n, ONLY : CRAD
+USE MODD_PARAM_n, ONLY : CDCONV,CRAD,CSCONV
 USE MODD_TYPE_DATE
 USE MODE_MSG
 !
 IMPLICIT NONE
 !
-INTEGER,PRIVATE,PARAMETER :: MAXFIELDS = 150
+INTEGER,PRIVATE,PARAMETER :: MAXFIELDS = 200
 INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4, TYPEDATE = 5
 !
 TYPE TFIELDPTR_C0D
@@ -232,6 +232,30 @@ TFIELDLIST(IDX)%NDIMS      = 0
 IDX = IDX+1
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'XSIZE'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: XSIZE'
+TFIELDLIST(IDX)%CUNITS     = ''
+TFIELDLIST(IDX)%CDIR       = '--'
+TFIELDLIST(IDX)%CCOMMENT   = 'Number of model 1 grid points in x-direction in the model 2 physical domain'
+TFIELDLIST(IDX)%NGRID      = 0
+TFIELDLIST(IDX)%NTYPE      = TYPEINT
+TFIELDLIST(IDX)%NDIMS      = 0
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'YSIZE'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: YSIZE'
+TFIELDLIST(IDX)%CUNITS     = ''
+TFIELDLIST(IDX)%CDIR       = '--'
+TFIELDLIST(IDX)%CCOMMENT   = 'Number of model 1 grid points in y-direction in the model 2 physical domain'
+TFIELDLIST(IDX)%NGRID      = 0
+TFIELDLIST(IDX)%NTYPE      = TYPEINT
+TFIELDLIST(IDX)%NDIMS      = 0
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
 TFIELDLIST(IDX)%CMNHNAME   = 'XOR'
 TFIELDLIST(IDX)%CSTDNAME   = ''
 TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: XOR'
@@ -903,6 +927,84 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
 IDX = IDX+1
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'UM'
+TFIELDLIST(IDX)%CSTDNAME   = 'x_wind'
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: UM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_U component of wind'
+TFIELDLIST(IDX)%NGRID      = 2
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'VM'
+TFIELDLIST(IDX)%CSTDNAME   = 'y_wind'
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: VM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_V component of wind'
+TFIELDLIST(IDX)%NGRID      = 3
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'WM'
+TFIELDLIST(IDX)%CSTDNAME   = 'upward_air_velocity'
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: WM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_vertical wind'
+TFIELDLIST(IDX)%NGRID      = 4
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'DUM'
+TFIELDLIST(IDX)%CSTDNAME   = 'x_wind'
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: DUM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_U component of wind'
+TFIELDLIST(IDX)%NGRID      = 2
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'DVM'
+TFIELDLIST(IDX)%CSTDNAME   = 'y_wind'
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: DVM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_V component of wind'
+TFIELDLIST(IDX)%NGRID      = 3
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'DWM'
+TFIELDLIST(IDX)%CSTDNAME   = 'upward_air_velocit'
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: DWM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_vertical wind'
+TFIELDLIST(IDX)%NGRID      = 4
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
 TFIELDLIST(IDX)%CMNHNAME   = 'TKET'
 TFIELDLIST(IDX)%CSTDNAME   = ''
 TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: TKET'
@@ -1331,6 +1433,32 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
 IDX = IDX+1
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'SRCT'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: SRCT'
+TFIELDLIST(IDX)%CUNITS     = 'kg kg-2'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_normalized 2nd_order moment s_r_c/2Sigma_s2'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'SIGS'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: SIGS'
+TFIELDLIST(IDX)%CUNITS     = 'kg kg-2'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_Sigma_s from turbulence scheme'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
 TFIELDLIST(IDX)%CMNHNAME   = 'RHOREFZ'
 TFIELDLIST(IDX)%CSTDNAME   = ''
 TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: RHOREFZ'
@@ -1531,6 +1659,19 @@ TFIELDLIST(IDX)%NDIMS      = 3
 ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
 IDX = IDX+1
 !
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'CLDFR'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: CLDFR'
+TFIELDLIST(IDX)%CUNITS     = ''
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_CLouD FRaction'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
 END IF ! CPROGRAM=MESONH
 !
 !
@@ -1721,7 +1862,118 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL))
 IDX = IDX+1
 !
 END IF !CRAD /= 'NONE'
-END IF ! CPROGRAM=MESONH
+END IF !CPROGRAM=MESONH
+!
+!
+IF (TRIM(CPROGRAM) /= 'PGD' .AND. TRIM(CPROGRAM) /= 'NESPGD' .AND. TRIM(CPROGRAM) /= 'SPAWN') THEN
+IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'COUNTCONV'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: COUNTCONV'
+TFIELDLIST(IDX)%CUNITS     = ''
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_COUNTCONV'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEINT
+TFIELDLIST(IDX)%NDIMS      = 2
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_N2D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'DTHCONV'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: DTHCONV'
+TFIELDLIST(IDX)%CUNITS     = 'K s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_CONVective heating/cooling rate'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'DRVCONV'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: DRVCONV'
+TFIELDLIST(IDX)%CUNITS     = 's-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_CONVective R_v tendency'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'DRCCONV'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: DRCCONV'
+TFIELDLIST(IDX)%CUNITS     = 's-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_CONVective R_c tendency'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'DRICONV'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: DRICONV'
+TFIELDLIST(IDX)%CUNITS     = 's-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_Z_CONVective R_i tendency'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'PRCONV'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: PRCONV'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_CONVective instantaneous Precipitation Rate'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 2
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'PACCONV'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: PACCONV'
+TFIELDLIST(IDX)%CUNITS     = 'm'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_CONVective ACcumulated Precipitation rate'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 2
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'PRSCONV'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: PRSCONV'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_CONVective instantaneous Precipitation Rate for Snow'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 2
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL))
+IDX = IDX+1
+!
+END IF !CDCONV /= 'NONE' .OR. CSCONV == 'KAFR'
+END IF !CPROGRAM/=PGD , NESPGD, SPAWN
 !
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
@@ -1829,12 +2081,51 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL))
 IDX = IDX+1
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'INPRR'
+TFIELDLIST(IDX)%CSTDNAME   = 'rainfall_rate'
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: INPRR'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_INstantaneous Precipitation Rain Rate'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 2
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'INPRR3D'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: INPRR3D'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_INstantaneous 3D Rain Precipitation flux'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'EVAP3D'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: EVAP3D'
+TFIELDLIST(IDX)%CUNITS     = 'kg kg-1 s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_INstantaneous 3D Rain Evaporation flux'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEREAL
+TFIELDLIST(IDX)%NDIMS      = 3
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
 TFIELDLIST(IDX)%CMNHNAME   = 'ACPRR'
 TFIELDLIST(IDX)%CSTDNAME   = 'rainfall_amount'
 TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: ACPRR'
 !PW: TODO: CF-convention prefers 'kg m-2'
 TFIELDLIST(IDX)%CUNITS     = 'm'
-TFIELDLIST(IDX)%CDIR       = ''
+TFIELDLIST(IDX)%CDIR       = 'XY'
 TFIELDLIST(IDX)%CCOMMENT   = 'X_Y_ACcumulated Precipitation Rain Rate'
 TFIELDLIST(IDX)%NGRID      = 1
 TFIELDLIST(IDX)%NTYPE      = TYPEREAL
@@ -2084,12 +2375,14 @@ USE MODD_REF
 !
 USE MODD_ADV_n
 USE MODD_CONF_n
+USE MODD_DEEP_CONVECTION_n
 USE MODD_DYN_n
 USE MODD_FIELD_n
 USE MODD_GR_FIELD_n
 USE MODD_GRID_n
 USE MODD_LSFIELD_n
 USE MODD_PARAM_n
+USE MODD_PAST_FIELD_n
 USE MODD_PRECIP_n
 USE MODD_RADIATIONS_n
 USE MODD_REF_n
@@ -2176,6 +2469,9 @@ IF (CONF_MODEL(KFROM)%IDX_RHT>0) THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('RHT',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RHT)
 END IF
 !
+CALL FIND_FIELD_ID_FROM_MNHNAME('SRCT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XSRCT
+CALL FIND_FIELD_ID_FROM_MNHNAME('SIGS',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XSIGS
+!
 IF (CPROGRAM == 'MESONH') THEN
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('US_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRUS_PRES
@@ -2213,9 +2509,19 @@ IF (CPROGRAM == 'MESONH') THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('RHS_CLD',IID,IRESP)
     TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RHT)
   END IF
+  CALL FIND_FIELD_ID_FROM_MNHNAME('CLDFR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XCLDFR
   !
 END IF
 !
+! MODD_PAST_FIELD_n variables
+!
+CALL FIND_FIELD_ID_FROM_MNHNAME('UM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XUM
+CALL FIND_FIELD_ID_FROM_MNHNAME('VM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVM
+CALL FIND_FIELD_ID_FROM_MNHNAME('WM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XWM
+CALL FIND_FIELD_ID_FROM_MNHNAME('DUM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDUM
+CALL FIND_FIELD_ID_FROM_MNHNAME('DVM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDVM
+CALL FIND_FIELD_ID_FROM_MNHNAME('DWM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDWM
+!
 ! MODD_LSFIELD_n variables
 !
 CALL FIND_FIELD_ID_FROM_MNHNAME('LSUM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSUM
@@ -2297,6 +2603,21 @@ IF (CRAD /= 'NONE') THEN
 END IF
 END IF
 !
+! MODD_DEEP_CONVECTION_n variables
+!
+IF (TRIM(CPROGRAM) /= 'PGD' .AND. TRIM(CPROGRAM) /= 'NESPGD' .AND. TRIM(CPROGRAM) /= 'SPAWN') THEN
+IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
+  CALL FIND_FIELD_ID_FROM_MNHNAME('COUNTCONV',IID,IRESP); TFIELDLIST(IID)%TFIELD_N2D(KFROM)%DATA => NCOUNTCONV
+  CALL FIND_FIELD_ID_FROM_MNHNAME('DTHCONV',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDTHCONV
+  CALL FIND_FIELD_ID_FROM_MNHNAME('DRVCONV',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDRVCONV
+  CALL FIND_FIELD_ID_FROM_MNHNAME('DRCCONV',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDRCCONV
+  CALL FIND_FIELD_ID_FROM_MNHNAME('DRICONV',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDRICONV
+  CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV',   IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPRCONV
+  CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPRSCONV
+  CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPACCONV
+END IF
+END IF
+!
 ! MODD_GR_FIELD_n variables
 !
 CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_ANIS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XSSO_ANISOTROPY
@@ -2310,7 +2631,10 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_STDEV',IID,IRESP); TFIELDLIST(IID)%TFIELD_X
 !
 ! MODD_PRECIP_n variables
 !
-CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XACPRR
+CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XINPRR
+CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR3D',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XINPRR3D
+CALL FIND_FIELD_ID_FROM_MNHNAME('EVAP3D', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XEVAP3D
+CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',  IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XACPRR
 !
 !
 !
@@ -2361,6 +2685,9 @@ IF (CONF_MODEL(KTO)%IDX_RHT>0) THEN
   TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RHT)
 END IF
 !
+CALL FIND_FIELD_ID_FROM_MNHNAME('SRCT',IID,IRESP); XSRCT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('SIGS',IID,IRESP); XSIGS => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+!
 IF (CPROGRAM == 'MESONH') THEN
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('RS_CLD',IID,IRESP); XRRS_CLD => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA
@@ -2398,8 +2725,18 @@ IF (CPROGRAM == 'MESONH') THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('VS_PRES',IID,IRESP); XRVS_PRES => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
   CALL FIND_FIELD_ID_FROM_MNHNAME('WS_PRES',IID,IRESP); XRWS_PRES => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
   CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP); XRTHS_CLD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+  CALL FIND_FIELD_ID_FROM_MNHNAME('CLDFR',  IID,IRESP); XCLDFR    => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
 END IF
 !
+! MODD_PAST_FIELD_n variables
+!
+CALL FIND_FIELD_ID_FROM_MNHNAME('UM', IID,IRESP); XUM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('VM', IID,IRESP); XVM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('WM', IID,IRESP); XWM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('DUM',IID,IRESP); XDUM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('DVM',IID,IRESP); XDVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('DWM',IID,IRESP); XDWM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+!
 ! MODD_LSFIELD_n variables
 !
 CALL FIND_FIELD_ID_FROM_MNHNAME('LSUM', IID,IRESP); XLSUM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
@@ -2588,6 +2925,22 @@ IF (CRAD /= 'NONE') THEN
 END IF
 END IF
 !
+! MODD_DEEP_CONVECTION_n variables
+!
+IF (TRIM(CPROGRAM) /= 'PGD' .AND. TRIM(CPROGRAM) /= 'NESPGD' .AND. TRIM(CPROGRAM) /= 'SPAWN') THEN
+IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
+  CALL FIND_FIELD_ID_FROM_MNHNAME('COUNTCONV',IID,IRESP); NCOUNTCONV => TFIELDLIST(IID)%TFIELD_N2D(KTO)%DATA
+  CALL FIND_FIELD_ID_FROM_MNHNAME('DTHCONV',  IID,IRESP); XDTHCONV   => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+  CALL FIND_FIELD_ID_FROM_MNHNAME('DRVCONV',  IID,IRESP); XDRVCONV   => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+  CALL FIND_FIELD_ID_FROM_MNHNAME('DRCCONV',  IID,IRESP); XDRCCONV   => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+  CALL FIND_FIELD_ID_FROM_MNHNAME('DRICONV',  IID,IRESP); XDRICONV   => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+  CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV',   IID,IRESP); XPRCONV    => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
+  CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV',  IID,IRESP); XPRSCONV   => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
+  CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV',  IID,IRESP); XPACCONV   => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
+
+END IF
+END IF
+!
 ! MODD_GR_FIELD_n variables
 !
 CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_ANIS', IID,IRESP); XSSO_ANISOTROPY => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
@@ -2601,7 +2954,10 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_STDEV',IID,IRESP); XSSO_STDEV      => TFIEL
 !
 ! MODD_PRECIP_n variables
 !
-CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); XACPRR => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR',  IID,IRESP); XINPRR   => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR3D',IID,IRESP); XINPRR3D => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('EVAP3D', IID,IRESP); XEVAP3D  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',  IID,IRESP); XACPRR   => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
 !
 END IF !KFROM/=KTO
 !
diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
index 8318e5f05..7085b2e6a 100644
--- a/src/MNH/advection_metsv.f90
+++ b/src/MNH/advection_metsv.f90
@@ -8,7 +8,7 @@
 !     ###########################
 !
 INTERFACE
-      SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, &
+      SUBROUTINE ADVECTION_METSV (HLUOUT, TPFILE, OCLOSE_OUT,HUVW_ADV_SCHEME,  &
                             HMET_ADV_SCHEME,HSV_ADV_SCHEME, HCLOUD, KSPLIT,    &
                             OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT,                 &
                             HLBCX, HLBCY, KRR, KSV, TPDTCUR, PTSTEP,           &
@@ -17,12 +17,12 @@ INTERFACE
                             PRTHS, PRRS, PRTKES, PRSVS,                        &
                             PRTHS_CLD, PRRS_CLD, PRSVS_CLD, PRTKES_ADV         )
 !
+USE MODD_IO_ll,     ONLY: TFILEDATA
 USE MODD_TYPE_DATE, ONLY: DATE_TIME
 !
 LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
                                                       ! file opening
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the 
@@ -66,7 +66,7 @@ END INTERFACE
 !
 END MODULE MODI_ADVECTION_METSV
 !     ##########################################################################
-      SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, &
+      SUBROUTINE ADVECTION_METSV (HLUOUT, TPFILE, OCLOSE_OUT,HUVW_ADV_SCHEME,  &
                             HMET_ADV_SCHEME,HSV_ADV_SCHEME, HCLOUD, KSPLIT,    &
                             OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT,                 &
                             HLBCX, HLBCY, KRR, KSV, TPDTCUR, PTSTEP,           &
@@ -148,6 +148,7 @@ USE MODD_CONF,  ONLY : LNEUTRAL,NHALO,L1D, L2D
 USE MODD_CTURB, ONLY : XTKEMIN
 USE MODD_CST 
 USE MODD_BUDGET
+USE MODD_IO_ll,     ONLY: TFILEDATA
 USE MODD_TYPE_DATE, ONLY: DATE_TIME
 !
 USE MODI_CONTRAV
@@ -167,8 +168,7 @@ IMPLICIT NONE
 !
 LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for synchronous
                                                       ! file opening
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 CHARACTER(LEN=6),       INTENT(IN)   :: HMET_ADV_SCHEME, & ! Control of the 
@@ -258,6 +258,7 @@ TYPE(LIST_ll), POINTER      :: TZFIELDS1_ll ! list of fields to exchange
 INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 INTEGER             :: ILUOUT       ! logical unit
@@ -268,6 +269,8 @@ INTEGER             :: IIB, IIE, IJB, IJE
 !*       0.     INITIALIZATION                        
 !	        --------------
 !
+YFMFILE = TPFILE%CNAME
+!
 CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
 !
 GTKE=(SIZE(PTKET)/=0)
@@ -312,25 +315,25 @@ IF (OCLOSE_OUT .AND. OCFL_WRIT .AND. (.NOT. L1D)) THEN
     YCOMMENT='X_Y_Z_CFLU (-)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFLU,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCFLU,IGRID,ILENCH,YCOMMENT,IRESP)
 
     YRECFM  ='CFLV'
     YCOMMENT='X_Y_Z_CFLV (-)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFLV,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCFLV,IGRID,ILENCH,YCOMMENT,IRESP)
 
     YRECFM  ='CFLW'
     YCOMMENT='X_Y_Z_CFLW (-)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFLW,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCFLW,IGRID,ILENCH,YCOMMENT,IRESP)
 
     YRECFM  ='CFL'
     YCOMMENT='X_Y_Z_CFL  (-)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFL,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCFL,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !* prints in the output file the maximum CFL
diff --git a/src/MNH/c2r2_adjust.f90 b/src/MNH/c2r2_adjust.f90
index 7025d323a..f9e099fe6 100644
--- a/src/MNH/c2r2_adjust.f90
+++ b/src/MNH/c2r2_adjust.f90
@@ -14,14 +14,16 @@
 !
 INTERFACE
 !
-      SUBROUTINE C2R2_ADJUST(KRR, HFMFILE, HLUOUT, HRAD,                  &
+      SUBROUTINE C2R2_ADJUST(KRR, TPFILE, HLUOUT, HRAD,                   &
                              HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,    &
                              PRHODJ, PSIGS, PPABST,                       &
                              PTHS, PRVS, PRCS, PCNUCS,                    &
                              PCCS, PSRCS, PCLDFR, PRRS )
-         !
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                  INTENT(IN)    :: KRR      ! Number of moist variables
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE  ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)    :: TPFILE   ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT   ! Output-listing name for
                                                     ! model n
 CHARACTER*4,              INTENT(IN)    :: HTURBDIM ! Dimensionality of the
@@ -56,7 +58,7 @@ END INTERFACE
 !
 END MODULE MODI_C2R2_ADJUST
 !     ##########################################################################
-      SUBROUTINE C2R2_ADJUST(KRR, HFMFILE, HLUOUT, HRAD,                  &
+      SUBROUTINE C2R2_ADJUST(KRR, TPFILE, HLUOUT, HRAD,                   &
                              HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,    &
                              PRHODJ, PSIGS, PPABST,                       &
                              PTHS, PRVS, PRCS, PCNUCS,                    &
@@ -157,6 +159,7 @@ USE MODD_PARAMETERS
 USE MODD_CST
 USE MODD_CONF
 USE MODD_BUDGET
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_NSV, ONLY : NSV_C2R2BEG
 !
 USE MODI_CONDENS
@@ -172,7 +175,7 @@ IMPLICIT NONE
 !
 !
 INTEGER,                  INTENT(IN)    :: KRR      ! Number of moist variables
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE  ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)    :: TPFILE   ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT   ! Output-listing name for
                                                     ! model n
 CHARACTER*4,              INTENT(IN)    :: HTURBDIM ! Dimensionality of the
@@ -220,6 +223,7 @@ INTEGER             :: IGRID      ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH     ! Length of comment string in LFIFM file
 INTEGER             :: JITER,ITERMAX  ! iterative loop for first order adjustment
 INTEGER             :: ILUOUT     ! Logical unit of output listing 
+CHARACTER (LEN=28)  :: YFMFILE    ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
 !-------------------------------------------------------------------------------
@@ -227,6 +231,8 @@ CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
 !*       1.     PRELIMINARIES
 !               -------------
 !
+YFMFILE = TPFILE%CNAME
+!
 CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
 ZEPS= XMV / XMD
 !
@@ -426,7 +432,7 @@ IF ( OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_NEB (0)'
   IGRID   = 1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZW1,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZW1,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !
diff --git a/src/MNH/compute_r00.f90 b/src/MNH/compute_r00.f90
index a59a5c939..7425b458a 100644
--- a/src/MNH/compute_r00.f90
+++ b/src/MNH/compute_r00.f90
@@ -13,16 +13,18 @@
 !     ###############################
 !
 INTERFACE
-SUBROUTINE COMPUTE_R00(HFMFILE)       
+SUBROUTINE COMPUTE_R00(TPFILE)
 !
-CHARACTER (LEN=28), INTENT(IN) :: HFMFILE   ! name of the OUTPUT FM-file
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
+TYPE(TFILEDATA),   INTENT(IN) :: TPFILE ! Output file
 !
 END SUBROUTINE COMPUTE_R00
 END INTERFACE
 END MODULE MODI_COMPUTE_R00
 !
 !     ###############################
-      SUBROUTINE COMPUTE_R00(HFMFILE)       
+      SUBROUTINE COMPUTE_R00(TPFILE)
 !     ###############################
 !
 !!**** 
@@ -65,6 +67,7 @@ END MODULE MODI_COMPUTE_R00
 !    
 USE MODD_FIELD_n
 USE MODD_GRID_n
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_LUNIT_n
 USE MODD_GRID_n
 USE MODD_STO_FILE
@@ -87,7 +90,7 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
 !
-CHARACTER (LEN=28), INTENT(IN) :: HFMFILE   ! name of the OUTPUT FM-file
+TYPE(TFILEDATA),   INTENT(IN) :: TPFILE ! Output file
 !
 !*       0.2   declarations of local variables
 !
@@ -98,8 +101,9 @@ INTEGER  :: ININAR               ! number of articles  present in
                                  !  the LFIFM file
 INTEGER  :: ITYPE                ! type of file (conv2dia and transfer)
 !
-CHARACTER (LEN=100)                :: YCOMMENT
-CHARACTER (LEN=16)                 :: YRECFM
+CHARACTER(LEN=100)                 :: YCOMMENT
+CHARACTER(LEN=28)                  :: YFMFILE ! Name of FM-file to write
+CHARACTER(LEN=16)                  :: YRECFM
 INTEGER                            :: IFILECUR,JFILECUR,NIU,NJU,NKU,IGRID,ILENCH
 INTEGER                            :: NFILES,JLOOP
 REAL                               :: ZXOR,ZYOR,ZDX,ZDY
@@ -132,6 +136,8 @@ ITYPE=2
 ZSPVAL=-1.E+11
 IKU=SIZE(XZHAT)
 !
+YFMFILE = TPFILE%CNAME
+!
 !-------------------------------------------------------------------------------
 !
 !*       2.0    FIND THE FILE TO BE TREATED AND THE INIT-SV FILES
@@ -298,7 +304,7 @@ DO JFILECUR=1,NFILES
     YCOMMENT=YCOMMENT(1:10)//YDATE//' (KM)'
     PRINT *,'YCOMMENT = ',YCOMMENT
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZX00(:,:,:),IGRID,ILENCH,   &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZX00(:,:,:),IGRID,ILENCH,   &
                 YCOMMENT,IRESP)
     !
     WRITE(YRECFM,'(A2,I2.2)')'Y0',INBR_START
@@ -306,7 +312,7 @@ DO JFILECUR=1,NFILES
     YCOMMENT=YCOMMENT(1:10)//YDATE//' (KM)'
     PRINT *,'YCOMMENT = ',YCOMMENT
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZY00(:,:,:),IGRID,ILENCH,   &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZY00(:,:,:),IGRID,ILENCH,   &
                 YCOMMENT,IRESP)
     !
     WRITE(YRECFM,'(A2,I2.2)')'Z0',INBR_START
@@ -314,7 +320,7 @@ DO JFILECUR=1,NFILES
     YCOMMENT=YCOMMENT(1:10)//YDATE//' (KM)'
     PRINT *,'YCOMMENT = ',YCOMMENT
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZZ00(:,:,:),IGRID,ILENCH,   &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZZ00(:,:,:),IGRID,ILENCH,   &
                 YCOMMENT,IRESP)
   END IF
 !
@@ -338,7 +344,7 @@ DO JFILECUR=1,NFILES
     YCOMMENT=YCOMMENT(1:11)//YDATE//' (K)'
     PRINT *,'YCOMMENT = ',YCOMMENT
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',   &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',   &
                 ZWORK1(:,:,:),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
     !
@@ -347,7 +353,7 @@ DO JFILECUR=1,NFILES
     YCOMMENT=YCOMMENT(1:11)//YDATE//' (G/KG)'
     PRINT *,'YCOMMENT = ',YCOMMENT
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',   &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',   &
                 ZWORK2(:,:,:),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
   ENDIF
diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90
index c4389ab79..3b06c8376 100644
--- a/src/MNH/diag.f90
+++ b/src/MNH/diag.f90
@@ -171,7 +171,6 @@ IMPLICIT NONE
 TYPE(DATE_TIME)   :: TXDTBAL   ! current time and date for BALLOON and AIRCRAFT trajectories
 CHARACTER (LEN=28), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file
 CHARACTER (LEN=28), DIMENSION(1) :: YINIFILEPGD ! names of the INPUT FM-file
-CHARACTER (LEN=28) :: YFMFILE   ! name of the OUTPUT FM-file
 CHARACTER (LEN=5)  :: YSUFFIX   ! character string for the OUTPUT FM-file number
 CHARACTER (LEN=4)  :: YRAD      ! initial flag to call to radiation schemes
 CHARACTER (LEN=4)  :: YDCONV    ! initial flag to call to deep convection schemes
@@ -446,10 +445,9 @@ IF ( LEN_TRIM(CINIFILE)==0 ) THEN
 ENDIF
 !
 INPRAR = 24 +2*(4+NRR+NSV)
-YFMFILE=ADJUSTL(ADJUSTR(CINIFILE)//YSUFFIX)
-COUTFMFILE=YFMFILE
+COUTFMFILE=TRIM(CINIFILE)//YSUFFIX
 !
-TZFILE%CNAME      = TRIM(YFMFILE)
+TZFILE%CNAME      = TRIM(CINIFILE)//YSUFFIX
 TZFILE%CTYPE      = 'DIAG'
 IF (LCDF4) THEN
   IF (.NOT.LLFIOUT) THEN
@@ -716,8 +714,8 @@ ZCHEM=0.
 XTIME_LES=0.
 XTIME_LES_BU_PROCESS=0.
 XTIME_BU_PROCESS=0.
-CALL PHYS_PARAM_n(1,YFMFILE,GCLOSE_OUT,                           &
-                  ZRAD,ZSHADOWS,ZDCONV,ZGROUND,ZMAFL,ZDRAG,       &
+CALL PHYS_PARAM_n(1,TZFILE,GCLOSE_OUT,                      &
+                  ZRAD,ZSHADOWS,ZDCONV,ZGROUND,ZMAFL,ZDRAG, &
                   ZTURB,ZTRACER, ZCHEM,ZTIME_BU,GMASKkids)
 WRITE(ILUOUT0,*) 'DIAG AFTER PHYS_PARAM1'
 !
@@ -755,7 +753,7 @@ ZTIME1=ZTIME2
 !
 !*       7.0    Stores other fields in MESONH files if necessary
 !
-CALL WRITE_LFIFM1_FOR_DIAG_SUPP(YFMFILE)
+CALL WRITE_LFIFM1_FOR_DIAG_SUPP(TZFILE)
 WRITE(ILUOUT0,*) ' '
 WRITE(ILUOUT0,*) 'DIAG AFTER WRITE_LFIFM1_FOR_DIAG_SUPP'
 !
@@ -766,7 +764,7 @@ ZTIME1=ZTIME2
 !
 !*       8.0    Initial positions computation (back into simulation segments)
 !
-IF (LTRAJ .AND. JF/=1) CALL COMPUTE_R00(YFMFILE)
+IF (LTRAJ .AND. JF/=1) CALL COMPUTE_R00(TZFILE)
 !
 CALL SECOND_MNH2(ZTIME2)
 ZTRAJ =ZTIME2-ZTIME1
diff --git a/src/MNH/khko_notadjust.f90 b/src/MNH/khko_notadjust.f90
index d4b667566..e76310acc 100644
--- a/src/MNH/khko_notadjust.f90
+++ b/src/MNH/khko_notadjust.f90
@@ -14,16 +14,17 @@
 !
 INTERFACE
 !
-      SUBROUTINE KHKO_NOTADJUST(KRR, KTCOUNT, HFMFILE, HLUOUT, HRAD, OCLOSE_OUT,    &
+      SUBROUTINE KHKO_NOTADJUST(KRR, KTCOUNT, TPFILE, HLUOUT, HRAD, OCLOSE_OUT,     &
                                 PTSTEP, PRHODJ, PPABSM,  PPABST, PRHODREF, PZZ,     &
                                 PTHT,PRVT,PRCT,PRRT,                                &
                                 PTHS, PRVS, PRCS, PRRS, PCCS, PCNUCS, PSAT,         &
                                 PCLDFR, PSRCS, PNPRO,PSSPRO                          )
-
-                                      !
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                  INTENT(IN)    :: KRR      ! Number of moist variables
 INTEGER,                  INTENT(IN)    :: KTCOUNT      ! Number of moist variables
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE  ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)    :: TPFILE   ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT   ! Output-listing name for
                                                     ! model n
 CHARACTER*4,              INTENT(IN)    :: HRAD     ! Radiation scheme name
@@ -66,7 +67,7 @@ END INTERFACE
 END MODULE MODI_KHKO_NOTADJUST
 !
 !     ################################################################################
-      SUBROUTINE KHKO_NOTADJUST(KRR, KTCOUNT, HFMFILE, HLUOUT, HRAD, OCLOSE_OUT,    &
+      SUBROUTINE KHKO_NOTADJUST(KRR, KTCOUNT, TPFILE, HLUOUT, HRAD, OCLOSE_OUT,     &
                                 PTSTEP, PRHODJ, PPABSM,  PPABST, PRHODREF, PZZ,     &
                                 PTHT,PRVT,PRCT,PRRT,                                &
                                 PTHS, PRVS, PRCS, PRRS, PCCS, PCNUCS, PSAT,         &
@@ -105,6 +106,7 @@ USE MODD_PARAMETERS
 USE MODD_CST
 USE MODD_CONF
 USE MODD_BUDGET
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_NSV, ONLY : NSV_C2R2BEG
 USE MODD_RAIN_C2R2_DESCR, ONLY : XRTMIN
 
@@ -122,7 +124,7 @@ IMPLICIT NONE
 !
 INTEGER,                  INTENT(IN)    :: KRR      ! Number of moist variables
 INTEGER,                  INTENT(IN)    :: KTCOUNT      ! Number of moist variables
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE  ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)    :: TPFILE   ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT   ! Output-listing name for
                                                     ! model n
 CHARACTER*4,              INTENT(IN)    :: HRAD     ! Radiation scheme name
@@ -166,6 +168,7 @@ INTEGER             :: IRESP      ! Return code of FM routines
 INTEGER             :: IGRID      ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH     ! Length of comment string in LFIFM file
 INTEGER             :: ILUOUT     ! Logical unit of output listing 
+CHARACTER (LEN=28)  :: YFMFILE    ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
 
@@ -198,6 +201,8 @@ INTEGER :: JK            ! For loop
 !*       1.     PRELIMINARIES
 !               -------------
 !
+YFMFILE = TPFILE%CNAME
+!
 CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
@@ -395,12 +400,12 @@ IF ( OCLOSE_OUT ) THEN
   YRECFM  ='SURSAT'
   YCOMMENT='X_Y_Z_NEB (0)'
   IGRID   = 1
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
   ILENCH=LEN(YCOMMENT)
   YRECFM  ='ACT_OD'
   YCOMMENT='X_Y_Z_NEB (0)'
   IGRID   = 1
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZACT,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZACT,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !*       7.  STORE THE BUDGET TERMS
diff --git a/src/MNH/lima_adjust.f90 b/src/MNH/lima_adjust.f90
index 02450c133..c7b2ab442 100644
--- a/src/MNH/lima_adjust.f90
+++ b/src/MNH/lima_adjust.f90
@@ -4,15 +4,17 @@
 !
 INTERFACE
 !
-      SUBROUTINE LIMA_ADJUST(KRR, KMI, HFMFILE, HLUOUT, HRAD,                  &
+      SUBROUTINE LIMA_ADJUST(KRR, KMI, TPFILE, HLUOUT, HRAD,                   &
                              HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,         &
                              PRHODREF, PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, &
                              PRT, PRS, PSVT, PSVS,                             &
                              PTHS, PSRCS, PCLDFR                               )
-         !
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                  INTENT(IN)   :: KRR        ! Number of moist variables
 INTEGER,                  INTENT(IN)   :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)   :: HFMFILE    ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)   :: TPFILE     ! Output file
 CHARACTER(LEN=*),         INTENT(IN)   :: HLUOUT     ! Output-listing name for
                                                      ! model n
 CHARACTER*4,              INTENT(IN)   :: HTURBDIM   ! Dimensionality of the
@@ -54,7 +56,7 @@ END INTERFACE
 END MODULE MODI_LIMA_ADJUST
 !
 !     ##########################################################################
-      SUBROUTINE LIMA_ADJUST(KRR, KMI, HFMFILE, HLUOUT, HRAD,                  &
+      SUBROUTINE LIMA_ADJUST(KRR, KMI, TPFILE, HLUOUT, HRAD,                   &
                              HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,         &
                              PRHODREF, PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, &
                              PRT, PRS, PSVT, PSVS,                             &
@@ -137,6 +139,7 @@ END MODULE MODI_LIMA_ADJUST
 USE MODD_PARAMETERS
 USE MODD_CST
 USE MODD_CONF
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAM_LIMA
 USE MODD_PARAM_LIMA_WARM
 USE MODD_PARAM_LIMA_COLD
@@ -158,7 +161,7 @@ IMPLICIT NONE
 !
 INTEGER,                  INTENT(IN)   :: KRR        ! Number of moist variables
 INTEGER,                  INTENT(IN)   :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)   :: HFMFILE    ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)   :: TPFILE     ! Output file
 CHARACTER(LEN=*),         INTENT(IN)   :: HLUOUT     ! Output-listing name for
                                                      ! model n
 CHARACTER*4,              INTENT(IN)   :: HTURBDIM   ! Dimensionality of the
@@ -263,6 +266,7 @@ INTEGER                  :: IIB,IJB    ! Horz index values of the first inner ma
 INTEGER                  :: IIE,IJE    ! Horz index values of the last inner mass points
 INTEGER                  :: JITER,ITERMAX  ! iterative loop for first order adjustment
 INTEGER                  :: ILUOUT     ! Logical unit of output listing 
+CHARACTER (LEN=28)       :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100)      :: YCOMMENT   ! Comment string in LFIFM file
 CHARACTER (LEN=16)       :: YRECFM     ! Name of the desired field in LFIFM file
 !
@@ -281,6 +285,8 @@ INTEGER , DIMENSION(3) :: BV
 !*       1.     PRELIMINARIES
 !               -------------
 !
+YFMFILE = TPFILE%CNAME
+!
 CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
 !
 IIB = 1 + JPHEXT
@@ -1125,7 +1131,7 @@ IF ( OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_NEB (0)'
   IGRID   = 1
   ILENG = SIZE(ZW,1)*SIZE(ZW,2)*SIZE(ZW,3)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZW,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZW,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !
@@ -1175,7 +1181,7 @@ IF ( OCLOSE_OUT ) THEN
    YCOMMENT='X_Y_Z_SSI'
    IGRID   = 1
    ILENG = SIZE(ZW,1)*SIZE(ZW,2)*SIZE(ZW,3)
-   CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZW,IGRID,ILENCH,YCOMMENT,IRESP)
+   CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZW,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !
diff --git a/src/MNH/lima_cold.f90 b/src/MNH/lima_cold.f90
index fe9e92e6b..13b135498 100644
--- a/src/MNH/lima_cold.f90
+++ b/src/MNH/lima_cold.f90
@@ -3,12 +3,12 @@
 !      #####################
 !
 INTERFACE
-      SUBROUTINE LIMA_COLD (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,           &
-                           HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,  &
-                           PRHODREF, PEXNREF, PPABST, PW_NU,               &
-                           PTHM, PPABSM,                                   &
-                           PTHT, PRT, PSVT,                                &
-                           PTHS, PRS, PSVS,                                &
+      SUBROUTINE LIMA_COLD (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, &
+                           KRR, PZZ, PRHODJ,                     &
+                           PRHODREF, PEXNREF, PPABST, PW_NU,     &
+                           PTHM, PPABSM,                         &
+                           PTHT, PRT, PSVT,                      &
+                           PTHS, PRS, PSVS,                      &
                            PINPRS, PINPRG, PINPRH)
 !
 LOGICAL,                  INTENT(IN)    :: OSEDI   ! switch to activate the 
@@ -19,11 +19,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITG ! Number of small time step
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
 INTEGER,                  INTENT(IN)    :: KRR     ! Number of moist variables
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
@@ -53,15 +48,15 @@ END SUBROUTINE LIMA_COLD
 END INTERFACE
 END MODULE MODI_LIMA_COLD
 !
-!     ######################################################################
-      SUBROUTINE LIMA_COLD (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,           &
-                           HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,  &
-                           PRHODREF, PEXNREF, PPABST, PW_NU,               &
-                           PTHM, PPABSM,                                   &
-                           PTHT, PRT, PSVT,                                &
-                           PTHS, PRS, PSVS,                                &
+!     ############################################################
+      SUBROUTINE LIMA_COLD (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, &
+                           KRR, PZZ, PRHODJ,                     &
+                           PRHODREF, PEXNREF, PPABST, PW_NU,     &
+                           PTHM, PPABSM,                         &
+                           PTHT, PRT, PSVT,                      &
+                           PTHS, PRS, PSVS,                      &
                            PINPRS, PINPRG, PINPRH)
-!     ######################################################################
+!     ############################################################
 !
 !!
 !!    PURPOSE
@@ -132,11 +127,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITG ! Number of small time step
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
 INTEGER,                  INTENT(IN)    :: KRR     ! Number of moist variables
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
@@ -303,7 +293,6 @@ END IF
 !	        -------------------------------------
 !
 CALL LIMA_COLD_SEDIMENTATION (OSEDI, KSPLITG, PTSTEP, KMI,     &
-                              HFMFILE, HLUOUT, OCLOSE_OUT,     &
                               PZZ, PRHODJ, PRHODREF,           &
                               PRIT, PCIT,                      &
                               PRIS, PRSS, PRGS, PRHS, PCIS,    &
@@ -320,23 +309,23 @@ IF (LNUCL) THEN
    IF ( LMEYERS ) THEN
       PIFS(:,:,:,:) = 0.0
       PNIS(:,:,:,:) = 0.0
-      CALL LIMA_MEYERS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, &
-                        PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,           &
-                        PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT,   &
-                        PTHS, PRVS, PRCS, PRIS,                           &
+      CALL LIMA_MEYERS (OHHONI, PTSTEP, KMI,                            &
+                        PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,         &
+                        PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT, &
+                        PTHS, PRVS, PRCS, PRIS,                         &
                         PCCS, PCIS, PINS )
    ELSE
-      CALL LIMA_PHILLIPS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, &
-                          PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,           &
-                          PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,         &
-                          PTHS, PRVS, PRCS, PRIS,                           &
-                          PCIT, PCCS, PCIS,                                 &
+      CALL LIMA_PHILLIPS (OHHONI, PTSTEP, KMI,                      &
+                          PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,   &
+                          PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, &
+                          PTHS, PRVS, PRCS, PRIS,                   &
+                          PCIT, PCCS, PCIS,                         &
                           PNAS, PIFS, PINS, PNIS   )
    END IF
 !
    IF (LWARM) THEN
       CALL LIMA_COLD_HOM_NUCL (OHHONI, PTSTEP, KMI,                         &
-                               HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ,    &
+                               PZZ, PRHODJ,                                 &
                                PRHODREF, PEXNREF, PPABST, PW_NU,            &
                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,    &
                                PTHS, PRVS, PRCS, PRRS, PRIS, PRGS,          &
@@ -355,8 +344,7 @@ END IF
 !
 IF (LSNOW) THEN
 !
-   CALL LIMA_COLD_SLOW_PROCESSES(PTSTEP, KMI, HFMFILE, HLUOUT,             &
-                                 OCLOSE_OUT, PZZ, PRHODJ,                  &
+   CALL LIMA_COLD_SLOW_PROCESSES(PTSTEP, KMI, PZZ, PRHODJ,                 &
                                  PRHODREF, PEXNREF, PPABST,                &
                                  PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, &
                                  PTHS, PRVS, PRIS, PRSS,                   &
diff --git a/src/MNH/lima_cold_hom_nucl.f90 b/src/MNH/lima_cold_hom_nucl.f90
index fb50b8ace..fccb8e7f0 100644
--- a/src/MNH/lima_cold_hom_nucl.f90
+++ b/src/MNH/lima_cold_hom_nucl.f90
@@ -4,7 +4,7 @@
 !
 INTERFACE
       SUBROUTINE LIMA_COLD_HOM_NUCL (OHHONI, PTSTEP, KMI,             &
-                           HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ,  &
+                           PZZ, PRHODJ,                               &
                            PRHODREF, PEXNREF, PPABST, PW_NU,          &
                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,  &
                            PTHS, PRVS, PRCS, PRRS, PRIS, PRGS,        &
@@ -16,12 +16,6 @@ LOGICAL,                  INTENT(IN)    :: OHHONI  ! enable haze freezing
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
-!
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
@@ -64,7 +58,7 @@ END MODULE MODI_LIMA_COLD_HOM_NUCL
 !
 !     ######################################################################
       SUBROUTINE LIMA_COLD_HOM_NUCL (OHHONI, PTSTEP, KMI,             &
-                           HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ,  &
+                           PZZ, PRHODJ,                               &
                            PRHODREF, PEXNREF, PPABST, PW_NU,          &
                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,  &
                            PTHS, PRVS, PRCS, PRRS, PRIS, PRGS,        &
@@ -123,12 +117,6 @@ LOGICAL,                  INTENT(IN)    :: OHHONI  ! enable haze freezing
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
-!
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
diff --git a/src/MNH/lima_cold_sedimentation.f90 b/src/MNH/lima_cold_sedimentation.f90
index de72fd6f3..f71b9eef2 100644
--- a/src/MNH/lima_cold_sedimentation.f90
+++ b/src/MNH/lima_cold_sedimentation.f90
@@ -4,7 +4,6 @@
 !
 INTERFACE
       SUBROUTINE LIMA_COLD_SEDIMENTATION (OSEDI, KSPLITG, PTSTEP, KMI,     &
-                                          HFMFILE, HLUOUT, OCLOSE_OUT,     &
                                           PZZ, PRHODJ, PRHODREF,           &
                                           PRIT, PCIT,                      &
                                           PRIS, PRSS, PRGS, PRHS, PCIS,    &
@@ -16,11 +15,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITG    ! Number of small time ste
                                                       ! for ice sedimendation
 REAL,                     INTENT(IN)    :: PTSTEP     ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the FM file output
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ        ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ     ! Dry density * Jacobian (Budgets)
@@ -45,7 +39,6 @@ END MODULE MODI_LIMA_COLD_SEDIMENTATION
 !
 !     ######################################################################
       SUBROUTINE LIMA_COLD_SEDIMENTATION (OSEDI, KSPLITG, PTSTEP, KMI,     &
-                                          HFMFILE, HLUOUT, OCLOSE_OUT,     &
                                           PZZ, PRHODJ, PRHODREF,           &
                                           PRIT, PCIT,                      &
                                           PRIS, PRSS, PRGS, PRHS, PCIS,    &
@@ -106,11 +99,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITG    ! Number of small time ste
                                                       ! for ice sedimendation
 REAL,                     INTENT(IN)    :: PTSTEP     ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the FM file output
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ        ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ     ! Dry density * Jacobian (Budgets)
diff --git a/src/MNH/lima_cold_slow_processes.f90 b/src/MNH/lima_cold_slow_processes.f90
index bdbb4c64e..963a2b926 100644
--- a/src/MNH/lima_cold_slow_processes.f90
+++ b/src/MNH/lima_cold_slow_processes.f90
@@ -3,22 +3,15 @@
 !      #####################
 !
 INTERFACE
-      SUBROUTINE LIMA_COLD_SLOW_PROCESSES (PTSTEP, KMI, HFMFILE, HLUOUT,       &
-                                           OCLOSE_OUT, PZZ, PRHODJ,            &
-                                           PRHODREF, PEXNREF, PPABST,          &
+      SUBROUTINE LIMA_COLD_SLOW_PROCESSES (PTSTEP, KMI, PZZ, PRHODJ,                 &
+                                           PRHODREF, PEXNREF, PPABST,                &
                                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, &
-                                           PTHS, PRVS, PRIS, PRSS,             &
-                                           PCIT, PCIS                          )
+                                           PTHS, PRVS, PRIS, PRSS,                   &
+                                           PCIT, PCIS                                )
 !
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
-!
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
@@ -46,14 +39,13 @@ END SUBROUTINE LIMA_COLD_SLOW_PROCESSES
 END INTERFACE
 END MODULE MODI_LIMA_COLD_SLOW_PROCESSES
 !
-!     ######################################################################
-      SUBROUTINE LIMA_COLD_SLOW_PROCESSES (PTSTEP, KMI, HFMFILE, HLUOUT,       &
-                                           OCLOSE_OUT, PZZ, PRHODJ,            &
-                                           PRHODREF, PEXNREF, PPABST,          &
+!     ################################################################################
+      SUBROUTINE LIMA_COLD_SLOW_PROCESSES (PTSTEP, KMI, PZZ, PRHODJ,                 &
+                                           PRHODREF, PEXNREF, PPABST,                &
                                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, &
-                                           PTHS, PRVS, PRIS, PRSS,             &
-                                           PCIT, PCIS                          )
-!     ######################################################################
+                                           PTHS, PRVS, PRIS, PRSS,                   &
+                                           PCIT, PCIS                                )
+!     ################################################################################
 !
 !!    PURPOSE
 !!    -------
@@ -112,12 +104,6 @@ IMPLICIT NONE
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
-!
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
diff --git a/src/MNH/lima_meyers.f90 b/src/MNH/lima_meyers.f90
index 1751a96eb..de2e06335 100644
--- a/src/MNH/lima_meyers.f90
+++ b/src/MNH/lima_meyers.f90
@@ -3,20 +3,15 @@
 !      #######################
 !
 INTERFACE
-      SUBROUTINE LIMA_MEYERS   (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, &
-                                PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,           &
-                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT,   &
-                                PTHS, PRVS, PRCS, PRIS,                           &
+      SUBROUTINE LIMA_MEYERS   (OHHONI, PTSTEP, KMI,                            &
+                                PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,         &
+                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT, &
+                                PTHS, PRVS, PRCS, PRIS,                         &
                                 PCCS, PCIS, PINS )
 !
 LOGICAL,                  INTENT(IN)    :: OHHONI  ! enable haze freezing
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
@@ -50,13 +45,13 @@ END SUBROUTINE LIMA_MEYERS
 END INTERFACE
 END MODULE MODI_LIMA_MEYERS
 !
-!     ######################################################################
-      SUBROUTINE LIMA_MEYERS   (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, &
-                                PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,           &
-                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT,   &
-                                PTHS, PRVS, PRCS, PRIS,                           &
+!     ###########################################################################
+      SUBROUTINE LIMA_MEYERS   (OHHONI, PTSTEP, KMI,                            &
+                                PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,         &
+                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT, &
+                                PTHS, PRVS, PRCS, PRIS,                         &
                                 PCCS, PCIS, PINS )
-!     ######################################################################
+!     ###########################################################################
 !!
 !!    PURPOSE
 !!    -------
@@ -131,11 +126,6 @@ IMPLICIT NONE
 LOGICAL,                  INTENT(IN)    :: OHHONI  ! enable haze freezing
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
diff --git a/src/MNH/lima_mixed.f90 b/src/MNH/lima_mixed.f90
index e557a1c3f..ea9c1bee5 100644
--- a/src/MNH/lima_mixed.f90
+++ b/src/MNH/lima_mixed.f90
@@ -3,12 +3,12 @@
 !      ######################
 !
 INTERFACE
-      SUBROUTINE LIMA_MIXED (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,           &
-                             HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ, &
-                             PRHODREF, PEXNREF, PPABST, PW_NU,              &
-                             PTHM, PPABSM,                                  &
-                             PTHT, PRT, PSVT,                               &
-                             PTHS, PRS, PSVS                                )
+      SUBROUTINE LIMA_MIXED (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, &
+                             KRR, PZZ, PRHODJ,                    &
+                             PRHODREF, PEXNREF, PPABST, PW_NU,    &
+                             PTHM, PPABSM,                        &
+                             PTHT, PRT, PSVT,                     &
+                             PTHS, PRS, PSVS                      )
 !
 LOGICAL,                  INTENT(IN)    :: OSEDI   ! switch to activate the 
                                                    ! cloud ice sedimentation
@@ -18,11 +18,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITG ! Number of small time step
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
 INTEGER,                  INTENT(IN)    :: KRR     ! Number of moist variables
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
@@ -49,14 +44,14 @@ END SUBROUTINE LIMA_MIXED
 END INTERFACE
 END MODULE MODI_LIMA_MIXED
 !
-!     #######################################################################
-      SUBROUTINE LIMA_MIXED (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,           &
-                             HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ, &
-                             PRHODREF, PEXNREF, PPABST, PW_NU,              &
-                             PTHM, PPABSM,                                  &
-                             PTHT, PRT, PSVT,                               &
-                             PTHS, PRS, PSVS                                )
-!     #######################################################################
+!     #############################################################
+      SUBROUTINE LIMA_MIXED (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, &
+                             KRR, PZZ, PRHODJ,                    &
+                             PRHODREF, PEXNREF, PPABST, PW_NU,    &
+                             PTHM, PPABSM,                        &
+                             PTHT, PRT, PSVT,                     &
+                             PTHS, PRS, PSVS                      )
+!     #############################################################
 !
 !!
 !!    PURPOSE
@@ -129,11 +124,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITG ! Number of small time step
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
 INTEGER,                  INTENT(IN)    :: KRR     ! Number of moist variables
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
diff --git a/src/MNH/lima_phillips.f90 b/src/MNH/lima_phillips.f90
index f0674dc86..ce5cebc46 100644
--- a/src/MNH/lima_phillips.f90
+++ b/src/MNH/lima_phillips.f90
@@ -3,21 +3,16 @@
 !      #########################
 !
 INTERFACE
-      SUBROUTINE LIMA_PHILLIPS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, &
-                                PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,           &
-                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,         &
-                                PTHS, PRVS, PRCS, PRIS,                           &
-                                PCIT, PCCS, PCIS,                                 &
+      SUBROUTINE LIMA_PHILLIPS (OHHONI, PTSTEP, KMI,                      &
+                                PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,   &
+                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, &
+                                PTHS, PRVS, PRCS, PRIS,                   &
+                                PCIT, PCCS, PCIS,                         &
                                 PNAS, PIFS, PINS, PNIS   )
 !
 LOGICAL,                  INTENT(IN)    :: OHHONI  ! enable haze freezing
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
@@ -58,14 +53,14 @@ END SUBROUTINE LIMA_PHILLIPS
 END INTERFACE
 END MODULE MODI_LIMA_PHILLIPS
 !
-!     ######################################################################
-      SUBROUTINE LIMA_PHILLIPS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, &
-                                PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,           &
-                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT,         &
-                                PTHS, PRVS, PRCS, PRIS,                           &
-                                PCIT, PCCS, PCIS,                                 &
+!     #####################################################################
+      SUBROUTINE LIMA_PHILLIPS (OHHONI, PTSTEP, KMI,                      &
+                                PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST,   &
+                                PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, &
+                                PTHS, PRVS, PRCS, PRIS,                   &
+                                PCIT, PCCS, PCIS,                         &
                                 PNAS, PIFS, PINS, PNIS   )
-!     ######################################################################
+!     #####################################################################
 !!
 !!    PURPOSE
 !!    -------
@@ -146,11 +141,6 @@ IMPLICIT NONE
 LOGICAL,                  INTENT(IN)    :: OHHONI  ! enable haze freezing
 REAL,                     INTENT(IN)    :: PTSTEP  ! Time step          
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT  ! Output-listing name for
-                                                   ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                   ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry density * Jacobian
diff --git a/src/MNH/lima_warm.f90 b/src/MNH/lima_warm.f90
index ef46126cc..6c3562aea 100644
--- a/src/MNH/lima_warm.f90
+++ b/src/MNH/lima_warm.f90
@@ -3,13 +3,13 @@
 !      #####################
 !
 INTERFACE
-      SUBROUTINE LIMA_WARM (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,   &
-                            HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,&
-                            PRHODREF, PEXNREF, PW_NU, PPABSM, PPABST,     &
-                            PTHM, PRCM,                                   &
-                            PTHT, PRT, PSVT,                              &
-                            PTHS, PRS, PSVS,                              &
-                            PINPRC, PINPRR, PINPRR3D, PEVAP3D      )
+      SUBROUTINE LIMA_WARM (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, &
+                            KRR, PZZ, PRHODJ,                           &
+                            PRHODREF, PEXNREF, PW_NU, PPABSM, PPABST,   &
+                            PTHM, PRCM,                                 &
+                            PTHT, PRT, PSVT,                            &
+                            PTHS, PRS, PSVS,                            &
+                            PINPRC, PINPRR, PINPRR3D, PEVAP3D           )
 !
 LOGICAL,                  INTENT(IN)    :: OACTIT     ! Switch to activate the
                                                       ! activation by radiative
@@ -23,11 +23,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITR    ! Number of small time ste
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the tput FM fileoutp
 INTEGER,                  INTENT(IN)    :: KRR        ! Number of moist variables
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ        ! Height (z)
@@ -62,15 +57,15 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PEVAP3D    ! Rain evap profile
 END SUBROUTINE LIMA_WARM
 END INTERFACE
 END MODULE MODI_LIMA_WARM
-!     #####################################################################
-      SUBROUTINE LIMA_WARM (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,   &
-                            HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,&
-                            PRHODREF, PEXNREF, PW_NU, PPABSM, PPABST,     &
-                            PTHM, PRCM,                                   &
-                            PTHT, PRT, PSVT,                              &
-                            PTHS, PRS, PSVS,                              &
-                            PINPRC, PINPRR, PINPRR3D, PEVAP3D             )
-!     #####################################################################
+!     ###################################################################
+      SUBROUTINE LIMA_WARM (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, &
+                            KRR, PZZ, PRHODJ,                           &
+                            PRHODREF, PEXNREF, PW_NU, PPABSM, PPABST,   &
+                            PTHM, PRCM,                                 &
+                            PTHT, PRT, PSVT,                            &
+                            PTHS, PRS, PSVS,                            &
+                            PINPRC, PINPRR, PINPRR3D, PEVAP3D           )
+!     ###################################################################
 !
 !!
 !!    PURPOSE
@@ -160,11 +155,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITR    ! Number of small time ste
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the tput FM fileoutp
 INTEGER,                  INTENT(IN)    :: KRR        ! Number of moist variables
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ        ! Height (z)
@@ -304,7 +294,6 @@ ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD)
 !
 !
 CALL LIMA_WARM_SEDIM (OSEDC, KSPLITR, PTSTEP, KMI,  &
-                      HFMFILE, HLUOUT, OCLOSE_OUT,  &
                       PZZ, PRHODREF, PPABST, ZT,    &
                       ZWLBDC,                       &
                       PRCT, PRRT, PCCT, PCRT,       &
@@ -331,10 +320,10 @@ END IF
 !
 IF (LACTI) THEN
 !
-   CALL LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,&
-                        PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,       &
-                        PRCM, PRVT, PRCT, PRRT,                          &
-                        PTHS, PRVS, PRCS, PCCS, PNFS, PNAS               )
+   CALL LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI,                       &
+                        PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, &
+                        PRCM, PRVT, PRCT, PRRT,                    &
+                        PTHS, PRVS, PRCS, PCCS, PNFS, PNAS         )
 !
    IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HENU_BU_RTH')
    IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HENU_BU_RRV')
@@ -357,7 +346,7 @@ END IF ! LACTI
 !              ---------------------
 !
 !
-   CALL LIMA_WARM_COAL (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,   &
+   CALL LIMA_WARM_COAL (PTSTEP, KMI,                                &
                         PRHODREF, ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, &
                         PRCT, PRRT, PCCT, PCRT,                     &
                         PRCS, PRRS, PCCS, PCRS,                     &
@@ -372,12 +361,12 @@ END IF ! LACTI
 !
 IF (ORAIN) THEN
 !
-   CALL LIMA_WARM_EVAP (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,   &
-                        PRHODREF, PEXNREF, PPABST, ZT,              &
-                        ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR,           &
-                        PRVT, PRCT, PRRT, PCRT,                     &
-                        PRVS, PRCS, PRRS, PCCS, PCRS, PTHS,         &
-                        PEVAP3D                                     )
+   CALL LIMA_WARM_EVAP (PTSTEP, KMI,                        &
+                        PRHODREF, PEXNREF, PPABST, ZT,      &
+                        ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR,   &
+                        PRVT, PRCT, PRRT, PCRT,             &
+                        PRVS, PRCS, PRRS, PCCS, PCRS, PTHS, &
+                        PEVAP3D                             )
 !
    IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6 ,'REVA_BU_RRV')
    IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'REVA_BU_RRC')
diff --git a/src/MNH/lima_warm_coal.f90 b/src/MNH/lima_warm_coal.f90
index db696298c..727062763 100644
--- a/src/MNH/lima_warm_coal.f90
+++ b/src/MNH/lima_warm_coal.f90
@@ -3,7 +3,7 @@
 !      ##########################
 !
 INTERFACE
-      SUBROUTINE LIMA_WARM_COAL (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,   &
+      SUBROUTINE LIMA_WARM_COAL (PTSTEP, KMI,                                &
                                  PRHODREF, ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, &
                                  PRCT, PRRT, PCCT, PCRT,                     &
                                  PRCS, PRRS, PCCS, PCRS,                     &
@@ -12,11 +12,6 @@ INTERFACE
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 !
@@ -41,7 +36,7 @@ REAL,    DIMENSION(:,:,:), INTENT(IN) :: PRHODJ
 END INTERFACE
 END MODULE MODI_LIMA_WARM_COAL
 !     #############################################################################
-      SUBROUTINE LIMA_WARM_COAL (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,   &
+      SUBROUTINE LIMA_WARM_COAL (PTSTEP, KMI,                                &
                                  PRHODREF, ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, &
                                  PRCT, PRRT, PCCT, PCRT,                     &
                                  PRCS, PRRS, PCCS, PCRS,                     &
@@ -118,11 +113,6 @@ IMPLICIT NONE
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 !
diff --git a/src/MNH/lima_warm_evap.f90 b/src/MNH/lima_warm_evap.f90
index 09a90d093..a4881ffb3 100644
--- a/src/MNH/lima_warm_evap.f90
+++ b/src/MNH/lima_warm_evap.f90
@@ -3,21 +3,16 @@
 !      ##########################
 !
 INTERFACE
-      SUBROUTINE LIMA_WARM_EVAP (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,   &
-                                 PRHODREF, PEXNREF, PPABST, ZT,              &
-                                 ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR,           &
-                                 PRVT, PRCT, PRRT, PCRT,                     &
-                                 PRVS, PRCS, PRRS, PCCS, PCRS, PTHS,         &
+      SUBROUTINE LIMA_WARM_EVAP (PTSTEP, KMI,                        &
+                                 PRHODREF, PEXNREF, PPABST, ZT,      &
+                                 ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR,   &
+                                 PRVT, PRCT, PRRT, PCRT,             &
+                                 PRVS, PRCS, PRRS, PCCS, PCRS, PTHS, &
                                  PEVAP3D)
 !
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
@@ -47,14 +42,14 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PEVAP3D    ! Rain evap profile
       END SUBROUTINE LIMA_WARM_EVAP
 END INTERFACE
 END MODULE MODI_LIMA_WARM_EVAP
-!     #############################################################################
-      SUBROUTINE LIMA_WARM_EVAP (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,   &
-                                 PRHODREF, PEXNREF, PPABST, ZT,              &
-                                 ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR,           &
-                                 PRVT, PRCT, PRRT, PCRT,                     &
-                                 PRVS, PRCS, PRRS, PCCS, PCRS, PTHS,         &
+!     ################################################################
+      SUBROUTINE LIMA_WARM_EVAP (PTSTEP, KMI,                        &
+                                 PRHODREF, PEXNREF, PPABST, ZT,      &
+                                 ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR,   &
+                                 PRVT, PRCT, PRRT, PCRT,             &
+                                 PRVS, PRCS, PRRS, PCCS, PCRS, PTHS, &
                                  PEVAP3D)
-!     #############################################################################
+!     ################################################################
 !
 !!
 !!    PURPOSE
@@ -93,11 +88,6 @@ IMPLICIT NONE
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90
index 165ac242d..7415ceda0 100644
--- a/src/MNH/lima_warm_nucl.f90
+++ b/src/MNH/lima_warm_nucl.f90
@@ -3,10 +3,10 @@
 !      ##########################
 !
 INTERFACE
-      SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,&
-                                 PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,       &
-                                 PRCM, PRVT, PRCT, PRRT,                          &
-                                 PTHS, PRVS, PRCS, PCCS, PNFS, PNAS               )
+      SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI,                       &
+                                 PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, &
+                                 PRCM, PRVT, PRCT, PRRT,                    &
+                                 PTHS, PRVS, PRCS, PCCS, PNFS, PNAS         )
 !
 LOGICAL,                  INTENT(IN)    :: OACTIT     ! Switch to activate the
                                                       ! activation by radiative
@@ -14,11 +14,6 @@ LOGICAL,                  INTENT(IN)    :: OACTIT     ! Switch to activate the
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the output FM file
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
@@ -46,12 +41,12 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNAS       ! CCN C. activated source
 END SUBROUTINE LIMA_WARM_NUCL
 END INTERFACE
 END MODULE MODI_LIMA_WARM_NUCL
-!     #############################################################################
-      SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,&
-                                 PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,       &
-                                 PRCM, PRVT, PRCT, PRRT,                          &
-                                 PTHS, PRVS, PRCS, PCCS, PNFS, PNAS               )
-!     #############################################################################
+!     #######################################################################
+      SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI,                       &
+                                 PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, &
+                                 PRCM, PRVT, PRCT, PRRT,                    &
+                                 PTHS, PRVS, PRCS, PCCS, PNFS, PNAS         )
+!     #######################################################################
 !
 !!
 !!    PURPOSE
@@ -119,11 +114,6 @@ LOGICAL,                  INTENT(IN)    :: OACTIT     ! Switch to activate the
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the output FM file
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
diff --git a/src/MNH/lima_warm_sedim.f90 b/src/MNH/lima_warm_sedim.f90
index fc67bd955..33c399c81 100644
--- a/src/MNH/lima_warm_sedim.f90
+++ b/src/MNH/lima_warm_sedim.f90
@@ -4,7 +4,6 @@
 !
 INTERFACE
       SUBROUTINE LIMA_WARM_SEDIM (OSEDC, KSPLITR, PTSTEP, KMI,  &
-                                  HFMFILE, HLUOUT, OCLOSE_OUT,  &
                                   PZZ, PRHODREF, PPABST, ZT,    &
                                   ZWLBDC,                       &
                                   PRCT, PRRT, PCCT, PCRT,       &
@@ -18,11 +17,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITR    ! Number of small time ste
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ        ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
@@ -50,7 +44,6 @@ END INTERFACE
 END MODULE MODI_LIMA_WARM_SEDIM
 !     #####################################################################
       SUBROUTINE LIMA_WARM_SEDIM (OSEDC, KSPLITR, PTSTEP, KMI,  &
-                                  HFMFILE, HLUOUT, OCLOSE_OUT,  &
                                   PZZ, PRHODREF, PPABST, ZT,    &
                                   ZWLBDC,                       &
                                   PRCT, PRRT, PCCT, PCRT,       &
@@ -118,11 +111,6 @@ INTEGER,                  INTENT(IN)    :: KSPLITR    ! Number of small time ste
 REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
                                                       ! (single if cold start)
 INTEGER,                  INTENT(IN)    :: KMI        ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT     ! Output-listing name for
-                                                      ! model n
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the tput FM fileoutp
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ        ! Height (z)
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 23a9bf6d5..67536d145 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -280,7 +280,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: LIOCDF4,LLFIOUT,TFILEDATA,TFILE_SURFEX
+USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,TFILEDATA,TFILE_SURFEX,TFILE_DUMMY
 !
 USE MODD_SUB_MODEL_n
 USE MODD_GET_n
@@ -420,9 +420,7 @@ INTEGER :: ILUOUT      ! Logical unit number for the output listing
 INTEGER :: IIU,IJU,IKU ! array size in first, second and third dimensions
 INTEGER :: IIB,IIE,IJB,IJE,IKB,IKE ! index values for the physical subdomain
 INTEGER :: JSV,JRR     ! Loop index for scalar and moist variables
-CHARACTER (LEN=28) :: YFMFILE   ! name of the OUTPUT FM-file
 CHARACTER (LEN=28) :: YDADFILE  ! name of the corresponding DAD model OUTPUT FM-file
-CHARACTER (LEN=32) :: YDESFM    ! name of the desfm part of this FM-file
 INTEGER  :: INBVAR              ! number of HALO2_lls to allocate
 INTEGER  :: IRESP               ! return code in FM routines
 INTEGER  :: IINFO_ll            ! return code of parallel routine
@@ -528,6 +526,9 @@ TYPE(TFILEDATA),POINTER :: TZBAKFILE, TZOUTFILE
 ! TYPE(TFILEDATA),SAVE    :: TZDIACFILE
 !-------------------------------------------------------------------------------
 !
+TZBAKFILE=> NULL()
+TZOUTFILE=> NULL()
+!
 !*       0.    MICROPHYSICAL SCHEME
 !              ------------------- 
 SELECT CASE(CCLOUD)
@@ -603,8 +604,7 @@ IF (KTCOUNT == 1) THEN
 !
   CALL IO_FILE_OPEN_ll(TDIAFILE,CLUOUT,IRESP)
 !
-  YDESFM=TRIM(TDIAFILE%CNAME)//'.des'
-  CALL WRITE_DESFM_n(IMI,YDESFM,CLUOUT)
+  CALL WRITE_DESFM_n(IMI,TRIM(TDIAFILE%CNAME)//'.des',CLUOUT)
   CALL WRITE_LFIFMN_FORDIACHRO_n(TDIAFILE)
 !
 !*       1.4   Initialization of the list of fields for the halo updates
@@ -902,25 +902,21 @@ IF (CSURF=='EXTE') CALL GOTO_SURFEX(IMI)
 !
 ZTIME1 = ZTIME2
 !
-YFMFILE='                            '
 IF (IBAK < NBAK_NUMB ) THEN
   IF (KTCOUNT == TBACKUPN(IBAK+1)%NSTEP) THEN
     IBAK=IBAK+1
     GCLOSE_OUT=.TRUE.
     !
     TZBAKFILE => TBACKUPN(IBAK)%TFILE
-    YFMFILE  = TZBAKFILE%CNAME
     YDADFILE = TBACKUPN(IBAK)%CDADFILENAME
     IVERB    = TZBAKFILE%NLFIVERB
     !
     CALL IO_FILE_OPEN_ll(TZBAKFILE,CLUOUT,IRESP)
     !
-    YDESFM=ADJUSTL(ADJUSTR(YFMFILE)//'.des')
-    !    
-    CALL WRITE_DESFM_n(IMI,YDESFM,CLUOUT)
+    CALL WRITE_DESFM_n(IMI,TRIM(TZBAKFILE%CNAME)//'.des',CLUOUT)
     CALL IO_WRITE_HEADER_NC4(TBACKUPN(IBAK)%TFILE,CLUOUT)
     CALL WRITE_LFIFM_n(TBACKUPN(IBAK)%TFILE,YDADFILE)
-    COUTFMFILE = YFMFILE
+    COUTFMFILE = TZBAKFILE%CNAME
     CALL MNHWRITE_ZS_DUMMY_n(TZBAKFILE)
     IF (CSURF=='EXTE') THEN
       TFILE_SURFEX => TZBAKFILE
@@ -934,7 +930,7 @@ IF (IBAK < NBAK_NUMB ) THEN
       CALL INI_LG(XXHAT,XYHAT,XZZ,XSVT,XLBXSVM,XLBYSVM)
       IF (IVERB>=5) THEN
         WRITE(UNIT=ILUOUT,FMT=*) '************************************'
-        WRITE(UNIT=ILUOUT,FMT=*) '*** Lagrangian variables refreshed after ',TRIM(YFMFILE),' backup'
+        WRITE(UNIT=ILUOUT,FMT=*) '*** Lagrangian variables refreshed after ',TRIM(TZBAKFILE%CNAME),' backup'
         WRITE(UNIT=ILUOUT,FMT=*) '************************************'
       END IF
     END IF
@@ -943,7 +939,13 @@ IF (IBAK < NBAK_NUMB ) THEN
        CALL INI_MEAN_FIELD
     END IF
 !
+  ELSE
+    !Necessary to have a 'valid' CNAME when calling some subroutines
+    TZBAKFILE => TFILE_DUMMY
   END IF
+ELSE
+  !Necessary to have a 'valid' CNAME when calling some subroutines
+  TZBAKFILE => TFILE_DUMMY
 END IF
 !
 IF (IOUT < NOUT_NUMB ) THEN
@@ -1297,10 +1299,10 @@ XT_RELAX = XT_RELAX + ZTIME2 - ZTIME1 &
 !
 ZTIME1 = ZTIME2
 !
-!!Was called if MNH_NCWRIT: CALL WRITE_PHYS_PARAM(YFMFILE)
-CALL PHYS_PARAM_n(KTCOUNT,YFMFILE, GCLOSE_OUT,                        &
-                  XT_RAD,XT_SHADOWS,XT_DCONV,XT_GROUND,XT_MAFL,       &
-                  XT_DRAG,XT_TURB,XT_TRACER,                          &
+!!Was called if MNH_NCWRIT: CALL WRITE_PHYS_PARAM(TZBAKFILE%CNAME)
+CALL PHYS_PARAM_n(KTCOUNT,TZBAKFILE, GCLOSE_OUT,                &
+                  XT_RAD,XT_SHADOWS,XT_DCONV,XT_GROUND,XT_MAFL, &
+                  XT_DRAG,XT_TURB,XT_TRACER,                    &
                   XT_CHEM,ZTIME,GMASKkids)
 !
 IF (CDCONV/='NONE') THEN
@@ -1444,14 +1446,14 @@ XTIME_LES_BU_PROCESS = 0.
 !
 CALL MPPDB_CHECK3DM("before ADVEC_METSV:XU/V/W/TH/TKE/T,XRHODJ",PRECISION,&
                    &  XUT, XVT, XWT, XTHT, XTKET,XRHODJ)
- CALL ADVECTION_METSV ( CLUOUT, YFMFILE, GCLOSE_OUT,CUVW_ADV_SCHEME, &
-                 CMET_ADV_SCHEME, CSV_ADV_SCHEME, CCLOUD, NSPLIT,    &
-                 LSPLIT_CFL, XSPLIT_CFL, LCFL_WRIT,                  &
-                 CLBCX, CLBCY, NRR, NSV, TDTCUR, XTSTEP,             &
-                 XUT, XVT, XWT, XTHT, XRT, XTKET, XSVT, XPABST,      &
-                 XTHVREF, XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY,      &
-                 XRTHS, XRRS, XRTKES, XRSVS,                         &
-                 XRTHS_CLD, XRRS_CLD, XRSVS_CLD, XRTKEMS             )
+ CALL ADVECTION_METSV ( CLUOUT, TZBAKFILE, GCLOSE_OUT,CUVW_ADV_SCHEME, &
+                 CMET_ADV_SCHEME, CSV_ADV_SCHEME, CCLOUD, NSPLIT,      &
+                 LSPLIT_CFL, XSPLIT_CFL, LCFL_WRIT,                    &
+                 CLBCX, CLBCY, NRR, NSV, TDTCUR, XTSTEP,               &
+                 XUT, XVT, XWT, XTHT, XRT, XTKET, XSVT, XPABST,        &
+                 XTHVREF, XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY,        &
+                 XRTHS, XRRS, XRTKES, XRSVS,                           &
+                 XRTHS_CLD, XRRS_CLD, XRSVS_CLD, XRTKEMS               )
 CALL MPPDB_CHECK3DM("after  ADVEC_METSV:XU/V/W/TH/TKE/T,XRHODJ ",PRECISION,&
                    &  XUT, XVT, XWT, XTHT, XTKET,XRHODJ)
 !
@@ -1533,7 +1535,7 @@ XT_ADVUVW = XT_ADVUVW + ZTIME2 - ZTIME1 - XTIME_LES_BU_PROCESS - XTIME_BU_PROCES
 !-------------------------------------------------------------------------------
 !
 IF (NMODEL_CLOUD==IMI .AND. CTURBLEN_CLOUD/='NONE') THEN
-  CALL TURB_CLOUD_INDEX(XTSTEP,YFMFILE,CLUOUT,                    &
+  CALL TURB_CLOUD_INDEX(XTSTEP,TZBAKFILE,CLUOUT,                  &
                         LTURB_DIAG,GCLOSE_OUT,NRRI,               &
                         XRRS,XRT,XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY, &
                         XCEI )
@@ -1644,7 +1646,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
     CALL MNHGET_SURF_PARAM_n (PSEA=ZSEA(:,:),PTOWN=ZTOWN(:,:))
     CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR,    &
                           NSPLITG, IMI, KTCOUNT,                               &
-                          CLBCX,CLBCY,YFMFILE, CLUOUT, CRAD, CTURBDIM,         &
+                          CLBCX,CLBCY,TZBAKFILE, CLUOUT, CRAD, CTURBDIM,       &
                           GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,XTSTEP,    &
                           XZZ, XRHODJ, XRHODREF, XEXNREF,                      &
                           XPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
@@ -1661,7 +1663,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
   ELSE
     CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR,    &
                           NSPLITG, IMI, KTCOUNT,                               &
-                          CLBCX,CLBCY,YFMFILE, CLUOUT, CRAD, CTURBDIM,         &
+                          CLBCX,CLBCY,TZBAKFILE, CLUOUT, CRAD, CTURBDIM,       &
                           GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,           &
                           XTSTEP,XZZ, XRHODJ, XRHODREF, XEXNREF,               &
                           XPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90
index a646154c3..51f585ce3 100644
--- a/src/MNH/paspol.f90
+++ b/src/MNH/paspol.f90
@@ -9,19 +9,20 @@
 INTERFACE
 !
       SUBROUTINE PASPOL (PTSTEP, PSFSV, KLUOUT, KVERB, OCLOSE_OUT, &
-                         HFMFILE, HLUOUT)
+                         TPFILE, HLUOUT)
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 IMPLICIT NONE
-REAL,  INTENT(IN)            ::  PTSTEP    ! Double timestep except 
-                                  ! for the first time step (single one)
-REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PSFSV ! surface flux of scalars
-INTEGER, INTENT(IN)          :: KLUOUT     ! unit for output listing count
-INTEGER, INTENT(IN)          :: KVERB      ! verbosity level
-LOGICAL, INTENT(IN)          :: OCLOSE_OUT! conditional closure of the 
-                                               ! OUTPUT FM-file
-CHARACTER(LEN=*), INTENT(IN) :: HFMFILE   ! Name of the output
-                                                  ! FM-file
-CHARACTER(LEN=*), INTENT(IN) :: HLUOUT    ! Output-listing name for
-                                                  ! model n
+!
+REAL,                   INTENT(IN)    :: PTSTEP     ! Double timestep except 
+                                                    ! for the first time step (single one)
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSFSV      ! surface flux of scalars
+INTEGER,                INTENT(IN)    :: KLUOUT     ! unit for output listing count
+INTEGER,                INTENT(IN)    :: KVERB      ! verbosity level
+LOGICAL,                INTENT(IN)    :: OCLOSE_OUT ! conditional closure of the OUTPUT FM-file
+TYPE(TFILEDATA),        INTENT(IN)    :: TPFILE     ! Output file
+CHARACTER(LEN=*),       INTENT(IN)    :: HLUOUT     ! Output-listing name for model n
 !
 END SUBROUTINE PASPOL
 !
@@ -30,7 +31,7 @@ END INTERFACE
 END MODULE MODI_PASPOL
 !     ######spl
       SUBROUTINE PASPOL (PTSTEP, PSFSV, KLUOUT, KVERB, OCLOSE_OUT, &
-                         HFMFILE, HLUOUT)
+                         TPFILE, HLUOUT)
 !     ############################################################
 !
 !
@@ -67,6 +68,7 @@ END MODULE MODI_PASPOL
 USE MODD_PARAMETERS
 USE MODD_NSV
 USE MODD_CST
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODE_GRIDPROJ
 USE MODD_PASPOL
 USE MODD_CTURB
@@ -98,17 +100,14 @@ IMPLICIT NONE
 !
 !*      0.1    declarations of arguments
 !
-REAL,  INTENT(IN)            ::  PTSTEP    ! Double timestep except 
-                                  ! for the first time step (single one)
-REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PSFSV ! surface flux of scalars
-INTEGER, INTENT(IN)          :: KLUOUT     ! unit for output listing count
-INTEGER, INTENT(IN)          :: KVERB      ! verbosity level
-LOGICAL, INTENT(IN)          :: OCLOSE_OUT! conditional closure of the 
-CHARACTER(LEN=*), INTENT(IN) :: HFMFILE   ! Name of the output
-                                                  ! FM-file
-CHARACTER(LEN=*), INTENT(IN) :: HLUOUT    ! Output-listing name for
-                                                  ! model n
-!
+REAL,                   INTENT(IN)    :: PTSTEP     ! Double timestep except 
+                                                    ! for the first time step (single one)
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSFSV      ! surface flux of scalars
+INTEGER,                INTENT(IN)    :: KLUOUT     ! unit for output listing count
+INTEGER,                INTENT(IN)    :: KVERB      ! verbosity level
+LOGICAL,                INTENT(IN)    :: OCLOSE_OUT ! conditional closure of the OUTPUT FM-file
+TYPE(TFILEDATA),        INTENT(IN)    :: TPFILE     ! Output file
+CHARACTER(LEN=*),       INTENT(IN)    :: HLUOUT     ! Output-listing name for model n
 !
 !*      0.2    declarations of local variables
 !
@@ -146,6 +145,7 @@ REAL,  DIMENSION(:,:,:), ALLOCATABLE :: ZTEMPO, ZSVT ! Work array
 INTEGER           :: IGRID     ! IGRID : grid indicator
 INTEGER           :: ILENCH    ! ILENCH : length of comment string
 !
+CHARACTER(LEN=28) :: YFMFILE   ! Name of FM-file to write
 CHARACTER(LEN=16) :: YRECFM    ! Name of the article to be written
 CHARACTER(LEN=100):: YCOMMENT  ! Comment string
 CHARACTER (LEN=2) :: YDIR      ! Type of the data field
@@ -161,6 +161,8 @@ INTEGER           :: IRESP     ! IRESP  : return-code if a problem appears
 !*	0. Initialisation
 !
 !
+YFMFILE = TPFILE%CNAME
+!
 CALL GET_DIM_EXT_ll('B',IIU,IJU)
 CALL GET_PHYSICAL_ll (IIB,IJB,IIE,IJE)
 !
@@ -594,7 +596,7 @@ IF (OCLOSE_OUT) THEN
       WRITE(YRECFM,'(A3,I3.3)')'ATC',JSV+NSV_PPBEG-1
       WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','ATC',JSV+NSV_PPBEG-1,' (1/M3) '
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZTEMPO,IGRID,ILENCH,    &
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZTEMPO,IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
    END DO
 ENDIF
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index becf21fdf..a243c4440 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -9,14 +9,15 @@
 !
 INTERFACE
 !
-      SUBROUTINE PHYS_PARAM_n(KTCOUNT,HFMFILE,OCLOSE_OUT,                                  &
+      SUBROUTINE PHYS_PARAM_n(KTCOUNT,TPFILE,OCLOSE_OUT,                                   &
                               PRAD,PSHADOWS,PKAFR,PGROUND,PMAFL,PDRAG,PTURB,PTRACER,PCHEM, &
                               PTIME_BU, OMASKkids                                          )           
 
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 INTEGER,           INTENT(IN)     :: KTCOUNT   ! temporal iteration count
-CHARACTER (LEN=28),INTENT(IN)     :: HFMFILE   ! name of the synchronous 
-                                               ! OUTPUT FM-file
+TYPE(TFILEDATA),   INTENT(IN)     :: TPFILE    ! Synchronous output file
 LOGICAL,           INTENT(IN)     :: OCLOSE_OUT! conditional closure of the 
                                                ! OUTPUT FM-file
 ! advection schemes                   
@@ -34,7 +35,7 @@ END INTERFACE
 END MODULE MODI_PHYS_PARAM_n
 !
 !     ######################################################################
-      SUBROUTINE PHYS_PARAM_n(KTCOUNT,HFMFILE,OCLOSE_OUT,                                  &
+      SUBROUTINE PHYS_PARAM_n(KTCOUNT,TPFILE,OCLOSE_OUT,                                   &
                               PRAD,PSHADOWS,PKAFR,PGROUND,PMAFL,PDRAG,PTURB,PTRACER,PCHEM, &
                               PTIME_BU, OMASKkids                                          )           
 !     ######################################################################
@@ -237,6 +238,7 @@ USE MODD_CST
 USE MODD_DYN
 USE MODD_CONF
 USE MODD_FRC
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_GRID
 USE MODD_NSV
@@ -334,8 +336,7 @@ IMPLICIT NONE
 !*      0.1    declarations of arguments
 !
 INTEGER,           INTENT(IN)     :: KTCOUNT   ! temporal iteration count
-CHARACTER (LEN=28),INTENT(IN)     :: HFMFILE   ! name of the synchronous 
-                                               ! OUTPUT FM-file
+TYPE(TFILEDATA),   INTENT(IN)     :: TPFILE    ! Synchronous output file
 LOGICAL,           INTENT(IN)     :: OCLOSE_OUT! conditional closure of the 
                                                ! OUTPUT FM-file
 ! advection schemes                   
@@ -720,7 +721,7 @@ CALL SUNPOS_n   ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL )
       XLWD(:,:,:)=0.0
       XDTHRADSW(:,:,:)=0.0
       XDTHRADLW(:,:,:)=0.0
-      CALL RADIATIONS   ( OCLOSE_OUT, HFMFILE, CLUOUT,                             &
+      CALL RADIATIONS   ( OCLOSE_OUT, TPFILE, CLUOUT,                               &
                LCLEAR_SKY,GCLOUD_ONLY, NCLEARCOL_TM1,CEFRADL, CEFRADI,COPWSW,COPISW,&
                COPWLW,COPILW, XFUDG,                                                &
                NDLON, NFLEV, NRAD_DIAG, NFLUX, NRAD, NAER,NSWB, NSTATM, NRAD_COLNBR,&
@@ -1215,7 +1216,7 @@ END IF
 !
 ZTIME1 = ZTIME2
 !
-IF (LPASPOL) CALL PASPOL(XTSTEP, ZSFSV, ILUOUT, NVERB, OCLOSE_OUT, HFMFILE, CLUOUT )
+IF (LPASPOL) CALL PASPOL(XTSTEP, ZSFSV, ILUOUT, NVERB, OCLOSE_OUT, TPFILE, CLUOUT )
 !
 !
 !*        4b.  PASSIVE POLLUTANTS FOR MASS-FLUX SCHEME DIAGNOSTICS
@@ -1350,7 +1351,7 @@ END IF
    CALL TURB(1,IKU,1,IMI,NRR, NRRL, NRRI, CLBCX, CLBCY, 1,NMODEL_CLOUD,     &
       OCLOSE_OUT,LTURB_FLX,LTURB_DIAG,LSUBG_COND,LRMC01,                    &
       CTURBDIM,CTURBLEN,CTOM,CTURBLEN_CLOUD,CCLOUD,XIMPL,                   &
-      XTSTEP,HFMFILE,CLUOUT,                                                &
+      XTSTEP,TPFILE,CLUOUT,                                                 &
       XDXX,XDYY,XDZZ,XDZX,XDZY,XZZ,                                         &
       XDIRCOSXW,XDIRCOSYW,XDIRCOSZW,XCOSSLOPE,XSINSLOPE,                    &
       XRHODJ,XTHVREF,XRHODREF,                                              &
@@ -1400,11 +1401,11 @@ IF (CSCONV == 'EDKF') THEN
      CALL MPPDB_CHECK3D(ZEXN,"physparam.7::ZEXN",PRECISION)
  !    
      CALL SHALLOW_MF_PACK(NRR,NRRL,NRRI, CMF_UPDRAFT, CMF_CLOUD, LMIXUV,  &
-                   OCLOSE_OUT,LMF_FLX,HFMFILE,CLUOUT,ZTIME_LES_MF,        &
+                   OCLOSE_OUT,LMF_FLX,TPFILE,CLUOUT,ZTIME_LES_MF,         &
                    XIMPL_MF, XTSTEP,                                      &
                    XDZZ, XZZ,                                             &
                    XRHODJ, XRHODREF, XPABST, ZEXN, ZSFTH, ZSFRV,          &
-                   XTHT,XRT,XUT,XVT,XWT,XTKET,XSVT,                           &
+                   XTHT,XRT,XUT,XVT,XWT,XTKET,XSVT,                       &
                    XRTHS,XRRS,XRUS,XRVS,XRSVS,                            &
                    ZSIGMF,XRC_MF, XRI_MF, XCF_MF, XWTHVMF)
 !
diff --git a/src/MNH/prandtl.f90 b/src/MNH/prandtl.f90
index 9fedcde5c..d7f5d9235 100644
--- a/src/MNH/prandtl.f90
+++ b/src/MNH/prandtl.f90
@@ -16,7 +16,7 @@ INTERFACE
 !
       SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_DIAG,&
                          HTURBDIM,                             &
-                         HFMFILE,HLUOUT,                       &
+                         TPFILE,HLUOUT,                        &
                          PDXX,PDYY,PDZZ,PDZX,PDZY,             &
                          PTHVREF,PLOCPEXNM,PATHETA,PAMOIST,    &
                          PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, &
@@ -27,6 +27,8 @@ INTERFACE
                          PETHETA, PEMOIST                      )
 !
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
 INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
 INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
@@ -38,8 +40,7 @@ LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
 LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
                                  ! diagnostic fields in the syncronous FM-file
 CHARACTER*4           , INTENT(IN)   ::  HTURBDIM     ! Kind of turbulence param.
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
@@ -84,9 +85,9 @@ END MODULE MODI_PRANDTL
 !
 !
 !     ###########################################################
-      SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_DIAG,       &
+      SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_DIAG,&
                          HTURBDIM,                             &
-                         HFMFILE,HLUOUT,                       &
+                         TPFILE,HLUOUT,                        &
                          PDXX,PDYY,PDZZ,PDZX,PDZY,             &
                          PTHVREF,PLOCPEXNM,PATHETA,PAMOIST,    &
                          PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, &
@@ -201,6 +202,7 @@ END MODULE MODI_PRANDTL
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 !
 USE MODI_GRADIENT_M
@@ -226,8 +228,7 @@ LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
 LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
                                  ! diagnostic fields in the syncronous FM-file
 CHARACTER*4           , INTENT(IN)   ::  HTURBDIM     ! Kind of turbulence param.
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
@@ -276,6 +277,7 @@ INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: ILENG        ! Length of the data field in LFIFM file
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 INTEGER::  ISV                      ! number of scalar variables       
@@ -285,6 +287,7 @@ INTEGER :: JLOOP
 REAL    :: ZMINVAL
 ! ---------------------------------------------------------------------------
 !
+YFMFILE = TPFILE%CNAME
 !
 !*      1.  DEFAULT VALUES,  1D REDELSPERGER NUMBERS 
 !           ----------------------------------------
@@ -528,35 +531,35 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_RED_TH1 (0)'
   IGRID   = 4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PREDTH1,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PREDTH1,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   ! stores the RED_R1
   YRECFM  ='RED_R1'
   YCOMMENT='X_Y_Z_RED_R1 (0)'
   IGRID   = 4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PREDR1,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PREDR1,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   ! stores the RED2_TH3
   YRECFM  ='RED2_TH3'
   YCOMMENT='X_Y_Z_RED2_TH3 (0)'
   IGRID   = 4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRED2TH3,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PRED2TH3,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   ! stores the RED2_R3
   YRECFM  ='RED2_R3'
   YCOMMENT='X_Y_Z_RED2_R3 (0)'
   IGRID   = 4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRED2R3,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PRED2R3,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   ! stores the RED2_THR3
   YRECFM  ='RED2_THR3'
   YCOMMENT='X_Y_Z_RED2_THR3 (0)'
   IGRID   = 4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRED2THR3,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PRED2THR3,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !---------------------------------------------------------------------------
diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90
index 7b9798cb4..7587dd433 100644
--- a/src/MNH/radiations.f90
+++ b/src/MNH/radiations.f90
@@ -14,20 +14,21 @@
 !
 INTERFACE 
 !
-    SUBROUTINE RADIATIONS (OCLOSE_OUT,HFMFILE,HLUOUT,OCLEAR_SKY,OCLOUD_ONLY,&
-               KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW,   &
+    SUBROUTINE RADIATIONS (OCLOSE_OUT,TPFILE,HLUOUT,OCLEAR_SKY,OCLOUD_ONLY,    &
+               KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW,      &
                PFUDG, KDLON, KFLEV, KRAD_DIAG, KFLUX, KRAD, KAER, KSWB,KSTATM, &
-               KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL,                         &
-               PDIR_ALB, PSCA_ALB, PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM,  &
-               PTHT, PRT, PPABST, POZON, PAER,PDST_WL, PAER_CLIM, PSVT,   &
-               PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF,PRHODREF, PZZ,   &
-               PRADEFF, PSWU, PSWD, PLWU, PLWD, PDTHRADSW, PDTHRADLW      )
+               KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL,                              &
+               PDIR_ALB, PSCA_ALB, PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM,       &
+               PTHT, PRT, PPABST, POZON, PAER,PDST_WL, PAER_CLIM, PSVT,        &
+               PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF,PRHODREF, PZZ,        &
+               PRADEFF, PSWU, PSWD, PLWU, PLWD, PDTHRADSW, PDTHRADLW           )
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 LOGICAL, INTENT(IN)                  :: OCLOSE_OUT! flag indicating that a FM
                                                   ! file is opened during this 
                                                   ! time-step
-CHARACTER(LEN=*), INTENT(IN)         :: HFMFILE   ! Name of the output
-                                                  ! FM-file
+TYPE(TFILEDATA),  INTENT(IN)         :: TPFILE    ! Output file
 CHARACTER(LEN=*), INTENT(IN)         :: HLUOUT    ! Output-listing name for
                                                   ! model n
 LOGICAL, INTENT(IN)                  :: OCLOUD_ONLY! flag for the cloud column
@@ -81,7 +82,8 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT    ! scalar variable ( C2R2 and C1R
 REAL, DIMENSION(:,:,:),   POINTER    :: POZON   ! OZON field from clim.
 REAL, DIMENSION(:,:,:,:), POINTER    :: PAER    ! AERosols optical thickness from clim. 
 REAL, DIMENSION(:,:,:,:), POINTER    :: PDST_WL ! AERosols Extinction.by wavelength 
-REAL, DIMENSION(:,:,:,:), POINTER    :: PAER_CLIM    ! AERosols optical thickness from clim.                                                 ! note : the vertical dimension of 
+REAL, DIMENSION(:,:,:,:), POINTER    :: PAER_CLIM    ! AERosols optical thickness from clim.
+                                                ! note : the vertical dimension of 
                                                 ! these fields include the "radiation levels"
                                                 ! above domain top 
 !
@@ -110,16 +112,16 @@ END INTERFACE
 !
 END MODULE MODI_RADIATIONS  
 !
-!   #######################################################################
-    SUBROUTINE RADIATIONS (OCLOSE_OUT,HFMFILE,HLUOUT,OCLEAR_SKY,OCLOUD_ONLY,&
-               KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW,   &
+!   ############################################################################
+    SUBROUTINE RADIATIONS (OCLOSE_OUT,TPFILE,HLUOUT,OCLEAR_SKY,OCLOUD_ONLY,    &
+               KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW,      &
                PFUDG, KDLON, KFLEV, KRAD_DIAG, KFLUX, KRAD, KAER, KSWB,KSTATM, &
-               KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL,                         &
-               PDIR_ALB, PSCA_ALB,PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM,   &
-               PTHT, PRT, PPABST, POZON, PAER, PDST_WL, PAER_CLIM, PSVT,  &
-               PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF, PRHODREF, PZZ,  &
-               PRADEFF, PSWU, PSWD, PLWU,PLWD, PDTHRADSW, PDTHRADLW       )
-!   #######################################################################
+               KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL,                              &
+               PDIR_ALB, PSCA_ALB, PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM,       &
+               PTHT, PRT, PPABST, POZON, PAER,PDST_WL, PAER_CLIM, PSVT,        &
+               PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF,PRHODREF, PZZ,        &
+               PRADEFF, PSWU, PSWD, PLWU, PLWD, PDTHRADSW, PDTHRADLW           )
+!   ############################################################################
 !
 !!****  *RADIATIONS * - routine to call the SW and LW radiation calculations
 !!
@@ -226,6 +228,7 @@ USE YOESW    , ONLY : RTAUA    ,RPIZA    ,RCGA
 !
 USE MODD_TIME
 USE MODD_CST
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_RAIN_ICE_DESCR
 USE MODD_NSV, ONLY : NSV_C2R2,NSV_C2R2BEG,NSV_C2R2END, &
@@ -259,8 +262,7 @@ IMPLICIT NONE
 LOGICAL, INTENT(IN)                  :: OCLOSE_OUT! flag indicating that a FM
                                                   ! file is opened during this 
                                                   ! time-step
-CHARACTER(LEN=*), INTENT(IN)         :: HFMFILE   ! Name of the output
-                                                  ! FM-file
+TYPE(TFILEDATA),  INTENT(IN)         :: TPFILE    ! Output file
 CHARACTER(LEN=*), INTENT(IN)         :: HLUOUT    ! Output-listing name for
                                                   ! model n
 LOGICAL, INTENT(IN)                  :: OCLOUD_ONLY! flag for the cloud column
@@ -606,6 +608,7 @@ INTEGER             :: ILUOUT       ! Logical unit number for output-listing
 INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDTHRAD,1),SIZE(PDTHRAD,2),SIZE(PDTHRAD,3)) &
@@ -627,6 +630,8 @@ INTEGER :: JAE  ! loop on aerosol class
 !*       1.    COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES
 !              ----------------------------------------------
 !
+YFMFILE = TPFILE%CNAME
+!
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)  ! this definition must be coherent with
                                       ! the one used in ini_radiations routine
 IKU = SIZE(PTHT,3)
@@ -2588,7 +2593,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_SWF_DOWN (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2603,7 +2608,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_SWF_UP (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2618,7 +2623,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_LWF_DOWN (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2633,7 +2638,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_LWF_UP (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2648,7 +2653,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_LWF_NET (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2663,7 +2668,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_SWF_NET (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     DO JK=IKB,IKE
       DO JJ=IJB,IJE
@@ -2676,7 +2681,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_DTRAD_LW (K/DAY)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     DO JK=IKB,IKE
       DO JJ=IJB,IJE
@@ -2689,7 +2694,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_DTRAD_SW (K/DAY)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2701,7 +2706,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_RADSWD_VIS'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2713,7 +2718,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_RADSWD_NIR'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2725,7 +2730,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_RADLWD'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !
   !
@@ -2744,7 +2749,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_SWF_DOWN_CS (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2759,7 +2764,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_SWF_UP_CS (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2774,7 +2779,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_LWF_DOWN (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2789,7 +2794,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_LWF_UP_CS (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2804,7 +2809,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_SWF_NET_CS (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2819,7 +2824,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_SWF_NET_CS (W/M2)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK-JPVEXT
@@ -2834,7 +2839,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_DTRAD_SW_CS (K/DAY)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK-JPVEXT
@@ -2849,7 +2854,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_DTRAD_LW_CS (K/DAY)'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2861,7 +2866,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_RADSWD_VIS_CS'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2873,7 +2878,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_RADSWD_NIR_CS'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2885,7 +2890,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_RADLWD_CS'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !
   !
@@ -2900,7 +2905,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_PLAN_ALB_VIS'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2912,7 +2917,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_PLAN_ALB_NIR'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2924,7 +2929,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_PLAN_TRA_VIS'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2936,7 +2941,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_PLAN_TRA_NIR'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2948,7 +2953,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_PLAN_ABS_VIS'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JJ=IJB,IJE
       DO JI=IIB,IIE
@@ -2960,7 +2965,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_PLAN_ABS_NIR'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     !
   END IF
@@ -2980,7 +2985,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_EFNEB_DOWN'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -2995,7 +3000,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_EFNEB_UP'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -3010,7 +3015,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_FLWP'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -3025,7 +3030,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_FIWP'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
   !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -3040,7 +3045,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_RAD_microm'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
  
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -3055,7 +3060,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_RAD_microm'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
  !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -3070,7 +3075,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_SW_NEB'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     DO JK=IKB,IKE
       JKRAD = JK - JPVEXT
@@ -3085,7 +3090,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_LW_NEB'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     ! spectral bands
     IF (KSWB==6) THEN
@@ -3106,17 +3111,17 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
       YCOMMENT = 'X_Y_Z_OD_'//YBAND_NAME(JBAND)
       IGRID    = 1
       ILENCH   = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZTAUAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZTAUAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP)
       YRECFM   = 'SSAAER_'//YBAND_NAME(JBAND)
       YCOMMENT = 'X_Y_Z_SSA_'//YBAND_NAME(JBAND)
       IGRID    = 1
       ILENCH   = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZPIZAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZPIZAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP)
       YRECFM   = 'GAER_'//YBAND_NAME(JBAND)
       YCOMMENT = 'X_Y_Z_G_'//YBAND_NAME(JBAND)
       IGRID    = 1
       ILENCH   = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZCGAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZCGAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP)
     ENDDO
 
     DO JBAND=1,KSWB
@@ -3133,7 +3138,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
       YCOMMENT = 'X_Y_Z_OTH_'//YBAND_NAME(JBAND)
       IGRID    = 1
       ILENCH   = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
       !
       DO JK=IKB,IKE
         JKRAD = JK - JPVEXT
@@ -3148,7 +3153,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
       YCOMMENT = 'X_Y_Z_SSA_'//YBAND_NAME(JBAND)
       IGRID    = 1
       ILENCH   = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
       !
       DO JK=IKB,IKE
         JKRAD = JK - JPVEXT
@@ -3163,7 +3168,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
       YCOMMENT = 'X_Y_Z_ASF_'//YBAND_NAME(JBAND)
       IGRID    = 1
       ILENCH   = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
   END IF
   !
@@ -3186,7 +3191,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_O3 Pa/Pa'
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP)
 ! 
 !cumulated optical thickness of aerosols
 !cumul begin from the top of the domain, not from the TOA !      
@@ -3212,7 +3217,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_CUM_AER_OPT' 
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! sea
     DO JK=IKB,IKE
@@ -3236,7 +3241,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_CUM_AER_OPT' 
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! desert
     DO JK=IKB,IKE
@@ -3260,7 +3265,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_CUM_AER_OPT' 
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! urban
     DO JK=IKB,IKE
@@ -3284,7 +3289,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_CUM_AER_OPT' 
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! Volcanoes
     DO JK=IKB,IKE
@@ -3308,7 +3313,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_CUM_AER_OPT' 
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stratospheric background
     DO JK=IKB,IKE
@@ -3332,7 +3337,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN
     YCOMMENT = 'X_Y_Z_CUM_AER_OPT' 
     IGRID    = 1
     ILENCH   = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP)
   ENDIF
 END IF
 !
diff --git a/src/MNH/rain_c2r2_khko.f90 b/src/MNH/rain_c2r2_khko.f90
index 834f410cb..119979e14 100644
--- a/src/MNH/rain_c2r2_khko.f90
+++ b/src/MNH/rain_c2r2_khko.f90
@@ -12,9 +12,9 @@
 !      ######################
 !
 INTERFACE
-      SUBROUTINE RAIN_C2R2_KHKO(HCLOUD,OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP,          &
+      SUBROUTINE RAIN_C2R2_KHKO(HCLOUD,OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP,   &
                             KMI,                                                &
-                            HFMFILE, HLUOUT, OCLOSE_OUT,                        &
+                            TPFILE, HLUOUT, OCLOSE_OUT,                         &
                             PZZ, PRHODJ,                                        &
                             PRHODREF, PEXNREF,                                  &
                             PPABST, PTHT, PRVT, PRCT,                           &
@@ -25,7 +25,7 @@ INTERFACE
                             PSOLORG, PMI, HACTCCN,                              &
                             PINDEP, PSUPSAT, PNACT                      )
 !
-!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 CHARACTER(LEN=*),         INTENT(IN)    :: HCLOUD   !  kind of cloud
 
@@ -40,7 +40,7 @@ INTEGER,                  INTENT(IN)    :: KSPLITR ! Number of small time step
                                       ! integration for  rain sedimendation
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step :XTSTEP in namelist
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE  ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)    :: TPFILE   ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT   ! Output-listing name for
                                                     ! model n
 LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT  ! Conditional closure of 
@@ -92,8 +92,8 @@ END SUBROUTINE RAIN_C2R2_KHKO
 END INTERFACE
 END MODULE MODI_RAIN_C2R2_KHKO
 !     ######################################################################
-      SUBROUTINE RAIN_C2R2_KHKO (HCLOUD,OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP,         &
-                            KMI, HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ,      &
+      SUBROUTINE RAIN_C2R2_KHKO (HCLOUD,OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP,  &
+                            KMI, TPFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ,       &
                             PRHODREF, PEXNREF,                                  &
                             PPABST, PTHT, PRVT,  PRCT,                          &
                             PRRT, PTHM, PRCM, PPABSM,                           &
@@ -226,6 +226,7 @@ END MODULE MODI_RAIN_C2R2_KHKO
 USE MODD_PARAMETERS
 USE MODD_CST
 USE MODD_CONF
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAM_C2R2
 USE MODD_RAIN_C2R2_DESCR
 USE MODD_RAIN_C2R2_KHKO_PARAM
@@ -262,7 +263,7 @@ INTEGER,                  INTENT(IN)    :: KSPLITR ! Number of small time step
                                       ! integration for  rain sedimendation
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step :XTSTEP in namelist
 INTEGER,                  INTENT(IN)    :: KMI     ! Model index 
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE  ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)    :: TPFILE   ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT   ! Output-listing name for
                                                     ! model n
 LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT  ! Conditional closure of 
@@ -424,6 +425,7 @@ REAL  :: ZFACT, JSV, ZMU, ZALPHA
 REAL, DIMENSION(:), ALLOCATABLE    :: ZRTMIN
 REAL, DIMENSION(:), ALLOCATABLE    :: ZCTMIN
 REAL :: ZTMP
+CHARACTER (LEN=28)  :: YFMFILE    ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
 !
@@ -434,6 +436,8 @@ CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
 !*       1.     COMPUTE THE SLOPE PARAMETERS ZLBDC,ZLBDR
 !   	        ----------------------------------------
 !
+YFMFILE = TPFILE%CNAME
+!
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PZZ,3) - JPVEXT
@@ -602,7 +606,7 @@ INTEGER                           :: J1
 !   YCOMMENT='X_Y_Z_ZCHEN'
 !   ILENCH=LEN(YCOMMENT)
 !   IGRID   = 1
-!   CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCHEN,IGRID,ILENCH,YCOMMENT,IRESP)
+!   CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCHEN,IGRID,ILENCH,YCOMMENT,IRESP)
 !END IF
 !
 !-------------------------------------------------------------------------------
@@ -880,7 +884,7 @@ IF ( OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_SMAX'
   ILENCH=LEN(YCOMMENT)
   IGRID   = 1
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZZW1LOG,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZZW1LOG,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !*       3.4   budget storage
@@ -1898,19 +1902,19 @@ DO JN = 1 , KSPLITR
     YCOMMENT='X_Y_Z_SEDFLUXC'
     ILENCH=LEN(YCOMMENT)
     IGRID   = 1
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWSEDC,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWSEDC,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM  ='SEDFLUXR'
     YCOMMENT='X_Y_Z_SEDFLUXR'
     ILENCH=LEN(YCOMMENT)
     IGRID   = 1
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWSEDR,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWSEDR,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !    YRECFM  ='SPEEDC'
 !    YCOMMENT='X_Y_Z_SPEEDC'
 !    ILENCH=LEN(YCOMMENT)
 !    IGRID   = 1
-!    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PSPEEDC,IGRID,ILENCH,YCOMMENT,IRESP)
+!    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PSPEEDC,IGRID,ILENCH,YCOMMENT,IRESP)
  END IF
 END DO
 !
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index e8e2f2bdc..a245c573b 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -10,7 +10,7 @@
 INTERFACE
       SUBROUTINE RESOLVED_CLOUD ( HCLOUD, HACTCCN, HSCONV, HMF_CLOUD,                  &
                                   KRR, KSPLITR, KSPLITG, KMI, KTCOUNT,                 &
-                                  HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM,       &
+                                  HLBCX, HLBCY, TPFILE, HLUOUT, HRAD, HTURBDIM,        &
                                   OCLOSE_OUT, OSUBG_COND, OSIGMAS, HSUBG_AUCV,         &
                                   PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,              &
                                   PPABST, PTHT, PRT, PSIGS, PSIGQSAT, PMFCONV,         &
@@ -19,12 +19,14 @@ INTERFACE
                                   PCIT, OSEDIC, OACTIT, OSEDC, OSEDI,                  &
                                   ORAIN, OWARM, OHHONI, OCONVHG,                       &
                                   PCF_MF,PRC_MF, PRI_MF,                               &
-                                  PINPRC,PINPRR,PINPRR3D, PEVAP3D,            &
-                                  PINPRS,PINPRG,PINPRH,     &
+                                  PINPRC,PINPRR,PINPRR3D, PEVAP3D,                     &
+                                  PINPRS,PINPRG,PINPRH,                                &
                                   PSOLORG,PMI,                                         &
                                   PINDEP, PSUPSAT,  PNACT, PNPRO,PSSPRO,               &
                                   PSEA,PTOWN          )   
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 CHARACTER(LEN=4),         INTENT(IN)   :: HCLOUD   ! kind of cloud
 CHARACTER(LEN=4),         INTENT(IN)   :: HACTCCN  ! kind of CCN activation scheme
                                                    ! paramerization
@@ -38,7 +40,7 @@ INTEGER,                  INTENT(IN)   :: KSPLITG  ! Number of small time step
 INTEGER,                  INTENT(IN)   :: KMI      ! Model index
 INTEGER,                  INTENT(IN)   :: KTCOUNT  ! Temporal loop counter
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY   ! X and Y-direc. LBC type
-CHARACTER(LEN=*),         INTENT(IN)   :: HFMFILE  ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)   :: TPFILE   ! Output file
 CHARACTER(LEN=*),         INTENT(IN)   :: HLUOUT   ! Output-listing name for
                                                    ! model n
 CHARACTER*4,              INTENT(IN)   :: HRAD     ! Radiation scheme name
@@ -134,7 +136,7 @@ END MODULE MODI_RESOLVED_CLOUD
 !     ##########################################################################
       SUBROUTINE RESOLVED_CLOUD ( HCLOUD, HACTCCN, HSCONV, HMF_CLOUD,                  &
                                   KRR, KSPLITR, KSPLITG, KMI, KTCOUNT,                 &
-                                  HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM,       &
+                                  HLBCX, HLBCY, TPFILE, HLUOUT, HRAD, HTURBDIM,        &
                                   OCLOSE_OUT, OSUBG_COND, OSIGMAS, HSUBG_AUCV,         &
                                   PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,              &
                                   PPABST, PTHT, PRT, PSIGS, PSIGQSAT, PMFCONV,         &
@@ -143,8 +145,8 @@ END MODULE MODI_RESOLVED_CLOUD
                                   PCIT, OSEDIC, OACTIT, OSEDC, OSEDI,                  &
                                   ORAIN, OWARM, OHHONI, OCONVHG,                       &
                                   PCF_MF,PRC_MF, PRI_MF,                               &
-                                  PINPRC,PINPRR,PINPRR3D, PEVAP3D,            &
-                                  PINPRS,PINPRG,PINPRH,     &
+                                  PINPRC,PINPRR,PINPRR3D, PEVAP3D,                     &
+                                  PINPRS,PINPRG,PINPRH,                                &
                                   PSOLORG,PMI,                                         &
                                   PINDEP, PSUPSAT,  PNACT, PNPRO,PSSPRO,               &
                                   PSEA,PTOWN          )   
@@ -262,6 +264,7 @@ USE MODE_FM
 !
 USE MODD_CONF
 USE MODD_CST
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_PARAM_ICE,  ONLY : CSEDIM
 USE MODD_RAIN_ICE_DESCR
@@ -311,7 +314,7 @@ INTEGER,                  INTENT(IN)   :: KSPLITG  ! Number of small time step
 INTEGER,                  INTENT(IN)   :: KMI      ! Model index
 INTEGER,                  INTENT(IN)   :: KTCOUNT  ! Temporal loop counter
 CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY   ! X and Y-direc. LBC type
-CHARACTER(LEN=*),         INTENT(IN)   :: HFMFILE  ! Name of the output FM-file
+TYPE(TFILEDATA),          INTENT(IN)   :: TPFILE   ! Output file
 CHARACTER(LEN=*),         INTENT(IN)   :: HLUOUT   ! Output-listing name for
                                                    ! model n
 CHARACTER*4,              INTENT(IN)   :: HRAD     ! Radiation scheme name
@@ -815,7 +818,7 @@ SELECT CASE ( HCLOUD )
                       PZZ, PRHODJ, PRHODREF, PCLDFR,                          &
                       PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRT(:,:,:,3), PPABST, &
                       PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),         &
-                      PINPRR, PINPRR3D, PEVAP3D                         )
+                      PINPRR, PINPRR3D, PEVAP3D                               )
 !
 !*       5.2    Perform the saturation adjustment
 !
@@ -837,8 +840,8 @@ SELECT CASE ( HCLOUD )
 !*       7.1    Compute the explicit microphysical sources
 !
 !
-    CALL RAIN_C2R2_KHKO ( HCLOUD, OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,          &
-                     HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, PRHODREF, PEXNREF, &
+    CALL RAIN_C2R2_KHKO ( HCLOUD, OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,     &
+                     TPFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, PRHODREF, PEXNREF,  &
                      PPABST, PTHT, PRT(:,:,:,1), PRT(:,:,:,2),  PRT(:,:,:,3),     &
                      PTHM, PRCM, PPABSM,                                          &
                      PW_ACT,PDTHRAD,PTHS, PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3), &
@@ -846,21 +849,21 @@ SELECT CASE ( HCLOUD )
                      ZSVS(:,:,:,1), ZSVS(:,:,:,2), ZSVS(:,:,:,3),                 &
                      PINPRC, PINPRR, PINPRR3D, PEVAP3D ,                          &
                      PSVT(:,:,:,:), PSOLORG, PMI, HACTCCN,                        &
-                     PINDEP, PSUPSAT, PNACT                               )
+                     PINDEP, PSUPSAT, PNACT                                       )
 !
 !
 !*       7.2    Perform the saturation adjustment
 !
    IF (LSUPSAT) THEN
-    CALL KHKO_NOTADJUST (KRR, KTCOUNT,HFMFILE, HLUOUT, HRAD, OCLOSE_OUT,         &
+    CALL KHKO_NOTADJUST (KRR, KTCOUNT,TPFILE, HLUOUT, HRAD, OCLOSE_OUT,          &
                          PTSTEP, PRHODJ, PPABSM, PPABST, PRHODREF, PZZ,          &
                          PTHT,PRT(:,:,:,1),PRT(:,:,:,2),PRT(:,:,:,3),            &
                          PTHS,PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3),            &
                          ZSVS(:,:,:,2),ZSVS(:,:,:,1),                            &
-                         ZSVS(:,:,:,4), PCLDFR, PSRCS , PNPRO,PSSPRO                           )
+                         ZSVS(:,:,:,4), PCLDFR, PSRCS , PNPRO,PSSPRO             )
 !
    ELSE
-    CALL C2R2_ADJUST ( KRR,HFMFILE, HLUOUT, HRAD,                              &
+    CALL C2R2_ADJUST ( KRR,TPFILE, HLUOUT, HRAD,                               &
                        HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,               &
                        PRHODJ, PSIGS, PPABST,                                  &
                        PTHS=PTHS, PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),        &
@@ -958,33 +961,33 @@ SELECT CASE ( HCLOUD )
 !
   CASE ('LIMA')
 !
-    IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,   &
-                              HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,&
-                              PRHODREF, PEXNREF, PW_ACT, PPABSM, PPABST,    &
-                              PTHM, PRCM,                                   &
-                              PTHT, PRT, ZSVT,                              &
-                              PTHS, PRS, ZSVS,                              &
-                              PINPRC, PINPRR, PINPRR3D, PEVAP3D    )
-!
-IF (LCOLD) CALL LIMA_COLD(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,               &
-                          HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,     &
-                          PRHODREF, PEXNREF, PPABST, PW_ACT,                 &
-                          PTHM, PPABSM,                                      &
-                          PTHT, PRT, ZSVT,                                   &
-                          PTHS, PRS, ZSVS,                                   &
+    IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, &
+                              KRR, PZZ, PRHODJ,                           &
+                              PRHODREF, PEXNREF, PW_ACT, PPABSM, PPABST,  &
+                              PTHM, PRCM,                                 &
+                              PTHT, PRT, ZSVT,                            &
+                              PTHS, PRS, ZSVS,                            &
+                              PINPRC, PINPRR, PINPRR3D, PEVAP3D           )
+!
+IF (LCOLD) CALL LIMA_COLD(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,          &
+                          KRR, PZZ, PRHODJ, &
+                          PRHODREF, PEXNREF, PPABST, PW_ACT,            &
+                          PTHM, PPABSM,                                 &
+                          PTHT, PRT, ZSVT,                              &
+                          PTHS, PRS, ZSVS,                              &
                           PINPRS, PINPRG, PINPRH)
 !
-IF (OWARM .AND. LCOLD) CALL LIMA_MIXED(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,    &
-                                 HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,&
-                                 PRHODREF, PEXNREF, PPABST, PW_ACT,            &
-                                 PTHM, PPABSM,                                 &
-                                 PTHT, PRT, ZSVT,                              &
-                                 PTHS, PRS, ZSVS                               )
+IF (OWARM .AND. LCOLD) CALL LIMA_MIXED(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, &
+                                 KRR, PZZ, PRHODJ,                          &
+                                 PRHODREF, PEXNREF, PPABST, PW_ACT,         &
+                                 PTHM, PPABSM,                              &
+                                 PTHT, PRT, ZSVT,                           &
+                                 PTHS, PRS, ZSVS                            )
 !
 !
 !*       12.2   Perform the saturation adjustment
 !
-CALL LIMA_ADJUST(KRR, KMI, HFMFILE, HLUOUT, HRAD,                  &
+CALL LIMA_ADJUST(KRR, KMI, TPFILE, HLUOUT, HRAD,                   &
                  HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP,         &
                  PRHODREF, PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, &
                  PRT, PRS, ZSVT, ZSVS,                             &
diff --git a/src/MNH/shallow_mf_pack.f90 b/src/MNH/shallow_mf_pack.f90
index 421a54d6b..8ebc554a5 100644
--- a/src/MNH/shallow_mf_pack.f90
+++ b/src/MNH/shallow_mf_pack.f90
@@ -10,40 +10,40 @@ INTERFACE
 !     #################################################################
       SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI,                       &
                 HMF_UPDRAFT, HMF_CLOUD, OMIXUV,                       &
-                OCLOSE_OUT,OMF_FLX,HFMFILE,HLUOUT,PTIME_LES,          &
+                OCLOSE_OUT,OMF_FLX,TPFILE,HLUOUT,PTIME_LES,           &
                 PIMPL_MF, PTSTEP,                                     &
                 PDZZ, PZZ,                                            &
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXN,                                         &
                 PSFTH,PSFRV,                                          &
-                PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM,                          &
+                PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM,                      &
                 PRTHS,PRRS,PRUS,PRVS,PRSVS,                           &
                 PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF  )
 !     #################################################################
 !!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !               
 !*               1.1  Declaration of Arguments
 !                
 !
-INTEGER,                INTENT(IN)   :: KRR          ! number of moist var.
-INTEGER,                INTENT(IN)   :: KRRL         ! number of liquid water var.
-INTEGER,                INTENT(IN)   :: KRRI         ! number of ice water var.
-CHARACTER (LEN=4),      INTENT(IN)   :: HMF_UPDRAFT  ! Type of Mass Flux Scheme
+INTEGER,                INTENT(IN)   :: KRR        ! number of moist var.
+INTEGER,                INTENT(IN)   :: KRRL       ! number of liquid water var.
+INTEGER,                INTENT(IN)   :: KRRI       ! number of ice water var.
+CHARACTER (LEN=4),      INTENT(IN)   :: HMF_UPDRAFT! Type of Mass Flux Scheme
                                      ! 'NONE' if no parameterization 
-CHARACTER (LEN=4),      INTENT(IN)   :: HMF_CLOUD    ! Type of statistical cloud
-                                                     ! scheme
-LOGICAL,                INTENT(IN)   :: OMIXUV    ! True if mixing of momentum
-LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for synchronous
-                                                      ! file opening
-LOGICAL,                INTENT(IN)   ::  OMF_FLX      ! switch to write the
-                                 ! MF fluxes in the synchronous FM-file
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
-CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
-                                                      ! model n
+CHARACTER (LEN=4),      INTENT(IN)   :: HMF_CLOUD  ! Type of statistical cloud
+                                                   ! scheme
+LOGICAL,                INTENT(IN)   :: OMIXUV     ! True if mixing of momentum
+LOGICAL,                INTENT(IN)   :: OCLOSE_OUT ! switch for synchronous
+                                                   ! file opening
+LOGICAL,                INTENT(IN)   :: OMF_FLX    ! switch to write the
+                                                   ! MF fluxes in the synchronous FM-file
+TYPE(TFILEDATA),        INTENT(IN)   :: TPFILE     ! Output file
+CHARACTER(LEN=*),       INTENT(IN)   :: HLUOUT     ! Output-listing name for
+                                                   ! model n
 REAL*8,DIMENSION(2),                  INTENT(OUT)  :: PTIME_LES     ! time spent in LES computations
-REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
-REAL,              INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
+REAL,                   INTENT(IN)   :: PIMPL_MF   ! degre of implicitness
+REAL,                   INTENT(IN)   :: PTSTEP     ! Dynamical timestep 
 
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PDZZ        ! Metric coefficients
@@ -59,7 +59,7 @@ REAL, DIMENSION(:,:,:,:),INTENT(IN)::  PRM         ! water var. at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PUM,PVM,PWM ! wind components at t-dt
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PTKEM       ! tke at t-dt
 
-REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM        ! scalar variable a t-dt
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM      ! scalar variable a t-dt
 
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS,PRVS,PRTHS ! Meso-NH sources
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRRS 
@@ -77,13 +77,13 @@ END MODULE MODI_SHALLOW_MF_PACK
 !     #################################################################
       SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI,                       &
                 HMF_UPDRAFT, HMF_CLOUD, OMIXUV,                       &
-                OCLOSE_OUT,OMF_FLX,HFMFILE,HLUOUT,PTIME_LES,          &
+                OCLOSE_OUT,OMF_FLX,TPFILE,HLUOUT,PTIME_LES,          &
                 PIMPL_MF, PTSTEP,                                     &
                 PDZZ, PZZ,                                            &
                 PRHODJ, PRHODREF,                                     &
                 PPABSM, PEXN,                                         &
                 PSFTH,PSFRV,                                          &
-                PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM,                          &
+                PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM,                      &
                 PRTHS,PRRS,PRUS,PRVS,PRSVS,                           &
                 PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF  )
 !     #################################################################
@@ -122,6 +122,7 @@ END MODULE MODI_SHALLOW_MF_PACK
 USE MODD_PARAMETERS
 USE MODD_CST
 USE MODD_CONF
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_NSV
 
 USE MODD_PARAM_MFSHALL_n
@@ -140,25 +141,24 @@ IMPLICIT NONE
 !
 !
 !
-INTEGER,                INTENT(IN)   :: KRR          ! number of moist var.
-INTEGER,                INTENT(IN)   :: KRRL         ! number of liquid water var.
-INTEGER,                INTENT(IN)   :: KRRI         ! number of ice water var.
-CHARACTER (LEN=4),      INTENT(IN)   :: HMF_UPDRAFT  ! Type of Mass Flux Scheme
+INTEGER,                INTENT(IN)   :: KRR        ! number of moist var.
+INTEGER,                INTENT(IN)   :: KRRL       ! number of liquid water var.
+INTEGER,                INTENT(IN)   :: KRRI       ! number of ice water var.
+CHARACTER (LEN=4),      INTENT(IN)   :: HMF_UPDRAFT! Type of Mass Flux Scheme
                                      ! 'NONE' if no parameterization 
-CHARACTER (LEN=4),      INTENT(IN)   :: HMF_CLOUD    ! Type of statistical cloud
-                                                     ! scheme
-LOGICAL,                INTENT(IN)   :: OMIXUV    ! True if mixing of momentum
-LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for synchronous
-                                                      ! file opening
-LOGICAL,                INTENT(IN)   ::  OMF_FLX      ! switch to write the
-                                 ! MF fluxes in the synchronous FM-file
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
-CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
-                                                      ! model n
-REAL*8,DIMENSION(2),                   INTENT(OUT)  :: PTIME_LES     ! time spent in LES computations
-REAL,                   INTENT(IN)   :: PIMPL_MF     ! degre of implicitness
-REAL,              INTENT(IN)     ::  PTSTEP   ! Dynamical timestep 
+CHARACTER (LEN=4),      INTENT(IN)   :: HMF_CLOUD  ! Type of statistical cloud
+                                                   ! scheme
+LOGICAL,                INTENT(IN)   :: OMIXUV     ! True if mixing of momentum
+LOGICAL,                INTENT(IN)   :: OCLOSE_OUT ! switch for synchronous
+                                                   ! file opening
+LOGICAL,                INTENT(IN)   :: OMF_FLX    ! switch to write the
+                                                   ! MF fluxes in the synchronous FM-file
+TYPE(TFILEDATA),        INTENT(IN)   :: TPFILE     ! Output file
+CHARACTER(LEN=*),       INTENT(IN)   :: HLUOUT     ! Output-listing name for
+                                                   ! model n
+REAL*8,DIMENSION(2),                  INTENT(OUT)  :: PTIME_LES     ! time spent in LES computations
+REAL,                   INTENT(IN)   :: PIMPL_MF   ! degre of implicitness
+REAL,                   INTENT(IN)   :: PTSTEP     ! Dynamical timestep 
 
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PZZ         ! Height of flux point
 REAL, DIMENSION(:,:,:), INTENT(IN) ::  PDZZ        ! Metric coefficients
@@ -257,6 +257,7 @@ INTEGER :: JK,JRR,JSV                          ! Loop counters
 INTEGER             :: IRESP        ! Return code of FM routines 
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file 
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER(LEN=28)   :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !------------------------------------------------------------------------
@@ -283,6 +284,8 @@ ZUMM=MXF(PUM)
 ZVMM=MYF(PVM)
 ZWMM=MZF(1,IKU,1,PWM)
 !
+YFMFILE = TPFILE%CNAME
+!
 !!! 2. Pack input variables
 !
 DO JK=1,IKU
@@ -388,20 +391,20 @@ IF ( OMF_FLX .AND. OCLOSE_OUT ) THEN
   ILENCH  = LEN(YCOMMENT)
   IGRID   = 4   
   ZWORK(:,:,:)=RESHAPE(ZFLXZTHMF (:,:),(/ IIU,IJU,IKU /) )
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
   ! stores the conservative mixing ratio vertical flux
   YRECFM  ='MF_RCONSW_FLX'
   YCOMMENT='X_Y_Z_MF_RCONSW_FLX (K*M/S)'
   ILENCH  = LEN(YCOMMENT)
   IGRID   = 4   
   ZWORK(:,:,:)=RESHAPE(ZFLXZRMF(:,:),(/ IIU,IJU,IKU /) )
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
   ! stores the theta_v vertical flux
    YRECFM  ='MF_THVW_FLX'
    YCOMMENT='X_Y_Z_MF_THVW_FLX (K*M/S)'
    ILENCH  = LEN(YCOMMENT)
    IGRID   = 4   
-   CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PFLXZTHVMF,IGRID,ILENCH,YCOMMENT,IRESP)
+   CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PFLXZTHVMF,IGRID,ILENCH,YCOMMENT,IRESP)
  IF (OMIXUV) THEN
   ! stores the U momentum vertical flux
   YRECFM  ='MF_UW_FLX'
@@ -409,14 +412,14 @@ IF ( OMF_FLX .AND. OCLOSE_OUT ) THEN
   ILENCH  = LEN(YCOMMENT)
   IGRID   = 4   
   ZWORK(:,:,:)=RESHAPE(ZFLXZUMF(:,:),(/ IIU,IJU,IKU /) )
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
   ! stores the V momentum vertical flux
   YRECFM  ='MF_VW_FLX'
   YCOMMENT='X_Y_Z_MF_VW_FLX (M2/S2)'
   ILENCH  = LEN(YCOMMENT)
   IGRID   = 4   
   ZWORK(:,:,:)=RESHAPE(ZFLXZVMF(:,:),(/ IIU,IJU,IKU /) )
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP)
   !
  END IF
 END IF
diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90
index b07ae8d7f..d43f24667 100644
--- a/src/MNH/tke_eps_sources.f90
+++ b/src/MNH/tke_eps_sources.f90
@@ -17,9 +17,11 @@ INTERFACE
                       PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ,                  &
                       PTSTEP,PIMPL,PEXPL,                                   &
                       HTURBLEN,HTURBDIM,                                    &
-                      HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,                 &
+                      TPFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,                  &
                       PTP,PRTKES,PRTKESM, PRTHLS,PCOEF_DISS,PTR,PDISS       )
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                 INTENT(IN)   ::  KKA          !near ground array index  
 INTEGER,                 INTENT(IN)   ::  KKU          !uppest atmosphere array index
 INTEGER,                 INTENT(IN)   ::  KKL          !vert. levels type 1=MNH -1=ARO
@@ -36,8 +38,7 @@ REAL,                    INTENT(IN)   ::  PEXPL, PIMPL ! Coef. temporal. disc.
 CHARACTER*4,             INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
                                                        ! turbulence scheme
 CHARACTER*4,             INTENT(IN)   ::  HTURBLEN     ! kind of mixing length 
-CHARACTER(LEN=*),        INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                       ! FM-file
+TYPE(TFILEDATA),         INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),        INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                        ! model n
 LOGICAL,                 INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
@@ -67,7 +68,7 @@ END MODULE MODI_TKE_EPS_SOURCES
                       PTRH,PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ,        &
                       PTSTEP,PIMPL,PEXPL,                              &
                       HTURBLEN,HTURBDIM,                               &
-                      HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,            &
+                      TPFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,             &
                       PTP,PRTKES,PRTKESM, PRTHLS,PCOEF_DISS,PTR,PDISS  )
 !     ##################################################################
 !
@@ -181,6 +182,7 @@ END MODULE MODI_TKE_EPS_SOURCES
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_BUDGET
 USE MODD_LES
@@ -225,8 +227,7 @@ REAL,                    INTENT(IN)   ::  PEXPL, PIMPL ! Coef. temporal. disc.
 CHARACTER*4,             INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
                                                        ! turbulence scheme
 CHARACTER*4,             INTENT(IN)   ::  HTURBLEN     ! kind of mixing length 
-CHARACTER(LEN=*),        INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                       ! FM-file
+TYPE(TFILEDATA),         INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),        INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                        ! model n
 LOGICAL,                 INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
@@ -267,6 +268,7 @@ INTEGER             :: IIU,IJU,IKU  ! array size in the 3 dimensions
 INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
@@ -279,6 +281,7 @@ NULLIFY(TZFIELDDISS_ll)
 !*       1.   PRELIMINARY COMPUTATIONS
 !             ------------------------
 !
+YFMFILE = TPFILE%CNAME
 !
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IIU=SIZE(PTKEM,1)
@@ -430,7 +433,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_DP (M**2/S**3)'
   IGRID   = 1
   ILENCH=LEN(YCOMMENT) 
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PDP,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PDP,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the thermal production 
 !
@@ -438,7 +441,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_TP (M**2/S**3)'
   IGRID   = 1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTP,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PTP,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the whole turbulent transport
 !
@@ -446,7 +449,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_TR (M**2/S**3)'
   IGRID   = 1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZTR,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZTR,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the dissipation of TKE 
 !
@@ -455,7 +458,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
   IGRID   = 1
   ILENCH=LEN(YCOMMENT)
   ZFLX(:,:,:) =-XCED * (PTKEM(:,:,:)**1.5) / PLEPS(:,:,:) 
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! Storage in the LES configuration of the Dynamic Production of TKE and
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index ba6694e45..0d2dd3745 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -12,7 +12,7 @@ INTERFACE
                 KSPLIT,KMODEL_CL, &
                 OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
                 HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HCLOUD,PIMPL,      &
-                PTSTEP,HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,   &
+                PTSTEP,TPFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,    &
                 PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,PCOSSLOPE,PSINSLOPE,    &
                 PRHODJ,PTHVREF,PRHODREF,                              &
                 PSFTH,PSFRV,PSFSV,PSFU,PSFV,                          &
@@ -23,6 +23,8 @@ INTERFACE
                 PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,PRTKES,PRTKEMS,PSIGS,&
                 PFLXZTHVMF,PWTH,PWRC,PWSV,PDYP,PTHP,PTR,PDISS,PLEM    )
 
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
 INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
@@ -52,8 +54,7 @@ CHARACTER*4           , INTENT(IN)   ::  HTURBLEN_CL  ! kind of cloud mixing len
 REAL,                   INTENT(IN)   ::  PIMPL        ! degree of implicitness
 CHARACTER (LEN=4),      INTENT(IN)   ::  HCLOUD       ! Kind of microphysical scheme
 REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -140,7 +141,7 @@ END MODULE MODI_TURB
       SUBROUTINE TURB(KKA,KKU,KKL,KMI,KRR,KRRL,KRRI,HLBCX,HLBCY,KSPLIT,KMODEL_CL, &
                 OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
                 HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HCLOUD,PIMPL,      &
-                PTSTEP,HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,   &
+                PTSTEP,TPFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,    &
                 PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,PCOSSLOPE,PSINSLOPE,    &
                 PRHODJ,PTHVREF,PRHODREF,                              &
                 PSFTH,PSFRV,PSFSV,PSFU,PSFV,                          &
@@ -350,6 +351,7 @@ USE MODD_CST
 USE MODD_CTURB
 USE MODD_CONF
 USE MODD_BUDGET
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_LES
 USE MODD_NSV
 !
@@ -410,8 +412,7 @@ CHARACTER*4           , INTENT(IN)   ::  HTURBLEN_CL  ! kind of cloud mixing len
 REAL,                   INTENT(IN)   ::  PIMPL        ! degree of implicitness
 CHARACTER (LEN=4),      INTENT(IN)   ::  HCLOUD       ! Kind of microphysical scheme
 REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -537,6 +538,7 @@ INTEGER             :: JI,JJ        ! loop counters
 INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL                :: ZL0          ! Max. Mixing Length in Blakadar formula
@@ -593,6 +595,8 @@ ALLOCATE ( &
 !*      1.PRELIMINARIES
 !         -------------
 !
+YFMFILE = TPFILE%CNAME
+!
 !*      1.1 Set the internal domains, ZEXPL 
 !
 !
@@ -685,13 +689,13 @@ IF (KRRL >=1) THEN
     YCOMMENT='X_Y_Z_ATHETA (M)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZATHETA,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZATHETA,IGRID,ILENCH,YCOMMENT,IRESP)
 ! 
     YRECFM  ='AMOIST'
     YCOMMENT='X_Y_Z_AMOIST (M)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZAMOIST,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZAMOIST,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 !
 ELSE
@@ -880,7 +884,7 @@ ZFTHR(:,:,:IKTB) = 0.
 CALL TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI,               &
           OCLOSE_OUT,OTURB_FLX,                          &
           HTURBDIM,HTOM,PIMPL,ZEXPL,                     &
-          PTSTEP,HFMFILE,HLUOUT,                         &
+          PTSTEP,TPFILE,HLUOUT,                          &
           PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,        &
           PCOSSLOPE,PSINSLOPE,                           &
           PRHODJ,PTHVREF,                                &
@@ -928,7 +932,7 @@ IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'VTURB_BU_RRI')
 IF (HTURBDIM=='3DIM') THEN
     CALL TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP,        &
           HLBCX,HLBCY,OCLOSE_OUT,OTURB_FLX,OSUBG_COND,         &
-          HFMFILE,HLUOUT,                                      &
+          TPFILE,HLUOUT,                                       &
           PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                        &
           PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                       &
           PCOSSLOPE,PSINSLOPE,                                 &
@@ -990,7 +994,7 @@ CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,ZLM,ZLEPS,ZDP,ZTRH,       &
                      PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ,            &
                      PTSTEP,PIMPL,ZEXPL,                             &
                      HTURBLEN,HTURBDIM,                              &
-                     HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,           &
+                     TPFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,            &
                      ZTP,PRTKES,PRTKEMS,PRTHLS,ZCOEF_DISS,PTR,PDISS  )
 !
 PDYP = ZDP
@@ -1023,7 +1027,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_LM (M)'
   IGRID   = 1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   IF (KRR /= 0) THEN
 !
@@ -1033,7 +1037,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
     YCOMMENT='X_Y_Z_THLM (KELVIN)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTHLT,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PTHLT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the conservative mixing ratio
 !
@@ -1041,7 +1045,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
     YCOMMENT='X_Y_Z_RNPM (KG/KG)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRT(:,:,:,1),IGRID,ILENCH,       &
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PRT(:,:,:,1),IGRID,ILENCH,       &
                                                                YCOMMENT,IRESP)
    END IF
 END IF
@@ -1636,7 +1640,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_LM CLEAR SKY (M)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP)
 ENDIF
 !
 ! Amplification of the mixing length when the criteria are verified
@@ -1656,13 +1660,13 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_COEF AMPL (-)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCOEF_AMPL,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCOEF_AMPL,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM  ='LM_CLOUD'
   YCOMMENT='X_Y_Z_LM CLOUD (M)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM_CLOUD,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZLM_CLOUD,IGRID,ILENCH,YCOMMENT,IRESP)
   !
 ENDIF
 !
diff --git a/src/MNH/turb_cloud_index.f90 b/src/MNH/turb_cloud_index.f90
index fe6d17008..ee8eb7952 100644
--- a/src/MNH/turb_cloud_index.f90
+++ b/src/MNH/turb_cloud_index.f90
@@ -14,14 +14,15 @@
 !
 INTERFACE
 !
-      SUBROUTINE TURB_CLOUD_INDEX(PTSTEP,HFMFILE,HLUOUT,                    &
+      SUBROUTINE TURB_CLOUD_INDEX(PTSTEP,TPFILE,HLUOUT,                     &
                                   OTURB_DIAG,OCLOSE_OUT,KRRI,               &
                                   PRRS,PRM,PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY, &
                                   PCEI                                      )
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time step
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
@@ -46,7 +47,7 @@ END INTERFACE
 END MODULE MODI_TURB_CLOUD_INDEX
 !
 !     #######################
-      SUBROUTINE TURB_CLOUD_INDEX(PTSTEP,HFMFILE,HLUOUT,                    &
+      SUBROUTINE TURB_CLOUD_INDEX(PTSTEP,TPFILE,HLUOUT,                     &
                                   OTURB_DIAG,OCLOSE_OUT,KRRI,               &
                                   PRRS,PRM,PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY, &
                                   PCEI                                      )
@@ -90,6 +91,7 @@ END MODULE MODI_TURB_CLOUD_INDEX
 !
 !-------------------------------------------------------------------------------
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS, ONLY: JPVEXT
 USE MODE_FMWRIT
 USE MODI_GRADIENT_M
@@ -102,8 +104,7 @@ IMPLICIT NONE
 !*       0.1   declarations of arguments
 !
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time step
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
@@ -144,6 +145,7 @@ INTEGER, DIMENSION(SIZE(PRM,1),SIZE(PRM,2),SIZE(PRM,3)) :: IMASK_CLOUD
 INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
@@ -152,6 +154,8 @@ CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !*       1.     INITIALISATION
 !               --------------
 !
+YFMFILE = TPFILE%CNAME
+!
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKB = 1   + JPVEXT
 IKU = SIZE(PRM,3)
@@ -261,49 +265,49 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_RVCI (kg/kg)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZRVCI,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZRVCI,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM  ='GX_RVCI'
   YCOMMENT='X_Y_Z_GX_RVCI (kg/kg/m)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZG_RVCI(:,:,:,1),IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZG_RVCI(:,:,:,1),IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM  ='GY_RVCI'
   YCOMMENT='X_Y_Z_GY_RVCI (kg/kg/m)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZG_RVCI(:,:,:,2),IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZG_RVCI(:,:,:,2),IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM  ='GNORM_RVCI'
   YCOMMENT='X_Y_Z_NORM G (kg/kg/m)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZGNORM_RVCI,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZGNORM_RVCI,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM  ='QX_RVCI'
   YCOMMENT='X_Y_Z_QX_RVCI (kg/kg/m)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZQ_RVCI(:,:,:,1),IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZQ_RVCI(:,:,:,1),IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM  ='QY_RVCI'
   YCOMMENT='X_Y_Z_QY_RVCI (kg/kg/m)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZQ_RVCI(:,:,:,2),IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZQ_RVCI(:,:,:,2),IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM  ='QNORM_RVCI'
   YCOMMENT='X_Y_Z_QNORM_RVCI (kg/kg/m)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZQNORM_RVCI,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZQNORM_RVCI,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM  ='CEI'
   YCOMMENT='X_Y_Z_CEI (kg/kg/m/s)'
   IGRID   = 1
   ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PCEI,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PCEI,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 END SUBROUTINE TURB_CLOUD_INDEX
diff --git a/src/MNH/turb_hor.f90 b/src/MNH/turb_hor.f90
index 88426783a..eb1729439 100644
--- a/src/MNH/turb_hor.f90
+++ b/src/MNH/turb_hor.f90
@@ -16,7 +16,7 @@ INTERFACE
 !
       SUBROUTINE TURB_HOR(KSPLT, KRR, KRRL, KRRI, PTSTEP,            &
                       OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                       PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
                       PCOSSLOPE,PSINSLOPE,                           &
@@ -31,6 +31,8 @@ INTERFACE
                       PDP,PTP,PSIGS,                                 &
                       PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS               )
 
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 INTEGER,                INTENT(IN)   :: KSPLT         ! current split index
 INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
@@ -43,8 +45,7 @@ LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid 
 !                                                    condensation
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -118,7 +119,7 @@ END MODULE MODI_TURB_HOR
 !     ################################################################
       SUBROUTINE TURB_HOR(KSPLT, KRR, KRRL, KRRI, PTSTEP,            &
                       OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                       PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
                       PCOSSLOPE,PSINSLOPE,                           &
@@ -260,6 +261,7 @@ END MODULE MODI_TURB_HOR
 !
 USE MODD_CST
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 !
@@ -296,8 +298,7 @@ LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid 
 !                                                    condensation
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -383,7 +384,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
 !
       CALL      TURB_HOR_THERMO_FLUX(KSPLT, KRR, KRRL, KRRI,         &
                       OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PDIRCOSXW,PDIRCOSYW,                           &
@@ -399,7 +400,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
       IF (KSPLT==1)                                                  &
       CALL      TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI,                &
                       OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PINV_PDXX,PINV_PDYY,                           &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PTHVREF,                                       &
@@ -415,7 +416,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
 ! 
       CALL       TURB_HOR_DYN_CORR(KSPLT, PTSTEP,                    &
                       OCLOSE_OUT,OTURB_FLX,KRR,                      &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDZZ,                                  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                       PDIRCOSZW,                                     &
@@ -433,7 +434,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
 !
       CALL      TURB_HOR_UV(KSPLT,                                   &
                       OCLOSE_OUT,OTURB_FLX,                          &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PDIRCOSZW,                                     &
@@ -449,7 +450,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
 !
       CALL      TURB_HOR_UW(KSPLT,                                   &
                       OCLOSE_OUT,OTURB_FLX,KRR,                      &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDZZ,PMZM_PRHODJ,            &
                       PDXX,PDZZ,PDZX,                                &
                       PRHODJ,PTHVREF,                                &
@@ -463,7 +464,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
 !
       CALL      TURB_HOR_VW(KSPLT,                                   &
                       OCLOSE_OUT,OTURB_FLX,KRR,                      &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,            &
                       PDYY,PDZZ,PDZY,                                &
                       PRHODJ,PTHVREF,                                &
@@ -478,7 +479,7 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
 !
       CALL      TURB_HOR_SV_FLUX(KSPLT,                              &
                       OCLOSE_OUT,OTURB_FLX,                          &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PDIRCOSXW,PDIRCOSYW,                           &
diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90
index 216f2f5d5..603704529 100644
--- a/src/MNH/turb_hor_dyn_corr.f90
+++ b/src/MNH/turb_hor_dyn_corr.f90
@@ -13,7 +13,7 @@ INTERFACE
 !
       SUBROUTINE TURB_HOR_DYN_CORR(KSPLT, PTSTEP,                    &
                       OCLOSE_OUT,OTURB_FLX,KRR,                      &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDZZ,                                  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                       PDIRCOSZW,                                     &
@@ -26,6 +26,8 @@ INTERFACE
                       PDP,PTP,                                       &
                       PRUS,PRVS,PRWS                                 )
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
 REAL,                     INTENT(IN)    ::  PTSTEP       ! timestep
 LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
@@ -33,8 +35,7 @@ LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -85,7 +86,7 @@ END MODULE MODI_TURB_HOR_DYN_CORR
 !     ################################################################
       SUBROUTINE TURB_HOR_DYN_CORR(KSPLT, PTSTEP,                    &
                       OCLOSE_OUT,OTURB_FLX,KRR,                      &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDZZ,                                  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                       PDIRCOSZW,                                     &
@@ -148,6 +149,7 @@ END MODULE MODI_TURB_HOR_DYN_CORR
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_NSV
@@ -183,8 +185,7 @@ LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -243,6 +244,7 @@ INTEGER             :: IKB,IKE
                                     ! mass points of the domain  
 INTEGER             :: IKU                                   
 INTEGER             :: JSV          ! scalar loop counter
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
@@ -274,6 +276,8 @@ REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF , ZDZZ
 !
 !*       1.   PRELIMINARY COMPUTATIONS
 !             ------------------------
+YFMFILE = TPFILE%CNAME
+!
 NULLIFY(TZFIELDS_ll)
 !
 IKB = 1+JPVEXT               
@@ -389,7 +393,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   YCOMMENT='X_Y_Z_U_VAR ( (M/S)**2)'
   IGRID   = 1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! Complete the U tendency
@@ -479,7 +483,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   YCOMMENT='X_Y_Z_V_VAR ( (M/S)**2)'
   IGRID   = 1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! Complete the V tendency
@@ -560,7 +564,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   YCOMMENT='X_Y_Z_W_VAR ( (M/S)**2)'
   IGRID   = 1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! Complete the W tendency
diff --git a/src/MNH/turb_hor_splt.f90 b/src/MNH/turb_hor_splt.f90
index 43daa0ffd..c938ff3b5 100644
--- a/src/MNH/turb_hor_splt.f90
+++ b/src/MNH/turb_hor_splt.f90
@@ -15,7 +15,7 @@ INTERFACE
 !
       SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP,      &
                       HLBCX,HLBCY,OCLOSE_OUT,OTURB_FLX,OSUBG_COND,   &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                       PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
                       PCOSSLOPE,PSINSLOPE,                           &
@@ -29,6 +29,8 @@ INTERFACE
                       PTRH,                                          &
                       PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS               )
 
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 INTEGER,                INTENT(IN)   :: KSPLIT        ! number of time splitting
 INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
@@ -42,8 +44,7 @@ LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid 
 !                                                    condensation
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -112,7 +113,7 @@ END MODULE MODI_TURB_HOR_SPLT
 !     ################################################################
       SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP,      &
                       HLBCX,HLBCY,OCLOSE_OUT,OTURB_FLX,OSUBG_COND,   &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                       PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
                       PCOSSLOPE,PSINSLOPE,                           &
@@ -261,6 +262,7 @@ END MODULE MODI_TURB_HOR_SPLT
 USE MODD_CONF
 USE MODD_CST
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 !
 !
@@ -288,8 +290,7 @@ LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid 
 !                                                    condensation
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -473,7 +474,7 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN
 ! compute the turbulent tendencies for the small time step
     CALL TURB_HOR(JSPLT, KRR, KRRL, KRRI, PTSTEP,                 &
                    OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                   HFMFILE,HLUOUT,                                &
+                   TPFILE,HLUOUT,                                 &
                    PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                    PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
                    PCOSSLOPE,PSINSLOPE,                           &
@@ -614,7 +615,7 @@ ELSE
 !
   CALL TURB_HOR(1, KRR, KRRL, KRRI,  PTSTEP,                   &
                 OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                HFMFILE,HLUOUT,                                &
+                TPFILE,HLUOUT,                                 &
                 PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
                 PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
                 PCOSSLOPE,PSINSLOPE,                           &
diff --git a/src/MNH/turb_hor_sv_flux.f90 b/src/MNH/turb_hor_sv_flux.f90
index c60ad2b59..0ff2ace66 100644
--- a/src/MNH/turb_hor_sv_flux.f90
+++ b/src/MNH/turb_hor_sv_flux.f90
@@ -16,7 +16,7 @@ INTERFACE
 !
       SUBROUTINE TURB_HOR_SV_FLUX(KSPLT,                             &
                       OCLOSE_OUT,OTURB_FLX,                          &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PDIRCOSXW,PDIRCOSYW,                           &
@@ -25,14 +25,14 @@ INTERFACE
                       PSVM,                                          &
                       PRSVS                                          )
 !
-
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
 LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
                                                          ! file opening       
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -67,7 +67,7 @@ END MODULE MODI_TURB_HOR_SV_FLUX
 !     ################################################################
       SUBROUTINE TURB_HOR_SV_FLUX(KSPLT,                             &
                       OCLOSE_OUT,OTURB_FLX,                          &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PDIRCOSXW,PDIRCOSYW,                           &
@@ -121,6 +121,7 @@ END MODULE MODI_TURB_HOR_SV_FLUX
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_NSV, ONLY : NSV_LGBEG,NSV_LGEND
 USE MODD_LES
@@ -148,8 +149,7 @@ LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
                                                          ! file opening       
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -191,6 +191,7 @@ INTEGER             :: IKB,IKE
                                     ! mass points of the domain  
 INTEGER             :: JSV          ! loop counter
 INTEGER             :: ISV          ! number of scalar var.
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
@@ -204,6 +205,8 @@ REAL :: ZTIME1, ZTIME2
 !*       1.   PRELIMINARY COMPUTATIONS
 !             ------------------------
 !
+YFMFILE = TPFILE%CNAME
+!
 IKB = 1+JPVEXT               
 IKE = SIZE(PSVM,3)-JPVEXT   
 IKU = SIZE(PSVM,3)
@@ -257,7 +260,7 @@ DO JSV=1,ISV
     YCOMMENT='X_Y_Z_'//YRECFM//' (SVUNIT*M/S)'
     IGRID   = 2
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXX,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXX,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 !
   IF (LLES_CALL .AND. KSPLT==1) THEN
@@ -302,7 +305,7 @@ DO JSV=1,ISV
       YCOMMENT='X_Y_Z_'//YRECFM//' (SVUNIT*M/S)'
       IGRID   = 3
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXY,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXY,IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
   ELSE
diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90
index 07f211706..9219d2832 100644
--- a/src/MNH/turb_hor_thermo_corr.f90
+++ b/src/MNH/turb_hor_thermo_corr.f90
@@ -16,7 +16,7 @@ INTERFACE
 !
       SUBROUTINE TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI,               &
                       OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PINV_PDXX,PINV_PDYY,                           &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PTHVREF,                                       &
@@ -25,7 +25,8 @@ INTERFACE
                       PLOCPEXNM,PATHETA,PAMOIST,PSRCM,               &
                       PSIGS                                          )
 !
-
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
 INTEGER,                INTENT(IN)   :: KRRL          ! number of liquid water var.
 INTEGER,                INTENT(IN)   :: KRRI          ! number of ice water var.
@@ -35,8 +36,7 @@ LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid
 !                                                    condensation
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -75,9 +75,9 @@ END INTERFACE
 !
 END MODULE MODI_TURB_HOR_THERMO_CORR
 !     ################################################################
-      SUBROUTINE TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI,              &
+      SUBROUTINE TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI,               &
                       OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PINV_PDXX,PINV_PDYY,                           &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PTHVREF,                                       &
@@ -130,6 +130,7 @@ END MODULE MODI_TURB_HOR_THERMO_CORR
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 !
@@ -164,8 +165,7 @@ LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid
 !                                                    condensation
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -209,6 +209,7 @@ INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 INTEGER             :: IKB,IKE,IKU
                                     ! Index values for the Beginning and End
                                     ! mass points of the domain  
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
@@ -221,6 +222,8 @@ REAL :: ZTIME1, ZTIME2
 !*       1.   PRELIMINARY COMPUTATIONS
 !             ------------------------
 !
+YFMFILE = TPFILE%CNAME
+!
 IKB = 1+JPVEXT               
 IKE = SIZE(PTHLM,3)-JPVEXT   
 IKU = SIZE(PTHLM,3)
@@ -288,7 +291,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
     YCOMMENT='X_Y_Z_THL_HVAR (KELVIN**2)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 !
 ! Storage in the LES configuration (addition to TURB_VER computation)
@@ -370,7 +373,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
       YCOMMENT='X_Y_Z_THLR_HCOR (KELVIN*KG/KG)'
       IGRID   = 1
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
 !   Storage in the LES configuration (addition to TURB_VER computation)
@@ -432,7 +435,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) &
       YCOMMENT='X_Y_Z_R_HVAR (KG/KG **2)'
       IGRID   = 1
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
     !
     !   Storage in the LES configuration (addition to TURB_VER computation)
diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90
index c61b7e549..3b0c8944f 100644
--- a/src/MNH/turb_hor_thermo_flux.f90
+++ b/src/MNH/turb_hor_thermo_flux.f90
@@ -16,7 +16,7 @@ INTERFACE
 !
       SUBROUTINE TURB_HOR_THERMO_FLUX(KSPLT, KRR, KRRL, KRRI,        &
                       OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PDIRCOSXW,PDIRCOSYW,                           &
@@ -26,7 +26,7 @@ INTERFACE
                       PATHETA,PAMOIST,PSRCM,PFRAC_ICE,               &
                       PRTHLS,PRRS                                    )
 !
-
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 INTEGER,                  INTENT(IN)    :: KSPLT         ! split process index
 INTEGER,                  INTENT(IN)    :: KRR           ! number of moist var.
@@ -38,8 +38,7 @@ LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid 
 !                                                    condensation
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -84,7 +83,7 @@ END MODULE MODI_TURB_HOR_THERMO_FLUX
 !     ################################################################
       SUBROUTINE TURB_HOR_THERMO_FLUX(KSPLT, KRR, KRRL, KRRI,        &
                       OCLOSE_OUT,OTURB_FLX,OSUBG_COND,               &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PDIRCOSXW,PDIRCOSYW,                           &
@@ -139,6 +138,7 @@ END MODULE MODI_TURB_HOR_THERMO_FLUX
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 !
@@ -173,8 +173,7 @@ LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid 
 !                                                    condensation
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -225,6 +224,7 @@ INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 INTEGER             :: IKB,IKE,IKU
                                     ! Index values for the Beginning and End
                                     ! mass points of the domain  
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
@@ -237,6 +237,8 @@ REAL :: ZTIME1, ZTIME2
 !*       1.   PRELIMINARY COMPUTATIONS
 !             ------------------------
 !
+YFMFILE = TPFILE%CNAME
+!
 IKB = 1+JPVEXT               
 IKE = SIZE(PTHLM,3)-JPVEXT    
 IKU = SIZE(PTHLM,3)
@@ -332,7 +334,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   YCOMMENT='X_Y_Z_UTHL_FLX (KELVIN*M/S)  '
   IGRID   = 2
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -429,7 +431,7 @@ IF (KRR/=0) THEN
     YCOMMENT='X_Y_Z_UR_FLX (KG/KG * M/S)  '
     IGRID   = 2
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !
   IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -471,7 +473,7 @@ END IF
 !!    YRECFM  ='UVPT_FLX'
 !!    YCOMMENT='X_Y_Z_UVPT_FLX (KELVIN * M/S)  '
 !!    IGRID   = 2
-!!    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZVPTU,IGRID,ILENCH,YCOMMENT,IRESP)
+!!    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZVPTU,IGRID,ILENCH,YCOMMENT,IRESP)
 !!  END IF
 !!!
 !!ELSE
@@ -568,7 +570,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   YCOMMENT='X_Y_Z_VTHL_FLX (KELVIN*M/S)  '
   IGRID   = 3
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -674,7 +676,7 @@ IF (KRR/=0) THEN
     YCOMMENT='X_Y_Z_VR_FLX (KG/KG * M/S)  '
     IGRID   = 3
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !
   IF (KSPLT==1 .AND. LLES_CALL) THEN
@@ -720,7 +722,7 @@ END IF
 !!    YRECFM  ='VVPT_FLX'
 !!    YCOMMENT='X_Y_Z_VVPT_FLX (KELVIN * M/S)  '
 !!    IGRID   = 3
-!!    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZVPTV,IGRID,ILENCH,YCOMMENT,IRESP)
+!!    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZVPTV,IGRID,ILENCH,YCOMMENT,IRESP)
 !!  END IF
 !!!
 !!ELSE
diff --git a/src/MNH/turb_hor_uv.f90 b/src/MNH/turb_hor_uv.f90
index ead785843..589fdeb33 100644
--- a/src/MNH/turb_hor_uv.f90
+++ b/src/MNH/turb_hor_uv.f90
@@ -16,7 +16,7 @@ INTERFACE
 !
       SUBROUTINE TURB_HOR_UV(KSPLT,                                  &
                       OCLOSE_OUT,OTURB_FLX,                          &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PDIRCOSZW,                                     &
@@ -27,14 +27,14 @@ INTERFACE
                       PDP,                                           &
                       PRUS,PRVS                                      )
 !
-
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
 LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
                                                          ! file opening       
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -82,7 +82,7 @@ END MODULE MODI_TURB_HOR_UV
 !     ################################################################
       SUBROUTINE TURB_HOR_UV(KSPLT,                                  &
                       OCLOSE_OUT,OTURB_FLX,                          &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
                       PDIRCOSZW,                                     &
@@ -134,6 +134,7 @@ END MODULE MODI_TURB_HOR_UV
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 !
@@ -162,8 +163,7 @@ LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
                                                          ! file opening       
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -218,6 +218,7 @@ INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 INTEGER             :: IKB,IKE,IKU
                                     ! Index values for the Beginning and End
                                     ! mass points of the domain  
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
@@ -230,6 +231,8 @@ REAL :: ZTIME1, ZTIME2
 !*       1.   PRELIMINARY COMPUTATIONS
 !             ------------------------
 !
+YFMFILE = TPFILE%CNAME
+!
 IKB = 1+JPVEXT               
 IKE = SIZE(PUM,3)-JPVEXT    
 IKU = SIZE(PUM,3)
@@ -293,7 +296,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   YRECFM  ='UV_FLX'
   YCOMMENT='X_Y_Z_UV_FLX ( (M/S) **2 )  '
   IGRID   = 5
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !
diff --git a/src/MNH/turb_hor_uw.f90 b/src/MNH/turb_hor_uw.f90
index ef5ec34bd..e24c21c15 100644
--- a/src/MNH/turb_hor_uw.f90
+++ b/src/MNH/turb_hor_uw.f90
@@ -16,7 +16,7 @@ INTERFACE
 !
       SUBROUTINE TURB_HOR_UW(KSPLT,                                  &
                       OCLOSE_OUT,OTURB_FLX,KRR,                      &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDZZ,PMZM_PRHODJ,            &
                       PDXX,PDZZ,PDZX,                                &
                       PRHODJ,PTHVREF,                                &
@@ -25,7 +25,7 @@ INTERFACE
                       PDP,                                           &
                       PRUS,PRWS                                      )
 !
-
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
 LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
@@ -33,8 +33,7 @@ LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -71,7 +70,7 @@ END MODULE MODI_TURB_HOR_UW
 !     ################################################################
       SUBROUTINE TURB_HOR_UW(KSPLT,                                  &
                       OCLOSE_OUT,OTURB_FLX,KRR,                      &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDXX,PINV_PDZZ,PMZM_PRHODJ,            &
                       PDXX,PDZZ,PDZX,                                &
                       PRHODJ,PTHVREF,                                &
@@ -126,6 +125,7 @@ END MODULE MODI_TURB_HOR_UW
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_NSV
@@ -154,8 +154,7 @@ LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -197,6 +196,7 @@ INTEGER             :: IKB,IKE,IKU
                                     ! Index values for the Beginning and End
                                     ! mass points of the domain  
 INTEGER             :: JSV          ! scalar loop counter
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
@@ -208,6 +208,8 @@ REAL :: ZTIME1, ZTIME2
 !*       1.   PRELIMINARY COMPUTATIONS
 !             ------------------------
 !
+YFMFILE = TPFILE%CNAME
+!
 IKB = 1+JPVEXT               
 IKE = SIZE(PWM,3)-JPVEXT    
 IKU = SIZE(PWM,3)
@@ -239,7 +241,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   YCOMMENT='X_Y_Z_UW_HFLX ( (M/S) **2 )  '
   IGRID   = 6
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !
diff --git a/src/MNH/turb_hor_vw.f90 b/src/MNH/turb_hor_vw.f90
index 2918dfc39..511cddb92 100644
--- a/src/MNH/turb_hor_vw.f90
+++ b/src/MNH/turb_hor_vw.f90
@@ -16,7 +16,7 @@ INTERFACE
 !
       SUBROUTINE TURB_HOR_VW(KSPLT,                                  &
                       OCLOSE_OUT,OTURB_FLX,KRR,                      &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,            &
                       PDYY,PDZZ,PDZY,                                &
                       PRHODJ,PTHVREF,                                &
@@ -25,7 +25,7 @@ INTERFACE
                       PDP,                                           &
                       PRVS,PRWS                                      )
 !
-
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
 LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
@@ -33,8 +33,7 @@ LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -67,7 +66,7 @@ END MODULE MODI_TURB_HOR_VW
 !     ################################################################
       SUBROUTINE TURB_HOR_VW(KSPLT,                                  &
                       OCLOSE_OUT,OTURB_FLX,KRR,                      &
-                      HFMFILE,HLUOUT,                                &
+                      TPFILE,HLUOUT,                                 &
                       PK,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,            &
                       PDYY,PDZZ,PDZY,                                &
                       PRHODJ,PTHVREF,                                &
@@ -122,6 +121,7 @@ END MODULE MODI_TURB_HOR_VW
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_NSV
@@ -152,8 +152,7 @@ LOGICAL,                  INTENT(IN)    ::  OCLOSE_OUT   ! switch for syncronous
 LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-CHARACTER(LEN=*),         INTENT(IN)    ::  HFMFILE      ! Name of the output
-                                                         ! FM-file 
+TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
 CHARACTER(LEN=*),         INTENT(IN)    ::  HLUOUT       ! Output-listing name
                                                          ! for model n
 !
@@ -194,6 +193,7 @@ INTEGER             :: IKB,IKE,IKU
                                     ! Index values for the Beginning and End
                                     ! mass points of the domain  
 INTEGER             :: JSV          ! scalar loop counter
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
@@ -205,6 +205,8 @@ REAL :: ZTIME1, ZTIME2
 !*       1.   PRELIMINARY COMPUTATIONS
 !             ------------------------
 !
+YFMFILE = TPFILE%CNAME
+!
 IKB = 1+JPVEXT               
 IKE = SIZE(PWM,3)-JPVEXT    
 IKU = SIZE(PWM,3)
@@ -243,7 +245,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN
   YCOMMENT='X_Y_Z_VW_HFLX ( (M/S) **2 )  '
   IGRID   = 7
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! compute the source for rho*V due to this residual flux ( the other part is
diff --git a/src/MNH/turb_ver.f90 b/src/MNH/turb_ver.f90
index e4fb09672..d828ead7f 100644
--- a/src/MNH/turb_ver.f90
+++ b/src/MNH/turb_ver.f90
@@ -17,7 +17,7 @@ INTERFACE
       SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
                       OCLOSE_OUT,OTURB_FLX,                         &
                       HTURBDIM,HTOM,PIMPL,PEXPL,                    & 
-                      PTSTEP, HFMFILE,HLUOUT,                       &
+                      PTSTEP, TPFILE,HLUOUT,                        &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,PTHVREF,                               &
@@ -31,6 +31,8 @@ INTERFACE
                       PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,             &
                       PDP,PTP,PSIGS,PWTH,PWRC,PWSV                  )
 
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
 INTEGER,                INTENT(IN)   :: KRRL          ! number of liquid water var.
@@ -44,8 +46,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
 CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -128,7 +129,7 @@ END MODULE MODI_TURB_VER
       SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI,              &
                       OCLOSE_OUT,OTURB_FLX,                         &
                       HTURBDIM,HTOM,PIMPL,PEXPL,                    & 
-                      PTSTEP, HFMFILE,HLUOUT,                       &
+                      PTSTEP, TPFILE,HLUOUT,                        &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,PTHVREF,                               &
@@ -331,6 +332,7 @@ END MODULE MODI_TURB_VER
 !
 USE MODD_CST
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_NSV, ONLY : NSV
@@ -376,8 +378,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
 CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -486,6 +487,7 @@ REAL, ALLOCATABLE, DIMENSION(:,:,:,:)  ::  &
 INTEGER             :: IRESP        ! Return code of FM routines 
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file 
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
@@ -527,6 +529,7 @@ ALLOCATE ( &
 !
 !*       1.   PRELIMINARIES
 !             -------------
+YFMFILE = TPFILE%CNAME
 !
 PTP (:,:,:) = 0.
 PDP (:,:,:) = 0.
@@ -541,7 +544,7 @@ IKE=KKU-JPVEXT_TURB*KKL
 !
 CALL PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_FLX,        &
              HTURBDIM,                             &
-             HFMFILE,HLUOUT,                       &
+             TPFILE,HLUOUT,                        &
              PDXX,PDYY,PDZZ,PDZX,PDZY,             &
              PTHVREF,PLOCPEXNM,PATHETA,PAMOIST,    &
              PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, &
@@ -614,7 +617,7 @@ END IF
   CALL  TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,               &
                         OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
                         PIMPL,PEXPL,PTSTEP,                           &
-                        HFMFILE,HLUOUT,                               &
+                        TPFILE,HLUOUT,                                &
                         PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                         PRHODJ,PTHVREF,                               &
                         PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -630,7 +633,7 @@ END IF
   CALL  TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,               &
                         OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
                         PIMPL,PEXPL,                                  &
-                        HFMFILE,HLUOUT,                               &
+                        TPFILE,HLUOUT,                                &
                         PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,           &
                         PRHODJ,PTHVREF,                               &
                         PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -659,7 +662,7 @@ END IF
 CALL  TURB_VER_DYN_FLUX(KKA,KKU,KKL,                                &
                       OCLOSE_OUT,OTURB_FLX,KRR,                     &
                       HTURBDIM,PIMPL,PEXPL,PTSTEP,                  &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,                                       &
@@ -679,7 +682,7 @@ IF (SIZE(PSVM,4)>0)                                                 &
 CALL  TURB_VER_SV_FLUX(KKA,KKU,KKL,                                 &
                       OCLOSE_OUT,OTURB_FLX,HTURBDIM,                &
                       PIMPL,PEXPL,PTSTEP,                           &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDZZ,PDIRCOSZW,                               &
                       PRHODJ,PWM,                                   &
                       PSFSVM,PSFSVP,                                &
@@ -689,7 +692,7 @@ CALL  TURB_VER_SV_FLUX(KKA,KKU,KKL,                                 &
 !
 !
 IF (SIZE(PSVM,4)>0 .AND. LLES_CALL)                                 &
-CALL  TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,                               &
+CALL  TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,                   &
                       PDZZ,                                         &
                       PTHLM,PRM,PTHVREF,                            &
                       PLOCPEXNM,PATHETA,PAMOIST,PSRCM,ZPHI3,ZPSI3,  &
@@ -719,7 +722,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_PHI3 (0)'
   IGRID   = 4
   ILENCH=LEN(YCOMMENT)
-  CALL  FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZPHI3,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL  FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZPHI3,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the Turbulent Schmidt number
 ! 
@@ -728,7 +731,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
   IGRID   = 4
   ILENCH=LEN(YCOMMENT)
 !
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZPSI3,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZPSI3,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !
 ! stores the Turbulent Schmidt number for the scalar variables
@@ -738,7 +741,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
     YCOMMENT='X_Y_Z_'//YRECFM//' (0)'
     IGRID   = 4
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZPSI_SV(:,:,:,JSV),   &
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZPSI_SV(:,:,:,JSV),   &
                 IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
 
diff --git a/src/MNH/turb_ver_dyn_flux.f90 b/src/MNH/turb_ver_dyn_flux.f90
index 3224c540b..1c9197f1b 100644
--- a/src/MNH/turb_ver_dyn_flux.f90
+++ b/src/MNH/turb_ver_dyn_flux.f90
@@ -17,7 +17,7 @@ INTERFACE
                       OCLOSE_OUT,OTURB_FLX,KRR,                     &
                       HTURBDIM,PIMPL,PEXPL,                         &
                       PTSTEP,                                       &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,                                       &
@@ -27,6 +27,7 @@ INTERFACE
                       PRUS,PRVS,PRWS,                               &
                       PDP,PTP                                       )
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
 INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
@@ -40,8 +41,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -98,7 +98,7 @@ END MODULE MODI_TURB_VER_DYN_FLUX
                       OCLOSE_OUT,OTURB_FLX,KRR,                     &
                       HTURBDIM,PIMPL,PEXPL,                         &
                       PTSTEP,                                       &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,                                       &
@@ -294,6 +294,7 @@ END MODULE MODI_TURB_VER_DYN_FLUX
 USE MODD_CONF
 USE MODD_CST
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_NSV
@@ -330,8 +331,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -403,6 +403,7 @@ INTEGER             :: IIB,IIE, &   ! I index values for the Beginning and End
 INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain
 INTEGER             :: JSV          ! scalar loop counter
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1) :: ZCOEFFLXU, &
@@ -418,6 +419,8 @@ REAL :: ZTIME1, ZTIME2
 !*       1.   PRELIMINARIES
 !             -------------
 !
+YFMFILE = TPFILE%CNAME
+!
 IIU=SIZE(PUM,1)
 IJU=SIZE(PUM,2)
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
@@ -524,7 +527,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_UW_VFLX (M**2/S**2)'
   IGRID   = 4  
   ILENCH=LEN(YCOMMENT) 
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! first part of total momentum flux
@@ -693,7 +696,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_VW_VFLX (M**2/S**2)'
   IGRID   = 4
   ILENCH=LEN(YCOMMENT)  
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! second part of total momentum flux
@@ -808,7 +811,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT .AND. HTURBDIM == '1DIM') THEN
   YCOMMENT='X_Y_Z_W_VVAR (M**2/S**2)'
   IGRID   = 1  
   ILENCH=LEN(YCOMMENT) 
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !----------------------------------------------------------------------------
diff --git a/src/MNH/turb_ver_sv_flux.f90 b/src/MNH/turb_ver_sv_flux.f90
index c3ec5d032..dbabf71d3 100644
--- a/src/MNH/turb_ver_sv_flux.f90
+++ b/src/MNH/turb_ver_sv_flux.f90
@@ -18,7 +18,7 @@ INTERFACE
                       OCLOSE_OUT,OTURB_FLX,HTURBDIM,                &
                       PIMPL,PEXPL,                                  &
                       PTSTEP,                                       &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDZZ,PDIRCOSZW,                               &
                       PRHODJ,PWM,                                   &
                       PSFSVM,PSFSVP,                                &
@@ -26,6 +26,8 @@ INTERFACE
                       PTKEM,PLM,PPSI_SV,                            &
                       PRSVS,PWSV                                    )
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
 INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
 INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR
@@ -37,8 +39,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -78,7 +79,7 @@ END MODULE MODI_TURB_VER_SV_FLUX
                       OCLOSE_OUT,OTURB_FLX,HTURBDIM,                &
                       PIMPL,PEXPL,                                  &
                       PTSTEP,                                       &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDZZ,PDIRCOSZW,                               &
                       PRHODJ,PWM,                                   &
                       PSFSVM,PSFSVP,                                &
@@ -274,6 +275,7 @@ END MODULE MODI_TURB_VER_SV_FLUX
 !
 USE MODD_CST
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_CONF
@@ -309,8 +311,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -362,6 +363,7 @@ INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain
 INTEGER             :: JSV          ! loop counters
 INTEGER             :: JK           ! loop
 INTEGER             :: ISV          ! number of scalar var.
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
@@ -373,7 +375,8 @@ REAL :: ZCSVP = 4.0  ! constant for scalar flux presso-correlation (RS81)
 !*       1.   PRELIMINARIES
 !             -------------
 !
-
+YFMFILE = TPFILE%CNAME
+!
 IKB=KKA+JPVEXT_TURB*KKL
 IKE=KKU-JPVEXT_TURB*KKL
 IKT=SIZE(PSVM,3)
@@ -457,7 +460,7 @@ DO JSV=1,ISV
     YCOMMENT='X_Y_Z_'//YRECFM//' (SVUNIT*M/S)'
     IGRID   = 4  
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !
   ! Storage in the LES configuration
diff --git a/src/MNH/turb_ver_thermo_corr.f90 b/src/MNH/turb_ver_thermo_corr.f90
index e3f63e18f..be4c50886 100644
--- a/src/MNH/turb_ver_thermo_corr.f90
+++ b/src/MNH/turb_ver_thermo_corr.f90
@@ -17,7 +17,7 @@ INTERFACE
       SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
                       OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
                       PIMPL,PEXPL,                                  &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,           &
                       PRHODJ,PTHVREF,                               &
                       PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -30,6 +30,8 @@ INTERFACE
                       PFWTH,PFWR,PFTH2,PFR2,PFTHR,                  &
                       PTHLP,PRP,PSIGS                          )
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
 INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
 INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR 
@@ -44,8 +46,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
 CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -119,7 +120,7 @@ END MODULE MODI_TURB_VER_THERMO_CORR
       SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR, KRRL, KRRI,  &
                       OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
                       PIMPL,PEXPL,                                  &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,           &
                       PRHODJ,PTHVREF,                               &
                       PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -319,6 +320,7 @@ END MODULE MODI_TURB_VER_THERMO_CORR
 !
 USE MODD_CST
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_CONF
 USE MODD_LES
@@ -358,8 +360,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
 CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -440,6 +441,7 @@ INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 INTEGER             :: IKB,IKE      ! I index values for the Beginning and End
                                     ! mass points of the domain in the 3 direct.
 INTEGER             :: I1,I2        ! For ZCOEFF allocation
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(:,:,:),ALLOCATABLE  :: ZCOEFF
@@ -459,7 +461,8 @@ LOGICAL :: GFTHR    ! flag to use w'th'r'
 !*       1.   PRELIMINARIES
 !             -------------
 !
-
+YFMFILE = TPFILE%CNAME
+!
 IKB=KKA+JPVEXT_TURB*KKL
 IKE=KKU-JPVEXT_TURB*KKL
 I1=MIN(KKA+JPVEXT_TURB*KKL,KKA+JPVEXT_TURB*KKL+2*KKL)
@@ -587,7 +590,7 @@ END IF
     YCOMMENT='X_Y_Z_THL_VVAR (KELVIN**2)'
     IGRID   = 1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 !
 ! and we store in LES configuration
@@ -708,7 +711,7 @@ END IF
       YCOMMENT='X_Y_Z_THLRCONS_VCOR (KELVIN*KG/KG)'
       IGRID   = 1
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
 ! and we store in LES configuration
@@ -809,7 +812,7 @@ END IF
       YCOMMENT='X_Y_Z_RTOT_VVAR (KG/KG **2)'
       IGRID   = 1
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
     !
     ! and we store in LES configuration
diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90
index 73c97baaf..72b8262d6 100644
--- a/src/MNH/turb_ver_thermo_flux.f90
+++ b/src/MNH/turb_ver_thermo_flux.f90
@@ -17,7 +17,7 @@ INTERFACE
                       OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
                       PIMPL,PEXPL,                                  &
                       PTSTEP,                                       &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PRHODJ,PTHVREF,                               &
                       PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -30,6 +30,8 @@ INTERFACE
                       PFWTH,PFWR,PFTH2,PFR2,PFTHR,PBL_DEPTH,        &
                       PWTHV,PRTHLS,PRRS,PTHLP,PRP,PTP,PWTH,PWRC     )
 !
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
 INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
 INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
 INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR O
@@ -45,8 +47,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
 CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -130,7 +131,7 @@ END MODULE MODI_TURB_VER_THERMO_FLUX
                       OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
                       PIMPL,PEXPL,                                  &
                       PTSTEP,                                       &
-                      HFMFILE,HLUOUT,                               &
+                      TPFILE,HLUOUT,                                &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PRHODJ,PTHVREF,                               &
                       PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -336,6 +337,7 @@ END MODULE MODI_TURB_VER_THERMO_FLUX
 !
 USE MODD_CST
 USE MODD_CTURB
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_CONF
 USE MODD_LES
@@ -377,8 +379,7 @@ CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
 CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file 
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 !
@@ -469,6 +470,7 @@ INTEGER             :: IKB,IKE      ! I index values for the Beginning and End
                                     ! mass points of the domain in the 3 direct.
 INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain 
+CHARACTER (LEN=28)  :: YFMFILE      ! Name of FM-file to write
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
 CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
@@ -486,6 +488,8 @@ LOGICAL :: GFTHR    ! flag to use w'th'r'
 !*       1.   PRELIMINARIES
 !             -------------
 !
+YFMFILE = TPFILE%CNAME
+!
 IKT  =SIZE(PTHLM,3)  
 IKTE =IKT-JPVEXT_TURB  
 IKTB =1+JPVEXT_TURB               
@@ -620,7 +624,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
   YCOMMENT='X_Y_Z_THW_FLX (K*M/S)'
   IGRID   = 4  
   ILENCH=LEN(YCOMMENT) 
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! Contribution of the conservative temperature flux to the buoyancy flux
@@ -792,7 +796,7 @@ IF (KRR /= 0) THEN
     YCOMMENT='X_Y_Z_RCONSW_FLX (KG*M/S/KG)'
     IGRID   = 4  
     ILENCH=LEN(YCOMMENT) 
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !
   ! Contribution of the conservative water flux to the Buoyancy flux
@@ -868,7 +872,7 @@ IF ( ((OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
     YCOMMENT='X_Y_Z_RCW_FLX (KG*M/S/KG)'
     IGRID   = 4  
     ILENCH=LEN(YCOMMENT) 
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !  
 ! and we store in LES configuration this subgrid flux <w'rc'>
diff --git a/src/MNH/uv_to_zonal_and_merid.f90 b/src/MNH/uv_to_zonal_and_merid.f90
index cdcc22678..f30f3ba30 100644
--- a/src/MNH/uv_to_zonal_and_merid.f90
+++ b/src/MNH/uv_to_zonal_and_merid.f90
@@ -8,28 +8,32 @@
       MODULE MODI_UV_TO_ZONAL_AND_MERID
 !     #################################
 INTERFACE UV_TO_ZONAL_AND_MERID
-      SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT)
+      SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,TPFILE,HRECU,HRECV,HCOMMENT)
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PU    ! input U component
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PV    ! input V component
 INTEGER,                INTENT(IN) :: KGRID ! grid positions of components
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PZC   ! output U component
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PMC   ! output V component
-CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE   ! Name of FM-file to write
+TYPE(TFILEDATA),  OPTIONAL, INTENT(IN) :: TPFILE    ! Output file
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU     ! Name of the U article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV     ! Name of the V article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT  ! Comment string
 !
 END SUBROUTINE UV_TO_ZONAL_AND_MERID3D
 !
-      SUBROUTINE UV_TO_ZONAL_AND_MERID2D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT)
+      SUBROUTINE UV_TO_ZONAL_AND_MERID2D(PU,PV,KGRID,PZC,PMC,TPFILE,HRECU,HRECV,HCOMMENT)
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 REAL, DIMENSION(:,:), INTENT(IN) :: PU    ! input U component
 REAL, DIMENSION(:,:), INTENT(IN) :: PV    ! input V component
 INTEGER,              INTENT(IN) :: KGRID ! grid positions of components
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PZC   ! output U component
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PMC   ! output V component
-CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE   ! Name of FM-file to write
+TYPE(TFILEDATA),  OPTIONAL, INTENT(IN) :: TPFILE    ! Output file
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU     ! Name of the U article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV     ! Name of the V article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT  ! Comment string
@@ -44,14 +48,16 @@ END MODULE MODI_UV_TO_ZONAL_AND_MERID
 !     ###################################
 INTERFACE
 !
-      SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT)
+      SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,TPFILE,HRECU,HRECV,HCOMMENT)
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PU    ! input U component
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PV    ! input V component
 INTEGER,                INTENT(IN) :: KGRID ! grid positions of components
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PZC   ! output U component
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PMC   ! output V component
-CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE   ! Name of FM-file to write
+TYPE(TFILEDATA),  OPTIONAL, INTENT(IN) :: TPFILE    ! Output file
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU     ! Name of the U article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV     ! Name of the V article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT  ! Comment string
@@ -61,7 +67,7 @@ END INTERFACE
 END MODULE MODI_UV_TO_ZONAL_AND_MERID3D
 !
 !     ##########################################
-      SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT)
+      SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC, TPFILE,HRECU,HRECV,HCOMMENT)
 !     ##########################################
 !
 !!****  *UV_TO_ZONAL_AND_MERID* - compute the zonal and meridien components
@@ -100,6 +106,7 @@ END MODULE MODI_UV_TO_ZONAL_AND_MERID3D
 USE MODD_CONF
 USE MODD_CST
 USE MODD_GRID
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_DIM_n
 USE MODD_GRID_n
@@ -119,7 +126,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PV    ! input V component
 INTEGER,                INTENT(IN) :: KGRID ! grid positions of components
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PZC   ! output U component
 REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PMC   ! output V component
-CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE   ! Name of FM-file to write
+TYPE(TFILEDATA),  OPTIONAL, INTENT(IN) :: TPFILE    ! Output file
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU     ! Name of the U article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV     ! Name of the V article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT  ! Comment string
@@ -136,6 +143,7 @@ INTEGER           :: IGRID          ! grid indicator
 INTEGER           :: IRESP          ! return-code for the file routines
 INTEGER           :: ILENCH         ! length of comment string
 INTEGER           :: ILUOUT         ! logical unit for output listing
+CHARACTER(LEN=28) :: YFMFILE        ! Name of FM-file to write
 !-----------------------------------------------------------------
 !
 
@@ -196,19 +204,20 @@ ELSE
   RETURN
 END IF
 !
-IF (PRESENT(HFMFILE)) THEN
+IF (PRESENT(TPFILE)) THEN
+  YFMFILE = TPFILE%CNAME
   ILENCH=LEN(HCOMMENT)
   SELECT CASE (KGRID)
     CASE(23)
       IGRID=2
-      CALL FMWRIT(HFMFILE,HRECU,CLUOUT,'XY',ZZC,IGRID,ILENCH,HCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,HRECU,CLUOUT,'XY',ZZC,IGRID,ILENCH,HCOMMENT,IRESP)
       IGRID=3
-      CALL FMWRIT(HFMFILE,HRECV,CLUOUT,'XY',ZMC,IGRID,ILENCH,HCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,HRECV,CLUOUT,'XY',ZMC,IGRID,ILENCH,HCOMMENT,IRESP)
     CASE(11,0)
       IGRID=1
-      CALL FMWRIT(HFMFILE,HRECU,CLUOUT,'XY',ZZC,IGRID,ILENCH,HCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,HRECU,CLUOUT,'XY',ZZC,IGRID,ILENCH,HCOMMENT,IRESP)
       IGRID=1
-      CALL FMWRIT(HFMFILE,HRECV,CLUOUT,'XY',ZMC,IGRID,ILENCH,HCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,HRECV,CLUOUT,'XY',ZMC,IGRID,ILENCH,HCOMMENT,IRESP)
   END SELECT
 ELSE IF (PRESENT(PZC) .AND. PRESENT(PMC)) THEN
   PZC(:,:,:) = ZZC(:,:,:)
@@ -226,7 +235,7 @@ END SUBROUTINE UV_TO_ZONAL_AND_MERID3D
 !
 !
 !     ##########################################
-      SUBROUTINE UV_TO_ZONAL_AND_MERID2D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT)
+      SUBROUTINE UV_TO_ZONAL_AND_MERID2D(PU,PV,KGRID,PZC,PMC,TPFILE,HRECU,HRECV,HCOMMENT)
 !     ##########################################
 !
 !!****  *UV_TO_ZONAL_AND_MERID* - compute the zonal and meridien components
@@ -266,6 +275,7 @@ USE MODD_LUNIT_n
 USE MODI_UV_TO_ZONAL_AND_MERID3D
 USE MODE_FM
 USE MODE_FMWRIT
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 IMPLICIT NONE
 !
@@ -276,7 +286,7 @@ REAL, DIMENSION(:,:), INTENT(IN) :: PV    ! input V component
 INTEGER,              INTENT(IN) :: KGRID ! grid positions of components
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PZC   ! output U component
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PMC   ! output V component
-CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE   ! Name of FM-file to write
+TYPE(TFILEDATA),  OPTIONAL, INTENT(IN) :: TPFILE    ! Output file
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU     ! Name of the U article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV     ! Name of the V article
 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT  ! Comment string
@@ -289,6 +299,7 @@ INTEGER           :: IGRID          ! grid indicator
 INTEGER           :: IRESP          ! return-code for the file routines
 INTEGER           :: ILENCH         ! length of comment string
 INTEGER           :: ILUOUT         ! logical unit for output listing
+CHARACTER(LEN=28) :: YFMFILE        ! Name of FM-file to write
 !
 !-----------------------------------------------------------------
 !
@@ -299,19 +310,20 @@ ZV3D(:,:,1)=PV(:,:)
 !
 CALL UV_TO_ZONAL_AND_MERID3D(ZU3D,ZV3D,KGRID,PZC=ZZC3D,PMC=ZMC3D)
 !
-IF(PRESENT(HFMFILE)) THEN
+IF(PRESENT(TPFILE)) THEN
+  YFMFILE = TPFILE%CNAME
   ILENCH=LEN(HCOMMENT)
   SELECT CASE (KGRID)
     CASE(23)
       IGRID=2
-      CALL FMWRIT(HFMFILE,HRECU,CLUOUT,'XY',ZZC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,HRECU,CLUOUT,'XY',ZZC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP)
       IGRID=3
-      CALL FMWRIT(HFMFILE,HRECV,CLUOUT,'XY',ZMC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,HRECV,CLUOUT,'XY',ZMC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP)
     CASE(11,0)
       IGRID=1
-      CALL FMWRIT(HFMFILE,HRECU,CLUOUT,'XY',ZZC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,HRECU,CLUOUT,'XY',ZZC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP)
       IGRID=1
-      CALL FMWRIT(HFMFILE,HRECV,CLUOUT,'XY',ZMC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,HRECV,CLUOUT,'XY',ZMC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP)
   END SELECT
 ELSE IF (PRESENT(PZC).AND.PRESENT(PMC)) THEN
   PZC(:,:)=ZZC3D(:,:,1)
diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90
index 911aa344f..8d9a8fe96 100644
--- a/src/MNH/write_lfifm1_for_diag.f90
+++ b/src/MNH/write_lfifm1_for_diag.f90
@@ -334,6 +334,8 @@ REAL,DIMENSION(:,:,:,:), ALLOCATABLE :: ZTMP1, ZTMP2, ZTMP3, ZTMP4
 !
 !*       0.     ARRAYS BOUNDS INITIALIZATION
 !
+YFMFILE2 = TPFILE%CNAME
+!
 CALL GET_DIM_EXT_ll ('B',IIU,IJU)
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKU=NKMAX+2*JPVEXT
@@ -705,7 +707,7 @@ IF (LVAR_RS) THEN
   IF (LWIND_ZM) THEN
     YCOMMENT='X_Y_Z_Zonal and Meridian components of horizontal wind (M/S)'
     CALL UV_TO_ZONAL_AND_MERID(XUT,XVT,23, &
-            HFMFILE=YFMFILE2,HRECU='UM_ZM',HRECV='VM_ZM',HCOMMENT=YCOMMENT)
+            TPFILE=TPFILE,HRECU='UM_ZM',HRECV='VM_ZM',HCOMMENT=YCOMMENT)
   END IF
   !
   YRECFM='WT'
@@ -2019,7 +2021,7 @@ IF (LVAR_LS) THEN
   IF (LWIND_ZM) THEN
     YCOMMENT='X_Y_Z_Large Scale Zonal and Meridian components of horizontal wind (M/S)'
     CALL UV_TO_ZONAL_AND_MERID(XLSUM,XLSVM,23, &
-              HFMFILE=YFMFILE2,HRECU='LSUM_ZM',HRECV='LSVM_ZM',HCOMMENT=YCOMMENT)
+              TPFILE=TPFILE,HRECU='LSUM_ZM',HRECV='LSVM_ZM',HCOMMENT=YCOMMENT)
   ENDIF
   !
   YRECFM='LSWM'
@@ -2354,7 +2356,7 @@ IF (LVORT) THEN
   IF (LWIND_ZM) THEN
     YCOMMENT='X_Y_Z_Zonal and Meridian components of horizontal vorticity (M/S)'
     CALL UV_TO_ZONAL_AND_MERID(ZWORK31,ZWORK32,23, &
-                HFMFILE=YFMFILE2,HRECU='UM1_ZM',HRECV='VM1_ZM',HCOMMENT=YCOMMENT)
+                TPFILE=TPFILE,HRECU='UM1_ZM',HRECV='VM1_ZM',HCOMMENT=YCOMMENT)
   ENDIF
 !    
 ! Vorticity z
@@ -2568,7 +2570,7 @@ IF (LGEO .OR. LAGEO) THEN
     IF (LWIND_ZM) THEN
     YCOMMENT='X_Y_Z_Zonal and Meridian components of GEOstrophic wind (m/s)'
       CALL UV_TO_ZONAL_AND_MERID(ZWORK31,ZWORK32,23, &
-              HFMFILE=YFMFILE2,HRECU='UM88_ZM',HRECV='VM88_ZM',HCOMMENT=YCOMMENT)
+              TPFILE=TPFILE,HRECU='UM88_ZM',HRECV='VM88_ZM',HCOMMENT=YCOMMENT)
     ENDIF
 !
 ! wm necessary to plot vertical cross sections of wind vectors
@@ -2598,7 +2600,7 @@ IF (LGEO .OR. LAGEO) THEN
     IF (LWIND_ZM) THEN
       YCOMMENT='X_Y_Z_Zonal and Meridian components of AGEOstrophic wind (m/s)'
       CALL UV_TO_ZONAL_AND_MERID(ZWORK31,ZWORK32,23, &
-              HFMFILE=YFMFILE2,HRECU='UM89_ZM',HRECV='VM89_ZM',HCOMMENT=YCOMMENT)
+              TPFILE=TPFILE,HRECU='UM89_ZM',HRECV='VM89_ZM',HCOMMENT=YCOMMENT)
     ENDIF
 !
 ! wm necessary to plot vertical cross sections of wind vectors
diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90
index 05827e476..4a5e8c322 100644
--- a/src/MNH/write_lfifm1_for_diag_supp.f90
+++ b/src/MNH/write_lfifm1_for_diag_supp.f90
@@ -12,11 +12,13 @@
 !     ######################################
 INTERFACE
 !
-   SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP(HFMFILE)
+   SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP(TPFILE)
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 !*       0.1   Declarations of arguments
 !
-CHARACTER(LEN=28), INTENT(IN) :: HFMFILE      ! Name of FM-file to write
+TYPE(TFILEDATA),   INTENT(IN) :: TPFILE ! Output file
 !
 END SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP
 !
@@ -25,7 +27,7 @@ END INTERFACE
 END MODULE MODI_WRITE_LFIFM1_FOR_DIAG_SUPP
 !
 !     ##############################################
-      SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP(HFMFILE)
+      SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP(TPFILE)
 !     ##############################################
 !
 !!****  *WRITE_LFIFM1_FOR_DIAG_SUPP* - write records in the diag file
@@ -33,7 +35,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG_SUPP
 !!    PURPOSE
 !!    -------
 !        The purpose of this routine is to write in the file
-!     of name HFMFILE//'.lfi' with the FM routines.  
+!     of name YFMFILE//'.lfi' with the FM routines.  
 !
 !!**  METHOD
 !!    ------
@@ -93,6 +95,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG_SUPP
 !
 USE MODE_ll
 USE MODD_CST
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_CONF_n
 USE MODD_CONF
@@ -157,7 +160,7 @@ IMPLICIT NONE
 !
 !*       0.1   Declarations of arguments
 !
-CHARACTER(LEN=28), INTENT(IN) :: HFMFILE      ! Name of FM-file to write
+TYPE(TFILEDATA),   INTENT(IN) :: TPFILE ! Output file
 !
 !*       0.2   Declarations of local variables
 !
@@ -166,6 +169,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 !
+CHARACTER(LEN=28) :: YFMFILE        ! Name of FM-file to write
 CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=100):: YCOMMENT       ! Comment string
 !
@@ -225,13 +229,13 @@ ZTEMP(:,:,:)=XTHT(:,:,:)*(XPABST(:,:,:)/ XP00) **(XRD/XCPD)
 !   YCOMMENT='X_Y_latitude (degree)'
 !   IGRID=1
 !   ILENCH=LEN(YCOMMENT)
-!   CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLAT,IGRID,ILENCH,YCOMMENT,IRESP)
+!   CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XLAT,IGRID,ILENCH,YCOMMENT,IRESP)
 ! !
 !   YRECFM='LON'
 !   YCOMMENT='X_Y_longitude (degree)'
 !   IGRID=1
 !   ILENCH=LEN(YCOMMENT)
-!   CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLON,IGRID,ILENCH,YCOMMENT,IRESP)
+!   CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XLON,IGRID,ILENCH,YCOMMENT,IRESP)
 ! END IF
 ! #endif
 !
@@ -248,7 +252,7 @@ IF (NCONV_KF >= 0) THEN
   YCOMMENT    = 'X_Y_Convective Available Potentiel Energy (J/kg)'
   IGRID       = 4
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCAPE,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCAPE,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'CLTOPCONV'                              ! top height (km) of
   ZWORK21(:,:)= 0.                                       ! convective clouds
@@ -260,7 +264,7 @@ IF (NCONV_KF >= 0) THEN
   YCOMMENT    = 'X_Y_Top of Convective Cloud (km)'
   IGRID       = 4
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'CLBASCONV'                              ! base height (km) of
   ZWORK21(:,:)= 0.                                       ! convective clouds
@@ -272,7 +276,7 @@ IF (NCONV_KF >= 0) THEN
   YCOMMENT    = 'X_Y_Base of Convective Cloud (km)'
   IGRID       = 4
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 END IF
 IF (NCONV_KF >= 1) THEN
@@ -281,25 +285,25 @@ IF (NCONV_KF >= 1) THEN
   YCOMMENT    = 'X_Y_Z_CONVective heating/cooling rate (K/s)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDTHCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDTHCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'DRVCONV'
   YCOMMENT    = 'X_Y_Z_CONVective R_v tendency (1/s)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDRVCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDRVCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'DRCCONV'
   YCOMMENT    = 'X_Y_Z_CONVective R_c tendency (1/s)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDRCCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDRCCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'DRICONV'
   YCOMMENT    = 'X_Y_Z_CONVective R_i tendency (1/s)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDRICONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDRICONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !  
   IF ( LCHTRANS .AND. NSV > 0 ) THEN
     IGRID=1                                    
@@ -308,7 +312,7 @@ IF (NCONV_KF >= 1) THEN
       WRITE(YRECFM,'(A7,I3.3)')'DSVCONV',JSV
       WRITE(YCOMMENT,'(A6,A2,I3.3,A26)')'X_Y_Z_','SV',JSV,' CONVective tendency (1/s)'
       ILENCH      = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),          &
                   IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     ! microphysical C2R2 scheme scalar variables
@@ -317,7 +321,7 @@ IF (NCONV_KF >= 1) THEN
       WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1)), &
                                   ' CONVective tendency (1/s)'
       ILENCH = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     ! microphysical C3R5 scheme additional scalar variables
@@ -326,7 +330,7 @@ IF (NCONV_KF >= 1) THEN
       WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1)), &
                                   ' CONVective tendency (1/s)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),           &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),           &
                   IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     ! electrical scalar variables
@@ -335,7 +339,7 @@ IF (NCONV_KF >= 1) THEN
       WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)),&
                                   ' CONVective tendency (1/s)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),           &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),           &
                   IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     ! chemical scalar variables
@@ -344,7 +348,7 @@ IF (NCONV_KF >= 1) THEN
       WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(CNAMES(JSV-NSV_CHEMBEG+1)), &
                                   ' CONVective tendency (1/s)'
       ILENCH = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),           &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),           &
                   IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     ! lagrangian variables
@@ -353,7 +357,7 @@ IF (NCONV_KF >= 1) THEN
        WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(CLGNAMES(JSV-NSV_LGBEG+1)), &
                                   ' CONVective tendency (1/s)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),           &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),           &
                   IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
   END IF
@@ -365,25 +369,25 @@ IF (NCONV_KF >= 2) THEN
   YCOMMENT    = 'X_Y_Liquid Precipitation Convective Flux (m/s)'
   IGRID       = 4
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XPRLFLXCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XPRLFLXCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'PRSFLXCONV'
   YCOMMENT    = 'X_Y_Solid Precipitation Convective Flux (m/s)'
   IGRID       = 4
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XPRSFLXCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XPRSFLXCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'UMFCONV'
   YCOMMENT    = 'X_Y_Updraft Convective Mass Flux (kg/s m**2)'
   IGRID       = 4
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XUMFCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XUMFCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'DMFCONV'
   YCOMMENT    = 'X_Y_Downdraft Convective Mass Flux (kg/s m**2)'
   IGRID       = 4
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDMFCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDMFCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 END IF
 !-------------------------------------------------------------------------------
@@ -439,7 +443,7 @@ IF (LCLD_COV .AND. LUSERC) THEN
   YCOMMENT='X_Y_Height of Explicit CLoud top (km)'
   IGRID=4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !  Higher top of the different species of clouds
 !
@@ -470,20 +474,20 @@ IF (LCLD_COV .AND. LUSERC) THEN
     YCOMMENT='X_Y_Height of CLoud top (km)'
     IGRID=4
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   ENDIF
 !
   YRECFM='TCL'
   YCOMMENT='X_Y_Temperature of CLoud top (C)'
   IGRID=4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK22,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK22,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='CLDFR'
   YCOMMENT='X_Y_Z_Cloud Fraction (0)'
   IGRID=1
   ILENCH=LEN(YCOMMENT) 
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCLDFR,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCLDFR,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !  Visibility                                    
 !
@@ -496,7 +500,7 @@ IF (LCLD_COV .AND. LUSERC) THEN
   YCOMMENT='X_Y_Z_VISI_HOR (m)'
   IGRID   = 1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
 
   DEALLOCATE(IWORK1,IWORK2,ICL_HE_ST,GMASK2,ZWORK22)
 END IF
@@ -513,73 +517,73 @@ IF (NRAD_3D >= 0) THEN
     YCOMMENT    = 'X_Y_Z_RADiative heating/cooling rate (K/s)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDTHRAD,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDTHRAD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'FLALWD'
     YCOMMENT    = 'X_Y_Downward Long Waves on FLAT surface (W/M2)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XFLALWD,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XFLALWD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'DIRFLASWD'
     YCOMMENT    = 'X_Y_DIRect Downward Short Waves on FLAT surface (W/M2)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDIRFLASWD,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDIRFLASWD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'SCAFLASWD'
     YCOMMENT    = 'X_Y_SCAttered Downward Short Waves on FLAT surface (W/M2)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSCAFLASWD,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XSCAFLASWD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'DIRSRFSWD'
     YCOMMENT    = 'X_Y_DIRect Downward Short Waves (W/M2)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDIRSRFSWD,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDIRSRFSWD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'CLEARCOL_TM1'
     YCOMMENT    = 'TRACE OF CLOUD'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',NCLEARCOL_TM1,IGRID,ILENCH,YCOMMENT,IRESP) 
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',NCLEARCOL_TM1,IGRID,ILENCH,YCOMMENT,IRESP) 
 !
     YRECFM      = 'ZENITH'
     YCOMMENT    = 'X_Y_ZENITH (RAD)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XZENITH,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XZENITH,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'AZIM'
     YCOMMENT    = 'X_Y_AZIMuth (RAD)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XAZIM,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XAZIM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'DIR_ALB'
     YCOMMENT    = 'X_Y_DIRect ALBedo (-)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDIR_ALB,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDIR_ALB,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'SCA_ALB'
     YCOMMENT    = 'X_Y_SCAttered ALBedo (-)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSCA_ALB,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XSCA_ALB,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'EMIS'
     YCOMMENT    = 'X_Y_EMISsivity (-)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XEMIS,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XEMIS,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM      = 'TSRAD'
     YCOMMENT    = 'X_Y_RADiative Surface Temperature (K)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTSRAD,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XTSRAD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   ELSE
     PRINT*,'YOU WANT DIAGNOSTICS RELATED TO RADIATION'
@@ -597,7 +601,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,3)
     END DO
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
 !Dust optical depth
     ZWORK21(:,:)=0.0
     DO JK=IKB,IKE
@@ -611,7 +615,7 @@ IF (NRAD_3D >= 1) THEN
     YRECFM      = 'DSTAOD2D'
     YCOMMENT    = 'X_Y_DuST Aerosol Optical Depth (m)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
 !Dust extinction (optical depth per km)
     YRECFM      = 'DSTEXT'
     YCOMMENT    = 'X_Y_Z_DuST EXTinction (1/km) '
@@ -620,7 +624,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,3)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3
     ENDDO
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   IF (LSALT) THEN
 !Salt optical depth between two vertical levels
@@ -632,7 +636,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,2)
     END DO
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
 !Salt optical depth
     ZWORK21(:,:)=0.0
     DO JK=IKB,IKE
@@ -646,7 +650,7 @@ IF (NRAD_3D >= 1) THEN
     YRECFM      = 'SLTAOD2D'
     YCOMMENT    = 'X_Y_Salt Aerosol Optical Depth (m)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
 !Salt extinction (optical depth per km)
     YRECFM      = 'SLTEXT'
     YCOMMENT    = 'X_Y_Z_Salt EXTinction (1/km) '
@@ -655,7 +659,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,2)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3
     ENDDO
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   IF (LORILAM) THEN
 !Orilam anthropogenic optical depth between two vertical levels
@@ -667,7 +671,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,4)
     END DO
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
 !Orilam anthropogenic optical depth
     ZWORK21(:,:)=0.0
     DO JK=IKB,IKE
@@ -681,7 +685,7 @@ IF (NRAD_3D >= 1) THEN
     YRECFM      = 'AERAOD2D'
     YCOMMENT    = 'X_Y_Anthropogenic Aerosol Optical Depth (m)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
 !Orilam anthropogenic extinction (optical depth per km)
     YRECFM      = 'AEREXT'
     YCOMMENT    = 'X_Y_Z_Anthropogenic EXTinction (1/km) '
@@ -690,7 +694,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,4)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3
     ENDDO
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 
 END IF
@@ -747,13 +751,13 @@ IF (LEN_TRIM(CRAD_SAT) /= 0 .AND. NRR /=0) THEN
     YCOMMENT    =TRIM(YNAM_SAT(JI))//' Infra-Red Brightness Temperature (K)'
     IGRID       =1
     ILENCH      =LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZIRBT,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZIRBT,IGRID,ILENCH,YCOMMENT,IRESP)
     !
     YRECFM      =TRIM(YNAM_SAT(JI))//'_WVBT'
     YCOMMENT    =TRIM(YNAM_SAT(JI))//' Water-Vapor Brightness Temperature (K)'
     IGRID       =1
     ILENCH      =LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWVBT,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWVBT,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
   DEALLOCATE(ZIRBT,ZWVBT)
 END IF
@@ -768,12 +772,12 @@ IF (NRTTOVINFO(1,1) /= NUNDEF) THEN
 #ifdef MNH_RTTOV_8
   CALL CALL_RTTOV8(NDLON, NFLEV, NSTATM, XEMIS, XTSRAD, XSTATM, XTHT, XRT,    &
                   XPABST, XZZ, XMFCONV, XCLDFR, XUT(:,:,IKB), XVT(:,:,IKB),   &
-                  LUSERI, NRTTOVINFO, HFMFILE                                 )
+                  LUSERI, NRTTOVINFO, YFMFILE                                 )
 #else
 #ifdef MNH_RTTOV_11
   CALL CALL_RTTOV11(NDLON, NFLEV, XEMIS, XTSRAD, XTHT, XRT,    &
                   XPABST, XZZ, XMFCONV, XCLDFR, XUT(:,:,IKB), XVT(:,:,IKB),   &
-                  LUSERI, NRTTOVINFO, HFMFILE                                 )
+                  LUSERI, NRTTOVINFO, YFMFILE                                 )
 #else
 PRINT *, "RTTOV LIBRARY NOT AVAILABLE = ###CALL_RTTOV####"
 #endif
@@ -820,18 +824,18 @@ IF (CSURF=='EXTE') THEN
     !          and, output ones are in MesoNH grid   
     IF (.NOT. LCARTESIAN) THEN                                                 
       CALL UV_TO_ZONAL_AND_MERID(XCURRENT_ZON10M,XCURRENT_MER10M,IGRID,     &
-            HFMFILE=HFMFILE,HRECU='UM10',HRECV='VM10',HCOMMENT=YCOMMENT)
+            TPFILE=TPFILE,HRECU='UM10',HRECV='VM10',HCOMMENT=YCOMMENT)
     ELSE
      YRECFM      ='UM10'
      YCOMMENT    ='X_Y_UM10 (m/s)'
      IGRID       =1
      ILENCH      =LEN(YCOMMENT)
-     CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_ZON10M,IGRID,ILENCH,YCOMMENT,IRESP)
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_ZON10M,IGRID,ILENCH,YCOMMENT,IRESP)
      YRECFM      ='VM10'
      YCOMMENT    ='X_Y_VM10 (m/s)'
      IGRID       =1
      ILENCH      =LEN(YCOMMENT)
-     CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_MER10M,IGRID,ILENCH,YCOMMENT,IRESP)
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_MER10M,IGRID,ILENCH,YCOMMENT,IRESP)
     ENDIF
       !
     IF (SIZE(XTKET)>0) THEN
@@ -842,14 +846,14 @@ IF (CSURF=='EXTE') THEN
      YCOMMENT    ='X_Y_FF10MAX (m/s)'
      IGRID       =1
      ILENCH      =LEN(YCOMMENT)
-     CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   IF(ANY(XCURRENT_SFCO2/=XUNDEF))THEN
     YCOMMENT='CO2 flux (mg/m2/s)'
     ILENCH=LEN(YCOMMENT)
     YRECFM='SFCO2'
     IGRID=1
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_SFCO2,IGRID,ILENCH,   &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_SFCO2,IGRID,ILENCH,   &
     YCOMMENT,IRESP)
   END IF
   !
@@ -858,7 +862,7 @@ IF (CSURF=='EXTE') THEN
     ILENCH=LEN(YCOMMENT)
     YRECFM='SW'
     IGRID=1
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_SW,IGRID,ILENCH,      &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_SW,IGRID,ILENCH,      &
     YCOMMENT,IRESP)
   END IF
   !
@@ -867,7 +871,7 @@ IF (CSURF=='EXTE') THEN
     ILENCH=LEN(YCOMMENT)
     YRECFM='LW'
     IGRID=1
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_LW,IGRID,ILENCH,      &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_LW,IGRID,ILENCH,      &
     YCOMMENT,IRESP)
   END IF
 END IF
@@ -920,7 +924,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
     YCOMMENT='X_Y_potential temperature '//TRIM(YPRES(JK))//'hPa (K)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
 ! *********************
 ! Wind
@@ -934,7 +938,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
     YCOMMENT='X_Y_U component of wind '//TRIM(YPRES(JK))//'hPa (m/s)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
   !
   ZWORK31(:,:,:) = MYF(XVT(:,:,:))
@@ -946,7 +950,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
     YCOMMENT='X_Y_V component of wind '//TRIM(YPRES(JK))//'hPa (m/s)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
 ! *********************
 ! Water Vapour Mixing Ratio
@@ -959,7 +963,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
     YCOMMENT='X_Y_Vapor Mixing Ratio '//TRIM(YPRES(JK))//'hPa (g/kg)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
 ! *********************
 ! Geopotential in meters
@@ -973,7 +977,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
     YCOMMENT='X_Y_ALTitude '//TRIM(YPRES(JK))//'hPa (m)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
 !
   DEALLOCATE(ZWRES,ZPRES,ZWORK32,ZWORK33,ZWORK34)
@@ -1021,7 +1025,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
     YCOMMENT='X_Y_pressure '//TRIM(YTH(JK))//'K (Pa)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
 ! *********************
 ! Potential Vorticity
@@ -1050,7 +1054,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
    YCOMMENT='X_Y_POtential VOrticity '//TRIM(YTH(JK))//'K (PVU)'
    IGRID=1
    ILENCH=LEN(YCOMMENT)
-   CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+   CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
 ! *********************
 ! Wind
@@ -1063,7 +1067,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
     YCOMMENT='X_Y_U component of wind '//TRIM(YTH(JK))//'K (m/s)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
   !
   ZWORK31(:,:,:) = MYF(XVT(:,:,:))
@@ -1074,7 +1078,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
     YCOMMENT='X_Y_V component of wind '//TRIM(YTH(JK))//'K (m/s)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
 !
   DEALLOCATE(ZWTH,ZTH,ZWORK32,ZWORK33,ZWORK34)
@@ -1091,7 +1095,7 @@ IF (NEQ_BUDGET>0) THEN
        YRECFM=TRIM(CNAMES_BUDGET(JSV))//'_BUDGET'
        WRITE(YCOMMENT,'(A6,A5,A7,A8)')'X_Y_Z_',CNAMES_BUDGET(JSV),'_BUDGET','(ppp/s)'
        ILENCH=LEN(YCOMMENT)
-       CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTCHEM(JSV)%XB_REAC(:,:,:,:),IGRID,ILENCH,&
+       CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XTCHEM(JSV)%XB_REAC(:,:,:,:),IGRID,ILENCH,&
                 YCOMMENT,IRESP)
      END DO
 !
@@ -1099,7 +1103,7 @@ IF (NEQ_BUDGET>0) THEN
        YRECFM=TRIM(CNAMES_BUDGET(JSV))//'_CHREACLIST'
        WRITE(YCOMMENT,'(A5,A14)')CNAMES_BUDGET(JSV),'_REACTION_LIST'
        ILENCH=LEN(YCOMMENT)
-       CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTCHEM(JSV)%NB_REAC(:),IGRID,ILENCH,&
+       CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XTCHEM(JSV)%NB_REAC(:),IGRID,ILENCH,&
                   YCOMMENT,IRESP)
      END DO
 END IF
@@ -1112,13 +1116,13 @@ IF (NEQ_PLT>0) THEN
           YRECFM=TRIM(CNAMES_PRODLOSST(JSV))//'_PROD'
           WRITE(YCOMMENT,'(A6,A8,A5,A8)')'X_Y_Z_',CNAMES_PRODLOSST(JSV),'_PROD','(ppp/s)'
           ILENCH=LEN(YCOMMENT)
-          CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XPROD(:,:,:,JSV),IGRID,ILENCH,&
+          CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XPROD(:,:,:,JSV),IGRID,ILENCH,&
                   YCOMMENT,IRESP)
 !
           YRECFM=TRIM(CNAMES_PRODLOSST(JSV))//'_LOSS'
           WRITE(YCOMMENT,'(A6,A8,A5,A8)')'X_Y_Z_',CNAMES_PRODLOSST(JSV),'_LOSS','(ppp/s)'
           ILENCH=LEN(YCOMMENT)
-          CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLOSS(:,:,:,JSV),IGRID,ILENCH,&
+          CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XLOSS(:,:,:,JSV),IGRID,ILENCH,&
                   YCOMMENT,IRESP)
         END DO
 END IF
-- 
GitLab