diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90
index 0ddb6828df367c941a4fe5b0f62bde77df98cfdb..81e8c12aa1e3a50398c1de9bb6fcaa55c46d011c 100644
--- a/src/MNH/prep_ideal_case.f90
+++ b/src/MNH/prep_ideal_case.f90
@@ -572,9 +572,6 @@ REAL              :: ZZS_MAX, ZZS_MAX_ll
 INTEGER           :: IJPHEXT
 !
 TYPE(TFILEDATA),POINTER :: TZEXPREFILE  => NULL()
-TYPE(TFILEDATA),POINTER :: TZFILEDUMMY  => TFILE_DUMMY
-TYPE(TFILEDATA),POINTER :: TZINIFILEPGD => NULL()
-TYPE(TFILEDATA),POINTER :: TZPGDFILE    => NULL()
 !
 !
 !*       0.2  Namelist declarations
@@ -715,13 +712,13 @@ CALL INI_FIELD_SCALARS()
 !
 IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN 
   ! open the PGD_FILE
-  CALL IO_FILE_ADD2LIST(TZPGDFILE,TRIM(CPGD_FILE),'UNKNOWN','READ',KLFINPRAR=NNPRAR,KLFITYPE=2,KLFIVERB=NVERB)
-  CALL IO_FILE_OPEN_ll(TZPGDFILE)
+  CALL IO_FILE_ADD2LIST(TPGDFILE,TRIM(CPGD_FILE),'UNKNOWN','READ',KLFINPRAR=NNPRAR,KLFITYPE=2,KLFIVERB=NVERB)
+  CALL IO_FILE_OPEN_ll(TPGDFILE)
 
   ! read the grid in the PGD file
-  CALL IO_READ_FIELD(TZPGDFILE,'IMAX',  NIMAX)
-  CALL IO_READ_FIELD(TZPGDFILE,'JMAX',  NJMAX)
-  CALL IO_READ_FIELD(TZPGDFILE,'JPHEXT',IJPHEXT)
+  CALL IO_READ_FIELD(TPGDFILE,'IMAX',  NIMAX)
+  CALL IO_READ_FIELD(TPGDFILE,'JMAX',  NJMAX)
+  CALL IO_READ_FIELD(TPGDFILE,'JPHEXT',IJPHEXT)
 
   IF ( CPGD_FILE /= CINIFILEPGD) THEN
      WRITE(NLUOUT,FMT=*) ' WARNING : in PRE_IDEA1.nam, in NAM_LUNITn you&
@@ -1201,7 +1198,7 @@ IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN
 !--------------------------------------------------------
 ! the MESONH horizontal grid will be read in the PGD_FILE 
 !--------------------------------------------------------
-  CALL READ_HGRID(1,TZPGDFILE,YPGD_NAME,YPGD_DAD_NAME,YPGD_TYPE)
+  CALL READ_HGRID(1,TPGDFILE,YPGD_NAME,YPGD_DAD_NAME,YPGD_TYPE)
 ! control the cartesian option
   IF( LCARTESIAN ) THEN
      WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE : IN GENERAL, THE USE OF A PGD_FILE &
@@ -1489,10 +1486,10 @@ IF (CIDEAL == 'RSOU') THEN
   BACKSPACE(NLUPRE)    ! because YKIND read again in set_rsou
   WRITE(NLUOUT,FMT=*) 'CIDEAL="RSOU", ATTEMPT TO PROCESS THE SOUNDING DATA'
   IF (LGEOSBAL) THEN
-    CALL SET_RSOU(TZFILEDUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,&
+    CALL SET_RSOU(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,&
                   LRMV_BL,XJ,LSHIFT,XCORIOZ)
   ELSE
-    CALL SET_RSOU(TZFILEDUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,&
+    CALL SET_RSOU(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,&
                   LRMV_BL,XJ,LSHIFT)
   END IF
 !
@@ -1508,10 +1505,10 @@ ELSE IF (CIDEAL == 'CSTN') THEN
   TDTMOD = TDTCUR
   WRITE(NLUOUT,FMT=*) 'CIDEAL="CSTN", ATTEMPT TO PROCESS THE SOUNDING DATA'
   IF (LGEOSBAL) THEN
-    CALL SET_CSTN(TZFILEDUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,&
+    CALL SET_CSTN(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,&
                   LRMV_BL,XJ,LSHIFT,XCORIOZ)
   ELSE
-    CALL SET_CSTN(TZFILEDUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,&
+    CALL SET_CSTN(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,&
                   LRMV_BL,XJ,LSHIFT)
   END IF
 !
@@ -1553,7 +1550,7 @@ CALL UPDATE_METRICS(CLBCX,CLBCY,XDXX,XDYY,XDZX,XDZY,XDZZ)
 !
 !*       5.4.2  3D reference state :
 !
-CALL SET_REF(0,TZFILEDUMMY,                        &
+CALL SET_REF(0,TFILE_DUMMY,                        &
              XZZ,XZHAT,XJ,XDXX,XDYY,CLBCX,CLBCY,   &
              XREFMASS,XMASS_O_PHI0,XLINMASS,       &
              XRHODREF,XTHVREF,XRVREF,XEXNREF,XRHODJ)
@@ -1776,10 +1773,10 @@ IF (CSURF =='EXTE') THEN
     CALL PGD_GRID_SURF_ATM(YSURF_CUR%UG, YSURF_CUR%U,YSURF_CUR%GCP,'MESONH',TINIFILE%CNAME,'MESONH',.TRUE.,HDIR='-')
     CALL PGD_SURF_ATM     (YSURF_CUR,'MESONH',TINIFILE%CNAME,'MESONH',.TRUE.)
     CALL IO_FILE_ADD2LIST(TINIFILEPGD,TRIM(CINIFILEPGD),'PREPIDEALCASE','WRITE',KLFINPRAR=NNPRAR,KLFITYPE=NTYPE,KLFIVERB=NVERB)
+    CALL IO_FILE_OPEN_ll (TINIFILEPGD)
     TPGDFILE => TINIFILEPGD
   ELSE
   ! ... or read from file.
-    TPGDFILE => TZPGDFILE
     CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PGD',                         &
                             '                            ','      ',&
                             TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH,  &
@@ -1795,24 +1792,16 @@ IF (CSURF =='EXTE') THEN
     !* writing of physiographic fields in the file
     CSTORAGE_TYPE='PG'
     !
-    IF (ASSOCIATED(TINIFILEPGD)) THEN
-       TZINIFILEPGD => TINIFILEPGD
-    ELSE
-       CALL IO_FILE_ADD2LIST(TZINIFILEPGD,TRIM(CINIFILEPGD),'PREPIDEALCASE','WRITE',KLFINPRAR=NNPRAR,KLFITYPE=NTYPE,KLFIVERB=NVERB)
-    END IF
-    !
-    CALL IO_FILE_OPEN_ll(TZINIFILEPGD)
-    !
-    CALL IO_WRITE_HEADER(TZINIFILEPGD)
-    CALL IO_WRITE_FIELD(TZINIFILEPGD,'SURF','EXTE')
-    CALL IO_WRITE_FIELD(TZINIFILEPGD,'L1D', L1D)
-    CALL IO_WRITE_FIELD(TZINIFILEPGD,'L2D', L2D)
-    CALL IO_WRITE_FIELD(TZINIFILEPGD,'PACK',LPACK)
-    CALL WRITE_HGRID(1,TZINIFILEPGD)
+    CALL IO_WRITE_HEADER(TINIFILEPGD)
+    CALL IO_WRITE_FIELD(TINIFILEPGD,'SURF','EXTE')
+    CALL IO_WRITE_FIELD(TINIFILEPGD,'L1D', L1D)
+    CALL IO_WRITE_FIELD(TINIFILEPGD,'L2D', L2D)
+    CALL IO_WRITE_FIELD(TINIFILEPGD,'PACK',LPACK)
+    CALL WRITE_HGRID(1,TINIFILEPGD)
     !
-    TOUTDATAFILE => TZINIFILEPGD
+    TOUTDATAFILE => TINIFILEPGD
     !
-    TFILE_SURFEX => TZINIFILEPGD
+    TFILE_SURFEX => TINIFILEPGD
     ALLOCATE(YSURF_CUR%DUO%CSELECT(0))    
     CALL WRITE_PGD_SURF_ATM_n(YSURF_CUR,'MESONH')
     NULLIFY(TFILE_SURFEX)
@@ -1837,11 +1826,11 @@ END IF
 !             ---------------
 !
 IF (CSURF =='EXTE' .AND. (LEN_TRIM(CPGD_FILE)==0 .OR. .NOT. LREAD_GROUND_PARAM)) THEN
-  CALL IO_FILE_CLOSE_ll(TZINIFILEPGD)
+  CALL IO_FILE_CLOSE_ll(TINIFILEPGD)
 ENDIF
 CALL IO_FILE_CLOSE_ll(TINIFILE)
 IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN
-  CALL IO_FILE_CLOSE_ll(TZPGDFILE)
+  CALL IO_FILE_CLOSE_ll(TPGDFILE)
 ENDIF
 !
 !
diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90
index 2a0cbf32ab201ff178bcbce8b3a7285e19ac65c8..7d27a7b7490a01db206e15af192761c85bb2e175 100644
--- a/src/MNH/prep_real_case.f90
+++ b/src/MNH/prep_real_case.f90
@@ -510,7 +510,6 @@ LOGICAL  :: LUSECHIC
 LOGICAL  :: LUSECHEM
 !
 TYPE(TFILEDATA),POINTER :: TZATMFILE => NULL()
-TYPE(TFILEDATA),POINTER :: TZPGDFILE => NULL()
 TYPE(TFILEDATA),POINTER :: TZPRE_REAL1FILE => NULL()
 !
 !
@@ -571,12 +570,10 @@ CALL INITIO_ll()
 CALL OPEN_PRC_FILES(TZPRE_REAL1FILE,YATMFILE, YATMFILETYPE,TZATMFILE &
                                    ,YCHEMFILE,YCHEMFILETYPE &
                                    ,YSURFFILE,YSURFFILETYPE &
-                                   ,YPGDFILE,TZPGDFILE)
+                                   ,YPGDFILE,TPGDFILE)
 ILUOUT0 = TLUOUT0%NLU
 TLUOUT => TLUOUT0
 !
-TPGDFILE => TZPGDFILE
-!
 IF (YATMFILETYPE=='MESONH') THEN
   LSHIFT = .FALSE.
 ELSE IF (YATMFILETYPE=='GRIBEX') THEN
@@ -630,8 +627,8 @@ IF (YATMFILETYPE == 'GRIBEX') THEN
 CALL INIT_NMLVAR()
 CALL READ_VER_GRID(TZPRE_REAL1FILE)
 !
-CALL IO_READ_FIELD(TZPGDFILE,'IMAX',NIMAX)
-CALL IO_READ_FIELD(TZPGDFILE,'JMAX',NJMAX)
+CALL IO_READ_FIELD(TPGDFILE,'IMAX',NIMAX)
+CALL IO_READ_FIELD(TPGDFILE,'JMAX',NJMAX)
 !
 NIMAX_ll=NIMAX   !! _ll variables are global variables
 NJMAX_ll=NJMAX   !! but the old names are kept in PRE_IDEA1.nam file
@@ -710,12 +707,12 @@ ZMISC = ZTIME2 - ZTIME1
 ZTIME1 = ZTIME2
 !
 IF (YATMFILETYPE=='MESONH') THEN
-  CALL READ_ALL_DATA_MESONH_CASE(TZPRE_REAL1FILE,YATMFILE,TZPGDFILE,YDAD_NAME)
+  CALL READ_ALL_DATA_MESONH_CASE(TZPRE_REAL1FILE,YATMFILE,TPGDFILE,YDAD_NAME)
 ELSE IF (YATMFILETYPE=='GRIBEX') THEN
   IF(LEN_TRIM(YCHEMFILE)>0 .AND. YCHEMFILETYPE=='GRIBEX')THEN
-    CALL READ_ALL_DATA_GRIB_CASE('ATM1',TZPRE_REAL1FILE,YATMFILE,TZPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
+    CALL READ_ALL_DATA_GRIB_CASE('ATM1',TZPRE_REAL1FILE,YATMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
   ELSE
-    CALL READ_ALL_DATA_GRIB_CASE('ATM0',TZPRE_REAL1FILE,YATMFILE,TZPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
+    CALL READ_ALL_DATA_GRIB_CASE('ATM0',TZPRE_REAL1FILE,YATMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
   END IF
 !
   YDAD_NAME=' '
@@ -739,9 +736,9 @@ IF(LEN_TRIM(YCHEMFILE)>0)THEN
   CALL POSNAM(IPRE_REAL1,'NAM_AERO_CONF',GFOUND,ILUOUT0)
   IF (GFOUND) READ(IPRE_REAL1,NAM_AERO_CONF)
   IF(YCHEMFILETYPE=='GRIBEX') &
-  CALL READ_ALL_DATA_GRIB_CASE('CHEM',TZPRE_REAL1FILE,YCHEMFILE,TZPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
+  CALL READ_ALL_DATA_GRIB_CASE('CHEM',TZPRE_REAL1FILE,YCHEMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
   IF (YCHEMFILETYPE=='NETCDF') &
-  CALL READ_CHEM_DATA_NETCDF_CASE(TZPRE_REAL1FILE,YCHEMFILE,TZPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
+  CALL READ_CHEM_DATA_NETCDF_CASE(TZPRE_REAL1FILE,YCHEMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
 END IF
 !
 CALL IO_FILE_CLOSE_ll(TZPRE_REAL1FILE)
@@ -1065,7 +1062,7 @@ ZWRITE = ZTIME2 - ZTIME1
 !
 !* reading in the PGD file
 !
-CALL MNHREAD_ZS_DUMMY_n(TZPGDFILE)
+CALL MNHREAD_ZS_DUMMY_n(TPGDFILE)
 !
 !* writing in the output file
 !
diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90
index c1e0272b7d4956d3aeca0b5e871284c218850ba2..6b8ed11cd488f50fd0858727452991e2b6db54f7 100644
--- a/src/MNH/prep_surfex.f90
+++ b/src/MNH/prep_surfex.f90
@@ -83,7 +83,6 @@ CHARACTER (LEN=100)   :: HCOMMENT
 INTEGER               :: II, IJ, IGRID, ILENGTH
 !
 TYPE(TFILEDATA),POINTER :: TZATMFILE => NULL()
-TYPE(TFILEDATA),POINTER :: TZPGDFILE => NULL()
 TYPE(TFILEDATA),POINTER :: TZPRE_REAL1FILE => NULL()
 !
 !-------------------------------------------------------------------------------
@@ -107,11 +106,9 @@ CALL INITIO_ll()
 CALL OPEN_PRC_FILES(TZPRE_REAL1FILE,YATMFILE, YATMFILETYPE,TZATMFILE &
                                    ,YCHEMFILE,YCHEMFILETYPE &
                                    ,YSURFFILE,YSURFFILETYPE &
-                                   ,YPGDFILE,TZPGDFILE)
+                                   ,YPGDFILE,TPGDFILE)
 ILUOUT0 = TLUOUT0%NLU
 !
-TPGDFILE => TZPGDFILE
-!
 !-------------------------------------------------------------------------------
 !
 !*       3.    INITIALIZATION OF PHYSICAL CONSTANTS
@@ -134,8 +131,8 @@ CALL INI_FIELD_LIST(1)
 !
 CALL INI_FIELD_SCALARS()
 !
-CALL IO_READ_FIELD(TZPGDFILE,'IMAX',II)
-CALL IO_READ_FIELD(TZPGDFILE,'JMAX',IJ)
+CALL IO_READ_FIELD(TPGDFILE,'IMAX',II)
+CALL IO_READ_FIELD(TPGDFILE,'JMAX',IJ)
 CALL SET_JP_ll(JPMODELMAX,JPHEXT,JPVEXT,JPHEXT)
 CALL SET_DAD0_ll()
 CALL SET_DIM_ll(II, IJ, 1)
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index 26039717c44efbda1031b6d55928c5dbb20cb432..8921287c5ad125c5d1804f53319c6814aec231ce 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -228,7 +228,7 @@ USE MODD_CH_MNHC_n
 USE MODD_PASPOL_n
 !$20140515
 USE MODD_VAR_ll, ONLY : NPROC
-USE MODD_IO_ll, ONLY: TFILEDATA,TFILE_SURFEX
+USE MODD_IO_ll, ONLY: TFILEDATA,TFILE_DUMMY,TFILE_SURFEX
 !
 USE MODE_GRIDCART         ! Executive modules
 USE MODE_GRIDPROJ
@@ -386,7 +386,6 @@ REAL                :: ZZS_MAX, ZZS_MAX_ll
 !
 TYPE(TFILEDATA),POINTER :: TZFILE      => NULL()
 TYPE(TFILEDATA),POINTER :: TZSONFILE   => NULL()
-TYPE(TFILEDATA),POINTER :: TZFILEDUMMY => NULL()
 !-------------------------------------------------------------------------------
 !
 ! Save model index and switch to model 2 variables
@@ -1096,7 +1095,7 @@ CALL MPPDB_CHECK3D(XDZY,"spawnmod2-aftrupdate_metrics:XDZY",PRECISION)
 !
 !*       5.5    3D Reference state variables :
 !
-CALL SET_REF(0,TZFILEDUMMY,                        &
+CALL SET_REF(0,TFILE_DUMMY,                        &
              XZZ,XZHAT,ZJ,XDXX,XDYY,CLBCX,CLBCY,   &
              XREFMASS,XMASS_O_PHI0,XLINMASS,       &
              XRHODREF,XTHVREF,XRVREF,XEXNREF,XRHODJ)
diff --git a/src/MNH/ver_thermo.f90 b/src/MNH/ver_thermo.f90
index b7a3dcd0e606608ae6c33e4bf315eff96abca230..1a13b3ad198633c5a48f9c2d2cf002093702cf67 100644
--- a/src/MNH/ver_thermo.f90
+++ b/src/MNH/ver_thermo.f90
@@ -160,7 +160,7 @@ USE MODD_CST
 USE MODD_DYN_n
 USE MODD_FIELD_n,     ONLY: XTHT,XRT,XPABST,XDRYMASST
 USE MODD_GRID_n
-USE MODD_IO_ll,       ONLY: TFILEDATA
+USE MODD_IO_ll,       ONLY: TFILEDATA,TFILE_DUMMY
 USE MODD_LBC_n
 USE MODD_LSFIELD_n
 USE MODD_LUNIT,       ONLY: CLUOUT0,TLUOUT0
@@ -228,7 +228,6 @@ 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(TFILEDATA)  :: TZFILEDUMMY
 
 !-------------------------------------------------------------------------------
 !
@@ -332,7 +331,7 @@ ALLOCATE(XRVREF(IIU,IJU,IKU))
 ALLOCATE(XEXNREF(IIU,IJU,IKU))
 ALLOCATE(XRHODJ(IIU,IJU,IKU))
 XRVREF(:,:,:) = 0.
-CALL SET_REF(0,TZFILEDUMMY,XZZ,XZHAT,PJ,PDXX,PDYY,CLBCX,CLBCY,       &
+CALL SET_REF(0,TFILE_DUMMY,XZZ,XZHAT,PJ,PDXX,PDYY,CLBCX,CLBCY,       &
              XREFMASS,XMASS_O_PHI0,XLINMASS,XRHODREF,XTHVREF,XRVREF, &
              XEXNREF,XRHODJ)
 
diff --git a/src/MNH/zoom_pgd.f90 b/src/MNH/zoom_pgd.f90
index f2ccf946d31b7a81f09ff40e86f9ca8d3fda9cb7..e9312af77e59630bb05a65745b075435312dfa86 100644
--- a/src/MNH/zoom_pgd.f90
+++ b/src/MNH/zoom_pgd.f90
@@ -49,7 +49,7 @@
 USE MODD_CONF,   ONLY : CPROGRAM, NMASDEV, NBUGFIX, CBIBUSER, &
                         L1D, L2D, LPACK
 USE MODD_IO_ll,  ONLY:  NIO_VERB,NVERB_DEBUG,TFILE_OUTPUTLISTING,TFILEDATA
-USE MODD_LUNIT,  ONLY : CLUOUT0, TPGDFILE, TLUOUT0, TOUTDATAFILE
+USE MODD_LUNIT,  ONLY : CLUOUT0, TLUOUT0, TOUTDATAFILE
 USE MODD_PARAMETERS, ONLY : XUNDEF, NUNDEF, JPVEXT, JPHEXT, JPMODELMAX
 USE MODD_PARAM_n,     ONLY : CSURF
 USE MODD_DIM_n,       ONLY : NIMAX, NJMAX