diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index 5bca2401c4b91d7ce1ea9902cdcf70e017a85c74..d60a7fc7915b113d992c374768bf389b3c719d82 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -15,7 +15,7 @@
 !  P. Wautelet 10/11/2020: new data structures for netCDF dimensions
 !-----------------------------------------------------------------
 MODULE mode_util
-  use modd_field,      only: tfielddata, tfieldlist
+  use modd_field,      only: tfieldmetadata, tfieldlist
   USE MODD_IO,         ONLY: TFILEDATA, TFILE_ELT
   USE MODD_NETCDF,     ONLY: CDFINT, tdimnc
   USE MODD_PARAMETERS, ONLY: NLFIMAXCOMMENTLENGTH, NMNHNAMELGTMAX
@@ -56,7 +56,7 @@ MODULE mode_util
      INTEGER(kind=CDFINT)                  :: NTYPE_FILE  ! netCDF datatype (NF90_CHAR, NF90_INT...) (as present in input file)
      INTEGER,DIMENSION(MAXRAW)             :: src    ! List of variables used to compute the variable (needed only if calc=.true.)
      INTEGER                               :: tgt    ! Target: id of the variable that use it (calc variable)
-     TYPE(TFIELDDATA)                      :: TFIELD ! Metadata about the field
+     TYPE(TFIELDMETADATA)                  :: TFIELD ! Metadata about the field
      TYPE(tdimnc),DIMENSION(:),ALLOCATABLE :: TDIMS  ! Dimensions of the field
   END TYPE workfield
 
@@ -388,7 +388,7 @@ END DO
       ELSE
         CALL FIND_FIELD_ID_FROM_MNHNAME(tpreclist(ji)%name,IID,IRESP,ONOWARNING=.TRUE.)
         IF (IRESP==0) THEN
-          tpreclist(ji)%TFIELD = TFIELDLIST(IID)
+          tpreclist(ji)%TFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
           ! Determine TDIMS
           IF (runmode==MODELFI2CDF) THEN
             ALLOCATE(tpreclist(ji)%TDIMS(tpreclist(ji)%TFIELD%NDIMS))
diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
index 107970bb15940b06dea2141347a63185a0b21073..ec9b54f0c53e761a1cf32505dbc46deeb02b4d74 100644
--- a/src/MNH/advection_metsv.f90
+++ b/src/MNH/advection_metsv.f90
@@ -152,7 +152,7 @@ use modd_budget,     only: lbudget_th, lbudget_tke, lbudget_rv, lbudget_rc,
 USE MODD_CST
 USE MODD_CTURB,          ONLY: XTKEMIN
 USE MODD_CONF,           ONLY: LNEUTRAL,NHALO,L1D, L2D
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IBM_PARAM_n,    ONLY: LIBM,XIBM_LS,XIBM_EPSI
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_LUNIT_n,        ONLY: TLUOUT
@@ -275,11 +275,11 @@ TYPE(LIST_ll), POINTER      :: TZFIELDS0_ll ! list of fields to exchange
 TYPE(LIST_ll), POINTER      :: TZFIELDS1_ll ! list of fields to exchange
 !
 !
-INTEGER             :: IRESP        ! Return code of FM routines
-INTEGER             :: ILUOUT       ! logical unit
-INTEGER             :: ISPLIT_PPM   ! temporal time splitting 
-INTEGER             :: IIB, IIE, IJB, IJE,IKB,IKE
-TYPE(TFIELDDATA) :: TZFIELD
+INTEGER              :: IRESP        ! Return code of FM routines
+INTEGER              :: ILUOUT       ! logical unit
+INTEGER              :: ISPLIT_PPM   ! temporal time splitting
+INTEGER              :: IIB, IIE, IJB, IJE,IKB,IKE
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       0.     INITIALIZATION                        
@@ -366,7 +366,7 @@ END IF
 !* prints in the file the 3D Courant numbers (one should flag this)
 !
 IF ( tpfile%lopened .AND. OCFL_WRIT .AND. (.NOT. L1D) ) THEN
-    TZFIELD = TFIELDDATA(        &
+    TZFIELD = TFIELDMETADATA(    &
       CMNHNAME   = 'CFLU',       &
       CSTDNAME   = '',           &
       CLONGNAME  = 'CFLU',       &
@@ -380,7 +380,7 @@ IF ( tpfile%lopened .AND. OCFL_WRIT .AND. (.NOT. L1D) ) THEN
     CALL IO_Field_write(TPFILE,TZFIELD,ZCFLU)
 !
   IF (.NOT. L2D) THEN
-    TZFIELD = TFIELDDATA(        &
+    TZFIELD = TFIELDMETADATA(    &
       CMNHNAME   = 'CFLV',       &
       CSTDNAME   = '',           &
       CLONGNAME  = 'CFLV',       &
@@ -394,7 +394,7 @@ IF ( tpfile%lopened .AND. OCFL_WRIT .AND. (.NOT. L1D) ) THEN
     CALL IO_Field_write(TPFILE,TZFIELD,ZCFLV)
   END IF
 !
-    TZFIELD = TFIELDDATA(        &
+    TZFIELD = TFIELDMETADATA(    &
       CMNHNAME   = 'CFLW',       &
       CSTDNAME   = '',           &
       CLONGNAME  = 'CFLW',       &
@@ -407,7 +407,7 @@ IF ( tpfile%lopened .AND. OCFL_WRIT .AND. (.NOT. L1D) ) THEN
       LTIMEDEP   = .TRUE.        )
     CALL IO_Field_write(TPFILE,TZFIELD,ZCFLW)
 !
-    TZFIELD = TFIELDDATA(       &
+    TZFIELD = TFIELDMETADATA(   &
       CMNHNAME   = 'CFL',       &
       CSTDNAME   = '',          &
       CLONGNAME  = 'CFL',       &
diff --git a/src/MNH/c2r2_adjust.f90 b/src/MNH/c2r2_adjust.f90
index 0112cd87a14e506d3afc204dc68f3e59b396938a..c5e9d27bcd264a39895284056bb1fdaa9c22b715 100644
--- a/src/MNH/c2r2_adjust.f90
+++ b/src/MNH/c2r2_adjust.f90
@@ -146,7 +146,7 @@ use modd_budget,         only: lbudget_th, lbudget_rv, lbudget_rc, lbudget_sv,
                                tbudgets
 USE MODD_CONF
 USE MODD_CST
-USE MODD_FIELD,          only: tfielddata, TYPEREAL
+USE MODD_FIELD,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_LUNIT_n,        ONLY: TLUOUT
 USE MODD_NSV,            ONLY: NSV_C2R2BEG
@@ -195,10 +195,10 @@ REAL, DIMENSION(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3)) &
                             ZW1,ZW2,ZW3  ! Work arrays for intermediate
                                          ! fields
 !
-INTEGER             :: IRESP      ! Return code of FM routines
-INTEGER             :: JITER,ITERMAX  ! iterative loop for first order adjustment
-INTEGER             :: ILUOUT     ! Logical unit of output listing 
-TYPE(TFIELDDATA)    :: TZFIELD
+INTEGER              :: IRESP      ! Return code of FM routines
+INTEGER              :: JITER,ITERMAX  ! iterative loop for first order adjustment
+INTEGER              :: ILUOUT     ! Logical unit of output listing
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       1.     PRELIMINARIES
@@ -405,7 +405,7 @@ IF ( HRAD /= 'NONE' ) THEN
 END IF
 !
 IF ( tpfile%lopened ) THEN
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'NEB',       &
     CSTDNAME   = '',          &
     CLONGNAME  = 'NEB',       &
diff --git a/src/MNH/call_rttov11.f90 b/src/MNH/call_rttov11.f90
index e6a43b03e6ee8ca268b31ecf695ca520157a2d31..c949ca4ebf02ce76697e879545f78ad7a8cd8e18 100644
--- a/src/MNH/call_rttov11.f90
+++ b/src/MNH/call_rttov11.f90
@@ -93,7 +93,7 @@ USE MODD_CST
 USE MODD_PARAMETERS
 USE MODD_GRID_n
 USE MODD_IO, ONLY: TFILEDATA
-USE MODD_FIELD, ONLY: TFIELDDATA, TYPEREAL
+USE MODD_FIELD, ONLY: TFIELDMETADATA, TYPEREAL
 USE MODD_LUNIT_n
 USE MODD_DEEP_CONVECTION_n
 USE MODD_REF_n
@@ -266,7 +266,7 @@ integer (kind=jpim), parameter :: fin = 10
 character (len=256) :: outstring
 ! -----------------------------------------------------------------------------
 REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZTEMP
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       0.     ARRAYS BOUNDS INITIALIZATION
@@ -585,7 +585,7 @@ DO JSAT=1,IJSAT ! loop over sensors
       YEND=YTWO//YCHAN
     END IF
 
-    TZFIELD = TFIELDDATA(                              &
+    TZFIELD = TFIELDMETADATA(                          &
       CMNHNAME   = TRIM(YBEG)//'_'//TRIM(YEND)//'BT',  &
       CSTDNAME   = '',                                 &
       CLONGNAME  = TRIM(YBEG)//'_'//TRIM(YEND)//'BT',  &
diff --git a/src/MNH/call_rttov13.f90 b/src/MNH/call_rttov13.f90
index 5c427dce7af43bb0ad843b7ea87a9d98c6211775..90526ac29577602f548b302c12173cfe7b98298c 100644
--- a/src/MNH/call_rttov13.f90
+++ b/src/MNH/call_rttov13.f90
@@ -90,7 +90,7 @@ USE MODD_CST
 USE MODD_PARAMETERS
 USE MODD_GRID_n
 USE MODD_IO, ONLY: TFILEDATA
-USE MODD_FIELD, ONLY: TFIELDDATA, TYPEREAL
+USE MODD_FIELD, ONLY: TFIELDMETADATA, TYPEREAL
 USE MODD_LUNIT_n
 USE MODD_LBC_n
 USE MODD_DEEP_CONVECTION_n
@@ -264,7 +264,7 @@ character (len=256) :: outstring
 ! -----------------------------------------------------------------------------
 CHARACTER(LEN=:), ALLOCATABLE :: YMNHNAME, YUNITS, YCOMMENT
 REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZTEMP
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       0.     ARRAYS BOUNDS INITIALIZATION
@@ -705,7 +705,7 @@ DO JSAT=1,IJSAT ! loop over sensors
       YUNITS     = '-'
       YCOMMENT   = TRIM(YBEG)//'_'//TRIM(YEND)//' bidirectional reflectance factor'
     END IF
-    TZFIELD = TFIELDDATA(                          &
+    TZFIELD = TFIELDMETADATA(                      &
       CMNHNAME   = TRIM( YMNHNAME ),               &
       CSTDNAME   = '',                             &
       CLONGNAME  = 'MesoNH: ' // TRIM( YMNHNAME ), &
diff --git a/src/MNH/call_rttov8.f90 b/src/MNH/call_rttov8.f90
index d38a71c2b540e56922818304d7202a84812f2a9f..ab370816e9fbd8998e73ed1420898793511151f9 100644
--- a/src/MNH/call_rttov8.f90
+++ b/src/MNH/call_rttov8.f90
@@ -90,6 +90,7 @@ SUBROUTINE CALL_RTTOV8(KDLON, KFLEV, KSTATM, PEMIS, PTSRAD, PSTATM,     &
 !!              ------------
 !!
 USE MODD_CST
+USE MODD_FIELD,          only: TFIELDMETADATA
 USE MODD_IO, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_GRID_n
@@ -687,7 +688,7 @@ REAL(Kind=jprb), PARAMETER :: o3_mixratio_to_ppmv = 6.03504e+5_JPRB
 INTEGER(Kind=jpim) :: alloc_status(40)
 
 CHARACTER(LEN=:), ALLOCATABLE :: YMNHNAME, YUNITS, YCOMMENT
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 
 ! - End of header --------------------------------------------------------
 !!!----------------------------------------------------------------------------
@@ -1568,7 +1569,7 @@ DO JSAT=1,IJSAT ! loop over sensors
 !    DO JK1=1,LEN_TRIM(inst_name(KRTTOVINFO(3,JSAT)))
 !      YINST(JK1:JK1)=CHAR(ICHAR(YINST(JK1:JK1))-32)
 !    END DO
-    TZFIELD = TFIELDDATA(                &
+    TZFIELD = TFIELDMETADATA(            &
       CMNHNAME   = TRIM(YINST)//'_ANGL', &
       CSTDNAME   = '',                   &
       CLONGNAME  = TRIM(YINST)//'_ANGL', &
@@ -1629,7 +1630,7 @@ DO JSAT=1,IJSAT ! loop over sensors
       YUNITS     = 'K'
       YCOMMENT   = TRIM(YBEG)//'_'//TRIM(YEND)//' BT'
     ENDIF
-    TZFIELD = TFIELDDATA(            &
+    TZFIELD = TFIELDMETADATA(        &
       CMNHNAME   = TRIM( YMNHNAME ), &
       CSTDNAME   = '',               &
       CLONGNAME  = TRIM( YMNHNAME ), &
@@ -1645,7 +1646,7 @@ DO JSAT=1,IJSAT ! loop over sensors
          MAXVAL(ZTBTMP(:,:,JCH),ZTBTMP(:,:,JCH)/=XUNDEF)
     CALL IO_Field_write(TPFILE,TZFIELD,ZTBTMP(:,:,JCH))
     IF (KRTTOVINFO(3,JSAT) == 4.AND. JCH==3 ) THEN ! AMSU-B
-      TZFIELD = TFIELDDATA(              &
+      TZFIELD = TFIELDMETADATA(          &
         CMNHNAME   = TRIM(YBEG)//'_UTH', &
         CSTDNAME   = '',                 &
         CLONGNAME  = TRIM(YBEG)//'_UTH', &
@@ -1727,7 +1728,7 @@ DO JSAT=1,IJSAT ! loop over sensors
         END DO
       END DO
       !
-      TZFIELD = TFIELDDATA(                                  &
+      TZFIELD = TFIELDMETADATA(                              &
         CMNHNAME   = TRIM(YBEG)//'_'//TRIM(YEND)//'JAT',     &
         CSTDNAME   = '',                                     &
         CLONGNAME  = TRIM(YBEG)//'_'//TRIM(YEND)//'JAT',     &
@@ -1743,7 +1744,7 @@ DO JSAT=1,IJSAT ! loop over sensors
            MAXVAL(ZTEMPK(:,:,:),ZTEMPK(:,:,:)/=XUNDEF)
       CALL IO_Field_write(TPFILE,TZFIELD,ZTEMPK(:,:,:))
       !
-      TZFIELD = TFIELDDATA(                                  &
+      TZFIELD = TFIELDMETADATA(                              &
         CMNHNAME   = TRIM(YBEG)//'_'//TRIM(YEND)//'JAV',     &
         CSTDNAME   = '',                                     &
         CLONGNAME  = TRIM(YBEG)//'_'//TRIM(YEND)//'JAV',     &
diff --git a/src/MNH/compare_dad.f90 b/src/MNH/compare_dad.f90
index fe145cee49c3dc81433344f9e26cebddcc46f57c..983eb5188da425017d880f728576aac6e0ece1e5 100644
--- a/src/MNH/compare_dad.f90
+++ b/src/MNH/compare_dad.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2004-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2004-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -66,7 +66,7 @@ END MODULE MODI_COMPARE_DAD
 !
 !
 USE MODD_CONF
-use modd_field,            only: tfielddata, tfieldlist
+use modd_field,            only: tfieldmetadata, tfieldlist
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_LUNIT_n,          ONLY: TLUOUT
 USE MODD_PARAMETERS,       ONLY: JPHEXT, JPVEXT, NMNHNAMELGTMAX
@@ -109,7 +109,7 @@ INTEGER             :: IIMAX_1,IJMAX_1,IKMAX_1
 INTEGER             :: IIMAX_2,IJMAX_2,IKMAX_2
 !
 REAL :: ZLATORI, ZLONORI, ZXHATM, ZYHATM
-TYPE(TFIELDDATA)        :: TZFIELD
+TYPE(TFIELDMETADATA)    :: TZFIELD
 TYPE(TFILEDATA),POINTER :: TZDADINIFILE => NULL()
 TYPE(TFILEDATA),POINTER :: TZDADSPAFILE => NULL()
 !-------------------------------------------------------------------------------
@@ -170,12 +170,12 @@ IF (.NOT.LCARTESIAN) THEN
   !
   IF (TZDADINIFILE%NMNHVERSION(1)<4 .OR. (TZDADINIFILE%NMNHVERSION(1)==4 .AND. TZDADINIFILE%NMNHVERSION(2)<=5) ) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('LONORI',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME = 'LONOR'
     CALL IO_Field_read(TZDADINIFILE,TZFIELD,ZLONORI_1)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('LATORI',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME = 'LATOR'
     CALL IO_Field_read(TZDADINIFILE,TZFIELD,ZLATORI_1)
     !
@@ -226,12 +226,12 @@ IF (.NOT.LCARTESIAN) THEN
   !
   IF (TZDADSPAFILE%NMNHVERSION(1)<4 .OR. (TZDADSPAFILE%NMNHVERSION(1)==4 .AND. TZDADSPAFILE%NMNHVERSION(2)<=5)) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('LONORI',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME = 'LONOR'
     CALL IO_Field_read(TZDADSPAFILE,TZFIELD,ZLONORI_2)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('LATORI',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME = 'LATOR'
     CALL IO_Field_read(TZDADSPAFILE,TZFIELD,ZLATORI_2)
     !
diff --git a/src/MNH/compute_r00.f90 b/src/MNH/compute_r00.f90
index 85f43d0d24901e4ed87ba8814692f7604e984a8c..727b230ffd52a9b7afa1b20d5748bc45e34876b4 100644
--- a/src/MNH/compute_r00.f90
+++ b/src/MNH/compute_r00.f90
@@ -65,7 +65,7 @@ END MODULE MODI_COMPUTE_R00
 !
 USE MODD_CONF
 USE MODD_GRID_n
-use modd_field,            only: tfielddata, TYPEREAL
+use modd_field,            only: tfieldmetadata, TYPEREAL
 USE MODD_FIELD_n
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_LUNIT_n
@@ -114,7 +114,7 @@ LOGICAL                            :: GSTART
 INTEGER                            :: INBR_START
 REAL                               :: ZXMAX,ZYMAX,ZZMAX  ! domain extrema
 INTEGER, DIMENSION(100)            :: NBRFILES 
-TYPE(TFIELDDATA)                   :: TZFIELD
+TYPE(TFIELDMETADATA)               :: TZFIELD
 TYPE(TFILEDATA),POINTER            :: TZTRACFILE
 !
 !-------------------------------------------------------------------------------
@@ -277,7 +277,7 @@ DO JFILECUR=1,NFILES
   IF (GSTART) THEN
     PRINT *,'INBR_START',INBR_START,' NBRFILES(JFILECUR)',NBRFILES(JFILECUR)
     WRITE(YMNHNAME,'(A2,I2.2)')'X0',INBR_START
-    TZFIELD = TFIELDDATA(                           &
+    TZFIELD = TFIELDMETADATA(                       &
       CMNHNAME   = TRIM( YMNHNAME ),                &
       CSTDNAME   = '',                              &
       CLONGNAME  = TRIM( YMNHNAME ),                &
@@ -292,7 +292,7 @@ DO JFILECUR=1,NFILES
     CALL IO_Field_write(TPFILE,TZFIELD,ZX00(:,:,:))
     !
     WRITE(YMNHNAME,'(A2,I2.2)')'Y0',INBR_START
-    TZFIELD = TFIELDDATA(                           &
+    TZFIELD = TFIELDMETADATA(                       &
       CMNHNAME   = TRIM( YMNHNAME ),                &
       CSTDNAME   = '',                              &
       CLONGNAME  = TRIM(TZFIELD%CMNHNAME),          &
@@ -307,7 +307,7 @@ DO JFILECUR=1,NFILES
     CALL IO_Field_write(TPFILE,TZFIELD,ZY00(:,:,:))
     !
     WRITE(YMNHNAME,'(A2,I2.2)')'Z0',INBR_START
-    TZFIELD = TFIELDDATA(                           &
+    TZFIELD = TFIELDMETADATA(                       &
       CMNHNAME   = TRIM( YMNHNAME ),                &
       CSTDNAME   = '',                              &
       CLONGNAME  = TRIM( YMNHNAME ),                &
@@ -338,7 +338,7 @@ DO JFILECUR=1,NFILES
   IF (GSTART) THEN
     !
     WRITE(YMNHNAME,'(A3,I2.2)')'TH0',INBR_START
-    TZFIELD = TFIELDDATA(                           &
+    TZFIELD = TFIELDMETADATA(                       &
       CMNHNAME   = TRIM( YMNHNAME ),                &
       CSTDNAME   = '',                              &
       CLONGNAME  = TRIM( YMNHNAME ),                &
@@ -353,7 +353,7 @@ DO JFILECUR=1,NFILES
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK1(:,:,:))
     !
     WRITE(YMNHNAME,'(A3,I2.2)')'RV0',INBR_START
-    TZFIELD = TFIELDDATA(                           &
+    TZFIELD = TFIELDMETADATA(                       &
       CMNHNAME   = TRIM( YMNHNAME ),                &
       CSTDNAME   = '',                              &
       CLONGNAME  = TRIM( YMNHNAME ),                &
@@ -370,7 +370,7 @@ DO JFILECUR=1,NFILES
 !*       4.4   compute the origin of the particules using one more segment
 !
   IF (JFILECUR /= NFILES) THEN
-    TZFIELD = TFIELDDATA(    &
+    TZFIELD = TFIELDMETADATA(&
       CMNHNAME   = 'LGXT',   &
       CSTDNAME   = '',       &
       CLONGNAME  = 'LGXT',   &
diff --git a/src/MNH/free_atm_profile.f90 b/src/MNH/free_atm_profile.f90
index 34fefa20ae0bdb144b7e86b510e6f93e8a93bb05..572dd91d8489b8e2ea4e8bb4738cbf1b0750e60f 100644
--- a/src/MNH/free_atm_profile.f90
+++ b/src/MNH/free_atm_profile.f90
@@ -93,7 +93,7 @@ END MODULE MODI_FREE_ATM_PROFILE
 !              ------------
 !
 USE MODD_CONF
-use modd_field,          only: tfielddata, TYPEINT, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEINT, TYPEREAL
 USE MODD_GRID_n
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_LUNIT,          ONLY: TLUOUT0
@@ -163,7 +163,7 @@ REAL, DIMENSION(SIZE(XZZ,1),SIZE(XZZ,2),SIZE(XZZ,3)) &
                                       :: Z3D ! field to be recorded
 REAL, DIMENSION(SIZE(XZZ,1),SIZE(XZZ,2),SIZE(XZZ,3)) &
                                       :: ZZMASS ! MESO-NH output mass grid
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 ILUOUT0 = TLUOUT0%NLU
@@ -468,7 +468,7 @@ IF (CPROGRAM == 'DIAG  ' ) THEN
       Z2D(JI,JJ) = PZMASS_MX(JI,JJ,IK_BL_TOP(JI,JJ)) - PZS_LS(JI,JJ)
     END DO
   END DO
-  TZFIELD = TFIELDDATA(                                 &
+  TZFIELD = TFIELDMETADATA(                             &
     CMNHNAME   = 'HBLTOP',                              &
     CSTDNAME   = 'atmosphere_boundary_layer_thickness', &
     CLONGNAME  = 'HBLTOP',                              &
@@ -484,7 +484,7 @@ IF (CPROGRAM == 'DIAG  ' ) THEN
 !*      11.2  Writing of level of boundary layer top
 !             --------------------------------------
 !
-  TZFIELD = TFIELDDATA(                                                    &
+  TZFIELD = TFIELDMETADATA(                                                &
     CMNHNAME   = 'KBLTOP',                                                 &
     CSTDNAME   = 'model_level_number_at_top_of_atmosphere_boundary_layer', &
     CLONGNAME  = 'KBLTOP',                                                 &
@@ -503,7 +503,7 @@ IF (CPROGRAM /= 'DIAG  ' .AND. CPROGRAM /= 'IDEAL ' ) THEN
 !*      11.3  Writing of free atmosphere gradient
 !             -----------------------------------
 !
-  TZFIELD = TFIELDDATA(                      &
+  TZFIELD = TFIELDMETADATA(                  &
     CMNHNAME   = 'FREE_ATM_GR',              &
     CSTDNAME   = '',                         &
     CLONGNAME  = 'FREE_ATM_GR',              &
@@ -525,7 +525,7 @@ IF (CPROGRAM /= 'DIAG  ' .AND. CPROGRAM /= 'IDEAL ' ) THEN
   CALL COEF_VER_INTERP_LIN(PZ_FREE(:,:,:),ZZMASS(:,:,:),OLEUG=.TRUE.)
   Z3D(:,:,:)=VER_INTERP_LIN(PF_FREE(:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:))
 !
-  TZFIELD = TFIELDDATA(            &
+  TZFIELD = TFIELDMETADATA(        &
     CMNHNAME   = 'THV_FREE',       &
     CSTDNAME   = '',               &
     CLONGNAME  = 'THV_FREE',       &
diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90
index f5938cbc1951524bbd3d684ec386853181c2ae9b..5d9ea3a672498ad419d90f07840abee934d97abf 100644
--- a/src/MNH/ini_aircraft_balloon.f90
+++ b/src/MNH/ini_aircraft_balloon.f90
@@ -89,7 +89,7 @@ USE MODD_AIRCRAFT_BALLOON
 USE MODD_CONF
 USE MODD_DIAG_FLAG
 USE MODD_DYN_n
-use modd_field,      only: tfielddata, TYPEREAL
+use modd_field,      only: tfieldmetadata, TYPEREAL
 USE MODD_GRID
 USE MODD_IO,         ONLY: TFILEDATA
 USE MODD_LUNIT_n,    ONLY: TLUOUT
@@ -128,7 +128,7 @@ INTEGER :: ISTORE ! number of storage instants
 INTEGER :: ILUOUT ! logical unit
 INTEGER :: IRESP  ! return code
 INTEGER :: JSEG   ! loop counter
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !----------------------------------------------------------------------------
 !
@@ -474,7 +474,7 @@ END IF
 IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL  ' ) THEN
   ! read the current location in the FM_FILE
   !
-  TZFIELD = TFIELDDATA(                      &
+  TZFIELD = TFIELDMETADATA(                  &
     CMNHNAME   = TRIM(TPFLYER%TITLE)//'LAT', &
     CSTDNAME   = '',                         &
     CLONGNAME  = TRIM(TPFLYER%TITLE)//'LAT', &
@@ -490,7 +490,7 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL  ' )
   IF ( IRESP /= 0 ) THEN
     WRITE(ILUOUT,*) "INI_LAUCH: Initial location take for ",TPFLYER%TITLE
   ELSE
-    TZFIELD = TFIELDDATA(                      &
+    TZFIELD = TFIELDMETADATA(                  &
       CMNHNAME   = TRIM(TPFLYER%TITLE)//'LON', &
       CSTDNAME   = '',                         &
       CLONGNAME  = TRIM(TPFLYER%TITLE)//'LON', &
@@ -503,7 +503,7 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL  ' )
       LTIMEDEP   = .TRUE.                      )
     CALL IO_Field_read(TPINIFILE,TZFIELD,ZLON)
     !
-    TZFIELD = TFIELDDATA(                      &
+    TZFIELD = TFIELDMETADATA(                  &
       CMNHNAME   = TRIM(TPFLYER%TITLE)//'ALT', &
       CSTDNAME   = '',                         &
       CLONGNAME  = TRIM(TPFLYER%TITLE)//'ALT', &
@@ -518,7 +518,7 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL  ' )
     !
     TPFLYER%P_CUR   = XUNDEF
     !
-    TZFIELD = TFIELDDATA(                          &
+    TZFIELD = TFIELDMETADATA(                      &
       CMNHNAME   = TRIM(TPFLYER%TITLE)//'WASCENT', &
       CSTDNAME   = '',                             &
       CLONGNAME  = TRIM(TPFLYER%TITLE)//'WASCENT', &
@@ -531,7 +531,7 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL  ' )
       LTIMEDEP   = .TRUE.                          )
     CALL IO_Field_read(TPINIFILE,TZFIELD,TPFLYER%WASCENT)
     !
-    TZFIELD = TFIELDDATA(                      &
+    TZFIELD = TFIELDMETADATA(                  &
       CMNHNAME   = TRIM(TPFLYER%TITLE)//'RHO', &
       CSTDNAME   = '',                         &
       CLONGNAME  = TRIM(TPFLYER%TITLE)//'RHO', &
diff --git a/src/MNH/ini_deep_convection.f90 b/src/MNH/ini_deep_convection.f90
index 447fac0b06b38d843dfeaa16f1df28199800d920..695d39a4d512f4fa48d0137b495279e39f1f62de 100644
--- a/src/MNH/ini_deep_convection.f90
+++ b/src/MNH/ini_deep_convection.f90
@@ -120,7 +120,7 @@ USE MODD_CH_M9_n,         ONLY: CNAMES
 USE MODD_CONVPAR
 USE MODD_DUST,            ONLY: CDUSTNAMES
 USE MODD_ELEC_DESCR,      ONLY: CELECNAMES
-use modd_field,           only: tfielddata, tfieldlist, TYPEREAL
+use modd_field,           only: tfieldmetadata, tfieldlist, TYPEREAL
 USE MODD_ICE_C1R3_DESCR,  ONLY: C1R3NAMES
 USE MODD_IO,              ONLY: TFILEDATA
 USE MODD_LG,              ONLY: CLGNAMES
@@ -180,10 +180,10 @@ REAL, DIMENSION(:,:),   INTENT(INOUT) :: PCG_TOTAL_NUMBER ! Total number of CG
 !*       0.2   declarations of local variables
 !
 !
-INTEGER          :: IID
-INTEGER          :: IRESP
-INTEGER          :: JSV     ! number of tracers
-TYPE(TFIELDDATA) :: TZFIELD
+INTEGER              :: IID
+INTEGER              :: IRESP
+INTEGER              :: JSV     ! number of tracers
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -233,19 +233,19 @@ ELSE
   CALL IO_Field_read(TPINIFILE,'DRICONV',  PDRICONV)
 !
   CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CUNITS = 'mm hour-1'
   CALL IO_Field_read(TPINIFILE,TZFIELD,PPRCONV)
   PPRCONV=PPRCONV/(1000.*3600.) ! conversion into m/s units
 !
   CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CUNITS = 'mm hour-1'
   CALL IO_Field_read(TPINIFILE,TZFIELD,PPRSCONV)
   PPRSCONV=PPRSCONV/(1000.*3600.) ! conversion into m/s units
 !
   CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CUNITS = 'mm'
   CALL IO_Field_read(TPINIFILE,TZFIELD,PPACCONV)
   PPACCONV=PPACCONV/1000.       ! conversion into m unit
@@ -260,7 +260,7 @@ ELSE
 !
  SELECT CASE(HGETSVCONV)
   CASE('READ')
-    TZFIELD = TFIELDDATA(         &
+    TZFIELD = TFIELDMETADATA(     &
       CMNHNAME   = 'generic for ini_deep_convection', & !Temporary name to ease identification
       CUNITS     = 's-1',         &
       CDIR       = 'XY',          &
diff --git a/src/MNH/ini_lb.f90 b/src/MNH/ini_lb.f90
index b91b85868754149aeb5d1d01772a268f9be40a19..3c610aa2dc2a886f685abefa9cc48220ec04099e 100644
--- a/src/MNH/ini_lb.f90
+++ b/src/MNH/ini_lb.f90
@@ -145,7 +145,7 @@ USE MODD_CTURB
 USE MODD_CONF
 USE MODD_DUST
 USE MODD_ELEC_DESCR,      ONLY: CELECNAMES
-use modd_field,           only: tfielddata, TYPELOG, TYPEREAL
+use modd_field,           only: tfieldmetadata, TYPELOG, TYPEREAL
 USE MODD_ICE_C1R3_DESCR,  ONLY: C1R3NAMES
 USE MODD_IO,              ONLY: TFILEDATA
 USE MODD_LG,              ONLY: CLGNAMES
@@ -231,8 +231,8 @@ LOGICAL :: GHORELAX_R, GHORELAX_SV ! switch for the horizontal relaxation
 CHARACTER (LEN= LEN(HGETRVM)), DIMENSION (7) :: YGETRXM ! Arrays with  the get indicators 
                                                         !  for the moist variables
 CHARACTER (LEN=1), DIMENSION (7) :: YC    ! array with the prefix of the moist variables
-CHARACTER(LEN=2)  :: INDICE ! to index CCN and IFN fields of LIMA scheme
-TYPE(TFIELDDATA)  :: TZFIELD
+CHARACTER(LEN=2)     :: INDICE ! to index CCN and IFN fields of LIMA scheme
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !
@@ -361,7 +361,7 @@ END SELECT
 !*        2.5 LB-Rx
 !
 IF(KSIZELBXR_ll  > 0 ) THEN
-  TZFIELD = TFIELDDATA(                                          &
+  TZFIELD = TFIELDMETADATA(                                      &
     CMNHNAME   = 'HORELAX_R',                                    &
     CSTDNAME   = '',                                             &
     CLONGNAME  = 'HORELAX_R',                                    &
@@ -390,7 +390,7 @@ IF(KSIZELBXR_ll  > 0 ) THEN
     IL3DY=2*JPHEXT ! 2
   END IF
   !
-  TZFIELD = TFIELDDATA(     &
+  TZFIELD = TFIELDMETADATA( &
     CUNITS     = 'kg kg-1', &
     CDIR       = '',        &
     NGRID      = 1,         &
diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90
index 1f099672e93eb078161e9b0a29070dfb7e01f295..21642620971a94e1c95256cb2739ce03f1e31b20 100644
--- a/src/MNH/ini_prog_var.f90
+++ b/src/MNH/ini_prog_var.f90
@@ -113,7 +113,7 @@ USE MODD_CONF_n
 USE MODD_DIM_n
 USE MODD_DUST
 USE MODD_DYN_n
-use modd_field,            only: TFIELDDATA, TYPEREAL
+use modd_field,            only: TFIELDMETADATA, TYPEREAL
 USE MODD_FIELD_n
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_LSFIELD_n
@@ -163,7 +163,7 @@ INTEGER :: JSV   ! Loop index
 INTEGER :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX, IMODEIDX  ! dust and salt modes
 INTEGER :: ILUDES                         !  logical unit numbers of DESFM file
 LOGICAL :: GFOUND                         ! Return code when searching namelist
-TYPE(TFIELDDATA)        :: TZFIELD
+TYPE(TFIELDMETADATA)    :: TZFIELD
 TYPE(TFILEDATA),POINTER :: TZCHEMFILE => NULL()
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ini_size_spawn.f90 b/src/MNH/ini_size_spawn.f90
index 0de2efdb4672b8e4e1402330d51dea5d6b759cb4..abab91578153c475a65cd826bb4f559cad97d426 100644
--- a/src/MNH/ini_size_spawn.f90
+++ b/src/MNH/ini_size_spawn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1999-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1999-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -78,7 +78,7 @@ END MODULE MODI_INI_SIZE_SPAWN
 USE MODD_CONF
 USE MODD_DIM_n,            ONLY: DIM_MODEL
 USE MODD_DYN_n,            ONLY: CPRESOPT, NITR
-use modd_field,            only: tfielddata, tfieldlist
+use modd_field,            only: tfieldmetadata, tfieldlist
 USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_IO,               ONLY: ISNPROC, ISP, TFILEDATA
@@ -137,7 +137,7 @@ INTEGER            :: IDIMX, IDIMY, IIB, IJB, IIE, IJE
 !$
 REAL :: ZLATOR, ZLONOR, ZXHATM, ZYHATM
 INTEGER :: IIMAX_ll,IJMAX_ll
-TYPE(TFIELDDATA)        :: TZFIELD
+TYPE(TFIELDMETADATA)    :: TZFIELD
 TYPE(TFILEDATA),POINTER :: TZDOMAIN => NULL()
 !
 !
@@ -265,12 +265,12 @@ IF (LEN_TRIM(CDOMAIN)>0) THEN
   !
   IF (TPINIFILE%NMNHVERSION(1)<4 .OR. (TPINIFILE%NMNHVERSION(1)==4 .AND. TPINIFILE%NMNHVERSION(2)<=5)) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('LONORI',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME = 'LONOR'
     CALL IO_Field_read(TPINIFILE,TZFIELD,XPGDLONOR)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('LATORI',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME = 'LATOR'
     CALL IO_Field_read(TPINIFILE,TZFIELD,XPGDLATOR)
     !
diff --git a/src/MNH/ini_surf_rad.f90 b/src/MNH/ini_surf_rad.f90
index be7c6f342153a6991a14bc8e03b3cc5465b409ba..19b5f8df6efdff90a4f1250ad9bf7cc6c7a0fab6 100644
--- a/src/MNH/ini_surf_rad.f90
+++ b/src/MNH/ini_surf_rad.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2003-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -63,7 +63,7 @@ END MODULE MODI_INI_SURF_RAD
 !*       0.    DECLARATIONS
 !              ------------
 !
-use modd_field,         only: tfielddata, tfieldlist
+use modd_field,         only: tfieldmetadata, tfieldlist
 USE MODD_IO,            ONLY: TFILEDATA
 !
 use mode_field,         only: Find_field_id_from_mnhname
@@ -82,8 +82,8 @@ REAL, DIMENSION(:,:),   INTENT(OUT) :: PTSRAD    ! radiative surface temperature
 !
 !*       0.2   declarations of local variables
 !
-INTEGER           :: IID, IRESP
-TYPE(TFIELDDATA)  :: TZFIELD
+INTEGER              :: IID, IRESP
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL IO_Field_read(TPINIFILE,'DIR_ALB',PDIR_ALB)
@@ -91,7 +91,7 @@ CALL IO_Field_read(TPINIFILE,'SCA_ALB',PSCA_ALB)
 !
 CALL PRINT_MSG(NVERB_INFO,'IO','INI_SURF_RAD','EMIS: reading only first band (copy on others)')
 CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS',IID,IRESP)
-TZFIELD = TFIELDLIST(IID)
+TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
 TZFIELD%NDIMS = 2
 CALL IO_Field_read(TPINIFILE,TZFIELD,PEMIS(:,:,1))
 PEMIS(:,:,:) = SPREAD(SOURCE=PEMIS(:,:,1),DIM=3,NCOPIES=SIZE(PEMIS,3))
diff --git a/src/MNH/khko_notadjust.f90 b/src/MNH/khko_notadjust.f90
index b69b6a18ae466607cabdbc27a69a1c762a0c6a98..74be8f4336bf44c1106dfb44477434904ab62bc3 100644
--- a/src/MNH/khko_notadjust.f90
+++ b/src/MNH/khko_notadjust.f90
@@ -101,7 +101,7 @@ use modd_budget,          only: lbudget_th, lbudget_rv, lbudget_rc, lbudget_sv,
                                 tbudgets
 USE MODD_CONF
 USE MODD_CST
-use modd_field,           only: TFIELDDATA,TYPEREAL
+use modd_field,           only: TFIELDMETADATA, TYPEREAL
 USE MODD_IO,              ONLY: TFILEDATA
 USE MODD_LUNIT_n,         ONLY: TLUOUT
 USE MODD_NSV,             ONLY: NSV_C2R2BEG
@@ -183,8 +183,8 @@ INTEGER, DIMENSION(:), ALLOCATABLE :: IVEC1             ! Vectors of indices for
 REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) ::&
                        ZEXNT,ZEXNS,ZT,ZRVSAT,ZWORK,ZLV,ZCPH, ZW1,        &
                        ZACT, ZDZ
-INTEGER           :: JK            ! For loop
-TYPE(TFIELDDATA)  :: TZFIELD
+INTEGER              :: JK            ! For loop
+TYPE(TFIELDMETADATA) :: TZFIELD
 
 !-------------------------------------------------------------------------------
 !
@@ -389,7 +389,7 @@ END IF
   PNPRO(:,:,:) = ZACT(:,:,:) 
 !
 IF ( tpfile%lopened ) THEN
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'SURSAT',    &
     CSTDNAME   = '',          &
     CLONGNAME  = 'SURSAT',    &
@@ -402,7 +402,7 @@ IF ( tpfile%lopened ) THEN
     LTIMEDEP   = .FALSE.      )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK)
   !
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'ACT_OD',    &
     CSTDNAME   = '',          &
     CLONGNAME  = 'ACT_OD',    &
diff --git a/src/MNH/lima_adjust.f90 b/src/MNH/lima_adjust.f90
index 0a7f2a4de44d9a7263a0625e493fb31ad3d9ff81..d6338d3bfbcc58a7b7a2a35fb61edc9281ea38e9 100644
--- a/src/MNH/lima_adjust.f90
+++ b/src/MNH/lima_adjust.f90
@@ -149,7 +149,7 @@ use modd_budget,           only: lbu_enable, nbumod,
                                  tbudgets
 USE MODD_CONF
 USE MODD_CST
-use modd_field,            only: TFIELDDATA, TYPEREAL
+use modd_field,            only: TFIELDMETADATA, TYPEREAL
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_LUNIT_n,          ONLY: TLUOUT
 USE MODD_NSV
@@ -284,7 +284,7 @@ INTEGER                           :: JL       ! and PACK intrinsics
 INTEGER                           :: JMOD, JMOD_IFN, JMOD_IMM
 !
 INTEGER , DIMENSION(3) :: BV
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA)  :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -1187,7 +1187,7 @@ IF ( SIZE(PSRCS,3) /= 0 ) THEN
 END IF
 !
 IF ( tpfile%lopened ) THEN
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'NEB',       &
     CSTDNAME   = '',          &
     CLONGNAME  = 'NEB',       &
@@ -1243,7 +1243,7 @@ IF ( tpfile%lopened ) THEN
   ZW1(:,:,:)= 2.0*PPABST(:,:,:)-PPABSM(:,:,:)
   ZW(:,:,:) = PRVT(:,:,:)*( ZW1(:,:,:)-ZW(:,:,:) ) / ( (XMV/XMD) * ZW(:,:,:) ) - 1.0
 
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'SSI',       &
     CSTDNAME   = '',          &
     CLONGNAME  = 'SSI',       &
diff --git a/src/MNH/lima_adjust_split.f90 b/src/MNH/lima_adjust_split.f90
index 67eefa30b93fcbe1f43482ec9a0d08c7f7b7a65d..b1ea3ad392eac4f15ba31aec37d6c12dd5752b9d 100644
--- a/src/MNH/lima_adjust_split.f90
+++ b/src/MNH/lima_adjust_split.f90
@@ -153,7 +153,7 @@ use modd_budget,           only: lbu_enable, nbumod,
                                  tbudgets
 USE MODD_CONF
 USE MODD_CST
-use modd_field,            only: TFIELDDATA, TYPEREAL
+use modd_field,            only: TFIELDMETADATA, TYPEREAL
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_LUNIT_n,          ONLY: TLUOUT
 USE MODD_NSV
@@ -309,7 +309,7 @@ INTEGER                           :: JL       ! and PACK intrinsics
 INTEGER                           :: JMOD, JMOD_IFN, JMOD_IMM
 !
 INTEGER , DIMENSION(3) :: BV
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA)  :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -726,7 +726,7 @@ IF ( OSUBG_COND ) THEN
 END IF ! fin test OSUBG_COND
 
 IF ( tpfile%lopened ) THEN
-   TZFIELD = TFIELDDATA(       &
+   TZFIELD = TFIELDMETADATA(   &
      CMNHNAME   = 'NEB',       &
      CSTDNAME   = '',          &
      CLONGNAME  = 'NEB',       &
@@ -782,7 +782,7 @@ IF ( tpfile%lopened ) THEN
    ZW1(:,:,:)= 2.0*PPABST(:,:,:)-PPABSM(:,:,:)
    ZW(:,:,:) = PRVT(:,:,:)*( ZW1(:,:,:)-ZW(:,:,:) ) / ( (XMV/XMD) * ZW(:,:,:) ) - 1.0
    
-   TZFIELD = TFIELDDATA(       &
+   TZFIELD = TFIELDMETADATA(   &
      CMNHNAME   = 'SSI',       &
      CSTDNAME   = '',          &
      CLONGNAME  = 'SSI',       &
diff --git a/src/MNH/lima_ccn_activation.f90 b/src/MNH/lima_ccn_activation.f90
index 2c2902a3751b6225e227c7952a6f39d17d56a0a9..2cbaf374d240c74927b4769706d542d98778f755 100644
--- a/src/MNH/lima_ccn_activation.f90
+++ b/src/MNH/lima_ccn_activation.f90
@@ -98,7 +98,7 @@ END MODULE MODI_LIMA_CCN_ACTIVATION
 !              ------------
 !
 USE MODD_CST,             ONLY: XALPW, XBETAW, XCL, XCPD, XCPV, XGAMW, XLVTT, XMD, XMNH_EPSILON, XMV, XRV, XTT
-use modd_field,           only: TFIELDDATA, TYPEREAL
+use modd_field,           only: TFIELDMETADATA, TYPEREAL
 USE MODD_IO,              ONLY: TFILEDATA
 USE MODD_LUNIT_n,         ONLY: TLUOUT
 USE MODD_PARAMETERS,      ONLY: JPHEXT, JPVEXT
@@ -181,7 +181,7 @@ INTEGER :: JMOD
 INTEGER :: IIB, IIE, IJB, IJE, IKB, IKE        ! Physical domain
 !
 INTEGER                  :: ILUOUT     ! Logical unit of output listing 
-TYPE(TFIELDDATA) :: TZFIELD   
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 ILUOUT = TLUOUT%NLU
@@ -487,8 +487,7 @@ IF ( tpfile%lopened ) THEN
     ZW (:,:,:) = 0.
     ZW2(:,:,:) = 0.
   END IF
-
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'SMAX',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'SMAX',       &
@@ -501,7 +500,7 @@ IF ( tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.        )
   CALL IO_Field_write(TPFILE,TZFIELD,ZW)
   !
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'NACT',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'NACT',       &
diff --git a/src/MNH/lima_notadjust.f90 b/src/MNH/lima_notadjust.f90
index e1eb550e465de662409847510cc406fef8df5d5b..9f43f46d077219b0a52f515621467d68a701b446 100644
--- a/src/MNH/lima_notadjust.f90
+++ b/src/MNH/lima_notadjust.f90
@@ -81,7 +81,7 @@ use modd_budget,           only: lbu_enable, nbumod,
                                  tbudgets
 USE MODD_CONF
 USE MODD_CST
-USE MODD_FIELD,            ONLY: TFIELDDATA,TYPEREAL
+USE MODD_FIELD,            ONLY: TFIELDMETADATA, TYPEREAL
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_LUNIT_n,          ONLY: TLUOUT
 USE MODD_NSV
@@ -164,7 +164,7 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) ::&
                        ZSAT,ZCCS
 INTEGER           :: JK            ! For loop
 integer :: idx
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZNFS     ! CCN C. available source
 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZNAS     ! Cloud  C. nuclei C. source
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZZNFS     ! CCN C. available source
@@ -566,7 +566,7 @@ END IF
 !
 IF ( tpfile%lopened ) THEN
   ZW(:,:,:)=SUM(ZNAS,4)-ZW(:,:,:)
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'NACT',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'NACT',       &
diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90
index 8f50a87982fac6af7ee0a13de88a3ca529eb73e8..ce103114dc2e358a54dd5e2722d4d50768eabdcd 100644
--- a/src/MNH/lima_warm_nucl.f90
+++ b/src/MNH/lima_warm_nucl.f90
@@ -110,7 +110,7 @@ END MODULE MODI_LIMA_WARM_NUCL
 !              ------------
 !
 USE MODD_CST
-use modd_field,           only: TFIELDDATA, TYPEREAL
+use modd_field,           only: TFIELDMETADATA, TYPEREAL
 USE MODD_IO,              ONLY: TFILEDATA
 USE MODD_LUNIT_n,         ONLY: TLUOUT
 USE MODD_PARAMETERS,      ONLY : JPHEXT, JPVEXT
@@ -202,7 +202,7 @@ INTEGER :: JMOD
 INTEGER :: IIB, IIE, IJB, IJE, IKB, IKE        ! Physical domain
 !
 INTEGER                  :: ILUOUT     ! Logical unit of output listing 
-TYPE(TFIELDDATA) :: TZFIELD   
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 ILUOUT = TLUOUT%NLU
@@ -513,7 +513,7 @@ IF ( tpfile%lopened ) THEN
     ZW2(:,:,:) = 0.
   END IF
 
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'SMAX',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'SMAX',       &
@@ -526,7 +526,7 @@ IF ( tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.        )
   CALL IO_Field_write(TPFILE,TZFIELD,ZW)
   !
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'NACT',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'NACT',       &
diff --git a/src/MNH/menu_diachro.f90 b/src/MNH/menu_diachro.f90
index 88149a5697accc9c02078ccaf37e60c2a0ebb367..f6d0ff1c90d5ec2142b8d5115a15e41faef833a6 100644
--- a/src/MNH/menu_diachro.f90
+++ b/src/MNH/menu_diachro.f90
@@ -65,7 +65,7 @@ contains
 !              ------------
 !
 USE MODD_CONF
-use modd_field,          only: tfielddata, TYPEINT
+use modd_field,          only: tfieldmetadata, TYPEINT
 USE MODD_IO,             only: TFILEDATA
 use modd_parameters,     only: NMNHNAMELGTMAX
 !
@@ -92,7 +92,7 @@ INTEGER   ::   IRESPDIA
 INTEGER,SAVE   ::   IGROUP=0
 INTEGER,DIMENSION(:),ALLOCATABLE :: ITABCHAR
 LOGICAL   ::   GPACK
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 type(tfiledata) :: tzfile
 !------------------------------------------------------------------------------
 !
@@ -115,7 +115,7 @@ IF(HGROUP == 'END')THEN
 
   ILENG=NMNHNAMELGTMAX*IGROUP
 
-  TZFIELD = TFIELDDATA(             &
+  TZFIELD = TFIELDMETADATA(         &
     CMNHNAME   = 'MENU_BUDGET.DIM', &
     CSTDNAME   = '',                &
     CLONGNAME  = 'MENU_BUDGET.DIM', &
@@ -135,7 +135,7 @@ IF(HGROUP == 'END')THEN
     ENDDO
   ENDDO
 
-  TZFIELD = TFIELDDATA(         &
+  TZFIELD = TFIELDMETADATA(     &
     CMNHNAME   = 'MENU_BUDGET', &
     CSTDNAME   = '',            &
     CLONGNAME  = 'MENU_BUDGET', &
@@ -156,7 +156,7 @@ ELSE IF(HGROUP == 'READ')THEN
   tzfile = tpdiafile
   tzfile%cformat = 'LFI'
 
-  TZFIELD = TFIELDDATA(             &
+  TZFIELD = TFIELDMETADATA(         &
     CMNHNAME   = 'MENU_BUDGET.DIM', &
     CSTDNAME   = '',                &
     CLONGNAME  = 'MENU_BUDGET.DIM', &
@@ -175,7 +175,7 @@ ELSE IF(HGROUP == 'READ')THEN
   ENDIF
 
   ALLOCATE(ITABCHAR(ILENG))
-  TZFIELD = TFIELDDATA(         &
+  TZFIELD = TFIELDMETADATA(     &
     CMNHNAME   = 'MENU_BUDGET', &
     CSTDNAME   = '',            &
     CLONGNAME  = 'MENU_BUDGET', &
diff --git a/src/MNH/mnh2lpdm_ech.f90 b/src/MNH/mnh2lpdm_ech.f90
index 62d3d9939b331215535cde1b8af4bd02ecea254b..37bd578e933f53f0126b83fa6d3ca9c1cdadbec6 100644
--- a/src/MNH/mnh2lpdm_ech.f90
+++ b/src/MNH/mnh2lpdm_ech.f90
@@ -36,7 +36,7 @@ USE MODD_TIME
 !
 USE MODD_MNH2LPDM
 !
-use modd_field,            only: tfielddata, TYPEREAL
+use modd_field,            only: tfieldmetadata, TYPEREAL
 USE MODE_IO_FILE,          only: IO_File_close, IO_File_open
 USE MODE_IO_FIELD_READ,    only: IO_Field_read
 USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list
@@ -61,7 +61,7 @@ INTEGER              :: ICURAA,ICURMM,ICURJJ         ! Date  courante.
 INTEGER              :: ICURHH,ICURMN,ICURSS         ! Heure courante.
 INTEGER              :: JI,JJ,JK
 TYPE(DATE_TIME)      :: TZDTCUR
-type(tfielddata)        :: tzfield
+type(tfieldmetadata)    :: tzfield
 TYPE(TFILEDATA),POINTER :: TZFILE
 !
 !
@@ -110,7 +110,7 @@ CALL IO_Field_read(TPFILE,'WT',     XWT)
 CALL IO_Field_read(TPFILE,'THT',    XTHT)
 CALL IO_Field_read(TPFILE,'TKET',   XTKET)
 
-tzfield = tfielddata(          &
+tzfield = tfieldmetadata(      &
   cmnhname  = 'LM',            &
   clongname = '',              &
   cunits    = 'm',             &
@@ -121,7 +121,7 @@ tzfield = tfielddata(          &
   ndims     = 3                )
 CALL IO_Field_read(TPFILE, tzfield, XLM)
 
-tzfield = tfielddata(    &
+tzfield = tfieldmetadata(&
   cmnhname  = 'THW_FLX', &
   clongname = '',        &
   cunits    = 'K s-1',   & !correct?
@@ -132,7 +132,7 @@ tzfield = tfielddata(    &
   ndims     = 3          )
 CALL IO_Field_read(TPFILE, tzfield, XWPTHP)
 
-tzfield = tfielddata(       &
+tzfield = tfieldmetadata(   &
   cmnhname  = 'DISS',       &
   clongname = '',           &
   cunits    = '',           & !TODO: set units
@@ -143,7 +143,7 @@ tzfield = tfielddata(       &
   ndims     = 3             )
 CALL IO_Field_read(TPFILE, tzfield, XDISSIP)
 
-tzfield = tfielddata(       &
+tzfield = tfieldmetadata(   &
   cmnhname  = 'FMU',        &
   clongname = '',           &
   cunits    = 'kg m-1 s-2', &
@@ -154,7 +154,7 @@ tzfield = tfielddata(       &
   ndims     = 2             )
 CALL IO_Field_read(TPFILE, tzfield, XSFU)
 
-tzfield = tfielddata(       &
+tzfield = tfieldmetadata(   &
   cmnhname  = 'FMV',        &
   clongname = '',           &
   cunits    = 'kg m-1 s-2', &
diff --git a/src/MNH/mnh2lpdm_ini.f90 b/src/MNH/mnh2lpdm_ini.f90
index 52a31e084c492da5b0f3914cb47f67d25a16a896..4993f4c293ad828b9f59891251c85a2ca071abc3 100644
--- a/src/MNH/mnh2lpdm_ini.f90
+++ b/src/MNH/mnh2lpdm_ini.f90
@@ -34,7 +34,7 @@
 !
 USE MODD_CST
 USE MODD_DIM_n
-use modd_field,         only: tfielddata, TYPEREAL
+use modd_field,         only: tfieldmetadata, TYPEREAL
 USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_IO,            ONLY: TFILEDATA
@@ -83,7 +83,7 @@ INTEGER, DIMENSION(:),   ALLOCATABLE   :: TAB1D
 INTEGER, DIMENSION(:,:), ALLOCATABLE   :: TAB2D
 TYPE(DATE_TIME)         :: TZDTCUR1,TZDTCUR2,TZDTEXP1
 INTEGER                :: IFDAT,IFGRI,IFLOG
-type(tfielddata)       :: tzfield
+type(tfieldmetadata)   :: tzfield
 !
 !
 !
@@ -207,15 +207,15 @@ CALL IO_Field_read(TPFILE1,'ZS',XZS)
 !
 !*	2.8 Rugosite Z0. 
 !
-tzfield = tfielddata(   &
-  cmnhname  = 'Z0',     &
-  clongname = '',       &
-  cunits    = 'm',      &
-  cdir      = 'XY',     &
-  ccomment  = 'X_Y_Z0', &
-  ngrid     = 4,        &
-  ntype     = TYPEREAL, &
-  ndims     = 2         )
+tzfield = tfieldmetadata( &
+  cmnhname  = 'Z0',       &
+  clongname = '',         &
+  cunits    = 'm',        &
+  cdir      = 'XY',       &
+  ccomment  = 'X_Y_Z0',   &
+  ngrid     = 4,          &
+  ntype     = TYPEREAL,   &
+  ndims     = 2           )
 CALL IO_Field_read(TPFILE1,tzfield,XZ0)
 !
 XXPTSOMNH=XXHAT(1)+(XXHAT(2)-XXHAT(1))/2
diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90
index 19ef9812903ca78da7b95c86498c28ea6d4e5408..7287cb0b4124a86bea399abaf67b9db2bc81f8fb 100644
--- a/src/MNH/paspol.f90
+++ b/src/MNH/paspol.f90
@@ -69,7 +69,7 @@ END MODULE MODI_PASPOL
 USE MODD_PARAMETERS
 USE MODD_NSV
 USE MODD_CST
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO, ONLY: TFILEDATA
 USE MODE_GRIDPROJ
 USE MODD_PASPOL
@@ -143,8 +143,8 @@ REAL    :: ZP, ZTH, ZT, ZRHO, ZMASAIR
 REAL,  DIMENSION(:,:,:), ALLOCATABLE :: ZRHOM  ! 
 REAL,  DIMENSION(:,:,:), ALLOCATABLE :: ZSVT ! Work arrays
 !
-TYPE(DATE_TIME)   :: TZDATE1,TZDATE2,TZDATE3,TZDATE4,TZDATE
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(DATE_TIME)      :: TZDATE1,TZDATE2,TZDATE3,TZDATE4,TZDATE
+TYPE(TFIELDMetaDATA) :: TZFIELD
 !
 !
 !--------------------------------------------------------------------------------------
@@ -579,15 +579,15 @@ END DO
 !*	3.4 Ecriture conditionnelle.
 !
 IF ( tpfile%lopened ) THEN
-  TZFIELD = TFIELDDATA(    &
+  TZFIELD = TFIELDMetaDATA(            &
     CMNHNAME   = 'generic for paspol', & !Temporary name to ease identification
-    CSTDNAME   = '',       &
-    CUNITS     = 'm-3',    &
-    CDIR       = 'XY',     &
-    NGRID      = 1,        &
-    NTYPE      = TYPEREAL, &
-    NDIMS      = 3,        &
-    LTIMEDEP   = .TRUE.    )
+    CSTDNAME   = '',                   &
+    CUNITS     = 'm-3',                &
+    CDIR       = 'XY',                 &
+    NGRID      = 1,                    &
+    NTYPE      = TYPEREAL,             &
+    NDIMS      = 3,                    &
+    LTIMEDEP   = .TRUE.                )
   !
   DO JSV=1,NSV_PP
     WRITE(TZFIELD%CMNHNAME,'(A3,I3.3)')'ATC',JSV+NSV_PPBEG-1
diff --git a/src/MNH/prandtl.f90 b/src/MNH/prandtl.f90
index 370e025c4c7c8e7d950a6a3a425cc419121f125a..01e4320f23a602b7839a48914f855b9db2a5a934 100644
--- a/src/MNH/prandtl.f90
+++ b/src/MNH/prandtl.f90
@@ -197,7 +197,7 @@ USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
 USE MODD_DYN_n,          ONLY: LOCEAN
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 !
@@ -270,7 +270,7 @@ INTEGER::  JSV                      ! loop index for the scalar variables
 
 INTEGER :: JLOOP
 REAL    :: ZMINVAL
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 ! ---------------------------------------------------------------------------
 !
 !*      1.  DEFAULT VALUES,  1D REDELSPERGER NUMBERS 
@@ -538,7 +538,7 @@ END IF ! end of HTURBDIM if-block
 IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
   !
   ! stores the RED_TH1
-  TZFIELD = TFIELDDATA(           &
+  TZFIELD = TFIELDMETADATA(       &
     CMNHNAME   = 'RED_TH1',       &
     CSTDNAME   = '',              &
     CLONGNAME  = 'RED_TH1',       &
@@ -552,7 +552,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,PREDTH1)
   !
   ! stores the RED_R1
-  TZFIELD = TFIELDDATA(          &
+  TZFIELD = TFIELDMETADATA(      &
     CMNHNAME   = 'RED_R1',       &
     CSTDNAME   = '',             &
     CLONGNAME  = 'RED_R1',       &
@@ -566,7 +566,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,PREDR1)
   !
   ! stores the RED2_TH3
-  TZFIELD = TFIELDDATA(            &
+  TZFIELD = TFIELDMETADATA(        &
     CMNHNAME   = 'RED2_TH3',       &
     CSTDNAME   = '',               &
     CLONGNAME  = 'RED2_TH3',       &
@@ -580,7 +580,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,PRED2TH3)
   !
   ! stores the RED2_R3
-  TZFIELD = TFIELDDATA(           &
+  TZFIELD = TFIELDMETADATA(       &
     CMNHNAME   = 'RED2_R3',       &
     CSTDNAME   = '',              &
     CLONGNAME  = 'RED2_R3',       &
@@ -594,7 +594,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,PRED2R3)
   !
   ! stores the RED2_THR3
-  TZFIELD = TFIELDDATA(             &
+  TZFIELD = TFIELDMETADATA(         &
     CMNHNAME   = 'RED2_THR3',       &
     CSTDNAME   = '',                &
     CLONGNAME  = 'RED2_THR3',       &
diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90
index b6151ba3ff4959189f7df85b71ca4a53a6c16597..809d0d6f0787503df55dbc7874ecc5ff27702a2d 100644
--- a/src/MNH/radiations.f90
+++ b/src/MNH/radiations.f90
@@ -133,7 +133,7 @@ USE MODD_CH_AEROSOL,  ONLY: LORILAM
 USE MODD_CONF,        ONLY: LCARTESIAN
 USE MODD_CST
 USE MODD_DUST,        ONLY: LDUST
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_GRID ,       ONLY: XLAT0, XLON0
 USE MODD_GRID_n ,     ONLY: XLAT, XLON
 USE MODD_IO,          ONLY: TFILEDATA
@@ -535,7 +535,7 @@ CHARACTER (LEN=2)               :: YDIR        ! Type of the data field
 INTEGER :: ISWB ! number of SW spectral bands (between radiations and surface schemes)
 INTEGER :: JSWB ! loop on SW spectral bands
 INTEGER :: JAE  ! loop on aerosol class
-TYPE(TFIELDDATA) :: TZFIELD2D, TZFIELD3D
+TYPE(TFIELDMeTaDATA) :: TZFIELD2D, TZFIELD3D
 !
 REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZDZPABST
 REAL :: ZMINVAL
@@ -2684,7 +2684,7 @@ IF( tpfile%lopened .AND. (KRAD_DIAG >= 1) ) THEN
   ZSTORE_3D2(:,:,:) = 0.0
   ZSTORE_2D(:,:)   = 0.0
   !
-  TZFIELD2D = TFIELDDATA(                     &
+  TZFIELD2D = TFIELDMETADATA(                 &
     CMNHNAME   = 'generic 2D for radiations', & !Temporary name to ease identification
     CSTDNAME   = '',                          &
     CDIR       = 'XY',                        &
@@ -2693,7 +2693,7 @@ IF( tpfile%lopened .AND. (KRAD_DIAG >= 1) ) THEN
     NDIMS      = 2,                           &
     LTIMEDEP   = .TRUE.                       )
 
-  TZFIELD3D = TFIELDDATA(                     &
+  TZFIELD3D = TFIELDMETADATA(                 &
     CMNHNAME   = 'generic 3D for radiations', & !Temporary name to ease identification
     CSTDNAME   = '',                          &
     CDIR       = 'XY',                        &
diff --git a/src/MNH/rain_c2r2_khko.f90 b/src/MNH/rain_c2r2_khko.f90
index 2aa49c4a406aac48604d616b3886820eda4d77d1..cc19dbbf0cc7dc6aa5a287f8dec73f6ba3b46952 100644
--- a/src/MNH/rain_c2r2_khko.f90
+++ b/src/MNH/rain_c2r2_khko.f90
@@ -225,7 +225,7 @@ USE MODD_CH_AEROSOL
 USE MODD_CONF
 USE MODD_CST
 USE MODD_DUST
-use modd_field,                only: tfielddata, TYPEREAL
+use modd_field,                only: tfieldmetadata, TYPEREAL
 USE MODD_IO,                   ONLY: TFILEDATA
 USE MODD_NSV,                  ONLY : NSV_C2R2BEG
 USE MODD_PARAM_C2R2
@@ -415,7 +415,7 @@ REAL  :: ZFACT, JSV, ZMU, ZALPHA
 REAL, DIMENSION(:), ALLOCATABLE    :: ZRTMIN
 REAL, DIMENSION(:), ALLOCATABLE    :: ZCTMIN
 REAL :: ZTMP
-TYPE(TFIELDDATA)    :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !
 !
@@ -595,7 +595,7 @@ end if
 !!
 !!
 ! IF ( tpfile%lopened ) THEN
-!   TZFIELD = TFIELDDATA(         &
+!   TZFIELD = TFIELDMETADATA(     &
 !     CMNHNAME   = 'ZCHEN',       &
 !     CSTDNAME   = '',            &
 !     CLONGNAME  = 'ZCHEN',       &
@@ -879,7 +879,7 @@ INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:))
 ! END IF
 !                      
 IF ( tpfile%lopened ) THEN
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'SMAX',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'SMAX',       &
@@ -1898,7 +1898,7 @@ DO JN = 1 , KSPLITR
   END IF
 !   
  IF ( OSEDC .AND. tpfile%lopened ) THEN
-  TZFIELD = TFIELDDATA(            &
+  TZFIELD = TFIELDMETADATA(        &
     CMNHNAME   = 'SEDFLUXC',       &
     CSTDNAME   = '',               &
     CLONGNAME  = 'SEDFLUXC',       &
@@ -1911,7 +1911,7 @@ DO JN = 1 , KSPLITR
     LTIMEDEP   = .TRUE.            )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWSEDC)
   !
-  TZFIELD = TFIELDDATA(            &
+  TZFIELD = TFIELDMETADATA(        &
     CMNHNAME   = 'SEDFLUXR',       &
     CSTDNAME   = '',               &
     CLONGNAME  = 'SEDFLUXR',       &
diff --git a/src/MNH/read_dummy_gr_fieldn.f90 b/src/MNH/read_dummy_gr_fieldn.f90
index 7aa4136af72e3a82b01c0439bb7ac9ad6a0e8035..edb10fbbff5cce332b47fe0b5307f160680a56c4 100644
--- a/src/MNH/read_dummy_gr_fieldn.f90
+++ b/src/MNH/read_dummy_gr_fieldn.f90
@@ -74,7 +74,7 @@ END MODULE MODI_READ_DUMMY_GR_FIELD_n
 !*       0.    DECLARATIONS
 !
 USE MODD_DUMMY_GR_FIELD_n
-use modd_field,         only: tfielddata, TYPEINT, TYPEREAL
+use modd_field,         only: tfieldmetadata, TYPEINT, TYPEREAL
 USE MODD_GRID_n
 USE MODD_IO,            ONLY: TFILEDATA
 USE MODD_PARAMETERS,    ONLY: JPHEXT, NMNHNAMELGTMAX
@@ -106,7 +106,7 @@ INTEGER                           :: IIINF  ! lower I index
 INTEGER                           :: IISUP  ! upper I index
 INTEGER                           :: IJINF  ! lower J index
 INTEGER                           :: IJSUP  ! upper J index
-TYPE(TFIELDDATA)                  :: TZFIELD
+TYPE(TFIELDMETADATA)              :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -147,7 +147,7 @@ END IF
 !
 !
 IF (TPINIFILE%NMNHVERSION(1)>=4) THEN
-  TZFIELD = TFIELDDATA(                                       &
+  TZFIELD = TFIELDMETADATA(                                   &
     CMNHNAME   = 'DUMMY_GR_NBR',                              &
     CSTDNAME   = '',                                          &
     CLONGNAME  = 'DUMMY_GR_NBR',                              &
@@ -177,7 +177,7 @@ ALLOCATE(XDUMMY_GR_FIELDS(SIZE(XXHAT),SIZE(XYHAT),NDUMMY_GR_NBR))
 !
 DO JDUMMY=1,NDUMMY_GR_NBR
   WRITE(YRECFM,'(A8,I3.3)') 'DUMMY_GR',JDUMMY
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = TRIM(YRECFM), &
     CSTDNAME   = '',           &
     CLONGNAME  = TRIM(YRECFM), &
diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90
index 1f8d4b3cab8e98abd0698ec2c34249c956ec75ba..90b6c3552c829da0b0a3390bd3f0604241f2998e 100644
--- a/src/MNH/read_field.f90
+++ b/src/MNH/read_field.f90
@@ -274,7 +274,7 @@ USE MODD_CTURB
 USE MODD_DUST
 USE MODD_DYN_n,           ONLY: LOCEAN
 USE MODD_ELEC_DESCR,      ONLY: CELECNAMES
-use modd_field,           only: tfielddata, tfieldlist, TYPEDATE, TYPEREAL,TYPELOG,TYPEINT
+use modd_field,           only: tfieldmetadata, tfieldlist, TYPEDATE, TYPEREAL,TYPELOG,TYPEINT
 USE MODD_FIELD_n,         only: XZWS_DEFAULT
 #ifdef MNH_FOREFIRE
 USE MODD_FOREFIRE
@@ -424,7 +424,7 @@ CHARACTER(LEN=2)             :: INDICE
 CHARACTER(LEN=3)             :: YFRC         ! To mark the different forcing dates
 CHARACTER(LEN=15)            :: YVAL
 REAL, DIMENSION(KIU,KJU,KKU) :: ZWORK        ! to compute supersaturation
-TYPE(TFIELDDATA)             :: TZFIELD
+TYPE(TFIELDMETADATA)         :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -443,27 +443,27 @@ ZWORK = 0.0
 !
 IF (TPINIFILE%NMNHVERSION(1)<5) THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('UT',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'UM'
   CALL IO_Field_read(TPINIFILE,TZFIELD,PUT)
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('VT',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'VM'
   CALL IO_Field_read(TPINIFILE,TZFIELD,PVT)
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('WT',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'WM'
   CALL IO_Field_read(TPINIFILE,TZFIELD,PWT)
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'THM'
   CALL IO_Field_read(TPINIFILE,TZFIELD,PTHT)
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('PABST',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'PABSM'
   CALL IO_Field_read(TPINIFILE,TZFIELD,PPABST)
 ELSE
@@ -478,7 +478,7 @@ SELECT CASE(HGETTKET)
   CASE('READ')
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('TKET',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'TKEM'
       CALL IO_Field_read(TPINIFILE,TZFIELD,PTKET)
     ELSE
@@ -512,7 +512,7 @@ SELECT CASE(HGETRVT)             ! vapor
   CASE('READ')
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('RVT',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'RVM'
       CALL IO_Field_read(TPINIFILE,TZFIELD,PRT(:,:,:,IDX_RVT))
     ELSE
@@ -526,7 +526,7 @@ SELECT CASE(HGETRCT)             ! cloud
   CASE('READ') 
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('RCT',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'RCM'
       CALL IO_Field_read(TPINIFILE,TZFIELD,PRT(:,:,:,IDX_RCT))
     ELSE
@@ -540,7 +540,7 @@ SELECT CASE(HGETRRT)             ! rain
   CASE('READ') 
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('RRT',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'RRM'
       CALL IO_Field_read(TPINIFILE,TZFIELD,PRT(:,:,:,IDX_RRT))
     ELSE
@@ -554,7 +554,7 @@ SELECT CASE(HGETRIT)             ! cloud ice
   CASE('READ') 
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('RIT',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'RIM'
       CALL IO_Field_read(TPINIFILE,TZFIELD,PRT(:,:,:,IDX_RIT))
     ELSE
@@ -568,7 +568,7 @@ SELECT CASE(HGETRST)             ! snow
   CASE('READ')
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('RST',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'RSM'
       CALL IO_Field_read(TPINIFILE,TZFIELD,PRT(:,:,:,IDX_RST))
     ELSE
@@ -582,7 +582,7 @@ SELECT CASE(HGETRGT)             ! graupel
   CASE('READ') 
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('RGT',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'RGM'
       CALL IO_Field_read(TPINIFILE,TZFIELD,PRT(:,:,:,IDX_RGT))
     ELSE
@@ -596,7 +596,7 @@ SELECT CASE(HGETRHT)             ! hail
   CASE('READ') 
     IF (TPINIFILE%NMNHVERSION(1)<5) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('RHT',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'RHM'
       CALL IO_Field_read(TPINIFILE,TZFIELD,PRT(:,:,:,IDX_RHT))
     ELSE
diff --git a/src/MNH/read_hgrid.f90 b/src/MNH/read_hgrid.f90
index c695be83b8a5a090518995350f0966ca72c00e2f..30a92650b1f57ff963a98821611c274cf4e69445 100644
--- a/src/MNH/read_hgrid.f90
+++ b/src/MNH/read_hgrid.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1996-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -81,7 +81,7 @@ END MODULE MODI_READ_HGRID
 !*       0.    DECLARATIONS
 !
 USE MODD_CONF,          ONLY: CPROGRAM
-use modd_field,         only: tfielddata, tfieldlist
+use modd_field,         only: tfieldmetadata, tfieldlist
 USE MODD_GRID
 USE MODD_IO,            ONLY: TFILEDATA
 USE MODD_PARAMETERS
@@ -117,7 +117,7 @@ INTEGER                :: IID, IMI
 LOGICAL                :: G1D,G2D,GPACK
 INTEGER                :: IINFO_ll
 REAL                   :: ZLATOR, ZLONOR, ZXHATM, ZYHATM
-TYPE(TFIELDDATA)       :: TZFIELD
+TYPE(TFIELDMETADATA)   :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       1.     TEST ON MODEL INDEX
@@ -201,12 +201,12 @@ CALL IO_Pack_set(G1D,G2D,GPACK)
 !-------------------------------------------------------------------------------
 IF (TPFMFILE%NMNHVERSION(1)<4 .OR. (TPFMFILE%NMNHVERSION(1)==4 .AND. TPFMFILE%NMNHVERSION(2)<=5)) THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('LONORI',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'LONOR'
   CALL IO_Field_read(TPFMFILE,TZFIELD,XPGDLONOR)
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('LATORI',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'LATOR'
   CALL IO_Field_read(TPFMFILE,TZFIELD,XPGDLATOR)
   !
diff --git a/src/MNH/read_hgridn.f90 b/src/MNH/read_hgridn.f90
index 41385f588e3808e85c1438f8f4eb9ee7fc763edc..d75ca9bbaf955f56de86e1245297c0b7cddb35ed 100644
--- a/src/MNH/read_hgridn.f90
+++ b/src/MNH/read_hgridn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1996-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -80,7 +80,7 @@ END MODULE MODI_READ_HGRID_n
 !
 USE MODD_CONF
 USE MODD_DIM_n
-use modd_field,         only: tfielddata, tfieldlist
+use modd_field,         only: tfieldmetadata, tfieldlist
 USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_IO,            ONLY: TFILEDATA
@@ -106,21 +106,21 @@ CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE
 !
 !*       0.2   declarations of local variables
 !
-INTEGER             :: ILUOUT
-INTEGER             :: IRESP
-REAL                :: ZLAT0,ZLON0,ZRPK,ZBETA
-REAL                :: ZEPS = 1.E-10
-INTEGER             :: IID, IMI
+INTEGER              :: ILUOUT
+INTEGER              :: IRESP
+REAL                 :: ZLAT0,ZLON0,ZRPK,ZBETA
+REAL                 :: ZEPS = 1.E-10
+INTEGER              :: IID, IMI
 !
 !-------------------------------------------------------------------------------
 REAL :: ZLATOR, ZLONOR, ZXHATM, ZYHATM
 !-------------------------------------------------------------------------------
 !JUAN REALZ
-INTEGER             :: IIU,IJU
+INTEGER              :: IIU,IJU
 !JUAN REALZ
-INTEGER             :: IXOR, IYOR, IXEND, IYEND
-INTEGER             :: IJPHEXT
-TYPE(TFIELDDATA)    :: TZFIELD
+INTEGER              :: IXOR, IYOR, IXEND, IYEND
+INTEGER              :: IJPHEXT
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 ILUOUT = TLUOUT%NLU
 !
@@ -279,12 +279,12 @@ END IF
 !-------------------------------------------------------------------------------
 IF (TPFMFILE%NMNHVERSION(1)<4 .OR. (TPFMFILE%NMNHVERSION(1)==4 .AND. TPFMFILE%NMNHVERSION(2)<=5)) THEN
   CALL FIND_FIELD_ID_FROM_MNHNAME('LONORI',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'LONOR'
   CALL IO_Field_read(TPFMFILE,TZFIELD,XLONORI)
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('LATORI',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'LATOR'
   CALL IO_Field_read(TPFMFILE,TZFIELD,XLATORI)
   !
diff --git a/src/MNH/read_precip_field.f90 b/src/MNH/read_precip_field.f90
index b8181b6d34e99287c1569e7c0265bb73d4d0904c..798985578d5ec81329ccbc878e2a1b8073cfb1ae 100644
--- a/src/MNH/read_precip_field.f90
+++ b/src/MNH/read_precip_field.f90
@@ -98,7 +98,7 @@ END MODULE MODI_READ_PRECIP_FIELD
 !
 !*       0.    DECLARATIONS
 
-use modd_field,         only: tfielddata, tfieldlist
+use modd_field,         only: tfieldmetadata, tfieldlist
 USE MODD_IO,            ONLY: TFILEDATA
 USE MODD_PARAM_ICE,     ONLY: LDEPOSC
 USE MODD_PARAM_C2R2,    ONLY: LDEPOC
@@ -138,10 +138,10 @@ REAL, DIMENSION(:,:),   INTENT(INOUT) :: PACPRH   ! Hail accumulated precip
 REAL, DIMENSION(SIZE(PINPRR,1),SIZE(PINPRR,2)) :: Z2D ! 2D array to read  data
 REAL, DIMENSION(SIZE(PINPRR3D,1),SIZE(PINPRR3D,2),SIZE(PINPRR3D,3)) :: Z3D ! 3D array to read  data
                                                   ! in initial file 
-INTEGER             :: IID
-INTEGER             :: IRESP
-CHARACTER(LEN=4)    :: YGETRCT,YGETRRT,YGETRST,YGETRGT,YGETRHT                    
-TYPE(TFIELDDATA)    :: TZFIELD
+INTEGER              :: IID
+INTEGER              :: IRESP
+CHARACTER(LEN=4)     :: YGETRCT,YGETRRT,YGETRST,YGETRGT,YGETRHT
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -170,13 +170,13 @@ IF (SIZE(PINPRC) /= 0 ) THEN
   SELECT CASE(YGETRCT)
   CASE ('READ')
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRC',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PINPRC(:,:)=Z2D(:,:)/(1000.*3600.)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRC',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PACPRC(:,:)=Z2D(:,:)/(1000.)
@@ -190,13 +190,13 @@ IF (SIZE(PINPRC) /= 0 .AND. (LDEPOSC .OR. LDEPOC .OR. MDEPOC) ) THEN
   SELECT CASE(YGETRCT)
   CASE ('READ')
     CALL FIND_FIELD_ID_FROM_MNHNAME('INDEP',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PINDEP(:,:)=Z2D(:,:)/(1000.*3600.)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACDEP',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PACDEP(:,:)=Z2D(:,:)/(1000.)
@@ -210,7 +210,7 @@ IF (SIZE(PINPRR) /= 0 ) THEN
   SELECT CASE(YGETRRT)
   CASE ('READ')
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PINPRR(:,:)=Z2D(:,:)/(1000.*3600.)
@@ -222,7 +222,7 @@ IF (SIZE(PINPRR) /= 0 ) THEN
     IF (IRESP == 0) PEVAP3D(:,:,:)=Z3D(:,:,:)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PACPRR(:,:)=Z2D(:,:)/(1000.)
@@ -238,13 +238,13 @@ IF (SIZE(PINPRS) /= 0 ) THEN
   SELECT CASE(YGETRST)
   CASE ('READ')
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRS',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PINPRS(:,:)=Z2D(:,:)/(1000.*3600.)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRS',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PACPRS(:,:)=Z2D(:,:)/(1000.)
@@ -258,13 +258,13 @@ IF (SIZE(PINPRG) /= 0 ) THEN
   SELECT CASE(YGETRGT)
   CASE ('READ')
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRG',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PINPRG(:,:)=Z2D(:,:)/(1000.*3600.)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRG',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PACPRG(:,:)=Z2D(:,:)/(1000.)
@@ -278,13 +278,13 @@ IF (SIZE(PINPRH) /= 0 ) THEN
   SELECT CASE(YGETRHT)
   CASE ('READ')
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRH',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PINPRH(:,:)=Z2D(:,:)/(1000.*3600.)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRH',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_read(TPINIFILE,TZFIELD,Z2D,IRESP)
     IF (IRESP == 0) PACPRH(:,:)=Z2D(:,:)/(1000.)
diff --git a/src/MNH/read_surf_mnh.f90 b/src/MNH/read_surf_mnh.f90
index 881e58362e63b7fc29199c7b32e458e3807ea78b..17648717daec90f15ea7288413b1bdf64c7b1129 100644
--- a/src/MNH/read_surf_mnh.f90
+++ b/src/MNH/read_surf_mnh.f90
@@ -18,7 +18,7 @@ CONTAINS
 
 SUBROUTINE PREPARE_METADATA_READ_SURF(HREC,HDIR,KGRID,KTYPE,KDIMS,HSUBR,TPFIELD)
 !
-use modd_field, only: tfielddata, tfieldlist
+use modd_field, only: tfieldmetadata, tfieldlist
 use mode_field, only: Find_field_id_from_mnhname
 !
 CHARACTER(LEN=LEN_HREC),INTENT(IN)  :: HREC     ! name of the article to write
@@ -27,14 +27,14 @@ INTEGER,                INTENT(IN)  :: KGRID    ! Localization on the model grid
 INTEGER,                INTENT(IN)  :: KTYPE    ! Datatype
 INTEGER,                INTENT(IN)  :: KDIMS    ! Number of dimensions
 CHARACTER(LEN=*),       INTENT(IN)  :: HSUBR    ! name of the subroutine calling
-TYPE(TFIELDDATA),       INTENT(OUT) :: TPFIELD  ! metadata of field
+TYPE(TFIELDMETADATA),       INTENT(OUT) :: TPFIELD  ! metadata of field
 !
 CHARACTER(LEN=32) :: YTXT
 INTEGER           :: IID, IRESP
 !
 CALL FIND_FIELD_ID_FROM_MNHNAME(TRIM(HREC),IID,IRESP,ONOWARNING=.TRUE.)
 IF (IRESP==0) THEN
-  TPFIELD = TFIELDLIST(IID)
+  TPFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   !Modify and check CLONGNAME
   IF (TRIM(TPFIELD%CLONGNAME)/=TRIM(HREC) &
       .AND. TRIM(HREC)/='VERSION' .AND. TRIM(HREC)/='BUG') THEN
@@ -71,7 +71,7 @@ IF (IRESP==0) THEN
   END IF
 ELSE
   CALL PRINT_MSG(NVERB_DEBUG,'IO',TRIM(HSUBR),TRIM(HREC)//' not found in FIELDLIST. Generating default metadata')
-  TPFIELD = TFIELDDATA(      &
+  TPFIELD = TFIELDMETADATA(  &
     CMNHNAME   = TRIM(HREC), &
     CSTDNAME   = '',         &
     CLONGNAME  = TRIM(HREC), &
@@ -140,7 +140,7 @@ END MODULE MODE_READ_SURF_MNH_TOOLS
 !             ------------
 !
 USE MODD_CONF,          ONLY: CPROGRAM
-use modd_field,         only: tfielddata, tfieldlist, TYPEREAL
+use modd_field,         only: tfieldmetadata, tfieldlist, TYPEREAL
 USE MODD_GRID,          ONLY: XRPK,XBETA,XLAT0,XLON0
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE
 USE MODD_PARAMETERS,    ONLY: JPHEXT, XUNDEF
@@ -164,15 +164,15 @@ CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT ! comment
 !
 !*      0.2   Declarations of local variables
 !
-INTEGER           :: IGRID          ! IGRID : grid indicator
-INTEGER           :: ILENCH         ! ILENCH : length of comment string
-INTEGER           :: ILUOUT
-INTEGER           :: IID,IRESP
-INTEGER           :: IIMAX,IJMAX
+INTEGER              :: IGRID          ! IGRID : grid indicator
+INTEGER              :: ILENCH         ! ILENCH : length of comment string
+INTEGER              :: ILUOUT
+INTEGER              :: IID,IRESP
+INTEGER              :: IIMAX,IJMAX
 REAL,DIMENSION(:), ALLOCATABLE :: ZXHAT,ZYHAT
-REAL              :: ZLATOR,ZLONOR,ZXHATM,ZYHATM,ZLATORI,ZLONORI
-REAL              :: ZRPK, ZBETA, ZLAT0, ZLON0
-TYPE(TFIELDDATA)  :: TZFIELD
+REAL                 :: ZLATOR,ZLONOR,ZXHATM,ZYHATM,ZLATORI,ZLONORI
+REAL                 :: ZRPK, ZBETA, ZLAT0, ZLON0
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
@@ -202,12 +202,12 @@ IF (HREC=='LONORI' .OR. HREC=='LATORI') THEN
       CALL IO_Field_read(TPINFILE,'YHAT',ZYHAT)
       !
       CALL FIND_FIELD_ID_FROM_MNHNAME('LONORI',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'LONOR'
       CALL IO_Field_read(TPINFILE,TZFIELD,ZLONOR)
       !
       CALL FIND_FIELD_ID_FROM_MNHNAME('LATORI',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CMNHNAME = 'LATOR'
       CALL IO_Field_read(TPINFILE,TZFIELD,ZLATOR)
       !
@@ -290,7 +290,7 @@ END SUBROUTINE READ_SURFX0_MNH
 !             ------------
 !
 USE MODD_CST,           ONLY: XPI
-use modd_field,         only: tfielddata, tfieldlist, TYPEREAL
+use modd_field,         only: tfieldmetadata, tfieldlist, TYPEREAL
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE, NMASK, &
                               NIU, NJU, NIB, NJB, NIE, NJE, &
                               NIU_ALL, NJU_ALL, NIB_ALL,    &
@@ -336,11 +336,11 @@ REAL                              :: ZW     ! work value
 CHARACTER(LEN=LEN_HREC) :: YREC
 CHARACTER(LEN=2)  :: YSTORAGE_TYPE
 !
-INTEGER           :: IID, IRESP
-INTEGER           :: IIU, IJU, IIB, IJB, IIE, IJE ! dimensions of horizontal fields
+INTEGER              :: IID, IRESP
+INTEGER              :: IIU, IJU, IIB, IJB, IIE, IJE ! dimensions of horizontal fields
 INTEGER, DIMENSION(:), ALLOCATABLE :: IMASK       ! mask for packing
-REAL              :: ZUNDEF         ! undefined value in SURFEX
-TYPE(TFIELDDATA)  :: TZFIELD
+REAL                 :: ZUNDEF         ! undefined value in SURFEX
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX1_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
@@ -391,7 +391,7 @@ ELSE IF (HREC=='XX') THEN
   ALLOCATE(ZWORK  (IIU,IJU))
   ZWORK(:,:) = 0.
   CALL FIND_FIELD_ID_FROM_MNHNAME('XHAT',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   IF (HDIR/='A'.AND.HDIR/='E') THEN
     TZFIELD%CDIR       = 'XX'
   ELSE
@@ -411,7 +411,7 @@ ELSE IF (HREC=='DX') THEN
   ALLOCATE(ZWORK  (IIU,IJU))
   ZWORK(:,:) = 0.
   CALL FIND_FIELD_ID_FROM_MNHNAME('XHAT',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   IF (HDIR/='A'.AND.HDIR/='E') THEN
     TZFIELD%CDIR       = 'XX'
   ELSE
@@ -431,7 +431,7 @@ ELSE IF (HREC=='YY') THEN
   ALLOCATE(ZWORK  (IIU,IJU))
   ZWORK(:,:) = 0.
   CALL FIND_FIELD_ID_FROM_MNHNAME('YHAT',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   IF (HDIR/='A'.AND.HDIR/='E') THEN
     TZFIELD%CDIR       = 'YY'
   ELSE
@@ -451,7 +451,7 @@ ELSE IF (HREC=='DY') THEN
   ALLOCATE(ZWORK  (IIU,IJU))
   ZWORK(:,:) = 0.
   CALL FIND_FIELD_ID_FROM_MNHNAME('YHAT',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   IF (HDIR/='A'.AND.HDIR/='E') THEN
     TZFIELD%CDIR       = 'YY'
   ELSE
@@ -580,7 +580,7 @@ END SUBROUTINE READ_SURFX1_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-use modd_field,         only: tfielddata, TYPEREAL
+use modd_field,         only: tfieldmetadata, TYPEREAL
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE, NMASK, NIU, NJU, NIB, NJB, NIE, NJE, &
                               NIU_ALL, NJU_ALL, NIB_ALL, NJB_ALL, NIE_ALL, NJE_ALL, NMASK_ALL
 USE MODD_PARAMETERS,    ONLY: XUNDEF
@@ -610,14 +610,14 @@ CHARACTER(LEN=1),        INTENT(IN)  :: HDIR     ! type of field :
 !
 !*      0.2   Declarations of local variables
 !
-INTEGER           :: IGRID          ! IGRID : grid indicator
-INTEGER           :: ILENCH         ! ILENCH : length of comment string
-INTEGER           :: ILUOUT
-INTEGER           :: JP             ! loop index
+INTEGER              :: IGRID          ! IGRID : grid indicator
+INTEGER              :: ILENCH         ! ILENCH : length of comment string
+INTEGER              :: ILUOUT
+INTEGER              :: JP             ! loop index
 
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORK  ! work array read in the file
-REAL              :: ZUNDEF         ! undefined value in SURFEX
-TYPE(TFIELDDATA)  :: TZFIELD
+REAL                 :: ZUNDEF         ! undefined value in SURFEX
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX2_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
@@ -716,7 +716,7 @@ END SUBROUTINE READ_SURFX2_MNH
 !
 USE MODD_CST,            ONLY: XPI
 USE MODD_DATA_COVER_PAR, ONLY: JPCOVER
-use modd_field,          only: tfielddata, TYPELOG, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPELOG, TYPEREAL
 USE MODD_IO_SURF_MNH,    ONLY: TOUT, TPINFILE, NMASK, &
                                NIU, NJU, NIB, NJB, NIE, NJE, &
                                NIU_ALL, NJU_ALL, NIB_ALL,    &
@@ -765,7 +765,7 @@ REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZWORK3D
 INTEGER  :: IRESP
 INTEGER  :: IVERSION, IBUGFIX
 LOGICAL  :: GCOVER_PACKED ! .T. if COVER are all packed into one field
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX2COV_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
@@ -809,7 +809,7 @@ CALL IO_Field_read(TPINFILE,'BUG',    IBUGFIX)
 IF (IVERSION<7 .OR. (IVERSION==7 .AND. IBUGFIX==0)) THEN
   GCOVER_PACKED = .FALSE.
 ELSE
-  TZFIELD = TFIELDDATA(          &
+  TZFIELD = TFIELDMETADATA(      &
     CMNHNAME   = 'COVER_PACKED', &
     CSTDNAME   = '',             &
     CLONGNAME  = 'COVER_PACKED', &
@@ -825,7 +825,7 @@ END IF
 !
 IF (.NOT. GCOVER_PACKED) THEN
   ICOVER=0
-  TZFIELD = TFIELDDATA(    &
+  TZFIELD = TFIELDMETADATA(&
     CMNHNAME   = 'generic no COVER_PACKED', & !Temporary name to ease identification
     CSTDNAME   = '',       &
     CUNITS     = '',       &
@@ -913,7 +913,7 @@ END SUBROUTINE READ_SURFX2COV_MNH
 !             ------------
 !
 USE MODD_CST,           ONLY: XPI
-use modd_field,         only: tfielddata, TYPELOG, TYPEREAL
+use modd_field,         only: tfieldmetadata, TYPELOG, TYPEREAL
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE, NMASK,        &
                               NIU, NJU, NIB, NJB, NIE, NJE, &
                               NIU_ALL, NJU_ALL, NIB_ALL,    &
@@ -961,7 +961,7 @@ REAL,DIMENSION(:,:), ALLOCATABLE :: ZWORK2D
 INTEGER  :: IVERSION, IBUGFIX
 LOGICAL  :: GCOVER_PACKED ! .T. if COVER are all packed into one field
 CHARACTER(LEN=1) :: YDIR1
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX2COV_1COV_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
@@ -1006,7 +1006,7 @@ CALL IO_Field_read(TPINFILE,'BUG',    IBUGFIX)
 IF (IVERSION<7 .OR. (IVERSION==7 .AND. IBUGFIX==0)) THEN
   GCOVER_PACKED = .FALSE.
 ELSE
-  TZFIELD = TFIELDDATA(          &
+  TZFIELD = TFIELDMETADATA(      &
     CMNHNAME   = 'COVER_PACKED', &
     CSTDNAME   = '',             &
     CLONGNAME  = 'COVER_PACKED', &
@@ -1022,7 +1022,7 @@ END IF
 !
 IF (.NOT. GCOVER_PACKED) THEN
   WRITE(YREC,'(A5,I3.3)') 'COVER',KCOVER
-  TZFIELD = TFIELDDATA(              &
+  TZFIELD = TFIELDMETADATA(          &
     CMNHNAME   = TRIM(YREC),         &
     CSTDNAME   = '',                 &
     CLONGNAME  = TRIM(YREC),         &
@@ -1098,7 +1098,7 @@ END SUBROUTINE READ_SURFX2COV_1COV_MNH
 !             ------------
 !
 USE MODD_CONF,          ONLY: CPROGRAM
-use modd_field,         only: tfielddata, TYPEINT
+use modd_field,         only: tfieldmetadata, TYPEINT
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE, NMASK, &
                               NIU, NJU, NIB, NJB, NIE, NJE
 
@@ -1118,9 +1118,9 @@ CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT ! comment
 !
 !*      0.2   Declarations of local variables
 !
-INTEGER          :: IIMAX, IJMAX
-INTEGER          :: ILUOUT
-TYPE(TFIELDDATA) :: TZFIELD
+INTEGER              :: IIMAX, IJMAX
+INTEGER              :: ILUOUT
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -1193,7 +1193,7 @@ END SUBROUTINE READ_SURFN0_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-use modd_field,         only: tfielddata, TYPEINT
+use modd_field,         only: tfieldmetadata, TYPEINT
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE, NMASK, &
                               NIU, NJU, NIB, NJB, NIE, NJE
 !
@@ -1224,7 +1224,7 @@ INTEGER           :: ILENCH         ! ILENCH : length of comment string
 INTEGER           :: ILUOUT
 !
 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IWORK  ! work array read in the file
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA)                 :: TZFIELD
 !---------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFN1_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
@@ -1302,7 +1302,7 @@ END SUBROUTINE READ_SURFN1_MNH
 !             ------------
 !
 USE MODD_CONF,          ONLY: LCARTESIAN, CPROGRAM
-use modd_field,         only: tfielddata, TYPECHAR
+use modd_field,         only: tfieldmetadata, TYPECHAR
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE
 USE MODD_LUNIT,         ONLY: TPGDFILE
 
@@ -1323,17 +1323,17 @@ CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT  ! comment
 !
 !*      0.2   Declarations of local variables
 !
-INTEGER           :: IRESP          ! return code
-INTEGER           :: IGRID          ! IGRID : grid indicator
-INTEGER           :: ILENCH         ! ILENCH : length of comment string
-INTEGER           :: ILUOUT
+INTEGER              :: IRESP          ! return code
+INTEGER              :: IGRID          ! IGRID : grid indicator
+INTEGER              :: ILENCH         ! ILENCH : length of comment string
+INTEGER              :: ILUOUT
 !
-INTEGER           :: ILUDES       ! .des file logical unit
+INTEGER              :: ILUDES       ! .des file logical unit
 !
-LOGICAL           :: GFOUND
-CHARACTER(LEN=4)  :: CTURB,CRAD,CGROUND,CCLOUD,CDCONV,CELEC
-CHARACTER(LEN=6)  :: CSEA_FLUX
-TYPE(TFIELDDATA)  :: TZFIELD
+LOGICAL              :: GFOUND
+CHARACTER(LEN=4)     :: CTURB,CRAD,CGROUND,CCLOUD,CDCONV,CELEC
+CHARACTER(LEN=6)     :: CSEA_FLUX
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 NAMELIST/NAM_PARAMn/CTURB,CRAD,CGROUND,CCLOUD,CDCONV,CSEA_FLUX, CELEC
 !----------------------------------------------------------------------------
@@ -1457,7 +1457,7 @@ END SUBROUTINE READ_SURFC0_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-use modd_field,         only: tfielddata, TYPEINT, TYPELOG
+use modd_field,         only: tfieldmetadata, TYPEINT, TYPELOG
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE, NMASK, &
                               NIU, NJU, NIB, NJB, NIE, NJE
 !
@@ -1483,12 +1483,12 @@ CHARACTER(LEN=1),       INTENT(IN)  :: HDIR     ! type of field :
 !
 !*      0.2   Declarations of local variables
 !
-INTEGER           :: IGRID          ! IGRID : grid indicator
-INTEGER           :: ILENCH         ! ILENCH : length of comment string
-INTEGER           :: ILUOUT
+INTEGER              :: IGRID          ! IGRID : grid indicator
+INTEGER              :: ILENCH         ! ILENCH : length of comment string
+INTEGER              :: ILUOUT
 LOGICAL, DIMENSION(:,:), ALLOCATABLE :: GWORK  ! work array read in the file
 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IWORK  ! work array read in the file
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFL1_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
@@ -1573,7 +1573,7 @@ END SUBROUTINE READ_SURFL1_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-use modd_field,         only: tfielddata, TYPELOG
+use modd_field,         only: tfieldmetadata, TYPELOG
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE
 
 USE MODE_IO_FIELD_READ, only: IO_Field_read
@@ -1592,7 +1592,7 @@ CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT ! comment
 !*      0.2   Declarations of local variables
 !
 INTEGER           :: ILUOUT
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA)  :: TZFIELD
 !-------------------------------------------------------------------------------
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFL0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
@@ -1669,7 +1669,7 @@ END SUBROUTINE READ_SURFL0_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-use modd_field,         only: tfielddata, TYPECHAR
+use modd_field,         only: tfieldmetadata, TYPECHAR
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE
 USE MODD_TYPE_DATE
 
@@ -1697,9 +1697,9 @@ INTEGER           :: ILUOUT
 CHARACTER(LEN=LEN_HREC)        :: YRECFM     ! Name of the article to be written
 CHARACTER(LEN=40)              :: YFILETYPE40! MESONH file type
 CHARACTER(LEN=2)               :: YFILETYPE2 ! MESONH file type
-INTEGER, DIMENSION(3)  :: ITDATE
-TYPE(TFIELDDATA)       :: TZFIELD
-TYPE(DATE_TIME)        :: TZDATETIME
+INTEGER, DIMENSION(3)          :: ITDATE
+TYPE(TFIELDMETADATA)           :: TZFIELD
+TYPE(DATE_TIME)                :: TZDATETIME
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFT0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
@@ -1710,7 +1710,7 @@ HCOMMENT = ''
 IF (TPINFILE%NMNHVERSION(1)<4 .OR. (TPINFILE%NMNHVERSION(1)==4 .AND. TPINFILE%NMNHVERSION(2)<6)) THEN
   CALL IO_Field_read(TPINFILE,'STORAGE_TYPE',YFILETYPE2)
 ELSE
-  TZFIELD = TFIELDDATA(         &
+  TZFIELD = TFIELDMETADATA(     &
     CMNHNAME   = 'STORAGETYPE', &
     CSTDNAME   = '',            &
     CLONGNAME  = 'STORAGETYPE', &
@@ -1793,7 +1793,7 @@ END SUBROUTINE READ_SURFT0_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-use modd_field,         only: tfielddata, TYPECHAR, TYPEINT, TYPEREAL
+use modd_field,         only: tfieldmetadata, TYPECHAR, TYPEINT, TYPEREAL
 USE MODD_IO_SURF_MNH,   ONLY: TOUT, TPINFILE
 
 USE MODE_IO_FIELD_READ, only: IO_Field_read
@@ -1822,8 +1822,8 @@ INTEGER           :: ILUOUT
 CHARACTER(LEN=LEN_HREC)        :: YRECFM     ! Name of the article to be written
 CHARACTER(LEN=40)              :: YFILETYPE40! MESONH file type
 CHARACTER(LEN=2)               :: YFILETYPE2 ! MESONH file type
-INTEGER, DIMENSION(3,KL1)  :: ITDATE
-TYPE(TFIELDDATA)       :: TZFIELD
+INTEGER, DIMENSION(3,KL1)      :: ITDATE
+TYPE(TFIELDMETADATA)           :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFT1_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
@@ -1834,7 +1834,7 @@ HCOMMENT = ''
 IF (TPINFILE%NMNHVERSION(1)<4 .OR. (TPINFILE%NMNHVERSION(1)==4 .AND. TPINFILE%NMNHVERSION(2)<6)) THEN
   CALL IO_Field_read(TPINFILE,'STORAGE_TYPE',YFILETYPE2)
 ELSE
-  TZFIELD = TFIELDDATA(         &
+  TZFIELD = TFIELDMETADATA(     &
     CMNHNAME   = 'STORAGETYPE', &
     CSTDNAME   = '',            &
     CLONGNAME  = 'STORAGETYPE', &
@@ -1858,7 +1858,7 @@ END IF
 !  RETURN
 !END IF
 !
-TZFIELD = TFIELDDATA(                &
+TZFIELD = TFIELDMETADATA(            &
   CMNHNAME   = TRIM(HREC)//'%TDATE', &
   CSTDNAME   = '',                   &
   CLONGNAME  = TRIM(HREC)//'%TDATE', &
@@ -1884,7 +1884,7 @@ IF (KRESP /=0) THEN
   WRITE(ILUOUT,*) ' '
 ENDIF
 !
-TZFIELD = TFIELDDATA(                &
+TZFIELD = TFIELDMETADATA(            &
   CMNHNAME   = TRIM(HREC)//'%xtime', &
   CSTDNAME   = '',                   &
   CLONGNAME  = TRIM(HREC)//'%xtime', &
diff --git a/src/MNH/set_grid.f90 b/src/MNH/set_grid.f90
index 80b75a18778e0127d1c9792f21fc9e387e76c193..3945848c8adb12b18354c86efb9cf7dadbd8c13c 100644
--- a/src/MNH/set_grid.f90
+++ b/src/MNH/set_grid.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -214,7 +214,7 @@ END MODULE MODI_SET_GRID
 USE MODD_CONF
 USE MODD_CONF_n
 USE MODD_DYN
-use modd_field,            only: tfielddata, tfieldlist
+use modd_field,            only: tfieldmetadata, tfieldlist
 USE MODD_GRID
 USE MODD_IO,      ONLY: TFILEDATA,TOUTBAK
 USE MODD_LUNIT_n, ONLY: TLUOUT
@@ -299,7 +299,7 @@ INTEGER                :: IIUP,IJUP ,ISUP=1         ! size  of working
                                                     ! window arrays,
                                                     ! supp. time steps
 !
-TYPE(TFIELDDATA)       :: TZFIELD
+TYPE(TFIELDMETADATA)   :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       1.    READ GRID  VARIABLES IN INITIAL FILE
@@ -336,12 +336,12 @@ IF (.NOT.LCARTESIAN) THEN
   !
   ELSE                     
     CALL FIND_FIELD_ID_FROM_MNHNAME('LONORI',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME = 'LONOR'
     CALL IO_Field_read(TPINIFILE,TZFIELD,PLONORI)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('LATORI',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME = 'LATOR'
     CALL IO_Field_read(TPINIFILE,TZFIELD,PLATORI)
     !
diff --git a/src/MNH/shallow_mf_pack.f90 b/src/MNH/shallow_mf_pack.f90
index b898b4bdaab0735a360dc20236576f881651c5ae..47816c603a685f7f72d604818fbeee0f9047de6b 100644
--- a/src/MNH/shallow_mf_pack.f90
+++ b/src/MNH/shallow_mf_pack.f90
@@ -129,7 +129,7 @@ use modd_budget,          only: lbudget_u, lbudget_v, lbudget_th, lbudget_rv, lb
 USE MODD_CONF
 USE MODD_CST
 USE MODD_IO,              ONLY: TFILEDATA
-use modd_field,           only: tfielddata, TYPEREAL
+use modd_field,           only: tfieldmetadata, TYPEREAL
 USE MODD_NSV
 USE MODD_PARAMETERS
 USE MODD_PARAM_ICE,       ONLY: CFRAC_ICE_SHALLOW_MF
@@ -258,7 +258,7 @@ REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PSVM,4)) ::  ZDSVDT
 INTEGER :: IIU, IJU, IKU, IKB, IKE, IRR, ISV  
 INTEGER :: JK,JRR,JSV                          ! Loop counters
 
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !------------------------------------------------------------------------
 
 !!! 1. Initialisation
@@ -395,7 +395,7 @@ end if
 IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   ! stores the conservative potential temperature vertical flux
   ZWORK(:,:,:)=RESHAPE(ZFLXZTHMF (:,:),(/ IIU,IJU,IKU /) )
-  TZFIELD = TFIELDDATA(              &
+  TZFIELD = TFIELDMETADATA(          &
     CMNHNAME   = 'MF_THW_FLX',       &
     CSTDNAME   = '',                 &
     CLONGNAME  = 'MF_THW_FLX',       &
@@ -410,7 +410,7 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   !
   ! stores the conservative mixing ratio vertical flux
   ZWORK(:,:,:)=RESHAPE(ZFLXZRMF(:,:),(/ IIU,IJU,IKU /) )
-    TZFIELD = TFIELDDATA(                 &
+    TZFIELD = TFIELDMETADATA(             &
       CMNHNAME   = 'MF_RCONSW_FLX',       &
       CSTDNAME   = '',                    &
       CLONGNAME  = 'MF_RCONSW_FLX',       &
@@ -424,7 +424,7 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK)
   !
   ! stores the theta_v vertical flux
-  TZFIELD = TFIELDDATA(               &
+  TZFIELD = TFIELDMETADATA(           &
     CMNHNAME   = 'MF_THVW_FLX',       &
     CSTDNAME   = '',                  &
     CLONGNAME  = 'MF_THVW_FLX',       &
@@ -440,7 +440,7 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
  IF (OMIXUV) THEN
   ! stores the U momentum vertical flux
   ZWORK(:,:,:)=RESHAPE(ZFLXZUMF(:,:),(/ IIU,IJU,IKU /) )
-  TZFIELD = TFIELDDATA(             &
+  TZFIELD = TFIELDMETADATA(         &
     CMNHNAME   = 'MF_UW_FLX',       &
     CSTDNAME   = '',                &
     CLONGNAME  = 'MF_UW_FLX',       &
@@ -455,7 +455,7 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
   !
   ! stores the V momentum vertical flux
   ZWORK(:,:,:)=RESHAPE(ZFLXZVMF(:,:),(/ IIU,IJU,IKU /) )
-  TZFIELD = TFIELDDATA(             &
+  TZFIELD = TFIELDMETADATA(         &
     CMNHNAME   = 'MF_VW_FLX',       &
     CSTDNAME   = '',                &
     CLONGNAME  = 'MF_VW_FLX',       &
diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90
index 44aa7c3ce0835e7c48c58e373e25a9c06ff8c636..360cb0e0ef851b75f9e4ccb6affb4050f17ff07a 100644
--- a/src/MNH/spawn_field2.f90
+++ b/src/MNH/spawn_field2.f90
@@ -172,7 +172,7 @@ USE MODD_CST
 USE MODD_CONF_n,          ONLY: CONF_MODEL
 USE MODD_DUST,            ONLY: CDUSTNAMES
 USE MODD_ELEC_DESCR,      ONLY: CELECNAMES
-use modd_field,           only: tfielddata, TYPEREAL
+use modd_field,           only: tfieldmetadata, TYPEREAL
 USE MODD_FIELD_n,         ONLY: FIELD_MODEL, XZWS_DEFAULT
 USE MODD_IO,              ONLY: TFILEDATA
 USE MODD_LATZ_EDFLX
@@ -279,7 +279,7 @@ LOGICAL :: GUSERV
 !
 CHARACTER(LEN=15) :: YVAL
 CHARACTER(LEN=2)  :: INDICE
-TYPE(TFIELDDATA)             :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90
index 40a902d17e2e22391bd9d15a3fcb81b1615892c8..d2df4fcf722c387901192ec64770e3fb01132e3f 100644
--- a/src/MNH/tke_eps_sources.f90
+++ b/src/MNH/tke_eps_sources.f90
@@ -177,7 +177,7 @@ USE MODD_CONF
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_DIAG_IN_RUN,    ONLY: LDIAG_IN_RUN, XCURRENT_TKE_DISS
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_LES
 USE MODD_PARAMETERS
@@ -255,7 +255,7 @@ INTEGER             :: IIU,IJU,IKU  ! array size in the 3 dimensions
 !
 TYPE(LIST_ll), POINTER :: TZFIELDDISS_ll ! list of fields to exchange
 INTEGER                :: IINFO_ll       ! return code of parallel routine
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !----------------------------------------------------------------------------
 NULLIFY(TZFIELDDISS_ll)
@@ -415,7 +415,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
 !
 ! stores the dynamic production 
 !
-  TZFIELD = TFIELDDATA(      &
+  TZFIELD = TFIELDMETADATA(  &
     CMNHNAME   = 'DP',       &
     CSTDNAME   = '',         &
     CLONGNAME  = 'DP',       &
@@ -430,7 +430,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
 !
 ! stores the thermal production 
 !
-  TZFIELD = TFIELDDATA(      &
+  TZFIELD = TFIELDMETADATA(  &
     CMNHNAME   = 'TP',       &
     CSTDNAME   = '',         &
     CLONGNAME  = 'TP',       &
@@ -445,7 +445,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
 !
 ! stores the whole turbulent transport
 !
-  TZFIELD = TFIELDDATA(      &
+  TZFIELD = TFIELDMETADATA(  &
     CMNHNAME   = 'TR',       &
     CSTDNAME   = '',         &
     CLONGNAME  = 'TR',       &
@@ -460,7 +460,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
 !
 ! stores the dissipation of TKE 
 !
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'DISS',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'DISS',       &
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index 44178ca883f98abe259e7d7ba18a87243a4d9a6d..639cd19a0b7724e63c64d472537254f37d74b73e 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -360,7 +360,7 @@ USE MODD_CONF
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_DYN_n, ONLY : LOCEAN
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO, ONLY: TFILEDATA
 USE MODD_LES
 USE MODD_NSV
@@ -557,7 +557,7 @@ REAL                :: ZALPHA       ! work coefficient :
 REAL :: ZTIME1, ZTIME2
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)):: ZTT,ZEXNE,ZLV,ZLS,ZCPH,ZCOR
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3))::  ZSHEAR, ZDUDZ, ZDVDZ
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !------------------------------------------------------------------------------------------
 ALLOCATE (                                                        &
@@ -699,7 +699,7 @@ IF (KRRL >=1) THEN
 !
 !
   IF ( tpfile%lopened .AND. OTURB_DIAG ) THEN
-    TZFIELD = TFIELDDATA(          &
+    TZFIELD = TFIELDMETADATA(      &
       CMNHNAME   = 'ATHETA',       &
       CSTDNAME   = '',             &
       CLONGNAME  = 'ATHETA',       &
@@ -712,7 +712,7 @@ IF (KRRL >=1) THEN
       LTIMEDEP   = .TRUE.          )
     CALL IO_Field_write(TPFILE,TZFIELD,ZATHETA)
 !
-    TZFIELD = TFIELDDATA(          &
+    TZFIELD = TFIELDMETADATA(      &
       CMNHNAME   = 'AMOIST',       &
       CSTDNAME   = '',             &
       CLONGNAME  = 'AMOIST',       &
@@ -1154,7 +1154,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
 ! 
 ! stores the mixing length
 ! 
-  TZFIELD = TFIELDDATA(           &
+  TZFIELD = TFIELDMETADATA(       &
     CMNHNAME   = 'LM',            &
     CSTDNAME   = '',              &
     CLONGNAME  = 'LM',            &
@@ -1171,7 +1171,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
 !
 ! stores the conservative potential temperature
 !
-    TZFIELD = TFIELDDATA(                              &
+    TZFIELD = TFIELDMETADATA(                          &
     CMNHNAME   = 'THLM',                               &
     CSTDNAME   = '',                                   &
     CLONGNAME  = 'THLM',                               &
@@ -1186,7 +1186,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
 !
 ! stores the conservative mixing ratio
 !
-    TZFIELD = TFIELDDATA(                    &
+    TZFIELD = TFIELDMETADATA(                &
     CMNHNAME   = 'RNPM',                     &
     CSTDNAME   = '',                         &
     CLONGNAME  = 'RNPM',                     &
@@ -1825,7 +1825,7 @@ ENDIF
 !
 ! Impression before modification of the mixing length
 IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
-  TZFIELD = TFIELDDATA(                &
+  TZFIELD = TFIELDMETADATA(            &
     CMNHNAME   = 'LM_CLEAR_SKY',       &
     CSTDNAME   = '',                   &
     CLONGNAME  = 'LM_CLEAR_SKY',       &
@@ -1852,7 +1852,7 @@ WHERE (PCEI(:,:,:) == -1.) PLEM(:,:,:) = ZLM_CLOUD(:,:,:)
 !              ----------
 !
 IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
-  TZFIELD = TFIELDDATA(             &
+  TZFIELD = TFIELDMETADATA(         &
     CMNHNAME   = 'COEF_AMPL',       &
     CSTDNAME   = '',                &
     CLONGNAME  = 'COEF_AMPL',       &
@@ -1865,7 +1865,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.             )
   CALL IO_Field_write(TPFILE,TZFIELD,ZCOEF_AMPL)
   !
-  TZFIELD = TFIELDDATA(            &
+  TZFIELD = TFIELDMETADATA(        &
     CMNHNAME   = 'LM_CLOUD',       &
     CSTDNAME   = '',               &
     CLONGNAME  = 'LM_CLOUD',       &
diff --git a/src/MNH/turb_cloud_index.f90 b/src/MNH/turb_cloud_index.f90
index 44392d8fa556542c6c41bd4f56a148ca49eef659..18c0e8ffb0c22d9ea6f2512d1c382b023665d475 100644
--- a/src/MNH/turb_cloud_index.f90
+++ b/src/MNH/turb_cloud_index.f90
@@ -83,7 +83,7 @@ END MODULE MODI_TURB_CLOUD_INDEX
 !
 !-------------------------------------------------------------------------------
 !
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS,     ONLY: JPVEXT
 !
@@ -133,7 +133,7 @@ INTEGER             :: IIB,IJB,IKB  ! Begin of physical dimensions
 INTEGER             :: IIE,IJE,IKE  ! End   of physical dimensions
 INTEGER, DIMENSION(SIZE(PRM,1),SIZE(PRM,2),SIZE(PRM,3)) :: IMASK_CLOUD
                              ! 0 except cloudy points or adjacent points (1)
-TYPE(TFIELDDATA)    :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -244,7 +244,7 @@ ENDDO
 !*       2.5    Writing
 !
 IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'RVCI',      &
     CSTDNAME   = '',          &
     CLONGNAME  = 'RVCI',      &
@@ -257,7 +257,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.       )
   CALL IO_Field_write(TPFILE,TZFIELD,ZRVCI)
   !
-  TZFIELD = TFIELDDATA(           &
+  TZFIELD = TFIELDMETADATA(       &
     CMNHNAME   = 'GX_RVCI',       &
     CSTDNAME   = '',              &
     CLONGNAME  = 'GX_RVCI',       &
@@ -270,7 +270,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.           )
   CALL IO_Field_write(TPFILE,TZFIELD,ZG_RVCI(:,:,:,1))
   !
-  TZFIELD = TFIELDDATA(           &
+  TZFIELD = TFIELDMETADATA(       &
     CMNHNAME   = 'GY_RVCI',       &
     CSTDNAME   = '',              &
     CLONGNAME  = 'GY_RVCI',       &
@@ -283,7 +283,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.           )
   CALL IO_Field_write(TPFILE,TZFIELD,ZG_RVCI(:,:,:,2))
   !
-  TZFIELD = TFIELDDATA(          &
+  TZFIELD = TFIELDMETADATA(      &
     CMNHNAME   = 'GNORM_RVCI',   &
     CSTDNAME   = '',             &
     CLONGNAME  = 'GNORM_RVCI',   &
@@ -296,7 +296,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.          )
   CALL IO_Field_write(TPFILE,TZFIELD,ZGNORM_RVCI)
   !
-  TZFIELD = TFIELDDATA(           &
+  TZFIELD = TFIELDMETADATA(       &
     CMNHNAME   = 'QX_RVCI',       &
     CSTDNAME   = '',              &
     CLONGNAME  = 'QX_RVCI',       &
@@ -309,7 +309,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.           )
   CALL IO_Field_write(TPFILE,TZFIELD,ZQ_RVCI(:,:,:,1))
   !
-  TZFIELD = TFIELDDATA(           &
+  TZFIELD = TFIELDMETADATA(       &
     CMNHNAME   = 'QY_RVCI',       &
     CSTDNAME   = '',              &
     CLONGNAME  = 'QY_RVCI',       &
@@ -322,7 +322,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.           )
   CALL IO_Field_write(TPFILE,TZFIELD,ZQ_RVCI(:,:,:,2))
   !
-  TZFIELD = TFIELDDATA(              &
+  TZFIELD = TFIELDMETADATA(          &
     CMNHNAME   = 'QNORM_RVCI',       &
     CSTDNAME   = '',                 &
     CLONGNAME  = 'QNORM_RVCI',       &
@@ -335,7 +335,7 @@ IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
     LTIMEDEP   = .TRUE.              )
   CALL IO_Field_write(TPFILE,TZFIELD,ZQNORM_RVCI)
   !
-  TZFIELD = TFIELDDATA(             &
+  TZFIELD = TFIELDMETADATA(         &
     CMNHNAME   = 'CEI',             &
     CSTDNAME   = '',                &
     CLONGNAME  = 'CEI',             &
diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90
index a0c5ad948f0e4a9c3dd11fa1811298e69fdb962b..8c9cb916f5710fd5c265e974f447bdbc81c7aeb7 100644
--- a/src/MNH/turb_hor_dyn_corr.f90
+++ b/src/MNH/turb_hor_dyn_corr.f90
@@ -144,7 +144,7 @@ USE MODD_ARGSLIST_ll,    ONLY: LIST_ll
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
@@ -256,7 +256,7 @@ REAL :: ZTIME1, ZTIME2
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF , ZDZZ
                                     ! coefficients for the uncentred gradient 
                                     ! computation near the ground
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 ! --------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARY COMPUTATIONS
@@ -371,7 +371,7 @@ ZFLX(:,:,IKB-1) = 2. * ZFLX(:,:,IKB-1) -  ZFLX(:,:,IKB)
 CALL UPDATE_HALO_ll(TZFIELDS_ll, IINFO_ll)
 IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
   ! stores <U U>  
-  TZFIELD = TFIELDDATA(         &
+  TZFIELD = TFIELDMETADATA(     &
     CMNHNAME   = 'U_VAR',       &
     CSTDNAME   = '',            &
     CLONGNAME  = 'U_VAR',       &
@@ -467,7 +467,7 @@ CALL UPDATE_HALO_ll(TZFIELDS_ll, IINFO_ll)
 !
 IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
   ! stores <V V>  
-  TZFIELD = TFIELDDATA(         &
+  TZFIELD = TFIELDMETADATA(     &
     CMNHNAME   = 'V_VAR',       &
     CSTDNAME   = '',            &
     CLONGNAME  = 'V_VAR',       &
@@ -555,7 +555,7 @@ ZFLX(:,:,IKB-1) = 2. * ZFLX(:,:,IKB-1) - ZFLX(:,:,IKB)
 !
 IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
   ! stores <W W>  
-  TZFIELD = TFIELDDATA(         &
+  TZFIELD = TFIELDMETADATA(     &
     CMNHNAME   = 'W_VAR',       &
     CSTDNAME   = '',            &
     CLONGNAME  = 'W_VAR',       &
diff --git a/src/MNH/turb_hor_sv_flux.f90 b/src/MNH/turb_hor_sv_flux.f90
index de501f779bb9bc71c51c4834e84178eca90e5ea3..c7db4b4b956acb3dbdf821bf083cfa5d6da530da 100644
--- a/src/MNH/turb_hor_sv_flux.f90
+++ b/src/MNH/turb_hor_sv_flux.f90
@@ -113,7 +113,7 @@ END MODULE MODI_TURB_HOR_SV_FLUX
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_NSV,            ONLY: NSV_LGBEG, NSV_LGEND
@@ -187,7 +187,7 @@ REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF
 !
 CHARACTER(LEN=NMNHNAMELGTMAX) :: YMNHNAME
 INTEGER :: IKU
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 REAL :: ZTIME1, ZTIME2
 ! ---------------------------------------------------------------------------
 !
@@ -250,7 +250,7 @@ DO JSV=1,ISV
   ! stores  <U SVth>
   IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
     WRITE(YMNHNAME,'("USV_FLX_",I3.3)') JSV
-    TZFIELD = TFIELDDATA(                        &
+    TZFIELD = TFIELDMETADATA(                    &
       CMNHNAME   = TRIM( YMNHNAME ),             &
       CSTDNAME   = '',                           &
       CLONGNAME  = TRIM( YMNHNAME ),             &
@@ -303,7 +303,7 @@ DO JSV=1,ISV
   ! stores  <V SVth>
     IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
       WRITE(YMNHNAME,'("VSV_FLX_",I3.3)') JSV
-    TZFIELD = TFIELDDATA(                            &
+    TZFIELD = TFIELDMETADATA(                        &
       CMNHNAME   = TRIM( YMNHNAME ),                 &
       CSTDNAME   = '',                               &
       CLONGNAME  = TRIM(TZFIELD%CMNHNAME),           &
diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90
index d5102212b4abbf325a821e18f3fcec74cc005142..a59829330235639ef11ca65548c887caaeb736cb 100644
--- a/src/MNH/turb_hor_thermo_corr.f90
+++ b/src/MNH/turb_hor_thermo_corr.f90
@@ -121,7 +121,7 @@ END MODULE MODI_TURB_HOR_THERMO_CORR
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
@@ -197,7 +197,7 @@ REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF
                                     ! coefficients for the uncentred gradient 
                                     ! computation near the ground
 REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 ! ---------------------------------------------------------------------------
 !
@@ -266,7 +266,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
   !
   ! stores <THl THl>
   IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
-    TZFIELD = TFIELDDATA(            &
+    TZFIELD = TFIELDMETADATA(        &
       CMNHNAME   = 'THL_HVAR',       &
       CSTDNAME   = '',               &
       CLONGNAME  = 'THL_HVAR',       &
@@ -355,7 +355,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
     !
     ! stores <THl Rnp>
     IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
-      TZFIELD = TFIELDDATA(             &
+      TZFIELD = TFIELDMETADATA(         &
         CMNHNAME   = 'THLR_HCOR',       &
         CSTDNAME   = '',                &
         CLONGNAME  = 'THLR_HCOR',       &
@@ -424,7 +424,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
     !
     ! stores <Rnp Rnp>
     IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
-      TZFIELD = TFIELDDATA(          &
+      TZFIELD = TFIELDMETADATA(      &
         CMNHNAME   = 'R_HVAR',       &
         CSTDNAME   = '',             &
         CLONGNAME  = 'R_HVAR',       &
diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90
index a4dd3bdee5b758465a901e69eda9ffd064b8f5f8..66191d4f581a25ca144d9b15c299cacffe19e51f 100644
--- a/src/MNH/turb_hor_thermo_flux.f90
+++ b/src/MNH/turb_hor_thermo_flux.f90
@@ -130,7 +130,7 @@ END MODULE MODI_TURB_HOR_THERMO_FLUX
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
@@ -214,7 +214,7 @@ REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF
                                     ! computation near the ground
 !
 REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 ! ---------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARY COMPUTATIONS
@@ -311,7 +311,7 @@ END IF
 !
 ! stores the horizontal  <U THl>
 IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
-  TZFIELD = TFIELDDATA(            &
+  TZFIELD = TFIELDMETADATA(        &
     CMNHNAME   = 'UTHL_FLX',       &
     CSTDNAME   = '',               &
     CLONGNAME  = 'UTHL_FLX',       &
@@ -415,7 +415,7 @@ IF (KRR/=0) THEN
   !
   ! stores the horizontal  <U Rnp>
   IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
-    TZFIELD = TFIELDDATA(           &
+    TZFIELD = TFIELDMETADATA(       &
       CMNHNAME   = 'UR_FLX',        &
       CSTDNAME   = '',              &
       CLONGNAME  = 'UR_FLX',        &
@@ -465,7 +465,7 @@ END IF
 !!  !
 !!  ! stores the horizontal  <U VPT>
 !!  IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
-!!    TZFIELD = TFIELDDATA(            &
+!!    TZFIELD = TFIELDMETADATA(        &
 !!      CMNHNAME   = 'UVPT_FLX',       &
 !!      CSTDNAME   = '',               &
 !!      CLONGNAME  = 'UVPT_FLX',       &
@@ -569,7 +569,7 @@ END IF
 !
 ! stores the horizontal  <V THl>
 IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
-  TZFIELD = TFIELDDATA(            &
+  TZFIELD = TFIELDMETADATA(        &
     CMNHNAME   = 'VTHL_FLX',       &
     CSTDNAME   = '',               &
     CLONGNAME  = 'VTHL_FLX',       &
@@ -682,7 +682,7 @@ IF (KRR/=0) THEN
   !
   ! stores the horizontal  <V Rnp>
   IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
-    TZFIELD = TFIELDDATA(           &
+    TZFIELD = TFIELDMETADATA(       &
       CMNHNAME   = 'VR_FLX',        &
       CSTDNAME   = '',              &
       CLONGNAME  = 'VR_FLX',        &
@@ -736,7 +736,7 @@ END IF
 !!  !
 !!  ! stores the horizontal  <V VPT>
 !!  IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
-!!    TZFIELD = TFIELDDATA(            &
+!!    TZFIELD = TFIELDMETADATA(        &
 !!      CMNHNAME   = 'VVPT_FLX',       &
 !!      CSTDNAME   = '',               &
 !!      CLONGNAME  = 'VVPT_FLX',       &
diff --git a/src/MNH/turb_hor_uv.f90 b/src/MNH/turb_hor_uv.f90
index 112c60c853405f299f0f15a946b3dbdf9c1a1b9f..6c09be2ea016a76b4fcbad618e21b12fe4915b78 100644
--- a/src/MNH/turb_hor_uv.f90
+++ b/src/MNH/turb_hor_uv.f90
@@ -126,7 +126,7 @@ END MODULE MODI_TURB_HOR_UV
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
@@ -208,7 +208,7 @@ REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3))  :: GY_U_UV_PUM
 REAL, DIMENSION(SIZE(PVM,1),SIZE(PVM,2),SIZE(PVM,3))  :: GX_V_UV_PVM
 !
 REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 ! ---------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARY COMPUTATIONS
@@ -270,7 +270,7 @@ ZFLX(:,:,IKB-1:IKB-1) = 2. * MXM( MYM( ZFLX(:,:,IKB-1:IKB-1) ) )  &
 !     
 ! stores  <U V>
 IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
-  TZFIELD = TFIELDDATA(          &
+  TZFIELD = TFIELDMETADATA(      &
     CMNHNAME   = 'UV_FLX',       &
     CSTDNAME   = '',             &
     CLONGNAME  = 'UV_FLX',       &
diff --git a/src/MNH/turb_hor_uw.f90 b/src/MNH/turb_hor_uw.f90
index f1289d73a5b72763dcd883dd0d3f8f5e7e8945b6..9f467784eba3a3716e351db6157404d8b66f3b44 100644
--- a/src/MNH/turb_hor_uw.f90
+++ b/src/MNH/turb_hor_uw.f90
@@ -117,7 +117,7 @@ END MODULE MODI_TURB_HOR_UW
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
@@ -187,7 +187,7 @@ INTEGER             :: JSV          ! scalar loop counter
 REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GX_W_UW_PWM
 !
 REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 ! ---------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARY COMPUTATIONS
@@ -220,7 +220,7 @@ ZFLX(:,:,IKB-1)=2.*ZFLX(:,:,IKB)- ZFLX(:,:,IKB+1)
 !
 ! stores  <U W>
 IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
-  TZFIELD = TFIELDDATA(         &
+  TZFIELD = TFIELDMETADATA(     &
   CMNHNAME   = 'UW_HFLX',       &
   CSTDNAME   = '',              &
   CLONGNAME  = 'UW_HFLX',       &
diff --git a/src/MNH/turb_hor_vw.f90 b/src/MNH/turb_hor_vw.f90
index 48f5be9bc674643cf316ff6eecee5347a16a77f6..92939a5497f54333dfb1ba646f2cebed860175e6 100644
--- a/src/MNH/turb_hor_vw.f90
+++ b/src/MNH/turb_hor_vw.f90
@@ -113,7 +113,7 @@ END MODULE MODI_TURB_HOR_VW
 USE MODD_CST
 USE MODD_CONF
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
@@ -182,7 +182,7 @@ INTEGER             :: JSV          ! scalar loop counter
 REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GY_W_VW_PWM
 !
 REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 ! ---------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARY COMPUTATIONS
@@ -222,7 +222,7 @@ ZFLX(:,:,IKB-1)= 2.*ZFLX(:,:,IKB) - ZFLX(:,:,IKB+1)
 !
 ! stores  <V W>
 IF ( tpfile%lopened .AND. OTURB_FLX ) THEN
-  TZFIELD = TFIELDDATA(           &
+  TZFIELD = TFIELDMETADATA(       &
     CMNHNAME   = 'VW_HFLX',       &
     CSTDNAME   = '',              &
     CLONGNAME  = 'VW_HFLX',       &
diff --git a/src/MNH/turb_ver.f90 b/src/MNH/turb_ver.f90
index d7b0f4800d91c9ef28218d1b8ca4bcf43703b618..f701567c8aab8724095ae21eb851a1c86ebe6fee 100644
--- a/src/MNH/turb_ver.f90
+++ b/src/MNH/turb_ver.f90
@@ -320,7 +320,7 @@ END MODULE MODI_TURB_VER
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_DYN_n,          ONLY: LOCEAN
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
@@ -475,7 +475,7 @@ INTEGER :: IKB,IKE   ! index value for the Beginning
 INTEGER :: JSV       ! loop counter on scalar variables
 REAL    :: ZTIME1
 REAL    :: ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !----------------------------------------------------------------------------
 ALLOCATE (      ZBETA(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))    ,&
        ZSQRT_TKE(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),& 
@@ -696,7 +696,7 @@ IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
 !
 ! stores the Turbulent Prandtl number
 ! 
-  TZFIELD = TFIELDDATA(                      &
+  TZFIELD = TFIELDMETADATA(                  &
     CMNHNAME   = 'PHI3',                     &
     CSTDNAME   = '',                         &
     CLONGNAME  = 'PHI3',                     &
@@ -711,7 +711,7 @@ IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
 !
 ! stores the Turbulent Schmidt number
 ! 
-  TZFIELD = TFIELDDATA(                      &
+  TZFIELD = TFIELDMETADATA(                  &
     CMNHNAME   = 'PSI3',                     &
     CSTDNAME   = '',                         &
     CLONGNAME  = 'PSI3',                     &
@@ -727,7 +727,7 @@ IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
 !
 ! stores the Turbulent Schmidt number for the scalar variables
 ! 
-  TZFIELD = TFIELDDATA(                        &
+  TZFIELD = TFIELDMETADATA(                    &
     CMNHNAME   = 'generic for SV in turb_ver', & !Temporary name to ease identification
     CSTDNAME   = '',                           &
     CUNITS     = '1',                          &
diff --git a/src/MNH/turb_ver_dyn_flux.f90 b/src/MNH/turb_ver_dyn_flux.f90
index ad27b69f246f248369013f7a0d9b68a065f04c85..fcf13abe7585b884c72bd6a2dbb91cd07c326bd4 100644
--- a/src/MNH/turb_ver_dyn_flux.f90
+++ b/src/MNH/turb_ver_dyn_flux.f90
@@ -290,7 +290,7 @@ USE MODD_CONF
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_DYN_n,          ONLY: LOCEAN
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_LES
 USE MODD_NSV
@@ -404,7 +404,7 @@ REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1) :: ZCOEFFLXU, &
 INTEGER             :: IIU,IJU      ! size of array in x,y,z directions
 !
 REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !----------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARIES
@@ -541,7 +541,7 @@ END IF
 !
 IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
   ! stores the U wind component vertical flux
-  TZFIELD = TFIELDDATA(                            &
+  TZFIELD = TFIELDMETADATA(                        &
     CMNHNAME   = 'UW_VFLX',                        &
     CSTDNAME   = '',                               &
     CLONGNAME  = 'UW_VFLX',                        &
@@ -770,7 +770,7 @@ END IF
 !
 IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
   ! stores the V wind component vertical flux
-  TZFIELD = TFIELDDATA(                            &
+  TZFIELD = TFIELDMETADATA(                        &
     CMNHNAME   = 'VW_VFLX',                        &
     CSTDNAME   = '',                               &
     CLONGNAME  = 'VW_VFLX',                        &
@@ -908,7 +908,7 @@ IF ( OTURB_FLX .AND. tpfile%lopened .AND. HTURBDIM == '1DIM') THEN
   ! to be tested &
   !   +XCMFB*(4./3.)*PLM(:,:,:)/SQRT(PTKEM(:,:,:))*PTP(:,:,:) 
   ! stores the W variance
-  TZFIELD = TFIELDDATA(          &
+  TZFIELD = TFIELDMETADATA(      &
     CMNHNAME   = 'W_VVAR',       &
     CSTDNAME   = '',             &
     CLONGNAME  = 'W_VVAR',       &
diff --git a/src/MNH/turb_ver_sv_flux.f90 b/src/MNH/turb_ver_sv_flux.f90
index 08491bc73559c564df3a771d1a8ab2580a6bed4c..8a742e1855d7c87f5678b69489a9b061e0987860 100644
--- a/src/MNH/turb_ver_sv_flux.f90
+++ b/src/MNH/turb_ver_sv_flux.f90
@@ -270,7 +270,7 @@ END MODULE MODI_TURB_VER_SV_FLUX
 !
 USE MODD_CST
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
@@ -360,7 +360,7 @@ REAL :: ZCSVP = 4.0  ! constant for scalar flux presso-correlation (RS81)
 REAL :: ZCSV          !constant for the scalar flux
 !
 CHARACTER(LEN=NMNHNAMELGTMAX) :: YMNHNAME
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA)  :: TZFIELD
 !----------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARIES
@@ -455,7 +455,7 @@ DO JSV=1,ISV
   IF (OTURB_FLX .AND. tpfile%lopened) THEN
     ! stores the JSVth vertical flux
     WRITE(YMNHNAME,'("WSV_FLX_",I3.3)') JSV
-    TZFIELD = TFIELDDATA(                        &
+    TZFIELD = TFIELDMETADATA(                    &
       CMNHNAME   = TRIM( YMNHNAME ),             &
       CSTDNAME   = '',                           &
       CLONGNAME  = TRIM( YMNHNAME ),             &
diff --git a/src/MNH/turb_ver_thermo_corr.f90 b/src/MNH/turb_ver_thermo_corr.f90
index 0175f76c95571d69f5670de6b7599c7977140d4f..031c9cd2f0bc14cab6bd5271e5cf45079b94f6fc 100644
--- a/src/MNH/turb_ver_thermo_corr.f90
+++ b/src/MNH/turb_ver_thermo_corr.f90
@@ -312,7 +312,7 @@ END MODULE MODI_TURB_VER_THERMO_CORR
 !
 USE MODD_CST
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_CONF
@@ -439,7 +439,7 @@ LOGICAL :: GFWTH    ! flag to use w'2th'
 LOGICAL :: GFR2     ! flag to use w'r'2
 LOGICAL :: GFWR     ! flag to use w'2r'
 LOGICAL :: GFTHR    ! flag to use w'th'r'
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !----------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARIES
@@ -568,7 +568,7 @@ END IF
   !
   ! stores <THl THl>  
   IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
-    TZFIELD = TFIELDDATA(            &
+    TZFIELD = TFIELDMETADATA(        &
       CMNHNAME   = 'THL_VVAR',       &
       CSTDNAME   = '',               &
       CLONGNAME  = 'THL_VVAR',       &
@@ -696,7 +696,7 @@ END IF
     END IF
     ! stores <THl Rnp>   
     IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
-      TZFIELD = TFIELDDATA(                 &
+      TZFIELD = TFIELDMETADATA(             &
         CMNHNAME   = 'THLRCONS_VCOR',       &
         CSTDNAME   = '',                    &
         CLONGNAME  = 'THLRCONS_VCOR',       &
@@ -804,7 +804,7 @@ END IF
     END IF
     ! stores <Rnp Rnp>    
     IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
-      TZFIELD = TFIELDDATA(             &
+      TZFIELD = TFIELDMETADATA(         &
         CMNHNAME   = 'RTOT_VVAR',       &
         CSTDNAME   = '',                &
         CLONGNAME  = 'RTOT_VVAR',       &
diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90
index 816cb9a4e205ae778e4b23fc34c6d36d6d7401e4..aa53f08222efb391a810c39dba484166dfeb9c61 100644
--- a/src/MNH/turb_ver_thermo_flux.f90
+++ b/src/MNH/turb_ver_thermo_flux.f90
@@ -338,7 +338,7 @@ END MODULE MODI_TURB_VER_THERMO_FLUX
 !
 USE MODD_CST
 USE MODD_CTURB
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_GRID_n,         ONLY: XZS, XXHAT, XYHAT
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_METRICS_n,      ONLY: XDXX, XDYY, XDZX, XDZY, XDZZ
@@ -522,7 +522,7 @@ LOGICAL :: GFWTH    ! flag to use w'2th'
 LOGICAL :: GFR2     ! flag to use w'r'2
 LOGICAL :: GFWR     ! flag to use w'2r'
 LOGICAL :: GFTHR    ! flag to use w'th'r'
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !----------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARIES
@@ -753,7 +753,7 @@ END IF
 !
 IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
   ! stores the conservative potential temperature vertical flux
-  TZFIELD = TFIELDDATA(                                             &
+  TZFIELD = TFIELDMETADATA(                                         &
    CMNHNAME   = 'THW_FLX',                                          &
    CSTDNAME   = '',                                                 &
    CLONGNAME  = 'THW_FLX',                                          &
@@ -990,7 +990,7 @@ IF (KRR /= 0) THEN
   !
   IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
     ! stores the conservative mixing ratio vertical flux
-    TZFIELD = TFIELDDATA(                                     &
+    TZFIELD = TFIELDMETADATA(                                 &
       CMNHNAME   = 'RCONSW_FLX',                              &
       CSTDNAME   = '',                                        &
       CLONGNAME  = 'RCONSW_FLX',                              &
@@ -1080,7 +1080,7 @@ IF ( ((OTURB_FLX .AND. tpfile%lopened) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
   !                 
   ! store the liquid water mixing ratio vertical flux
   IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
-    TZFIELD = TFIELDDATA(                                     &
+    TZFIELD = TFIELDMETADATA(                                 &
       CMNHNAME   = 'RCW_FLX',                                 &
       CSTDNAME   = '',                                        &
       CLONGNAME  = 'RCW_FLX',                                 &
diff --git a/src/MNH/uv_to_zonal_and_merid.f90 b/src/MNH/uv_to_zonal_and_merid.f90
index 6ce72b8c276368ca96f11d8626d9e8477081a170..95d768766915625a2ce9908eecc8aa0048ff246e 100644
--- a/src/MNH/uv_to_zonal_and_merid.f90
+++ b/src/MNH/uv_to_zonal_and_merid.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2000-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -9,31 +9,31 @@
 INTERFACE UV_TO_ZONAL_AND_MERID
       SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,TPFILE,TZFIELDS)
 !
-use modd_field, only: tfielddata
+use modd_field, only: tfieldmetadata
 use modd_io,    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
-TYPE(TFILEDATA),               OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
-TYPE(TFIELDDATA),DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
+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
+TYPE(TFILEDATA),                    OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
+TYPE(TFIELDMETADATA), DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
 !
 END SUBROUTINE UV_TO_ZONAL_AND_MERID3D
 !
       SUBROUTINE UV_TO_ZONAL_AND_MERID2D(PU,PV,KGRID,PZC,PMC,TPFILE,TZFIELDS)
 !
-use modd_field, only: tfielddata
+use modd_field, only: tfieldmetadata
 use modd_io,    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
-TYPE(TFILEDATA),               OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
-TYPE(TFIELDDATA),DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
+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
+TYPE(TFILEDATA),                    OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
+TYPE(TFIELDMETADATA), DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
 !
 END SUBROUTINE UV_TO_ZONAL_AND_MERID2D
 !
@@ -47,16 +47,16 @@ INTERFACE
 !
       SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,TPFILE,TZFIELDS)
 !
-use modd_field, only: tfielddata
+use modd_field, only: tfieldmetadata
 use modd_io,    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
-TYPE(TFILEDATA),               OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
-TYPE(TFIELDDATA),DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
+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
+TYPE(TFILEDATA),                    OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
+TYPE(TFIELDMETADATA), DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
 !
 END SUBROUTINE UV_TO_ZONAL_AND_MERID3D
 END INTERFACE
@@ -103,7 +103,7 @@ END MODULE MODI_UV_TO_ZONAL_AND_MERID3D
 USE MODD_CONF
 USE MODD_CST
 USE MODD_DIM_n
-use modd_field,          only: tfielddata
+use modd_field,          only: tfieldmetadata
 USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_IO,             ONLY: TFILEDATA
@@ -119,13 +119,13 @@ IMPLICIT NONE
 !
 !*      0.1    declarations of arguments
 !
-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
-TYPE(TFILEDATA),               OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
-TYPE(TFIELDDATA),DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
+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
+TYPE(TFILEDATA),                    OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
+TYPE(TFIELDMETADATA), DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
 !
 !*      0.2    declarations of local variables
 !
@@ -276,7 +276,7 @@ END SUBROUTINE UV_TO_ZONAL_AND_MERID3D
 !*       0.     DECLARATIONS
 !               ------------
 !
-use modd_field,          only: tfielddata
+use modd_field,          only: tfieldmetadata
 USE MODD_IO,             ONLY: TFILEDATA, NVERB_WARNING
 USE MODD_LUNIT_n,        ONLY: TLUOUT
 !
@@ -289,13 +289,13 @@ IMPLICIT NONE
 !
 !*      0.1    declarations of arguments
 !
-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
-TYPE(TFILEDATA),               OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
-TYPE(TFIELDDATA),DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
+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
+TYPE(TFILEDATA),                    OPTIONAL, INTENT(IN)  :: TPFILE   ! Output file
+TYPE(TFIELDMETADATA), DIMENSION(2), OPTIONAL, INTENT(IN)  :: TZFIELDS ! Fields characteristics
 !
 !*      0.2    declarations of local variables
 !
diff --git a/src/MNH/ver_thermo.f90 b/src/MNH/ver_thermo.f90
index d7462dd35207a773b4059a42187be5dbefcd877e..a4e8ee654b3f55e81978ab3442703e3816afd7ce 100644
--- a/src/MNH/ver_thermo.f90
+++ b/src/MNH/ver_thermo.f90
@@ -159,7 +159,7 @@ USE MODD_CONF
 USE MODD_CONF_n
 USE MODD_CST
 USE MODD_DYN_n
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_FIELD_n,        ONLY: XTHT,XRT,XPABST,XDRYMASST
 USE MODD_GRID_n
 USE MODD_IO,             ONLY: TFILEDATA,TFILE_DUMMY
@@ -227,7 +227,7 @@ INTEGER :: IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU     ! dimensions of the
 INTEGER :: IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2       ! West-east LB arrays
 INTEGER :: IISIZEYF,IJSIZEYF,IISIZEYFV,IJSIZEYFV     ! dimensions of the
 INTEGER :: IISIZEY4,IJSIZEY4,IISIZEY2,IJSIZEY2       ! North-south LB arrays
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 
 !-------------------------------------------------------------------------------
 !
@@ -295,7 +295,7 @@ DO JRR=1,SIZE(XRT,4)
 END DO
 !
 IF (NVERB>=10) THEN
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'THV',       &
     CSTDNAME   = '',          &
     CLONGNAME  = 'THV',       &
diff --git a/src/MNH/write_balloonn.f90 b/src/MNH/write_balloonn.f90
index cc6d8269c28c8eb58813c46fd0d321ddd02612ae..8d20985f5eb51776b70e49c86b16246b84c74366 100644
--- a/src/MNH/write_balloonn.f90
+++ b/src/MNH/write_balloonn.f90
@@ -96,7 +96,7 @@ CONTAINS
 !-------------------------------------------------------------------------------
 SUBROUTINE WRITE_LFI_BALLOON(TPFLYER)
 !
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 !
 TYPE(FLYER),        INTENT(IN)       :: TPFLYER
@@ -104,16 +104,16 @@ TYPE(FLYER),        INTENT(IN)       :: TPFLYER
 !
 !*       0.2   Declarations of local variables
 !
-REAL               :: ZLAT          ! latitude of the balloon
-REAL               :: ZLON          ! longitude of the balloon
-TYPE(TFIELDDATA)   :: TZFIELD
+REAL                 :: ZLAT          ! latitude of the balloon
+REAL                 :: ZLON          ! longitude of the balloon
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !
 CALL SM_LATLON(XLATORI,XLONORI,  &
      TPFLYER%X_CUR,TPFLYER%Y_CUR,ZLAT,ZLON)
 !
 !
-TZFIELD = TFIELDDATA(                      &
+TZFIELD = TFIELDMETADATA(                  &
   CMNHNAME   = TRIM(TPFLYER%TITLE)//'LAT', &
   CSTDNAME   = '',                         &
   CLONGNAME  = TRIM(TPFLYER%TITLE)//'LAT', &
@@ -126,7 +126,7 @@ TZFIELD = TFIELDDATA(                      &
   LTIMEDEP   = .TRUE.                      )
 CALL IO_Field_write(TPFILE,TZFIELD,ZLAT)
 !
-TZFIELD = TFIELDDATA(                      &
+TZFIELD = TFIELDMETADATA(                  &
   CMNHNAME   = TRIM(TPFLYER%TITLE)//'LON', &
   CSTDNAME   = '',                         &
   CLONGNAME  = TRIM(TPFLYER%TITLE)//'LON', &
@@ -139,7 +139,7 @@ TZFIELD = TFIELDDATA(                      &
   LTIMEDEP   = .TRUE.                      )
 CALL IO_Field_write(TPFILE,TZFIELD,ZLON)
 !
-TZFIELD = TFIELDDATA(                      &
+TZFIELD = TFIELDMETADATA(                  &
   CMNHNAME   = TRIM(TPFLYER%TITLE)//'ALT', &
   CSTDNAME   = '',                         &
   CLONGNAME  = TRIM(TPFLYER%TITLE)//'ALT', &
@@ -152,7 +152,7 @@ TZFIELD = TFIELDDATA(                      &
   LTIMEDEP   = .TRUE.                      )
 CALL IO_Field_write(TPFILE,TZFIELD,TPFLYER%Z_CUR)
 !
-TZFIELD = TFIELDDATA(                          &
+TZFIELD = TFIELDMETADATA(                      &
   CMNHNAME   = TRIM(TPFLYER%TITLE)//'WASCENT', &
   CSTDNAME   = '',                             &
   CLONGNAME  = TRIM(TPFLYER%TITLE)//'WASCENT', &
@@ -165,7 +165,7 @@ TZFIELD = TFIELDDATA(                          &
   LTIMEDEP   = .TRUE.                          )
 CALL IO_Field_write(TPFILE,TZFIELD,TPFLYER%WASCENT)
 !
-TZFIELD = TFIELDDATA(                      &
+TZFIELD = TFIELDMETADATA(                  &
   CMNHNAME   = TRIM(TPFLYER%TITLE)//'RHO', &
   CSTDNAME   = '',                         &
   CLONGNAME  = TRIM(TPFLYER%TITLE)//'RHO', &
diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90
index 9f82ff30cfcaa284da84f66a215591b441fa62d6..3f09ddc78e4b62d152446330041552e6e94e8ac8 100644
--- a/src/MNH/write_budget.f90
+++ b/src/MNH/write_budget.f90
@@ -105,7 +105,7 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv )
                                  tbudgets, tburhodj
   use modd_field,          only: NMNHDIM_ONE, NMNHDIM_NI, NMNHDIM_NJ,                              &
                                  NMNHDIM_BUDGET_TIME, NMNHDIM_BUDGET_MASK_NBUMASK, NMNHDIM_UNUSED, &
-                                 tfielddata, TYPEINT, TYPEREAL
+                                 tfieldmetadata, TYPEINT, TYPEREAL
   use modd_io,             only: tfiledata
   use modd_lunit_n,        only: tluout
   use modd_parameters,     only: NCOMMENTLGTMAX, NMNHNAMELGTMAX
@@ -135,8 +135,8 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv )
   real,            dimension(:),           allocatable :: zworktemp
   real,            dimension(:,:,:,:,:,:), allocatable :: zrhodjn, zworkmask
   type(date_time), dimension(:),           allocatable :: tzdates
-  type(tfielddata) :: tzfield
-  type(tfiledata)  :: tzfile
+  type(tfieldmetadata) :: tzfield
+  type(tfiledata)      :: tzfile
   !
   !-------------------------------------------------------------------------------
   !
@@ -147,7 +147,7 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv )
   !* Write TSTEP and BULEN
   !  ---------------------
   !
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'TSTEP',     &
     CSTDNAME   = '',          &
     CLONGNAME  = 'TSTEP',     &
@@ -160,7 +160,7 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv )
     LTIMEDEP   = .FALSE.      )
   CALL IO_Field_write(TPDIAFILE,TZFIELD,PTSTEP)
   !
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'BULEN',     &
     CSTDNAME   = '',          &
     CLONGNAME  = 'BULEN',     &
@@ -251,7 +251,7 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv )
 
         Write( ymnhname, fmt = "( 'MASK_', i4.4, '.MASK' )" ) nbutshift
         Write( ycomment, fmt = "( 'X_Y_MASK', i4.4 )" ) nbutshift
-        tzfield = tfielddata(             &
+        tzfield = tfieldmetadata(         &
           cmnhname   = Trim( ymnhname ),  &
           cstdname   = '',                &
           clongname  = Trim( ymnhname ),  &
@@ -276,7 +276,7 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv )
         tzfile = tpdiafile
         tzfile%cformat = 'NETCDF4'
 
-        tzfield = tfielddata(                    &
+        tzfield = tfieldmetadata(                &
           cmnhname   = CMASK_VARNAME,            &
           cstdname   = '',                       &
           clongname  = CMASK_VARNAME,            &
diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90
index 9265bd855dbac115e3b46c3162184b40b70fa5ba..95503006843f0eb9a8b142132c1ca4e2215040ae 100644
--- a/src/MNH/write_diachro.f90
+++ b/src/MNH/write_diachro.f90
@@ -146,7 +146,7 @@ use modd_budget,         only: NLVL_CATEGORY, NLVL_GROUP, NLVL_SHAPE, nbumask, n
 use modd_field,          only: NMNHDIM_ONE, NMNHDIM_UNKNOWN, NMNHDIM_BUDGET_LES_MASK, &
                                NMNHDIM_FLYER_TIME, NMNHDIM_NOTLISTED, NMNHDIM_UNUSED, &
                                TYPECHAR, TYPEINT, TYPEREAL,                           &
-                               tfieldmetadata_base, tfielddata
+                               tfieldmetadata_base, tfieldmetadata
 use modd_io,             only: tfiledata
 use modd_les,            only: nles_current_iinf, nles_current_isup, nles_current_jinf, nles_current_jsup, &
                                nles_k, xles_current_z
@@ -196,7 +196,7 @@ logical   :: gdistributed
 real, dimension(:,:), allocatable :: ztimes
 real, dimension(:,:), allocatable :: zdatime
 real, dimension(:,:,:), allocatable :: ztrajz
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 type(tfiledata)  :: tzfile
 
 call Print_msg( NVERB_DEBUG, 'BUD', 'Write_diachro_lfi', 'called' )
@@ -408,7 +408,7 @@ ILENCOMMENT = LFICOMMENTLGT
 !
 ! 1er enregistrement TYPE
 !
-TZFIELD = TFIELDDATA(                 &
+TZFIELD = TFIELDMETADATA(             &
   CMNHNAME   = TRIM(ygroup)//'.TYPE', &
   CSTDNAME   = '',                    &
   CLONGNAME  = TRIM(ygroup)//'.TYPE', &
@@ -423,7 +423,7 @@ CALL IO_Field_write(tzfile,TZFIELD,YTYPE)
 !
 ! 2eme  enregistrement DIMENSIONS des MATRICES et LONGUEUR des TABLEAUX de CARACTERES et FLAGS de COMPRESSION sur les DIFFERENTS AXES
 !
-TZFIELD = TFIELDDATA(                &
+TZFIELD = TFIELDMETADATA(            &
   CMNHNAME   = TRIM(ygroup)//'.DIM', &
   CSTDNAME   = '',                   &
   CLONGNAME  = TRIM(ygroup)//'.DIM', &
@@ -490,7 +490,7 @@ END SELECT
 !
 ! 3eme enregistrement TITRE
 !
-TZFIELD = TFIELDDATA(                  &
+TZFIELD = TFIELDMETADATA(              &
   CMNHNAME   = TRIM(ygroup)//'.TITRE', &
   CSTDNAME   = '',                     &
   CLONGNAME  = TRIM(ygroup)//'.TITRE', &
@@ -508,7 +508,7 @@ deallocate( ytitles )
 !
 ! 4eme enregistrement UNITE
 !
-TZFIELD = TFIELDDATA(                  &
+TZFIELD = TFIELDMETADATA(              &
   CMNHNAME   = TRIM(ygroup)//'.UNITE', &
   CSTDNAME   = '',                     &
   CLONGNAME  = TRIM(ygroup)//'.UNITE', &
@@ -526,7 +526,7 @@ deallocate( yunits )
 !
 ! 5eme enregistrement COMMENT
 !
-TZFIELD = TFIELDDATA(                    &
+TZFIELD = TFIELDMETADATA(                &
   CMNHNAME   = TRIM(ygroup)//'.COMMENT', &
   CSTDNAME   = '',                       &
   CLONGNAME  = TRIM(ygroup)//'.COMMENT', &
@@ -569,7 +569,7 @@ DO J = 1,IP
           WRITE(YJ,'(I3)')J
   ENDIF
   IF ( gdistributed ) THEN
-    TZFIELD = TFIELDDATA(                     &
+    TZFIELD = TFIELDMETADATA(                 &
       CMNHNAME   = TRIM(ygroup)//'.PROC'//YJ, &
       CSTDNAME   = '',                        &
       CLONGNAME  = TRIM(ygroup)//'.PROC'//YJ, &
@@ -584,7 +584,7 @@ DO J = 1,IP
     CALL IO_Field_write_BOX(tzfile,TZFIELD,'BUDGET',PVAR(:,:,:,:,:,J), &
                             iil+JPHEXT,iih+JPHEXT,ijl+JPHEXT,ijh+JPHEXT)
   ELSE
-    TZFIELD = TFIELDDATA(                     &
+    TZFIELD = TFIELDMETADATA(                 &
       CMNHNAME   = TRIM(ygroup)//'.PROC'//YJ, &
       CSTDNAME   = '',                        &
       CLONGNAME  = TRIM(ygroup)//'.PROC'//YJ, &
@@ -603,7 +603,7 @@ ENDDO
 !
 ! 7eme enregistrement TRAJT
 !
-TZFIELD = TFIELDDATA(                  &
+TZFIELD = TFIELDMETADATA(              &
   CMNHNAME   = TRIM(ygroup)//'.TRAJT', &
   CSTDNAME   = '',                     &
   CLONGNAME  = TRIM(ygroup)//'.TRAJT', &
@@ -643,7 +643,7 @@ deallocate( ztimes )
 ! 8eme enregistrement TRAJX
 !
 IF(PRESENT(tpflyer))THEN
-  TZFIELD = TFIELDDATA(                  &
+  TZFIELD = TFIELDMETADATA(              &
     CMNHNAME   = TRIM(ygroup)//'.TRAJX', &
     CSTDNAME   = '',                     &
     CLONGNAME  = TRIM(ygroup)//'.TRAJX', &
@@ -656,7 +656,7 @@ IF(PRESENT(tpflyer))THEN
     LTIMEDEP   = .FALSE.                 )
   CALL IO_Field_write(tzfile,TZFIELD, Reshape( tpflyer%x, [1, Size( tpflyer%x), 1] ) )
 ELSE IF ( ycategory == 'LES_budgets' .and.  tpbudiachro%clevels(NLVL_SHAPE) == 'Cartesian' ) THEN
-  TZFIELD = TFIELDDATA(                  &
+  TZFIELD = TFIELDMETADATA(              &
     CMNHNAME   = TRIM(ygroup)//'.TRAJX', &
     CSTDNAME   = '',                     &
     CLONGNAME  = TRIM(ygroup)//'.TRAJX', &
@@ -676,7 +676,7 @@ ENDIF
 ! 9eme enregistrement TRAJY
 !
 IF(PRESENT(tpflyer))THEN
-  TZFIELD = TFIELDDATA(                  &
+  TZFIELD = TFIELDMETADATA(              &
     CMNHNAME   = TRIM(ygroup)//'.TRAJY', &
     CSTDNAME   = '',                     &
     CLONGNAME  = TRIM(ygroup)//'.TRAJY', &
@@ -689,7 +689,7 @@ IF(PRESENT(tpflyer))THEN
     LTIMEDEP   = .FALSE.                 )
   CALL IO_Field_write(tzfile,TZFIELD, Reshape( tpflyer%y, [1, Size( tpflyer%y), 1] ) )
 ELSE IF ( ycategory == 'LES_budgets' .and.  tpbudiachro%clevels(NLVL_SHAPE) == 'Cartesian' ) THEN
-  TZFIELD = TFIELDDATA(                  &
+  TZFIELD = TFIELDMETADATA(              &
     CMNHNAME   = TRIM(ygroup)//'.TRAJY', &
     CSTDNAME   = '',                     &
     CLONGNAME  = TRIM(ygroup)//'.TRAJY', &
@@ -709,7 +709,7 @@ ENDIF
 ! 10eme enregistrement TRAJZ
 !
 IF(PRESENT(tpflyer))THEN
-  TZFIELD = TFIELDDATA(                  &
+  TZFIELD = TFIELDMETADATA(              &
     CMNHNAME   = TRIM(ygroup)//'.TRAJZ', &
     CSTDNAME   = '',                     &
     CLONGNAME  = TRIM(ygroup)//'.TRAJZ', &
@@ -722,7 +722,7 @@ IF(PRESENT(tpflyer))THEN
     LTIMEDEP   = .FALSE.                 )
   CALL IO_Field_write(tzfile,TZFIELD, Reshape( tpflyer%z, [1, Size( tpflyer%z), 1] ) )
 ELSE IF ( ycategory == 'LES_budgets' .and.  tpbudiachro%clevels(NLVL_SHAPE) == 'Cartesian' ) THEN
-  TZFIELD = TFIELDDATA(                  &
+  TZFIELD = TFIELDMETADATA(              &
     CMNHNAME   = TRIM(ygroup)//'.TRAJZ', &
     CSTDNAME   = '',                     &
     CLONGNAME  = TRIM(ygroup)//'.TRAJZ', &
@@ -744,7 +744,7 @@ ENDIF
 !
 ! 11eme enregistrement PDATIME
 !
-TZFIELD = TFIELDDATA(                  &
+TZFIELD = TFIELDMETADATA(              &
   CMNHNAME   = TRIM(ygroup)//'.DATIM', &
   CSTDNAME   = '',                     &
   CLONGNAME  = TRIM(ygroup)//'.DATIM', &
@@ -834,7 +834,7 @@ integer(kind=CDFINT), dimension(0:NMAXLEVELS) :: ilevelids ! ids of the differen
 logical                                       :: gdistributed
 logical                                       :: gsplit
 logical,              dimension(0:NMAXLEVELS) :: gleveldefined ! Are the different groups/levels already defined in the netCDF file
-type(tfielddata)                              :: tzfield
+type(tfieldmetadata)                          :: tzfield
 type(tfiledata)                               :: tzfile
 
 call Print_msg( NVERB_DEBUG, 'BUD', 'Write_diachro_nc4', 'called' )
@@ -1495,7 +1495,7 @@ if ( Present( tpflyer ) ) then
     ystdnameprefix = 'projection'
   endif
 
-  tzfield = tfielddata(                                     &
+  tzfield = tfieldmetadata(                                 &
     cmnhname   = 'X',                                       &
     cstdname   = Trim( ystdnameprefix ) // '_x_coordinate', &
     clongname  = 'x-position of the flyer',                 &
@@ -1523,7 +1523,7 @@ end  subroutine Write_diachro_nc4
 subroutine Diachro_one_field_write_nc4( tpfile, tpbudiachro, tpfield, pvar, kdims, osplit, odistributed, &
                                         kil, kih, kjl, kjh, kkl, kkh )
 use modd_budget,      only: NLVL_CATEGORY, NLVL_GROUP, NLVL_SHAPE, nbutshift, nbusubwrite, tbudiachrometadata
-use modd_field,       only: tfielddata, tfieldmetadata_base
+use modd_field,       only: tfieldmetadata, tfieldmetadata_base
 use modd_io,          only: isp, tfiledata
 use modd_parameters,  only: jphext
 
@@ -1552,7 +1552,7 @@ real,             dimension(:,:),              allocatable :: zdata2d
 real,             dimension(:,:,:),            allocatable :: zdata3d
 real,             dimension(:,:,:,:),          allocatable :: zdata4d
 real,             dimension(:,:,:,:,:),        allocatable :: zdata5d
-type(tfielddata)                                           :: tzfield
+type(tfieldmetadata)                                       :: tzfield
 
 idims = Size( kdims )
 
@@ -1770,10 +1770,10 @@ end subroutine Diachro_one_field_write_nc4
 
 
 subroutine Prepare_diachro_write( tpfieldin, tpfieldout, kdims, osplit, odistributed, kbutimepos )
-use modd_field, only: NMNHDIM_BUDGET_TIME, NMNHDIM_UNUSED, NMNHMAXDIMS, tfielddata, tfieldmetadata_base
+use modd_field, only: NMNHDIM_BUDGET_TIME, NMNHDIM_UNUSED, NMNHMAXDIMS, tfieldmetadata, tfieldmetadata_base
 
 class(tfieldmetadata_base), intent(in)  :: tpfieldin
-type(tfielddata),           intent(out) :: tpfieldout
+type(tfieldmetadata),       intent(out) :: tpfieldout
 integer, dimension(:),      intent(in)  :: kdims ! List of indices of dimensions to use
 logical,                    intent(in)  :: osplit
 logical,                    intent(in)  :: odistributed ! .true. if data is distributed among all the processes
diff --git a/src/MNH/write_dummy_gr_fieldn.f90 b/src/MNH/write_dummy_gr_fieldn.f90
index 6b9aa7949011367de58b2566a31baa7c53866606..c3e6096e080d00f316bfea2feaa87ea904664598 100644
--- a/src/MNH/write_dummy_gr_fieldn.f90
+++ b/src/MNH/write_dummy_gr_fieldn.f90
@@ -63,7 +63,7 @@ END MODULE MODI_WRITE_DUMMY_GR_FIELD_n
 !
 USE MODD_DUMMY_GR_FIELD_n, ONLY: NDUMMY_GR_NBR, CDUMMY_GR_NAME,    &
                                  CDUMMY_GR_AREA, XDUMMY_GR_FIELDS
-use modd_field,            only: tfielddata, TYPEINT, TYPEREAL
+use modd_field,            only: tfieldmetadata, TYPEINT, TYPEREAL
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_PARAMETERS,       ONLY: NMNHNAMELGTMAX
 !
@@ -87,7 +87,7 @@ CHARACTER(LEN=3)              :: YSTRING03
 !
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZWORK2D
 !
-TYPE(TFIELDDATA)  :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -104,7 +104,7 @@ ALLOCATE(ZWORK2D(SIZE(XDUMMY_GR_FIELDS,1),SIZE(XDUMMY_GR_FIELDS,2)))
 !*       3.     Dummy fields :
 !               ------------
 !
-TZFIELD = TFIELDDATA(                                       &
+TZFIELD = TFIELDMETADATA(                                   &
   CMNHNAME   = 'DUMMY_GR_NBR',                              &
   CSTDNAME   = '',                                          &
   CLONGNAME  = 'DUMMY_GR_NBR',                              &
@@ -122,7 +122,7 @@ DO JDUMMY=1,NDUMMY_GR_NBR
   YSTRING20=CDUMMY_GR_NAME(JDUMMY)
   YSTRING03=CDUMMY_GR_AREA(JDUMMY)
   !
-  TZFIELD = TFIELDDATA(                                &
+  TZFIELD = TFIELDMETADATA(                            &
     CMNHNAME   = TRIM(YRECFM),                         &
     CSTDNAME   = '',                                   &
     CLONGNAME  = TRIM(YRECFM),                         &
diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90
index f3614c14a1f560b534970b1e1b820311d3169838..001d85f1d874f645bc10f208aed0dfd6fe6ed42c 100644
--- a/src/MNH/write_lbn.f90
+++ b/src/MNH/write_lbn.f90
@@ -121,7 +121,7 @@ USE MODI_DUSTLFI_n
 USE MODI_SALTLFI_n
 USE MODD_PARAMETERS,      ONLY: JPHEXT
 USE MODD_IO, ONLY: TFILEDATA
-use modd_field, only: tfielddata, TYPELOG, TYPEREAL
+use modd_field, only: tfieldmetadata, TYPELOG, TYPEREAL
 !
 !
 IMPLICIT NONE
@@ -152,8 +152,8 @@ INTEGER           :: IIB, IIE, IJB, IJE, IKB, IKE
 INTEGER           :: IIU, IJU, IKU
 REAL, DIMENSION(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)) :: ZLBXZZ
 REAL, DIMENSION(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3)) :: ZLBYZZ
-CHARACTER(LEN=100) :: YMSG
-TYPE(TFIELDDATA)   :: TZFIELD
+CHARACTER(LEN=100)   :: YMSG
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       1.    SOME INITIALIZATIONS
@@ -213,7 +213,7 @@ IF (NRR >=1) THEN
                LHORELAX_RI .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. &
                LHORELAX_RH
   !
-  TZFIELD = TFIELDDATA(                                          &
+  TZFIELD = TFIELDMETADATA(                                      &
     CMNHNAME   = 'HORELAX_R',                                    &
     CSTDNAME   = '',                                             &
     CLONGNAME  = 'HORELAX_R',                                    &
@@ -269,7 +269,7 @@ END IF
 IF (NSV >=1) THEN
   GHORELAX_SV=ANY ( LHORELAX_SV )
 !
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'HORELAX_SV', &
     CSTDNAME   = '',           &
     CLONGNAME  = 'HORELAX_SV', &
diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90
index 6f4d6d5c4beb33c4453189186badcd5fecaede2b..e94351e1e9c7117b0c95218d7b1d9d30b6964b8f 100644
--- a/src/MNH/write_lfifm1_for_diag.f90
+++ b/src/MNH/write_lfifm1_for_diag.f90
@@ -156,7 +156,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG
 USE MODD_DIM_n
 USE MODD_CONF
 USE MODD_CONF_n
-use modd_field,           only: tfielddata, tfieldlist, TYPEINT, TYPEREAL
+use modd_field,           only: tfieldmetadata, tfieldlist, TYPEINT, TYPEREAL
 USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_IO, ONLY : TFILEDATA
@@ -343,8 +343,8 @@ INTEGER :: ILUOUT0 ! Logical unit number for output-listing
 CHARACTER(LEN=2)  :: INDICE
 CHARACTER(LEN=100) :: YMSG
 INTEGER           :: IID
-TYPE(TFIELDDATA)              :: TZFIELD
-TYPE(TFIELDDATA),DIMENSION(2) :: TZFIELD2
+TYPE(TFIELDMETADATA)               :: TZFIELD
+TYPE(TFIELDMETADATA), DIMENSION(2) :: TZFIELD2
 !
 ! LIMA LIDAR
 REAL,DIMENSION(:,:,:,:), ALLOCATABLE :: ZTMP1, ZTMP2, ZTMP3, ZTMP4
@@ -511,7 +511,7 @@ ZPOVO(:,:,:)= ZPOVO(:,:,:)*1E6/XRHODREF(:,:,:)
 ZPOVO(:,:,1)  =-1.E+11
 ZPOVO(:,:,IKU)=-1.E+11
 IF (INDEX(CISO,'EV') /= 0) THEN
-  TZFIELD = TFIELDDATA(                       &
+  TZFIELD = TFIELDMETADATA(                   &
     CMNHNAME   = 'POVOT',                     &
     CSTDNAME   = '',                          &
     CLONGNAME  = 'POVOT',                     &
@@ -531,7 +531,7 @@ IF (LVAR_RS) THEN
   CALL IO_Field_write(TPFILE,'VT',XVT)
   !
   IF (LWIND_ZM) THEN
-    TZFIELD2(1) = TFIELDDATA(                            &
+    TZFIELD2(1) = TFIELDMETADATA(                        &
       CMNHNAME   = 'UM_ZM',                              &
       CSTDNAME   = '',                                   &
       CLONGNAME  = 'UM_ZM',                              &
@@ -543,7 +543,7 @@ IF (LVAR_RS) THEN
       NDIMS      = 3,                                    &
       LTIMEDEP   = .TRUE.                                )
     !
-    TZFIELD2(2) = TFIELDDATA(                               &
+    TZFIELD2(2) = TFIELDMETADATA(                           &
       CMNHNAME   = 'VM_ZM',                                 &
       CSTDNAME   = '',                                      &
       CLONGNAME  = 'VM_ZM',                                 &
@@ -603,7 +603,7 @@ IF (LVAR_PR .AND. LUSERR .AND. SIZE(XINPRR)>0 ) THEN
   ! explicit species
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CUNITS = 'mm hour-1'
   CALL IO_Field_write(TPFILE,TZFIELD,XINPRR*3.6E6)
   !
@@ -611,7 +611,7 @@ IF (LVAR_PR .AND. LUSERR .AND. SIZE(XINPRR)>0 ) THEN
   CALL IO_Field_write(TPFILE,'EVAP3D', XEVAP3D)
   !
   CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CUNITS = 'mm'
   CALL IO_Field_write(TPFILE,TZFIELD,XACPRR*1.0E3)
   !
@@ -619,56 +619,56 @@ IF (LVAR_PR .AND. LUSERR .AND. SIZE(XINPRR)>0 ) THEN
       CCLOUD == 'KHKO' .OR. CCLOUD == 'LIMA') THEN 
     IF (SIZE(XINPRC) /= 0 ) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('INPRC',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CUNITS = 'mm hour-1'
       CALL IO_Field_write(TPFILE,TZFIELD,XINPRC*3.6E6)
       !
       CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRC',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CUNITS = 'mm'
       CALL IO_Field_write(TPFILE,TZFIELD,XACPRC*1.0E3)
     END IF 
     IF (SIZE(XINDEP) /= 0 ) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('INDEP',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CUNITS = 'mm hour-1'
       CALL IO_Field_write(TPFILE,TZFIELD,XINDEP*3.6E6)
       !
       CALL FIND_FIELD_ID_FROM_MNHNAME('ACDEP',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CUNITS = 'mm'
       CALL IO_Field_write(TPFILE,TZFIELD,XACDEP*1.0E3)
     END IF 
   END IF 
   IF (CCLOUD(1:3) == 'ICE' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'LIMA') THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRS',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XINPRS*3.6E6)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRS',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,XACPRS*1.0E3)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRG',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XINPRG*3.6E6)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRG',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,XACPRG*1.0E3)
   !
     IF (SIZE(XINPRH) /= 0 ) THEN
       CALL FIND_FIELD_ID_FROM_MNHNAME('INPRH',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CUNITS = 'mm hour-1'
       CALL IO_Field_write(TPFILE,TZFIELD,XINPRH*3.6E6)
       !
       CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRH',IID,IRESP)
-      TZFIELD = TFIELDLIST(IID)
+      TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
       TZFIELD%CUNITS = 'mm'
       CALL IO_Field_write(TPFILE,TZFIELD,XACPRH*1.0E3)
     ENDIF
@@ -679,7 +679,7 @@ IF (LVAR_PR .AND. LUSERR .AND. SIZE(XINPRR)>0 ) THEN
     IF (SIZE(XINPRH) /= 0 ) &       
       ZWORK21(:,:) = ZWORK21(:,:) + XINPRH(:,:)
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRT',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK21*3.6E6)
   !
@@ -690,7 +690,7 @@ IF (LVAR_PR .AND. LUSERR .AND. SIZE(XINPRR)>0 ) THEN
       ZWORK21(:,:) = ZWORK21(:,:) + XACPRH(:,:)
   !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRT',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK21*1.0E3)
   !
@@ -700,17 +700,17 @@ IF (LVAR_PR .AND. LUSERR .AND. SIZE(XINPRR)>0 ) THEN
   !
   IF (CDCONV /= 'NONE') THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XPRCONV*3.6E6)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,XPACCONV*1.0E3)
     !
     CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XPRSCONV*3.6E6)
   END IF
@@ -740,7 +740,7 @@ IF (LVAR_PR ) THEN
     ZWORK23(:,:) = 0.
   END DO
   !* Precipitable water in kg/m**2
-  TZFIELD = TFIELDDATA(              &
+  TZFIELD = TFIELDMETADATA(          &
     CMNHNAME   = 'PRECIP_WAT', &
     CSTDNAME   = '',           &
     CLONGNAME  = 'PRECIP_WAT', &
@@ -820,7 +820,7 @@ IF (LHU_FLX) THEN
   ENDIF
   ! Ecriture
   !  composantes U et V du flux surfacique d'humidité  
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'UM90',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'UM90',       &
@@ -833,7 +833,7 @@ IF (LHU_FLX) THEN
     LTIMEDEP   = .TRUE.        )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK31)
   !  
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'VM90',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'VM90',       &
@@ -846,7 +846,7 @@ IF (LHU_FLX) THEN
     LTIMEDEP   = .TRUE.        )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK32)
   !  composantes U et V du flux d'humidité intégré sur 3000 metres
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'UM91',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'UM91',       &
@@ -859,7 +859,7 @@ IF (LHU_FLX) THEN
     LTIMEDEP   = .TRUE.        )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK21)
   !
-  TZFIELD = TFIELDDATA(        &
+  TZFIELD = TFIELDMETADATA(    &
     CMNHNAME   = 'VM91',       &
     CSTDNAME   = '',           &
     CLONGNAME  = 'VM91',       &
@@ -873,7 +873,7 @@ IF (LHU_FLX) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK22)
   !
   !   Convergence d'humidité
-  TZFIELD = TFIELDDATA(                                         &
+  TZFIELD = TFIELDMETADATA(                                     &
     CMNHNAME   = 'HMCONV',                                      &
     CSTDNAME   = '',                                            &
     CLONGNAME  = 'HMCONV',                                      &
@@ -887,7 +887,7 @@ IF (LHU_FLX) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,-ZWORK35)
   !
   !   Convergence d'humidité intégré sur 3000 mètres
-  TZFIELD = TFIELDDATA(                                         &
+  TZFIELD = TFIELDMETADATA(                                     &
     CMNHNAME   = 'HMCONV3000',                                  &
     CSTDNAME   = '',                                            &
     CLONGNAME  = 'HMCONV3000',                                  &
@@ -902,7 +902,7 @@ IF (LHU_FLX) THEN
   !
   IF  (CCLOUD(1:3) == 'ICE' .OR. CCLOUD == 'LIMA') THEN
     !  composantes U et V du flux surfacique d'hydrométéores  
-    TZFIELD = TFIELDDATA(        &
+    TZFIELD = TFIELDMETADATA(    &
       CMNHNAME   = 'UM92',       &
       CSTDNAME   = '',           &
       CLONGNAME  = 'UM92',       &
@@ -915,7 +915,7 @@ IF (LHU_FLX) THEN
       LTIMEDEP   = .TRUE.        )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK33)
     ! 
-    TZFIELD = TFIELDDATA(        &
+    TZFIELD = TFIELDMETADATA(    &
       CMNHNAME   = 'VM92',       &
       CSTDNAME   = '',           &
       CLONGNAME  = 'VM92',       &
@@ -928,7 +928,7 @@ IF (LHU_FLX) THEN
       LTIMEDEP   = .TRUE.        )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK34)
     !  composantes U et V du flux d'hydrométéores intégré sur 3000 metres
-    TZFIELD = TFIELDDATA(        &
+    TZFIELD = TFIELDMETADATA(    &
       CMNHNAME   = 'UM93',       &
       CSTDNAME   = '',           &
       CLONGNAME  = 'UM93',       &
@@ -941,7 +941,7 @@ IF (LHU_FLX) THEN
       LTIMEDEP   = .TRUE.        )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK23)
     ! 
-    TZFIELD = TFIELDDATA(        &
+    TZFIELD = TFIELDMETADATA(    &
       CMNHNAME   = 'VM93',       &
       CSTDNAME   = '',           &
       CLONGNAME  = 'VM93',       &
@@ -954,7 +954,7 @@ IF (LHU_FLX) THEN
       LTIMEDEP   = .TRUE.        )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK24)
     !   Convergence d'hydrométéores
-    TZFIELD = TFIELDDATA(                                            &
+    TZFIELD = TFIELDMETADATA(                                        &
       CMNHNAME   = 'HMCONV_TT',                                      &
       CSTDNAME   = '',                                               &
       CLONGNAME  = 'HMCONV_TT',                                      &
@@ -967,7 +967,7 @@ IF (LHU_FLX) THEN
       LTIMEDEP   = .TRUE.                                            )
     CALL IO_Field_write(TPFILE,TZFIELD,-ZWORK36)
     !   Convergence d'hydrométéores intégré sur 3000 mètres
-    TZFIELD = TFIELDDATA(                                            &
+    TZFIELD = TFIELDMETADATA(                                        &
       CMNHNAME   = 'HMCONV3000_TT',                                  &
       CSTDNAME   = '',                                               &
       CLONGNAME  = 'HMCONV3000_TT',                                  &
@@ -987,7 +987,7 @@ ENDIF
 IF (LVAR_MRW .OR. LLIMA_DIAG) THEN
   IF (NRR >=1) THEN
     ! Moist variables are written individually in file
-    TZFIELD = TFIELDDATA(                         &
+    TZFIELD = TFIELDMETADATA(                     &
       CMNHNAME   = 'generic for moist variables', & !Temporary name to ease identification
       CSTDNAME   = '',                            &
       CDIR       = 'XY',                          &
@@ -1068,7 +1068,7 @@ END IF
 ! User scalar variables
 ! individually in the file
 IF (LVAR_MRSV) THEN
-  TZFIELD = TFIELDDATA(                          &
+  TZFIELD = TFIELDMETADATA(                      &
     CMNHNAME   = 'generic for scalar variables', & !Temporary name to ease identification
     CSTDNAME   = '',                             &
     CUNITS     = 'g kg-1',                       &
@@ -1203,7 +1203,7 @@ IF (LLIMA_DIAG) THEN
   END DO
 !
   IF (LUSERC) THEN
-    TZFIELD = TFIELDDATA(        &
+    TZFIELD = TFIELDMETADATA(    &
       CMNHNAME   = 'LWC',        &
       CSTDNAME   = '',           &
       CLONGNAME  = 'LWC',        &
@@ -1219,7 +1219,7 @@ IF (LLIMA_DIAG) THEN
   END IF
 !
   IF (LUSERI) THEN
-    TZFIELD = TFIELDDATA(       &
+    TZFIELD = TFIELDMETADATA(   &
       CMNHNAME   = 'IWC',       &
       CSTDNAME   = '',          &
       CLONGNAME  = 'IWC',       &
@@ -1346,7 +1346,7 @@ END IF
 !  Blowing snow variables
 !
 IF(LBLOWSNOW) THEN
-  TZFIELD = TFIELDDATA(                                                 &
+  TZFIELD = TFIELDMETADATA(                                             &
     CMNHNAME   = 'SNWSUBL3D',                                           &
     CSTDNAME   = '',                                                    &
     CLONGNAME  = 'SNWSUBL3D',                                           &
@@ -1366,7 +1366,7 @@ IF(LBLOWSNOW) THEN
   END DO
   ZWORK21(:,:) = ZWORK21(:,:)*1000. ! vapor water in mm unit
   !
-  TZFIELD = TFIELDDATA(                                     &
+  TZFIELD = TFIELDMETADATA(                                 &
     CMNHNAME   = 'COL_SNWSUBL',                             &
     CSTDNAME   = '',                                        &
     CLONGNAME  = 'COL_SNWSUBL',                             &
@@ -1389,7 +1389,7 @@ IF(LBLOWSNOW) THEN
   CALL PPP2SNOW(XSVT(:,:,:,NSV_SNWBEG:NSV_SNWEND),XRHODREF,&
                PBET3D=ZBET_SNW, PRG3D=ZRG_SNW, PM3D=ZMA_SNW)
   !
-  TZFIELD = TFIELDDATA(            &
+  TZFIELD = TFIELDMETADATA(        &
     CMNHNAME   = 'SNWRGA',         &
     CSTDNAME   = '',               &
     CLONGNAME  = 'SNWRGA',         &
@@ -1402,7 +1402,7 @@ IF(LBLOWSNOW) THEN
     LTIMEDEP   = .TRUE.            )
   CALL IO_Field_write(TPFILE,TZFIELD,ZRG_SNW(:,:,:))
   !
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'SNWBETA',   &
     CSTDNAME   = '',          &
     CLONGNAME  = 'SNWBETA',   &
@@ -1415,7 +1415,7 @@ IF(LBLOWSNOW) THEN
     LTIMEDEP   = .TRUE.       )
   CALL IO_Field_write(TPFILE,TZFIELD,ZBET_SNW(:,:,:))
   !
-  TZFIELD = TFIELDDATA(                  &
+  TZFIELD = TFIELDMETADATA(              &
     CMNHNAME   = 'SNWNOA',               &
     CSTDNAME   = '',                     &
     CLONGNAME  = 'SNWNOA',               &
@@ -1428,7 +1428,7 @@ IF(LBLOWSNOW) THEN
     LTIMEDEP   = .TRUE.                  )
   CALL IO_Field_write(TPFILE,TZFIELD,ZMA_SNW(:,:,:,1))
   !
-  TZFIELD = TFIELDDATA(            &
+  TZFIELD = TFIELDMETADATA(        &
     CMNHNAME   = 'SNWMASS',        &
     CSTDNAME   = '',               &
     CLONGNAME  = 'SNWMASS',        &
@@ -1447,7 +1447,7 @@ IF(LBLOWSNOW) THEN
                    (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW
   END DO
   ZWORK21(:,:) = ZWORK21(:,:)*1000. ! vapor water in mm unit
-  TZFIELD = TFIELDDATA(                                     &
+  TZFIELD = TFIELDMETADATA(                                 &
     CMNHNAME   = 'THDS',                                    &
     CSTDNAME   = '',                                        &
     CLONGNAME  = 'THDS',                                    &
@@ -2066,7 +2066,7 @@ IF (LVAR_LS) THEN
   CALL IO_Field_write(TPFILE,'LSVM', XLSVM)
   !
   IF (LWIND_ZM) THEN
-    TZFIELD2(1) = TFIELDDATA(                                        &
+    TZFIELD2(1) = TFIELDMETADATA(                                    &
       CMNHNAME   = 'LSUM_ZM',                                        &
       CSTDNAME   = '',                                               &
       CLONGNAME  = 'LSUM_ZM',                                        &
@@ -2078,7 +2078,7 @@ IF (LVAR_LS) THEN
       NDIMS      = 3,                                                &
       LTIMEDEP   = .TRUE.                                            )
     !
-    TZFIELD2(2) = TFIELDDATA(                                           &
+    TZFIELD2(2) = TFIELDMETADATA(                                       &
       CMNHNAME   = 'LSVM_ZM',                                           &
       CSTDNAME   = '',                                                  &
       CLONGNAME  = 'LSVM_ZM',                                           &
@@ -2098,7 +2098,7 @@ IF (LVAR_LS) THEN
 !
   IF (LUSERV) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('LSRVM',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'g kg-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XLSRVM(:,:,:)*1.E3)
   END IF
@@ -2111,7 +2111,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
   DO JT=1,NFRC
     WRITE (YFRC,'(I3.3)') JT
 !
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'UFRC'//YFRC,                                 &
       CSTDNAME   = '',                                           &
       CLONGNAME  = 'UFRC'//YFRC,                                 &
@@ -2124,7 +2124,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
       LTIMEDEP   = .FALSE.                                       )
     CALL IO_Field_write(TPFILE,TZFIELD,XUFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                           &
+    TZFIELD = TFIELDMETADATA(                                       &
       CMNHNAME   = 'VFRC'//YFRC,                                    &
       CSTDNAME   = '',                                              &
       CLONGNAME  = 'VFRC'//YFRC,                                    &
@@ -2137,7 +2137,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
       LTIMEDEP   = .FALSE.                                          )
     CALL IO_Field_write(TPFILE,TZFIELD,XVFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                   &
+    TZFIELD = TFIELDMETADATA(               &
       CMNHNAME   = 'WFRC'//YFRC,            &
       CSTDNAME   = '',                      &
       CLONGNAME  = 'WFRC'//YFRC,            &
@@ -2150,7 +2150,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
       LTIMEDEP   = .FALSE.                  )
     CALL IO_Field_write(TPFILE,TZFIELD,XWFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                           &
+    TZFIELD = TFIELDMETADATA(                       &
       CMNHNAME   = 'THFRC'//YFRC,                   &
       CSTDNAME   = '',                              &
       CLONGNAME  = 'THFRC'//YFRC,                   &
@@ -2163,7 +2163,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
       LTIMEDEP   = .FALSE.                          )
     CALL IO_Field_write(TPFILE,TZFIELD,XTHFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                        &
+    TZFIELD = TFIELDMETADATA(                    &
       CMNHNAME   = 'RVFRC'//YFRC,                &
       CSTDNAME   = '',                           &
       CLONGNAME  = 'RVFRC'//YFRC,                &
@@ -2176,7 +2176,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
       LTIMEDEP   = .FALSE.                       )
     CALL IO_Field_write(TPFILE,TZFIELD,XRVFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                                    &
+    TZFIELD = TFIELDMETADATA(                                                &
       CMNHNAME   = 'TENDTHFRC'//YFRC,                                        &
       CSTDNAME   = '',                                                       &
       CLONGNAME  = 'TENDTHFRC'//YFRC,                                        &
@@ -2189,7 +2189,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
       LTIMEDEP   = .FALSE.                                                   )
     CALL IO_Field_write(TPFILE,TZFIELD,XTENDTHFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                                 &
+    TZFIELD = TFIELDMETADATA(                                             &
       CMNHNAME   = 'TENDRVFRC'//YFRC,                                     &
       CSTDNAME   = '',                                                    &
       CLONGNAME  = 'TENDRVFRC'//YFRC,                                     &
@@ -2202,7 +2202,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
       LTIMEDEP   = .FALSE.                                                )
     CALL IO_Field_write(TPFILE,TZFIELD,XTENDRVFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                                    &
+    TZFIELD = TFIELDMETADATA(                                                &
       CMNHNAME   = 'GXTHFRC'//YFRC,                                          &
       CSTDNAME   = '',                                                       &
       CLONGNAME  = 'GXTHFRC'//YFRC,                                          &
@@ -2215,7 +2215,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
       LTIMEDEP   = .FALSE.                                                   )
     CALL IO_Field_write(TPFILE,TZFIELD,XGXTHFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                                    &
+    TZFIELD = TFIELDMETADATA(                                                &
       CMNHNAME   = 'GYTHFRC'//YFRC,                                          &
       CSTDNAME   = '',                                                       &
       CLONGNAME  = 'GYTHFRC'//YFRC,                                          &
@@ -2228,7 +2228,7 @@ IF (LVAR_FRC .AND. LFORCING) THEN
       LTIMEDEP   = .FALSE.                                                   )
     CALL IO_Field_write(TPFILE,TZFIELD,XGYTHFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                     &
+    TZFIELD = TFIELDMETADATA(                 &
       CMNHNAME   = 'PGROUNDFRC'//YFRC,        &
       CSTDNAME   = '',                        &
       CLONGNAME  = 'PGROUNDFRC'//YFRC,        &
@@ -2251,7 +2251,7 @@ END IF
 IF (LTPZH .OR. LCOREF) THEN
 !
 !* Temperature in celsius
-  TZFIELD = TFIELDDATA(               &
+  TZFIELD = TFIELDMETADATA(           &
     CMNHNAME   = 'TEMP',              &
     CSTDNAME   = 'air_temperature',   &
     CLONGNAME  = 'TEMP',              &
@@ -2267,7 +2267,7 @@ IF (LTPZH .OR. LCOREF) THEN
 !
 !* Pressure in hPa        
   CALL FIND_FIELD_ID_FROM_MNHNAME('PABST',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CMNHNAME = 'PRES'
   TZFIELD%CUNITS = 'hPa'
   CALL IO_Field_write(TPFILE,TZFIELD,XPABST(:,:,:)*1E-2)
@@ -2291,7 +2291,7 @@ IF (LTPZH .OR. LCOREF) THEN
       END WHERE
     END IF
     !
-    TZFIELD = TFIELDDATA(                     &
+    TZFIELD = TFIELDMETADATA(                 &
       CMNHNAME   = 'REHU',                    &
       CSTDNAME   = 'relative_humidity',       &
       CLONGNAME  = 'REHU',                    &
@@ -2304,7 +2304,7 @@ IF (LTPZH .OR. LCOREF) THEN
       LTIMEDEP   = .TRUE.                     )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK32)
     !
-    TZFIELD = TFIELDDATA(                                 &
+    TZFIELD = TFIELDMETADATA(                             &
       CMNHNAME   = 'VPRES',                               &
       CSTDNAME   = 'water_vapor_partial_pressure_in_air', &
       CLONGNAME  = 'VPRES',                               &
@@ -2322,7 +2322,7 @@ IF (LTPZH .OR. LCOREF) THEN
       ZWORK33(:,:,:)=(77.6*( XPABST(:,:,:)*1E-2                &
                             +ZWORK33(:,:,:)*4810/ZTEMP(:,:,:)) &
                       -6*ZWORK33(:,:,:)                        )/ZTEMP(:,:,:)
-      TZFIELD = TFIELDDATA(                                &
+      TZFIELD = TFIELDMETADATA(                            &
         CMNHNAME   = 'COREF',                              &
         CSTDNAME   = '',                                   &
         CLONGNAME  = 'COREF',                              &
@@ -2336,7 +2336,7 @@ IF (LTPZH .OR. LCOREF) THEN
       CALL IO_Field_write(TPFILE,TZFIELD,ZWORK33)
       !
       ZWORK33(:,:,:)=ZWORK33(:,:,:)+MZF(XZZ(:,:,:))*1E6/XRADIUS
-      TZFIELD = TFIELDDATA(                                         &
+      TZFIELD = TFIELDMETADATA(                                     &
         CMNHNAME   = 'MCOREF',                                      &
         CSTDNAME   = '',                                            &
         CLONGNAME  = 'MCOREF',                                      &
@@ -2378,7 +2378,7 @@ IF ( LMOIST_V .OR. LMSLP .OR. CBLTOP/='NONE' ) THEN
 !
   IF (LMOIST_V .AND. NRR > 0) THEN
 ! Virtual potential temperature
-    TZFIELD = TFIELDDATA(                                 &
+    TZFIELD = TFIELDMETADATA(                             &
       CMNHNAME   = 'THETAV',                              &
       CSTDNAME   = '',                                    &
       CLONGNAME  = 'THETAV',                              &
@@ -2412,7 +2412,7 @@ IF (LVISI) THEN
      ZVISIKUN(:,:,:) =0.027/(XRT(:,:,:,2)*XRHODREF(:,:,:))**0.88*1000.
     END WHERE
 ! Visibity Kunkel                     
-    TZFIELD = TFIELDDATA(                     &
+    TZFIELD = TFIELDMETADATA(                 &
       CMNHNAME   = 'VISIKUN',                 &
       CSTDNAME   = '',                        &
       CLONGNAME  = 'VISIKUN',                 &
@@ -2433,7 +2433,7 @@ IF (LVISI) THEN
        ZVISIZHA(:,:,:) =0.187/(XRT(:,:,:,2)*XRHODREF(:,:,:)*XSVT(:,:,:,NSV_C2R2BEG+1))**0.34*1000.
       END WHERE
 ! Visibity Gultepe                    
-      TZFIELD = TFIELDDATA(                      &
+      TZFIELD = TFIELDMETADATA(                  &
         CMNHNAME   = 'VISIGUL',                  &
         CSTDNAME   = '',                         &
         CLONGNAME  = 'VISIGUL',                  &
@@ -2446,7 +2446,7 @@ IF (LVISI) THEN
       LTIMEDEP   = .TRUE.                        )
       CALL IO_Field_write(TPFILE,TZFIELD,ZVISIGUL)
 ! Visibity Zhang                      
-      TZFIELD = TFIELDDATA(                    &
+      TZFIELD = TFIELDMETADATA(                &
         CMNHNAME   = 'VISIZHA',                &
         CSTDNAME   = '',                       &
         CLONGNAME  = 'VISIZHA',                &
@@ -2482,7 +2482,7 @@ IF (( LMOIST_E .OR. LBV_FR ) .AND. (NRR>0)) THEN
                  *ZWORK31(:,:,:) *(1. +0.81 *ZWORK31(:,:,:)) )
 !
   IF (LMOIST_E) THEN
-    TZFIELD = TFIELDDATA(                                    &
+    TZFIELD = TFIELDMETADATA(                                &
       CMNHNAME   = 'THETAE',                                 &
       CSTDNAME   = '',                                       &
       CLONGNAME  = 'THETAE',                                 &
@@ -2509,7 +2509,7 @@ IF (LMOIST_ES .AND. (NRR>0)) THEN
        -4.805   )    ) + 55.
   ZTHETAES(:,:,:)= XTHT(:,:,:) * EXP( (3376. / ZTHETAE(:,:,:) - 2.54)  &
                *ZWORK31(:,:,:) *(1. +0.81 *ZWORK31(:,:,:)) )
-  TZFIELD = TFIELDDATA(                                              &
+  TZFIELD = TFIELDMETADATA(                                          &
     CMNHNAME   = 'THETAES',                                          &
     CSTDNAME   = '',                                                 &
     CLONGNAME  = 'THETAES',                                          &
@@ -2561,7 +2561,7 @@ IF ( LMOIST_L .OR. LMOIST_S1 .OR. LMOIST_S2 ) THEN
 !
   IF (LMOIST_L .AND. NRR > 0) THEN
     ! Liquid-Water potential temperature
-    TZFIELD = TFIELDDATA(                                      &
+    TZFIELD = TFIELDMETADATA(                                  &
       CMNHNAME   = 'THETAL',                                   &
       CSTDNAME   = '',                                         &
       CLONGNAME  = 'THETAL',                                   &
@@ -2617,7 +2617,7 @@ IF ( LMOIST_S1 .OR. LMOIST_S2 ) THEN
   END IF
   IF (LMOIST_S1) THEN
 ! The Moist-air Entropy potential temperature (1st order)
-    TZFIELD = TFIELDDATA(                                                       &
+    TZFIELD = TFIELDMETADATA(                                                   &
       CMNHNAME   = 'THETAS1',                                                   &
       CSTDNAME   = '',                                                          &
       CLONGNAME  = 'THETAS1',                                                   &
@@ -2632,7 +2632,7 @@ IF ( LMOIST_S1 .OR. LMOIST_S2 ) THEN
   END IF
   IF (LMOIST_S2) THEN
 ! The Moist-air Entropy potential temperature (2nd order)
-    TZFIELD = TFIELDDATA(                                                       &
+    TZFIELD = TFIELDMETADATA(                                                   &
       CMNHNAME   = 'THETAS2',                                                   &
       CSTDNAME   = '',                                                          &
       CLONGNAME  = 'THETAS2',                                                   &
@@ -2656,7 +2656,7 @@ END IF
 IF (LVORT) THEN
 ! Vorticity x
   ZWORK31(:,:,:)=MYF(MZF(MXM(ZVOX(:,:,:))))
-  TZFIELD = TFIELDDATA(                            &
+  TZFIELD = TFIELDMETADATA(                        &
     CMNHNAME   = 'UM1',                            &
     CSTDNAME   = '',                               &
     CLONGNAME  = 'UM1',                            &
@@ -2671,7 +2671,7 @@ IF (LVORT) THEN
 !    
 ! Vorticity y
   ZWORK32(:,:,:)=MZF(MXF(MYM(ZVOY(:,:,:))))
-  TZFIELD = TFIELDDATA(                            &
+  TZFIELD = TFIELDMETADATA(                        &
     CMNHNAME   = 'VM1',                            &
     CSTDNAME   = '',                               &
     CLONGNAME  = 'VM1',                            &
@@ -2685,7 +2685,7 @@ IF (LVORT) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK32)
   !
   IF (LWIND_ZM) THEN
-    TZFIELD2(1) = TFIELDDATA(                                 &
+    TZFIELD2(1) = TFIELDMETADATA(                             &
       CMNHNAME   = 'UM1_ZM',                                  &
       CSTDNAME   = '',                                        &
       CLONGNAME  = 'UM1_ZM',                                  &
@@ -2697,7 +2697,7 @@ IF (LVORT) THEN
       NDIMS      = 3,                                         &
       LTIMEDEP   = .TRUE.                                     )
     !
-    TZFIELD2(2) = TFIELDDATA(                                    &
+    TZFIELD2(2) = TFIELDMETADATA(                                &
       CMNHNAME   = 'VM1_ZM',                                     &
       CSTDNAME   = '',                                           &
       CLONGNAME  = 'VM1_ZM',                                     &
@@ -2714,7 +2714,7 @@ IF (LVORT) THEN
 !    
 ! Vorticity z
   ZWORK31(:,:,:)=MXF(MYF(MZM(ZVOZ(:,:,:))))
-  TZFIELD = TFIELDDATA(                      &
+  TZFIELD = TFIELDMETADATA(                  &
     CMNHNAME   = 'WM1',                      &
     CSTDNAME   = '',                         &
     CLONGNAME  = 'WM1',                      &
@@ -2729,7 +2729,7 @@ IF (LVORT) THEN
 !
 ! Absolute Vorticity 
   ZWORK31(:,:,:)=MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:)
-  TZFIELD = TFIELDDATA(                        &
+  TZFIELD = TFIELDMETADATA(                    &
     CMNHNAME   = 'ABVOR',                      &
     CSTDNAME   = '',                           &
     CLONGNAME  = 'ABVOR',                      &
@@ -2762,7 +2762,7 @@ IF ( LMEAN_POVO ) THEN
     END WHERE
   END DO
   WHERE (IWORK1(:,:)>0) ZWORK21(:,:)=ZWORK21(:,:)/REAL( IWORK1(:,:) )
-  TZFIELD = TFIELDDATA(                               &
+  TZFIELD = TFIELDMETADATA(                           &
     CMNHNAME   = 'MEAN_POVO',                         &
     CSTDNAME   = '',                                  &
     CLONGNAME  = 'MEAN_POVO',                         &
@@ -2785,7 +2785,7 @@ IF (LMOIST_V .AND. (NRR>0) ) THEN
                + ZWORK32(:,:,:)*MZF(MXF(ZVOY(:,:,:)))     &
                + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:))
   ZWORK34(:,:,:)=ZWORK34(:,:,:)*1E6/XRHODREF(:,:,:)
-  TZFIELD = TFIELDDATA(                               &
+  TZFIELD = TFIELDMETADATA(                           &
     CMNHNAME   = 'POVOV',                             &
     CSTDNAME   = '',                                  &
     CLONGNAME  = 'POVOV',                             &
@@ -2808,7 +2808,7 @@ IF (LMOIST_V .AND. (NRR>0) ) THEN
       END WHERE
     END DO
     WHERE(IWORK1(:,:)>0) ZWORK21(:,:)=ZWORK21(:,:)/REAL( IWORK1(:,:) )
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'MEAN_POVOV',                                &
       CSTDNAME   = '',                                          &
       CLONGNAME  = 'MEAN_POVOV',                                &
@@ -2833,7 +2833,7 @@ IF (LMOIST_E .AND. (NRR>0) ) THEN
                 + ZWORK32(:,:,:)*MZF(MXF(ZVOY(:,:,:)))     &
                 + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:))
   ZWORK34(:,:,:)=ZWORK34(:,:,:)*1E6/XRHODREF(:,:,:)
-  TZFIELD = TFIELDDATA(                                  &
+  TZFIELD = TFIELDMETADATA(                              &
     CMNHNAME   = 'POVOE',                                &
     CSTDNAME   = '',                                     &
     CLONGNAME  = 'POVOE',                                &
@@ -2856,7 +2856,7 @@ IF (LMOIST_E .AND. (NRR>0) ) THEN
       END WHERE
     END DO
     WHERE(IWORK1(:,:)>0) ZWORK21(:,:)=ZWORK21(:,:)/REAL( IWORK1(:,:) )
-    TZFIELD = TFIELDDATA(                                          &
+    TZFIELD = TFIELDMETADATA(                                      &
       CMNHNAME   = 'MEAN_POVOE',                                   &
       CSTDNAME   = '',                                             &
       CLONGNAME  = 'MEAN_POVOE',                                   &
@@ -2882,7 +2882,7 @@ IF (LMOIST_ES .AND. (NRR>0) ) THEN
                 + ZWORK32(:,:,:)*MZF(MXF(ZVOY(:,:,:)))     &
                 + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:))
   ZWORK34(:,:,:)=ZWORK34(:,:,:)*1E6/XRHODREF(:,:,:)
-  TZFIELD = TFIELDDATA(                                            &
+  TZFIELD = TFIELDMETADATA(                                        &
     CMNHNAME   = 'POVOES',                                         &
     CSTDNAME   = '',                                               &
     CLONGNAME  = 'POVOES',                                         &
@@ -2904,7 +2904,7 @@ ENDIF
 IF (LDIV) THEN
 !
   ZWORK31=GX_U_M(XUT,XDXX,XDZZ,XDZX) + GY_V_M(XVT,XDYY,XDZZ,XDZY)
-  TZFIELD = TFIELDDATA(                         &
+  TZFIELD = TFIELDMETADATA(                     &
     CMNHNAME   = 'HDIV',                        &
     CSTDNAME   = '',                            &
     CLONGNAME  = 'HDIV',                        &
@@ -2918,7 +2918,7 @@ IF (LDIV) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK31)
 !
   IF (LUSERV) THEN
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'HMDIV',                                      &
       CSTDNAME   = '',                                           &
       CLONGNAME  = 'HMDIV',                                      &
@@ -2954,7 +2954,7 @@ IF (LCLSTR) THEN
   CALL CLUSTERING(GBOTUP,GCLOUD,XWT,ICLUSTERID,ICLUSTERLV,ZCLDSIZE)
   PRINT *,'GOT OUT OF CLUSTERING'
   !
-  TZFIELD = TFIELDDATA(                       &
+  TZFIELD = TFIELDMETADATA(                   &
     CMNHNAME   = 'CLUSTERID',                 &
     CSTDNAME   = '',                          &
     CLONGNAME  = 'CLUSTERID',                 &
@@ -2967,7 +2967,7 @@ IF (LCLSTR) THEN
     LTIMEDEP   = .TRUE.                       )
   CALL IO_Field_write(TPFILE,TZFIELD,ICLUSTERID)
   !
-  TZFIELD = TFIELDDATA(                               &
+  TZFIELD = TFIELDMETADATA(                           &
     CMNHNAME   = 'CLUSTERLV',                         &
     CSTDNAME   = '',                                  &
     CLONGNAME  = 'CLUSTERLV',                         &
@@ -2980,7 +2980,7 @@ IF (LCLSTR) THEN
     LTIMEDEP   = .TRUE.                               )
   CALL IO_Field_write(TPFILE,TZFIELD,ICLUSTERLV)
   !
-  TZFIELD = TFIELDDATA(                          &
+  TZFIELD = TFIELDMETADATA(                      &
     CMNHNAME   = 'CLDSIZE',                      &
     CSTDNAME   = '',                             &
     CLONGNAME  = 'CLDSIZE',                      &
@@ -3034,7 +3034,7 @@ IF (LGEO .OR. LAGEO) THEN
   DEALLOCATE(ZPHI)
 !
   IF (LGEO) THEN 
-    TZFIELD = TFIELDDATA(                                   &
+    TZFIELD = TFIELDMETADATA(                               &
       CMNHNAME   = 'UM88',                                  &
       CSTDNAME   = '',                                      &
       CLONGNAME  = 'UM88',                                  &
@@ -3047,7 +3047,7 @@ IF (LGEO .OR. LAGEO) THEN
       LTIMEDEP   = .TRUE.                                   )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK31)
 ! 
-    TZFIELD = TFIELDDATA(                                   &
+    TZFIELD = TFIELDMETADATA(                               &
       CMNHNAME   = 'VM88',                                  &
       CSTDNAME   = '',                                      &
       CLONGNAME  = 'VM88',                                  &
@@ -3061,7 +3061,7 @@ IF (LGEO .OR. LAGEO) THEN
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK32)
     !
     IF (LWIND_ZM) THEN
-      TZFIELD2(1) = TFIELDDATA(                             &
+      TZFIELD2(1) = TFIELDMETADATA(                         &
         CMNHNAME   = 'UM88_ZM',                             &
         CSTDNAME   = '',                                    &
         CLONGNAME  = 'UM88_ZM',                             &
@@ -3073,7 +3073,7 @@ IF (LGEO .OR. LAGEO) THEN
         NDIMS      = 3,                                     &
         LTIMEDEP   = .TRUE.                                 )
       !
-      TZFIELD2(2) = TFIELDDATA(                                &
+      TZFIELD2(2) = TFIELDMETADATA(                            &
         CMNHNAME   = 'VM88_ZM',                                &
         CSTDNAME   = '',                                       &
         CLONGNAME  = 'VM88_ZM',                                &
@@ -3090,7 +3090,7 @@ IF (LGEO .OR. LAGEO) THEN
 !
 ! wm necessary to plot vertical cross sections of wind vectors
     CALL FIND_FIELD_ID_FROM_MNHNAME('WT',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME  = 'WM88'
     TZFIELD%CLONGNAME = 'WM88'
     CALL IO_Field_write(TPFILE,TZFIELD,XWT)
@@ -3100,7 +3100,7 @@ IF (LGEO .OR. LAGEO) THEN
     ZWORK31(:,:,:)=XUT(:,:,:)-ZWORK31(:,:,:)
     ZWORK32(:,:,:)=XVT(:,:,:)-ZWORK32(:,:,:)
     !
-    TZFIELD = TFIELDDATA(                                    &
+    TZFIELD = TFIELDMETADATA(                                &
       CMNHNAME   = 'UM89',                                   &
       CSTDNAME   = '',                                       &
       CLONGNAME  = 'UM89',                                   &
@@ -3113,7 +3113,7 @@ IF (LGEO .OR. LAGEO) THEN
       LTIMEDEP   = .TRUE.                                    )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK31)
     !
-    TZFIELD = TFIELDDATA(                                    &
+    TZFIELD = TFIELDMETADATA(                                &
       CMNHNAME   = 'VM89',                                   &
       CSTDNAME   = '',                                       &
       CLONGNAME  = 'VM89',                                   &
@@ -3127,7 +3127,7 @@ IF (LGEO .OR. LAGEO) THEN
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK32)
     !
     IF (LWIND_ZM) THEN
-      TZFIELD2(1) = TFIELDDATA(                              &
+      TZFIELD2(1) = TFIELDMETADATA(                          &
         CMNHNAME   = 'UM89_ZM',                              &
         CSTDNAME   = '',                                     &
         CLONGNAME  = 'UM89_ZM',                              &
@@ -3139,7 +3139,7 @@ IF (LGEO .OR. LAGEO) THEN
         NDIMS      = 3,                                      &
         LTIMEDEP   = .TRUE.                                  )
       !
-      TZFIELD2(2) = TFIELDDATA(                                 &
+      TZFIELD2(2) = TFIELDMETADATA(                             &
         CMNHNAME   = 'VM89_ZM',                                 &
         CSTDNAME   = '',                                        &
         CLONGNAME  = 'VM89_ZM',                                 &
@@ -3156,7 +3156,7 @@ IF (LGEO .OR. LAGEO) THEN
 !
 ! wm necessary to plot vertical cross sections of wind vectors
     CALL FIND_FIELD_ID_FROM_MNHNAME('WT',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CMNHNAME  = 'WM89'
     TZFIELD%CLONGNAME = 'WM89'
     CALL IO_Field_write(TPFILE,TZFIELD,XWT)
@@ -3173,7 +3173,7 @@ IF(LWIND_CONTRAV) THEN!$
   CALL CONTRAV ((/"TEST","TEST"/),(/"TEST","TEST"/),XUT,XVT,XWT,XDXX,XDYY,XDZZ,XDZX,XDZY, &
                 ZWORK31,ZWORK32,ZWORK33,2)
   !
-  TZFIELD = TFIELDDATA(                         &
+  TZFIELD = TFIELDMETADATA(                     &
     CMNHNAME   = 'WNORM',                       &
     CSTDNAME   = '',                            &
     CLONGNAME  = 'WNORM',                       &
@@ -3207,7 +3207,7 @@ IF (LMSLP) THEN
 !  sea level pressure (hPa)
   ZWORK22(:,:) = 1.E-2*ZWORK21(:,:)*EXP(XG*XZS(:,:)/(XRD*ZWORK22(:,:)))
 !
-  TZFIELD = TFIELDDATA(                         &
+  TZFIELD = TFIELDMETADATA(                     &
     CMNHNAME   = 'MSLP',                        &
     CSTDNAME   = 'air_pressure_at_sea_level',   &
     CLONGNAME  = 'MSLP',                        &
@@ -3233,7 +3233,7 @@ IF (LTHW) THEN
                      (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW
     END DO
     ZWORK21(:,:) = ZWORK21(:,:)*1000. ! vapor water in mm unit
-    TZFIELD = TFIELDDATA(                          &
+    TZFIELD = TFIELDMETADATA(                      &
       CMNHNAME   = 'THVW',                         &
       CSTDNAME   = '',                             &
       CLONGNAME  = 'THVW',                         &
@@ -3254,7 +3254,7 @@ IF (LTHW) THEN
                      (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW
     END DO
     ZWORK21(:,:) = ZWORK21(:,:)*1000. ! cloud water in mm unit
-    TZFIELD = TFIELDDATA(                          &
+    TZFIELD = TFIELDMETADATA(                      &
       CMNHNAME   = 'THCW',                         &
       CSTDNAME   = '',                             &
       CLONGNAME  = 'THCW',                         &
@@ -3275,7 +3275,7 @@ IF (LTHW) THEN
                      (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW
     END DO
     ZWORK21(:,:) = ZWORK21(:,:)*1000. ! rain water in mm unit
-    TZFIELD = TFIELDDATA(                         &
+    TZFIELD = TFIELDMETADATA(                     &
       CMNHNAME   = 'THRW',                        &
       CSTDNAME   = '',                            &
       CLONGNAME  = 'THRW',                        &
@@ -3296,7 +3296,7 @@ IF (LTHW) THEN
                    (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW
     END DO
     ZWORK21(:,:) = ZWORK21(:,:)*1000.   ! ice thickness in mm unit
-    TZFIELD = TFIELDDATA(                  &
+    TZFIELD = TFIELDMETADATA(              &
       CMNHNAME   = 'THIC',                 &
       CSTDNAME   = '',                     &
       CLONGNAME  = 'THIC',                 &
@@ -3317,7 +3317,7 @@ IF (LTHW) THEN
                    (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW
     END DO
     ZWORK21(:,:) = ZWORK21(:,:)*1000.   ! snow thickness in mm unit
-    TZFIELD = TFIELDDATA(                   &
+    TZFIELD = TFIELDMETADATA(               &
       CMNHNAME   = 'THSN',                  &
       CSTDNAME   = '',                      &
       CLONGNAME  = 'THSN',                  &
@@ -3338,7 +3338,7 @@ IF (LTHW) THEN
                    (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW
     END DO
     ZWORK21(:,:) = ZWORK21(:,:)*1000.   ! graupel thickness in mm unit
-    TZFIELD = TFIELDDATA(                      &
+    TZFIELD = TFIELDMETADATA(                  &
       CMNHNAME   = 'THGR',                     &
       CSTDNAME   = '',                         &
       CLONGNAME  = 'THGR',                     &
@@ -3359,7 +3359,7 @@ IF (LTHW) THEN
                    (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW
     END DO
     ZWORK21(:,:) = ZWORK21(:,:)*1000.   ! hail thickness in mm unit
-    TZFIELD = TFIELDDATA(                   &
+    TZFIELD = TFIELDMETADATA(               &
       CMNHNAME   = 'THHA',                  &
       CSTDNAME   = '',                      &
       CLONGNAME  = 'THHA',                  &
@@ -3401,7 +3401,7 @@ IF (LTOTAL_PR .AND. SIZE (XACPRR)>0 ) THEN
   END IF
   IF (LUSERR .OR. CCLOUD(1:3) == 'ICE' .OR. CCLOUD == 'C3R5' .OR. &
                   CCLOUD == 'LIMA' .OR. CDCONV /= 'NONE') THEN
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'ACTOPR',                                    &
       CSTDNAME   = '',                                          &
       CLONGNAME  = 'ACTOPR',                                    &
@@ -3421,7 +3421,7 @@ IF (LTOTAL_PR .AND. SIZE (XACPRR)>0 ) THEN
   ! calculation of the mean accumulated precipitations in the mesh-grid of a 
   !large-scale model
   IF (LMEAN_PR .AND. LUSERR) THEN
-    TZFIELD = TFIELDDATA(                                                   &
+    TZFIELD = TFIELDMETADATA(                                               &
       CSTDNAME   = 'generic LS_ACTOPR',                                     & !Temporary name to ease identification
       CUNITS     = 'mm',                                                    &
       CDIR       = 'XY',                                                    &
@@ -3469,7 +3469,7 @@ IF (LTOTAL_PR .AND. SIZE (XACPRR)>0 ) THEN
   END IF
   IF (LUSERR .OR. CCLOUD(1:3) == 'ICE' .OR. CCLOUD == 'C3R5' .OR. &
                   CCLOUD == 'LIMA' .OR. CDCONV /= 'NONE') THEN
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'INTOPR',                                     &
       CSTDNAME   = '',                                           &
       CLONGNAME  = 'INTOPR',                                     &
@@ -3491,7 +3491,7 @@ IF (LTOTAL_PR .AND. SIZE (XACPRR)>0 ) THEN
   IF (LMEAN_PR .AND. LUSERR) THEN
     CALL COMPUTE_MEAN_PRECIP(ZWORK21,XMEAN_PR,ZWORK22,TZFIELD%NGRID)
 !
-    TZFIELD = TFIELDDATA(                                                    &
+    TZFIELD = TFIELDMETADATA(                                                &
       CMNHNAME   = 'LS_INTOPR',                                              &
       CSTDNAME   = '',                                                       &
       CLONGNAME  = 'LS_INTOPR',                                              &
@@ -3521,7 +3521,7 @@ IF (NCAPE >=0 .AND. LUSERV) THEN
                    ZWORK32(:,:,IKB:IKE),ZWORK33(:,:,IKB:IKE),          &
                    ZWORK34(:,:,IKB:IKE),ZWORK21,ZWORK22                )
   !
-  TZFIELD = TFIELDDATA(                                              &
+  TZFIELD = TFIELDMETADATA(                                          &
     CMNHNAME   = 'CAPEMAX',                                          &
     CSTDNAME   = '',                                                 &
     CLONGNAME  = 'CAPEMAX',                                          &
@@ -3534,7 +3534,7 @@ IF (NCAPE >=0 .AND. LUSERV) THEN
     LTIMEDEP   = .TRUE.                                              )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK21)
   !
-  TZFIELD = TFIELDDATA(                                     &
+  TZFIELD = TFIELDMETADATA(                                 &
     CMNHNAME   = 'CINMAX',                                  &
     CSTDNAME   = '',                                        &
     CLONGNAME  = 'CINMAX',                                  &
@@ -3548,7 +3548,7 @@ IF (NCAPE >=0 .AND. LUSERV) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK22)
   !
   IF (NCAPE >=1) THEN
-    TZFIELD = TFIELDDATA(                                              &
+    TZFIELD = TFIELDMETADATA(                                          &
       CMNHNAME   = 'CAPE3D',                                           &
       CSTDNAME   = 'atmosphere_convective_available_potential_energy', &
       CLONGNAME  = 'CAPE3D',                                           &
@@ -3561,7 +3561,7 @@ IF (NCAPE >=0 .AND. LUSERV) THEN
       LTIMEDEP   = .TRUE.                                              )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK32)
     !
-    TZFIELD = TFIELDDATA(                                &
+    TZFIELD = TFIELDMETADATA(                            &
       CMNHNAME   = 'CIN3D',                              &
       CSTDNAME   = 'atmosphere_convective_inhibition',   &
       CLONGNAME  = 'CIN3D',                              &
@@ -3574,7 +3574,7 @@ IF (NCAPE >=0 .AND. LUSERV) THEN
       LTIMEDEP   = .TRUE.                                )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK33)
     !
-    TZFIELD = TFIELDDATA(     &
+    TZFIELD = TFIELDMETADATA( &
       CMNHNAME   = 'DCAPE3D', &
       CSTDNAME   = '',        &
       CLONGNAME  = 'DCAPE3D', &
@@ -3593,7 +3593,7 @@ IF (NCAPE >=0 .AND. LUSERV) THEN
     ZWORK31(:,:,IKU)    = 0.
     ZWORK31=0.5*ZWORK31**2
     !
-    TZFIELD = TFIELDDATA(                           &
+    TZFIELD = TFIELDMETADATA(                       &
       CMNHNAME   = 'VKE',                           &
       CSTDNAME   = '',                              &
       CLONGNAME  = 'VKE',                           &
@@ -3626,7 +3626,7 @@ IF (LBV_FR) THEN
    ENDDO
   ENDDO
   !
-  TZFIELD = TFIELDDATA(                            &
+  TZFIELD = TFIELDMETADATA(                        &
     CMNHNAME   = 'BV',                             &
     CSTDNAME   = '',                               &
     CLONGNAME  = 'BV',                             &
@@ -3653,7 +3653,7 @@ IF (LBV_FR) THEN
      ENDDO
     ENDDO
 !
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'BVE',                                       &
       CSTDNAME   = '',                                          &
       CLONGNAME  = 'BVE',                                       &
@@ -3682,7 +3682,7 @@ IF ( NGPS>=0 ) THEN
   YFGRI=ADJUSTL(ADJUSTR(TPFILE%CNAME)//'GPS')
   CALL GPS_ZENITH (YFGRI,XRT(:,:,:,1),ZTEMP,XPABST,ZWORK21,ZWORK22,ZWORK23,ZWORK24)    
   !
-  TZFIELD = TFIELDDATA(                        &
+  TZFIELD = TFIELDMETADATA(                    &
     CMNHNAME   = 'ZTD',                        &
     CSTDNAME   = '',                           &
     CLONGNAME  = 'ZTD',                        &
@@ -3696,7 +3696,7 @@ IF ( NGPS>=0 ) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK22)
   !
   IF (NGPS>=1) THEN
-    TZFIELD = TFIELDDATA(                              &
+    TZFIELD = TFIELDMETADATA(                          &
       CMNHNAME   = 'ZHD',                              &
       CSTDNAME   = '',                                 &
       CLONGNAME  = 'ZHD',                              &
@@ -3709,7 +3709,7 @@ IF ( NGPS>=0 ) THEN
       LTIMEDEP   = .TRUE.                              )
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK23)
     !
-    TZFIELD = TFIELDDATA(                      &
+    TZFIELD = TFIELDMETADATA(                  &
       CMNHNAME   = 'ZWD',                      &
       CSTDNAME   = '',                         &
       CLONGNAME  = 'ZWD',                      &
@@ -3755,7 +3755,7 @@ IF(LRADAR .AND. LUSERR) THEN
                                                          ZWORK33, ZWORK34 )
   ENDIF 
 !
-  TZFIELD = TFIELDDATA(                            &
+  TZFIELD = TFIELDMETADATA(                        &
     CMNHNAME   = 'RARE',                           &
     CSTDNAME   = 'equivalent_reflectivity_factor', &
     CLONGNAME  = 'RARE',                           &
@@ -3768,7 +3768,7 @@ IF(LRADAR .AND. LUSERR) THEN
     LTIMEDEP   = .TRUE.                            )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK31)
 !
-  TZFIELD = TFIELDDATA(                            &
+  TZFIELD = TFIELDMETADATA(                        &
     CMNHNAME   = 'VDOP',                           &
     CSTDNAME   = '',                               &
     CLONGNAME  = 'VDOP',                           &
@@ -3781,7 +3781,7 @@ IF(LRADAR .AND. LUSERR) THEN
     LTIMEDEP   = .TRUE.                            )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK32)
 !
-  TZFIELD = TFIELDDATA(                                   &
+  TZFIELD = TFIELDMETADATA(                               &
     CMNHNAME   = 'ZDR',                                   &
     CSTDNAME   = '',                                      &
     CLONGNAME  = 'ZDR',                                   &
@@ -3794,7 +3794,7 @@ IF(LRADAR .AND. LUSERR) THEN
     LTIMEDEP   = .TRUE.                                   )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK33)
 !
-  TZFIELD = TFIELDDATA(                                   &
+  TZFIELD = TFIELDMETADATA(                               &
     CMNHNAME   = 'KDP',                                   &
     CSTDNAME   = '',                                      &
     CLONGNAME  = 'KDP',                                   &
@@ -4103,7 +4103,7 @@ IF (LLIDAR) THEN
   IF( ALLOCATED(ZTMP3) ) DEALLOCATE(ZTMP3)
   IF( ALLOCATED(ZTMP4) ) DEALLOCATE(ZTMP4)
 !
-  TZFIELD = TFIELDDATA(                            &
+  TZFIELD = TFIELDMETADATA(                        &
     CMNHNAME   = 'LIDAR',                          &
     CSTDNAME   = '',                               &
     CLONGNAME  = 'LIDAR',                          &
@@ -4116,7 +4116,7 @@ IF (LLIDAR) THEN
     LTIMEDEP   = .TRUE.                            )
   CALL IO_Field_write(TPFILE,TZFIELD,ZWORK31)
 !
-  TZFIELD = TFIELDDATA(                          &
+  TZFIELD = TFIELDMETADATA(                      &
     CMNHNAME   = 'LIPAR',                        &
     CSTDNAME   = '',                             &
     CLONGNAME  = 'LIPAR',                        &
@@ -4161,7 +4161,7 @@ IF (CBLTOP == 'THETA') THEN
   ZSHMIX(:,:)=ZSHMIX(:,:)-XZS(:,:)
   ZSHMIX(:,:)=MAX(ZSHMIX(:,:),50.0)
   !
-  TZFIELD = TFIELDDATA(                                 &
+  TZFIELD = TFIELDMETADATA(                             &
     CMNHNAME   = 'HBLTOP',                              &
     CSTDNAME   = 'atmosphere_boundary_layer_thickness', &
     CLONGNAME  = 'HBLTOP',                              &
@@ -4206,7 +4206,7 @@ ELSEIF (CBLTOP == 'RICHA') THEN
   END DO
   ZSHMIX(:,:)=ZSHMIX(:,:)-XZS(:,:)
   !
-  TZFIELD = TFIELDDATA(                                 &
+  TZFIELD = TFIELDMETADATA(                             &
     CMNHNAME   = 'HBLTOP',                              &
     CSTDNAME   = 'atmosphere_boundary_layer_thickness', &
     CLONGNAME  = 'HBLTOP',                              &
diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90
index 456337d787dc9c02a2201bbe12750c8f5924601f..f24f10f5b41c473331f2e42b791bc0dd73d1d3f2 100644
--- a/src/MNH/write_lfifm1_for_diag_supp.f90
+++ b/src/MNH/write_lfifm1_for_diag_supp.f90
@@ -97,7 +97,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG_SUPP
 !
 USE MODE_ll
 USE MODD_CST
-use modd_field,           only: NMNHDIM_UNUSED, tfielddata, tfieldlist, TYPEINT, TYPEREAL
+use modd_field,           only: NMNHDIM_UNUSED, tfieldmetadata, tfieldlist, TYPEINT, TYPEREAL
 USE MODD_IO, ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_CONF_n
@@ -208,8 +208,8 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZTH
 REAL,DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))  :: ZPOVO
 REAL,DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))  :: ZVOX,ZVOY,ZVOZ
 REAL,DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))  :: ZCORIOZ
-TYPE(TFIELDDATA)              :: TZFIELD
-TYPE(TFIELDDATA),DIMENSION(2) :: TZFIELD2
+TYPE(TFIELDMETADATA)               :: TZFIELD
+TYPE(TFIELDMETADATA), DIMENSION(2) :: TZFIELD2
 !
 ! variables needed for altitude interpolation                                 
 INTEGER :: IAL
@@ -256,7 +256,7 @@ IF (NCONV_KF >= 0) THEN
       IF (NCLTOPCONV(JI,JJ)/=0) ZWORK21(JI,JJ)= XZZ(JI,JJ,NCLTOPCONV(JI,JJ))/1.E3
     END DO
   END DO
-  TZFIELD = TFIELDDATA(                           &
+  TZFIELD = TFIELDMETADATA(                       &
     CMNHNAME   = 'CLTOPCONV',                     &
     CSTDNAME   = 'convective_cloud_top_altitude', &
     CLONGNAME  = 'CLTOPCONV',                     &
@@ -276,7 +276,7 @@ IF (NCONV_KF >= 0) THEN
       IF (NCLBASCONV(JI,JJ)/=0) ZWORK21(JI,JJ)= XZZ(JI,JJ,NCLBASCONV(JI,JJ))/1.E3
     END DO
   END DO
-  TZFIELD = TFIELDDATA(                            &
+  TZFIELD = TFIELDMETADATA(                        &
     CMNHNAME   = 'CLBASCONV',                      &
     CSTDNAME   = 'convective_cloud_base_altitude', &
     CLONGNAME  = 'CLBASCONV',                      &
@@ -458,7 +458,7 @@ IF (LCLD_COV .AND. LUSERC) THEN
                                                   ! 0 if there is no cloud
   ZWORK21(:,:)=ZWORK21(:,:)/1.E3            ! height (km) of explicit clouds
 !
-  TZFIELD = TFIELDDATA(                              &
+  TZFIELD = TFIELDMETADATA(                          &
     CMNHNAME   = 'HECL',                             &
     CSTDNAME   = '',                                 &
     CLONGNAME  = 'HECL',                             &
@@ -496,7 +496,7 @@ IF (LCLD_COV .AND. LUSERC) THEN
                                                          ! 0 if there is no cloud
     ZWORK21(:,:)=ZWORK21(:,:)/1.E3                 ! max. cloud height (km)
 !
-    TZFIELD = TFIELDDATA(                     &
+    TZFIELD = TFIELDMETADATA(                 &
       CMNHNAME   = 'HCL',                     &
       CSTDNAME   = 'cloud_top_altitude',      &
       CLONGNAME  = 'HCL',                     &
@@ -510,7 +510,7 @@ IF (LCLD_COV .AND. LUSERC) THEN
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK21)
   ENDIF
 !
-  TZFIELD = TFIELDDATA(                          &
+  TZFIELD = TFIELDMETADATA(                      &
     CMNHNAME   = 'TCL',                          &
     CSTDNAME   = 'air_temperature_at_cloud_top', &
     CLONGNAME  = 'TCL',                          &
@@ -532,7 +532,7 @@ IF (LCLD_COV .AND. LUSERC) THEN
     ZWORK31(:,:,:)=3.9E3/(144.7*(XRHODREF(:,:,:)*1.E3*XRT(:,:,:,2)/(1.+XRT(:,:,:,2)))**0.88)
   END WHERE
 !
-  TZFIELD = TFIELDDATA(               &
+  TZFIELD = TFIELDMETADATA(           &
     CMNHNAME   = 'VISI_HOR',          &
     CSTDNAME   = 'visibility_in_air', &
     CLONGNAME  = 'VISI_HOR',          &
@@ -568,7 +568,7 @@ IF (NRAD_3D >= 0) THEN
     !
     CALL PRINT_MSG(NVERB_INFO,'IO','WRITE_LFIFM1_FOR_DIAG_SUPP','EMIS: writing only first band')
     CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%NDIMS = 2
     TZFIELD%NDIMLIST(3) = TZFIELD%NDIMLIST(4)
     TZFIELD%NDIMLIST(4) = NMNHDIM_UNUSED
@@ -588,7 +588,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,3)
     END DO
-    TZFIELD = TFIELDDATA(                              &
+    TZFIELD = TFIELDMETADATA(                          &
       CMNHNAME   = 'DSTAOD3D',                         &
       CSTDNAME   = '',                                 &
       CLONGNAME  = 'DSTAOD3D',                         &
@@ -610,7 +610,7 @@ IF (NRAD_3D >= 1) THEN
         ENDDO
       ENDDO
     ENDDO
-    TZFIELD = TFIELDDATA(                            &
+    TZFIELD = TFIELDMETADATA(                        &
       CMNHNAME   = 'DSTAOD2D',                       &
       CSTDNAME   = '',                               &
       CLONGNAME  = 'DSTAOD2D',                       &
@@ -627,7 +627,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,3)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3
     ENDDO
-    TZFIELD = TFIELDDATA(                   &
+    TZFIELD = TFIELDMETADATA(               &
       CMNHNAME   = 'DSTEXT',                &
       CSTDNAME   = '',                      &
       CLONGNAME  = 'DSTEXT',                &
@@ -647,7 +647,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,2)
     END DO
-    TZFIELD = TFIELDDATA(                              &
+    TZFIELD = TFIELDMETADATA(                          &
       CMNHNAME   = 'SLTAOD3D',                         &
       CSTDNAME   = '',                                 &
       CLONGNAME  = 'SLTAOD3D',                         &
@@ -669,7 +669,7 @@ IF (NRAD_3D >= 1) THEN
         ENDDO
       ENDDO
     ENDDO
-    TZFIELD = TFIELDDATA(                            &
+    TZFIELD = TFIELDMETADATA(                        &
       CMNHNAME   = 'SLTAOD2D',                       &
       CSTDNAME   = '',                               &
       CLONGNAME  = 'SLTAOD2D',                       &
@@ -686,7 +686,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,2)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3
     ENDDO
-    TZFIELD = TFIELDDATA(                   &
+    TZFIELD = TFIELDMETADATA(               &
       CMNHNAME   = 'SLTEXT',                &
       CSTDNAME   = '',                      &
       CLONGNAME  = 'SLTEXT',                &
@@ -706,7 +706,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,4)
     END DO
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'AERAOD3D',                                  &
       CSTDNAME   = '',                                          &
       CLONGNAME  = 'AERAOD3D',                                  &
@@ -728,7 +728,7 @@ IF (NRAD_3D >= 1) THEN
         ENDDO
       ENDDO
     ENDDO
-    TZFIELD = TFIELDDATA(                                     &
+    TZFIELD = TFIELDMETADATA(                                 &
       CMNHNAME   = 'AERAOD2D',                                &
       CSTDNAME   = '',                                        &
       CLONGNAME  = 'AERAOD2D',                                &
@@ -745,7 +745,7 @@ IF (NRAD_3D >= 1) THEN
       IKRAD = JK - JPVEXT
       ZWORK31(:,:,JK)= XAER(:,:,IKRAD,4)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3
     ENDDO
-    TZFIELD = TFIELDDATA(                            &
+    TZFIELD = TFIELDMETADATA(                        &
       CMNHNAME   = 'AEREXT',                         &
       CSTDNAME   = '',                               &
       CLONGNAME  = 'AEREXT',                         &
@@ -829,7 +829,7 @@ IF (LEN_TRIM(CRAD_SAT) /= 0 .AND. NRR /=0) THEN
                       LSUBG_COND, LRAD_SUBG_COND, ZIRBT, ZWVBT,               &
                       INDGEO(JI), VSIGQSAT                                    )
     !
-    TZFIELD = TFIELDDATA(                                                   &
+    TZFIELD = TFIELDMETADATA(                                               &
       CMNHNAME   = TRIM(YNAM_SAT(JI))//'_IRBT',                             &
       CSTDNAME   = '',                                                      &
       CLONGNAME  = TRIM(YNAM_SAT(JI))//'_IRBT',                             &
@@ -842,7 +842,7 @@ IF (LEN_TRIM(CRAD_SAT) /= 0 .AND. NRR /=0) THEN
       LTIMEDEP   = .TRUE.                                                   )
     CALL IO_Field_write(TPFILE,TZFIELD,ZIRBT)
     !
-    TZFIELD = TFIELDDATA(                                                     &
+    TZFIELD = TFIELDMETADATA(                                                 &
       CMNHNAME   = TRIM(YNAM_SAT(JI))//'_WVBT',                               &
       CSTDNAME   = '',                                                        &
       CLONGNAME  = TRIM(YNAM_SAT(JI))//'_WVBT',                               &
@@ -918,7 +918,7 @@ IF (CSURF=='EXTE') THEN
   ! in this case (argument KGRID=0), input winds are ZONal and MERidian 
   !          and, output ones are in MesoNH grid   
   IF (.NOT. LCARTESIAN) THEN
-    TZFIELD2(1) = TFIELDDATA(           &
+    TZFIELD2(1) = TFIELDMETADATA(       &
       CMNHNAME   = 'UM10',              &
       CSTDNAME   = '',                  &
       CLONGNAME  = 'UM10',              &
@@ -930,7 +930,7 @@ IF (CSURF=='EXTE') THEN
       NDIMS      = 2,                   &
       LTIMEDEP   = .TRUE.               )
     !
-    TZFIELD2(2) = TFIELDDATA(              &
+    TZFIELD2(2) = TFIELDMETADATA(          &
       CMNHNAME   = 'VM10',                 &
       CSTDNAME   = '',                     &
       CLONGNAME  = 'VM10',                 &
@@ -944,7 +944,7 @@ IF (CSURF=='EXTE') THEN
     !
     CALL UV_TO_ZONAL_AND_MERID(XCURRENT_ZON10M,XCURRENT_MER10M,KGRID=0,TPFILE=TPFILE,TZFIELDS=TZFIELD2)
   ELSE
-    TZFIELD = TFIELDDATA(               &
+    TZFIELD = TFIELDMETADATA(           &
       CMNHNAME   = 'UM10',              &
       CSTDNAME   = '',                  &
       CLONGNAME  = 'UM10',              &
@@ -957,7 +957,7 @@ IF (CSURF=='EXTE') THEN
       LTIMEDEP   = .TRUE.               )
     CALL IO_Field_write(TPFILE,TZFIELD,XCURRENT_ZON10M)
     !
-    TZFIELD = TFIELDDATA(                  &
+    TZFIELD = TFIELDMETADATA(              &
       CMNHNAME   = 'VM10',                 &
       CSTDNAME   = '',                     &
       CLONGNAME  = 'VM10',                 &
@@ -974,7 +974,7 @@ IF (CSURF=='EXTE') THEN
   IF (SIZE(XTKET)>0) THEN
     ZWORK21(:,:) = SQRT(XCURRENT_ZON10M(:,:)**2+XCURRENT_MER10M(:,:)**2)
     ZWORK21(:,:) = ZWORK21(:,:) + 4. * SQRT(XTKET(:,:,IKB))
-    TZFIELD = TFIELDDATA(         &
+    TZFIELD = TFIELDMETADATA(     &
       CMNHNAME   = 'FF10MAX',     &
       CSTDNAME   = '',            &
       CLONGNAME  = 'FF10MAX',     &
@@ -989,7 +989,7 @@ IF (CSURF=='EXTE') THEN
   END IF
   !
   IF(ANY(XCURRENT_SFCO2/=XUNDEF))THEN
-    TZFIELD = TFIELDDATA(              &
+    TZFIELD = TFIELDMETADATA(          &
       CMNHNAME   = 'SFCO2',            &
       CSTDNAME   = '',                 &
       CLONGNAME  = 'SFCO2',            &
@@ -1004,7 +1004,7 @@ IF (CSURF=='EXTE') THEN
   END IF
   !
   IF(ANY(XCURRENT_SWD/=XUNDEF))THEN
-    TZFIELD = TFIELDDATA(                               &
+    TZFIELD = TFIELDMETADATA(                           &
       CMNHNAME   = 'SWD',                               &
       CSTDNAME   = '',                                  &
       CLONGNAME  = 'SWD',                               &
@@ -1019,7 +1019,7 @@ IF (CSURF=='EXTE') THEN
   END IF
   !
   IF(ANY(XCURRENT_SWU/=XUNDEF))THEN
-    TZFIELD = TFIELDDATA(                                &
+    TZFIELD = TFIELDMETADATA(                            &
       CMNHNAME   = 'SWU',                                &
       CSTDNAME   = '',                                   &
       CLONGNAME  = 'SWU',                                &
@@ -1034,7 +1034,7 @@ IF (CSURF=='EXTE') THEN
   END IF
 !
   IF(ANY(XCURRENT_LWD/=XUNDEF))THEN
-    TZFIELD = TFIELDDATA(                              &
+    TZFIELD = TFIELDMETADATA(                          &
       CMNHNAME   = 'LWD',                              &
       CSTDNAME   = '',                                 &
       CLONGNAME  = 'LWD',                              &
@@ -1049,7 +1049,7 @@ IF (CSURF=='EXTE') THEN
   END IF
 !
   IF(ANY(XCURRENT_LWU/=XUNDEF))THEN
-    TZFIELD = TFIELDDATA(                               &
+    TZFIELD = TFIELDMETADATA(                           &
       CMNHNAME   = 'LWU',                               &
       CSTDNAME   = '',                                  &
       CLONGNAME  = 'LWU',                               &
@@ -1099,7 +1099,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
   END DO
   PRINT *,'PRESSURE LEVELS WHERE TO INTERPOLATE=',ZPRES(1,1,:)
   !
-  TZFIELD = TFIELDDATA(    &
+  TZFIELD = TFIELDMETADATA(&
     CMNHNAME   = 'variables at pressure levels', & !Temporary name to ease identification
     CSTDNAME   = '',       &
     CDIR       = 'XY',     &
@@ -1206,7 +1206,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU))
 
   PRINT *,'POTENTIAL TEMPERATURE LEVELS WHERE TO INTERPOLATE=',ZTH(:)
   !
-  TZFIELD = TFIELDDATA(    &
+  TZFIELD = TFIELDMETADATA(&
     CMNHNAME   = 'variables at pot. temp. levels', & !Temporary name to ease identification
     CSTDNAME   = '',       &
     CDIR       = 'XY',     &
@@ -1310,7 +1310,7 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN
 ! *********************
 ! Altitude
 ! *********************
-  TZFIELD = TFIELDDATA(       &
+  TZFIELD = TFIELDMETADATA(   &
     CMNHNAME   = 'ALT_ALT',   &
     CSTDNAME   = '',          &
     CLONGNAME  = 'ALT_ALT',   &
@@ -1334,7 +1334,7 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN
   ZWORK31(:,:,:) = ZWORK31(:,:,:)*1.E3
   CALL ZINTER(ZWORK31, XZZ, ZWAL, ZAL, IIU, IJU, IKU, IKB, IAL, XUNDEF)
   WHERE(ZWAL.EQ.XUNDEF) ZWAL=ZFILLVAL
-  TZFIELD = TFIELDDATA(           &
+  TZFIELD = TFIELDMETADATA(       &
     CMNHNAME   = 'ALT_CLOUD',     &
     CSTDNAME   = '',              &
     CLONGNAME  = 'ALT_CLOUD',     &
@@ -1357,7 +1357,7 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN
   ZWORK31(:,:,:) = ZWORK31(:,:,:)*1.E3
   CALL ZINTER(ZWORK31, XZZ, ZWAL, ZAL, IIU, IJU, IKU, IKB, IAL, XUNDEF)
   WHERE(ZWAL.EQ.XUNDEF) ZWAL=ZFILLVAL
-  TZFIELD = TFIELDDATA(                   &
+  TZFIELD = TFIELDMETADATA(               &
     CMNHNAME   = 'ALT_PRECIP',            &
     CSTDNAME   = '',                      &
     CLONGNAME  = 'ALT_PRECIP',            &
@@ -1374,7 +1374,7 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN
 ! *********************
   CALL ZINTER(XTHT, XZZ, ZWAL, ZAL, IIU, IJU, IKU, IKB, IAL, XUNDEF)
   WHERE(ZWAL.EQ.XUNDEF) ZWAL=ZFILLVAL
-  TZFIELD = TFIELDDATA(                           &
+  TZFIELD = TFIELDMETADATA(                       &
     CMNHNAME   = 'ALT_THETA',                     &
     CSTDNAME   = '',                              &
     CLONGNAME  = 'ALT_THETA',                     &
@@ -1391,7 +1391,7 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN
 ! *********************
   CALL ZINTER(XPABST, XZZ, ZWAL, ZAL, IIU, IJU, IKU, IKB, IAL, XUNDEF)
   WHERE(ZWAL.EQ.XUNDEF) ZWAL=ZFILLVAL
-  TZFIELD = TFIELDDATA(              &
+  TZFIELD = TFIELDMETADATA(          &
     CMNHNAME   = 'ALT_PRESSURE',     &
     CSTDNAME   = '',                 &
     CLONGNAME  = 'ALT_PRESSURE',     &
@@ -1425,7 +1425,7 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN
   ZPOVO(:,:,IKU)=-1.E+11
   CALL ZINTER(ZPOVO, XZZ, ZWAL, ZAL, IIU, IJU, IKU, IKB, IAL, XUNDEF)
   WHERE(ZWAL.EQ.XUNDEF) ZWAL=ZFILLVAL
-  TZFIELD = TFIELDDATA(                         &
+  TZFIELD = TFIELDMETADATA(                     &
     CMNHNAME   = 'ALT_PV',                      &
     CSTDNAME   = '',                            &
     CLONGNAME  = 'ALT_PV',                      &
@@ -1443,7 +1443,7 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN
   ZWORK31(:,:,:) = MXF(XUT(:,:,:))
   CALL ZINTER(ZWORK31, XZZ, ZWAL, ZAL, IIU, IJU, IKU, IKB, IAL, XUNDEF)
   WHERE(ZWAL.EQ.XUNDEF) ZWAL=ZFILLVAL
-  TZFIELD = TFIELDDATA(                         &
+  TZFIELD = TFIELDMETADATA(                     &
     CMNHNAME   = 'ALT_U',                       &
     CSTDNAME   = '',                            &
     CLONGNAME  = 'ALT_U',                       &
@@ -1459,7 +1459,7 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN
   ZWORK31(:,:,:) = MYF(XVT(:,:,:))
   CALL ZINTER(ZWORK31, XZZ, ZWAL, ZAL, IIU, IJU, IKU, IKB, IAL, XUNDEF)
   WHERE(ZWAL.EQ.XUNDEF) ZWAL=ZFILLVAL
-  TZFIELD = TFIELDDATA(                         &
+  TZFIELD = TFIELDMETADATA(                     &
     CMNHNAME   = 'ALT_V',                       &
     CSTDNAME   = '',                            &
     CLONGNAME  = 'ALT_V',                       &
@@ -1481,7 +1481,7 @@ IF (LISOAL .AND.XISOAL(1)/=0.) THEN
     ENDDO
     CALL ZINTER(ZWORK31, XZZ, ZWAL, ZAL, IIU, IJU, IKU, IKB, IAL, XUNDEF)
     WHERE(ZWAL.EQ.XUNDEF) ZWAL=ZFILLVAL
-    TZFIELD = TFIELDDATA(                     &
+    TZFIELD = TFIELDMETADATA(                 &
       CMNHNAME   = 'ALT_DSTEXT',              &
       CSTDNAME   = '',                        &
       CLONGNAME  = 'ALT_DSTEXT',              &
@@ -1524,7 +1524,7 @@ IF (LCOARSE) THEN
   CALL BLOCKAVG(XTKET,IDX,IDX,ZWORK31)
   ZWORK31=0.5*( ZUU_AVG+ZVV_AVG+ZWW_AVG ) + ZWORK31
   WRITE (YDX,FMT='(I3.3)') IDX
-  TZFIELD = TFIELDDATA(               &
+  TZFIELD = TFIELDMETADATA(           &
     CMNHNAME   = 'TKEBAVG'//YDX,      &
     CSTDNAME   = '',                  &
     CLONGNAME  = 'TKEBAVG'//YDX,      &
@@ -1555,7 +1555,7 @@ IF (LCOARSE) THEN
   CALL MOVINGAVG(XTKET,IDX,IDX,ZWORK31)
   ZWORK31=0.5*( ZUU_AVG+ZVV_AVG+ZWW_AVG ) + ZWORK31
   WRITE (YDX,FMT='(I3.3)') 2*IDX+1
-  TZFIELD = TFIELDDATA(                &
+  TZFIELD = TFIELDMETADATA(            &
     CMNHNAME   = 'TKEMAVG'//YDX,       &
     CSTDNAME   = '',                   &
     CLONGNAME  = 'TKEMAVG'//YDX,       &
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index 4e80261f8e36b3fb6bc4d28841fbef411c1584ca..6b1823d8c1db42bcae9b04371e35a3811c66edee 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -188,7 +188,7 @@ END MODULE MODI_WRITE_LFIFM_n
 USE MODD_DIM_n
 USE MODD_CONF
 USE MODD_CONF_n
-use modd_field,       only: NMNHDIM_UNUSED, tfielddata, tfieldlist, TYPEDATE, TYPEINT, TYPELOG, TYPEREAL
+use modd_field,       only: NMNHDIM_UNUSED, tfieldmetadata, tfieldlist, TYPEDATE, TYPEINT, TYPELOG, TYPEREAL
 USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_TIME
@@ -332,9 +332,9 @@ INTEGER :: IKRAD
 INTEGER           :: JI,JJ,JK   ! loop index
 INTEGER           :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds
 !
-CHARACTER(LEN=2)  :: INDICE
-INTEGER           :: IID
-TYPE(TFIELDDATA)  :: TZFIELD
+CHARACTER(LEN=2)     :: INDICE
+INTEGER              :: IID
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*	0. Initialization
@@ -445,7 +445,7 @@ CALL IO_Field_write(TPFILE,'SURF',     CSURF)
 CALL IO_Field_write(TPFILE,'CPL_AROME',LCPL_AROME)
 CALL IO_Field_write(TPFILE,'COUPLING', LCOUPLING)
 !
-TZFIELD = TFIELDDATA(       &
+TZFIELD = TFIELDMETADATA(   &
   CMNHNAME   = 'RECYCLING', &
   CLONGNAME  = 'RECYCLING', &
   CSTDNAME   = '',          &
@@ -493,7 +493,7 @@ END IF
 !
 IF (LIBM .OR. LIBM_LSF) THEN
   !
-  TZFIELD = TFIELDDATA(                           &
+  TZFIELD = TFIELDMETADATA(                       &
     CMNHNAME  = 'LSFP',                           &
     CLONGNAME = 'LSFP',                           &
     CSTDNAME  = '',                               &
@@ -511,7 +511,7 @@ ENDIF
 !
 IF (LRECYCL) THEN
   !
-  TZFIELD = TFIELDDATA(                                      &
+  TZFIELD = TFIELDMETADATA(                                  &
     CMNHNAME   = 'RCOUNT',                                   &
     CLONGNAME  = 'RCOUNT',                                   &
     CSTDNAME   = '',                                         &
@@ -525,7 +525,7 @@ IF (LRECYCL) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,NR_COUNT)
   !
   IF (LRECYCLW) THEN
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'URECYCLW',                                  &
       CLONGNAME  = 'URECYCLW',                                  &
       CSTDNAME   = '',                                          &
@@ -539,7 +539,7 @@ IF (LRECYCL) THEN
     !
     CALL IO_Field_write(TPFILE,TZFIELD,XUMEANW(:,:,:))
     !
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'VRECYCLW',                                  &
       CLONGNAME  = 'VRECYCLW',                                  &
       CSTDNAME   = '',                                          &
@@ -553,7 +553,7 @@ IF (LRECYCL) THEN
     !
     CALL IO_Field_write(TPFILE,TZFIELD,XVMEANW(:,:,:))
     !
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'WRECYCLW',                                  &
       CLONGNAME  = 'WRECYCLW',                                  &
       CSTDNAME   = '',                                          &
@@ -569,7 +569,7 @@ IF (LRECYCL) THEN
     !
   ENDIF  
   IF (LRECYCLN) THEN
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'URECYCLN',                                   &
       CLONGNAME  = 'URECYCLN',                                   &
       CSTDNAME   = '',                                           &
@@ -583,7 +583,7 @@ IF (LRECYCL) THEN
     !
     CALL IO_Field_write(TPFILE,TZFIELD,XUMEANN(:,:,:))
     !
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'VRECYCLN',                                   &
       CLONGNAME  = 'VRECYCLN',                                   &
       CSTDNAME   = '',                                           &
@@ -597,7 +597,7 @@ IF (LRECYCL) THEN
     !
     CALL IO_Field_write(TPFILE,TZFIELD,XVMEANN(:,:,:))
     !
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'WRECYCLN',                                   &
       CLONGNAME  = 'WRECYCLN',                                   &
       CSTDNAME   = '',                                           &
@@ -613,7 +613,7 @@ IF (LRECYCL) THEN
     !
   ENDIF
   IF (LRECYCLE) THEN
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'URECYCLE',                                  &
       CLONGNAME  = 'URECYCLE',                                  &
       CSTDNAME   = '',                                          &
@@ -627,7 +627,7 @@ IF (LRECYCL) THEN
     !
     CALL IO_Field_write(TPFILE,TZFIELD,XUMEANE(:,:,:))
     !
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'VRECYCLE',                                  &
       CLONGNAME  = 'VRECYCLE',                                  &
       CSTDNAME   = '',                                          &
@@ -641,7 +641,7 @@ IF (LRECYCL) THEN
     !
     CALL IO_Field_write(TPFILE,TZFIELD,XVMEANE(:,:,:))
     !
-    TZFIELD = TFIELDDATA(                                       &
+    TZFIELD = TFIELDMETADATA(                                   &
       CMNHNAME   = 'WRECYCLE',                                  &
       CLONGNAME  = 'WRECYCLE',                                  &
       CSTDNAME   = '',                                          &
@@ -657,7 +657,7 @@ IF (LRECYCL) THEN
     !
   ENDIF
   IF (LRECYCLS) THEN
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'URECYCLS',                                   &
       CLONGNAME  = 'URECYCLS',                                   &
       CSTDNAME   = '',                                           &
@@ -671,7 +671,7 @@ IF (LRECYCL) THEN
     !
     CALL IO_Field_write(TPFILE,TZFIELD,XUMEANS(:,:,:))
     !
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'VRECYCLS',                                   &
       CLONGNAME  = 'VRECYCLS',                                   &
       CSTDNAME   = '',                                           &
@@ -685,7 +685,7 @@ IF (LRECYCL) THEN
     !
     CALL IO_Field_write(TPFILE,TZFIELD,XVMEANS(:,:,:))
     !
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'WRECYCLS',                                   &
       CLONGNAME  = 'WRECYCLS',                                   &
       CSTDNAME   = '',                                           &
@@ -702,7 +702,7 @@ ENDIF
 !
 IF (MEAN_COUNT /= 0) THEN
 !
-  TZFIELD = TFIELDDATA(                              &
+  TZFIELD = TFIELDMETADATA(                          &
     CMNHNAME   = 'generic for mean_count variables', & !Temporary name to ease identification
     CSTDNAME   = '',                                 &
     CDIR       = 'XY',                               &
@@ -1044,7 +1044,7 @@ IF (NSV >=1) THEN
     !
     ZWORK2D(:,:)  = XRHOLW*XINPRR(:,:)*XSVT(:,:,2,NSV_LIMA_SCAVMASS)/ &
                                         max( 1.e-20,XRT(:,:,2,3) ) !~2=at ground level
-    TZFIELD = TFIELDDATA(                                          &
+    TZFIELD = TFIELDMETADATA(                                      &
       CMNHNAME   = 'INPBP',                                        &
       CSTDNAME   = '',                                             &
       CLONGNAME  = 'INPBP',                                        &
@@ -1093,7 +1093,7 @@ IF (NSV >=1) THEN
     CALL IO_Field_write(TPFILE,'EFIELDV',XEFIELDV)
     CALL IO_Field_write(TPFILE,'EFIELDW',XEFIELDW)
  !
-    TZFIELD = TFIELDDATA(           &
+    TZFIELD = TFIELDMETADATA(       &
       CMNHNAME   = 'EMODULE',       &
       CSTDNAME   = '',              &
       CLONGNAME  = 'EMODULE',       &
@@ -1108,22 +1108,22 @@ IF (NSV >=1) THEN
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D)
  !
     CALL FIND_FIELD_ID_FROM_MNHNAME('NI_IAGGS',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'pC m-3 s-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XNI_IAGGS*1.E12)
  !
     CALL FIND_FIELD_ID_FROM_MNHNAME('NI_IDRYG',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'pC m-3 s-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XNI_IDRYG*1.E12)
  !
     CALL FIND_FIELD_ID_FROM_MNHNAME('NI_SDRYG',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'pC m-3 s-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XNI_SDRYG*1.E12)
  !
     CALL FIND_FIELD_ID_FROM_MNHNAME('INDUC_CG',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'pC m-3 s-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XIND_RATE*1.E12)
  !
@@ -1507,7 +1507,7 @@ IF (NSV >=1) THEN
   DO JSV=1,ICH_NBR
     WRITE(ILUOUT,*)JSV,TRIM(YCHNAMES(JSV))
   END DO
-  TZFIELD = TFIELDDATA(                          &
+  TZFIELD = TFIELDMETADATA(                      &
     CMNHNAME   = 'NSV.DIM',                      &
     CSTDNAME   = '',                             &
     CLONGNAME  = 'NSV.DIM',                      &
@@ -1521,7 +1521,7 @@ IF (NSV >=1) THEN
   CALL IO_Field_write(TPFILE,TZFIELD,ICH_NBR)
   !
   IF (ICH_NBR/=0) THEN
-    TZFIELD = TFIELDDATA(       &
+    TZFIELD = TFIELDMETADATA(   &
       CMNHNAME   = 'NSV.TITRE', &
       CSTDNAME   = '',          &
       CLONGNAME  = 'NSV.TITRE', &
@@ -1632,7 +1632,7 @@ END IF
 ! IF (NSV >=1) THEN
 !    DO JSV = NSV_C2R2BEG,NSV_C2R2END
 !     IF (JSV == NSV_C2R2BEG ) THEN
-!       TZFIELD = TFIELDDATA(           &
+!       TZFIELD = TFIELDMETADATA(       &
 !         CMNHNAME   = 'RSVS_CLD1',     &
 !         CSTDNAME   = '',              &
 !         CLONGNAME  = 'RSVS_CLD1',     &
@@ -1646,7 +1646,7 @@ END IF
 !       CALL IO_Field_write(TPFILE,TZFIELD,XRRS_CLD(:,:,:,IRR))
 !     END IF
 !     IF (JSV == NSV_C2R2END ) THEN
-!       TZFIELD = TFIELDDATA(           &
+!       TZFIELD = TFIELDMETADATA(       &
 !         CMNHNAME   = 'RSVS_CLD2',     &
 !         CSTDNAME   = '',              &
 !         CLONGNAME  = 'RSVS_CLD2',     &
@@ -1683,7 +1683,7 @@ IF (CRAD /= 'NONE') THEN
   !
   CALL PRINT_MSG(NVERB_INFO,'IO','WRITE_LFIFM_n','EMIS: writing only first band')
   CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%NDIMS = 2
   TZFIELD%NDIMLIST(3) = TZFIELD%NDIMLIST(4)
   TZFIELD%NDIMLIST(4) = NMNHDIM_UNUSED
@@ -1713,17 +1713,17 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
   CALL IO_Field_write(TPFILE,'DRICONV',  XDRICONV)
 !
   CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CUNITS = 'mm hour-1'
   CALL IO_Field_write(TPFILE,TZFIELD,XPRCONV*3.6E6)
 !
   CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CUNITS = 'mm'
   CALL IO_Field_write(TPFILE,TZFIELD,XPACCONV*1.0E3)
 !
   CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV',IID,IRESP)
-  TZFIELD = TFIELDLIST(IID)
+  TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
   TZFIELD%CUNITS = 'mm hour-1'
   CALL IO_Field_write(TPFILE,TZFIELD,XPRSCONV*3.6E6)
 !
@@ -1838,12 +1838,12 @@ IF (CPROGRAM /= 'IDEAL') THEN
   IF (ASSOCIATED(XINPRC)) THEN
   IF (SIZE(XINPRC) /= 0 ) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRC',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XINPRC*3.6E6)
 !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRC',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,XACPRC*1.0E3)
 !
@@ -1853,12 +1853,12 @@ IF (CPROGRAM /= 'IDEAL') THEN
   IF (ASSOCIATED(XINDEP)) THEN
   IF (SIZE(XINDEP) /= 0 ) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('INDEP',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XINDEP*3.6E6)
 !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACDEP',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,XACDEP*1.0E3)
 !
@@ -1868,7 +1868,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
   IF (ASSOCIATED(XINPRR)) THEN
   IF (SIZE(XINPRR) /= 0 ) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XINPRR*3.6E6)
 !
@@ -1876,7 +1876,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     CALL IO_Field_write(TPFILE,'EVAP3D', XEVAP3D)
 !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,XACPRR*1.0E3)
 !
@@ -1886,12 +1886,12 @@ IF (CPROGRAM /= 'IDEAL') THEN
   IF (ASSOCIATED(XINPRS)) THEN
   IF (SIZE(XINPRS) /= 0 ) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRS',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XINPRS*3.6E6)
 !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRS',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,XACPRS*1.0E3)
   END IF
@@ -1900,12 +1900,12 @@ IF (CPROGRAM /= 'IDEAL') THEN
   IF (ASSOCIATED(XINPRG)) THEN
   IF (SIZE(XINPRG) /= 0 ) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRG',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XINPRG*3.6E6)
 !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRG',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,XACPRG*1.0E3)
   END IF
@@ -1914,12 +1914,12 @@ IF (CPROGRAM /= 'IDEAL') THEN
   IF (ASSOCIATED(XINPRH)) THEN
   IF (SIZE(XINPRH) /= 0 ) THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRH',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,XINPRH*3.6E6)
 !
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRH',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,XACPRH*1.0E3)
   ENDIF
@@ -1932,7 +1932,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     IF (SIZE(XINPRH) /= 0 ) ZWORK2D = ZWORK2D + XINPRH
     IF (SIZE(XINPRC) /= 0 ) ZWORK2D = ZWORK2D + XINPRC
     CALL FIND_FIELD_ID_FROM_MNHNAME('INPRT',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm hour-1'
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK2D*3.6E6)
 !
@@ -1941,7 +1941,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     IF (SIZE(XINPRH) /= 0 ) ZWORK2D = ZWORK2D + XACPRH
     IF (SIZE(XINPRC) /= 0 ) ZWORK2D = ZWORK2D + XACPRC
     CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRT',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CUNITS = 'mm'
     CALL IO_Field_write(TPFILE,TZFIELD,ZWORK2D*1.0E3)
   END IF
@@ -1952,7 +1952,7 @@ END IF
 IF(LBLOWSNOW) THEN
   IF (ASSOCIATED(XSNWSUBL3D)) THEN
     IF (SIZE(XSNWSUBL3D) /= 0 ) THEN
-      TZFIELD = TFIELDDATA(                                                 &
+      TZFIELD = TFIELDMETADATA(                                             &
         CMNHNAME   = 'SNWSUBL3D',                                           &
         CSTDNAME   = '',                                                    &
         CLONGNAME  = 'SNWSUBL3D',                                           &
@@ -1971,7 +1971,7 @@ IF(LBLOWSNOW) THEN
       END DO
       ZWORK2D(:,:) = ZWORK2D(:,:)*1000. ! vapor water in mm unit
       !
-      TZFIELD = TFIELDDATA(                                     &
+      TZFIELD = TFIELDMETADATA(                                 &
         CMNHNAME   = 'COL_SNWSUBL',                             &
         CSTDNAME   = '',                                        &
         CLONGNAME  = 'COL_SNWSUBL',                             &
@@ -1993,7 +1993,7 @@ IF ((.NOT.LCOUPLES).AND.LOCEAN) THEN
   CALL IO_Field_write(TPFILE,'NFRCLT',NFRCLT)
   CALL IO_Field_write(TPFILE,'NINFRT',NINFRT)
   !
-  TZFIELD = TFIELDDATA(                                   &
+  TZFIELD = TFIELDMETADATA(                               &
     CMNHNAME   = 'SSUFL_T',                               &
     CSTDNAME   = '',                                      &
     CLONGNAME  = 'SSUFL',                                 &
@@ -2006,7 +2006,7 @@ IF ((.NOT.LCOUPLES).AND.LOCEAN) THEN
     LTIMEDEP   = .FALSE.                                  )
   CALL IO_Field_write(TPFILE,TZFIELD,XSSUFL_T(:))
   !
-  TZFIELD = TFIELDDATA(                                   &
+  TZFIELD = TFIELDMETADATA(                               &
     CMNHNAME   = 'SSVFL_T',                               &
     CSTDNAME   = '',                                      &
     CLONGNAME  = 'SSVFL',                                 &
@@ -2019,7 +2019,7 @@ IF ((.NOT.LCOUPLES).AND.LOCEAN) THEN
     LTIMEDEP   = .FALSE.                                  )
   CALL IO_Field_write(TPFILE,TZFIELD,XSSVFL_T(:))
   !
-  TZFIELD = TFIELDDATA(                                    &
+  TZFIELD = TFIELDMETADATA(                                &
     CMNHNAME   = 'SSTFL_T',                                &
     CSTDNAME   = '',                                       &
     CLONGNAME  = 'SSTFL',                                  &
@@ -2032,7 +2032,7 @@ IF ((.NOT.LCOUPLES).AND.LOCEAN) THEN
     LTIMEDEP   = .FALSE.                                   )
   CALL IO_Field_write(TPFILE,TZFIELD,XSSTFL_T(:))
   !
-  TZFIELD = TFIELDDATA(                               &
+  TZFIELD = TFIELDMETADATA(                           &
     CMNHNAME   = 'SSOLA_T',                           &
     CSTDNAME   = '',                                  &
     CLONGNAME  = 'SSOLA',                             &
@@ -2057,7 +2057,7 @@ IF (LFORCING) THEN
 !
     WRITE (YFRC,'(I3.3)') JT
 !
-    TZFIELD = TFIELDDATA(                                 &
+    TZFIELD = TFIELDMETADATA(                             &
       CMNHNAME   = 'DTFRC'//YFRC,                         &
       CSTDNAME   = '',                                    &
       CLONGNAME  = 'DTFRC'//YFRC,                         &
@@ -2070,7 +2070,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                                )
     CALL IO_Field_write(TPFILE,TZFIELD,TDTFRC(JT))
 !
-    TZFIELD = TFIELDDATA(                                        &
+    TZFIELD = TFIELDMETADATA(                                    &
       CMNHNAME   = 'UFRC'//YFRC,                                 &
       CSTDNAME   = '',                                           &
       CLONGNAME  = 'UFRC'//YFRC,                                 &
@@ -2083,7 +2083,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                                       )
     CALL IO_Field_write(TPFILE,TZFIELD,XUFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                           &
+    TZFIELD = TFIELDMETADATA(                                       &
       CMNHNAME   = 'VFRC'//YFRC,                                    &
       CSTDNAME   = '',                                              &
       CLONGNAME  = 'VFRC'//YFRC,                                    &
@@ -2096,7 +2096,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                                          )
     CALL IO_Field_write(TPFILE,TZFIELD,XVFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                   &
+    TZFIELD = TFIELDMETADATA(               &
       CMNHNAME   = 'WFRC'//YFRC,            &
       CSTDNAME   = '',                      &
       CLONGNAME  = 'WFRC'//YFRC,            &
@@ -2109,7 +2109,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                  )
     CALL IO_Field_write(TPFILE,TZFIELD,XWFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                           &
+    TZFIELD = TFIELDMETADATA(                       &
       CMNHNAME   = 'THFRC'//YFRC,                   &
       CSTDNAME   = '',                              &
       CLONGNAME  = 'THFRC'//YFRC,                   &
@@ -2122,7 +2122,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                          )
     CALL IO_Field_write(TPFILE,TZFIELD,XTHFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                        &
+    TZFIELD = TFIELDMETADATA(                    &
       CMNHNAME   = 'RVFRC'//YFRC,                &
       CSTDNAME   = '',                           &
       CLONGNAME  = 'RVFRC'//YFRC,                &
@@ -2135,7 +2135,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                       )
     CALL IO_Field_write(TPFILE,TZFIELD,XRVFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                                    &
+    TZFIELD = TFIELDMETADATA(                                                &
       CMNHNAME   = 'TENDTHFRC'//YFRC,                                        &
       CSTDNAME   = '',                                                       &
       CLONGNAME  = 'TENDTHFRC'//YFRC,                                        &
@@ -2148,7 +2148,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                                                   )
     CALL IO_Field_write(TPFILE,TZFIELD,XTENDTHFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                                 &
+    TZFIELD = TFIELDMETADATA(                                             &
       CMNHNAME   = 'TENDRVFRC'//YFRC,                                     &
       CSTDNAME   = '',                                                    &
       CLONGNAME  = 'TENDRVFRC'//YFRC,                                     &
@@ -2161,7 +2161,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                                                )
     CALL IO_Field_write(TPFILE,TZFIELD,XTENDRVFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                                    &
+    TZFIELD = TFIELDMETADATA(                                                &
       CMNHNAME   = 'GXTHFRC'//YFRC,                                          &
       CSTDNAME   = '',                                                       &
       CLONGNAME  = 'GXTHFRC'//YFRC,                                          &
@@ -2174,7 +2174,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                                                   )
     CALL IO_Field_write(TPFILE,TZFIELD,XGXTHFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                                    &
+    TZFIELD = TFIELDMETADATA(                                                &
       CMNHNAME   = 'GYTHFRC'//YFRC,                                          &
       CSTDNAME   = '',                                                       &
       CLONGNAME  = 'GYTHFRC'//YFRC,                                          &
@@ -2187,7 +2187,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                                                   )
     CALL IO_Field_write(TPFILE,TZFIELD,XGYTHFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                     &
+    TZFIELD = TFIELDMETADATA(                 &
       CMNHNAME   = 'PGROUNDFRC'//YFRC,        &
       CSTDNAME   = '',                        &
       CLONGNAME  = 'PGROUNDFRC'//YFRC,        &
@@ -2200,7 +2200,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                    )
     CALL IO_Field_write(TPFILE,TZFIELD,XPGROUNDFRC(JT))
 !
-    TZFIELD = TFIELDDATA(                                &
+    TZFIELD = TFIELDMETADATA(                            &
       CMNHNAME   = 'TENDUFRC'//YFRC,                     &
       CSTDNAME   = '',                                   &
       CLONGNAME  = 'TENDUFRC'//YFRC,                     &
@@ -2213,7 +2213,7 @@ IF (LFORCING) THEN
       LTIMEDEP   = .FALSE.                               )
     CALL IO_Field_write(TPFILE,TZFIELD,XTENDUFRC(:,JT))
 !
-    TZFIELD = TFIELDDATA(                                &
+    TZFIELD = TFIELDMETADATA(                            &
       CMNHNAME   = 'TENDVFRC'//YFRC,                     &
       CSTDNAME   = '',                                   &
       CLONGNAME  = 'TENDVFRC'//YFRC,                     &
@@ -2234,7 +2234,7 @@ END IF
 ! -------------------------------------------------------------------------
 IF ( L2D_ADV_FRC ) THEN
 !
-  TZFIELD = TFIELDDATA(                        &
+  TZFIELD = TFIELDMETADATA(                    &
     CMNHNAME   = 'NADVFRC1',                   &
     CSTDNAME   = '',                           &
     CLONGNAME  = 'NADVFRC1',                   &
@@ -2251,7 +2251,7 @@ IF ( L2D_ADV_FRC ) THEN
 !
     WRITE (YFRC,'(I3.3)') JT
 !
-    TZFIELD = TFIELDDATA(                                           &
+    TZFIELD = TFIELDMETADATA(                                       &
       CMNHNAME   = 'DTADV'//YFRC,                                   &
       CSTDNAME   = '',                                              &
       CLONGNAME  = 'DTADV'//YFRC,                                   &
@@ -2264,7 +2264,7 @@ IF ( L2D_ADV_FRC ) THEN
       LTIMEDEP   = .FALSE.                                          )
     CALL IO_Field_write(TPFILE,TZFIELD,TDTADVFRC(JT))
 !
-    TZFIELD = TFIELDDATA(          &
+    TZFIELD = TFIELDMETADATA(      &
       CMNHNAME   = 'TH_ADV'//YFRC, &
       CSTDNAME   = '',             &
       CLONGNAME  = 'TH_ADV'//YFRC, &
@@ -2277,7 +2277,7 @@ IF ( L2D_ADV_FRC ) THEN
       LTIMEDEP   = .FALSE.         )
     CALL IO_Field_write(TPFILE,TZFIELD,XDTHFRC(:,:,:,JT))
 !    
-    TZFIELD = TFIELDDATA(         &
+    TZFIELD = TFIELDMETADATA(     &
       CMNHNAME   = 'Q_ADV'//YFRC, &
       CSTDNAME   = '',            &
       CLONGNAME  = 'Q_ADV'//YFRC, &
@@ -2295,7 +2295,7 @@ ENDIF
 !
 IF ( L2D_REL_FRC ) THEN
 !
-  TZFIELD = TFIELDDATA(                        &
+  TZFIELD = TFIELDMETADATA(                    &
     CMNHNAME   = 'NRELFRC1',                   &
     CSTDNAME   = '',                           &
     CLONGNAME  = 'NRELFRC1',                   &
@@ -2312,7 +2312,7 @@ IF ( L2D_REL_FRC ) THEN
 !
     WRITE (YFRC,'(I3.3)') JT
 !
-    TZFIELD = TFIELDDATA(                                            &
+    TZFIELD = TFIELDMETADATA(                                        &
       CMNHNAME   = 'DTREL'//YFRC,                                    &
       CSTDNAME   = '',                                               &
       CLONGNAME  = 'DTREL'//YFRC,                                    &
@@ -2325,7 +2325,7 @@ IF ( L2D_REL_FRC ) THEN
       LTIMEDEP   = .FALSE.                                           )
     CALL IO_Field_write(TPFILE,TZFIELD,TDTRELFRC(JT))
 !                                                                
-    TZFIELD = TFIELDDATA(          &
+    TZFIELD = TFIELDMETADATA(      &
       CMNHNAME   = 'TH_REL'//YFRC, &
       CSTDNAME   = '',             &
       CLONGNAME  = 'TH_REL'//YFRC, &
@@ -2338,7 +2338,7 @@ IF ( L2D_REL_FRC ) THEN
       LTIMEDEP   = .FALSE.         )
     CALL IO_Field_write(TPFILE,TZFIELD,XTHREL(:,:,:,JT))
 !    
-    TZFIELD = TFIELDDATA(         &
+    TZFIELD = TFIELDMETADATA(     &
       CMNHNAME   = 'Q_REL'//YFRC, &
       CSTDNAME   = '',            &
       CLONGNAME  = 'Q_REL'//YFRC, &
@@ -2417,7 +2417,7 @@ IF ( CPROGRAM=='REAL  ' ) THEN
 !*       1.16    Dummy variables in PREP_REAL_CASE
 !
   IF (ALLOCATED(CDUMMY_2D)) THEN
-    TZFIELD = TFIELDDATA(                           &
+    TZFIELD = TFIELDMETADATA(                       &
       CMNHNAME   = 'generic for CDUMMY_2D variables', & !Temporary name to ease identification
       CSTDNAME   = '',                                &
       CUNITS     = '',                                &
@@ -2442,7 +2442,7 @@ END IF
 !             i) Main
 !
 IF (LMAIN_EOL .AND. IMI == NMODEL_EOL) THEN
-  TZFIELD = TFIELDDATA(                                &
+  TZFIELD = TFIELDMETADATA(                            &
     CMNHNAME   = 'generic for wind turbine variables', & !Temporary name to ease identification
     CSTDNAME   = '',                                   &
     CUNITS     = 'N',                                  &
@@ -2489,7 +2489,7 @@ SELECT CASE(CMETH_EOL)
 !
   CASE('ADNR') ! Actuator Disc Non-Rotating
 !
-    TZFIELD = TFIELDDATA(                        &
+    TZFIELD = TFIELDMETADATA(                    &
       CMNHNAME   = 'generic for ADNR variables', & !Temporary name to ease identification
       CSTDNAME   = '',                           &
       CUNITS     = '1',                          &
@@ -2529,7 +2529,7 @@ SELECT CASE(CMETH_EOL)
 !
   CASE('ALM') ! Actuator Line Method
 !
-    TZFIELD = TFIELDDATA(                       &
+    TZFIELD = TFIELDMETADATA(                   &
       CMNHNAME   = 'generic for ALM variables', & !Temporary name to ease identification
       CSTDNAME   = '',                          &
       CDIR       = '--',                        &
@@ -2599,7 +2599,7 @@ SELECT CASE(CMETH_EOL)
 !
     IF (MEAN_COUNT /= 0) THEN
 !
-      TZFIELD = TFIELDDATA(                            &
+      TZFIELD = TFIELDMETADATA(                        &
         CMNHNAME   = 'generic for ALM mean variables', & !Temporary name to ease identification
         CSTDNAME   = '',                               &
         CDIR       = '--',                             &
diff --git a/src/MNH/write_surf_mnh.f90 b/src/MNH/write_surf_mnh.f90
index 21ac274afdbbd60c631f68f70466281fd8b6c5d9..5ede529c594b532b286d72ec910a020335333bbe 100644
--- a/src/MNH/write_surf_mnh.f90
+++ b/src/MNH/write_surf_mnh.f90
@@ -11,7 +11,7 @@ CONTAINS
 
 SUBROUTINE PREPARE_METADATA_WRITE_SURF(HREC,HDIR,HCOMMENT,KGRID,KTYPE,KDIMS,HSUBR,TPFIELD)
 !
-use modd_field, only: tfielddata, tfieldlist
+use modd_field, only: tfieldmetadata, tfieldlist
 
 use mode_field, only: Find_field_id_from_mnhname
 USE MODE_MSG
@@ -23,7 +23,7 @@ INTEGER,                INTENT(IN)  :: KGRID    ! Localization on the model grid
 INTEGER,                INTENT(IN)  :: KTYPE    ! Datatype
 INTEGER,                INTENT(IN)  :: KDIMS    ! Number of dimensions
 CHARACTER(LEN=*),       INTENT(IN)  :: HSUBR    ! name of the subroutine calling
-TYPE(TFIELDDATA),       INTENT(OUT) :: TPFIELD  ! metadata of field
+TYPE(TFIELDMETADATA),   INTENT(OUT) :: TPFIELD  ! metadata of field
 !
 CHARACTER(LEN=32) :: YTXT
 INTEGER           :: IDX,IID, IRESP
@@ -99,7 +99,7 @@ IF (IRESP==0) THEN
   END IF
 ELSE
   CALL PRINT_MSG(NVERB_DEBUG,'IO',TRIM(HSUBR),TRIM(HREC)//' not found in FIELDLIST. Generating default metadata')
-  TPFIELD = TFIELDDATA(          &
+  TPFIELD = TFIELDMETADATA(      &
     CMNHNAME   = TRIM(HREC),     &
     CSTDNAME   = '',             &
     CLONGNAME  = TRIM(HREC),     &
@@ -175,7 +175,7 @@ END MODULE MODE_WRITE_SURF_MNH_TOOLS
 !
 USE MODD_CONF,           ONLY: CPROGRAM
 USE MODD_CONF_n,         ONLY: CSTORAGE_TYPE
-use modd_field,          only: tfielddata,TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_GRID
 USE MODD_IO,             ONLY: TFILE_SURFEX
 
@@ -194,9 +194,9 @@ CHARACTER(LEN=100),     INTENT(IN)  :: HCOMMENT ! Comment string
 !
 !*      0.2   Declarations of local variables
 !
-CHARACTER(LEN=5) :: YMSG
-INTEGER          :: IID, IRESP
-TYPE(TFIELDDATA) :: TZFIELD
+CHARACTER(LEN=5)     :: YMSG
+INTEGER              :: IID, IRESP
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
@@ -285,7 +285,7 @@ END SUBROUTINE WRITE_SURFX0_MNH
 !             ------------
 !
 USE MODD_CONF_n,        ONLY: CSTORAGE_TYPE
-use modd_field,         only: tfielddata, tfieldlist, TYPEREAL
+use modd_field,         only: tfieldmetadata, tfieldlist, TYPEREAL
 USE MODD_GRID_n,        ONLY: XXHAT, XYHAT
 USE MODD_IO,            ONLY: TFILE_SURFEX
 USE MODD_IO_SURF_MNH,   ONLY :NMASK, CMASK,                          &
@@ -334,8 +334,8 @@ INTEGER           :: IIU, IJU, IIB, IJB, IIE, IJE ! dimensions of horizontal fie
 INTEGER, DIMENSION(:), ALLOCATABLE :: IMASK       ! mask for unpacking
 REAL              :: ZUNDEF                       ! undefined value in SURFEX
 !
-CHARACTER(LEN=5) :: YMSG
-TYPE(TFIELDDATA) :: TZFIELD
+CHARACTER(LEN=5)     :: YMSG
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFX1_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
@@ -437,7 +437,7 @@ IF (      (CSTORAGE_TYPE=='PG' .OR. CSTORAGE_TYPE=='SU')  &
 !
   IF (HDIR=='A') THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('XHAT',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CDIR  = '--'
     CALL IO_Field_write(TFILE_SURFEX,TZFIELD,ZW1D(:),KRESP)
   END IF
@@ -468,7 +468,7 @@ ELSE IF ( (CSTORAGE_TYPE=='PG' .OR. CSTORAGE_TYPE=='SU')  &
   END IF
   IF (HDIR=='A') THEN
     CALL FIND_FIELD_ID_FROM_MNHNAME('YHAT',IID,IRESP)
-    TZFIELD = TFIELDLIST(IID)
+    TZFIELD = TFIELDMETADATA( TFIELDLIST(IID) )
     TZFIELD%CDIR  = '--'
     CALL IO_Field_write(TFILE_SURFEX,TZFIELD,ZW1D(:),KRESP)
   END IF
@@ -549,7 +549,7 @@ END SUBROUTINE WRITE_SURFX1_MNH
 !             ------------
 !
 USE MODD_CONF_n,         ONLY: CSTORAGE_TYPE
-use modd_field,          only: tfielddata, TYPELOG, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPELOG, TYPEREAL
 USE MODD_DATA_COVER_PAR, ONLY: JPCOVER
 USE MODD_IO,             ONLY: TFILE_SURFEX
 USE MODD_IO_SURF_MNH,    ONLY: NMASK, CMASK,                          &
@@ -603,8 +603,8 @@ REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZWORK3D
 !JUANZ
 LOGICAL           :: GCOVER_PACKED   ! .T. if cover fields are all packed together
 !
-CHARACTER(LEN=5)  :: YMSG
-TYPE(TFIELDDATA)  :: TZFIELD
+CHARACTER(LEN=5)     :: YMSG
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFX2COV_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
@@ -641,7 +641,7 @@ END IF
 !GCOVER_PACKED = ( NB_PROCIO_W /= 1 )
 GCOVER_PACKED = .FALSE.
 !
-TZFIELD = TFIELDDATA(          &
+TZFIELD = TFIELDMETADATA(      &
   CMNHNAME   = 'COVER_PACKED', &
   CSTDNAME   = '',             &
   CLONGNAME  = 'COVER_PACKED', &
@@ -672,7 +672,7 @@ END DO
 !
 IF (.NOT. GCOVER_PACKED) THEN
   ICOVER=0
-  TZFIELD = TFIELDDATA(                         &
+  TZFIELD = TFIELDMETADATA(                     &
     CMNHNAME   = 'generic for COVER variables', & !Temporary name to ease identification
     CSTDNAME   = '',                            &
     CUNITS     = '',                            &
@@ -754,7 +754,7 @@ END SUBROUTINE WRITE_SURFX2COV_MNH
 !
 USE MODD_CONF_n,         ONLY: CSTORAGE_TYPE
 USE MODD_DATA_COVER_PAR, ONLY: JPCOVER
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,             ONLY: TFILE_SURFEX
 USE MODD_IO_SURF_MNH,    ONLY: NMASK, CMASK,                          &
                                NIU, NJU, NIB, NJB, NIE, NJE,          &
@@ -797,8 +797,8 @@ INTEGER           :: IIU, IJU, IIB, IJB, IIE, IJE ! dimensions of horizontal fie
 INTEGER, DIMENSION(:), ALLOCATABLE :: IMASK       ! mask for unpacking
 REAL              :: ZUNDEF                       ! undefined value in SURFEX
 !
-CHARACTER(LEN=5)  :: YMSG
-TYPE(TFIELDDATA)  :: TZFIELD
+CHARACTER(LEN=5)     :: YMSG
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFX2_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
@@ -904,7 +904,7 @@ END SUBROUTINE WRITE_SURFX2_MNH
 !             ------------
 !
 USE MODD_CONF_n,         ONLY: CSTORAGE_TYPE
-use modd_field,          only: tfielddata, TYPEINT
+use modd_field,          only: tfieldmetadata, TYPEINT
 USE MODD_IO,             ONLY: TFILE_SURFEX
 USE MODD_IO_SURF_MNH,    ONLY: NIU_ALL, NJU_ALL
 USE MODD_PARAMETERS,     ONLY: JPHEXT
@@ -924,9 +924,9 @@ CHARACTER(LEN=100),     INTENT(IN)  :: HCOMMENT ! Comment string
 !
 !*      0.2   Declarations of local variables
 !
-INTEGER          :: IFIELD
-TYPE(TFIELDDATA) :: TZFIELD
-CHARACTER(LEN=5) :: YMSG
+INTEGER              :: IFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
+CHARACTER(LEN=5)     :: YMSG
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFN0_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
@@ -998,7 +998,7 @@ END SUBROUTINE WRITE_SURFN0_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-use modd_field,          only: tfielddata, TYPEINT
+use modd_field,          only: tfieldmetadata, TYPEINT
 USE MODD_IO,             ONLY: TFILE_SURFEX
 USE MODD_IO_SURF_MNH,    ONLY: NMASK, CMASK, &
                                NIU, NJU, NIB, NJB, NIE, NJE
@@ -1028,8 +1028,8 @@ CHARACTER(LEN=1),       INTENT(IN)  :: HDIR     ! type of field :
 !
 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IWORK  ! work array written in the file
 !
-CHARACTER(LEN=5) :: YMSG
-TYPE(TFIELDDATA) :: TZFIELD
+CHARACTER(LEN=5)     :: YMSG
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFN1_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
@@ -1102,7 +1102,7 @@ END SUBROUTINE WRITE_SURFN1_MNH
 !             ------------
 !
 USE MODD_CONF_n,         ONLY: CSTORAGE_TYPE
-use modd_field,          only: tfielddata, TYPECHAR, TYPELOG
+use modd_field,          only: tfieldmetadata, TYPECHAR, TYPELOG
 USE MODD_IO,             ONLY: TFILE_SURFEX
 USE MODD_IO_SURF_MNH,    ONLY: NIU_ALL, NJU_ALL
 
@@ -1121,9 +1121,9 @@ CHARACTER(LEN=100),     INTENT(IN)  :: HCOMMENT ! Comment string
 !
 !*      0.2   Declarations of local variables
 !
-LOGICAL          :: GCARTESIAN
-TYPE(TFIELDDATA) :: TZFIELD
-CHARACTER(LEN=5) :: YMSG
+LOGICAL              :: GCARTESIAN
+TYPE(TFIELDMETADATA) :: TZFIELD
+CHARACTER(LEN=5)     :: YMSG
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFC0_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
@@ -1198,7 +1198,7 @@ END SUBROUTINE WRITE_SURFC0_MNH
 !             ------------
 !
 USE MODD_CONF_n,         ONLY: CSTORAGE_TYPE
-use modd_field,          only: tfielddata, TYPEINT, TYPELOG
+use modd_field,          only: tfieldmetadata, TYPEINT, TYPELOG
 USE MODD_IO,             ONLY: TFILE_SURFEX
 USE MODD_IO_SURF_MNH,    ONLY: NMASK, CMASK, &
                                NIU, NJU, NIB, NJB, NIE, NJE
@@ -1228,8 +1228,8 @@ CHARACTER(LEN=1),       INTENT(IN)  :: HDIR     ! type of field :
 LOGICAL, DIMENSION(:,:), ALLOCATABLE :: GWORK  ! work array written in the file
 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IWORK  ! work array written in the file
 !
-CHARACTER(LEN=5) :: YMSG
-TYPE(TFIELDDATA) :: TZFIELD
+CHARACTER(LEN=5)     :: YMSG
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFL1_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
@@ -1313,7 +1313,7 @@ END SUBROUTINE WRITE_SURFL1_MNH
 !             ------------
 !
 USE MODD_CONF_n,         ONLY: CSTORAGE_TYPE
-use modd_field,          only: tfielddata, TYPELOG
+use modd_field,          only: tfieldmetadata, TYPELOG
 USE MODD_IO,             ONLY: TFILE_SURFEX
 USE MODD_IO_SURF_MNH,    ONLY: CMASK
 
@@ -1332,8 +1332,8 @@ CHARACTER(LEN=100),     INTENT(IN)  :: HCOMMENT ! Comment string
 !
 !*      0.2   Declarations of local variables
 !
-CHARACTER(LEN=5) :: YMSG
-TYPE(TFIELDDATA) :: TZFIELD
+CHARACTER(LEN=5)     :: YMSG
+TYPE(TFIELDMETADATA) :: TZFIELD
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFL0_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
 !
@@ -1396,7 +1396,7 @@ END SUBROUTINE WRITE_SURFL0_MNH
 !             ------------
 !
 USE MODD_CONF_n,         ONLY: CSTORAGE_TYPE
-use modd_field,          only: tfielddata, TYPEDATE
+use modd_field,          only: tfieldmetadata, TYPEDATE
 USE MODD_IO,             ONLY: TFILE_SURFEX
 USE MODD_TYPE_DATE
 
@@ -1420,11 +1420,11 @@ CHARACTER(LEN=100), INTENT(IN)  :: HCOMMENT ! Comment string
 !*      0.2   Declarations of local variables
 !
 !
-CHARACTER(LEN=LEN_HREC)      :: YRECFM    ! Name of the article to be written
-INTEGER, DIMENSION(3)  :: ITDATE
-CHARACTER(LEN=5) :: YMSG
-TYPE (DATE_TIME) :: TZDATA
-TYPE(TFIELDDATA) :: TZFIELD
+CHARACTER(LEN=LEN_HREC) :: YRECFM    ! Name of the article to be written
+INTEGER, DIMENSION(3)   :: ITDATE
+CHARACTER(LEN=5)        :: YMSG
+TYPE (DATE_TIME)        :: TZDATA
+TYPE(TFIELDMETADATA)    :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFT0_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
@@ -1490,7 +1490,7 @@ END SUBROUTINE WRITE_SURFT0_MNH
 !*      0.    DECLARATIONS
 !             ------------
 !
-use modd_field,          only: tfielddata, TYPEINT, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEINT, TYPEREAL
 USE MODD_IO,             ONLY: TFILE_SURFEX
 USE MODD_CONF_n,         ONLY: CSTORAGE_TYPE
 
@@ -1514,9 +1514,9 @@ CHARACTER(LEN=100), INTENT(IN)  :: HCOMMENT ! Comment string
 !*      0.2   Declarations of local variables
 !
 !
-INTEGER, DIMENSION(3,KL1)  :: ITDATE
-CHARACTER(LEN=5) :: YMSG
-TYPE(TFIELDDATA) :: TZFIELD
+CHARACTER(LEN=5)          :: YMSG
+INTEGER, DIMENSION(3,KL1) :: ITDATE
+TYPE(TFIELDMETADATA)      :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFT1_MNH',TRIM(TFILE_SURFEX%CNAME)//': writing '//TRIM(HREC))
@@ -1530,7 +1530,7 @@ ELSE
   ITDATE(2,:) = KMONTH (:)
   ITDATE(3,:) = KDAY   (:)
   !
-  TZFIELD = TFIELDDATA(                &
+  TZFIELD = TFIELDMETADATA(            &
     CMNHNAME   = TRIM(HREC)//'%TDATE', &
     CSTDNAME   = '',                   &
     CLONGNAME  = TRIM(HREC)//'%TDATE', &
@@ -1549,7 +1549,7 @@ ELSE
     CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFT1_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG)
   END IF
   !
-  TZFIELD = TFIELDDATA(                &
+  TZFIELD = TFIELDMETADATA(            &
     CMNHNAME   = TRIM(HREC)//'%xtime', &
     CSTDNAME   = '',                   &
     CLONGNAME  = TRIM(HREC)//'%xtime', &
diff --git a/src/MNH/zsmt_pgd.f90 b/src/MNH/zsmt_pgd.f90
index c6c85422fe121d1f6e29de82b05ef0d72c67b5ca..3aea708e68726cdae989f5b7320123247ef02daa 100644
--- a/src/MNH/zsmt_pgd.f90
+++ b/src/MNH/zsmt_pgd.f90
@@ -67,7 +67,7 @@ END MODULE MODI_ZSMT_PGD
 !
 !*       0.    DECLARATIONS
 !
-use modd_field,          only: tfielddata, TYPEREAL
+use modd_field,          only: tfieldmetadata, TYPEREAL
 USE MODD_IO,         ONLY : TFILEDATA
 USE MODD_PARAMETERS, ONLY : JPHEXT, XUNDEF
 !
@@ -122,7 +122,7 @@ INTEGER                          :: INFO_ll                ! error return code
 INTEGER :: IIB,IIE,IJB,IJE
 REAL, DIMENSION(:), ALLOCATABLE  :: ZXHAT
 REAL, DIMENSION(:), ALLOCATABLE  :: ZYHAT
-TYPE(TFIELDDATA) :: TZFIELD
+TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
 !*       1.    Read orography in the file
@@ -334,7 +334,7 @@ IF(OHSLOP) THEN
  END DO
  !
   ! Writes filtred orography and slopes along i and j
-  TZFIELD = TFIELDDATA(                     &
+  TZFIELD = TFIELDMETADATA(                 &
     CMNHNAME   = 'ZSLOPEX',                 &
     CSTDNAME   = '',                        &
     CLONGNAME  = 'ZSLOPEX',                 &
@@ -347,7 +347,7 @@ IF(OHSLOP) THEN
     LTIMEDEP   = .FALSE.                    )
  CALL IO_Field_write(TPFILE,TZFIELD,ZSLOPEX)
  !
-  TZFIELD = TFIELDDATA(                     &
+  TZFIELD = TFIELDMETADATA(                 &
     CMNHNAME   = 'ZSLOPEY',                 &
     CSTDNAME   = '',                        &
     CLONGNAME  = 'ZSLOPEY',                 &
@@ -360,7 +360,7 @@ IF(OHSLOP) THEN
     LTIMEDEP   = .FALSE.                    )
  CALL IO_Field_write(TPFILE,TZFIELD,ZSLOPEY)
  !
-  TZFIELD = TFIELDDATA(               &
+  TZFIELD = TFIELDMETADATA(           &
     CMNHNAME   = 'ZS_FILTR',          &
     CSTDNAME   = '',                  &
     CLONGNAME  = 'ZS_FILTR',          &