diff --git a/src/LIB/SURCOUCHE/src/fmreadwrit.f90 b/src/LIB/SURCOUCHE/src/fmreadwrit.f90
index 7e5f20dc5dc92f0c106861ead22bd6d265148a01..ebd3572b1f5c07d69965b3ec57bf62f142768a2b 100644
--- a/src/LIB/SURCOUCHE/src/fmreadwrit.f90
+++ b/src/LIB/SURCOUCHE/src/fmreadwrit.f90
@@ -613,7 +613,7 @@ INTEGER(KIND=LFI_INT),                   INTENT(OUT)   :: KTOTAL
 INTEGER(KIND=LFI_INT),                   INTENT(OUT)   :: KRESP
 LOGICAL,                                 INTENT(OUT)   :: OGOOD
 !
-INTEGER                      :: IROW,J
+INTEGER                      :: IERRLEVEL,IROW,J
 INTEGER,DIMENSION(JPXKRK)    :: ICOMMENT
 INTEGER(KIND=LFI_INT)        :: ICOMLEN,INUMBR,IPOSEX
 CHARACTER(LEN=:),ALLOCATABLE :: YMSG
@@ -687,7 +687,12 @@ ENDIF
 IF (KWORK(1)/=TPFIELD%NGRID) THEN
   WRITE(YVAL_FILE,'(I12)') KWORK(1)
   WRITE(YVAL_MEM, '(I12)') TPFIELD%NGRID
-  CALL PRINT_MSG(NVERB_ERROR,'IO','IO_READ_CHECK_FIELD_LFI','expected GRID value ('//TRIM(ADJUSTL(YVAL_MEM))// &
+  IF (TPFIELD%NDIMS==0) THEN
+    IERRLEVEL = NVERB_WARNING
+  ELSE
+    IERRLEVEL = NVERB_ERROR
+  END IF
+  CALL PRINT_MSG(IERRLEVEL,'IO','IO_READ_CHECK_FIELD_LFI','expected GRID value ('//TRIM(ADJUSTL(YVAL_MEM))// &
                  ') is different than found in file ('//TRIM(ADJUSTL(YVAL_FILE))//') for variable '//TRIM(TPFIELD%CMNHNAME))
   TPFIELD%NGRID = KWORK(1)
   KRESP = -111 !Used later to broadcast modified metadata
diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index 434009ccfc077ee34ee94f5fc3a0213aff39928c..6a47642fa45586e1c4bb5419c77ede38d0aaf538 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -173,6 +173,7 @@ SELECT CASE(TPFILE%CTYPE)
       IF (IRESP2/=0) THEN
         TZFIELD%CMNHNAME   = 'MASDEV'
         TZFIELD%CLONGNAME  = 'MesoNH version (without bugfix)'
+        TZFIELD%NDIMS      = 0
         CALL IO_READ_FIELD(TPFILE,TZFIELD,IMASDEV,IRESP2)
         IF (IRESP2/=0) THEN
           CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_OPEN_ll','unknown MASDEV version for '//TRIM(TPFILE%CNAME))
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index b2c466e82486cb4997c683f268bdccf8c2a68e80..4f21d4ef4b9d8d78c9a14bcad954259055a1c5d3 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -424,7 +424,7 @@ USE MODD_ADVFRC_n
 USE MODD_RELFRC_n
 USE MODD_2D_FRC
 USE MODD_IO_SURF_MNH, ONLY : IO_SURF_MNH_MODEL
-USE MODD_IO_ll,       ONLY : CIO_DIR,TFILEDATA,TFILE_FIRST,TFILE_LAST
+USE MODD_IO_ll,       ONLY : CIO_DIR,TFILEDATA,TFILE_DUMMY,TFILE_FIRST,TFILE_LAST
 !
 USE MODD_CH_PRODLOSSTOT_n
 USE MODI_CH_INIT_PRODLOSSTOT_n
@@ -2084,6 +2084,8 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='SPAWN ')) THEN
     CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
   ENDIF
 ENDIF
+!
+IF (.NOT.ASSOCIATED(TINIFILEPGD)) TINIFILEPGD => TFILE_DUMMY
 !
   !* special case after spawning in prep_real_case
 IF (CSURF=='EXRM' .AND. CPROGRAM=='REAL  ') CSURF = 'EXTE'
diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90
index 54ea6b7a382f339d2bb8d3b76ab2add1c37fa0bf..15eb87a89ad207a9bd4c21069b126c7b901233fd 100644
--- a/src/MNH/write_budget.f90
+++ b/src/MNH/write_budget.f90
@@ -1027,7 +1027,7 @@ SELECT CASE (CBUTYPE)
         TZFIELD%CUNITS     = ''
         TZFIELD%CDIR       = 'XY'
         WRITE(TZFIELD%CCOMMENT,FMT="('X_Y_MASK',I4.4)") NBUTSHIFT
-        TZFIELD%NGRID      = 0
+        TZFIELD%NGRID      = 1
         TZFIELD%NTYPE      = TYPEREAL
         TZFIELD%NDIMS      = 6
         TZFIELD%LTIMEDEP   = .FALSE.
diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90
index b14011321b5e447a4b86bfcfa57f7e4d72b5c299..544eda16f7747b1d6f6a6890a272a9113a344184 100644
--- a/src/MNH/write_diachro.f90
+++ b/src/MNH/write_diachro.f90
@@ -373,12 +373,12 @@ DO J = 1,IP
 ! BUG ...ca passe que si PRESENT(OICP) sinon OICP non defini 
 IF (PRESENT(OICP) .AND. PRESENT(OJCP)) THEN
   IF(HTYPE == 'CART' .AND. .NOT. OICP .AND. .NOT. OJCP) THEN
-    TZFIELD%CMNHNAME   = TRIM(HGROUP)//'.'//TRIM(HTITRE(J))
+    TZFIELD%CMNHNAME   = TRIM(HGROUP)//'.PROC'//YJ
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
     TZFIELD%CUNITS     = TRIM(HUNITE(J))
     TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = TRIM(HCOMMENT(J))
+    TZFIELD%CCOMMENT   = TRIM(HTITRE(J))//' - '//TRIM(HCOMMENT(J))//' ('//TRIM(HUNITE(J))//')'
     TZFIELD%NGRID      = KGRID(J)
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 5
@@ -386,12 +386,12 @@ IF (PRESENT(OICP) .AND. PRESENT(OJCP)) THEN
     CALL IO_WRITE_FIELD_BOX(TPDIAFILE,TZFIELD,'BUDGET',PVAR(:,:,:,:,:,J), &
                             KIL+JPHEXT,KIH+JPHEXT,KJL+JPHEXT,KJH+JPHEXT)
   ELSE
-    TZFIELD%CMNHNAME   = TRIM(HGROUP)//'.'//TRIM(HTITRE(J))
+    TZFIELD%CMNHNAME   = TRIM(HGROUP)//'.PROC'//YJ
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
     TZFIELD%CUNITS     = TRIM(HUNITE(J))
     TZFIELD%CDIR       = '--'
-    TZFIELD%CCOMMENT   = TRIM(HCOMMENT(J))
+    TZFIELD%CCOMMENT   = TRIM(HTITRE(J))//' - '//TRIM(HCOMMENT(J))//' ('//TRIM(HUNITE(J))//')'
     TZFIELD%NGRID      = KGRID(J)
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 5
@@ -399,12 +399,12 @@ IF (PRESENT(OICP) .AND. PRESENT(OJCP)) THEN
     CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,PVAR(:,:,:,:,:,J))
   ENDIF
 ELSE
-  TZFIELD%CMNHNAME   = TRIM(HGROUP)//'.'//TRIM(HTITRE(J))
+    TZFIELD%CMNHNAME   = TRIM(HGROUP)//'.PROC'//YJ
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
   TZFIELD%CUNITS     = TRIM(HUNITE(J))
   TZFIELD%CDIR       = '--'
-  TZFIELD%CCOMMENT   = TRIM(HCOMMENT(J))
+  TZFIELD%CCOMMENT   = TRIM(HTITRE(J))//' - '//TRIM(HCOMMENT(J))//' ('//TRIM(HUNITE(J))//')'
   TZFIELD%NGRID      = KGRID(J)
   TZFIELD%NTYPE      = TYPEREAL
   TZFIELD%NDIMS      = 5
diff --git a/src/MNH/write_surf_mnh.f90 b/src/MNH/write_surf_mnh.f90
index f454f46b197204675030c740e1ae9a6803a7c448..926cb739c0cc16d7ed9e5647bd7821ee37cfc9d1 100644
--- a/src/MNH/write_surf_mnh.f90
+++ b/src/MNH/write_surf_mnh.f90
@@ -34,13 +34,13 @@ IF (IRESP==0) THEN
   IF (TRIM(TPFIELD%CLONGNAME)/=TRIM(HREC)) THEN
     CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'CLONGNAME different ('//TRIM(TPFIELD%CLONGNAME) &
                    //'/'//TRIM(HREC)//') than expected for article '//TRIM(HREC))
-    TPFIELD%CLONGNAME = TRIM(HREC)
+!     TPFIELD%CLONGNAME = TRIM(HREC)
   END IF
   !Modify and check CDIR
   IF (TPFIELD%CDIR/=HDIR) THEN
     CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'CDIR different ('//TRIM(TPFIELD%CDIR) &
                    //'/'//TRIM(HDIR)//') than expected for article '//TRIM(HREC))
-    TPFIELD%CDIR = HDIR
+!     TPFIELD%CDIR = HDIR
   END IF
   !Modify and check CCOMMENT
   IF (LEN_TRIM(HCOMMENT)/=0) THEN
@@ -60,7 +60,7 @@ IF (IRESP==0) THEN
       IF (GWARN) THEN
         CALL PRINT_MSG(NVERB_INFO,'IO',TRIM(HSUBR),'CCOMMENT different ('//TRIM(TPFIELD%CCOMMENT) &
                        //'/'//TRIM(HCOMMENT)//') than expected for article '//TRIM(HREC))
-        TPFIELD%CCOMMENT = TRIM(HCOMMENT)
+!         TPFIELD%CCOMMENT = TRIM(HCOMMENT)
       END IF
     END IF
   ELSE
@@ -72,21 +72,21 @@ IF (IRESP==0) THEN
     WRITE(YTXT,'( I0,"/",I0 )') TPFIELD%NGRID,KGRID
     CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'NGRID different ('//TRIM(YTXT) &
                     //') than expected for article '//TRIM(HREC))
-    TPFIELD%NGRID = KGRID
+!     TPFIELD%NGRID = KGRID
   END IF
   !Modify and check NTYPE
   IF (TPFIELD%NTYPE/=KTYPE) THEN
     WRITE(YTXT,'( I0,"/",I0 )') TPFIELD%NTYPE,KTYPE
     CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'NTYPE different ('//TRIM(YTXT) &
                     //') than expected for article '//TRIM(HREC))
-    TPFIELD%NTYPE = KTYPE
+!     TPFIELD%NTYPE = KTYPE
   END IF
   !Modify and check NDIMS
   IF (TPFIELD%NDIMS/=KDIMS) THEN
     WRITE(YTXT,'( I0,"/",I0 )') TPFIELD%NDIMS,KDIMS
     CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'NDIMS different ('//TRIM(YTXT) &
                     //') than expected for article '//TRIM(HREC))
-    TPFIELD%NDIMS = KDIMS
+!     TPFIELD%NDIMS = KDIMS
   END IF
 ELSE
   CALL PRINT_MSG(NVERB_DEBUG,'IO',TRIM(HSUBR),TRIM(HREC)//' not found in FIELDLIST. Generating default metadata')
@@ -1122,17 +1122,7 @@ IF ( (CSTORAGE_TYPE=='PG' .OR. CSTORAGE_TYPE=='SU')  &
     GCARTESIAN = .TRUE.
   END IF
   !
-  TZFIELD%CMNHNAME   = 'CARTESIAN'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'CARTESIAN'
-  TZFIELD%CUNITS     = ''
-  TZFIELD%CDIR       = '--'
-  TZFIELD%CCOMMENT   = ''
-  TZFIELD%NGRID      = 0
-  TZFIELD%NTYPE      = TYPELOG
-  TZFIELD%NDIMS      = 0
-  TZFIELD%LTIMEDEP   = .FALSE.
-  CALL IO_WRITE_FIELD(TFILE_SURFEX,TZFIELD,GCARTESIAN,KRESP)
+  CALL IO_WRITE_FIELD(TFILE_SURFEX,'CARTESIAN',GCARTESIAN,KRESP)
   !
   IF (KRESP /=0) THEN
     WRITE ( YMSG, '( I5 )' ) KRESP