diff --git a/src/LIB/SURCOUCHE/src/fmread_ll.f90 b/src/LIB/SURCOUCHE/src/fmread_ll.f90
index 10c862803697fb325900115f9959c08f3c687512..2efa39b2297cd30d7662e9876f249477af10cba5 100644
--- a/src/LIB/SURCOUCHE/src/fmread_ll.f90
+++ b/src/LIB/SURCOUCHE/src/fmread_ll.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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.
 !-----------------------------------------------------------------
 
@@ -18,7 +18,8 @@ MODULE MODE_FMREAD
 !  J.Escobar : 13/01/2015 : remove comment on BCAST(IRESP in FMREADX2_ll
 !  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  J.Escobar : 17/07/2018 : reintroduce needed MPI_BARRIER in IO_READ_FIELD_BYFIELD_X3 
+!  J.Escobar : 17/07/2018 : reintroduce needed MPI_BARRIER in IO_READ_FIELD_BYFIELD_X3
+!  P.Wautelet: 29/01/2019 : small bug correction in time measurement in IO_READ_FIELD_BYFIELD_X2
 !
 USE MODD_IO_ll, ONLY : NVERB_FATAL,NVERB_ERROR,NVERB_WARNING,NVERB_INFO,NVERB_DEBUG,TFILEDATA
 USE MODD_MPIF
@@ -452,9 +453,9 @@ IF (IRESP==0) THEN
     ELSE
       CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     END IF
+    CALL SECOND_MNH2(T2)
+    TIMEZ%T_READ2D_SCAT=TIMEZ%T_READ2D_SCAT + T2 - T1
   END IF
-  CALL SECOND_MNH2(T2)
-  TIMEZ%T_READ2D_SCAT=TIMEZ%T_READ2D_SCAT + T2 - T1    
 END IF
 !
 IF (GALLOC) DEALLOCATE (ZFIELDP)
diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index 8dce892d63c429a17a98a9d3a7cf1cc2546f3949..475b028fed0d3598f843e2e059f64cfa1ba278bd 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -1,10 +1,12 @@
-!MNH_LIC Copyright 2016-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2016-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.
 !-----------------------------------------------------------------
 ! Original version:
 !  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+! Modifications:
+!  Philippe Wautelet: 29/01/2019 : small bug correction (null pointers) in FIELDLIST_GOTO_MODEL if NESPGD or PGD
 !-----------------------------------------------------------------
 MODULE MODE_FIELD
 !
@@ -3806,18 +3808,17 @@ END IF
 !
 ! Initialize some pointers
 !
+!PW: TODO: check if still necessary as XRHODREFZ and XTHVREFZ are now initialiazed in ini_modeln even for KMI/=1 (29/01/2019)
 IF (KFROM == KTO) THEN
-  IF (.NOT.ALLOCATED(XRHODREFZ) .AND. CPROGRAM/='NESPGD' .AND. CPROGRAM/='PGD') THEN
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','FIELDLIST_GOTO_MODEL','XRHODREFZ not yet allocated')
+  IF ( CPROGRAM/='NESPGD' .AND. CPROGRAM/='PGD' ) THEN
+    IF (.NOT.ALLOCATED(XRHODREFZ)) CALL PRINT_MSG(NVERB_FATAL,'GEN','FIELDLIST_GOTO_MODEL','XRHODREFZ not yet allocated')
+    CALL FIND_FIELD_ID_FROM_MNHNAME('RHOREFZ',IID,IRESP)
+    TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XRHODREFZ
+    !
+    IF (.NOT.ALLOCATED(XTHVREFZ)) CALL PRINT_MSG(NVERB_FATAL,'GEN','FIELDLIST_GOTO_MODEL','XTHVREFZ not yet allocated')
+    CALL FIND_FIELD_ID_FROM_MNHNAME('THVREFZ',IID,IRESP)
+    TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XTHVREFZ
   END IF
-  CALL FIND_FIELD_ID_FROM_MNHNAME('RHOREFZ',IID,IRESP)
-  TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XRHODREFZ
-  !
-  IF (.NOT.ALLOCATED(XTHVREFZ) .AND. CPROGRAM/='NESPGD' .AND. CPROGRAM/='PGD') THEN
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','FIELDLIST_GOTO_MODEL','XTHVREFZ not yet allocated')
-  END IF
-  CALL FIND_FIELD_ID_FROM_MNHNAME('THVREFZ',IID,IRESP)
-  TFIELDLIST(IID)%TFIELD_X1D(KFROM)%DATA=>XTHVREFZ
 END IF
 !
 !
diff --git a/src/MNH/ini_micron.f90 b/src/MNH/ini_micron.f90
index 67bce21b6e97a0bdd9850ffe635c5205b4195718..e77c689264c910c005919f36332c2d25f6eaba43 100644
--- a/src/MNH/ini_micron.f90
+++ b/src/MNH/ini_micron.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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.
 !-----------------------------------------------------------------
 !      ########################
@@ -51,6 +51,7 @@ END MODULE MODI_INI_MICRO_n
 !!      Modification    01/2016  (JP Pinty) Add LIMA
 !!      C.LAc          10/2016   Add budget for droplet deposition
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      P.Wautelet     01/2019: bug: add missing allocations
 !!
 !! --------------------------------------------------------------------------
 !
@@ -220,15 +221,13 @@ IF(LBLOWSNOW) THEN
   IF(CSNOWSEDIM=='TABC') THEN
 !Read in look up tables of snow particles properties
 !No arguments, all look up tables are defined in module
-!mode_snowdrift_sedim_lkt           
-          CALL BLOWSNOW_SEDIM_LKT_SET 
+!mode_snowdrift_sedim_lkt
+    CALL BLOWSNOW_SEDIM_LKT_SET
   END IF
 ELSE
   ALLOCATE(XSNWSUBL3D(0,0,0))
 END IF
 !
-IF(SIZE(XINPRR) == 0) RETURN
-!
 !*       2b.    ALLOCATION for Radiative cooling 
 !              ------------------------------
 IF (LACTIT .OR. MACTIT) THEN
@@ -236,12 +235,11 @@ IF (LACTIT .OR. MACTIT) THEN
   ALLOCATE( XRCM(IIU,IJU,IKU) )
   XTHM = XTHT
   XRCM(:,:,:) = XRT(:,:,:,2)
-             ELSE
+ELSE
   ALLOCATE( XTHM(0,0,0) )
   ALLOCATE( XRCM(0,0,0) )
 END IF
 !
-!
 !*       2.bis ALLOCATE  Module MODD_PRECIP_SCAVENGING_n
 !              ------------------------------
 !
@@ -249,16 +247,21 @@ IF ( (CCLOUD=='LIMA') .AND. LSCAV ) THEN
   ALLOCATE(XINPAP(IIU,IJU))
   ALLOCATE(XACPAP(IIU,IJU))
   XINPAP(:,:)=0.0
-  XACPAP(:,:)=0.0  
+  XACPAP(:,:)=0.0
+ELSE
+  ALLOCATE(XINPAP(0,0))
+  ALLOCATE(XACPAP(0,0))
 END IF
 !
+IF(SIZE(XINPRR) == 0) RETURN
+!
 !*       3.    INITIALIZE MODD_PRECIP_n variables
 !              ----------------------------------
 !
 CALL READ_PRECIP_FIELD(TPINIFILE,CLUOUT,CPROGRAM,CCONF,               &
                   CGETRCT,CGETRRT,CGETRST,CGETRGT,CGETRHT,            &
                   XINPRC,XACPRC,XINDEP,XACDEP,XINPRR,XINPRR3D,XEVAP3D,&
-                  XACPRR,XINPRS,XACPRS,XINPRG,XACPRG, XINPRH,XACPRH )           
+                  XACPRR,XINPRS,XACPRS,XINPRG,XACPRG, XINPRH,XACPRH )
 !
 !
 !*       4.    INITIALIZE THE PARAMETERS FOR THE MICROPHYSICS
@@ -287,13 +290,13 @@ ELSE IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') THEN
   IF (CCLOUD == 'C3R5') THEN
     CALL INI_ICE_C1R3(XTSTEP,ZDZMIN,NSPLITG)       ! 1/2 spectral cold cloud
   END IF
-ELSE IF (CCLOUD == 'LIMA') THEN               
-   IF (CGETCLOUD /= 'READ') THEN 
-      CALL INIT_AEROSOL_CONCENTRATION(XRHODREF,                              &
-                                      XSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
-                                                                  XZZ(:,:,:) )
-   END IF
-   CALL INI_LIMA(XTSTEP,ZDZMIN,NSPLITR, NSPLITG)   ! 1/2 spectral warm cloud
+ELSE IF (CCLOUD == 'LIMA') THEN
+  IF (CGETCLOUD /= 'READ') THEN
+    CALL INIT_AEROSOL_CONCENTRATION(XRHODREF,                              &
+                                    XSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
+                                                                XZZ(:,:,:) )
+  END IF
+  CALL INI_LIMA(XTSTEP,ZDZMIN,NSPLITR, NSPLITG)   ! 1/2 spectral warm cloud
 END IF
 !
 IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') THEN
@@ -313,9 +316,9 @@ IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') THEN
 ENDIF
 !
 IF (CCLOUD == 'LIMA') THEN
-   IF (CGETCLOUD/='READ') THEN
-      CALL SET_CONC_LIMA(CGETCLOUD,XRHODREF,XRT,XSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END))
-   END IF
+  IF (CGETCLOUD/='READ') THEN
+    CALL SET_CONC_LIMA(CGETCLOUD,XRHODREF,XRT,XSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END))
+  END IF
 END IF
 !
 !
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index ce192d4340326112ec57c0ee19f7d7d1aa9e24da..f8e8ac5c5786f45af518e835099cf8401c971d74 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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 for details. version 1.
@@ -129,10 +129,10 @@ END MODULE MODI_INI_MODEL_n
 !!      Module MODD_CH_MNHC_n   : contains the control parameters for chemistry
 !!      Module MODD_DEEP_CONVECTION_n: contains declaration of the variables of
 !!                                     the deep convection scheme
-!!        
-!!        
-!!        
-!!        
+!!
+!!
+!!
+!!
 !!      Module MODN_CONF_n     : contains declaration of namelist NAM_CONFn and 
 !!                             uses module MODD_CONF_n (configuration variables)
 !!      Module MODN_LUNIT_n    : contains declaration of namelist NAM_LUNITn and
@@ -151,7 +151,7 @@ END MODULE MODI_INI_MODEL_n
 !!    REFERENCE
 !!    ---------
 !!      Book2 of documentation (routine INI_MODEL_n)
-!!      
+!!
 !!
 !!    AUTHOR
 !!    ------
@@ -278,6 +278,7 @@ END MODULE MODI_INI_MODEL_n
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!                   V. Vionnet : 18/07/2017 : add blowing snow scheme 
 !!                   01/18 J.Colin Add DRAG 
+!!      P.Wautelet   29/01/2019: bug: add missing zero-size allocations
 !---------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -331,7 +332,7 @@ USE MODD_DIM_n
 USE MODD_BUDGET
 USE MODD_RADIATIONS_n
 USE MODD_SHADOWS_n
-USE MODD_PARAM_RAD_n,   ONLY : CLW, CAER, CAOP     
+USE MODD_PARAM_RAD_n,   ONLY : CLW, CAER, CAOP
 USE MODD_VAR_ll,        ONLY : IP
 !
 USE MODD_STAND_ATM,     ONLY : XSTROATM, XSMLSATM, XSMLWATM, XSPOSATM, XSPOWATM
@@ -692,8 +693,10 @@ IF (LMEAN_FIELD) THEN
   ALLOCATE(XTHM_MEAN(IIU,IJU,IKU))     ; XTHM_MEAN = 0.0
   ALLOCATE(XTEMPM_MEAN(IIU,IJU,IKU))   ; XTEMPM_MEAN = 0.0
   IF (CTURB/='NONE') THEN
-     ALLOCATE(XTKEM_MEAN(IIU,IJU,IKU))    
-     XTKEM_MEAN = 0.0
+    ALLOCATE(XTKEM_MEAN(IIU,IJU,IKU))
+    XTKEM_MEAN = 0.0
+  ELSE
+    ALLOCATE(XTKEM_MEAN(0,0,0))
   END IF
   ALLOCATE(XPABSM_MEAN(IIU,IJU,IKU))   ; XPABSM_MEAN = 0.0
 !
@@ -710,10 +713,35 @@ IF (LMEAN_FIELD) THEN
   ALLOCATE(XTHM_MAX(IIU,IJU,IKU))     ; XTHM_MAX = 0.0
   ALLOCATE(XTEMPM_MAX(IIU,IJU,IKU))   ; XTEMPM_MAX = 0.0
   IF (CTURB/='NONE') THEN
-     ALLOCATE(XTKEM_MAX(IIU,IJU,IKU))    
-     XTKEM_MAX = 0.0
+    ALLOCATE(XTKEM_MAX(IIU,IJU,IKU))
+    XTKEM_MAX = 0.0
+  ELSE
+    ALLOCATE(XTKEM_MAX(0,0,0))
   END IF
   ALLOCATE(XPABSM_MAX(IIU,IJU,IKU))   ; XPABSM_MAX = 0.0
+ELSE
+  ALLOCATE(XUM_MEAN(0,0,0))
+  ALLOCATE(XVM_MEAN(0,0,0))
+  ALLOCATE(XWM_MEAN(0,0,0))
+  ALLOCATE(XTHM_MEAN(0,0,0))
+  ALLOCATE(XTEMPM_MEAN(0,0,0))
+  ALLOCATE(XTKEM_MEAN(0,0,0))
+  ALLOCATE(XPABSM_MEAN(0,0,0))
+!
+  ALLOCATE(XU2_MEAN(0,0,0))
+  ALLOCATE(XV2_MEAN(0,0,0))
+  ALLOCATE(XW2_MEAN(0,0,0))
+  ALLOCATE(XTH2_MEAN(0,0,0))
+  ALLOCATE(XTEMP2_MEAN(0,0,0))
+  ALLOCATE(XPABS2_MEAN(0,0,0))
+!
+  ALLOCATE(XUM_MAX(0,0,0))
+  ALLOCATE(XVM_MAX(0,0,0))
+  ALLOCATE(XWM_MAX(0,0,0))
+  ALLOCATE(XTHM_MAX(0,0,0))
+  ALLOCATE(XTEMPM_MAX(0,0,0))
+  ALLOCATE(XTKEM_MAX(0,0,0))
+  ALLOCATE(XPABSM_MAX(0,0,0))
 END IF
 !
 IF ((CUVW_ADV_SCHEME(1:3)=='CEN') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN
@@ -731,6 +759,13 @@ IF ((CUVW_ADV_SCHEME(1:3)=='CEN') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN
     XDVM  = 0.0
     XDWM  = 0.0
   END IF
+ELSE
+  ALLOCATE(XUM(0,0,0))
+  ALLOCATE(XVM(0,0,0))
+  ALLOCATE(XWM(0,0,0))
+  ALLOCATE(XDUM(0,0,0))
+  ALLOCATE(XDVM(0,0,0))
+  ALLOCATE(XDWM(0,0,0))
 END IF
 !
 ALLOCATE(XUT(IIU,IJU,IKU))      ; XUT  = 0.0
@@ -760,6 +795,7 @@ IF (CTURB /= 'NONE') THEN
 ELSE
   ALLOCATE(XTKET(0,0,0))
   ALLOCATE(XRTKES(0,0,0))
+  ALLOCATE(XRTKEMS(0,0,0))
   ALLOCATE(XWTHVMF(0,0,0))
   ALLOCATE(XDYP(0,0,0))
   ALLOCATE(XTHP(0,0,0))
@@ -806,9 +842,8 @@ ALLOCATE(XRSVS_CLD(IIU,IJU,IKU,NSV)); XRSVS_CLD = 0.0
 IF (LPASPOL) THEN
   ALLOCATE( XATC(IIU,IJU,IKU,NSV_PP) )
   XATC = 0.
-             ELSE
+ELSE
   ALLOCATE( XATC(0,0,0,0))
-  XATC = 0.
 END IF
 !
 IF(LBLOWSNOW) THEN
@@ -856,6 +891,8 @@ ALLOCATE(XDZZ(IIU,IJU,IKU))
 !
 IF (KMI == 1) THEN
   ALLOCATE(XRHODREFZ(IKU),XTHVREFZ(IKU))
+ELSE
+  ALLOCATE(XRHODREFZ(0),XTHVREFZ(0))
 END IF
 ALLOCATE(XRHODREF(IIU,IJU,IKU))
 ALLOCATE(XTHVREF(IIU,IJU,IKU))
@@ -891,7 +928,7 @@ CALL GET_DIM_EXT_ll('Y',IIY,IJY)
 IF (L2D) THEN
   ALLOCATE(XBFY(IIY,IJY,IKU))
 ELSE
-  ALLOCATE(XBFY(IJY,IIY,IKU)) ! transposition needed by the optimisition of the
+  ALLOCATE(XBFY(IJY,IIY,IKU)) ! transposition needed by the optimisation of the
                               ! FFT solver
 END IF
 CALL GET_DIM_EXT_ll('B',IIU_B,IJU_B)
@@ -1070,7 +1107,7 @@ ELSE                                   ! 3D case
              " change relaxation parameters or number of processors "
         !callabortstop
         CALL ABORT
-        STOP    
+        STOP
      END IF
   END IF
   IF ( CLBCY(1) /= 'CYCL' ) THEN
@@ -1082,7 +1119,7 @@ ELSE                                   ! 3D case
              " change relaxation parameters or number of processors "
         !callabortstop
         CALL ABORT
-        STOP    
+        STOP
      END IF
   END IF
 IF ( LHORELAX_UVWTH ) THEN
@@ -1194,6 +1231,23 @@ IF ( KMI > 1 ) THEN
   ALLOCATE(   NKLIN_LBXW(SIZE(XLBXWM,1),SIZE(XLBXWM,2),SIZE(XLBXWM,3)))
   ALLOCATE(XCOEFLIN_LBYW(SIZE(XLBYWM,1),SIZE(XLBYWM,2),SIZE(XLBYWM,3)))
   ALLOCATE(   NKLIN_LBYW(SIZE(XLBYWM,1),SIZE(XLBYWM,2),SIZE(XLBYWM,3)))
+ELSE
+  ALLOCATE(XCOEFLIN_LBXM(0,0,0))
+  ALLOCATE(   NKLIN_LBXM(0,0,0))
+  ALLOCATE(XCOEFLIN_LBYM(0,0,0))
+  ALLOCATE(   NKLIN_LBYM(0,0,0))
+  ALLOCATE(XCOEFLIN_LBXU(0,0,0))
+  ALLOCATE(   NKLIN_LBXU(0,0,0))
+  ALLOCATE(XCOEFLIN_LBYU(0,0,0))
+  ALLOCATE(   NKLIN_LBYU(0,0,0))
+  ALLOCATE(XCOEFLIN_LBXV(0,0,0))
+  ALLOCATE(   NKLIN_LBXV(0,0,0))
+  ALLOCATE(XCOEFLIN_LBYV(0,0,0))
+  ALLOCATE(   NKLIN_LBYV(0,0,0))
+  ALLOCATE(XCOEFLIN_LBXW(0,0,0))
+  ALLOCATE(   NKLIN_LBXW(0,0,0))
+  ALLOCATE(XCOEFLIN_LBYW(0,0,0))
+  ALLOCATE(   NKLIN_LBYW(0,0,0))
 END IF
 !
 !  allocation of the LS fields for vertical relaxation and numerical diffusion
@@ -1257,11 +1311,10 @@ END IF
 ! Initialization of SW bands
 NSWB_OLD = 6 ! Number of bands in ECMWF original scheme (from Fouquart et Bonnel (1980))
              ! then modified through INI_RADIATIONS_ECMWF but remains equal to 6 practically
-             
 IF (CRAD == 'ECRA') THEN
-    NSWB_MNH = 14  
+    NSWB_MNH = 14
 ELSE
-    NSWB_MNH = NSWB_OLD  
+    NSWB_MNH = NSWB_OLD
 END IF
 
 NLWB_MNH = 16 ! For XEMIS initialization (should be spectral in the future)
@@ -1373,9 +1426,25 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
     ALLOCATE(NCLBASCONV(0,0))
   END IF
 ELSE
+  ALLOCATE(NCOUNTCONV(0,0))
+  ALLOCATE(XDTHCONV(0,0,0))
+  ALLOCATE(XDRVCONV(0,0,0))
+  ALLOCATE(XDRCCONV(0,0,0))
+  ALLOCATE(XDRICONV(0,0,0))
   ALLOCATE(XPRCONV(0,0))
   ALLOCATE(XPACCONV(0,0))
   ALLOCATE(XPRSCONV(0,0))
+  ALLOCATE(XIC_RATE(0,0))
+  ALLOCATE(XCG_RATE(0,0))
+  ALLOCATE(XIC_TOTAL_NUMBER(0,0))
+  ALLOCATE(XCG_TOTAL_NUMBER(0,0))
+  ALLOCATE(XUMFCONV(0,0,0))
+  ALLOCATE(XDMFCONV(0,0,0))
+  ALLOCATE(XPRLFLXCONV(0,0,0))
+  ALLOCATE(XPRSFLXCONV(0,0,0))
+  ALLOCATE(XCAPE(0,0))
+  ALLOCATE(NCLTOPCONV(0,0))
+  ALLOCATE(NCLBASCONV(0,0))
 END IF
 !
 IF ((CDCONV == 'KAFR' .OR. CSCONV == 'KAFR') &
@@ -1416,7 +1485,7 @@ IF (KMI == 1) THEN
     ALLOCATE(XGYTHFRC(IKU,NFRC))
     ALLOCATE(XPGROUNDFRC(NFRC))
     ALLOCATE(XTENDUFRC(IKU,NFRC))
-    ALLOCATE(XTENDVFRC(IKU,NFRC))    
+    ALLOCATE(XTENDVFRC(IKU,NFRC))
   ELSE
     ALLOCATE(TDTFRC(0))
     ALLOCATE(XUFRC(0,0))
@@ -1441,6 +1510,23 @@ IF (KMI == 1) THEN
     ALLOCATE(XUFRC_PAST(0,0,0))
     ALLOCATE(XVFRC_PAST(0,0,0))
   END IF
+ELSE
+  ALLOCATE(TDTFRC(0))
+  ALLOCATE(XUFRC(0,0))
+  ALLOCATE(XVFRC(0,0))
+  ALLOCATE(XWFRC(0,0))
+  ALLOCATE(XTHFRC(0,0))
+  ALLOCATE(XRVFRC(0,0))
+  ALLOCATE(XTENDTHFRC(0,0))
+  ALLOCATE(XTENDRVFRC(0,0))
+  ALLOCATE(XGXTHFRC(0,0))
+  ALLOCATE(XGYTHFRC(0,0))
+  ALLOCATE(XPGROUNDFRC(0))
+  ALLOCATE(XTENDUFRC(0,0))
+  ALLOCATE(XTENDVFRC(0,0))
+  ALLOCATE(XWTFRC(0,0,0))
+  ALLOCATE(XUFRC_PAST(0,0,0))
+  ALLOCATE(XVFRC_PAST(0,0,0))
 END IF
 ! ----------------------------------------------------------------------
 !
@@ -1471,25 +1557,31 @@ ENDIF
 !*      4.11 BIS: Eddy fluxes allocation
 !
 IF ( LTH_FLX ) THEN
-   ALLOCATE(XVTH_FLUX_M(IIU,IJU,IKU)) ; XVTH_FLUX_M = 0.
-   ALLOCATE(XWTH_FLUX_M(IIU,IJU,IKU)) ; XWTH_FLUX_M = 0.
-   IF (KMI /= 1) THEN
-      ALLOCATE(XRTHS_EDDY_FLUX(IIU,IJU,IKU))
-      XRTHS_EDDY_FLUX = 0.
-   ENDIF
+  ALLOCATE(XVTH_FLUX_M(IIU,IJU,IKU)) ; XVTH_FLUX_M = 0.
+  ALLOCATE(XWTH_FLUX_M(IIU,IJU,IKU)) ; XWTH_FLUX_M = 0.
+  IF (KMI /= 1) THEN
+    ALLOCATE(XRTHS_EDDY_FLUX(IIU,IJU,IKU))
+    XRTHS_EDDY_FLUX = 0.
+  ELSE
+    ALLOCATE(XRTHS_EDDY_FLUX(0,0,0))
+  ENDIF
 ELSE
-   ALLOCATE(XVTH_FLUX_M(0,0,0)) ; XVTH_FLUX_M = 0.
-   ALLOCATE(XWTH_FLUX_M(0,0,0)) ; XWTH_FLUX_M = 0.
+  ALLOCATE(XVTH_FLUX_M(0,0,0))
+  ALLOCATE(XWTH_FLUX_M(0,0,0))
+  ALLOCATE(XRTHS_EDDY_FLUX(0,0,0))
 END IF
 !
 IF ( LUV_FLX) THEN
-   ALLOCATE(XVU_FLUX_M(IIU,IJU,IKU)) ; XVU_FLUX_M  = 0.
-   IF (KMI /= 1) THEN
-      ALLOCATE(XRVS_EDDY_FLUX(IIU,IJU,IKU))
-      XRVS_EDDY_FLUX = 0.
-   ENDIF
+  ALLOCATE(XVU_FLUX_M(IIU,IJU,IKU)) ; XVU_FLUX_M  = 0.
+  IF (KMI /= 1) THEN
+    ALLOCATE(XRVS_EDDY_FLUX(IIU,IJU,IKU))
+    XRVS_EDDY_FLUX = 0.
+  ELSE
+    ALLOCATE(XRVS_EDDY_FLUX(0,0,0))
+  ENDIF
 ELSE
-   ALLOCATE(XVU_FLUX_M(0,0,0)) ; XVU_FLUX_M  = 0.
+  ALLOCATE(XVU_FLUX_M(0,0,0))
+  ALLOCATE(XRVS_EDDY_FLUX(0,0,0))
 END IF
 !
 !*      3.11   Module MODD_ICE_CONC_n
@@ -1506,6 +1598,11 @@ IF ( CCLOUD == 'KHKO' .OR. CCLOUD == 'C2R2') THEN
    ALLOCATE(XNACT(IIU,IJU,IKU))
    ALLOCATE(XNPRO(IIU,IJU,IKU))
    ALLOCATE(XSSPRO(IIU,IJU,IKU))
+ELSE
+   ALLOCATE(XSUPSAT(0,0,0))
+   ALLOCATE(XNACT(0,0,0))
+   ALLOCATE(XNPRO(0,0,0))
+   ALLOCATE(XSSPRO(0,0,0))
 END IF
 !
 !*      3.12   Module MODD_TURB_CLOUD
@@ -1532,17 +1629,23 @@ IF (LUSECHAQ.AND.(CPROGRAM == 'DIAG  '.OR.CPROGRAM == 'MESONH')) THEN
     XACPRAQ(:,:,:) = 0.
   ENDIF
 ENDIF
+IF (.NOT.(ASSOCIATED(XPHC))) ALLOCATE(XPHC(0,0,0))
+IF (.NOT.(ASSOCIATED(XPHR))) ALLOCATE(XPHR(0,0,0))
+IF (.NOT.(ASSOCIATED(XACPHR))) ALLOCATE(XACPHR(0,0))
+IF (.NOT.(ASSOCIATED(XACPRAQ))) ALLOCATE(XACPRAQ(0,0,0))
 IF ((LUSECHEM).AND.(CPROGRAM == 'DIAG  ')) THEN
   ALLOCATE(XCHFLX(IIU,IJU,NSV_CHEM))
   XCHFLX(:,:,:) = 0.
+ELSE
+  ALLOCATE(XCHFLX(0,0,0))
 END IF
 !
 !*          3.14 Module MODD_DRAG
 !
 IF (LDRAG) THEN
-      ALLOCATE(XDRAG(IIU,IJU))
+  ALLOCATE(XDRAG(IIU,IJU))
 ELSE
-      ALLOCATE(XDRAG(0,0))
+  ALLOCATE(XDRAG(0,0))
 ENDIF
 !
 !-------------------------------------------------------------------------------
@@ -1642,14 +1745,10 @@ IF ( LUSECHEM .OR. LCHEMDIAG ) THEN
 !
   IF (LORILAM) THEN
     CALL CH_AER_MOD_INIT
-  ELSE
-    IF (.NOT.(ASSOCIATED(XSOLORG))) ALLOCATE(XSOLORG(0,0,0,0))  
-    IF (.NOT.(ASSOCIATED(XMI))) ALLOCATE(XMI(0,0,0,0))  
   ENDIF
-ELSE
-  IF (.NOT.(ASSOCIATED(XMI))) ALLOCATE(XMI(0,0,0,0))
-  IF (.NOT.(ASSOCIATED(XSOLORG))) ALLOCATE(XSOLORG(0,0,0,0))
 END IF
+IF (.NOT.(ASSOCIATED(XMI))) ALLOCATE(XMI(0,0,0,0))
+IF (.NOT.(ASSOCIATED(XSOLORG))) ALLOCATE(XSOLORG(0,0,0,0))
 !
 IF (CCLOUD=='LIMA') CALL INIT_AEROSOL_PROPERTIES
 !
@@ -2325,16 +2424,16 @@ CALL INI_AEROSET6
 ! Coupling with ForeFire if resolution is low enough
 !---------------------------------------------------
 IF ( LFOREFIRE .AND. 0.5*(XXHAT(2)-XXHAT(1)+XYHAT(2)-XYHAT(1)) < COUPLINGRES ) THEN
-	FFCOUPLING = .TRUE.	
+  FFCOUPLING = .TRUE.
 ELSE
-	FFCOUPLING = .FALSE.
+  FFCOUPLING = .FALSE.
 ENDIF
 
 ! Initializing the ForeFire variables
 !------------------------------------
 IF ( LFOREFIRE ) THEN
-	CALL INIT_FOREFIRE_n(KMI, ILUOUT, IP &
-		, TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME, XTSTEP)
+  CALL INIT_FOREFIRE_n(KMI, ILUOUT, IP &
+        , TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME, XTSTEP)
 END IF
 #endif
 
@@ -2343,19 +2442,19 @@ END IF
 !*      30.   Total production/Loss for chemical species
 !
 IF (LCHEMDIAG)  THEN
-        CALL CH_INIT_PRODLOSSTOT_n(ILUOUT)
-        IF (NEQ_PLT>0) THEN
-                ALLOCATE(XPROD(IIU,IJU,IKU,NEQ_PLT))
-                ALLOCATE(XLOSS(IIU,IJU,IKU,NEQ_PLT))
-                XPROD=0.0
-                XLOSS=0.0
-        ELSE
-                ALLOCATE(XPROD(0,0,0,0))
-                ALLOCATE(XLOSS(0,0,0,0))
-        END IF
+  CALL CH_INIT_PRODLOSSTOT_n(ILUOUT)
+  IF (NEQ_PLT>0) THEN
+    ALLOCATE(XPROD(IIU,IJU,IKU,NEQ_PLT))
+    ALLOCATE(XLOSS(IIU,IJU,IKU,NEQ_PLT))
+    XPROD=0.0
+    XLOSS=0.0
+  ELSE
+    ALLOCATE(XPROD(0,0,0,0))
+    ALLOCATE(XLOSS(0,0,0,0))
+  END IF
 ELSE
-        ALLOCATE(XPROD(0,0,0,0))
-        ALLOCATE(XLOSS(0,0,0,0))
+  ALLOCATE(XPROD(0,0,0,0))
+  ALLOCATE(XLOSS(0,0,0,0))
 END IF
 !
 !-------------------------------------------------------------------------------
@@ -2363,24 +2462,24 @@ END IF
 !*     31. Extended production/loss terms for chemical species
 !
 IF (LCHEMDIAG) THEN
-        CALL CH_INIT_BUDGET_n(ILUOUT)
-        IF (NEQ_BUDGET>0) THEN
-                ALLOCATE(IINDEX(2,NNONZEROTERMS))
-                ALLOCATE(IIND(NEQ_BUDGET))
-                CALL CH_NONZEROTERMS(KMI,IINDEX,NNONZEROTERMS)
-                ALLOCATE(XTCHEM(NEQ_BUDGET))
-                DO JM=1,NEQ_BUDGET
-                        IIND(JM)=COUNT((IINDEX(1,:))==NSPEC_BUDGET(JM))
-                        ALLOCATE(XTCHEM(JM)%NB_REAC(IIND(JM)))
-                        ALLOCATE(XTCHEM(JM)%XB_REAC(IIU,IJU,IKU,IIND(JM)))
-                END DO
-                DEALLOCATE(IIND)
-                DEALLOCATE(IINDEX)
-        ELSE
-                ALLOCATE(XTCHEM(0))
-        END IF
+  CALL CH_INIT_BUDGET_n(ILUOUT)
+  IF (NEQ_BUDGET>0) THEN
+    ALLOCATE(IINDEX(2,NNONZEROTERMS))
+    ALLOCATE(IIND(NEQ_BUDGET))
+    CALL CH_NONZEROTERMS(KMI,IINDEX,NNONZEROTERMS)
+    ALLOCATE(XTCHEM(NEQ_BUDGET))
+    DO JM=1,NEQ_BUDGET
+      IIND(JM)=COUNT((IINDEX(1,:))==NSPEC_BUDGET(JM))
+      ALLOCATE(XTCHEM(JM)%NB_REAC(IIND(JM)))
+      ALLOCATE(XTCHEM(JM)%XB_REAC(IIU,IJU,IKU,IIND(JM)))
+    END DO
+    DEALLOCATE(IIND)
+    DEALLOCATE(IINDEX)
+  ELSE
+    ALLOCATE(XTCHEM(0))
+  END IF
 ELSE
-        ALLOCATE(XTCHEM(0))
+  ALLOCATE(XTCHEM(0))
 END IF
 
 END SUBROUTINE INI_MODEL_n
diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90
index 10730a3ead87e0d0197687351e0b17f8e5ce34fd..83febd489515473d389367fbe943292b2113b7af 100644
--- a/src/MNH/read_field.f90
+++ b/src/MNH/read_field.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-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 for details. version 1.
@@ -237,6 +237,7 @@ END MODULE MODI_READ_FIELD
 !!                   09/2017 Q.Rodier add LTEND_UV_FRC
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!          V. Vionnet  07/17    add blowing snow scheme
+!!          P. Wautelet 01/2019  corrected intent of PDUM,PDVM,PDWM (OUT->INOUT)
 !!-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -319,8 +320,8 @@ INTEGER, INTENT(IN) :: KSIZELBY_ll,KSIZELBYV_ll      ! for T,U,W  and v
 INTEGER, INTENT(IN) :: KSIZELBYTKE_ll                ! for TKE
 INTEGER, INTENT(IN) :: KSIZELBYR_ll,KSIZELBYSV_ll    ! for Rx and SV 
 !
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PUM,PVM,PWM     ! U,V,W at t-dt
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PDUM,PDVM,PDWM  ! Difference on U,V,W 
+REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PUM1,PVM,PWM     ! U,V,W at t-dt
+REAL, DIMENSION(:,:,:),    INTENT(INOUT) :: PDUM,PDVM,PDWM  ! Difference on U,V,W
                                                           ! between t+dt and t-dt
 REAL, DIMENSION(:,:),      INTENT(OUT) :: PBL_DEPTH       ! BL depth
 REAL, DIMENSION(:,:),      INTENT(OUT) :: PSBL_DEPTH      ! SBL depth
diff --git a/src/MNH/set_perturb.f90 b/src/MNH/set_perturb.f90
index 8bc9b5cd66b420741a89315018d4e5aa0972cf82..866feb3ba267c36d0da94fa470cc5856efb5d973 100644
--- a/src/MNH/set_perturb.f90
+++ b/src/MNH/set_perturb.f90
@@ -273,7 +273,7 @@ SELECT CASE(CPERT_KIND)
     END DO
 !
     CALL MPPDB_CHECK3D(ZDIST,"SET_PERTURB::ZDIST",PRECISION)
-    CALL MPPDB_CHECK3D(XTHM,"SET_PERTURB::XTHM",PRECISION)
+    !CALL MPPDB_CHECK3D(XTHM,"SET_PERTURB::XTHM",PRECISION)
 !
     IF ( LSET_RHU) THEN
        ZT(:,:,:)  = 0.0
@@ -309,7 +309,7 @@ SELECT CASE(CPERT_KIND)
       END WHERE
     END IF
     CALL MPPDB_CHECK3D(XRT(:,:,:,1),"SET_PERTURB::XRT",PRECISION)
-    CALL MPPDB_CHECK3D(XTHM,"SET_PERTURB::XTHM",PRECISION)
+    !CALL MPPDB_CHECK3D(XTHM,"SET_PERTURB::XTHM",PRECISION)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/write_aircraft_balloon.f90 b/src/MNH/write_aircraft_balloon.f90
index b9cd28388de27506234212a38328f53fd73c7f19..3d021974a57dffa07db073440be563f808af62be 100644
--- a/src/MNH/write_aircraft_balloon.f90
+++ b/src/MNH/write_aircraft_balloon.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2000-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-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.
 !-----------------------------------------------------------------
 !      ###########################
@@ -63,9 +63,10 @@ END MODULE MODI_WRITE_AIRCRAFT_BALLOON
 !!     Oct 2016 : G.Delautier LIMA
 !!     August 2016 (M.Leriche) Add mass concentration of aerosol species
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!     P. Wautelet 29/01/2019: bug: moved an instruction later (to prevent access to a not allocated array)
 !!
 !! --------------------------------------------------------------------------
-!       
+!
 !*      0. DECLARATIONS
 !          ------------
 !
@@ -210,12 +211,12 @@ INTEGER :: JLOOP
 !
 !----------------------------------------------------------------------------
 !
-IKU = SIZE(TPFLYER%RTZ,2)    !number of vertical levels           
 IF (TPFLYER%NMODEL==0) RETURN
 IF (ALL(TPFLYER%X==XUNDEF)) RETURN
 IF (COUNT(TPFLYER%X/=XUNDEF)<=1) RETURN
 IF ( IMI /= TPFLYER%NMODEL ) RETURN
 !
+IKU = SIZE(TPFLYER%RTZ,2) !number of vertical levels
 !
 IPROC = 20 + SIZE(TPFLYER%R,2) + SIZE(TPFLYER%SV,2) &
        + 2 + SIZE(TPFLYER%SVW_FLUX,2)