diff --git a/A-INSTALL b/A-INSTALL
index 7d0d2ad77ff178889189042e7a7db047c77c9946..e9fcf06f82d72f0ce656fbaac3f47b67f067bbe4 100644
--- a/A-INSTALL
+++ b/A-INSTALL
@@ -1076,9 +1076,13 @@ etc ...
 # REM : the 'profile_mesonh...' file & the 'dir_obj...' directory will be suffixed with an ECRAD extension 
 #
 #  Usage :
-#   1) In namelist replace RAD='ECMW' be RAD='ECRA' 
-#   2) Add link to 'ecrad-1.0.1/data' files 
-#      see 007_16janvier/008_run2 test case for example
+#   1) In namelist replace RAD='ECMW' by RAD='ECRA' 
+#   2) Add link to all 'ecrad-1.0.1/data' files in your mesonh run directory
+ln -sf ${SRC_MESONH}/src/LIB/RAD/ecrad-1.0.1/data/* .
+#
+# REM : you can replace CDATADIR = "." by CDATADIR = "data" of ini_radiations_ecrad.f90 to link only the data folder instead of all the files one by one
+#
+# See 007_16janvier/008_run2 test case for example
 #
 # d) MNH_MEGAN for optional compilation of MEGAN code 
 # --------------------------------------
diff --git a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90
index 5abc98b1e2e5663dc251939d12f7067d84d7a6b4..3b757c3bc97d5f5d9b8f21bebc65bb8909973480 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90
@@ -3,6 +3,9 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file
+!-----------------------------------------------------------------
 program LFI2CDF
   USE MODD_CONF,          ONLY: CPROGRAM
   USE MODD_CONFZ,         ONLY: NB_PROCIO_R
@@ -33,7 +36,7 @@ program LFI2CDF
   INTEGER :: IINFO_ll         ! return code of // routines
   INTEGER :: nfiles_out   = 0 ! number of output files
   CHARACTER(LEN=:),allocatable :: hvarlist
-  TYPE(TFILE_ELT),DIMENSION(1)        :: infiles
+  TYPE(TFILE_ELT),DIMENSION(2)        :: infiles
   TYPE(TFILE_ELT),DIMENSION(MAXFILES) :: outfiles
 
   TYPE(workfield), DIMENSION(:), POINTER :: tzreclist
@@ -152,7 +155,11 @@ program LFI2CDF
      CALL fill_files(infiles,outfiles,tzreclist,nbvar,options)
   END IF
 
-  CALL CLOSE_FILES(infiles, 1)
+  if ( options( OPTFALLBACK )%set ) then
+    CALL CLOSE_FILES(infiles, 2)
+  else
+    CALL CLOSE_FILES(infiles, 1)
+  end if
   CALL CLOSE_FILES(outfiles,nfiles_out)
-  
+
 end program LFI2CDF
diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90
index bc087c5c298f6ce59c408c3c1776b537ba74fb3e..e578f204cd7f11353fa6bbcc329c30456f371b44 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90
@@ -1,20 +1,24 @@
-!MNH_LIC Copyright 2015-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2015-2019 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file
+!  P. Wautelet 21/10/2019: add OPTDIR option to set directory for writing outfiles
+!-----------------------------------------------------------------
 module mode_options
   USE MODE_FIELD, ONLY: TYPEUNDEF, TYPEINT, TYPELOG, TYPEREAL, TYPECHAR, TYPEDATE
 
   implicit none
 
-  integer,parameter :: nbavailoptions = 10
+  integer,parameter :: NBAVAILOPTIONS = 12
   integer,parameter :: MODEUNDEF = -11, MODECDF2CDF = 11, MODELFI2CDF = 12, MODECDF2LFI = 13
 
-  integer,parameter :: OPTCOMPRESS = 1, OPTHELP   = 2, OPTLIST   = 3
-  integer,parameter :: OPTMERGE    = 4, OPTOUTPUT = 5, OPTREDUCE = 6
-  integer,parameter :: OPTMODE     = 7, OPTSPLIT  = 8, OPTVAR    = 9
-  integer,parameter :: OPTVERBOSE  = 10
+  integer,parameter :: OPTCOMPRESS = 1,  OPTHELP     = 2,  OPTLIST   = 3
+  integer,parameter :: OPTMERGE    = 4,  OPTOUTPUT   = 5,  OPTREDUCE = 6
+  integer,parameter :: OPTMODE     = 7,  OPTSPLIT    = 8,  OPTVAR    = 9
+  integer,parameter :: OPTVERBOSE  = 10, OPTFALLBACK = 11, OPTDIR    = 12
 
   type option
     logical :: set = .false.
@@ -153,6 +157,17 @@ subroutine init_options(options)
   options(OPTVERBOSE)%long_name    = "verbose"
   options(OPTVERBOSE)%short_name   = 'V'
   options(OPTVERBOSE)%has_argument = .false.
+
+  options(OPTFALLBACK)%long_name    = "fallback-file"
+  options(OPTFALLBACK)%short_name   = 'f'
+  options(OPTFALLBACK)%has_argument = .true.
+  options(OPTFALLBACK)%type         = TYPECHAR
+
+  options(OPTDIR)%long_name    = "outdir"
+  options(OPTDIR)%short_name   = 'd'
+  options(OPTDIR)%has_argument = .true.
+  options(OPTDIR)%type         = TYPECHAR
+
 end subroutine init_options
 
 subroutine get_option(options,finished)
@@ -278,12 +293,6 @@ subroutine check_options(options,infile,runmode)
     call help()
   end if
 
-  !Merge flag only supported if -v is set
-  if (options(OPTMERGE)%set .AND. .NOT.options(OPTVAR)%set) then
-    print *,'Error: merge option must be used with var option'
-    call help()
-  end if
-
   !Split flag only supported if -v is set
   if (options(OPTSPLIT)%set .AND. .NOT.options(OPTVAR)%set) then
       options(OPTSPLIT)%set = .false.
@@ -329,18 +338,21 @@ subroutine help()
 !TODO: -l option for cdf2cdf and cdf2lfi
   print *,"Usage : lfi2cdf [-h --help] [-l] [-v --var var1[,...]] [-r --reduce-precision]"
   print *,"                [-m --merge number_of_z_levels] [-s --split] [-o --output output-file.nc]"
-  print *,"                [-R --runmode mode] [-V --verbose]"
+  print *,"                [-R --runmode mode] [-V --verbose] [-f --fallback-file fallback-file]"
   print *,"                [-c --compress compression_level] input-file.lfi"
   print *,"        cdf2cdf [-h --help] [-v --var var1[,...]] [-r --reduce-precision]"
   print *,"                [-m --merge number_of_split_files] [-s --split] [-o --output output-file.nc]"
-  print *,"                [-R --runmode mode] [-V --verbose]"
+  print *,"                [-R --runmode mode] [-V --verbose] [-f --fallback-file fallback-file]"
   print *,"                [-c --compress compression_level] input-file.nc"
-  print *,"        cdf2lfi [-o --output output-file.lfi] [-R --runmode mode]  [-V --verbose] input-file.nc"
+  print *,"        cdf2lfi [-o --output output-file.lfi] [-R --runmode mode]  [-V --verbose]"
+  print *,"                [-f --fallback-file fallback-file] input-file.nc"
   print *,""
   print *,"Options:"
   print *,"  --compress, -c compression_level"
   print *,"     Compress data. The compression level should be in the 1 to 9 interval."
   print *,"     Only supported with the netCDF format (cdf2cdf and lfi2cdf only)"
+  print *,"  -f --fallback-file fallback-file"
+  print *,"     File to use to read some grid information if not found in input-file"
   print *,"  --help, -h"
   print *,"     Print this text"
   print *,"  --list, -l"
diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index bc20c05b2071d54f387c251078c5cc336e8f2322..8dc5e9dc3d0a82e77f11381c496f99c2cf6a1cfd 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -7,11 +7,16 @@
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_FILE_ADD2LIST
 !  P. Wautelet 10/04/2019: use IO_Err_handle_nc4 to handle netCDF errors
 !  P. Wautelet 25/06/2019: add support for 3D integer arrays
+!  P. Wautelet 01/08/2019: allow merge of entire Z-split files
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
+!  P. Wautelet 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file
+!  P. Wautelet 21/10/2019: add OPTDIR option to set directory for writing outfiles
+!  P. Wautelet 21/10/2019: if DTMOD and DTCUR not found, try to read the time coordinate
 !-----------------------------------------------------------------
 MODULE mode_util
-  USE MODD_IO,         ONLY: TFILE_ELT
+  USE MODD_IO,         ONLY: TFILEDATA, TFILE_ELT
   USE MODD_NETCDF,     ONLY: DIMCDF, CDFINT
-  USE MODD_PARAMETERS, ONLY: JPVEXT, NLFIMAXCOMMENTLENGTH, NMNHNAMELGTMAX
+  USE MODD_PARAMETERS, ONLY: NLFIMAXCOMMENTLENGTH, NMNHNAMELGTMAX
   use modd_precision,  only: LFIINT
 
   USE MODE_FIELD
@@ -40,12 +45,12 @@ MODULE mode_util
      LOGICAL                               :: LSPLIT = .FALSE. ! TRUE if variable is split by vertical level
      INTEGER                               :: NSIZE = 0 ! Size of the variable (in number of elements)
      INTEGER                               :: NSRC = 0 ! Number of variables used to compute the variable (needed only if calc=.true.)
-     INTEGER                               :: NDIMS_FILE  ! Number of dims (as present in input file)
-     INTEGER,DIMENSION(:),ALLOCATABLE      :: NDIMSIZES_FILE  ! Dimensions sizes (as present in input file)
+     INTEGER(kind=CDFINT)                  :: NDIMS_FILE  ! Number of dims (as present in input file)
+     INTEGER(kind=CDFINT),    DIMENSION(:),ALLOCATABLE :: NDIMSIZES_FILE  ! Dimensions sizes (as present in input file)
      CHARACTER(LEN=NF90_MAX_NAME),DIMENSION(:),ALLOCATABLE :: CDIMNAMES_FILE  ! Dimensions names (as present in input file)
      CHARACTER(LEN=40)                     :: CUNITS_FILE = '' ! Units (as present in input file)
      INTEGER                               :: NGRID_FILE  ! Grid  number (as present in input file)
-     INTEGER                               :: NTYPE_FILE  ! netCDF datatype (NF90_CHAR, NF90_INT...) (as present in input file)
+     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
@@ -95,6 +100,7 @@ CONTAINS
     LOGICAL                                  :: ladvan
     LOGICAL                                  :: GOK
     TYPE(TLFIDATE),DIMENSION(MAXDATES)       :: TLFIDATES
+    type(TFILEDATA)                          :: tzfile
 
     CALL PRINT_MSG(NVERB_DEBUG,'IO','parse_infiles','called')
 
@@ -229,6 +235,7 @@ CONTAINS
               !If we are merging, maybe it is one of the split variable
               !In that case, the 1st part of the variable is in the 1st split file with a 0001 suffix
               kcdf_id2 = INFILES(1)%TFILE%TFILES_IOZ(1)%TFILE%NNCID
+              tzfile = INFILES(1)%TFILE%TFILES_IOZ(1)%TFILE
               status = NF90_INQ_VARID(kcdf_id2,trim(yrecfm)//'0001',var_id)
               IF (status == NF90_NOERR) THEN
                 tpreclist(ji)%LSPLIT = .true.
@@ -243,11 +250,12 @@ CONTAINS
               call IO_Err_handle_nc4( status, 'parse_infiles', 'NF90_INQ_VARID', trim(yrecfm) )
             ELSE
               kcdf_id2 = kcdf_id
+              tzfile = INFILES(1)%TFILE
             ENDIF
             !
             IF (status == NF90_NOERR) THEN
               tpreclist(ji)%found = .true.
-              CALL IO_Metadata_get_nc4(kcdf_id2,var_id,tpreclist(ji))
+              CALL IO_Metadata_get_nc4(tzfile,var_id,tpreclist(ji))
             END IF
           END IF
 
@@ -340,7 +348,7 @@ END DO
            if ( status /= NF90_NOERR ) &
              call IO_Err_handle_nc4( status, 'parse_infiles', 'NF90_INQUIRE_VARIABLE', tpreclist(ji)%name )
            tpreclist(ji)%found  = .TRUE.
-           CALL IO_Metadata_get_nc4(kcdf_id,var_id,tpreclist(ji))
+           CALL IO_Metadata_get_nc4(INFILES(1)%TFILE,var_id,tpreclist(ji))
          END DO
        END IF
 
@@ -630,7 +638,8 @@ END DO
 
     CHARACTER(LEN=16) :: YMNHVERSION
     CHARACTER(LEN=:),ALLOCATABLE :: YHISTORY
-    INTEGER :: ilen, ji
+    INTEGER              :: ji
+    INTEGER(KIND=CDFINT) :: ilen
     INTEGER(KIND=CDFINT) :: status
     INTEGER(KIND=CDFINT) :: kcdf_id
 
@@ -698,6 +707,7 @@ END DO
     REAL,    DIMENSION(:,:,:),   ALLOCATABLE :: XTAB3D, XTAB3D2
     REAL,    DIMENSION(:,:,:,:), ALLOCATABLE :: XTAB4D, XTAB4D2
     TYPE(DATE_TIME)                     :: TZDATE
+    TYPE(TFILEDATA)                     :: TZFILE
 
 
     CALL PRINT_MSG(NVERB_DEBUG,'IO','fill_files','called')
@@ -847,7 +857,16 @@ END DO
         CASE (3)
           ALLOCATE(XTAB3D(IDIMLEN(1),IDIMLEN(2),IDIMLEN(3)))
           IF (tpreclist(ji)%calc) ALLOCATE(XTAB3D2(IDIMLEN(1),IDIMLEN(2),IDIMLEN(3)))
-          CALL IO_Field_read(INFILES(1)%TFILE,tpreclist(ISRC)%TFIELD,XTAB3D)
+          !Hack not very clean: 3D LB fields are not split
+          !If NSUBFILES_IOZ is set to 0, IO_Field_read will read it as a non-split field
+          !CAUTION: there are no guarantee the IO_Field_read will continue to use this information that way...
+          if ( tpreclist(ji)%tfield%clbtype /= 'NONE' .or. tpreclist(ji)%name(1:2) == 'LB' ) then
+            tzfile = infiles(1)%tfile
+            tzfile%nsubfiles_ioz=0
+            call IO_Field_read(tzfile,tpreclist(isrc)%tfield,xtab3d)
+          else
+            call IO_Field_read(infiles(1)%tfile,tpreclist(isrc)%tfield,xtab3d)
+          end if
         CASE (4)
           ALLOCATE(XTAB4D(IDIMLEN(1),IDIMLEN(2),IDIMLEN(3),IDIMLEN(4)))
           IF (tpreclist(ji)%calc) ALLOCATE(XTAB4D2(IDIMLEN(1),IDIMLEN(2),IDIMLEN(3),IDIMLEN(4)))
@@ -953,6 +972,7 @@ END DO
   SUBROUTINE OPEN_FILES(infiles,outfiles,KNFILES_OUT,hinfile,houtfile,nbvar_infile,options,runmode)
     USE MODD_CONF,          ONLY: LCARTESIAN
     USE MODD_CONF_n,        ONLY: CSTORAGE_TYPE
+    USE MODD_CONFZ,         ONLY: NB_PROCIO_R
     USE MODD_DIM_n,         ONLY: NIMAX_ll, NJMAX_ll, NKMAX
     USE MODD_GRID,          ONLY: XBETA, XRPK, XLAT0, XLON0, XLATORI, XLONORI
     USE MODD_GRID_n,        ONLY: LSLEVE, XXHAT, XYHAT, XZHAT
@@ -973,10 +993,15 @@ END DO
     TYPE(option),DIMENSION(:),   INTENT(IN)  :: options
     INTEGER,                     INTENT(IN)  :: runmode
 
-    INTEGER              :: idx, IRESP2
-    INTEGER(KIND=CDFINT) :: omode
-    INTEGER(KIND=CDFINT) :: status
-    INTEGER(KIND=LFIINT) :: ilu,iresp
+    character(len=:), allocatable :: yunits
+    INTEGER                       :: idx, IRESP2
+    integer                       :: inb_procio_r_save
+    INTEGER(KIND=CDFINT)          :: ioldmode
+    INTEGER(KIND=CDFINT)          :: istatus
+    INTEGER(KIND=CDFINT)          :: ivar_id
+    integer(kind=CDFINT)          :: ilen
+    INTEGER(KIND=LFIINT)          :: ilu,iresp
+    logical                       :: gok
 
 
     CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_FILES','called')
@@ -993,6 +1018,15 @@ END DO
        CALL IO_FILE_OPEN(INFILES(1)%TFILE)
 
        nbvar_infile = INFILES(1)%TFILE%NNCNAR
+
+       !Open fallback file if provided
+       if ( options( OPTFALLBACK )%set ) then
+         inb_procio_r_save = NB_PROCIO_R
+         NB_PROCIO_R = 1
+         CALL IO_FILE_ADD2LIST(INFILES(2)%TFILE,options( OPTFALLBACK )%cvalue,'UNKNOWN','READ',HFORMAT='NETCDF4')
+         CALL IO_FILE_OPEN(INFILES(2)%TFILE)
+         NB_PROCIO_R = inb_procio_r_save
+       end if
    ELSE
        !
        ! LFI
@@ -1010,52 +1044,158 @@ END DO
           CALL IO_FILE_CLOSE(INFILES(1)%TFILE)
           return
        END IF
+
+       !Open fallback file if provided
+       if ( options( OPTFALLBACK )%set ) then
+         inb_procio_r_save = NB_PROCIO_R
+         NB_PROCIO_R = 1
+         CALL IO_FILE_ADD2LIST(INFILES(2)%TFILE,options( OPTFALLBACK )%cvalue,'UNKNOWN','READ', &
+                               HFORMAT='LFI',KLFIVERB=0)
+         CALL IO_FILE_OPEN(INFILES(2)%TFILE)
+         NB_PROCIO_R = inb_procio_r_save
+       end if
    END IF
    !
    !Read problem dimensions and some grid variables (needed to determine domain size and also by IO_FILE_OPEN to create netCDF files)
-   CALL IO_Field_read(INFILES(1)%TFILE,'JPHEXT',JPHEXT)
+   JPHEXT = 1
+   CALL IO_Field_read(INFILES(1)%TFILE,'JPHEXT',JPHEXT,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'JPHEXT',JPHEXT,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'JPHEXT not found')
+
    JPHEXT_ll = JPHEXT
    JPVEXT_ll = JPVEXT
    !
    ALLOCATE(NIMAX_ll,NJMAX_ll,NKMAX)
-   CALL IO_Field_read(INFILES(1)%TFILE,'IMAX',NIMAX_ll)
-   CALL IO_Field_read(INFILES(1)%TFILE,'JMAX',NJMAX_ll)
+   CALL IO_Field_read(INFILES(1)%TFILE,'IMAX',NIMAX_ll,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'IMAX',NIMAX_ll,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'IMAX not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'JMAX',NJMAX_ll,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'JMAX',NJMAX_ll,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'JMAX not found')
+
    CALL IO_Field_read(INFILES(1)%TFILE,'KMAX',NKMAX,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'KMAX',NKMAX,IRESP2)
    IF (IRESP2/=0) NKMAX = 0
    !
-   CALL IO_Field_read(INFILES(1)%TFILE,'PROGRAM',CPROGRAM_ORIG)
+   CALL IO_Field_read(INFILES(1)%TFILE,'PROGRAM',CPROGRAM_ORIG,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'PROGRAM',CPROGRAM_ORIG,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'PROGRAM not found')
    !
    ALLOCATE(CSTORAGE_TYPE)
-   CALL IO_Field_read(INFILES(1)%TFILE,'STORAGE_TYPE',CSTORAGE_TYPE)
+   CALL IO_Field_read(INFILES(1)%TFILE,'STORAGE_TYPE',CSTORAGE_TYPE,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'STORAGE_TYPE',CSTORAGE_TYPE,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'STORAGE_TYPE not found')
    !
    ALLOCATE(XXHAT(NIMAX_ll+2*JPHEXT))
-   CALL IO_Field_read(INFILES(1)%TFILE,'XHAT',XXHAT)
+   CALL IO_Field_read(INFILES(1)%TFILE,'XHAT',XXHAT,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'XHAT',XXHAT,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'XHAT not found')
+
    ALLOCATE(XYHAT(NJMAX_ll+2*JPHEXT))
-   CALL IO_Field_read(INFILES(1)%TFILE,'YHAT',XYHAT)
-   CALL IO_Field_read(INFILES(1)%TFILE,'CARTESIAN',LCARTESIAN)
-   !
-   CALL IO_Field_read(INFILES(1)%TFILE,'LAT0',XLAT0)
-   CALL IO_Field_read(INFILES(1)%TFILE,'LON0',XLON0)
-   CALL IO_Field_read(INFILES(1)%TFILE,'BETA',XBETA)
-   !
+   CALL IO_Field_read(INFILES(1)%TFILE,'YHAT',XYHAT,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'YHAT',XYHAT,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'YHAT not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'CARTESIAN',LCARTESIAN,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'CARTESIAN',LCARTESIAN,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'CARTESIAN not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'LAT0',XLAT0,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'LAT0',XLAT0,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'LAT0 not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'LON0',XLON0,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'LON0',XLON0,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'LON0 not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'BETA',XBETA,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'BETA',XBETA,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'BETA not found')
+
    IF (.NOT.LCARTESIAN) THEN
-     CALL IO_Field_read(INFILES(1)%TFILE,'RPK',   XRPK)
-     CALL IO_Field_read(INFILES(1)%TFILE,'LATORI',XLATORI)
-     CALL IO_Field_read(INFILES(1)%TFILE,'LONORI',XLONORI)
+     CALL IO_Field_read(INFILES(1)%TFILE,'RPK',   XRPK,   IRESP2)
+    !If not found in main file, try the fallback one
+    if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'RPK',   XRPK,IRESP2)
+    if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'RPK not found')
+
+     CALL IO_Field_read(INFILES(1)%TFILE,'LATORI',XLATORI,IRESP2)
+    !If not found in main file, try the fallback one
+    if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'LATORI',XLATORI,IRESP2)
+    if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'LATORI not found')
+
+     CALL IO_Field_read(INFILES(1)%TFILE,'LONORI',XLONORI,IRESP2)
+    !If not found in main file, try the fallback one
+    if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'LONORI',XLONORI,IRESP2)
+    if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'LONORI not found')
    ENDIF
    !
    IF (TRIM(CPROGRAM_ORIG)/='PGD' .AND. TRIM(CPROGRAM_ORIG)/='NESPGD' .AND. TRIM(CPROGRAM_ORIG)/='ZOOMPG' &
        .AND. .NOT.(TRIM(CPROGRAM_ORIG)=='REAL' .AND. CSTORAGE_TYPE=='SU') ) THEN !condition to detect PREP_SURFEX
      ALLOCATE(XZHAT(NKMAX+2*JPVEXT))
-     CALL IO_Field_read(INFILES(1)%TFILE,'ZHAT',XZHAT)
+     CALL IO_Field_read(INFILES(1)%TFILE,'ZHAT',XZHAT,IRESP2)
+     !If not found in main file, try the fallback one
+     if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'ZHAT',XZHAT,IRESP2)
+     if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'ZHAT not found')
+
      ALLOCATE(LSLEVE)
-     CALL IO_Field_read(INFILES(1)%TFILE,'SLEVE',LSLEVE)
+     CALL IO_Field_read(INFILES(1)%TFILE,'SLEVE',LSLEVE,IRESP2)
+     !If not found in main file, try the fallback one
+     if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'SLEVE',LSLEVE,IRESP2)
+     if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'SLEVE not found')
+
      ALLOCATE(TDTMOD)
      CALL IO_Field_read(INFILES(1)%TFILE,'DTMOD',TDTMOD,IRESP2)
      IF(IRESP2/=0) DEALLOCATE(TDTMOD)
+
      ALLOCATE(TDTCUR)
      CALL IO_Field_read(INFILES(1)%TFILE,'DTCUR',TDTCUR,IRESP2)
      IF(IRESP2/=0) DEALLOCATE(TDTCUR)
+
+     !If time values were not found, try to get it from the time coordinate
+     if ( .not. associated( tdtcur ) .and. infiles(1)%tfile%cformat == 'NETCDF4' ) then
+       gok = .false.
+
+       istatus = NF90_INQ_VARID( infiles(1)%tfile%nncid, 'time', ivar_id )
+       if ( istatus == NF90_NOERR ) then
+         allocate( tdtcur )
+         istatus = NF90_GET_VAR( infiles(1)%tfile%nncid, ivar_id, tdtcur%time )
+         if ( istatus == NF90_NOERR ) then
+           istatus = NF90_INQUIRE_ATTRIBUTE( infiles(1)%tfile%nncid, ivar_id, 'units', len = ilen )
+           if ( istatus == NF90_NOERR ) then
+             allocate( character(len = ilen ) :: yunits )
+             istatus = NF90_GET_ATT( infiles(1)%tfile%nncid, ivar_id, 'units', yunits )
+             ! Extract date from yunits
+             idx =  INDEX( yunits, 'since ' )
+             Read( yunits(idx+6 :idx+9 ) , '( I4.4 )' ) tdtcur%tdate%year
+             Read( yunits(idx+11:idx+12 ), '( I2.2 )' ) tdtcur%tdate%month
+             Read( yunits(idx+14:idx+15 ), '( I2.2 )' ) tdtcur%tdate%day
+
+             if ( .not. associated( tdtmod ) ) then
+               allocate( tdtmod )
+               tdtmod = tdtcur
+               tdtmod%time = 0.
+             end if
+
+             gok = .true.
+           end if
+         end if
+       end if
+
+       if ( .not. gok ) deallocate( tdtcur )
+     end if
    END IF
    !
    ! Outfiles
@@ -1068,8 +1208,13 @@ END DO
          KNFILES_OUT = KNFILES_OUT + 1
 
          idx = KNFILES_OUT
-         CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,HOUTFILE,'MNH','WRITE', &
-                               HFORMAT='NETCDF4',OOLD=.TRUE.)
+         if ( options(OPTDIR)%set ) then
+           CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,HOUTFILE,'MNH','WRITE', &
+                                 HFORMAT='NETCDF4',OOLD=.TRUE., hdirname = options(OPTDIR)%cvalue )
+         else
+           CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,HOUTFILE,'MNH','WRITE', &
+                                 HFORMAT='NETCDF4',OOLD=.TRUE.)
+         end if
          CALL IO_FILE_OPEN(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
 
          IF (options(OPTCOMPRESS)%set) THEN
@@ -1081,8 +1226,8 @@ END DO
            outfiles(idx)%tfile%LNCREDUCE_FLOAT_PRECISION = .TRUE.
          END IF
 
-         status = NF90_SET_FILL(outfiles(idx)%TFILE%NNCID,NF90_NOFILL,omode)
-         if ( status /= NF90_NOERR ) call IO_Err_handle_nc4( status, 'OPEN_FILES', 'NF90_SET_FILL', '' )
+         istatus = NF90_SET_FILL(outfiles(idx)%TFILE%NNCID,NF90_NOFILL,ioldmode)
+         if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'OPEN_FILES', 'NF90_SET_FILL', '' )
        END IF ! .NOT.osplit
     ELSE
        !
@@ -1090,8 +1235,13 @@ END DO
        !
        KNFILES_OUT = KNFILES_OUT + 1
        idx = KNFILES_OUT
-       CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,houtfile,'MNH','WRITE', &
-                             HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE.)
+       if ( options(OPTDIR)%set ) then
+         CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,houtfile,'MNH','WRITE', &
+                               HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE., hdirname = options(OPTDIR)%cvalue )
+       else
+         CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,houtfile,'MNH','WRITE', &
+                               HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE.)
+       end if
        LIOCDF4 = .FALSE. !Necessary to open correctly the LFI file
        CALL IO_FILE_OPEN(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
        LIOCDF4 = .TRUE.
@@ -1102,8 +1252,13 @@ END DO
      KNFILES_OUT = KNFILES_OUT + 1
 
      idx = KNFILES_OUT
-     CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,'dummy_file','MNH','WRITE', &
-                           HFORMAT='NETCDF4',OOLD=.TRUE.)
+     if ( options(OPTDIR)%set ) then
+       CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,'dummy_file','MNH','WRITE', &
+                             HFORMAT='NETCDF4',OOLD=.TRUE., hdirname = options(OPTDIR)%cvalue )
+     else
+       CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,'dummy_file','MNH','WRITE', &
+                             HFORMAT='NETCDF4',OOLD=.TRUE.)
+     end if
      CALL IO_FILE_OPEN(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
    END IF
 
@@ -1127,7 +1282,7 @@ END DO
     INTEGER                  :: ji
     INTEGER                  :: idx1, idx2
     INTEGER(KIND=CDFINT)     :: status
-    INTEGER(KIND=CDFINT)     :: omode
+    INTEGER(KIND=CDFINT)     :: ioldmode
 
     CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_SPLIT_NCFILES_OUT','called')
 
@@ -1157,8 +1312,13 @@ END DO
 
     DO ji = 1,nbvar
       filename = trim(houtfile)//'.'//TRIM(YVARS(ji))
-      CALL IO_FILE_ADD2LIST(outfiles(ji)%TFILE,filename,'MNH','WRITE', &
-                            HFORMAT='NETCDF4')
+      if ( options(OPTDIR)%set ) then
+        CALL IO_FILE_ADD2LIST(outfiles(ji)%TFILE,filename,'MNH','WRITE', &
+                              HFORMAT='NETCDF4', hdirname = options(OPTDIR)%cvalue )
+      else
+        CALL IO_FILE_ADD2LIST(outfiles(ji)%TFILE,filename,'MNH','WRITE', &
+                              HFORMAT='NETCDF4')
+      end if
       CALL IO_FILE_OPEN(outfiles(ji)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
 
       IF (options(OPTCOMPRESS)%set) THEN
@@ -1170,7 +1330,7 @@ END DO
         outfiles(ji)%tfile%LNCREDUCE_FLOAT_PRECISION = .TRUE.
       END IF
 
-      status = NF90_SET_FILL(outfiles(ji)%TFILE%NNCID,NF90_NOFILL,omode)
+      status = NF90_SET_FILL(outfiles(ji)%TFILE%NNCID,NF90_NOFILL,ioldmode)
       if ( status /= NF90_NOERR ) call IO_Err_handle_nc4( status, 'OPEN_SPLIT_NCFILES_OUT', 'NF90_SET_FILL', '' )
     END DO
 
@@ -1194,31 +1354,174 @@ END DO
   END SUBROUTINE CLOSE_FILES
 
 
-  SUBROUTINE IO_Metadata_get_nc4(KFILE_ID,KVAR_ID,TPREC)
+  SUBROUTINE IO_Metadata_get_nc4(TPFILE,KVAR_ID,TPREC)
     USE MODD_DIM_n,      ONLY: NKMAX
     USE MODD_PARAMETERS, ONLY: JPVEXT
 
-    INTEGER(KIND=CDFINT), INTENT(IN)    :: KFILE_ID
+    TYPE(TFILEDATA),      INTENT(IN)    :: TPFILE
     INTEGER(KIND=CDFINT), INTENT(IN)    :: KVAR_ID
     TYPE(workfield),      INTENT(INOUT) :: TPREC
 
+    character(len=:), allocatable            :: YSPLIT
+    character(len=:), allocatable            :: YTIMEDEP
+    integer                                  :: iblocks
     INTEGER                                  :: ILENG
     INTEGER                                  :: JDIM
     INTEGER(KIND=CDFINT)                     :: ISTATUS
+    INTEGER(KIND=CDFINT)                     :: IFILE_ID
+    INTEGER(KIND=CDFINT)                     :: IVAR_ID
     INTEGER(KIND=CDFINT),DIMENSION(NF90_MAX_VAR_DIMS) :: IDIMS_ID
+    LOGICAL                                  :: GSPLIT_AT_ENTRY
 
     CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Metadata_get_nc4','called')
 
-    ISTATUS = NF90_INQUIRE_VARIABLE(KFILE_ID,KVAR_ID,NDIMS = TPREC%NDIMS_FILE, &
+    !Necessary to know if we already are in a split file for determining correct number of dimensions
+    GSPLIT_AT_ENTRY = TPREC%LSPLIT
+
+    IFILE_ID = TPFILE%NNCID
+
+    iblocks = -1
+
+    ISTATUS = NF90_INQUIRE_VARIABLE(IFILE_ID, KVAR_ID, NDIMS = TPREC%NDIMS_FILE, &
                                     XTYPE = TPREC%NTYPE_FILE, DIMIDS = IDIMS_ID)
     if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_VARIABLE', '' )
 
+    !split_variable and other attributes were added in MesoNH > 5.4.2
+    ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'split_variable', LEN=ILENG)
+    IF (ISTATUS == NF90_NOERR) THEN
+      IF (GSPLIT_AT_ENTRY) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Metadata_get_nc4','split variable delcaration inside a split file')
+
+      ALLOCATE(CHARACTER(LEN=ILENG) :: YSPLIT)
+      ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_variable', YSPLIT)
+      IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'split_variable' )
+      IF ( YSPLIT == 'yes' ) then
+        TPREC%LSPLIT = .true.
+
+        ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'ndims', TPREC%NDIMS_FILE)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'ndims' )
+        IF ( TPREC%NDIMS_FILE/=3 ) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Metadata_get_nc4', &
+                                                  'split variable with ndims/=3 not supported')
+
+        ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'time_dependent', LEN=ILENG)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_ATTRIBUTE', &
+                                                           'time_dependent' )
+        ALLOCATE(CHARACTER(LEN=ILENG) :: YTIMEDEP)
+        ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'time_dependent', YTIMEDEP)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'time_dependent' )
+        IF ( YTIMEDEP == 'yes' ) then
+          TPREC%TFIELD%LTIMEDEP = .TRUE.
+        ELSE IF ( YTIMEDEP == 'no' ) THEN
+          TPREC%TFIELD%LTIMEDEP = .FALSE.
+        ELSE
+          CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4','unknown value '//trim(YTIMEDEP)// &
+                                                                  ' for time_dependent attribute' )
+        END IF
+
+        ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_nblocks', iblocks)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'split_nblocks' )
+
+!PW: todo:check tfiles_ioz exist
+        IFILE_ID = TPFILE%TFILES_IOZ(1)%TFILE%NNCID
+
+        istatus = NF90_INQ_VARID(IFILE_ID,trim(TPREC%NAME)//'0001',ivar_id)
+        IF (ISTATUS /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQ_VARID', &
+                                                           trim(TPREC%NAME)//'0001' )
+        ISTATUS = NF90_INQUIRE_VARIABLE(IFILE_ID, IVAR_ID, DIMIDS = IDIMS_ID)
+        IF (ISTATUS /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_VARIABLE',&
+                                                           trim(TPREC%NAME)//'0001' )
+
+        DEALLOCATE(YTIMEDEP)
+      ELSE IF ( YSPLIT /= 'no' ) THEN
+        CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4','unknown value '//trim(YSPLIT)//' for split_variable attribute' )
+      END IF
+
+      DEALLOCATE(YSPLIT)
+    END IF
+
+    ISTATUS = NF90_GET_ATT(IFILE_ID,KVAR_ID,'grid',TPREC%NGRID_FILE)
+    !On MesoNH versions < 5.4.0, the grid number was stored in 'GRID' instead of 'grid'
+    IF (ISTATUS /= NF90_NOERR) ISTATUS = NF90_GET_ATT(IFILE_ID,KVAR_ID,'GRID',TPREC%NGRID_FILE)
+    IF (ISTATUS /= NF90_NOERR) TPREC%NGRID_FILE = 0
+
+    ISTATUS = NF90_GET_ATT(IFILE_ID,KVAR_ID,'units',TPREC%CUNITS_FILE)
+    IF (ISTATUS /= NF90_NOERR) TPREC%CUNITS_FILE = ''
+
+    !split_variable and other attributes were added in MesoNH > 5.4.2
+    ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'split_variable', LEN=ILENG)
+    IF (ISTATUS == NF90_NOERR) THEN
+      IF (GSPLIT_AT_ENTRY) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Metadata_get_nc4','split variable declaration inside a split file')
+
+      ALLOCATE(CHARACTER(LEN=ILENG) :: YSPLIT)
+      ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_variable', YSPLIT)
+      IF (istatus /= NF90_NOERR) call IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'split_variable' )
+      IF ( YSPLIT == 'yes' ) then
+        TPREC%LSPLIT = .true.
+
+        ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'ndims', TPREC%NDIMS_FILE)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'ndims' )
+        IF ( TPREC%NDIMS_FILE/=3 ) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Metadata_get_nc4', &
+                                                  'split variable with ndims/=3 not supported')
+
+        ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'time_dependent', LEN=ILENG)
+        IF (istatus /= NF90_NOERR) &
+          CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_ATTRIBUTE', 'time_dependent' )
+        ALLOCATE(CHARACTER(LEN=ILENG) :: YTIMEDEP)
+        ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'time_dependent', YTIMEDEP)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'time_dependent' )
+        IF ( YTIMEDEP == 'yes' ) then
+          TPREC%TFIELD%LTIMEDEP = .TRUE.
+        ELSE IF ( YTIMEDEP == 'no' ) THEN
+          TPREC%TFIELD%LTIMEDEP = .FALSE.
+        ELSE
+          CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4','unknown value '//trim(YTIMEDEP)// &
+                                                                  ' for time_dependent attribute' )
+        END IF
+
+        ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_nblocks', iblocks)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'split_nblocks' )
+
+!PW: todo:check tfiles_ioz exist
+        IFILE_ID = TPFILE%TFILES_IOZ(1)%TFILE%NNCID
+
+        istatus = NF90_INQ_VARID(IFILE_ID,trim(TPREC%NAME)//'0001',ivar_id)
+        IF (ISTATUS /= NF90_NOERR) &
+          CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQ_VARID', trim(TPREC%NAME)//'0001' )
+        ISTATUS = NF90_INQUIRE_VARIABLE(IFILE_ID, IVAR_ID, DIMIDS = IDIMS_ID)
+        IF (ISTATUS /= NF90_NOERR) &
+          CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_VARIABLE', trim(TPREC%NAME)//'0001' )
+
+        DEALLOCATE(YTIMEDEP)
+      ELSE IF ( YSPLIT /= 'no' ) THEN
+        CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4','unknown value '//trim(YSPLIT)//' for split_variable attribute' )
+      END IF
+
+      DEALLOCATE(YSPLIT)
+    END IF
+
+    ISTATUS = NF90_GET_ATT(IFILE_ID,KVAR_ID,'grid',TPREC%NGRID_FILE)
+    !On MesoNH versions < 5.4.0, the grid number was stored in 'GRID' instead of 'grid'
+    IF (ISTATUS /= NF90_NOERR) ISTATUS = NF90_GET_ATT(IFILE_ID,KVAR_ID,'GRID',TPREC%NGRID_FILE)
+    IF (ISTATUS /= NF90_NOERR) TPREC%NGRID_FILE = 0
+
+    ISTATUS = NF90_GET_ATT(IFILE_ID,KVAR_ID,'units',TPREC%CUNITS_FILE)
+    IF (ISTATUS /= NF90_NOERR) TPREC%CUNITS_FILE = ''
+
     IF (.NOT.TPREC%LSPLIT) THEN
       ALLOCATE(TPREC%NDIMSIZES_FILE(TPREC%NDIMS_FILE))
       ALLOCATE(TPREC%CDIMNAMES_FILE(TPREC%NDIMS_FILE))
     ELSE
-      ALLOCATE(TPREC%NDIMSIZES_FILE(TPREC%NDIMS_FILE+1))
-      ALLOCATE(TPREC%CDIMNAMES_FILE(TPREC%NDIMS_FILE+1))
+      IF ( GSPLIT_AT_ENTRY ) THEN
+        ALLOCATE(TPREC%NDIMSIZES_FILE(TPREC%NDIMS_FILE+1))
+        ALLOCATE(TPREC%CDIMNAMES_FILE(TPREC%NDIMS_FILE+1))
+      ELSE
+        IF (TPREC%TFIELD%LTIMEDEP) THEN
+          ALLOCATE(TPREC%NDIMSIZES_FILE(TPREC%NDIMS_FILE+1))
+          ALLOCATE(TPREC%CDIMNAMES_FILE(TPREC%NDIMS_FILE+1))
+        ELSE
+          ALLOCATE(TPREC%NDIMSIZES_FILE(TPREC%NDIMS_FILE))
+          ALLOCATE(TPREC%CDIMNAMES_FILE(TPREC%NDIMS_FILE))
+        END IF
+      END IF
     END IF
 
     IF (TPREC%NDIMS_FILE == 0) THEN
@@ -1228,7 +1531,7 @@ END DO
       ! Fill dimensions info
       ILENG = 1
       DO JDIM=1,TPREC%NDIMS_FILE
-        ISTATUS = NF90_INQUIRE_DIMENSION(KFILE_ID,IDIMS_ID(JDIM),                    &
+        ISTATUS = NF90_INQUIRE_DIMENSION(IFILE_ID,IDIMS_ID(JDIM),                    &
                                                    len =  TPREC%NDIMSIZES_FILE(JDIM), &
                                                    name = TPREC%CDIMNAMES_FILE(JDIM)  )
         if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_DIMENSION', '' )
@@ -1248,29 +1551,41 @@ END DO
       IF (TPREC%LSPLIT) THEN
         IF(     (.NOT.TPREC%TFIELD%LTIMEDEP .AND.  TPREC%NDIMS_FILE/=2)   &
             .OR. (     TPREC%TFIELD%LTIMEDEP .AND.  TPREC%NDIMS_FILE/=3) ) &
-          CALL PRINT_MSG(NVERB_FATAL,'IO','parse_infiles','split variables can only be 3D')
-          !Split variables are Z-split
-          ILENG = ILENG * (NKMAX+2*JPVEXT)
-          !Move time dimension to last (4th) position
-          IF (TPREC%TFIELD%LTIMEDEP) THEN
-            TPREC%NDIMSIZES_FILE(4) = TPREC%NDIMSIZES_FILE(3)
-            TPREC%CDIMNAMES_FILE(4) = TPREC%CDIMNAMES_FILE(3)
-          END IF
-          !Add vertical dimension
-          TPREC%NDIMSIZES_FILE(3) = NKMAX+2*JPVEXT
-          TPREC%CDIMNAMES_FILE(3) = 'level' !Could also be 'level_w'
+          CALL PRINT_MSG(NVERB_FATAL,'IO','IO_Metadata_get_nc4',trim(TPREC%NAME)//': split variables can only be 3D')
+        !Split variables are Z-split
+        !Move time dimension to last (4th) position
+        IF (TPREC%TFIELD%LTIMEDEP) THEN
+          TPREC%NDIMSIZES_FILE(4) = TPREC%NDIMSIZES_FILE(3)
+          TPREC%CDIMNAMES_FILE(4) = TPREC%CDIMNAMES_FILE(3)
         END IF
-      END IF
 
-      TPREC%NSIZE = ILENG
+        !Add vertical/3rd dimension
+        SELECT CASE(TPREC%NGRID_FILE)
+          CASE (1, 2, 3, 5)
+            TPREC%CDIMNAMES_FILE(3) = 'level'
+          CASE (4, 6, 7, 8)
+            TPREC%CDIMNAMES_FILE(3) = 'level_w'
+          CASE DEFAULT
+            TPREC%CDIMNAMES_FILE(3) = 'unknown'
+        END SELECT
+
+        IF (iblocks == -1 ) then
+          TPREC%NDIMSIZES_FILE(3) = NKMAX+2*JPVEXT
+        else
 
-      ISTATUS = NF90_GET_ATT(KFILE_ID,KVAR_ID,'grid',TPREC%NGRID_FILE)
-      !On MesoNH versions < 5.4.0, the grid number was stored in 'GRID' instead of 'grid'
-      IF (ISTATUS /= NF90_NOERR) ISTATUS = NF90_GET_ATT(KFILE_ID,KVAR_ID,'GRID',TPREC%NGRID_FILE)
-      IF (ISTATUS /= NF90_NOERR) TPREC%NGRID_FILE = 0
+          if (TPREC%NGRID_FILE/=0 .and. iblocks/=NKMAX+2*JPVEXT) THEN
+            !If size is not as expected, reset its name
+            CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4',trim(TPREC%NAME)//': strange nblocks size')
+            TPREC%CDIMNAMES_FILE(3) = 'unknown'
+          end if
+          TPREC%NDIMSIZES_FILE(3) = iblocks
+        end if
+
+        ILENG = ILENG * TPREC%NDIMSIZES_FILE(3)
+      END IF
+    END IF
 
-      ISTATUS = NF90_GET_ATT(KFILE_ID,KVAR_ID,'units',TPREC%CUNITS_FILE)
-      IF (ISTATUS /= NF90_NOERR) TPREC%CUNITS_FILE = ''
+    TPREC%NSIZE = ILENG
   END SUBROUTINE IO_Metadata_get_nc4
 
 
@@ -1311,7 +1626,7 @@ END DO
       END IF
       IF (TRIM(TPREC%TDIMS(JJ)%name)/='time' .AND. &
         TPREC%TDIMS(JJ)%len /= TPREC%NDIMSIZES_FILE(JJ)) THEN
-        CALL PRINT_MSG(NVERB_WARNING,'IO','parse_infiles','problem with dimensions for '//TPREC%TFIELD%CMNHNAME)
+        CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILL_DIMS_NC4','problem with dimensions for '//TPREC%TFIELD%CMNHNAME)
         KRESP = -3
         EXIT
       END IF
diff --git a/MY_RUN/KTEST/014_LIMA/003_ncl/run_ncl b/MY_RUN/KTEST/014_LIMA/003_ncl/run_ncl
index 63e7d910aeb3ee2c8763ff8b970ea94992e1ddbd..2444be340eda2cb7a5a846cb44cd71694626e1c0 100755
--- a/MY_RUN/KTEST/014_LIMA/003_ncl/run_ncl
+++ b/MY_RUN/KTEST/014_LIMA/003_ncl/run_ncl
@@ -17,5 +17,4 @@ ${POSTRUN} display visu_LIMA.000003.png
 ${POSTRUN} display visu_LIMA.000004.png
 ${POSTRUN} display visu_LIMA.000005.png
 ${POSTRUN} display visu_LIMA.000006.png
-${POSTRUN} display visu_LIMA.000007.png
 exit 0
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
index 63dcb3b9ed7598f6a92809d99094aeeae88ff4ae..aeeb0721b76933ef7072d00a4efe2a9d0d344940 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
@@ -818,6 +818,11 @@ CONTAINS
          CALL SECOND_MNH2(T1)
          TIMEZ%T_WRIT3D_SEND=TIMEZ%T_WRIT3D_SEND + T1 - T0
          !
+         ! Write the variable attributes in the non-split file
+         !
+         if ( tpfile%nmaster_rank==isp .and. gnc4 ) &
+           call IO_Write_field_header_split_nc4( tpfile, tpfield, size( pfield, 3 ) )
+         !
          ! write the data
          !
          ALLOCATE(ZSLICE_ll(0,0)) ! to avoid bug on test of size
@@ -913,6 +918,11 @@ CONTAINS
                 END IF
              END DO
              !
+             ! Write the variable attributes in the non-split file
+             !
+             if ( tpfile%nmaster_rank==isp .and. gnc4 ) &
+               call IO_Field_header_split_write_nc4( tpfile, tpfield, size( pfield, 3 ) )
+             !
              ! write the data
              !
              DO JKK=JK,JK_MAX
diff --git a/src/LIB/SURCOUCHE/src/mode_io_file.f90 b/src/LIB/SURCOUCHE/src/mode_io_file.f90
index fc766f55219d6ad3d9e8321af35156acf77878fc..f341a1a62868cb50663100c5d795cbb0f576a7fa 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_file.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_file.f90
@@ -36,6 +36,7 @@
 !  P. Wautelet 01/03/2019: move open/close subroutines to mode_io_file.f90
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 12/03/2019: simplify opening of IO split files
+!  P. Wautelet 05/09/2019: disable IO_Coordvar_write_nc4 for Z-split files
 !-----------------------------------------------------------------
 module mode_io_file
 
@@ -580,10 +581,12 @@ SELECT CASE(TPFILE%CTYPE)
       TZFILE_IOZ%NOPEN_CURRENT = 0
       TZFILE_IOZ%NCLOSE        = TZFILE_IOZ%NCLOSE + 1
 #if defined(MNH_IOCDF4)
-      !Write coordinates variables in netCDF file
-      IF (TZFILE_IOZ%CMODE == 'WRITE' .AND. (TZFILE_IOZ%CFORMAT=='NETCDF4' .OR. TZFILE_IOZ%CFORMAT=='LFICDF4')) THEN
-        CALL IO_Coordvar_write_nc4(TZFILE_IOZ,HPROGRAM_ORIG=HPROGRAM_ORIG)
-      END IF
+!Remark: IO_Coordvar_write_nc4 disabled (for the moment) for Z-split files
+!        because it introduce a serialization due to MPI communications inside the call
+!       !Write coordinates variables in netCDF file
+!       IF (TZFILE_IOZ%CMODE == 'WRITE' .AND. (TZFILE_IOZ%CFORMAT=='NETCDF4' .OR. TZFILE_IOZ%CFORMAT=='LFICDF4')) THEN
+!         CALL IO_Coordvar_write_nc4(TZFILE_IOZ,HPROGRAM_ORIG=HPROGRAM_ORIG)
+!       END IF
 #endif
       IF (TZFILE_IOZ%LMASTER) THEN
         if (tzfile_ioz%cformat == 'LFI'     .or. tzfile_ioz%cformat == 'LFICDF4') call IO_File_close_lfi(tzfile_ioz,iresp)
diff --git a/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90
index 746e5746e59b97bb174194ac81d125d22a6f9a1f..5a80880fa4e74e5bcee57266b095c9bead5d8e6e 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90
@@ -16,6 +16,7 @@
 !  P. Wautelet 10/01/2019: replace handle_err by IO_Err_handle_nc4 for better netCDF error messages
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 07/03/2019: bugfix: io_set_mnhversion must be called by all the processes
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
index 74c69fbcf0a9f2d061d80c7e7d554c61dad7c846..75e142d20f6469336fb3ec89e106d833b43b13aa 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
@@ -12,6 +12,7 @@
 !  P. Wautelet 21/02/2019: bugfix: intent of read fields: OUT->INOUT to keep initial value if not found in file
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 25/06/2019: added IO_Field_read for 3D integer arrays (IO_Field_read_nc4_N3)
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
 module mode_io_read_nc4
@@ -59,9 +60,9 @@ INTEGER,                  INTENT(OUT)   :: KRESP  ! return-code
 CHARACTER(LEN=*),OPTIONAL,INTENT(IN)    :: HCALENDAR
 !
 INTEGER                      :: IERRLEVEL
-INTEGER                      :: ILEN
 INTEGER                      :: IGRID
 INTEGER(KIND=CDFINT)         :: INCID
+INTEGER(KIND=CDFINT)         :: ILEN
 INTEGER(KIND=CDFINT)         :: STATUS
 CHARACTER(LEN=12)            :: YVAL_FILE, YVAL_MEM
 CHARACTER(LEN=:),ALLOCATABLE :: YVALUE
diff --git a/src/LIB/SURCOUCHE/src/mode_io_tools.f90 b/src/LIB/SURCOUCHE/src/mode_io_tools.f90
index b4d2a3d5fd80491940d3e6e0bb281ef086894af0..fb0eb161c7c708bd1df9dd04fe59bafb88b61eb7 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_tools.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_tools.f90
@@ -7,6 +7,8 @@
 !  P. Wautelet 13/12/2018: extracted from mode_io.f90
 !  P. Wautelet 14/12/2018: added IO_Filename_construct
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+!  P. Wautelet 05/09/2019: io_get_mnhversion: Z-split files: to prevent serialization between files,
+!                          nmnhversion is taken from the main file
 !-----------------------------------------------------------------
 module mode_io_tools
 
@@ -117,70 +119,76 @@ subroutine IO_Mnhversion_get(tpfile)
   if ( trim(tpfile%cmode) /= 'READ' ) &
     call print_msg(NVERB_FATAL,'IO','IO_Mnhversion_get',trim(tpfile%cname)// 'not opened in read mode')
 
-  imnhversion(:) = 0
-  !use tzfield because tfieldlist could be not initialised
-  tzfield%cmnhname   = 'MNHVERSION'
-  tzfield%cstdname   = ''
-  tzfield%clongname  = 'MesoNH version'
-  tzfield%cunits     = ''
-  tzfield%cdir       = '--'
-  tzfield%ccomment   = ''
-  tzfield%ngrid      = 0
-  tzfield%ntype      = TYPEINT
-  tzfield%ndims      = 1
-  tzfield%ltimedep   = .false.
-  call IO_Field_read(tpfile,tzfield,imnhversion,iresp)
-  if (iresp/=0) then
-    tzfield%cmnhname   = 'MASDEV'
-    tzfield%clongname  = 'MesoNH version (without bugfix)'
-    tzfield%ndims      = 0
-    call IO_Field_read(tpfile,tzfield,imasdev,iresp)
+  if ( .not. associated( tpfile%tmainfile ) ) then
+    imnhversion(:) = 0
+    !use tzfield because tfieldlist could be not initialised
+    tzfield%cmnhname   = 'MNHVERSION'
+    tzfield%cstdname   = ''
+    tzfield%clongname  = 'MesoNH version'
+    tzfield%cunits     = ''
+    tzfield%cdir       = '--'
+    tzfield%ccomment   = ''
+    tzfield%ngrid      = 0
+    tzfield%ntype      = TYPEINT
+    tzfield%ndims      = 1
+    tzfield%ltimedep   = .false.
+    call IO_Field_read(tpfile,tzfield,imnhversion,iresp)
     if (iresp/=0) then
-      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','unknown MASDEV version for '//trim(tpfile%cname))
-    else
-      if (imasdev<100) then
-        imnhversion(1)=imasdev/10
-        imnhversion(2)=mod(imasdev,10)
-      else !for example for mnh 4.10
-        imnhversion(1)=imasdev/100
-        imnhversion(2)=mod(imasdev,100)
+      tzfield%cmnhname   = 'MASDEV'
+      tzfield%clongname  = 'MesoNH version (without bugfix)'
+      tzfield%ndims      = 0
+      call IO_Field_read(tpfile,tzfield,imasdev,iresp)
+      if (iresp/=0) then
+        call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','unknown MASDEV version for '//trim(tpfile%cname))
+      else
+        if (imasdev<100) then
+          imnhversion(1)=imasdev/10
+          imnhversion(2)=mod(imasdev,10)
+        else !for example for mnh 4.10
+          imnhversion(1)=imasdev/100
+          imnhversion(2)=mod(imasdev,100)
+        end if
+      end if
+      !
+      tzfield%cmnhname   = 'BUGFIX'
+      tzfield%clongname  = 'MesoNH bugfix number'
+      call IO_Field_read(tpfile,tzfield,ibugfix,iresp)
+      if (iresp/=0) then
+        call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','unknown BUGFIX version for '//trim(tpfile%cname))
+      else
+        imnhversion(3)=ibugfix
       end if
     end if
     !
-    tzfield%cmnhname   = 'BUGFIX'
-    tzfield%clongname  = 'MesoNH bugfix number'
-    call IO_Field_read(tpfile,tzfield,ibugfix,iresp)
-    if (iresp/=0) then
-      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','unknown BUGFIX version for '//trim(tpfile%cname))
-    else
-      imnhversion(3)=ibugfix
-    end if
-  end if
-  !
-  write(ymnhversion_file,"( I0,'.',I0,'.',I0 )" ) imnhversion(1),imnhversion(2),imnhversion(3)
-  write(ymnhversion_curr,"( I0,'.',I0,'.',I0 )" ) nmnhversion(1),nmnhversion(2),nmnhversion(3)
-  !
-  if ( imnhversion(1)==0 .and. imnhversion(2)==0 .and. imnhversion(3)==0 ) then
-    call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
-                  ' was written with an unknown version of MesoNH')
-    else if (  imnhversion(1)< nmnhversion(1) .or. &
-            (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)< nmnhversion(2)) .or. &
-            (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)==nmnhversion(2) .and. imnhversion(3)<nmnhversion(3)) ) then
-    call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
-                    ' was written with an older version of MesoNH ('//trim(ymnhversion_file)//&
-                    ' instead of '//trim(ymnhversion_curr)//')')
-    else if (  imnhversion(1)> nmnhversion(1) .or. &
-              (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)> nmnhversion(2)) .or. &
-              (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)==nmnhversion(2) .and. imnhversion(3)>nmnhversion(3)) ) then
-      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
-                    ' was written with a more recent version of MesoNH ('//trim(ymnhversion_file)//&
-                    ' instead of '//trim(ymnhversion_curr)//')')
-    else
-      call print_msg(NVERB_DEBUG,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
-                    ' was written with the same version of MesoNH ('//trim(ymnhversion_curr)//')')
-    end if
+    write(ymnhversion_file,"( I0,'.',I0,'.',I0 )" ) imnhversion(1),imnhversion(2),imnhversion(3)
+    write(ymnhversion_curr,"( I0,'.',I0,'.',I0 )" ) nmnhversion(1),nmnhversion(2),nmnhversion(3)
     !
-    tpfile%nmnhversion(:) = imnhversion(:)
+    if ( imnhversion(1)==0 .and. imnhversion(2)==0 .and. imnhversion(3)==0 ) then
+      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
+                    ' was written with an unknown version of MesoNH')
+      else if (  imnhversion(1)< nmnhversion(1) .or. &
+              (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)< nmnhversion(2)) .or. &
+              (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)==nmnhversion(2) .and. imnhversion(3)<nmnhversion(3)) ) then
+      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
+                      ' was written with an older version of MesoNH ('//trim(ymnhversion_file)//&
+                      ' instead of '//trim(ymnhversion_curr)//')')
+      else if (  imnhversion(1)> nmnhversion(1) .or. &
+                (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)> nmnhversion(2)) .or. &
+                (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)==nmnhversion(2) .and. imnhversion(3)>nmnhversion(3)) ) then
+        call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
+                      ' was written with a more recent version of MesoNH ('//trim(ymnhversion_file)//&
+                      ' instead of '//trim(ymnhversion_curr)//')')
+      else
+        call print_msg(NVERB_DEBUG,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
+                      ' was written with the same version of MesoNH ('//trim(ymnhversion_curr)//')')
+      end if
+      !
+      tpfile%nmnhversion(:) = imnhversion(:)
+  else ! associated( tpfile%tmainfile )
+    if ( .not. tpfile%tmainfile%lopened ) &
+      call Print_msg( NVERB_FATAL, 'IO', 'IO_Mnhversion_get', 'tmainfile should be opened' )
+    tpfile%nmnhversion(:) = tpfile%tmainfile%nmnhversion(:)
+  end if
 end subroutine IO_Mnhversion_get
 
 
diff --git a/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90
index 21734960714a0e90b1f0376525c179b08705d1a0..2be340eafd509639e7f2385f1c2f05f543e666ab 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90
@@ -10,6 +10,7 @@
 !  P. Wautelet 13/12/2018: split of mode_netcdf into multiple modules/files
 !  P. Wautelet 10/01/2019: replace handle_err by IO_Err_handle_nc4 for better netCDF error messages
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
 module mode_io_tools_nc4
@@ -78,7 +79,7 @@ TYPE(DIMCDF),DIMENSION(:),            INTENT(OUT) :: TPDIMS
 INTEGER,                              INTENT(OUT) :: KRESP
 !
 INTEGER               :: IGRID
-INTEGER               :: ILEN, ISIZE
+INTEGER(kind=CDFINT)  :: ILEN, ISIZE
 INTEGER               :: JI
 CHARACTER(LEN=32)     :: YINT
 CHARACTER(LEN=2)      :: YDIR
@@ -112,7 +113,7 @@ IF (IGRID==0) THEN
         ILEN = 1
       END IF
     CASE (1)
-      PTDIM => IO_Dimcdf_get_nc4(TPFILE,KLEN)
+      PTDIM => IO_Dimcdf_get_nc4(TPFILE, int( KLEN, kind=CDFINT ) )
       TPDIMS(1) = PTDIM
       ILEN      = PTDIM%LEN
     CASE DEFAULT
@@ -165,7 +166,7 @@ ELSE
       ELSE IF ( YDIR == 'ZZ' ) THEN
         PTDIM => TPFILE%TNCCOORDS(3,IGRID)%TDIM
       ELSE IF (JI==TPFIELD%NDIMS) THEN !Guess last dimension
-        PTDIM => IO_Dimcdf_get_nc4(TPFILE, KLEN)
+        PTDIM => IO_Dimcdf_get_nc4(TPFILE, int( KLEN, kind=CDFINT ) )
       END IF
       ILEN       = PTDIM%LEN
       TPDIMS(JI) = PTDIM
@@ -263,16 +264,16 @@ IIU_ll = NIMAX_ll + 2*JPHEXT
 IJU_ll = NJMAX_ll + 2*JPHEXT
 IKU    = NKMAX    + 2*JPVEXT
 
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI))      PIOCDF%DIM_NI      => IO_Dimcdf_get_nc4(TPFILE, IIU_ll, 'ni')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ))      PIOCDF%DIM_NJ      => IO_Dimcdf_get_nc4(TPFILE, IJU_ll, 'nj')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_U))    PIOCDF%DIM_NI_U    => IO_Dimcdf_get_nc4(TPFILE, IIU_ll, 'ni_u')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_U))    PIOCDF%DIM_NJ_U    => IO_Dimcdf_get_nc4(TPFILE, IJU_ll, 'nj_u')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_V))    PIOCDF%DIM_NI_V    => IO_Dimcdf_get_nc4(TPFILE, IIU_ll, 'ni_v')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_V))    PIOCDF%DIM_NJ_V    => IO_Dimcdf_get_nc4(TPFILE, IJU_ll, 'nj_v')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI))      PIOCDF%DIM_NI      => IO_Dimcdf_get_nc4(TPFILE, int( IIU_ll, kind=CDFINT ), 'ni')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ))      PIOCDF%DIM_NJ      => IO_Dimcdf_get_nc4(TPFILE, int( IJU_ll, kind=CDFINT ), 'nj')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_U))    PIOCDF%DIM_NI_U    => IO_Dimcdf_get_nc4(TPFILE, int( IIU_ll, kind=CDFINT ), 'ni_u')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_U))    PIOCDF%DIM_NJ_U    => IO_Dimcdf_get_nc4(TPFILE, int( IJU_ll, kind=CDFINT ), 'nj_u')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_V))    PIOCDF%DIM_NI_V    => IO_Dimcdf_get_nc4(TPFILE, int( IIU_ll, kind=CDFINT ), 'ni_v')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_V))    PIOCDF%DIM_NJ_V    => IO_Dimcdf_get_nc4(TPFILE, int( IJU_ll, kind=CDFINT ), 'nj_v')
 IF (TRIM(YPROGRAM)/='PGD' .AND. TRIM(YPROGRAM)/='NESPGD' .AND. TRIM(YPROGRAM)/='ZOOMPG' &
     .AND. .NOT.(TRIM(YPROGRAM)=='REAL' .AND. CSTORAGE_TYPE=='SU') ) THEN !condition to detect PREP_SURFEX
-  IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL))   PIOCDF%DIM_LEVEL   => IO_Dimcdf_get_nc4(TPFILE, IKU   , 'level')
-  IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL_W)) PIOCDF%DIM_LEVEL_W => IO_Dimcdf_get_nc4(TPFILE, IKU   , 'level_w')
+  IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL))   PIOCDF%DIM_LEVEL   => IO_Dimcdf_get_nc4(TPFILE, int( IKU, kind=CDFINT ), 'level')
+  IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL_W)) PIOCDF%DIM_LEVEL_W => IO_Dimcdf_get_nc4(TPFILE, int( IKU, kind=CDFINT ), 'level_w')
   IF (.NOT. ASSOCIATED(PIOCDF%DIMTIME)) PIOCDF%DIMTIME => IO_Dimcdf_get_nc4(TPFILE, NF90_UNLIMITED, 'time')
 ELSE
   !PGD and SURFEX files for MesoNH have no vertical levels or time scale
diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
index f79e1cb148cc9264c8197fba25ef23557bdc061d..34eebc5adef4e993658ae2cbc7dcd0f27b164250 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
@@ -12,6 +12,8 @@
 !  P. Wautelet 11/01/2019: NVERB_INFO->NVERB_WARNING for zero size fields
 !  P. Wautelet 01/02/2019: IO_Coordvar_write_nc4: bug: use of non-associated pointers (PIOCDF%DIM_Nx_y)
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
+!  P. Wautelet 19/09/2019: temporary workaround for netCDF bug if MNH_INT=8 (if netCDF fortran < 4.4.5)
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
 module mode_io_write_nc4
@@ -34,6 +36,7 @@ implicit none
 private
 
 public :: IO_Coordvar_write_nc4, IO_Field_write_nc4, IO_Header_write_nc4
+public :: IO_Field_header_split_write_nc4
 
 INTERFACE IO_Field_write_nc4
    MODULE PROCEDURE IO_Field_write_nc4_X0,IO_Field_write_nc4_X1, &
@@ -55,6 +58,92 @@ integer(kind=CDFINT),parameter :: DEFLATE = 1
 
 contains
 
+subroutine IO_Field_header_split_write_nc4( tpfile, tpfield, knblocks )
+use modd_parameters, only : jphext
+
+use mode_field,      only: TYPEREAL
+use mode_tools_ll,   only: Get_globaldims_ll
+
+type(tfiledata),       intent(in) :: tpfile
+type(tfielddata),      intent(in) :: tpfield
+integer,               intent(in) :: knblocks
+
+character(len=len(tpfield%cmnhname))  :: yvarname
+integer                               :: iimax, ijmax
+integer(kind=CDFINT)              :: istatus
+integer(kind=CDFINT)              :: incid
+integer(kind=CDFINT)              :: ivarid
+integer(kind=CDFINT),dimension(3) :: ishape
+
+call Print_msg( NVERB_DEBUG, 'IO', 'IO_Field_header_split_write_nc4', 'called for field '//trim( tpfield%cmnhname ) )
+
+if ( tpfield%ntype /= TYPEREAL ) then
+  call Print_msg( NVERB_ERROR, 'IO', 'IO_Field_header_split_write_nc4', 'invalid ntype for field '//trim( tpfield%cmnhname ) )
+  return
+end if
+
+! Get the Netcdf file ID
+incid = tpfile%nncid
+
+call IO_Mnhname_clean( tpfield%cmnhname, yvarname )
+
+istatus = NF90_INQ_VARID( incid, yvarname, ivarid )
+if ( istatus /= NF90_NOERR ) then
+
+  istatus = NF90_DEF_VAR( incid, yvarname, MNHREAL_NF90, ivarid)
+
+  if ( tpfield%ndims /= 3 ) call Print_msg( NVERB_FATAL, 'IO', 'IO_Field_header_split_write_nc4', &
+                  trim( tpfile%cname )//': '//trim( yvarname )//': NDIMS should be 3' )
+
+  if ( tpfield%cdir /= 'XY' ) call Print_msg( NVERB_FATAL, 'IO', 'IO_Field_header_split_write_nc4', &
+                  trim( tpfile%cname )//': '//trim( yvarname )//': CDIR should be XY' )
+
+  call Get_globaldims_ll( iimax, ijmax )
+  ishape(1) = int( iimax + 2 * jphext, kind = CDFINT )
+  ishape(2) = int( ijmax + 2 * jphext, kind = CDFINT )
+  ishape(3) = knblocks
+  call IO_Field_attr_write_nc4( tpfile, tpfield, ivarid, .false., kshape = ishape )
+
+  if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_DEF_VAR', trim(yvarname) )
+
+  istatus = NF90_PUT_ATT( incid, ivarid,'split_variable', 'yes')
+  if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_PUT_ATT', &
+                                                     'split_variable for '//trim( tpfield%cmnhname ) )
+
+  istatus = NF90_PUT_ATT( incid, ivarid,'split_mode', 'Z')
+  if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_PUT_ATT', &
+                                                     'split_mode for '//trim( tpfield%cmnhname ) )
+
+  istatus = NF90_PUT_ATT( incid, ivarid,'split_nblocks', knblocks )
+  if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_PUT_ATT', &
+                                                     'split_nblocks for '//trim( tpfield%cmnhname ) )
+
+  istatus = NF90_PUT_ATT( incid, ivarid,'split_nfiles', tpfile%nsubfiles_ioz )
+  if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_PUT_ATT', &
+                                                     'split_nfiles for '//trim( tpfield%cmnhname ) )
+
+  istatus = NF90_PUT_ATT( incid, ivarid,'split_distribution', 'round-robin' )
+  if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_PUT_ATT', &
+                                                     'split_distribution for '//trim( tpfield%cmnhname ) )
+
+  istatus = NF90_PUT_ATT( incid, ivarid,'ndims', tpfield%ndims )
+  if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_PUT_ATT', &
+                                                     'ndims for '//trim( tpfield%cmnhname ) )
+
+  if ( tpfield%ltimedep ) then
+    istatus = NF90_PUT_ATT( incid, ivarid,'time_dependent', 'yes' )
+  else
+    istatus = NF90_PUT_ATT( incid, ivarid,'time_dependent', 'no' )
+  end if
+  if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Field_header_split_write_nc4', 'NF90_PUT_ATT', &
+                                                     'time_dependent for '//trim( tpfield%cmnhname ) )
+else
+  call Print_msg( NVERB_WARNING, 'IO', 'IO_Field_header_split_write_nc4', &
+                  trim( tpfile%cname )//': '//trim( yvarname )//' already defined' )
+end if
+
+end subroutine IO_Field_header_split_write_nc4
+
 SUBROUTINE IO_Field_attr_write_nc4(TPFILE,TPFIELD,KVARID,OEXISTED,KSHAPE,HCALENDAR,OISCOORD)
 !
 USE MODD_CONF,   ONLY: CPROGRAM, LCARTESIAN
@@ -199,10 +288,14 @@ IF(TPFIELD%NTYPE==TYPEINT .AND. TPFIELD%NDIMS>0) THEN
   ! Remarks: * the attribute '_FillValue' is also recognized by the netCDF library
   !            and is used when pre-filling a variable
   !          * it cannot be modified if some data has already been written (->check OEXISTED)
+#if ( MNH_INT == 4 )
+!BUG: NF90_PUT_ATT does not work for NF90_INT64 and _FillValue attribute if netCDF-fortran version < 4.4.5 (bug in netCDF)
+!     (see https://github.com/Unidata/netcdf-fortran/issues/62)
   IF(.NOT.OEXISTED) THEN
     STATUS = NF90_PUT_ATT(INCID, KVARID,'_FillValue', TPFIELD%NFILLVALUE)
     IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','_FillValue')
   END IF
+#endif
   !
   ! Valid_min/max (CF/COMODO convention)
   STATUS = NF90_PUT_ATT(INCID, KVARID,'valid_min', TPFIELD%NVALIDMIN)
@@ -1922,6 +2015,7 @@ INTEGER,PARAMETER :: YEAR=1, MONTH=2, DAY=3, HH=5, MM=6, SS=7
 CHARACTER(len=5)             :: YZONE
 CHARACTER(LEN=:),ALLOCATABLE :: YCMD, YHISTORY, YHISTORY_NEW, YHISTORY_PREV
 INTEGER                      :: ILEN_CMD, ILEN_PREV
+INTEGER(KIND=CDFINT)         :: ILEN_NC
 INTEGER(KIND=CDFINT)         :: ISTATUS
 INTEGER,DIMENSION(8)         :: IDATETIME
 !
@@ -1931,7 +2025,8 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_History_append_nc4','called for file '//TRIM
 !
 IF (TPFILE%LMASTER)  THEN
   !Check if history attribute already exists in file and read it
-  ISTATUS = NF90_INQUIRE_ATTRIBUTE(TPFILE%NNCID, NF90_GLOBAL, 'history', LEN=ILEN_PREV)
+  ISTATUS = NF90_INQUIRE_ATTRIBUTE(TPFILE%NNCID, NF90_GLOBAL, 'history', LEN=ILEN_NC)
+  ILEN_PREV = int( ILEN_NC, kind=kind(ILEN_PREV) )
   IF (ISTATUS == NF90_NOERR) THEN
     ALLOCATE(CHARACTER(LEN=ILEN_PREV) :: YHISTORY_PREV)
     ISTATUS = NF90_GET_ATT(TPFILE%NNCID, NF90_GLOBAL, 'history', YHISTORY_PREV)
diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
index db7752c9124099ea5c11f50bbc5b990c39ffcbd3..47073588d50647e110bda3700ea3c3948c663600 100644
--- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
@@ -21,6 +21,7 @@ MODULE MODE_MPPDB
 !  Philippe Wautelet: 22/01/2019: use sleep_c subroutine instead of non-standard call system
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!  J. Escobar  09/07/2019: bug, in MPPDB_CHECK_SURFEX3D, recompute IKSIZE_ll for local 0 size array
 !-----------------------------------------------------------------
 !
   use ISO_FORTRAN_ENV, only: OUTPUT_UNIT
@@ -2065,7 +2066,7 @@ MODULE MODE_MPPDB
     USE MODI_GET_SURF_MASK_n
     USE MODD_IO_SURF_MNH, ONLY : NHALO
     USE MODD_CONFZ     , ONLY : MPI_BUFFER_SIZE
-    USE MODD_MPIF      , ONLY : MPI_STATUS_IGNORE, MPI_SUM
+    USE MODD_MPIF,              ONLY: MPI_STATUS_IGNORE, MPI_MAX, MPI_SUM
     USE MODD_MNH_SURFEX_n
     use modd_precision,   only: MNHINT_MPI
 !
@@ -2085,23 +2086,25 @@ MODULE MODE_MPPDB
     INTEGER                              :: IIU,IJU,IKU
     INTEGER                              :: KXOR, KYOR, KXEND, KYEND  ! origin and end of the local physical subdomain
     INTEGER                              :: II,IJ,IK
-    INTEGER, ALLOCATABLE, DIMENSION(:)       :: KMASK
+    INTEGER, ALLOCATABLE, DIMENSION(:)   :: KMASK
     INTEGER                              :: KSIZE
     INTEGER                              :: KSIZEBUF
     INTEGER                              :: KSIZE_FULL
     INTEGER                              :: IGLBSIZEPTAB
     INTEGER                              :: INBSLICES
     INTEGER                              :: IINFO_ll
+    INTEGER                              :: IKSIZE_ll
     !
     IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN
     CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
+    CALL MPI_ALLREDUCE(SIZE(PTAB,2),IKSIZE_ll, 1, MNHINT_MPI, MPI_MAX, MPPDB_INTRA_COMM, IINFO_ll)
     !
     IF ( SIZE(PTAB) == 0 ) THEN   !if the local size of the field is 0, we need to define ZFIELD3D filled with default value 1e20
       CALL GET_INDICE_ll( KXOR, KYOR, KXEND, KYEND )
       IIU = KXEND-KXOR+1+2*JPHEXT
       IJU = KYEND-KYOR+1+2*JPHEXT
-      IKU = KZSIZE
+      IKU = IKSIZE_ll
       ALLOCATE(ZFIELD3D(IIU,IJU,IKU))
       ZFIELD3D = 1.E20
     ELSE
diff --git a/src/MNH/budget.f90 b/src/MNH/budget.f90
index df646981dc6c0fb44a01cc69d12c459a4e692314..bead348bf8baaeb46487fee30d58dfbd41f65c4e 100644
--- a/src/MNH/budget.f90
+++ b/src/MNH/budget.f90
@@ -77,6 +77,7 @@ END MODULE MODI_BUDGET
 !!      V. Masson   06/10/02  add LES budgets
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      J.Escobar : 09/07/2019 : for bit reproductiblity use MPPDB_CHECK with PRECISION=0.0 error
 !!      
 !-------------------------------------------------------------------------------
 !
@@ -117,15 +118,12 @@ INTEGER  :: IRESP   ! Return code of FM-routines
 REAL     :: ZTIME1  ! CPU time counter
 REAL     :: ZTIME2  ! CPU time counter
 !
-REAL     :: ZPRECISION ! for reproductibility checks
-
 !-------------------------------------------------------------------------------
 !
 !* Reproductivity checks
 !  Warning: requires an adaptation of the makefile in order to run two runs in
 !  parallel for comparison
 !
-!ZPRECISION = 1E-10
 IF (LCHECK) THEN
   print*,'BUDGET :',HBUVAR
   CALL MPPDB_CHECK3D(PVARS,HBUVAR,PRECISION)
diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90
index ace7bab440cc0d6e85fb034a2189e1a086042caa..8a2502ed39a3ea995f051f66f54b1660c048f86e 100644
--- a/src/MNH/diag.f90
+++ b/src/MNH/diag.f90
@@ -91,6 +91,7 @@
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
 !  P. Wautelet 11/02/2019: added missing use of MODI_CH_MONITOR_n
 !  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
+!  P. Wautelet 26/07/2019: bug correction: deallocate of zsea and ztown done too early
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -544,19 +545,16 @@ IF ( LAIRCRAFT_BALLOON ) THEN
   ZTOWN(:,:)= 0.
   CALL MNHGET_SURF_PARAM_n (PSEA=ZSEA(:,:),PTOWN=ZTOWN(:,:))
   DO ISTEPBAL=1,NTIME_AIRCRAFT_BALLOON,INT(XSTEP_AIRCRAFT_BALLOON)
-!
     CALL AIRCRAFT_BALLOON(XSTEP_AIRCRAFT_BALLOON,                &
                       TDTEXP, TDTMOD, TDTCUR, TXDTBAL,           &
                       XXHAT, XYHAT, XZZ, XMAP, XLONORI, XLATORI, &
                       XUT, XVT, XWT, XPABST, XTHT, XRT, XSVT,    &
                       XTKET, XTSRAD, XRHODREF,XCIT,ZSEA)
-  DEALLOCATE (ZSEA,ZTOWN)
-!
-!-----------------------------
 !
     TXDTBAL%TIME=TXDTBAL%TIME + XSTEP_AIRCRAFT_BALLOON
     CALL DATETIME_CORRECTDATE(TXDTBAL)
   ENDDO
+  DEALLOCATE (ZSEA,ZTOWN)
   CALL IO_Header_write(TZDIACFILE)
   CALL WRITE_LFIFMN_FORDIACHRO_n(TZDIACFILE)
   CALL WRITE_AIRCRAFT_BALLOON(TZDIACFILE)
diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90
index 8afdb41aefd43f6996f8a5c7a00afc6665930c81..55b5db9c4bf12ca54f13e17b2b6cdec2357bd3db 100644
--- a/src/MNH/flash_geom_elec.f90
+++ b/src/MNH/flash_geom_elec.f90
@@ -100,6 +100,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n
 !  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-------------------------------------------------------------------------------
 !
 !*      0.      DECLARATIONS
diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90
index 7793c96b1f3f2661988363813b7842b54da5b4ff..9ec06f34fdd44be42d5dee7485a1f76a3ec83e59 100644
--- a/src/MNH/ground_paramn.f90
+++ b/src/MNH/ground_paramn.f90
@@ -761,16 +761,16 @@ PSFCO2(:,:) = ZSFCO2(:,:) / XRHODREF(:,:,IKB)
 !
 IF (LDIAG_IN_RUN) THEN
   !
+  XCURRENT_SFCO2(:,:) = ZSFCO2(:,:)
+  XCURRENT_DSTAOD(:,:)=0.0
+  XCURRENT_SLTAOD(:,:)=0.0
+  IF (CRAD=='ECMW') THEN
   XCURRENT_LWD  (:,:) = XFLALWD(:,:)
   XCURRENT_SWD  (:,:) = SUM(XDIRSRFSWD(:,:,:)+XSCAFLASWD(:,:,:),DIM=3)
   XCURRENT_LWU  (:,:) = XLWU(:,:,IKB) 
   XCURRENT_SWU  (:,:) = XSWU(:,:,IKB) 
   XCURRENT_SWDIR(:,:) = SUM(XDIRSRFSWD,DIM=3)
   XCURRENT_SWDIFF(:,:) = SUM(XSCAFLASWD(:,:,:),DIM=3) 
-  XCURRENT_SFCO2(:,:) = ZSFCO2(:,:)
-  XCURRENT_DSTAOD(:,:)=0.0
-  XCURRENT_SLTAOD(:,:)=0.0
-  IF (CRAD=='ECMW') THEN
   DO JK=IKB,IKE
     IKRAD = JK - 1 
     DO JJ=IJB,IJE
diff --git a/src/MNH/ini_cpl.f90 b/src/MNH/ini_cpl.f90
index b1ef0fa5227f135a57e4ecc88faa0b7b6d47a1f5..0646747bacba903a0b9d57db46473508237d4a84 100644
--- a/src/MNH/ini_cpl.f90
+++ b/src/MNH/ini_cpl.f90
@@ -213,6 +213,8 @@ END MODULE MODI_INI_CPL
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!!      Q.Rodier 09/2019 add missing abort if coupling files date not ordered 
+!!                       or before date of the segment 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -372,6 +374,7 @@ DO JCI=1,NCPL_NBR
     YTITLE='CURRENT DATE AND TIME OF THE FILE'//YCI
     CALL SM_PRINT_TIME(TDTCPL(JCI),TLUOUT,YTITLE)
     GSKIP(JCI)=.TRUE.      ! flag to skip after this coupling file
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_CPL','')      
   ELSE
     NCPL_TIMES(JCI,1) = NINT( ZDIST / PTSTEP ) + 2
   END IF
@@ -388,7 +391,8 @@ DO JCI=1,NCPL_NBR
       WRITE(YCI,'(I2.0)') JCI-1        
       YTITLE='CURRENT DATE AND TIME OF THE FILE'//YCI
       CALL SM_PRINT_TIME(TDTCPL(JCI-1),TLUOUT,YTITLE)
-      GEND=.TRUE.           ! error flag set to true   
+      GEND=.TRUE.           ! error flag set to true
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_CPL','')      
     END IF
   !   
   END IF
diff --git a/src/MNH/ini_surfstationn.f90 b/src/MNH/ini_surfstationn.f90
index 3d8f085963fea14de3ebad7877b4d984f42e2f2c..0c099b7fbd6bcd5ae0243e75412d060eb4bfdbeb 100644
--- a/src/MNH/ini_surfstationn.f90
+++ b/src/MNH/ini_surfstationn.f90
@@ -191,6 +191,8 @@ ALLOCATE(TSTATION%GFLUX   (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%LEI     (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%SWD     (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%SWU     (ISTORE,NUMBSTAT))
+ALLOCATE(TSTATION%SWDIR   (ISTORE,NUMBSTAT))
+ALLOCATE(TSTATION%SWDIFF  (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%LWD     (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%LWU     (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%DSTAOD  (ISTORE,NUMBSTAT))
@@ -220,6 +222,8 @@ TSTATION%GFLUX   = XUNDEF
 TSTATION%LEI     = XUNDEF
 TSTATION%SWD     = XUNDEF
 TSTATION%SWU     = XUNDEF
+TSTATION%SWDIR   = XUNDEF
+TSTATION%SWDIFF  = XUNDEF
 TSTATION%LWD     = XUNDEF
 TSTATION%LWU     = XUNDEF
 TSTATION%DSTAOD  = XUNDEF
diff --git a/src/MNH/initial_guess.f90 b/src/MNH/initial_guess.f90
index b999796d65677a716cb4da15f59ebbd047961d93..f7d74b6474576d655d59f7a7d6a9d30d128a749a 100644
--- a/src/MNH/initial_guess.f90
+++ b/src/MNH/initial_guess.f90
@@ -144,6 +144,7 @@ END MODULE MODI_INITIAL_GUESS
 !!                  20/05/06                Remove KEPS
 !!                  10/09    (C.Lac)        FIT for variables advected with PPM
 !!                  04/13    (C.Lac)        FIT for all variables 
+!!                  07/19    (J.Escobar)    add reproductiblity test => MPPDB_CHECK( PRRS/RT/RHO )
 !!
 !-------------------------------------------------------------------------------
 !
@@ -158,6 +159,7 @@ USE MODD_BLOWSNOW_n
 !
 USE MODI_SHUMAN
 USE MODI_BUDGET
+USE MODE_MPPDB
 !
 IMPLICIT NONE
 !
@@ -218,6 +220,7 @@ END IF
 DO JRR=1,KRR
   PRRS(:,:,:,JRR) = PRT(:,:,:,JRR) * ZINVTSTEP * PRHODJ(:,:,:) 
 END DO
+CALL MPPDB_CHECK3DM("initial_guess:PRRS/RT/RHO",PRECISION,PRRS(:,:,:,1) , PRT(:,:,:,1) , PRHODJ)
 !
 ! *** passive tracers
 !
diff --git a/src/MNH/modd_sub_modeln.f90 b/src/MNH/modd_sub_modeln.f90
index 76b6970bdc6429d0ed6e368e0a8603ae5617e452..64744d5bfe6d8b11a865e277cee18057f257ecee 100644
--- a/src/MNH/modd_sub_modeln.f90
+++ b/src/MNH/modd_sub_modeln.f90
@@ -8,6 +8,8 @@
 !  J. Escobar  18/06/2018: bug compile R*4 => real*8 pointer XT_VISC
 !  P. Wautelet 08/02/2019: add missing NULL association for pointers
 !  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
+!  J. Escobar  09/07/2019: norme Doctor -> Rename Module Type variable TZ -> T
+!  J. Escobar  09/07/2019: for bug in management of XLSZWSM variable, add/use specific 2D TLSFIELD2D_ll pointer
 !-----------------------------------------------------------------
 !     #################
       MODULE MODD_SUB_MODEL_n
@@ -20,19 +22,20 @@ use modd_precision,   only: MNHTIME
 IMPLICIT NONE
 
 TYPE SUB_MODEL_t
-  TYPE(LIST_ll), POINTER :: TZFIELDS_ll => NULL(), TZLSFIELD_ll => NULL(), TZFIELDM_ll => NULL()
+  TYPE(LIST_ll), POINTER :: TFIELDS_ll => NULL(), TLSFIELD_ll => NULL(), TFIELDM_ll => NULL()
                        ! list of fields to update halo
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2M_ll => NULL(), TZLSHALO2_ll => NULL()
+  TYPE(LIST_ll), POINTER :: TLSFIELD2D_ll => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: THALO2M_ll => NULL(), TLSHALO2_ll => NULL()
                        ! list of fields for the halo updates (2nd layer)
   ! halo lists and updates for 4th order schemes
 ! list of fields to update halo at time t
-  TYPE(LIST_ll), POINTER :: TZFIELDT_ll  => NULL() ! for meteorological scalars
-  TYPE(LIST_ll), POINTER :: TZFIELDMT_ll => NULL() ! for momentum
-  TYPE(LIST_ll), POINTER :: TZFIELDSC_ll => NULL() ! for tracer scalars
+  TYPE(LIST_ll), POINTER :: TFIELDT_ll  => NULL() ! for meteorological scalars
+  TYPE(LIST_ll), POINTER :: TFIELDMT_ll => NULL() ! for momentum
+  TYPE(LIST_ll), POINTER :: TFIELDSC_ll => NULL() ! for tracer scalars
 ! list of fields for the halo updates (2nd layer) at time t
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2T_ll  => NULL()
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2MT_ll => NULL()
-  TYPE(HALO2LIST_ll), POINTER :: TZHALO2SC_ll => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: THALO2T_ll  => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: THALO2MT_ll => NULL()
+  TYPE(HALO2LIST_ll), POINTER :: THALO2SC_ll => NULL()
   INTEGER :: IBAK, IOUT          ! number of the backup / output
   REAL(kind=MNHTIME), DIMENSION(2) :: XT_START
   REAL(kind=MNHTIME), DIMENSION(2) :: XT_STORE, XT_BOUND, XT_GUESS
@@ -47,7 +50,7 @@ TYPE SUB_MODEL_t
   REAL(kind=MNHTIME), DIMENSION(2) :: XT_TURB, XT_2WAY, XT_SHADOWS
   REAL(kind=MNHTIME), DIMENSION(2) :: XT_FORCING, XT_NUDGING, XT_CHEM
 
-  REAL, DIMENSION(:,:,:), POINTER, contiguous :: ZWT_ACT_NUC=>NULL()
+  REAL, DIMENSION(:,:,:), POINTER, contiguous :: XWT_ACT_NUC=>NULL()
                              ! Vertical motion used for ACTivation/NUCleation
   LOGICAL, DIMENSION(:,:), POINTER :: GMASKkids=>NULL() ! kids domains mask
 
@@ -56,10 +59,11 @@ END TYPE SUB_MODEL_t
 
 TYPE(SUB_MODEL_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: SUB_MODEL_MODEL
 
-TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL(),TZLSFIELD_ll=>NULL(),TZFIELDM_ll=>NULL()
-TYPE(LIST_ll), POINTER :: TZFIELDT_ll=>NULL(),TZFIELDMT_ll=>NULL(),TZFIELDSC_ll=>NULL()
-TYPE(HALO2LIST_ll), POINTER :: TZHALO2M_ll=>NULL(), TZLSHALO2_ll=>NULL()
-TYPE(HALO2LIST_ll), POINTER :: TZHALO2T_ll=>NULL(), TZHALO2MT_ll=>NULL(), TZHALO2SC_ll=>NULL()
+TYPE(LIST_ll), POINTER :: TFIELDS_ll=>NULL(),TLSFIELD_ll=>NULL(),TFIELDM_ll=>NULL()
+TYPE(LIST_ll), POINTER :: TLSFIELD2D_ll => NULL()
+TYPE(LIST_ll), POINTER :: TFIELDT_ll=>NULL(),TFIELDMT_ll=>NULL(),TFIELDSC_ll=>NULL()
+TYPE(HALO2LIST_ll), POINTER :: THALO2M_ll=>NULL(), TLSHALO2_ll=>NULL()
+TYPE(HALO2LIST_ll), POINTER :: THALO2T_ll=>NULL(), THALO2MT_ll=>NULL(), THALO2SC_ll=>NULL()
 INTEGER, POINTER :: IBAK=>NULL()
 INTEGER, POINTER :: IOUT=>NULL()
 REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_START=>NULL()
@@ -75,7 +79,7 @@ REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_COUPL=>NULL(), XT_1WAY=>NULL(),
 REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_RAD=>NULL(), XT_DCONV=>NULL(), XT_GROUND=>NULL(), XT_MAFL=>NULL()
 REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_TURB=>NULL(), XT_2WAY=>NULL(), XT_TRACER=>NULL()
 REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_FORCING=>NULL(), XT_NUDGING=>NULL(), XT_CHEM=>NULL()
-REAL, DIMENSION(:,:,:), POINTER, contiguous :: ZWT_ACT_NUC=>NULL()
+REAL, DIMENSION(:,:,:), POINTER, contiguous :: XWT_ACT_NUC=>NULL()
 LOGICAL, DIMENSION(:,:), POINTER :: GMASKkids=>NULL()
 LOGICAL, POINTER :: GCLOSE_OUT=>NULL()
 
@@ -85,32 +89,34 @@ SUBROUTINE SUB_MODEL_GOTO_MODEL(KFROM, KTO)
 INTEGER, INTENT(IN) :: KFROM, KTO
 !
 ! Save current state for allocated arrays
-SUB_MODEL_MODEL(KFROM)%TZFIELDS_ll=>TZFIELDS_ll
-SUB_MODEL_MODEL(KFROM)%TZLSFIELD_ll=>TZLSFIELD_ll
-SUB_MODEL_MODEL(KFROM)%TZFIELDM_ll=>TZFIELDM_ll
-SUB_MODEL_MODEL(KFROM)%TZFIELDT_ll=>TZFIELDT_ll
-SUB_MODEL_MODEL(KFROM)%TZFIELDMT_ll=>TZFIELDMT_ll
-SUB_MODEL_MODEL(KFROM)%TZFIELDSC_ll=>TZFIELDSC_ll
-SUB_MODEL_MODEL(KFROM)%TZHALO2M_ll=>TZHALO2M_ll
-SUB_MODEL_MODEL(KFROM)%TZLSHALO2_ll=>TZLSHALO2_ll
-SUB_MODEL_MODEL(KFROM)%TZHALO2T_ll=>TZHALO2T_ll
-SUB_MODEL_MODEL(KFROM)%TZHALO2MT_ll=>TZHALO2MT_ll
-SUB_MODEL_MODEL(KFROM)%TZHALO2SC_ll=>TZHALO2SC_ll
-SUB_MODEL_MODEL(KFROM)%ZWT_ACT_NUC=>ZWT_ACT_NUC
+SUB_MODEL_MODEL(KFROM)%TFIELDS_ll=>TFIELDS_ll
+SUB_MODEL_MODEL(KFROM)%TLSFIELD_ll=>TLSFIELD_ll
+SUB_MODEL_MODEL(KFROM)%TFIELDM_ll=>TFIELDM_ll
+SUB_MODEL_MODEL(KFROM)%TFIELDT_ll=>TFIELDT_ll
+SUB_MODEL_MODEL(KFROM)%TFIELDMT_ll=>TFIELDMT_ll
+SUB_MODEL_MODEL(KFROM)%TLSFIELD2D_ll=>TLSFIELD2D_ll
+SUB_MODEL_MODEL(KFROM)%TFIELDSC_ll=>TFIELDSC_ll
+SUB_MODEL_MODEL(KFROM)%THALO2M_ll=>THALO2M_ll
+SUB_MODEL_MODEL(KFROM)%TLSHALO2_ll=>TLSHALO2_ll
+SUB_MODEL_MODEL(KFROM)%THALO2T_ll=>THALO2T_ll
+SUB_MODEL_MODEL(KFROM)%THALO2MT_ll=>THALO2MT_ll
+SUB_MODEL_MODEL(KFROM)%THALO2SC_ll=>THALO2SC_ll
+SUB_MODEL_MODEL(KFROM)%XWT_ACT_NUC=>XWT_ACT_NUC
 SUB_MODEL_MODEL(KFROM)%GMASKkids=>GMASKkids  
 !
 ! Current model is set to model KTO
-TZFIELDS_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDS_ll
-TZLSFIELD_ll=>SUB_MODEL_MODEL(KTO)%TZLSFIELD_ll
-TZFIELDM_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDM_ll
-TZFIELDT_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDT_ll
-TZFIELDMT_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDMT_ll
-TZFIELDSC_ll=>SUB_MODEL_MODEL(KTO)%TZFIELDSC_ll
-TZHALO2M_ll=>SUB_MODEL_MODEL(KTO)%TZHALO2M_ll
-TZLSHALO2_ll=>SUB_MODEL_MODEL(KTO)%TZLSHALO2_ll
-TZHALO2T_ll=>SUB_MODEL_MODEL(KTO)%TZHALO2T_ll
-TZHALO2MT_ll=>SUB_MODEL_MODEL(KTO)%TZHALO2MT_ll
-TZHALO2SC_ll=>SUB_MODEL_MODEL(KTO)%TZHALO2SC_ll
+TFIELDS_ll=>SUB_MODEL_MODEL(KTO)%TFIELDS_ll
+TLSFIELD_ll=>SUB_MODEL_MODEL(KTO)%TLSFIELD_ll
+TFIELDM_ll=>SUB_MODEL_MODEL(KTO)%TFIELDM_ll
+TFIELDT_ll=>SUB_MODEL_MODEL(KTO)%TFIELDT_ll
+TFIELDMT_ll=>SUB_MODEL_MODEL(KTO)%TFIELDMT_ll
+TLSFIELD2D_ll=>SUB_MODEL_MODEL(KTO)%TLSFIELD2D_ll
+TFIELDSC_ll=>SUB_MODEL_MODEL(KTO)%TFIELDSC_ll
+THALO2M_ll=>SUB_MODEL_MODEL(KTO)%THALO2M_ll
+TLSHALO2_ll=>SUB_MODEL_MODEL(KTO)%TLSHALO2_ll
+THALO2T_ll=>SUB_MODEL_MODEL(KTO)%THALO2T_ll
+THALO2MT_ll=>SUB_MODEL_MODEL(KTO)%THALO2MT_ll
+THALO2SC_ll=>SUB_MODEL_MODEL(KTO)%THALO2SC_ll
 IBAK=>SUB_MODEL_MODEL(KTO)%IBAK
 IOUT=>SUB_MODEL_MODEL(KTO)%IOUT
 XT_START=>SUB_MODEL_MODEL(KTO)%XT_START
@@ -148,7 +154,7 @@ XT_SHADOWS=>SUB_MODEL_MODEL(KTO)%XT_SHADOWS
 XT_FORCING=>SUB_MODEL_MODEL(KTO)%XT_FORCING
 XT_NUDGING=>SUB_MODEL_MODEL(KTO)%XT_NUDGING
 XT_CHEM=>SUB_MODEL_MODEL(KTO)%XT_CHEM
-ZWT_ACT_NUC=>SUB_MODEL_MODEL(KTO)%ZWT_ACT_NUC
+XWT_ACT_NUC=>SUB_MODEL_MODEL(KTO)%XWT_ACT_NUC
 GMASKkids=>SUB_MODEL_MODEL(KTO)%GMASKkids  
 GCLOSE_OUT=>SUB_MODEL_MODEL(KTO)%GCLOSE_OUT
 
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index e899bd8643c90b18400a35843c5a05231f528c84..0dd550bace9c2bd5d57c99786fd0ed8f5a75aff4 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -256,13 +256,17 @@ END MODULE MODI_MODEL_n
 !  P. Wautelet 07/02/2019: remove OPARALLELIO argument from open and close files subroutines
 !                          (nsubfiles_ioz is now determined in IO_File_add2list)
 !!                   02/2019 C.Lac add rain fraction as an output field
+!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
 !  P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing
 !  P. Wautelet 19/04/2019: removed unused dummy arguments and variables
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
+!  J. Escobar  09/07/2019: norme Doctor -> Rename Module Type variable TZ -> T
+!  J. Escobar  09/07/2019: for bug in management of XLSZWSM variable, add/use specific 2D TLSFIELD2D_ll pointer
 !  P. Wautelet 23/07/2019: OpenACC: move data creations from resolved_cloud to modeln and optimize updates
-!-------------------------------------------------------------------------------
+!  J. Escobar  27/09/2019: add missing report timing of RESOLVED_ELEC
+!!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
 !               ------------
@@ -599,12 +603,13 @@ END IF
 !
 IF (KTCOUNT == 1) THEN
 !
-  NULLIFY(TZFIELDS_ll,TZLSFIELD_ll,TZFIELDT_ll)
-  NULLIFY(TZHALO2T_ll)
-  NULLIFY(TZLSHALO2_ll)
-  NULLIFY(TZFIELDSC_ll)
+  NULLIFY(TFIELDS_ll,TLSFIELD_ll,TFIELDT_ll)
+  NULLIFY(TLSFIELD2D_ll)
+  NULLIFY(THALO2T_ll)
+  NULLIFY(TLSHALO2_ll)
+  NULLIFY(TFIELDSC_ll)
 !
-  ALLOCATE(ZWT_ACT_NUC(SIZE(XWT,1),SIZE(XWT,2),SIZE(XWT,3)))
+  ALLOCATE(XWT_ACT_NUC(SIZE(XWT,1),SIZE(XWT,2),SIZE(XWT,3)))
   ALLOCATE(GMASKkids(SIZE(XWT,1),SIZE(XWT,2)))
 !
 ! initialization of the FM file backup/output number
@@ -623,57 +628,57 @@ IF (KTCOUNT == 1) THEN
 !
 !                 a) Sources terms
 !
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRUS,      'MODEL_n::XRUS' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRVS,      'MODEL_n::XRVS' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRWS,      'MODEL_n::XRWS' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRTHS,     'MODEL_n::XRTHS' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRUS_PRES, 'MODEL_n::XRUS_PRES' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRVS_PRES, 'MODEL_n::XRVS_PRES' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRWS_PRES, 'MODEL_n::XRWS_PRES' )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, XRTHS_CLD, 'MODEL_n::XRTHS_CLD' )
-  IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll( TZFIELDS_ll, XRTKES, 'MODEL_n::XRTKES' )
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, XRRS     (:,:,:,1:NRR), 'MODEL_n::XRRS' )
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, XRRS_CLD (:,:,:,1:NRR), 'MODEL_n::XRRS_CLD' )
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, XRSVS    (:,:,:,1:NSV), 'MODEL_n::XRSVS')
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, XRSVS_CLD(:,:,:,1:NSV), 'MODEL_n::XRSVS_CLD')
-  IF (SIZE(XSRCT,1) /= 0) CALL ADD3DFIELD_ll( TZFIELDS_ll, XSRCT, 'MODEL_n::XSRCT' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRUS,      'MODEL_n::XRUS' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRVS,      'MODEL_n::XRVS' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRWS,      'MODEL_n::XRWS' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRTHS,     'MODEL_n::XRTHS' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRUS_PRES, 'MODEL_n::XRUS_PRES' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRVS_PRES, 'MODEL_n::XRVS_PRES' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRWS_PRES, 'MODEL_n::XRWS_PRES' )
+  CALL ADD3DFIELD_ll( TFIELDS_ll, XRTHS_CLD, 'MODEL_n::XRTHS_CLD' )
+  IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll( TFIELDS_ll, XRTKES, 'MODEL_n::XRTKES' )
+  CALL ADD4DFIELD_ll( TFIELDS_ll, XRRS     (:,:,:,1:NRR), 'MODEL_n::XRRS' )
+  CALL ADD4DFIELD_ll( TFIELDS_ll, XRRS_CLD (:,:,:,1:NRR), 'MODEL_n::XRRS_CLD' )
+  CALL ADD4DFIELD_ll( TFIELDS_ll, XRSVS    (:,:,:,1:NSV), 'MODEL_n::XRSVS')
+  CALL ADD4DFIELD_ll( TFIELDS_ll, XRSVS_CLD(:,:,:,1:NSV), 'MODEL_n::XRSVS_CLD')
+  IF (SIZE(XSRCT,1) /= 0) CALL ADD3DFIELD_ll( TFIELDS_ll, XSRCT, 'MODEL_n::XSRCT' )
   !
   IF ((LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV) ) THEN
   !
   !                 b) LS fields
   !
-    CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSUM,   'MODEL_n::XLSUM'   )
-    CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSVM,   'MODEL_n::XLSVM'   )
-    CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSWM,   'MODEL_n::XLSWM'   )
-    CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSTHM,  'MODEL_n::XLSTHM'  )
-    CALL ADD2DFIELD_ll( TZLSFIELD_ll, XLSZWSM, 'MODEL_n::XLSZWSM' )
+    CALL ADD3DFIELD_ll( TLSFIELD_ll,   XLSUM,   'MODEL_n::XLSUM'   )
+    CALL ADD3DFIELD_ll( TLSFIELD_ll,   XLSVM,   'MODEL_n::XLSVM'   )
+    CALL ADD3DFIELD_ll( TLSFIELD_ll,   XLSWM,   'MODEL_n::XLSWM'   )
+    CALL ADD3DFIELD_ll( TLSFIELD_ll,   XLSTHM,  'MODEL_n::XLSTHM'  )
+    CALL ADD2DFIELD_ll( TLSFIELD2D_ll, XLSZWSM, 'MODEL_n::XLSZWSM' )
     IF (NRR >= 1) THEN
-      CALL ADD3DFIELD_ll( TZLSFIELD_ll, XLSRVM, 'MODEL_n::XLSRVM' )
+      CALL ADD3DFIELD_ll( TLSFIELD_ll, XLSRVM, 'MODEL_n::XLSRVM' )
     ENDIF
   !
   !                 c) Fields at t
   !
-    CALL ADD3DFIELD_ll( TZFIELDT_ll, XUT,  'MODEL_n::XUT'  )
-    CALL ADD3DFIELD_ll( TZFIELDT_ll, XVT,  'MODEL_n::XVT'  )
-    CALL ADD3DFIELD_ll( TZFIELDT_ll, XWT,  'MODEL_n::XWT'  )
-    CALL ADD3DFIELD_ll( TZFIELDT_ll, XTHT, 'MODEL_n::XTHT' )
-    IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll( TZFIELDT_ll, XTKET, 'MODEL_n::XTKET' )
-    CALL ADD4DFIELD_ll(TZFIELDT_ll, XRT (:,:,:,1:NRR), 'MODEL_n::XSV'  )
-    CALL ADD4DFIELD_ll(TZFIELDT_ll, XSVT(:,:,:,1:NSV), 'MODEL_n::XSVT' )
+    CALL ADD3DFIELD_ll( TFIELDT_ll, XUT,  'MODEL_n::XUT'  )
+    CALL ADD3DFIELD_ll( TFIELDT_ll, XVT,  'MODEL_n::XVT'  )
+    CALL ADD3DFIELD_ll( TFIELDT_ll, XWT,  'MODEL_n::XWT'  )
+    CALL ADD3DFIELD_ll( TFIELDT_ll, XTHT, 'MODEL_n::XTHT' )
+    IF (SIZE(XRTKES,1) /= 0) CALL ADD3DFIELD_ll( TFIELDT_ll, XTKET, 'MODEL_n::XTKET' )
+    CALL ADD4DFIELD_ll(TFIELDT_ll, XRT (:,:,:,1:NRR), 'MODEL_n::XSV'  )
+    CALL ADD4DFIELD_ll(TFIELDT_ll, XSVT(:,:,:,1:NSV), 'MODEL_n::XSVT' )
   !
   !*       1.5   Initialize the list of fields for the halo updates (2nd layer)
   !
     INBVAR = 4+NRR+NSV
     IF (SIZE(XRTKES,1) /= 0) INBVAR=INBVAR+1
-    CALL INIT_HALO2_ll(TZHALO2T_ll,INBVAR,IIU,IJU,IKU)
-    CALL INIT_HALO2_ll(TZLSHALO2_ll,4+MIN(1,NRR),IIU,IJU,IKU)
+    CALL INIT_HALO2_ll(THALO2T_ll,INBVAR,IIU,IJU,IKU)
+    CALL INIT_HALO2_ll(TLSHALO2_ll,4+MIN(1,NRR),IIU,IJU,IKU)
   !
   !*       1.6   Initialise the 2nd layer of the halo of the LS fields
   !
     IF ( LSTEADYLS ) THEN
-       CALL UPDATE_HALO_ll(TZLSFIELD_ll, IINFO_ll)
-       CALL DEL2DFIELD_ll(TZLSFIELD_ll,XLSZWSM,IINFO_ll) 
-       CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll)
+       CALL UPDATE_HALO_ll(TLSFIELD_ll, IINFO_ll)
+       CALL UPDATE_HALO_ll(TLSFIELD2D_ll,IINFO_ll) 
+       CALL UPDATE_HALO2_ll(TLSFIELD_ll, TLSHALO2_ll, IINFO_ll)
     END IF
   END IF
   !
@@ -1191,11 +1196,12 @@ XTIME_LES_BU_PROCESS = 0.
 !
 IF ( LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV ) THEN
 !
-  CALL UPDATE_HALO_ll(TZFIELDT_ll, IINFO_ll)
-  CALL UPDATE_HALO2_ll(TZFIELDT_ll, TZHALO2T_ll, IINFO_ll)
+  CALL UPDATE_HALO_ll(TFIELDT_ll, IINFO_ll)
+  CALL UPDATE_HALO2_ll(TFIELDT_ll, THALO2T_ll, IINFO_ll)
   IF ( .NOT. LSTEADYLS ) THEN
-     CALL UPDATE_HALO_ll(TZLSFIELD_ll, IINFO_ll)
-     CALL UPDATE_HALO2_ll(TZLSFIELD_ll, TZLSHALO2_ll, IINFO_ll)
+     CALL UPDATE_HALO_ll(TLSFIELD_ll, IINFO_ll)
+     CALL UPDATE_HALO_ll(TLSFIELD2D_ll,IINFO_ll) 
+     CALL UPDATE_HALO2_ll(TLSFIELD_ll, TLSHALO2_ll, IINFO_ll)
   END IF
   CALL NUM_DIFF ( CLBCX, CLBCY, NRR, NSV,                               &
                   XDK2U, XDK4U, XDK2TH, XDK4TH, XDK2SV, XDK4SV, IMI,    &
@@ -1203,7 +1209,7 @@ IF ( LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV ) THEN
                   XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XRHODJ,               &
                   XRUS, XRVS, XRWS, XRTHS, XRTKES, XRRS, XRSVS,         &
                   LZDIFFU,LNUMDIFU, LNUMDIFTH, LNUMDIFSV,               &
-                  TZHALO2T_ll, TZLSHALO2_ll,XZDIFFU_HALO2      )
+                  THALO2T_ll, TLSHALO2_ll,XZDIFFU_HALO2      )
 END IF
 !
 DO JSV = NSV_CHEMBEG,NSV_CHEMEND
@@ -1747,19 +1753,19 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
   IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' .OR. CCLOUD == 'C3R5' &
                                              .OR. CCLOUD == "LIMA" ) THEN
     IF ( LFORCING ) THEN
-      ZWT_ACT_NUC(:,:,:) = XWT(:,:,:) + XWTFRC(:,:,:)
+      XWT_ACT_NUC(:,:,:) = XWT(:,:,:) + XWTFRC(:,:,:)
     ELSE
-      ZWT_ACT_NUC(:,:,:) = XWT(:,:,:)
+      XWT_ACT_NUC(:,:,:) = XWT(:,:,:)
     END IF
     IF (CTURB /= 'NONE' ) THEN
      IF ( ((CCLOUD=='C2R2'.OR.CCLOUD=='KHKO').AND.LACTTKE) .OR. (CCLOUD=='LIMA'.AND.MACTTKE) ) THEN 
-       ZWT_ACT_NUC(:,:,:) = ZWT_ACT_NUC(:,:,:) +  (2./3. * XTKET(:,:,:))**0.5
+       XWT_ACT_NUC(:,:,:) = XWT_ACT_NUC(:,:,:) +  (2./3. * XTKET(:,:,:))**0.5
      ELSE
-       ZWT_ACT_NUC(:,:,:) = ZWT_ACT_NUC(:,:,:) 
+       XWT_ACT_NUC(:,:,:) = XWT_ACT_NUC(:,:,:) 
      ENDIF
     ENDIF
   ELSE
-    ZWT_ACT_NUC(:,:,:) = 0.
+    XWT_ACT_NUC(:,:,:) = 0.
   END IF
 !
   XRTHS_CLD(:, :, : )    = XRTHS(:, :, : )
@@ -1787,7 +1793,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,XTSTEP,    &
                           XZZ, XRHODJ, XRHODREF, XEXNREF,                      &
                           ZPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
-                          XPABSM, ZWT_ACT_NUC,XDTHRAD, XRTHS, XRRS,            &
+                          XPABSM, XWT_ACT_NUC,XDTHRAD, XRTHS, XRRS,            &
                           XSVT, XRSVS,                                         &
                           XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC,KACTIT, KSEDC, KSEDI, KRAIN, KWARM, KHHONI,   &
@@ -1809,7 +1815,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,           &
                           XTSTEP,XZZ, XRHODJ, XRHODREF, XEXNREF,               &
                           ZPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
-                          XPABSM, ZWT_ACT_NUC,XDTHRAD, XRTHS, XRRS,            &
+                          XPABSM, XWT_ACT_NUC,XDTHRAD, XRTHS, XRRS,            &
                           XSVT, XRSVS,                                         &
                           XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC,KACTIT, KSEDC, KSEDI, KRAIN, KWARM, KHHONI,   &
@@ -1873,7 +1879,7 @@ XTIME_BU_PROCESS = 0.
 XTIME_LES_BU_PROCESS = 0.
 !
 IF (CELEC /= 'NONE' .AND. (CCLOUD(1:3) == 'ICE')) THEN
-  ZWT_ACT_NUC(:,:,:) = 0.
+  XWT_ACT_NUC(:,:,:) = 0.
 !
   XRTHS_CLD = XRTHS
   XRRS_CLD  = XRRS
@@ -1958,7 +1964,7 @@ END IF
 !
 ZTIME1 = ZTIME2
 !
-CALL EXCHANGE (XTSTEP,NRR,NSV,XRHODJ,TZFIELDS_ll,     &
+CALL EXCHANGE (XTSTEP,NRR,NSV,XRHODJ,TFIELDS_ll,     &
                XRUS, XRVS,XRWS,XRTHS,XRRS,XRTKES,XRSVS)
 !
 CALL SECOND_MNH2(ZTIME2)
@@ -2176,6 +2182,7 @@ IF (OEXIT) THEN
     CALL TIME_STAT_ll(TIMEZ%T_MAP_SX_YP2_ZP1_B,ZTOT,          '   REMAP FFTXZ-1=>B     ' ,'-','F')
   ! JUAN P1/P2
   CALL TIME_STAT_ll(XT_CLOUD,ZTOT,      ' RESOLVED_CLOUD','=')
+  CALL TIME_STAT_ll(XT_ELEC,ZTOT,      ' RESOLVED_ELEC','=')
   CALL TIME_STAT_ll(XT_HALO,ZTOT,       ' EXCHANGE_HALO','=')
   CALL TIME_STAT_ll(XT_STEP_SWA,ZTOT,   ' ENDSTEP','=')
   CALL TIME_STAT_ll(XT_STEP_BUD,ZTOT,   ' BUDGETS','=')
@@ -2188,8 +2195,8 @@ IF (OEXIT) THEN
            XT_ADV  + XT_FORCING + XT_NUDGING + XT_SOURCES  +  XT_DIFF   + &
            XT_ADVUVW  + XT_GRAV +                                         &
            XT_RELAX+ XT_PARAM   + XT_COUPL   + XT_RAD_BOUND+XT_PRESS    + &
-           XT_CLOUD+  XT_HALO   + XT_SPECTRA + XT_STEP_SWA +XT_STEP_MISC+ &
-           XT_STEP_BUD
+           XT_CLOUD+ XT_ELEC    + XT_HALO    + XT_SPECTRA + XT_STEP_SWA + &
+           XT_STEP_MISC+ XT_STEP_BUD
   CALL TIME_STAT_ll(ZALL,ZTOT,          ' SUM(CALL)','=')
   CALL  TIMING_SEPARATOR('=')
   !
diff --git a/src/MNH/num_diff.f90 b/src/MNH/num_diff.f90
index e31370e1d27efcd07fc4bf2935357de1c1d4666c..23751bff843dc1a983d8ad0f1cde32eeb59fb3dd 100644
--- a/src/MNH/num_diff.f90
+++ b/src/MNH/num_diff.f90
@@ -211,7 +211,8 @@ END MODULE MODI_NUM_DIFF
 !!     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!     J.Escobar : 05/12/2017 : Pb SegFault , correct IF(ONUMDIFTH/OZDIFFU) nesting
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
-!
+!  J. Escobar  09/07/2019: add TTZHALO2*LIST structure, to match all cases of diffusion/U/TH activation T/F
+!!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -284,6 +285,7 @@ INTEGER :: IKU
 LOGICAL     :: GTKEALLOC                 ! true if TKE arrays are not zero-sized
 !
 TYPE(HALO2LIST_ll), POINTER :: TZHALO2LIST, TZHALO2LSLIST
+TYPE(HALO2LIST_ll), TARGET  :: TTZHALO2LIST, TTZHALO2LSLIST
 !
 INTEGER :: IGRID ! localisation on the model grid
 !
@@ -301,11 +303,19 @@ GTKEALLOC = SIZE(PTKEM,1) /= 0
 !*       2.     CALL THE NUM_DIFF_ALGO ROUTINE FOR EACH FIELD
 !               ---------------------------------------------
 !
+!
+! Initialized TZHALO2*LIST%NEXT to match all case of diffusion activation T/F
+!
+TTZHALO2LIST%NEXT => TPHALO2LIST
+TTZHALO2LSLIST%NEXT => TPHALO2LSLIST
+TZHALO2LIST => TTZHALO2LIST
+TZHALO2LSLIST => TTZHALO2LSLIST
+!
 IF (ONUMDIFU) THEN
  IGRID = 2
 !!$ IF(NHALO == 1) THEN
-  TZHALO2LIST => TPHALO2LIST
-  TZHALO2LSLIST => TPHALO2LSLIST
+  TZHALO2LIST => TZHALO2LIST%NEXT
+  TZHALO2LSLIST => TZHALO2LSLIST%NEXT
   CALL NUM_DIFF_ALGO(PRUS, PUM, IGRID, MXM(PRHODJ), PDK2U, PDK4U, &
                      PLSUM,TZHALO2LIST%HALO2, TZHALO2LSLIST%HALO2)
 !!$ ELSE
diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90
index 3bdc1e191584b6d285e58cc196337271d0ccebe2..1a2146b66e5f3b71efebaed0305508bf6888b345 100644
--- a/src/MNH/paspol.f90
+++ b/src/MNH/paspol.f90
@@ -61,6 +61,7 @@ END MODULE MODI_PASPOL
 !!    P.Wautelet 28/03/2018 Replace TEMPORAL_DIST by DATETIME_DISTANCE
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!  Q. Rodier      09/2019: correction for the emission if restart
 ! --------------------------------------------------------------------------
 !       
 !!    EXTERNAL
@@ -528,7 +529,7 @@ DO JSV=1,NSV_PP
 
             !
             !
-            IF (.NOT.GBEGEMIS(JSV)) THEN
+            IF (.NOT.GBEGEMIS(JSV) .AND. CCONF=='START') THEN
                XRSVS(:,:,:,IP) =  XRSVS(:,:,:,IP) &
                                  +XRHODJ(:,:,:)*XSVT(:,:,:,IP)/PTSTEP
                GBEGEMIS(JSV)= .TRUE.
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index 099b38670b0b1904f419041e5244e67671f80eb1..24083d0b06fbae3eab309e91a3ac5ac4ff964e31 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -395,6 +395,7 @@ REAL, DIMENSION(0:24), parameter :: ZRAT_HOUR = (/ 326.00, 325.93, 325.12, 324.4
                                                    347.00, 342.00, 337.00, 332.00, &
                                                    326.00     /)
 !
+!
 character(len=6) :: ynum
 INTEGER  :: IHOUR               ! parameters necessary for the temporal
 REAL     :: ZTIME, ZDT          ! interpolation
diff --git a/src/MNH/profilern.f90 b/src/MNH/profilern.f90
index a463a4ad712b60b1a0dfabcc444ed12fe91e4b55..5dd11eb7cd32600a396f73ede6404a4a511a52c3 100644
--- a/src/MNH/profilern.f90
+++ b/src/MNH/profilern.f90
@@ -115,7 +115,7 @@ USE MODI_RADAR_RAIN_ICE
 USE MODI_LIDAR
 USE MODI_WATER_SUM
 USE MODI_GPS_ZENITH_GRID
-USE MODD_PARAM_n, ONLY : CCLOUD
+USE MODD_PARAM_n, ONLY : CCLOUD,CRAD
 !
 !
 IMPLICIT NONE
@@ -538,10 +538,12 @@ IF (GSTORE) THEN
         TPROFILER%LE    (IN,I)     = PROFILER_INTERP_2D(XCURRENT_LE    )
         TPROFILER%LEI   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_LEI   )        
         TPROFILER%GFLUX (IN,I)     = PROFILER_INTERP_2D(XCURRENT_GFLUX )
+       IF (CRAD /= 'NONE') THEN
         TPROFILER%SWD   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_SWD   )
         TPROFILER%SWU   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_SWU   )
         TPROFILER%LWD   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_LWD   )
         TPROFILER%LWU   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_LWU   )
+       END IF
         TPROFILER%TKE_DISS(IN,:,I) = PROFILER_INTERP(XCURRENT_TKE_DISS)
       ENDIF
     ENDIF
@@ -570,10 +572,12 @@ IF (GSTORE) THEN
     CALL DISTRIBUTE_PROFILER(TPROFILER%LE    (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%LEI   (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%GFLUX (IN,I))
+   IF (CRAD /= 'NONE') THEN
     CALL DISTRIBUTE_PROFILER(TPROFILER%LWD   (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%LWU   (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%SWD   (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%SWU   (IN,I))
+   ENDIF
   ENDIF
  DO JK=1,IKU
   CALL DISTRIBUTE_PROFILER(TPROFILER%ZON (IN,JK,I))
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index f32e1f4bdc1e232e596f02cc52d915d67cd9bc31..8f18f2415b859423cd441cc91c4a18d9bc25968c 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -243,12 +243,14 @@ END MODULE MODI_RAIN_ICE
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 28/05/2019: move COUNTJV function to tools.f90
 !  P. Wautelet 29/05/2019: remove PACK/UNPACK intrinsics (to get more performance and better OpenACC support)
+!  J. Escobar  09/07/2019: for reproductiblity MPPDB_CHECK, add missing LCHECK test in ZRHODJ de/allocate
 !
 !*       0.    DECLARATIONS
 !              ------------
 !
 use MODD_BUDGET,         only: LBU_ENABLE, LBUDGET_RC, LBUDGET_RG, LBUDGET_RH, LBUDGET_RI, &
                                LBUDGET_RR, LBUDGET_RS, LBUDGET_RV, LBUDGET_TH
+use MODD_CONF,           only: LCHECK
 use MODD_CST,            only: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT, &
                                XALPI, XBETAI, XGAMI, XMD, XMV, XTT
 use MODD_LES,            only: LLES_CALL
@@ -690,7 +692,7 @@ IF( IMICRO >= 0 ) THEN
     ALLOCATE(ZZW1(IMICRO,6))
   ENDIF
 !
-  IF (LBU_ENABLE .OR. LLES_CALL) THEN
+  IF (LBU_ENABLE .OR. LLES_CALL .OR. LCHECK ) THEN
     ALLOCATE(ZRHODJ(IMICRO))
   ELSE
     ALLOCATE(ZRHODJ(0))
@@ -1125,7 +1127,7 @@ IF( IMICRO >= 0 ) THEN
   DEALLOCATE(ZPRES)
   DEALLOCATE(ZRHODREF)
   DEALLOCATE(ZZT)
-  IF(LBU_ENABLE .OR. LLES_CALL) DEALLOCATE(ZRHODJ)
+  IF(LBU_ENABLE .OR. LLES_CALL .OR. LCHECK ) DEALLOCATE(ZRHODJ)
   DEALLOCATE(ZTHS)
   DEALLOCATE(ZTHT)
   DEALLOCATE(ZTHLT)
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index 6ff7014b90c5d416e45fa2a60cda6fe5b8aaf16e..a8178a0be6fb189500b2977c055ecec45d8db4fe 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -131,6 +131,7 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !  P. Wautelet 14/03/2019: correct ZWS when variable not present in file
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  Q. Rodier   16/09/2019: switch of GRIB number ID for Orograpgy in ARPEGE/AROME in EPyGrAM 
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -516,7 +517,7 @@ SELECT CASE (IMODEL)
          WRITE (ILUOUT0,'(A)')'Orography is missing - abort'
        ENDIF 
   CASE(6,7) !  arpege and arome GRIB2
-      CALL SEARCH_FIELD(IGRIB,INUM_ZS,KDIS=0,KCAT=3,KNUMBER=5)
+      CALL SEARCH_FIELD(IGRIB,INUM_ZS,KDIS=0,KCAT=3,KNUMBER=4)
        IF(INUM_ZS < 0) THEN
          WRITE (ILUOUT0,'(A)')'Orography is missing - abort'
        ENDIF 
diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90
index b5e9923162403a4345ae638acf393c5419d115fa..dcfe7b1e65ffd3fe804e74db710c50fa29b2b7a1 100644
--- a/src/MNH/read_chem_data_netcdf_case.f90
+++ b/src/MNH/read_chem_data_netcdf_case.f90
@@ -85,6 +85,7 @@ END MODULE MODI_READ_CHEM_DATA_NETCDF_CASE
 !!      P. Wautelet 30/10/17 use F90 module for netCDF
 !!      J.Pianezzej 13/02/2019 : correction for use of MEGAN
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -169,7 +170,7 @@ REAL,DIMENSION(:,:),ALLOCATABLE    :: ZVALUE        ! Intermediate array
 REAL,DIMENSION(:),ALLOCATABLE      :: ZVALUE1D        ! Intermediate array
 REAL,DIMENSION(:,:),ALLOCATABLE    :: ZOUT          ! Intermediate arrays
 REAL,DIMENSION(:),ALLOCATABLE      :: ZOUT1D          ! Intermediate arrays
-INTEGER                            :: ind_netcdf    ! Indice for netcdf var.
+INTEGER(kind=CDFINT)               :: ind_netcdf    ! Indice for netcdf var.
 !chemistry field infile MOZ1.nam
 INTEGER                                       :: ICHANNEL
 CHARACTER(LEN=8)                              :: YMOZ="MOZ1.nam"
@@ -195,14 +196,14 @@ integer(kind=CDFINT) :: status, ncid, varid
 integer(kind=CDFINT) :: lat_varid, lon_varid, lev_varid, time_varid
 integer(kind=CDFINT) :: hyam_varid, hybm_varid, p0_varid, t_varid, q_varid, ps_varid
 integer(kind=CDFINT) :: recid, latid, lonid, levid, timeid
-integer(kind=CDFINT) :: latlen, lonlen, levlen, nrecs,timelen
-integer(kind=CDFINT) :: itimeindex, KILEN, jrec
+integer(kind=CDFINT) :: latlen, lonlen, levlen, nrecs, timelen
+integer(kind=CDFINT) :: itimeindex, KILEN
 CHARACTER(LEN=40)                     :: recname
 REAL, DIMENSION(:), ALLOCATABLE       :: lats
 REAL, DIMENSION(:), ALLOCATABLE       :: lons 
 REAL, DIMENSION(:), ALLOCATABLE       :: levs 
-INTEGER, DIMENSION(:), ALLOCATABLE    :: count3d, start3d
-INTEGER, DIMENSION(:), ALLOCATABLE    :: count2d, start2d 
+INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: count3d, start3d
+INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: count2d, start2d
 REAL, DIMENSION(:), ALLOCATABLE       :: time, hyam, hybm 
 REAL                                  :: p0 
 INTEGER, DIMENSION(:), ALLOCATABLE    :: kinlo 
@@ -573,7 +574,7 @@ DO JI = 1,IMOZ               !for every MNH species existing in MOZ1.nam
            JLOOP1 = JLOOP1+lonlen
          ENDDO                                                                                           
          CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-                     latlen,kinlo,KILEN,                        &
+                     int(latlen,kind=kind(1)),kinlo,KILEN,      &
                      ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT,          &
                      ZOUT(JK,:),.FALSE.,PTIME_HORI,.TRUE.)
          CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, &
@@ -654,7 +655,7 @@ DO JI = 1,IMOZ               !for every MNH species existing in MOZ1.nam
            JLOOP1 = JLOOP1+lonlen
          ENDDO                                                                                           
          CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-                     latlen,kinlo,KILEN,                        &
+                     int(latlen,kind=kind(1)),kinlo,KILEN,      &
                      ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT,          &
                      ZOUT(JK,:),.FALSE.,PTIME_HORI,.TRUE.)
          CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, &
@@ -678,7 +679,7 @@ DO JK = 1, levlen
     JLOOP1 = JLOOP1 + lonlen
   ENDDO
   CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-              latlen,kinlo,KILEN,                        &
+              int(latlen,kind=kind(1)),kinlo,KILEN,      &
               ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT,          &
               ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.)
 !
@@ -694,7 +695,7 @@ DO JK = 1, levlen
     JLOOP1 = JLOOP1 + lonlen
   ENDDO
   CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-              latlen,kinlo,KILEN,                                &
+              int(latlen,kind=kind(1)),kinlo,KILEN,      &
               ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT,                  &
               ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.)
 !
@@ -709,7 +710,7 @@ DO JJ = 1, latlen
   JLOOP1 = JLOOP1 + lonlen
 ENDDO
 CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-            latlen,kinlo,KILEN,                                &
+            int(latlen,kind=kind(1)),kinlo,KILEN,      &
             ZVALUE1D(:),INO,ZLONOUT,ZLATOUT,                  &
             ZOUT1D(:),.FALSE.,PTIME_HORI,.FALSE.)
 !
diff --git a/src/MNH/stationn.f90 b/src/MNH/stationn.f90
index 2fa1ab92cfafb6252f3ea28062feacf644b2420d..f1d20df7e869f96195e5b9ac6ca4e6e7fd7e6d1b 100644
--- a/src/MNH/stationn.f90
+++ b/src/MNH/stationn.f90
@@ -101,6 +101,7 @@ USE MODD_CST
 USE MODD_GRID
 USE MODD_TIME
 USE MODD_CONF
+USE MODD_PARAM_n, ONLY : CRAD
 !
 USE MODE_DATETIME
 USE MODE_ll
@@ -398,6 +399,7 @@ IF (GSTORE) THEN
           TSTATION%LE    (IN,I) = STATION_INTERP_2D(XCURRENT_LE    ) 
           TSTATION%LEI   (IN,I) = STATION_INTERP_2D(XCURRENT_LEI   ) 
           TSTATION%GFLUX (IN,I) = STATION_INTERP_2D(XCURRENT_GFLUX ) 
+         IF (CRAD /= 'NONE') THEN
           TSTATION%SWD   (IN,I) = STATION_INTERP_2D(XCURRENT_SWD   ) 
           TSTATION%SWU   (IN,I) = STATION_INTERP_2D(XCURRENT_SWU   ) 
           TSTATION%LWD   (IN,I) = STATION_INTERP_2D(XCURRENT_LWD   ) 
@@ -405,6 +407,7 @@ IF (GSTORE) THEN
           TSTATION%SWDIR (IN,I) = STATION_INTERP_2D(XCURRENT_SWDIR ) 
           TSTATION%SWDIFF(IN,I) = STATION_INTERP_2D(XCURRENT_SWDIFF)
           TSTATION%DSTAOD(IN,I) = STATION_INTERP_2D(XCURRENT_DSTAOD)
+         ENDIF
           TSTATION%SFCO2 (IN,I) = STATION_INTERP_2D(XCURRENT_SFCO2 ) 
         ENDIF
        ELSE
@@ -435,6 +438,7 @@ IF (GSTORE) THEN
           TSTATION%LE    (IN,I) = XCURRENT_LE(TSTATION%I(I),TSTATION%J(I))
           TSTATION%LEI   (IN,I) = XCURRENT_LEI(TSTATION%I(I),TSTATION%J(I))
           TSTATION%GFLUX (IN,I) = XCURRENT_GFLUX(TSTATION%I(I),TSTATION%J(I))
+         IF (CRAD /= 'NONE') THEN
           TSTATION%SWD   (IN,I) = XCURRENT_SWD(TSTATION%I(I),TSTATION%J(I))
           TSTATION%SWU   (IN,I) = XCURRENT_SWU(TSTATION%I(I),TSTATION%J(I))
           TSTATION%LWD   (IN,I) = XCURRENT_LWD(TSTATION%I(I),TSTATION%J(I))
@@ -442,6 +446,7 @@ IF (GSTORE) THEN
           TSTATION%SWDIR (IN,I) = XCURRENT_SWDIR(TSTATION%I(I),TSTATION%J(I))
           TSTATION%SWDIFF(IN,I) = XCURRENT_SWDIFF(TSTATION%I(I),TSTATION%J(I))         
           TSTATION%DSTAOD(IN,I) = XCURRENT_DSTAOD(TSTATION%I(I),TSTATION%J(I))
+         ENDIF
           TSTATION%SFCO2 (IN,I) = XCURRENT_SFCO2(TSTATION%I(I),TSTATION%J(I))
         ENDIF
        ENDIF
@@ -486,6 +491,7 @@ IF (GSTORE) THEN
     CALL DISTRIBUTE_STATION(TSTATION%LE     (IN,I))
     CALL DISTRIBUTE_STATION(TSTATION%LEI    (IN,I))    
     CALL DISTRIBUTE_STATION(TSTATION%GFLUX  (IN,I))
+   IF (CRAD /= 'NONE') THEN
     CALL DISTRIBUTE_STATION(TSTATION%SWD    (IN,I))
     CALL DISTRIBUTE_STATION(TSTATION%SWU    (IN,I))
     CALL DISTRIBUTE_STATION(TSTATION%LWD    (IN,I))
@@ -493,6 +499,7 @@ IF (GSTORE) THEN
     CALL DISTRIBUTE_STATION(TSTATION%SWDIR  (IN,I))
     CALL DISTRIBUTE_STATION(TSTATION%SWDIFF (IN,I))    
     CALL DISTRIBUTE_STATION(TSTATION%DSTAOD (IN,I))
+   END IF
     CALL DISTRIBUTE_STATION(TSTATION%SFCO2  (IN,I))
   ENDIF
   !
diff --git a/src/MNH/tools_c.f90 b/src/MNH/tools_c.f90
index 224b55f4b35635b90713b04322b55aa7eca85b59..60fd4147b3a74545404600df297ae2890b8615cf 100644
--- a/src/MNH/tools_c.f90
+++ b/src/MNH/tools_c.f90
@@ -19,15 +19,34 @@ module modi_tools_c
 !
 !     P. Wautelet 04/12/2018
 !
+! Modifications:
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
+
   use, intrinsic :: iso_c_binding
 
   implicit none
 
+  private
+
+  public :: sleep_c
+
   interface
-    subroutine sleep_c(ksec) bind(c, name="sleep")
+    subroutine sleep_c_intern(ksec) bind(c, name="sleep")
       import C_INT
       integer(kind=C_INT), VALUE :: ksec
-    end subroutine sleep_c
+    end subroutine sleep_c_intern
   end interface
 
+contains
+
+  subroutine sleep_c(ksec)
+    integer, intent(in) :: ksec
+
+    integer(kind=C_INT) :: isec_c
+
+    isec_c = int( ksec, kind=C_INT )
+
+    call sleep_c_intern( isec_c )
+  end subroutine
+
 end module modi_tools_c
diff --git a/src/MNH/version.f90 b/src/MNH/version.f90
index e1a559f57ee338c8825ee82e5f0e6953159e6959..3648f934480672301cf04642feb3769ab61fd8af 100644
--- a/src/MNH/version.f90
+++ b/src/MNH/version.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2017 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2002-2019 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !     ##################
@@ -44,9 +44,9 @@ IMPLICIT NONE
 !
 NMNHVERSION(1)=5
 NMNHVERSION(2)=4
-NMNHVERSION(3)=2
-NMASDEV=54 
-NBUGFIX=2
+NMNHVERSION(3)=3
+NMASDEV=54
+NBUGFIX=3
 CBIBUSER=''
 !
 END SUBROUTINE VERSION
diff --git a/src/MNH/viscosity.f90 b/src/MNH/viscosity.f90
index 3b348d47d3fcd02ab1cf41e01de0606a5498808f..b3d3e6a44a3bfa855d8555943dc035330e27689d 100644
--- a/src/MNH/viscosity.f90
+++ b/src/MNH/viscosity.f90
@@ -2,8 +2,7 @@
 !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.
-!-----------------------------------------------------------------
-!
+!-------------------------------------------------------------------------------
 !     #####################
       MODULE MODI_VISCOSITY
 !     #####################
@@ -91,6 +90,7 @@ SUBROUTINE VISCOSITY(HLBCX, HLBCY, KRR, KSV, PNU, PPRANDTL,          &
 !!    -------------
 !!      01/18 (C.Lac) Add budgets
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
+!  P. Wautelet 08/11/2019: corrected wrong budget name VISC_BU_RU -> VISC_BU_RTH
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -193,7 +193,7 @@ IF (OVISC_TH) THEN
 !
 END IF
 !
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'VISC_BU_RU')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'VISC_BU_RTH')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/write_profilern.f90 b/src/MNH/write_profilern.f90
index b70fe68aa07c4e64b9abf90081b591f66930374d..2eb2b3b4452ca203fc7d05e8e536933d876ef857 100644
--- a/src/MNH/write_profilern.f90
+++ b/src/MNH/write_profilern.f90
@@ -82,8 +82,9 @@ USE MODD_LG,              ONLY: CLGNAMES
 USE MODD_DUST,            ONLY: CDUSTNAMES, LDUST, NMODE_DST
 USE MODD_SALT,            ONLY: CSALTNAMES, LSALT
 USE MODD_NSV
-USE MODD_RADIATIONS_n,     ONLY:NAER
+USE MODD_RADIATIONS_n,    ONLY:NAER
 USE MODD_DIAG_IN_RUN
+USE MODD_PARAM_n,         ONLY: CRAD
 !
 USE MODE_DUST_PSD
 USE MODE_AERO_PSD
@@ -318,6 +319,7 @@ IF (LDIAG_IN_RUN) THEN
   YCOMMENT (JPROC) = 'Storage heat flux'
   ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%GFLUX(:,II)
   !
+ IF (CRAD /= 'NONE') THEN
   JPROC = JPROC + 1
   YTITLE   (JPROC) = 'SWD'
   YUNIT    (JPROC) = 'W m-2'
@@ -342,6 +344,7 @@ IF (LDIAG_IN_RUN) THEN
   YCOMMENT (JPROC) = 'Upward long-wave radiation'
   ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%LWU(:,II)
   !
+ END IF
   !
   JPROC = JPROC + 1
   YTITLE   (JPROC) = 'TKE_DISS'
diff --git a/src/MNH/write_stationn.f90 b/src/MNH/write_stationn.f90
index 92722fe09c8748365494f66fe7cd59f0728b584a..916f951e3b4a5c45a51d019d01d7dbefd7fec4d5 100644
--- a/src/MNH/write_stationn.f90
+++ b/src/MNH/write_stationn.f90
@@ -78,6 +78,7 @@ USE MODD_DUST,            ONLY: CDUSTNAMES, LDUST, NMODE_DST
 USE MODD_SALT,            ONLY: CSALTNAMES, LSALT, NMODE_SLT
 USE MODD_NSV
 USE MODD_DIAG_IN_RUN
+USE MODD_PARAM_n,         ONLY: CRAD        
 !
 USE MODD_DIM_n             
 USE MODD_GRID_n           
@@ -278,6 +279,7 @@ IF (LDIAG_IN_RUN) THEN
   YCOMMENT (JPROC) = 'Storage heat flux'     
   ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%GFLUX(:,II)
   !
+ IF (CRAD /= 'NONE') THEN
   JPROC = JPROC + 1
   YTITLE   (JPROC) = 'SWD'   
   YUNIT    (JPROC) = 'W m-2'
@@ -320,6 +322,7 @@ IF (LDIAG_IN_RUN) THEN
   YCOMMENT (JPROC) = 'Dust aerosol optical depth'
   ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%DSTAOD(:,II)
   !
+ END IF
   JPROC = JPROC + 1
   YTITLE   (JPROC) = 'LEI'  
   YUNIT    (JPROC) = 'W m-2'
diff --git a/src/SURFEX/modd_netcdf_sfx.F90 b/src/SURFEX/modd_netcdf_sfx.F90
new file mode 100644
index 0000000000000000000000000000000000000000..9c8bf9becf5f1cc6d8b6f7f62905552b67a3c9cc
--- /dev/null
+++ b/src/SURFEX/modd_netcdf_sfx.F90
@@ -0,0 +1,12 @@
+!SFX_LIC Copyright 2019-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!SFX_LIC for details. version 1.
+! Author: P. Wautelet 18/09/2019
+module modd_netcdf_sfx
+
+implicit none
+
+integer, parameter :: CDFINT = selected_int_kind( 8 )
+
+end module modd_netcdf_sfx
diff --git a/src/SURFEX/modd_snow_metamo.F90 b/src/SURFEX/modd_snow_metamo.F90
index e48dd6ccda5de27a939527f451f2bf44d4dd2826..12c548f6353a22902bcbd66f9f4ce448458dd8db 100644
--- a/src/SURFEX/modd_snow_metamo.F90
+++ b/src/SURFEX/modd_snow_metamo.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 ! ajoutEB
 ! correction de l'erreur interversion de XVTANG2 et XVTANG3
@@ -31,11 +31,14 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original       02/2008                
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
 !             ------------
 !
+use modd_netcdf_sfx, only: CDFINT
+!
 IMPLICIT NONE
 !
 !-------------------------------------------------------------------------------
@@ -138,11 +141,11 @@ REAL, PARAMETER                 :: XVTELV1 = 0.005
 !
 INTEGER,PARAMETER               :: NVDENT1 = 3
 !
-INTEGER :: NVARDIMS !number of dimensions of netcdf input variable
-INTEGER :: NLENDIM1,NLENDIM2,NLENDIM3
-INTEGER :: NID_VAR ! Netcdf IDs for  variable
+INTEGER(kind=CDFINT) :: NVARDIMS !number of dimensions of netcdf input variable
+INTEGER(kind=CDFINT) :: NLENDIM1,NLENDIM2,NLENDIM3
+INTEGER(kind=CDFINT) :: NID_VAR ! Netcdf IDs for  variable
 !
-INTEGER :: NID_FILE
+INTEGER(kind=CDFINT) :: NID_FILE
 REAL, DIMENSION(:,:,:), POINTER :: XDRDT0,XTAU,XKAPPA   ! field read
 !
 END MODULE MODD_SNOW_METAMO
diff --git a/src/SURFEX/mode_read_cdf.F90 b/src/SURFEX/mode_read_cdf.F90
index ce5e4a05a1f722e1f6101cb4fa8b8a658556b76e..e675d32b4505922a0f078b09c0aa3528f4fe9ba4 100644
--- a/src/SURFEX/mode_read_cdf.F90
+++ b/src/SURFEX/mode_read_cdf.F90
@@ -1,10 +1,13 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
+! Modifications:
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 MODULE MODE_READ_CDF
 !===================================================================
 !
+use modd_netcdf_sfx, only: CDFINT
 !
 USE MODI_ABOR1_SFX
 !
@@ -20,8 +23,8 @@ CONTAINS
 USE NETCDF
 !
 IMPLICIT NONE
-INTEGER, INTENT(IN)           :: status
- CHARACTER(*), INTENT(IN) :: line
+INTEGER(kind=CDFINT), INTENT(IN) :: status
+ CHARACTER(*),            INTENT(IN) :: line
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 !
@@ -41,19 +44,20 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
-REAL, INTENT(OUT) ::  PMISSVALUE !undefined value
-REAL,DIMENSION(:),INTENT(OUT) :: PVALU1D !value array
+INTEGER(kind=CDFINT),INTENT(IN)  :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN)  :: IDVAR   !variable to read identifiant
+REAL,                    INTENT(OUT) :: PMISSVALUE !undefined value
+REAL,DIMENSION(:),       INTENT(OUT) :: PVALU1D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=1
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=1
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP
-integer :: NGATTS   
+integer(kind=CDFINT) :: JLOOP
+integer(kind=CDFINT) :: NGATTS
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 REAL,DIMENSION(:),ALLOCATABLE :: ZVALU1D !value array
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -132,21 +136,22 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: IDVAR   !variable to read identifiant
 REAL,DIMENSION(:),INTENT(OUT) :: PDIM1,PDIM2 !dimensions for PVALU2D array
  CHARACTER(len=80),INTENT(OUT) :: HDIM1NAME,HDIM2NAME     !dimensions names
 REAL, INTENT(OUT) :: PMISSVALUE
 REAL,DIMENSION(:,:),INTENT(OUT) :: PVALU2D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=2
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=2
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP
-integer :: NGATTS   
+integer(kind=CDFINT) :: JLOOP
+integer(kind=CDFINT) :: NGATTS
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 real :: ZMISS1,ZMISS2
 REAL,DIMENSION(:,:),ALLOCATABLE :: ZVALU2D !value array
@@ -235,18 +240,19 @@ IMPLICIT NONE
 REAL, DIMENSION(:), INTENT(OUT) :: PLON,PLAT ! Longitudes/latitudes innetcdf file 
 REAL, DIMENSION(:), INTENT(OUT) :: PVAL      ! value to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1,JDIM1,JDIM2,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-integer ::NLEN
-integer,dimension(1) :: IDIMID
-integer,DIMENSION(1:2) :: NLEN2D,IDIMID2D
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) ::JLOOP1
+integer ::JDIM1,JDIM2,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+integer(kind=CDFINT) ::NLEN
+integer(kind=CDFINT),dimension(1) :: IDIMID
+integer(kind=CDFINT),DIMENSION(1:2) :: NLEN2D,IDIMID2D
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
 real,DIMENSION(:),ALLOCATABLE   :: ZVALU
 real,DIMENSION(:,:),ALLOCATABLE :: ZVALU2D
@@ -430,18 +436,18 @@ IMPLICIT NONE
 !
  CHARACTER(LEN=28), INTENT(IN) :: HFILENAME   ! Name of the field file.
  CHARACTER(LEN=28), INTENT(IN) :: HNCVARNAME  ! Name of variable to read in netcdf file
-INTEGER,           INTENT(OUT):: KDIM        ! value of dimension to get
+INTEGER(kind=CDFINT), INTENT(OUT):: KDIM        ! value of dimension to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-integer, dimension(1) :: NDIMID
-integer,DIMENSION(2) ::NLEN2D, NDIMID2D
+integer(kind=CDFINT) ::JLOOP1,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+integer(kind=CDFINT), dimension(1) :: NDIMID
+integer(kind=CDFINT),DIMENSION(2) ::NLEN2D, NDIMID2D
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 !
diff --git a/src/SURFEX/mode_read_grib.F90 b/src/SURFEX/mode_read_grib.F90
index ddd50d15ea3a3397107ac71dea73282a5edd4b19..ec71d31314156d270939ae14202ce729473420d3 100644
--- a/src/SURFEX/mode_read_grib.F90
+++ b/src/SURFEX/mode_read_grib.F90
@@ -1,7 +1,11 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
+!-------------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
+!-------------------------------------------------------------------
 !     #####################
 MODULE MODE_READ_GRIB
 !     #####################
@@ -694,7 +698,7 @@ INTEGER,            INTENT(IN)    :: KLUOUT    ! logical unit of output listing
 REAL, DIMENSION(:), INTENT(IN)    :: PMASK     ! grib land mask
 REAL, DIMENSION(:), POINTER       :: PSST      ! 
 !
-INTEGER :: IRET
+INTEGER(kind=kindOfInt) :: IRET
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !-------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('MODE_READ_GRIB:READ_GRIB_SST',0,ZHOOK_HANDLE)
@@ -732,7 +736,7 @@ INTEGER,            INTENT(IN)    :: KLUOUT    ! logical unit of output listing
 REAL, DIMENSION(:), INTENT(IN)    :: PMASK     ! grib land mask
 REAL, DIMENSION(:), POINTER       :: PTS     ! 
 !
-INTEGER :: IRET
+INTEGER(kind=kindOfInt) :: IRET
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !-------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('MODE_READ_GRIB:READ_GRIB_TSWATER',0,ZHOOK_HANDLE)
diff --git a/src/SURFEX/mode_read_netcdf_mercator.F90 b/src/SURFEX/mode_read_netcdf_mercator.F90
index ad51a19ab58e80f12d7665714cf91ada168f0a3a..7462dff30fb1a0739c8c786c5a8e03872b64321f 100644
--- a/src/SURFEX/mode_read_netcdf_mercator.F90
+++ b/src/SURFEX/mode_read_netcdf_mercator.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !!
 !!      Modified    09/2013 : S. Senesi : adapt READ_NETCDF_SST to read 2D fields other than SST
@@ -10,9 +10,12 @@ MODULE MODE_READ_NETCDF_MERCATOR
 !!      Modified    03/2014 : M.N. Bouin  ! possibility of wave parameters
 !!                                        ! from external source 
 !!                                        ! + correction of 2 bugs
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-------------------------------------------------------------------------------
 !
 !
+use modd_netcdf_sfx, only: CDFINT
+!
 USE MODI_ABOR1_SFX
 !
 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
@@ -27,7 +30,7 @@ CONTAINS
 USE NETCDF
 !
 IMPLICIT NONE
-INTEGER, INTENT(IN)           :: status
+INTEGER(kind=CDFINT), INTENT(IN)           :: status
  CHARACTER(LEN=80), INTENT(IN) :: line
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
@@ -48,20 +51,20 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: IDVAR   !variable to read identifiant
 REAL, INTENT(OUT) ::  PMISSVALUE !undefined value
 REAL,DIMENSION(:),INTENT(OUT) :: PVALU1D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=1
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=1
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP
-integer :: NGATTS   
-integer, dimension(1) :: NDIMID
+integer(kind=CDFINT) :: NGATTS
+integer(kind=CDFINT), dimension(1) :: NDIMID
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 REAL,DIMENSION(:),ALLOCATABLE :: ZVALU1D !value array
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -122,21 +125,22 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: IDVAR   !variable to read identifiant
 REAL,DIMENSION(:),INTENT(OUT) :: PDIM1,PDIM2 !dimensions for PVALU2D array
  CHARACTER(len=80),INTENT(OUT) :: HDIM1NAME,HDIM2NAME     !dimensions names
 REAL, INTENT(OUT) :: PMISSVALUE
 REAL,DIMENSION(:,:),INTENT(OUT) :: PVALU2D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=2
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=2
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP2, JLOOP, J1, J2
-integer :: NGATTS   
+integer(kind=CDFINT) :: JLOOP2, JLOOP, J1, J2
+integer(kind=CDFINT) :: NGATTS
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 real :: ZMISS1,ZMISS2
 real :: ZSCFA, ZOFFS
@@ -249,22 +253,23 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: IDVAR   !variable to read identifiant
 REAL,DIMENSION(:),INTENT(OUT) :: PDIM1,PDIM2,PDIM3 !dimensions for PVALU2D array
  CHARACTER(len=80),INTENT(OUT) :: HDIM1NAME,HDIM2NAME,HDIM3NAME    !dimensions names
 REAL, INTENT(OUT) :: PMISSVALUE
 REAL,DIMENSION(:,:,:),INTENT(OUT) :: PVALU3D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=3
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=3
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP2, JLOOP
-integer :: J1,J2,J3
-integer :: NGATTS   
+integer(kind=CDFINT) :: JLOOP2, JLOOP
+integer(kind=CDFINT) :: J1,J2,J3
+integer(kind=CDFINT) :: NGATTS
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 real :: ZMISS1,ZMISS2,ZMISS3
 real :: ZSCFA, ZOFFS
@@ -384,18 +389,18 @@ IMPLICIT NONE
 !
  CHARACTER(LEN=28), INTENT(IN) :: HFILENAME   ! Name of the field file.
  CHARACTER(LEN=28), INTENT(IN) :: HNCVARNAME  ! Name of variable to read in netcdf file
-INTEGER,           INTENT(OUT):: KDIM        ! value of dimension to get
+INTEGER(kind=CDFINT), INTENT(OUT):: KDIM        ! value of dimension to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: YVARNAME
-integer ::JLOOP1,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-INTEGER, DIMENSION(1) :: NDIMID
-integer,DIMENSION(2) ::NLEN2D, NDIMID2D
+integer(kind=CDFINT) ::JLOOP1,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+INTEGER(kind=CDFINT), DIMENSION(1) :: NDIMID
+integer(kind=CDFINT),DIMENSION(2) ::NLEN2D, NDIMID2D
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 !
@@ -523,18 +528,18 @@ INCLUDE "mpif.h"
  CHARACTER(LEN=28), INTENT(IN) :: HFILENAME   ! Name of the field file.
  CHARACTER(LEN=28), INTENT(IN) :: HNCVARNAME  ! Name of variable to read in netcdf file
 !
-integer :: status
-integer :: kcdf_id
-integer :: INBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: INBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: YVARNAME
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID
-integer ::JLOOP1,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::INVARDIMS
-integer,DIMENSION(3) ::INDIMLEN
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID
+integer(kind=CDFINT) ::JLOOP1,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::INVARDIMS
+integer(kind=CDFINT),DIMENSION(3) ::INDIMLEN
 character(LEN=80),DIMENSION(3) :: NDIMNAM
-integer :: IDIM
+integer(kind=CDFINT) :: IDIM
 integer :: INLON
 INTEGER :: IINLA, INO
 real :: ZZLAMISS,ZZLOMISS
@@ -767,16 +772,16 @@ IMPLICIT NONE
  CHARACTER(LEN=28), INTENT(IN) :: HNCVARNAME  ! Name of variable to read in netcdf file
 REAL, DIMENSION(:), INTENT(OUT) :: PVAL      ! value to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-INTEGER, DIMENSION(1) :: NDIMID
-integer ::NLEN
+integer(kind=CDFINT) ::JLOOP1
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+INTEGER(kind=CDFINT), DIMENSION(1) :: NDIMID
+integer(kind=CDFINT) ::NLEN
 real,DIMENSION(:),ALLOCATABLE   :: ZVALU
 real :: ZMISS
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -886,18 +891,18 @@ IMPLICIT NONE
 REAL, DIMENSION(:), INTENT(OUT) :: PLON,PLAT ! Longitudes/latitudes in netcdf file 
 REAL, DIMENSION(:), INTENT(OUT) :: PVAL      ! value to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1,JDIM1,JDIM2,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-integer ::NLEN
-integer, dimension(1) :: NDIMID
-integer,DIMENSION(2) ::NLEN2D, NDIMID2D
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) ::JLOOP1,JDIM1,JDIM2,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+integer(kind=CDFINT) ::NLEN
+integer(kind=CDFINT), dimension(1) :: NDIMID
+integer(kind=CDFINT),DIMENSION(2) ::NLEN2D, NDIMID2D
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
 real,DIMENSION(:),ALLOCATABLE   :: ZVALU
 real,DIMENSION(:,:),ALLOCATABLE :: ZVALU2D
@@ -1087,17 +1092,18 @@ REAL, DIMENSION(:), INTENT(OUT) :: PLON,PLAT ! Longitudes/latitudes in netcdf fi
 REAL, DIMENSION(:), INTENT(OUT) :: PDEP      ! depth in netcdf file
 REAL, DIMENSION(:,:), INTENT(OUT) :: PVAL      ! value to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1,JDIM1,JDIM2,JDIM3,JLOOP
+integer(kind=CDFINT) ::JLOOP1
+integer :: JDIM1,JDIM2,JDIM3,JLOOP
 !integer ::JLOOP2,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-integer,DIMENSION(3) ::NLEN3D
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+integer(kind=CDFINT),DIMENSION(3) ::NLEN3D
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
 real,DIMENSION(:,:,:),ALLOCATABLE :: ZVALU3D
 real :: ZMISS
diff --git a/src/SURFEX/mode_snowcro_flanner.F90 b/src/SURFEX/mode_snowcro_flanner.F90
index afa89445276a1ea7d3d79c86b83dd14669b5a9d8..e719d0f2d9701cc733d20b0fe4cbe2619e16c255 100644
--- a/src/SURFEX/mode_snowcro_flanner.F90
+++ b/src/SURFEX/mode_snowcro_flanner.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 MODULE MODE_SNOWCRO_FLANNER
 
@@ -24,6 +24,10 @@ MODULE MODE_SNOWCRO_FLANNER
 !!    -------------
 !!      Original    01/2013
 !
+! Modifications:
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
+!
+use modd_netcdf_sfx, only : CDFINT
 USE MODD_SURFEX_OMP, ONLY : NBLOCK
 USE MODD_SURFEX_MPI, ONLY : NRANK, NPIO, NPROC, NCOMM
 !
@@ -72,7 +76,7 @@ IMPLICIT NONE
 !*      2.    declarations of local variables
 !
 INTEGER :: INFOMPI
-INTEGER :: IERROR !error status
+INTEGER(kind=CDFINT) :: IERROR !error status
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
@@ -115,14 +119,14 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: ID_FILE
+INTEGER(kind=CDFINT),INTENT(IN) :: ID_FILE
  CHARACTER(LEN=5),INTENT(IN) :: HSURF
 REAL, DIMENSION(:,:,:), POINTER :: PVAR
 !
 INTEGER :: INFOMPI
-INTEGER, DIMENSION(:), ALLOCATABLE :: IVARDIMSID
+INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: IVARDIMSID
 !
-INTEGER :: IERROR !error status
+INTEGER(kind=CDFINT) :: IERROR !error status
 !
 IF (NRANK==NPIO) THEN
   ! Look for variable ID
diff --git a/src/SURFEX/prep_isba_netcdf.F90 b/src/SURFEX/prep_isba_netcdf.F90
index c61ec8c397670cd77ad5579eb3b1ceeda601f857..08841012550a9ef1cce41bcced944baee8e6bcd6 100644
--- a/src/SURFEX/prep_isba_netcdf.F90
+++ b/src/SURFEX/prep_isba_netcdf.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2012-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #########
 SUBROUTINE PREP_ISBA_NETCDF (DTCO, U, HPROGRAM,HSURF,HFILE,KLUOUT,PFIELD)
@@ -26,10 +26,14 @@ SUBROUTINE PREP_ISBA_NETCDF (DTCO, U, HPROGRAM,HSURF,HFILE,KLUOUT,PFIELD)
 !!    -------------
 !!      Original    04/2012
 !!      J.Escobar   11/2013  Add USE MODI_GET_TYPE_DIM_n
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !!------------------------------------------------------------------
 !
 !
 !
+USE GRIB_API, ONLY : kindOfInt
+!
+use modd_netcdf_sfx, only: CDFINT
 USE MODD_DATA_COVER_n, ONLY : DATA_COVER_t
 USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
 !
@@ -50,7 +54,6 @@ USE PARKIND1  ,ONLY : JPRB
 USE NETCDF
 !
 IMPLICIT NONE
-
 !
 !*      0.1    declarations of arguments
 !
@@ -73,14 +76,14 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZFIELD, ZFIELD0   ! field read
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 INTEGER :: JI, ICPT
-INTEGER::IERROR !error status
+INTEGER(kind=kindOfInt)::IERROR !error status
 INTEGER::JJ,JK,JLOOP ! loop counters
 INTEGER::INLAYERS ! vertical dimension length
 INTEGER::IL ! nature dimension length
-INTEGER::ID_FILE,ID_VAR ! Netcdf IDs for file and variable
-INTEGER::INVARDIMS !number of dimensions of netcdf input variable
-INTEGER,DIMENSION(:),ALLOCATABLE::IVARDIMSID
-INTEGER::ILENDIM,ILENDIM1,ILENDIM2
+INTEGER(kind=CDFINT)::ID_FILE,ID_VAR ! Netcdf IDs for file and variable
+INTEGER(kind=CDFINT)::INVARDIMS !number of dimensions of netcdf input variable
+INTEGER(kind=CDFINT),DIMENSION(:),ALLOCATABLE::IVARDIMSID
+INTEGER(kind=CDFINT)::ILENDIM,ILENDIM1,ILENDIM2
 
 SELECT CASE (TRIM(HSURF))
   CASE ('TG','WG','WGI')
diff --git a/src/SURFEX/read_netcdf.F90 b/src/SURFEX/read_netcdf.F90
index bdd337748e285b1dd8725e6c0abf392282f98e1e..4c724796600155725de103440cf163da75cad548 100644
--- a/src/SURFEX/read_netcdf.F90
+++ b/src/SURFEX/read_netcdf.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #########
       SUBROUTINE READ_NETCDF (UG, U, USS, &
@@ -23,12 +23,14 @@
 !!
 !!    Original    01/2008
 !!
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
 !            -----------
 !
 !
+use modd_netcdf_sfx, only : CDFINT
 USE MODD_SURF_ATM_GRID_n, ONLY : SURF_ATM_GRID_t
 USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
 USE MODD_SSO_n, ONLY : SSO_t
@@ -73,7 +75,7 @@ REAL, DIMENSION(:),ALLOCATABLE :: ZLATI    ! array of values extract from netcdf
 !
 INTEGER      :: ILUOUT                     ! output listing
 INTEGER      :: JLOOP                      ! loop indice
-INTEGER      :: JDIMENSION                 ! dimensions of ZVALU,ZLAT, 
+INTEGER(kind=CDFINT) :: JDIMENSION     ! dimensions of ZVALU,ZLAT,
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
                                            ! and ZLON arrays
 !----------------------------------------------------------------------------
diff --git a/src/SURFEX/read_pgd_netcdf.F90 b/src/SURFEX/read_pgd_netcdf.F90
index a30e3b5ad8e4c858b2a6ea43e36be0e0cb5f3166..6907b4d7895c819c6a802946f8067007a3ca21bc 100644
--- a/src/SURFEX/read_pgd_netcdf.F90
+++ b/src/SURFEX/read_pgd_netcdf.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2012-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !#################################################################################
 SUBROUTINE READ_PGD_NETCDF (UG, U, USS, &
@@ -26,9 +26,11 @@ SUBROUTINE READ_PGD_NETCDF (UG, U, USS, &
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    11/2012
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !!------------------------------------------------------------------
 !
 !
+use modd_netcdf_sfx, only : CDFINT
 USE MODD_SURF_ATM_GRID_n, ONLY : SURF_ATM_GRID_t
 USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
 USE MODD_SSO_n, ONLY : SSO_t
@@ -73,9 +75,9 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZFIELD0
 !
 ! CHARACTER(LEN=28) :: YNCVAR
 !
-INTEGER::IERROR !error status
-INTEGER::ID_FILE ! id of netcdf file
-INTEGER::INFIELD,INLAT,INLON ! dimension lengths
+INTEGER(kind=CDFINT)::IERROR !error status
+INTEGER(kind=CDFINT)::ID_FILE ! id of netcdf file
+INTEGER(kind=CDFINT)::INFIELD,INLAT,INLON ! dimension lengths
 INTEGER::ILUOUT
 INTEGER::JPOINT !loop counter
 !
@@ -175,17 +177,17 @@ USE NETCDF
 IMPLICIT NONE
 
 
-INTEGER,INTENT(IN)::ID_FILE
+INTEGER(kind=CDFINT),INTENT(IN)::ID_FILE
  CHARACTER(LEN=20),   INTENT(IN)  :: HFIELD     ! name of variable
 REAL,DIMENSION(:),POINTER::PFIELD
 
-INTEGER::ID_VAR ! Netcdf IDs for file and variable
-INTEGER::INVARDIMS !number of dimensions of netcdf input variable
-INTEGER,DIMENSION(:),ALLOCATABLE::IVARDIMSID
-INTEGER::ILENDIM1,ILENDIM2
-INTEGER,INTENT(OUT)::ILENDIM
-INTEGER::IERROR !error status
-INTEGER::ITYPE
+INTEGER(kind=CDFINT)::ID_VAR ! Netcdf IDs for file and variable
+INTEGER(kind=CDFINT)::INVARDIMS !number of dimensions of netcdf input variable
+INTEGER(kind=CDFINT),DIMENSION(:),ALLOCATABLE::IVARDIMSID
+INTEGER(kind=CDFINT)::ILENDIM1,ILENDIM2
+INTEGER(kind=CDFINT),INTENT(OUT)::ILENDIM
+INTEGER(kind=CDFINT)::IERROR !error status
+INTEGER(kind=CDFINT)::ITYPE
 
 ! Look for variable ID for HFIELD
 IERROR=NF90_INQ_VARID(ID_FILE,TRIM(HFIELD),ID_VAR)
diff --git a/src/SURFEX/read_z1d_netcdf.F90 b/src/SURFEX/read_z1d_netcdf.F90
index af433b7392ff96229cc157444ba18483b7a4522f..91e77dfe0eeaf46c9624cc69173af559b58deea6 100644
--- a/src/SURFEX/read_z1d_netcdf.F90
+++ b/src/SURFEX/read_z1d_netcdf.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2014-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
-!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #########
       SUBROUTINE READ_Z1D_NETCDF
@@ -21,12 +21,14 @@
 !!
 !!    Original    11/2014
 !!      initialisation of NOCKMAX,XZHOC
-!!
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
+!
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
 !            -----------
 !
+use modd_netcdf_sfx, only : CDFINT
 USE MODD_OCEAN_GRID
 USE MODD_SURF_PAR, ONLY : NUNDEF
 USE MODD_PREP_SEAFLUX, ONLY : CFILE_SEAFLX,CTYPE_SEAFLX
@@ -42,7 +44,7 @@ IMPLICIT NONE
 !
 CHARACTER (LEN=28) :: YFILENAME
 CHARACTER (LEN=28)  :: YNCVARNAME
-INTEGER :: JDIMENSION
+INTEGER(kind=CDFINT) :: JDIMENSION
 !
 !*    0.2    Declaration of local variables
 !            ------------------------------
diff --git a/src/SURFEX/start_lake_of.F90 b/src/SURFEX/start_lake_of.F90
index 0f08293016c79cdfd7efc516e9d71ebeb48b335a..26f4b89ba8ea509ba4ce4df1c8a565331c81569f 100644
--- a/src/SURFEX/start_lake_of.F90
+++ b/src/SURFEX/start_lake_of.F90
@@ -45,6 +45,7 @@ SUBROUTINE START_LAKE_OF(KDAY, KMONTH, PLON, PLAT, PDEPTH, &   ! IN
 !         Modified   07/2012, P. Le Moigne : In case there's a lake but no climatic data
 !                                    associated then fill with neighbour existing data
 !                                    instead of aborting
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !------------------------------------------------------------------------------------------------------------
 !
 USE MODD_DATA_LAKE, ONLY : CLAKELTA, NLONG, NLATG, XFIRSTLAT, &
@@ -52,6 +53,7 @@ USE MODD_DATA_LAKE, ONLY : CLAKELTA, NLONG, NLATG, XFIRSTLAT, &
                            XAUXT_SNOW, XAUXT_ICE, XAUXT_MNW, XAUXT_WML, XAUXT_BOT, &
                            XAUXT_B1, XAUXCT, XAUXH_SNOW, XAUXH_ICE, XAUXH_ML, &
                            XAUXH_B1, XAUXT_SFC
+use modd_netcdf_sfx, only : CDFINT
 !
 USE MODI_ABOR1_SFX
 !
@@ -62,6 +64,7 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
+!
 !*      0.1    declarations of arguments
 !
 INTEGER, INTENT(IN) :: KDAY,   & ! The day number
@@ -97,7 +100,7 @@ REAL :: ZWLON, ZWLAT, ZWDEPTH
 !
 LOGICAL :: LEXIST
 !
- INTEGER :: ID_LAKELTA, ID_MONTH, &  ! IDs for NetCDF 
+ INTEGER(kind=CDFINT) :: ID_LAKELTA, ID_MONTH, &  ! IDs for NetCDF
             ID_DEC, ID_LON, ID_LAT, ID_DEPTH, &
             ID_T_SNOW, ID_T_ICE, ID_T_MNW, ID_T_WML, ID_T_BOT, ID_T_B1, ID_CT, &
             ID_H_SNOW, ID_H_ICE, ID_H_ML, ID_H_B1, ID_T_SFC
@@ -105,9 +108,9 @@ LOGICAL :: LEXIST
  INTEGER :: ILON, ILAT ! Numbers of the "lake" grid boxes in longitude and latitude
  INTEGER :: IDEPTH ! Number of the lake class in depth
  INTEGER, DIMENSION(1) :: ILOC_DEPTH
- INTEGER :: IRET
- INTEGER :: IMONTHN, IDECN, ILONN, ILATN, IDEPTHN
- INTEGER, DIMENSION(5) :: NINDEX
+ INTEGER(kind=CDFINT) :: IRET
+ INTEGER(kind=CDFINT) :: IMONTHN, IDECN, ILONN, ILATN, IDEPTHN
+ INTEGER(kind=CDFINT), DIMENSION(5) :: NINDEX
  REAL(KIND=JPRB) :: ZHOOK_HANDLE
 ! ----------------------------------------------------------------------------------------------
 !
diff --git a/src/SURFEX/uncompress_field.F90 b/src/SURFEX/uncompress_field.F90
index 684fcdef42379f9e1f2cea7236478c73875335be..a3c2aa88e052868ef2453d6666253eca49c9ecb1 100644
--- a/src/SURFEX/uncompress_field.F90
+++ b/src/SURFEX/uncompress_field.F90
@@ -1,3 +1,11 @@
+!SFX_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
+!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!SFX_LIC for details. version 1.
+!------------------------------------------------------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
+!------------------------------------------------------------------------------------------------------------
 SUBROUTINE UNCOMPRESS_FIELD(KLONG,PSEUIL,PFIELD_IN,PFIELD_OUT)
 
 IMPLICIT NONE
diff --git a/src/configure b/src/configure
index 03587c46eabf707d695b0a7dc7226288298d306f..2e6f572cb49dcbfc706c4399c5c2fb064bdf1609 100755
--- a/src/configure
+++ b/src/configure
@@ -44,6 +44,21 @@ cd ${LOCAL}/conf
 TARG=$(uname -s -n)
 #
 case "$TARG" in
+'Linux jean-zay'*)
+                export ARCH=${ARCH:-LXifort}
+                export VER_MPI=${VER_MPI:-MPIINTEL}
+                export OPTLEVEL=${OPTLEVEL:-O2}
+                export MVWORK=${MVWORK:-NO}
+                export VER_CDF=${VER_CDF:-CDFAUTO}
+                export MNHENV=${MNHENV:-"
+module purge
+module load intel-compilers-19/19.0.4.243
+module load intel-mpi-19/19.0.4.243
+ulimit -s unlimited
+export SLURM_CPU_BIND=none
+export I_MPI_PIN_PROCESSOR_LIST=all:map=spread
+"}
+              ;;
 'Linux'*'occigen'*)
                 export     ARCH=${ARCH:-LXifort}
                 export  VER_MPI=${VER_MPI:-MPIINTEL}