diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index cf54dacdd343c1bc9640b14b3956b6efeb9d3316..8846fbaf118e3b264d62e93e52dfe87340d5b50b 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -24,6 +24,10 @@ TYPE TFIELDPTR_L0D
   LOGICAL,              POINTER :: DATA => NULL()
 END TYPE TFIELDPTR_L0D
 !
+TYPE TFIELDPTR_N0D
+  INTEGER,              POINTER :: DATA => NULL()
+END TYPE TFIELDPTR_N0D
+!
 TYPE TFIELDPTR_N2D
   INTEGER,DIMENSION(:,:), POINTER :: DATA => NULL()
 END TYPE TFIELDPTR_N2D
@@ -69,6 +73,7 @@ TYPE TFIELDDATA
   !
   TYPE(TFIELDPTR_L0D),DIMENSION(:),ALLOCATABLE :: TFIELD_L0D !Pointer to the scalar logical fields (one per nested mesh)
   !
+  TYPE(TFIELDPTR_N0D),DIMENSION(:),ALLOCATABLE :: TFIELD_N0D !Pointer to the scalar integer fields (one per nested mesh)
   TYPE(TFIELDPTR_N2D),DIMENSION(:),ALLOCATABLE :: TFIELD_N2D !Pointer to the integer 2D fields (one per nested mesh)
   !
   TYPE(TFIELDPTR_X0D),DIMENSION(:),ALLOCATABLE :: TFIELD_X0D !Pointer to the scalar real fields (one per nested mesh)
@@ -111,6 +116,10 @@ IF (PRESENT(KMODEL)) THEN
 ELSE
   IMODEL = NMODEL
 END IF
+IF (IMODEL==0) CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_FIELD_LIST','allocating fields for zero models not allowed')
+!
+WRITE(YMSG,'("allocating fields for ",I4," models")') IMODEL
+CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_LIST',YMSG)
 !
 IDX = 1
 !
@@ -1104,6 +1113,157 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL))
 IDX = IDX+1
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'RIMX'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: RIMX'
+TFIELDLIST(IDX)%CUNITS     = ''
+TFIELDLIST(IDX)%CDIR       = '--'
+TFIELDLIST(IDX)%CCOMMENT   = 'Number of points in the lateral absorbing layer in the x direction'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEINT
+TFIELDLIST(IDX)%NDIMS      = 0
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_N0D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'RIMY'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: RIMY'
+TFIELDLIST(IDX)%CUNITS     = ''
+TFIELDLIST(IDX)%CDIR       = '--'
+TFIELDLIST(IDX)%CCOMMENT   = 'Number of points in the lateral absorbing layer in the y direction'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPEINT
+TFIELDLIST(IDX)%NDIMS      = 0
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_N0D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'HORELAX_UVWTH'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: HORELAX_UVWTH'
+TFIELDLIST(IDX)%CUNITS     = ''
+TFIELDLIST(IDX)%CDIR       = '--'
+TFIELDLIST(IDX)%CCOMMENT   = 'Switch to activate the HOrizontal RELAXation'
+TFIELDLIST(IDX)%NGRID      = 1
+TFIELDLIST(IDX)%NTYPE      = TYPELOG
+TFIELDLIST(IDX)%NDIMS      = 0
+ALLOCATE(TFIELDLIST(IDX)%TFIELD_L0D(IMODEL))
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'LBXUM'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: LBXUM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CLBTYPE    = 'LBXU'
+TFIELDLIST(IDX)%CCOMMENT   = '2_Y_Z_LBXUM'
+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   = 'LBXVM'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: LBXVM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CLBTYPE    = 'LBX'
+TFIELDLIST(IDX)%CCOMMENT   = '2_Y_Z_LBXVM'
+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   = 'LBXWM'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: LBXWM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CLBTYPE    = 'LBX'
+TFIELDLIST(IDX)%CCOMMENT   = '2_Y_Z_LBXWM'
+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   = 'LBYUM'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: LBYUM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CLBTYPE    = 'LBY'
+TFIELDLIST(IDX)%CCOMMENT   = '2_Y_Z_LBYUM'
+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   = 'LBYVM'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: LBYVM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CLBTYPE    = 'LBYV'
+TFIELDLIST(IDX)%CCOMMENT   = '2_Y_Z_LBYVM'
+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   = 'LBYWM'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: LBYWM'
+TFIELDLIST(IDX)%CUNITS     = 'm s-1'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CLBTYPE    = 'LBY'
+TFIELDLIST(IDX)%CCOMMENT   = '2_Y_Z_LBYWM'
+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   = 'LBXTHM'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: LBXTHM'
+TFIELDLIST(IDX)%CUNITS     = 'K'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CLBTYPE    = 'LBX'
+TFIELDLIST(IDX)%CCOMMENT   = '2_Y_Z_LBXTHM'
+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   = 'LBYTHM'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: LBYTHM'
+TFIELDLIST(IDX)%CUNITS     = 'K'
+TFIELDLIST(IDX)%CDIR       = 'XY'
+TFIELDLIST(IDX)%CLBTYPE    = 'LBY'
+TFIELDLIST(IDX)%CCOMMENT   = '2_Y_Z_LBYTHM'
+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   = 'DRYMASST'
 TFIELDLIST(IDX)%CSTDNAME   = ''
 TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH: DRYMASST'
@@ -1333,6 +1493,7 @@ IDX = IDX+1
 END IF ! CPROGRAM=MESONH
 !
 !
+IF (CPROGRAM=='MESONH') THEN
 IF (CRAD /= 'NONE') THEN
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
@@ -1492,6 +1653,7 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL))
 IDX = IDX+1
 !
 END IF !CRAD /= 'NONE'
+END IF ! CPROGRAM=MESONH
 !
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
@@ -1588,8 +1750,36 @@ END IF
 END SUBROUTINE FIND_FIELD_ID_FROM_MNHNAME
 !
 !
+SUBROUTINE ALLOC_FIELD_SCALARS
+!
+USE MODD_DYN_n
+!
+CALL PRINT_MSG(NVERB_DEBUG,'GEN','ALLOC_FIELD_SCALARS','called')
+!
+IF (LFIELDLIST_ISINIT) THEN
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','ALLOC_FIELD_SCALARS','TFIELDLIST already initialized')
+END IF
+!
+!
+IF (.NOT.ASSOCIATED(NRIMX)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'GEN','ALLOC_FIELD_SCALARS',' NRIMX was not associated')
+  ALLOCATE(NRIMX)
+END IF
+IF (.NOT.ASSOCIATED(NRIMY)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'GEN','ALLOC_FIELD_SCALARS',' NRIMY was not associated')
+  ALLOCATE(NRIMY)
+END IF
+IF (.NOT.ASSOCIATED(LHORELAX_UVWTH)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'GEN','ALLOC_FIELD_SCALARS',' LHORELAX_UVWTH was not associated')
+  ALLOCATE(LHORELAX_UVWTH)
+END IF
+!
+END SUBROUTINE ALLOC_FIELD_SCALARS
+!
+!
 SUBROUTINE INI_FIELD_SCALARS
 !
+USE MODD_DYN_n
 USE MODD_FIELD_n
 USE MODD_GRID_n
 USE MODD_TIME_n
@@ -1599,6 +1789,11 @@ INTEGER :: IID,IRESP
 !
 CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS','called')
 !
+IF (.NOT.LFIELDLIST_ISINIT) THEN
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','FIND_FIELD_ID_FROM_MNHNAME','TFIELDLIST not yet initialized')
+END IF
+!
+!
 IF (.NOT.ASSOCIATED(LSLEVE)) THEN
   CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' LSLEVE was not associated')
   ALLOCATE(LSLEVE)
@@ -1659,6 +1854,24 @@ IF (.NOT.ASSOCIATED(XDRYMASST)) THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('DRYMASST',IID,IRESP)
   TFIELDLIST(IID)%TFIELD_X0D(1)%DATA=>XDRYMASST
 END IF
+IF (.NOT.ASSOCIATED(NRIMX)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' NRIMX was not associated')
+  ALLOCATE(NRIMX)
+END IF
+CALL FIND_FIELD_ID_FROM_MNHNAME('RIMX',IID,IRESP)
+TFIELDLIST(IID)%TFIELD_N0D(1)%DATA=>NRIMX
+IF (.NOT.ASSOCIATED(NRIMY)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' NRIMY was not associated')
+  ALLOCATE(NRIMY)
+END IF
+CALL FIND_FIELD_ID_FROM_MNHNAME('RIMY',IID,IRESP)
+TFIELDLIST(IID)%TFIELD_N0D(1)%DATA=>NRIMY
+IF (.NOT.ASSOCIATED(LHORELAX_UVWTH)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' LHORELAX_UVWTH was not associated')
+  ALLOCATE(LHORELAX_UVWTH)
+END IF
+CALL FIND_FIELD_ID_FROM_MNHNAME('HORELAX_UVWTH',IID,IRESP)
+TFIELDLIST(IID)%TFIELD_L0D(1)%DATA=>LHORELAX_UVWTH
 !
 END SUBROUTINE INI_FIELD_SCALARS
 !
@@ -1670,6 +1883,7 @@ USE MODD_REF
 !
 USE MODD_ADV_n
 USE MODD_CONF_n
+USE MODD_DYN_n
 USE MODD_FIELD_n
 USE MODD_GRID_n
 USE MODD_LSFIELD_n
@@ -1805,6 +2019,18 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('LSVM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(K
 CALL FIND_FIELD_ID_FROM_MNHNAME('LSWM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSWM
 CALL FIND_FIELD_ID_FROM_MNHNAME('LSTHM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSTHM
 IF(LUSERV) CALL FIND_FIELD_ID_FROM_MNHNAME('LSRVM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSRVM
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBXUM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBXUM
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBXVM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBXVM
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBXWM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBXWM
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBYUM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBYUM
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBYVM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBYVM
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBYWM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBYWM
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBXTHM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBXTHM
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBYTHM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBYTHM
+!
+! MODD_DYN_n variables
+!
+!***NONE***
 !
 ! MODD_ADV_n variables
 !
@@ -1846,6 +2072,7 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(
 !
 ! MODD_RADIATIONS_n variables
 !
+IF (CPROGRAM=='MESONH') THEN
 IF (CRAD /= 'NONE') THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('DTHRAD',      IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA => XDTHRAD
   CALL FIND_FIELD_ID_FROM_MNHNAME('FLALWD',      IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XFLALWD
@@ -1860,6 +2087,7 @@ IF (CRAD /= 'NONE') THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS',        IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XEMIS
   CALL FIND_FIELD_ID_FROM_MNHNAME('TSRAD',       IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XTSRAD
 END IF
+END IF
 !
 ! MODD_PRECIP_n variables
 !
@@ -1960,6 +2188,14 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('LSVM', IID,IRESP); XLSVM  => TFIELDLIST(IID)%TF
 CALL FIND_FIELD_ID_FROM_MNHNAME('LSWM', IID,IRESP); XLSWM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
 CALL FIND_FIELD_ID_FROM_MNHNAME('LSTHM',IID,IRESP); XLSTHM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
 IF(LUSERV) CALL FIND_FIELD_ID_FROM_MNHNAME('LSRVM',IID,IRESP); XLSRVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBXUM', IID,IRESP); XLBXUM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBXVM', IID,IRESP); XLBXVM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBXWM', IID,IRESP); XLBXWM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBYUM', IID,IRESP); XLBYUM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBYVM', IID,IRESP); XLBYVM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBYWM', IID,IRESP); XLBYWM  => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBXTHM',IID,IRESP); XLBXTHM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
+CALL FIND_FIELD_ID_FROM_MNHNAME('LBYTHM',IID,IRESP); XLBYTHM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
 !
 CALL FIND_FIELD_ID_FROM_MNHNAME('DRYMASST',IID,IRESP)
 IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA)) THEN
@@ -1969,6 +2205,32 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA)) THEN
 END IF
 XDRYMASST => TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA
 !
+! MODD_DYN_n variables
+!
+CALL FIND_FIELD_ID_FROM_MNHNAME('RIMX',IID,IRESP)
+IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'GEN','FIELDLIST_GOTO_MODEL',&
+                 'TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME)
+  ALLOCATE(TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA)
+END IF
+NRIMX => TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA
+!
+CALL FIND_FIELD_ID_FROM_MNHNAME('RIMY',IID,IRESP)
+IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'GEN','FIELDLIST_GOTO_MODEL',&
+                 'TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME)
+  ALLOCATE(TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA)
+END IF
+NRIMY => TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA
+!
+CALL FIND_FIELD_ID_FROM_MNHNAME('HORELAX_UVWTH',IID,IRESP)
+IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'GEN','FIELDLIST_GOTO_MODEL',&
+                 'TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME)
+  ALLOCATE(TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA)
+END IF
+LHORELAX_UVWTH => TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA
+!
 ! MODD_ADV_n variables
 !
 CALL FIND_FIELD_ID_FROM_MNHNAME('TKEMS',IID,IRESP); XRTKEMS=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
@@ -2077,6 +2339,7 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF',IID,IRESP); XWTHVMF => TFIELDLIST(IID)%
 !
 ! MODD_RADIATIONS_n variables
 !
+IF (CPROGRAM=='MESONH') THEN
 IF (CRAD /= 'NONE') THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('DTHRAD',      IID,IRESP); XDTHRAD       => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA
   CALL FIND_FIELD_ID_FROM_MNHNAME('FLALWD',      IID,IRESP); XFLALWD       => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
@@ -2091,6 +2354,7 @@ IF (CRAD /= 'NONE') THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS',        IID,IRESP); XEMIS         => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
   CALL FIND_FIELD_ID_FROM_MNHNAME('TSRAD',       IID,IRESP); XTSRAD        => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA
 END IF
+END IF
 !
 ! MODD_PRECIP_n variables
 !
diff --git a/src/MNH/init_mnh.f90 b/src/MNH/init_mnh.f90
index f98cf0960f2bd6ca01c180ac5ce43d4a536972c9..22875c5e9dbf109dee6d0f0649a2c0466b192f0f 100644
--- a/src/MNH/init_mnh.f90
+++ b/src/MNH/init_mnh.f90
@@ -169,6 +169,10 @@ CALL INI_NEB
 !*       2.    READ AND UPDATE DESCRIPTOR FILES
 !              --------------------------------
 !
+IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='DIAG  ' .OR. CPROGRAM=='SPEC  ' .OR. CPROGRAM=='MESONH') THEN
+  CALL ALLOC_FIELD_SCALARS()
+END IF
+!
 DO JMI=1,JPMODELMAX
   CALL GOTO_MODEL(JMI)
   CALL INI_SEG_n(JMI,YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI),ZTSTEP_ALL)
@@ -218,7 +222,6 @@ END IF
 IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='DIAG  ' .OR. CPROGRAM=='SPEC  ' .OR. CPROGRAM=='MESONH') THEN
   CALL INI_FIELD_SCALARS()
 END IF
-
 !
 DO JMI=1,NMODEL
   YSURF_CUR => YSURF_LIST(JMI)
diff --git a/src/MNH/modd_dynn.f90 b/src/MNH/modd_dynn.f90
index e0fb84bf7f2fd2c439a00a2cadda69b907d771a5..7e56e33e8a78cb4362d9112845194156c44cb6a4 100644
--- a/src/MNH/modd_dynn.f90
+++ b/src/MNH/modd_dynn.f90
@@ -116,7 +116,7 @@ TYPE DYN_t
   LOGICAL ::  LVE_RELAX_GRD ! switch to activate the VErtical RELAXation
 !
 !                            switch to activate the HOrizontal RELAXation
-  LOGICAL :: LHORELAX_UVWTH
+!  LOGICAL :: LHORELAX_UVWTH
 !
   LOGICAL :: LHORELAX_RV, LHORELAX_RC, LHORELAX_RR, LHORELAX_RI
   LOGICAL :: LHORELAX_RS, LHORELAX_RG, LHORELAX_RH
@@ -141,7 +141,7 @@ TYPE DYN_t
   LOGICAL, DIMENSION(:),POINTER :: LHORELAX_SV =>NULL()
 !
   REAL    :: XRIMKMAX   ! Max. value of the horiz. relaxation coeff.
-  INTEGER :: NRIMX,NRIMY! Number of points in the lateral absorbing
+!  INTEGER :: NRIMX,NRIMY! Number of points in the lateral absorbing
                            ! layer in the x and y directions 
 ! sizes of the West-east total LB area
   INTEGER :: NSIZELBX_ll,NSIZELBXU_ll      ! for T,V,W and u 
@@ -310,7 +310,7 @@ XALKBAS=>DYN_MODEL(KTO)%XALKBAS
 XALKWBAS=>DYN_MODEL(KTO)%XALKWBAS
 LVE_RELAX=>DYN_MODEL(KTO)%LVE_RELAX
 LVE_RELAX_GRD=>DYN_MODEL(KTO)%LVE_RELAX_GRD
-LHORELAX_UVWTH=>DYN_MODEL(KTO)%LHORELAX_UVWTH
+!LHORELAX_UVWTH=>DYN_MODEL(KTO)%LHORELAX_UVWTH !Done in FIELDLIST_GOTO_MODEL
 LHORELAX_RV=>DYN_MODEL(KTO)%LHORELAX_RV
 LHORELAX_RC=>DYN_MODEL(KTO)%LHORELAX_RC
 LHORELAX_RR=>DYN_MODEL(KTO)%LHORELAX_RR
@@ -336,8 +336,8 @@ LHORELAX_SVFF=>DYN_MODEL(KTO)%LHORELAX_SVFF
 LHORELAX_SVCS=>DYN_MODEL(KTO)%LHORELAX_SVCS
 LHORELAX_SV=>DYN_MODEL(KTO)%LHORELAX_SV
 XRIMKMAX=>DYN_MODEL(KTO)%XRIMKMAX
-NRIMX=>DYN_MODEL(KTO)%NRIMX
-NRIMY=>DYN_MODEL(KTO)%NRIMY
+!NRIMX=>DYN_MODEL(KTO)%NRIMX !Done in FIELDLIST_GOTO_MODEL
+!NRIMY=>DYN_MODEL(KTO)%NRIMY !Done in FIELDLIST_GOTO_MODEL
 NSIZELBX_ll=>DYN_MODEL(KTO)%NSIZELBX_ll
 NSIZELBXU_ll=>DYN_MODEL(KTO)%NSIZELBXU_ll
 NSIZELBXTKE_ll=>DYN_MODEL(KTO)%NSIZELBXTKE_ll
diff --git a/src/MNH/modd_lsfieldn.f90 b/src/MNH/modd_lsfieldn.f90
index 5a2d83e04b7f2d847089fb4473f3fd512c354527..424cdd727d9ab174196d59a68ceb99bf5d7f0896 100644
--- a/src/MNH/modd_lsfieldn.f90
+++ b/src/MNH/modd_lsfieldn.f90
@@ -70,8 +70,8 @@ TYPE LSFIELD_t
 !  Large scale variables for horizontal lbc
 !
      ! larger scales values at X-dir lateral boundaries at time t-dt
-  REAL, DIMENSION(:,:,:),   POINTER :: XLBXUM=>NULL(),XLBXVM=>NULL(),XLBXWM=>NULL()
-  REAL, DIMENSION(:,:,:),   POINTER :: XLBXTHM=>NULL()
+!  REAL, DIMENSION(:,:,:),   POINTER :: XLBXUM=>NULL(),XLBXVM=>NULL(),XLBXWM=>NULL()
+!  REAL, DIMENSION(:,:,:),   POINTER :: XLBXTHM=>NULL()
   REAL, DIMENSION(:,:,:),   POINTER :: XLBXTKEM=>NULL()
   REAL, DIMENSION(:,:,:,:), POINTER :: XLBXRM=>NULL(), XLBXSVM=>NULL()
      ! larger scales tendency at X-dir lateral boundaries
@@ -81,8 +81,8 @@ TYPE LSFIELD_t
   REAL, DIMENSION(:,:,:,:), POINTER :: XLBXRS=>NULL(), XLBXSVS=>NULL()
 !
      ! larger scales values at Y-dir lateral boundaries at time t-dt
-  REAL, DIMENSION(:,:,:),   POINTER :: XLBYUM=>NULL(),XLBYVM=>NULL(),XLBYWM=>NULL()
-  REAL, DIMENSION(:,:,:),   POINTER :: XLBYTHM=>NULL()
+!  REAL, DIMENSION(:,:,:),   POINTER :: XLBYUM=>NULL(),XLBYVM=>NULL(),XLBYWM=>NULL()
+!  REAL, DIMENSION(:,:,:),   POINTER :: XLBYTHM=>NULL()
   REAL, DIMENSION(:,:,:),   POINTER :: XLBYTKEM=>NULL()
   REAL, DIMENSION(:,:,:,:), POINTER :: XLBYRM=>NULL(), XLBYSVM=>NULL()
      ! larger scales tendency at Y-dir lateral boundaries
@@ -152,10 +152,10 @@ LSFIELD_MODEL(KFROM)%XLSVS=>XLSVS
 LSFIELD_MODEL(KFROM)%XLSWS=>XLSWS
 LSFIELD_MODEL(KFROM)%XLSTHS=>XLSTHS
 LSFIELD_MODEL(KFROM)%XLSRVS=>XLSRVS
-LSFIELD_MODEL(KFROM)%XLBXUM=>XLBXUM
-LSFIELD_MODEL(KFROM)%XLBXVM=>XLBXVM
-LSFIELD_MODEL(KFROM)%XLBXWM=>XLBXWM
-LSFIELD_MODEL(KFROM)%XLBXTHM=>XLBXTHM
+!LSFIELD_MODEL(KFROM)%XLBXUM=>XLBXUM !Done in FIELDLIST_GOTO_MODEL
+!LSFIELD_MODEL(KFROM)%XLBXVM=>XLBXVM !Done in FIELDLIST_GOTO_MODEL
+!LSFIELD_MODEL(KFROM)%XLBXWM=>XLBXWM !Done in FIELDLIST_GOTO_MODEL
+!LSFIELD_MODEL(KFROM)%XLBXTHM=>XLBXTHM !Done in FIELDLIST_GOTO_MODEL
 LSFIELD_MODEL(KFROM)%XLBXTKEM=>XLBXTKEM
 LSFIELD_MODEL(KFROM)%XLBXRM=>XLBXRM
 LSFIELD_MODEL(KFROM)%XLBXSVM=>XLBXSVM
@@ -166,10 +166,10 @@ LSFIELD_MODEL(KFROM)%XLBXTHS=>XLBXTHS
 LSFIELD_MODEL(KFROM)%XLBXTKES=>XLBXTKES
 LSFIELD_MODEL(KFROM)%XLBXRS=>XLBXRS
 LSFIELD_MODEL(KFROM)%XLBXSVS=>XLBXSVS
-LSFIELD_MODEL(KFROM)%XLBYUM=>XLBYUM
-LSFIELD_MODEL(KFROM)%XLBYVM=>XLBYVM
-LSFIELD_MODEL(KFROM)%XLBYWM=>XLBYWM
-LSFIELD_MODEL(KFROM)%XLBYTHM=>XLBYTHM
+!LSFIELD_MODEL(KFROM)%XLBYUM=>XLBYUM !Done in FIELDLIST_GOTO_MODEL
+!LSFIELD_MODEL(KFROM)%XLBYVM=>XLBYVM !Done in FIELDLIST_GOTO_MODEL
+!LSFIELD_MODEL(KFROM)%XLBYWM=>XLBYWM !Done in FIELDLIST_GOTO_MODEL
+!LSFIELD_MODEL(KFROM)%XLBYTHM=>XLBYTHM !Done in FIELDLIST_GOTO_MODEL
 LSFIELD_MODEL(KFROM)%XLBYTKEM=>XLBYTKEM
 LSFIELD_MODEL(KFROM)%XLBYRM=>XLBYRM
 LSFIELD_MODEL(KFROM)%XLBYSVM=>XLBYSVM
@@ -208,10 +208,10 @@ XLSVS=>LSFIELD_MODEL(KTO)%XLSVS
 XLSWS=>LSFIELD_MODEL(KTO)%XLSWS
 XLSTHS=>LSFIELD_MODEL(KTO)%XLSTHS
 XLSRVS=>LSFIELD_MODEL(KTO)%XLSRVS
-XLBXUM=>LSFIELD_MODEL(KTO)%XLBXUM
-XLBXVM=>LSFIELD_MODEL(KTO)%XLBXVM
-XLBXWM=>LSFIELD_MODEL(KTO)%XLBXWM
-XLBXTHM=>LSFIELD_MODEL(KTO)%XLBXTHM
+!XLBXUM=>LSFIELD_MODEL(KTO)%XLBXUM !Done in FIELDLIST_GOTO_MODEL
+!XLBXVM=>LSFIELD_MODEL(KTO)%XLBXVM !Done in FIELDLIST_GOTO_MODEL
+!XLBXWM=>LSFIELD_MODEL(KTO)%XLBXWM !Done in FIELDLIST_GOTO_MODEL
+!XLBXTHM=>LSFIELD_MODEL(KTO)%XLBXTHM !Done in FIELDLIST_GOTO_MODEL
 XLBXTKEM=>LSFIELD_MODEL(KTO)%XLBXTKEM
 XLBXRM=>LSFIELD_MODEL(KTO)%XLBXRM
 XLBXSVM=>LSFIELD_MODEL(KTO)%XLBXSVM
@@ -222,10 +222,10 @@ XLBXTHS=>LSFIELD_MODEL(KTO)%XLBXTHS
 XLBXTKES=>LSFIELD_MODEL(KTO)%XLBXTKES
 XLBXRS=>LSFIELD_MODEL(KTO)%XLBXRS
 XLBXSVS=>LSFIELD_MODEL(KTO)%XLBXSVS
-XLBYUM=>LSFIELD_MODEL(KTO)%XLBYUM
-XLBYVM=>LSFIELD_MODEL(KTO)%XLBYVM
-XLBYWM=>LSFIELD_MODEL(KTO)%XLBYWM
-XLBYTHM=>LSFIELD_MODEL(KTO)%XLBYTHM
+!XLBYUM=>LSFIELD_MODEL(KTO)%XLBYUM !Done in FIELDLIST_GOTO_MODEL
+!XLBYVM=>LSFIELD_MODEL(KTO)%XLBYVM !Done in FIELDLIST_GOTO_MODEL
+!XLBYWM=>LSFIELD_MODEL(KTO)%XLBYWM !Done in FIELDLIST_GOTO_MODEL
+!XLBYTHM=>LSFIELD_MODEL(KTO)%XLBYTHM
 XLBYTKEM=>LSFIELD_MODEL(KTO)%XLBYTKEM
 XLBYRM=>LSFIELD_MODEL(KTO)%XLBYRM
 XLBYSVM=>LSFIELD_MODEL(KTO)%XLBYSVM
diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90
index 17bdf5bba002902959a890bcfa76bbf774d9765f..ffa22a9ef6081c2e1233a321889e14d2afbe76d3 100644
--- a/src/MNH/prep_ideal_case.f90
+++ b/src/MNH/prep_ideal_case.f90
@@ -646,6 +646,8 @@ CALL INI_NEB
 !
 !*       2.1  For variables in DESFM file
 !
+CALL ALLOC_FIELD_SCALARS()
+!
 CALL DEFAULT_DESFM_n(1)
 !
 CSURF = "NONE"
diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90
index ba202ec021959ab332f5544c087aa48fa7b54448..1fbf2b90d48272a98752c0516a286cc3cd3608df 100644
--- a/src/MNH/prep_real_case.f90
+++ b/src/MNH/prep_real_case.f90
@@ -557,6 +557,8 @@ ZTIME1 = ZSTART
 CALL VERSION
 CPROGRAM='REAL  '
 !
+CALL ALLOC_FIELD_SCALARS()
+!
 CALL DEFAULT_DESFM_n(1)
 NRR=1
 !
diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90
index d017f3d117b8f7e9e0c6547703c0ed1ce5845404..41f8029cbc3f5aca47240f9016397515e42428d8 100644
--- a/src/MNH/write_lbn.f90
+++ b/src/MNH/write_lbn.f90
@@ -14,8 +14,11 @@
 !
 INTERFACE
 !
-SUBROUTINE WRITE_LB_n(HFMFILE)
-CHARACTER(LEN=28), INTENT(IN) :: HFMFILE      ! Name of FM-file to write
+SUBROUTINE WRITE_LB_n(TPFILE)
+!
+USE MODD_IO_ll, ONLY: TFILEDATA
+!
+TYPE(TFILEDATA),   INTENT(IN) :: TPFILE ! File characteristics
 END SUBROUTINE WRITE_LB_n
 !
 END INTERFACE
@@ -25,7 +28,7 @@ END MODULE MODI_WRITE_LB_n
 !
 !
 !     ##############################
-      SUBROUTINE WRITE_LB_n(HFMFILE)
+      SUBROUTINE WRITE_LB_n(TPFILE)
 !     ##############################
 !
 !!****  *WRITE_LFIFM_n* - routine to write LB fields in the LFIFM file
@@ -33,7 +36,7 @@ END MODULE MODI_WRITE_LB_n
 !!    PURPOSE
 !!    -------
 !        The purpose of this routine is to write LB fields in the
-!     HFMFILE//'.lfi' with the FM routines.  
+!     YFMFILE//'.lfi' with the FM routines.  
 !
 !!**  METHOD
 !!    ------
@@ -116,14 +119,15 @@ USE MODD_SALT
 USE MODI_DUSTLFI_n
 USE MODI_SALTLFI_n
 USE MODD_PARAMETERS,      ONLY: JPHEXT
-
-
+USE MODD_IO_ll, ONLY: TFILEDATA
+USE MODE_FIELD, ONLY: TFIELDDATA
+!
 !
 IMPLICIT NONE
 !
 !*       0.1   Declarations of arguments
 !
-CHARACTER(LEN=28), INTENT(IN) :: HFMFILE      ! Name of FM-file to write
+TYPE(TFILEDATA),   INTENT(IN) :: TPFILE ! File characteristics
 !
 !*       0.2   Declarations of local variables
 !
@@ -132,6 +136,7 @@ INTEGER            :: IRESP         ! IRESP  : return-code for fmwrit
 INTEGER            :: IGRID         ! IGRID : grid indicator
 CHARACTER (LEN=2)  :: YDIR          ! Type of the data field
 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
 !
@@ -139,7 +144,7 @@ INTEGER            :: IRR           ! Index for moist variables
 INTEGER            :: JRR,JSV       ! loop index for moist and scalar variables
 ! 
 LOGICAL            :: GHORELAX_R, GHORELAX_SV   ! global hor. relax. informations
-INTEGER            :: IRIMX,IRIMY,IRIMXU,IRIMYV ! size of the RIM zone
+INTEGER            :: IRIMX,IRIMY   ! size of the RIM zone
 CHARACTER (LEN=1), DIMENSION (7) :: YC    ! array with the prefix of the moist variables
 LOGICAL, DIMENSION (7)           :: GUSER ! array with the use indicator of the moist variables
 REAL,    DIMENSION(SIZE(XLBXSVM, 1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)) :: ZRHODREFX
@@ -149,123 +154,50 @@ INTEGER  :: JK
 INTEGER                          :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX
 INTEGER :: IMI ! Current model index
 CHARACTER(LEN=2)  :: INDICE ! to index CCN and IFN fields of LIMA scheme
+TYPE(TFIELDDATA)  :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       1.    SOME INITIALIZATIONS
 !              --------------------
 !
-IMI = GET_CURRENT_MODEL_INDEX()
-
 CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP)
 !
+IMI = GET_CURRENT_MODEL_INDEX()
+!
+YFMFILE = TPFILE%CNAME
 !
 !        2.  WRITE THE DIMENSION OF LB FIELDS
 !            --------------------------------
-IGRID=1
-YDIR='--'
-YCOMMENT=''
-ILENCH=LEN(YCOMMENT)
-!
-YRECFM = 'RIMX'
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NRIMX,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-YRECFM = 'RIMY'
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NRIMY,IGRID,ILENCH,YCOMMENT,IRESP)
 !
+CALL IO_WRITE_FIELD(TPFILE,'RIMX',CLUOUT,IRESP,NRIMX)
+CALL IO_WRITE_FIELD(TPFILE,'RIMY',CLUOUT,IRESP,NRIMY)
 !
 !*       3.  BASIC VARIABLES
 !            --------------
 !
-YRECFM = 'HORELAX_UVWTH'
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LHORELAX_UVWTH,IGRID,ILENCH,YCOMMENT,IRESP)
-!
-!
-! compute the size of riming zone
-IRIMX =(NSIZELBX_ll-2*JPHEXT)/2
-IRIMXU=(NSIZELBXU_ll-2*JPHEXT)/2
-IRIMY =(NSIZELBY_ll-2*JPHEXT)/2
-IRIMYV=(NSIZELBYV_ll-2*JPHEXT)/2
+CALL IO_WRITE_FIELD(TPFILE,'HORELAX_UVWTH',CLUOUT,IRESP,LHORELAX_UVWTH)
 !
 !gathering and writing of the LB fields
-IF(NSIZELBXU_ll /= 0) THEN 
-  YRECFM='LBXUM'
-  YCOMMENT='2_Y_Z_LBXUM (M/S)'
-  IGRID=2
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBXU",XLBXUM,IRIMXU,NSIZELBXU_ll,&
-       & IGRID,ILENCH,YCOMMENT,IRESP)
-END IF
-!
-IF(NSIZELBY_ll /= 0) THEN 
-  YRECFM='LBYUM'
-  YCOMMENT='X_2_Z_LBYUM (M/S)'
-  IGRID=2
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYUM,IRIMY,NSIZELBY_ll,&
-       & IGRID,ILENCH,YCOMMENT,IRESP)
-END IF
-!
-IF(NSIZELBX_ll /= 0) THEN 
-  YRECFM='LBXVM'
-  YCOMMENT='2_Y_Z_LBXVM (M/S)'
-  IGRID=3
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXVM,IRIMX,NSIZELBX_ll,&
-       & IGRID,ILENCH,YCOMMENT,IRESP)
-END IF
-!
-IF(NSIZELBYV_ll /= 0) THEN 
-  YRECFM='LBYVM'
-  YCOMMENT='X_2_Z_LBYVM (M/S)'
-  IGRID=3
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBYV",XLBYVM,IRIMYV,NSIZELBYV_ll,&
-       & IGRID,ILENCH,YCOMMENT,IRESP)
-END IF
-!
-IF(NSIZELBX_ll /= 0) THEN 
-  YRECFM='LBXWM'
-  YCOMMENT='2_Y_Z_LBXWM (M/S)'
-  IGRID=4
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXWM,IRIMX,NSIZELBX_ll,&
-       & IGRID,ILENCH,YCOMMENT,IRESP)
-END IF
-!
-IF(NSIZELBY_ll /= 0) THEN 
-  YRECFM='LBYWM'
-  YCOMMENT='X_2_Z_LBYWM (M/S)'
-  IGRID=4
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYWM,IRIMY,NSIZELBY_ll,&
-       & IGRID,ILENCH,YCOMMENT,IRESP)
-END IF
-!
-IF(NSIZELBX_ll /= 0) THEN 
-  YRECFM='LBXTHM'
-  YCOMMENT='2_Y_Z_LBXTHM (K)'
-  IGRID=1
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXTHM,IRIMX,NSIZELBX_ll,&
-       & IGRID,ILENCH,YCOMMENT,IRESP)
-END IF
-!
-IF(NSIZELBY_ll /= 0) THEN 
-  YRECFM='LBYTHM'
-  YCOMMENT='X_2_Z_LBYTHM (K)'
-  IGRID=1
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYTHM,IRIMY,NSIZELBY_ll,&
-       & IGRID,ILENCH,YCOMMENT,IRESP)
-END IF
-!
+IF(NSIZELBXU_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBXUM', CLUOUT,NSIZELBXU_ll,IRESP,XLBXUM)
+IF(NSIZELBX_ll  /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBXVM', CLUOUT,NSIZELBX_ll, IRESP,XLBXVM)
+IF(NSIZELBX_ll  /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBXWM', CLUOUT,NSIZELBX_ll, IRESP,XLBXWM)
+IF(NSIZELBY_ll  /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBYUM', CLUOUT,NSIZELBY_ll, IRESP,XLBYUM)
+IF(NSIZELBYV_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBYVM', CLUOUT,NSIZELBYV_ll,IRESP,XLBYVM)
+IF(NSIZELBY_ll  /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBYWM', CLUOUT,NSIZELBY_ll, IRESP,XLBYWM)
+IF(NSIZELBX_ll  /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBXTHM',CLUOUT,NSIZELBX_ll, IRESP,XLBXTHM)
+IF(NSIZELBY_ll  /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBYTHM',CLUOUT,NSIZELBY_ll, IRESP,XLBYTHM)
 !
 !*        4  LB-TKE
 !            ------
 !
+IGRID=1
+YDIR='--'
+YCOMMENT=''
+ILENCH=LEN(YCOMMENT)
+!
 IF(CTURB/='NONE') THEN
   YRECFM = 'HORELAX_TKE'
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LHORELAX_TKE,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LHORELAX_TKE,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   IRIMX =(NSIZELBXTKE_ll-2*JPHEXT)/2
   IRIMY =(NSIZELBYTKE_ll-2*JPHEXT)/2
@@ -275,7 +207,7 @@ IF(CTURB/='NONE') THEN
     YCOMMENT='2_Y_Z_LBXTKEM (M**2/S**2)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXTKEM,IRIMX,NSIZELBXTKE_ll,&
+    CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXTKEM,IRIMX,NSIZELBXTKE_ll,&
        & IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 !
@@ -284,7 +216,7 @@ IF(CTURB/='NONE') THEN
     YCOMMENT='X_2_Z_LBYTKEM (M**2/S**2)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYTKEM,IRIMY,NSIZELBYTKE_ll,&
+    CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYTKEM,IRIMY,NSIZELBYTKE_ll,&
          & IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 END IF
@@ -301,7 +233,7 @@ IF (NRR >=1) THEN
   YRECFM = 'HORELAX_R'
   YCOMMENT=' '
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,GHORELAX_R,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,GHORELAX_R,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   GUSER(:)=(/LUSERV,LUSERC,LUSERR,LUSERI,LUSERS,LUSERG,LUSERH/)
   YC(:)=(/"V","C","R","I","S","G","H"/)
@@ -316,7 +248,7 @@ IF (NRR >=1) THEN
         YRECFM= 'LBXR'//YC(JRR)//'M'
         YCOMMENT= '2_Y_Z_LBXR'//YC(JRR)//'M (KG/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXRM(:,:,:,IRR),IRIMX,NSIZELBXR_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXRM(:,:,:,IRR),IRIMX,NSIZELBXR_ll,&
              & IGRID,ILENCH,YCOMMENT,IRESP)
       END IF
 !
@@ -324,7 +256,7 @@ IF (NRR >=1) THEN
         YRECFM= 'LBYR'//YC(JRR)//'M'
         YCOMMENT= '2_Y_Z_LBYR'//YC(JRR)//'M (KG/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYRM(:,:,:,IRR),IRIMY,NSIZELBYR_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYRM(:,:,:,IRR),IRIMY,NSIZELBYR_ll,&
              & IGRID,ILENCH,YCOMMENT,IRESP)
       END IF
     END IF
@@ -340,7 +272,7 @@ IF (NSV >=1) THEN
   YCOMMENT=' '
   ILENCH=LEN(YCOMMENT)
   GHORELAX_SV=ANY ( LHORELAX_SV ) 
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,GHORELAX_SV,IGRID,ILENCH,YCOMMENT,IRESP)  
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,GHORELAX_SV,IGRID,ILENCH,YCOMMENT,IRESP)  
   IGRID=1
   IRIMX =(NSIZELBXSV_ll-2*JPHEXT)/2
   IRIMY =(NSIZELBYSV_ll-2*JPHEXT)/2
@@ -349,7 +281,7 @@ IF (NSV >=1) THEN
       WRITE(YRECFM,'(A6,I3.3)')'LBXSVM',JSV
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -357,7 +289,7 @@ IF (NSV >=1) THEN
       WRITE(YRECFM,'(A6,I3.3)')'LBYSVM',JSV
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -366,7 +298,7 @@ IF (NSV >=1) THEN
       YRECFM='LBX_'//TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (/M3)'  
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -374,7 +306,7 @@ IF (NSV >=1) THEN
       YRECFM='LBY_'//TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (/M3)'  
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -383,7 +315,7 @@ IF (NSV >=1) THEN
       YRECFM='LBX_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (/M3)'  
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -391,7 +323,7 @@ IF (NSV >=1) THEN
       YRECFM='LBY_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (/M3)'  
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -405,7 +337,7 @@ IF (NSV >=1) THEN
         YRECFM='LBX_'//TRIM(UPCASE(CLIMA_WARM_NAMES(3))//INDICE)
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
       END IF
 !
@@ -413,7 +345,7 @@ IF (NSV >=1) THEN
         YRECFM='LBY_'//TRIM(UPCASE(CLIMA_WARM_NAMES(3))//INDICE)
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
       END IF
     END DO
@@ -424,7 +356,7 @@ IF (NSV >=1) THEN
         YRECFM='LBX_'//TRIM(UPCASE(CLIMA_COLD_NAMES(2))//INDICE)
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
       END IF
 !
@@ -432,7 +364,7 @@ IF (NSV >=1) THEN
         YRECFM='LBY_'//TRIM(UPCASE(CLIMA_COLD_NAMES(2))//INDICE)
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
       END IF
     END DO
@@ -445,7 +377,7 @@ IF (NSV >=1) THEN
       YRECFM='LBX_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -453,7 +385,7 @@ IF (NSV >=1) THEN
       YRECFM='LBY_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -489,7 +421,7 @@ IF (NSV >=1) THEN
         YRECFM = 'LBX_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
       END IF
       !
@@ -497,7 +429,7 @@ IF (NSV >=1) THEN
         YRECFM = 'LBY_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
       END IF
     END DO
@@ -507,7 +439,7 @@ IF (NSV >=1) THEN
            YRECFM = 'LBX_'//TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
              & IGRID,ILENCH,YCOMMENT,IRESP)
         END IF             
         !
@@ -515,7 +447,7 @@ IF (NSV >=1) THEN
            YRECFM = 'LBY_'//TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
              & IGRID,ILENCH,YCOMMENT,IRESP)
         END IF             
       END DO      
@@ -528,7 +460,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBX_'//TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1)))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -536,7 +468,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBY_'//TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1)))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -546,7 +478,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBX_'//TRIM(UPCASE(CICNAMES(JSV-NSV_CHICBEG+1)))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -554,7 +486,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBY_'//TRIM(UPCASE(CICNAMES(JSV-NSV_CHICBEG+1)))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -564,7 +496,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBX_LINOX'
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -572,7 +504,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBY_LINOX'
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -631,14 +563,14 @@ IF (NSV >=1) THEN
             YRECFM = 'LBX_'//TRIM(YPDUST_INI(ISV_NAME_IDX))
             WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)'
             ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
+            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
                            IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
           ENDIF !Check on border points in X direction
           IF(NSIZELBYSV_ll /= 0) THEN
             YRECFM = 'LBY_'//TRIM(YPDUST_INI(ISV_NAME_IDX))
             WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)'
             ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
+            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
                            IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
 
           ENDIF  !Check on points in Y direction
@@ -655,14 +587,14 @@ IF (NSV >=1) THEN
               YRECFM = 'LBX_'//TRIM(YPDUST_INI(ISV_NAME_IDX))
               WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)'
               ILENCH=LEN(YCOMMENT)
-              CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
+              CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
                              IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
             ENDIF !Check on border points in X direction
             IF(NSIZELBYSV_ll /= 0) THEN
               YRECFM = 'LBY_'//TRIM(YPDUST_INI(ISV_NAME_IDX))
               WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)'
               ILENCH=LEN(YCOMMENT)
-              CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
+              CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
                              IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
             ENDIF  !Check on points in Y direction
           ENDDO ! Loop on moments
@@ -677,7 +609,7 @@ IF (NSV >=1) THEN
            YRECFM = 'LBX_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
              & IGRID,ILENCH,YCOMMENT,IRESP)
         END IF             
         !
@@ -685,7 +617,7 @@ IF (NSV >=1) THEN
            YRECFM = 'LBY_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))
         WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+        CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
              & IGRID,ILENCH,YCOMMENT,IRESP)
          END IF            
       END DO
@@ -695,7 +627,7 @@ IF (NSV >=1) THEN
             YRECFM = 'LBX_'//TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))
             WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
             ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
                          & IGRID,ILENCH,YCOMMENT,IRESP)
           END IF             
         !
@@ -703,7 +635,7 @@ IF (NSV >=1) THEN
             YRECFM = 'LBY_'//TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))
             WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
             ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
                          & IGRID,ILENCH,YCOMMENT,IRESP)
           END IF             
         END DO      
@@ -766,14 +698,14 @@ IF (NSV >=1) THEN
             YRECFM = 'LBX_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
             WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)'
             ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
+            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
                            IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
           ENDIF !Check on border points in X direction
           IF(NSIZELBYSV_ll /= 0) THEN
             YRECFM = 'LBY_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
             WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)'
             ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
+            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
                            IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
 
           ENDIF  !Check on points in Y direction
@@ -790,14 +722,14 @@ IF (NSV >=1) THEN
               YRECFM = 'LBX_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
               WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)'
               ILENCH=LEN(YCOMMENT)
-              CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
+              CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),&
                              IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
             ENDIF !Check on border points in X direction
             IF(NSIZELBYSV_ll /= 0) THEN
               YRECFM = 'LBY_'//TRIM(YPSALT_INI(ISV_NAME_IDX))
               WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)'
               ILENCH=LEN(YCOMMENT)
-              CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
+              CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),&
                              IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP)
 
             ENDIF  !Check on points in Y direction
@@ -812,7 +744,7 @@ IF (NSV >=1) THEN
           YRECFM = 'LBX_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))
           WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
           ILENCH=LEN(YCOMMENT)
-          CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+          CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
                        & IGRID,ILENCH,YCOMMENT,IRESP)
         END IF             
         !
@@ -820,7 +752,7 @@ IF (NSV >=1) THEN
           YRECFM = 'LBY_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))
           WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
           ILENCH=LEN(YCOMMENT)
-          CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+          CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
                        & IGRID,ILENCH,YCOMMENT,IRESP)
         END IF            
       END DO
@@ -830,7 +762,7 @@ IF (NSV >=1) THEN
             YRECFM = 'LBX_'//TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))
             WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
             ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
                          & IGRID,ILENCH,YCOMMENT,IRESP)
           END IF             
         !
@@ -838,7 +770,7 @@ IF (NSV >=1) THEN
             YRECFM = 'LBY_'//TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))
             WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
             ILENCH=LEN(YCOMMENT)
-            CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+            CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
                          & IGRID,ILENCH,YCOMMENT,IRESP)
           END IF             
         END DO      
@@ -852,7 +784,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBX_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (M)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -860,7 +792,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBY_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1))
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (M)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -870,7 +802,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBX_PP'
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -878,7 +810,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBY_PP'
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -889,7 +821,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBX_CS'
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -897,7 +829,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBY_CS'
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
@@ -908,7 +840,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBX_FF'
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBX_FF',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
@@ -916,7 +848,7 @@ IF (NSV >=1) THEN
       YRECFM = 'LBY_FF'
       WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBY_FF',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
+      CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,&
            & IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
   END DO
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index 45b8d12ca9fb11daca2e2643a2c159f20b003bad..61b48cd675385ad6f47e945187489ead4efbdd00 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -320,8 +320,8 @@ INTEGER           :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds
 !
 CHARACTER(LEN=2)  :: INDICE
 INTEGER           :: I
+TYPE(TFIELDDATA)  :: TZFIELD
 !-------------------------------------------------------------------------------
-TYPE(TFIELDDATA) :: TZFIELD
 !
 !*	0. Initialization
 !
@@ -1347,7 +1347,7 @@ CALL IO_WRITE_FIELD(TPFILE,'LSWM', CLUOUT,IRESP,XLSWM)
 CALL IO_WRITE_FIELD(TPFILE,'LSTHM',CLUOUT,IRESP,XLSTHM)
 IF (LUSERV) CALL IO_WRITE_FIELD(TPFILE,'LSRVM',CLUOUT,IRESP,XLSRVM)
 !
-CALL WRITE_LB_n(YFMFILE)
+CALL WRITE_LB_n(TPFILE)
 !
 !
 CALL IO_WRITE_FIELD(TPFILE,'DRYMASST',CLUOUT,IRESP,XDRYMASST)