diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90
index 7733f166ec10cdb028fc96abed55c88e33659dca..5d63465498cde75cdc78c12a12c30657478c580c 100644
--- a/src/MNH/ini_prog_var.f90
+++ b/src/MNH/ini_prog_var.f90
@@ -1,475 +1,475 @@
-!MNH_LIC Copyright 1994-2014 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.
-!-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 prep_real 2006/09/25 14:23:42
-!-----------------------------------------------------------------
-!     ########################
-      MODULE MODI_INI_PROG_VAR
-!     ########################
-INTERFACE
-      SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE)
-!
-CHARACTER(LEN=*), INTENT(IN)       :: HLUOUT      ! Name of the output-listing
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTKE_MX
-REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX
-CHARACTER(LEN=*), INTENT(IN), OPTIONAL  :: HCHEMFILE  ! Name of the chem file
-END SUBROUTINE INI_PROG_VAR
-END INTERFACE
-END MODULE MODI_INI_PROG_VAR
-!
-!     ########################################################
-      SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE)
-!     ########################################################
-!
-!!****  *INI_PROG_VAR* - initialization the prognostic variables not yet 
-!!                       initialized
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!    This routine initializes the scalar variables to zero.
-!!    This routine duplicates the values of a variable at t in MODD_FIELD1
-!!    or MODD_LSFIELD1 in the variables at t.
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!      Routine PGDFILTER      : to filter a 2D field.
-!!      Module  MODI_PGDFILTER
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!      Module MODD_CONF      : contains configuration variables for all models.
-!!         NVERB   : verbosity level for output-listing
-!!      Module MODD_LUNIT     :  contains logical unit names for all models
-!!         CLUOUT0 : name of output-listing
-!!      Module MODD_FIELD1    : contains the prognostic fields of model1
-!!         XUM
-!!         XVM
-!!         XWM
-!!         XTHM
-!!         XRM
-!!      Module MODD_LSFIELD1
-!!         XLSUM
-!!         XLSVM
-!!         XLSWM
-!!         XLSTHM
-!!         XLSRVM
-!!      Module MODD_DYN1
-!!         NRIMX,NRIMY
-!!   
-!!    REFERENCE
-!!    ---------
-!!
-!!      Book 2
-!!
-!!    AUTHOR
-!!    ------
-!!	
-!!      V.Masson  Meteo-France
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    21/12/94
-!!                  14/05/96 (V. Masson) filtering of LS fields
-!!                  08/01/97 (V. Masson) no filtering for boundaries on XLSWM
-!!                  10/07/97 (V. Masson) add tke and epsilon
-!!                  11/07/97 (V. Masson) add scalar variables
-!!                  20/01/98 (J. Stein ) add the lB fields + remove the 2Dx filter
-!!                  20/08/90 (J. Stein and P. Jabouille) add the SIZE of the LB
-!!                           fields
-!!                  01/02/01 (D. Gazen) add module MODD_NSV for NSV variable
-!!                  May 2006    Remove KEPS
-!!                  02/11/09 (M. Leriche) add aqueous phase chemistry
-!!                  Oct 2010 (P. Tulet) input of chemical gas, dusts 
-!!                                      and sea salts concentration from 
-!!                                      another MesoNH simulation
-!!                  Aug 2012 (J.-P. Chaboureau) read the chem-file descriptor
-!!                  Fev 2015  (J.-P. Chaboureau) read instant T insteed of M
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-!
-USE MODD_CONF  ! declaration modules
-USE MODD_CONF_n
-USE MODD_DYN_n
-USE MODD_TURB_n
-USE MODD_PARAM_n
-USE MODD_LUNIT
-USE MODD_FIELD_n
-USE MODD_LSFIELD_n
-USE MODD_PARAMETERS
-USE MODD_NSV
-USE MODD_CH_M9_n, ONLY : NEQ, CNAMES
-USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, LCH_PH 
-USE MODD_CH_AEROSOL
-USE MODD_DUST
-USE MODD_SALT
-!
-USE MODN_DUST
-USE MODN_SALT
-!
-USE MODI_PGDFILTER
-USE MODI_CH_INIT_SCHEME_n
-USE MODI_CH_AER_INIT_SOA
-!
-USE MODE_POS
-USE MODE_FM
-USE MODE_IO_ll
-USE MODE_FMREAD
-USE MODD_DIM_n
-!
-IMPLICIT NONE
-!
-!*       0.1   declaration of arguments
-!
-CHARACTER(LEN=*), INTENT(IN)       :: HLUOUT      ! Name of the output-listing
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTKE_MX
-REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX
-CHARACTER(LEN=*), INTENT(IN), OPTIONAL  :: HCHEMFILE  ! Name of the chem file
-!
-!*       0.2   declaration of local variables
-!
-INTEGER                :: ILUOUT                     !  Logical unit number
-                                                     ! associated with HLUOUT 
-INTEGER                :: IGRID,ILENCH,IRESP,ININAR      !  File 
-CHARACTER (LEN=16)     :: YRECFM                               ! management
-CHARACTER (LEN=100)    :: YCOMMENT                             ! variables 
-CHARACTER(LEN=2)       :: YDIR 
-CHARACTER(LEN=32)      :: YDESFM
-!
-INTEGER                :: IIMAX,IJMAX,IKMAX       !  Dimensions of the chem file
-INTEGER :: IMI ! model number
-INTEGER :: IIB,IIE,IIU
-INTEGER :: IJB,IJE,IJU
-INTEGER :: IIU_ll, IJU_ll
-INTEGER :: IKU
-INTEGER :: ILBX,ILBY
-INTEGER :: JSV   ! Loop index
-INTEGER :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX  ! dust modes
-INTEGER :: ILUDES                         !  logical unit numbers of DESFM file
-LOGICAL :: GFOUND                         ! Return code when searching namelist
-!-------------------------------------------------------------------------------
-!
-CALL GET_MODEL_NUMBER_ll(IMI)
-CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
-!
-IIB=JPHEXT+1
-IIE=SIZE(XWT,1)-JPHEXT
-IIU=SIZE(XWT,1)
-IJB=JPHEXT+1
-IJE=SIZE(XWT,2)-JPHEXT
-IJU=SIZE(XWT,2)
-IKU=SIZE(XWT,3)
-IIU_ll=NIMAX_ll + 2 * JPHEXT
-IJU_ll=NJMAX_ll + 2 * JPHEXT
-!-------------------------------------------------------------------------------
-!
-!*       1.    TURBULENCE FIELDS
-!              -----------------
-!
-ALLOCATE(XTKET(0,0,0))
-ALLOCATE(XSRCT(0,0,0))
-IF (CTURB=='TKEL' ) THEN
-  ALLOCATE(XTKET(IIU,IJU,IKU))
-  XTKET(:,:,:)=PTKE_MX(:,:,:)
-  IF (NRR>1) THEN
-    ALLOCATE(XSRCT(IIU,IJU,IKU))
-    ALLOCATE(XSIGS(IIU,IJU,IKU))
-    WHERE (XRT(:,:,:,2)>1.E-10)
-      XSRCT(:,:,:)=1.
-    ELSEWHERE
-      XSRCT(:,:,:)=0.
-    END WHERE
-    XSIGS(:,:,:)=0.
-  ELSE
-    ALLOCATE(XSRCT(0,0,0))
-    ALLOCATE(XSIGS(0,0,0))
-  END IF
-ELSE
-  ALLOCATE(XTKET(0,0,0))
-  ALLOCATE(XSRCT(0,0,0))
-  ALLOCATE(XSIGS(0,0,0))
-END IF
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.    PASSIVE SCALAR
-!              --------------
-!
-ALLOCATE(XSVT(0,0,0,0))
-IF(PRESENT(HCHEMFILE)) THEN
-  WRITE(ILUOUT,*) 'Routine INI_PROG_VAR: CHEMical species read in ',TRIM(HCHEMFILE)
-
-  IF (.NOT.LDUST) THEN
-  ! Always initialize chemical scheme variables before INI_NSV call !
-    CALL CH_INIT_SCHEME_n(IMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB)
-! Question CL : Maud a supprime l appel a CH_INIT_CCS ?
-    LUSECHEM = .TRUE.
-  END IF
-  IF (LORILAM) THEN
-    CORGANIC = "MPMPO"
-    LVARSIGI = .TRUE.
-    LVARSIGJ = .TRUE.
-    CALL CH_AER_INIT_SOA(ILUOUT,NVERB)
-  END IF ! lorilam
-  ! initialise NSV_* variables
-  CALL INI_NSV(1)
-  ALLOCATE(XSVT(IIU,IJU,IKU,NSV))
-  ! Read dimensions in chem file and checks with output file
-  CALL FMOPEN_ll(HCHEMFILE,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP)
-  YRECFM='IMAX'
-  YDIR='--'
-  CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IIMAX,IGRID,ILENCH,         &
-              YCOMMENT,IRESP)
-  IF (IRESP/=0) THEN
-    WRITE(ILUOUT,FMT=9000) 
-    WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-   !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
-  END IF !IRESP
-  YRECFM='JMAX'
-  YDIR='--'
-  CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IJMAX,IGRID,ILENCH,         &
-              YCOMMENT,IRESP)
-  IF (IRESP/=0) THEN
-    WRITE(ILUOUT,FMT=9000) 
-    WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-!callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
-  END IF !IRESP
-  YRECFM='KMAX'
-  YDIR='--'
-  CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IKMAX,IGRID,ILENCH,         &
-              YCOMMENT,IRESP)
-  IF (IRESP/=0) THEN
-    WRITE(ILUOUT,FMT=9000) 
-    WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-!callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
-  END IF !IRESP
-  IF ( (IIMAX/=(IIU_ll-2*JPHEXT)) .OR. (IJMAX/=(IJU_ll-2*JPHEXT))      &
-                                  .OR. (IKMAX/=(IKU-2*JPVEXT)) ) THEN
-    WRITE(ILUOUT,FMT=9000) 
-    WRITE(ILUOUT,*) 'THE GRIDS ARE DIFFERENT IN THE OUTPUT FILE :'
-    WRITE(ILUOUT,*) IIU_ll-2*JPHEXT,'*',IJU_ll-2*JPHEXT,'*',IKU-2*JPVEXT
-    WRITE(ILUOUT,*) 'AND IN THE CHEM FILE :',HCHEMFILE
-    WRITE(ILUOUT,*) IIMAX,'*',IJMAX,'*',IKMAX
-    !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
-  END IF ! IIMAX
-  IF (.NOT.LDUST) THEN
-  ! Read scalars in chem file 
-    DO JSV = NSV_CHEMBEG,NSV_CHEMEND
-      YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'T'
-      YDIR='XY'
-      CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
-                  YCOMMENT,IRESP)
-      IF (IRESP/=0) THEN
-        WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-        XSVT(:,:,:,JSV) = 0.
-      END IF !IRESP
-    END DO ! JSV
-    IF (ALL(XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) == 0.)) THEN 
-      LUSECHEM=.FALSE.
-      NEQ = 0
-    END IF
-  END IF
-
-  IF (LDUST) THEN
-    LDSTINIT=.TRUE.
-    LDSTPRES=.FALSE.
-    YDESFM=TRIM(ADJUSTL(HCHEMFILE))//'.des'
-    CALL FMLOOK_ll(YDESFM,HLUOUT,ILUDES,IRESP)
-    CALL POSNAM(ILUDES,'NAM_DUST',GFOUND,ILUOUT)
-    IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_DUST)
-    CALL INI_NSV(1)
-    IMOMENTS = INT(NSV_DSTEND - NSV_DSTBEG+1)/NMODE_DST
-    IF (IMOMENTS == 1) THEN
-      DO JMODE=1, NMODE_DST
-        !Index from which names are picked
-        ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + 2
-        JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
-             +  1                 & !Number of moments in this mode
-             + (NSV_DSTBEG -1)      !Previous list of tracers  
-        YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T'
-        YDIR='XY'
-        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
-                    YCOMMENT,IRESP)
-        IF (IRESP/=0) THEN
-          WRITE(ILUOUT,FMT=9000) 
-          WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-          CALL ABORT
-          STOP
-        END IF !IRESP
-      END DO !JMOD
-    ELSE  ! IMOMENTS diff 1
-      DO JMODE=1,NMODE_DST
-        DO JMOM=1,IMOMENTS
-          ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + JMOM
-          JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
-               + JMOM               & !Number of moments in this mode
-               + (NSV_DSTBEG -1)      !Previous list of tracers
-          YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T'
-          YDIR='XY'
-          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
-                      YCOMMENT,IRESP)
-          IF (IRESP/=0) THEN
-            WRITE(ILUOUT,FMT=9000) 
-            WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-            STOP
-          END IF !IRESP
-        END DO ! JMOM
-      END DO !JMOD
-    END IF !if IMOMENTS    
-  END IF  ! LDUST
-
-  IF (LSALT) THEN
-    LSLTINIT=.TRUE.
-    LSLTPRES=.FALSE.
-    CALL POSNAM(ILUDES,'NAM_SALT',GFOUND,ILUOUT)
-    IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_SALT)
-    CALL INI_NSV(1)
-    IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG+1)/NMODE_SLT
-    IF (IMOMENTS == 1) THEN
-      DO JMODE=1, NMODE_SLT
-        !Index from which names are picked
-        ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + 2
-        JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
-             +  1                 & !Number of moments in this mode
-             + (NSV_SLTBEG -1)      !Previous list of tracers  
-        YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'
-        YDIR='XY'
-        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
-                    YCOMMENT,IRESP)
-        IF (IRESP/=0) THEN
-          WRITE(ILUOUT,FMT=9000) 
-          WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-          CALL ABORT
-          STOP
-        END IF !IRESP
-      END DO !JMOD
-    ELSE  ! IMOMENTS
-      DO JMODE=1,NMODE_SLT
-        DO JMOM=1,IMOMENTS
-          ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + JMOM
-          JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
-               + JMOM               & !Number of moments in this mode
-               + (NSV_SLTBEG -1)      !Previous list of tracers
-          YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'
-          YDIR='XY'
-          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
-                      YCOMMENT,IRESP)
-          IF (IRESP/=0) THEN
-            WRITE(ILUOUT,FMT=9000) 
-            WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-            STOP
-          END IF !IRESP
-        END DO ! JMOM
-      END DO !JMOD
-    END IF !if IMOMENTS    
-  END IF  ! LSALT
-
-  DO JSV = NSV_AERBEG,NSV_AEREND
-    YRECFM=TRIM(CAERONAMES(JSV-NSV_AERBEG+1))//'T'
-    YDIR='XY'
-    CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
-                YCOMMENT,IRESP)
-    IF (IRESP/=0) THEN
-      WRITE(ILUOUT,FMT=9000) 
-      WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-!callabortstop
-!CALL ABORT
-!      STOP
-      LORILAM=.FALSE.
-    END IF !IRESP
-  END DO ! JSV
-  CALL FMCLOS_ll(HCHEMFILE,'KEEP',HLUOUT,IRESP)
-
-ELSE ! HCHEMFILE
-  IF (NSV >=1) THEN
-    ALLOCATE(XSVT(IIU,IJU,IKU,NSV))
-    XSVT(:,:,:,:)=PSV_MX(:,:,:,:)
-  ELSE !NSV
-    ALLOCATE(XSVT(0,0,0,0))
-  END IF ! NSV
-ENDIF ! HCHEMFILE
-!-------------------------------------------------------------------------------
-!
-!*       4.    2D LARGE SCALE FIELDS FOR LBC
-!              -----------------------------
-!
-!
-IF (CTURB /= 'NONE') THEN
-  IF ( LHORELAX_TKE) THEN
-    ALLOCATE(XLBXTKEM(2*NRIMX+2,IJU,IKU))
-    ALLOCATE(XLBYTKEM(IIU,2*NRIMY+2,IKU))
-  ELSE
-    ALLOCATE(XLBXTKEM(2,IJU,IKU))
-    ALLOCATE(XLBYTKEM(IIU,2,IKU))
-  END IF 
-  !       
-  ILBX=SIZE(XLBXTKEM,1)/2-1     
-  XLBXTKEM(1:ILBX+1,:,:)         = XTKET(IIB-1:IIB-1+ILBX,:,:)
-  XLBXTKEM(ILBX+2:2*ILBX+2,:,:)  = XTKET(IIE+1-ILBX:IIE+1,:,:)
-  ILBY=SIZE(XLBYTKEM,2)/2-1
-  XLBYTKEM(:,1:ILBY+1,:)        = XTKET(:,IJB-1:IJB-1+ILBY,:)
-  XLBYTKEM(:,ILBY+2:2*ILBY+2,:) = XTKET(:,IJE+1-ILBY:IJE+1,:)
-ELSE
-  ALLOCATE(XLBXTKEM(0,0,0))
-  ALLOCATE(XLBYTKEM(0,0,0))
-END IF  
-!
-IF ( NSV > 0 ) THEN 
-  IF ( ANY( LHORELAX_SV(:)) ) THEN
-    ALLOCATE(XLBXSVM(2*NRIMX+2,IJU,IKU,NSV))
-    ALLOCATE(XLBYSVM(IIU,2*NRIMY+2,IKU,NSV))
-  ELSE
-    ALLOCATE(XLBXSVM(2,IJU,IKU,NSV))
-    ALLOCATE(XLBYSVM(IIU,2,IKU,NSV))
-  END IF
-  !       
-  ILBX=SIZE(XLBXSVM,1)/2-1     
-  XLBXSVM(1:ILBX+1,:,:,:)         = XSVT(IIB-1:IIB-1+ILBX,:,:,:)
-  XLBXSVM(ILBX+2:2*ILBX+2,:,:,:)  = XSVT(IIE+1-ILBX:IIE+1,:,:,:)
-  ILBY=SIZE(XLBYSVM,2)/2-1
-  XLBYSVM(:,1:ILBY+1,:,:)        = XSVT(:,IJB-1:IJB-1+ILBY,:,:)
-  XLBYSVM(:,ILBY+2:2*ILBY+2,:,:) = XSVT(:,IJE+1-ILBY:IJE+1,:,:)
-ELSE
-  ALLOCATE(XLBXSVM(0,0,0,0))
-  ALLOCATE(XLBYSVM(0,0,0,0))
-END IF
-!
-!
-NSIZELBXTKE_ll=SIZE(XLBXTKEM,1)
-NSIZELBYTKE_ll=SIZE(XLBYTKEM,2)
-NSIZELBXSV_ll =SIZE(XLBXSVM,1)
-NSIZELBYSV_ll =SIZE(XLBYSVM,2)
-!
-!-------------------------------------------------------------------------------
-9000  FORMAT(/,'FATAL ERROR IN INI_PROG_VAR : ',/, &
-             '--------------------------------------' )
-!
-END SUBROUTINE INI_PROG_VAR
+!MNH_LIC Copyright 1994-2014 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.
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source$ $Revision$
+! MASDEV4_7 prep_real 2006/09/25 14:23:42
+!-----------------------------------------------------------------
+!     ########################
+      MODULE MODI_INI_PROG_VAR
+!     ########################
+INTERFACE
+      SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE)
+!
+CHARACTER(LEN=*), INTENT(IN)       :: HLUOUT      ! Name of the output-listing
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTKE_MX
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX
+CHARACTER(LEN=*), INTENT(IN), OPTIONAL  :: HCHEMFILE  ! Name of the chem file
+END SUBROUTINE INI_PROG_VAR
+END INTERFACE
+END MODULE MODI_INI_PROG_VAR
+!
+!     ########################################################
+      SUBROUTINE INI_PROG_VAR(HLUOUT,PTKE_MX,PSV_MX,HCHEMFILE)
+!     ########################################################
+!
+!!****  *INI_PROG_VAR* - initialization the prognostic variables not yet 
+!!                       initialized
+!!
+!!    PURPOSE
+!!    -------
+!!
+!!    This routine initializes the scalar variables to zero.
+!!    This routine duplicates the values of a variable at t in MODD_FIELD1
+!!    or MODD_LSFIELD1 in the variables at t.
+!!
+!!**  METHOD
+!!    ------
+!!
+!!    EXTERNAL
+!!    --------
+!!
+!!      Routine PGDFILTER      : to filter a 2D field.
+!!      Module  MODI_PGDFILTER
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!
+!!      Module MODD_CONF      : contains configuration variables for all models.
+!!         NVERB   : verbosity level for output-listing
+!!      Module MODD_LUNIT     :  contains logical unit names for all models
+!!         CLUOUT0 : name of output-listing
+!!      Module MODD_FIELD1    : contains the prognostic fields of model1
+!!         XUM
+!!         XVM
+!!         XWM
+!!         XTHM
+!!         XRM
+!!      Module MODD_LSFIELD1
+!!         XLSUM
+!!         XLSVM
+!!         XLSWM
+!!         XLSTHM
+!!         XLSRVM
+!!      Module MODD_DYN1
+!!         NRIMX,NRIMY
+!!   
+!!    REFERENCE
+!!    ---------
+!!
+!!      Book 2
+!!
+!!    AUTHOR
+!!    ------
+!!	
+!!      V.Masson  Meteo-France
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    21/12/94
+!!                  14/05/96 (V. Masson) filtering of LS fields
+!!                  08/01/97 (V. Masson) no filtering for boundaries on XLSWM
+!!                  10/07/97 (V. Masson) add tke and epsilon
+!!                  11/07/97 (V. Masson) add scalar variables
+!!                  20/01/98 (J. Stein ) add the lB fields + remove the 2Dx filter
+!!                  20/08/90 (J. Stein and P. Jabouille) add the SIZE of the LB
+!!                           fields
+!!                  01/02/01 (D. Gazen) add module MODD_NSV for NSV variable
+!!                  May 2006    Remove KEPS
+!!                  02/11/09 (M. Leriche) add aqueous phase chemistry
+!!                  Oct 2010 (P. Tulet) input of chemical gas, dusts 
+!!                                      and sea salts concentration from 
+!!                                      another MesoNH simulation
+!!                  Aug 2012 (J.-P. Chaboureau) read the chem-file descriptor
+!!                  Fev 2015  (J.-P. Chaboureau) read instant T insteed of M
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+!
+USE MODD_CONF  ! declaration modules
+USE MODD_CONF_n
+USE MODD_DYN_n
+USE MODD_TURB_n
+USE MODD_PARAM_n
+USE MODD_LUNIT
+USE MODD_FIELD_n
+USE MODD_LSFIELD_n
+USE MODD_PARAMETERS
+USE MODD_NSV
+USE MODD_CH_M9_n, ONLY : NEQ, CNAMES
+USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, LCH_PH 
+USE MODD_CH_AEROSOL
+USE MODD_DUST
+USE MODD_SALT
+!
+USE MODN_DUST
+USE MODN_SALT
+!
+USE MODI_PGDFILTER
+USE MODI_CH_INIT_SCHEME_n
+USE MODI_CH_AER_INIT_SOA
+!
+USE MODE_POS
+USE MODE_FM
+USE MODE_IO_ll
+USE MODE_FMREAD
+USE MODD_DIM_n
+!
+IMPLICIT NONE
+!
+!*       0.1   declaration of arguments
+!
+CHARACTER(LEN=*), INTENT(IN)       :: HLUOUT      ! Name of the output-listing
+REAL, DIMENSION(:,:,:),   INTENT(IN) :: PTKE_MX
+REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSV_MX
+CHARACTER(LEN=*), INTENT(IN), OPTIONAL  :: HCHEMFILE  ! Name of the chem file
+!
+!*       0.2   declaration of local variables
+!
+INTEGER                :: ILUOUT                     !  Logical unit number
+                                                     ! associated with HLUOUT 
+INTEGER                :: IGRID,ILENCH,IRESP,ININAR      !  File 
+CHARACTER (LEN=16)     :: YRECFM                               ! management
+CHARACTER (LEN=100)    :: YCOMMENT                             ! variables 
+CHARACTER(LEN=2)       :: YDIR 
+CHARACTER(LEN=32)      :: YDESFM
+!
+INTEGER                :: IIMAX,IJMAX,IKMAX       !  Dimensions of the chem file
+INTEGER :: IMI ! model number
+INTEGER :: IIB,IIE,IIU
+INTEGER :: IJB,IJE,IJU
+INTEGER :: IIU_ll, IJU_ll
+INTEGER :: IKU
+INTEGER :: ILBX,ILBY
+INTEGER :: JSV   ! Loop index
+INTEGER :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX  ! dust modes
+INTEGER :: ILUDES                         !  logical unit numbers of DESFM file
+LOGICAL :: GFOUND                         ! Return code when searching namelist
+!-------------------------------------------------------------------------------
+!
+CALL GET_MODEL_NUMBER_ll(IMI)
+CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
+!
+IIB=JPHEXT+1
+IIE=SIZE(XWT,1)-JPHEXT
+IIU=SIZE(XWT,1)
+IJB=JPHEXT+1
+IJE=SIZE(XWT,2)-JPHEXT
+IJU=SIZE(XWT,2)
+IKU=SIZE(XWT,3)
+IIU_ll=NIMAX_ll + 2 * JPHEXT
+IJU_ll=NJMAX_ll + 2 * JPHEXT
+!-------------------------------------------------------------------------------
+!
+!*       1.    TURBULENCE FIELDS
+!              -----------------
+!
+ALLOCATE(XTKET(0,0,0))
+ALLOCATE(XSRCT(0,0,0))
+IF (CTURB=='TKEL' ) THEN
+  ALLOCATE(XTKET(IIU,IJU,IKU))
+  XTKET(:,:,:)=PTKE_MX(:,:,:)
+  IF (NRR>1) THEN
+    ALLOCATE(XSRCT(IIU,IJU,IKU))
+    ALLOCATE(XSIGS(IIU,IJU,IKU))
+    WHERE (XRT(:,:,:,2)>1.E-10)
+      XSRCT(:,:,:)=1.
+    ELSEWHERE
+      XSRCT(:,:,:)=0.
+    END WHERE
+    XSIGS(:,:,:)=0.
+  ELSE
+    ALLOCATE(XSRCT(0,0,0))
+    ALLOCATE(XSIGS(0,0,0))
+  END IF
+ELSE
+  ALLOCATE(XTKET(0,0,0))
+  ALLOCATE(XSRCT(0,0,0))
+  ALLOCATE(XSIGS(0,0,0))
+END IF
+!
+!
+!-------------------------------------------------------------------------------
+!
+!*       3.    PASSIVE SCALAR
+!              --------------
+!
+ALLOCATE(XSVT(0,0,0,0))
+IF(PRESENT(HCHEMFILE)) THEN
+  WRITE(ILUOUT,*) 'Routine INI_PROG_VAR: CHEMical species read in ',TRIM(HCHEMFILE)
+
+  IF (.NOT.LDUST) THEN
+  ! Always initialize chemical scheme variables before INI_NSV call !
+    CALL CH_INIT_SCHEME_n(IMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB)
+! Question CL : Maud a supprime l appel a CH_INIT_CCS ?
+    LUSECHEM = .TRUE.
+  END IF
+  IF (LORILAM) THEN
+    CORGANIC = "MPMPO"
+    LVARSIGI = .TRUE.
+    LVARSIGJ = .TRUE.
+    CALL CH_AER_INIT_SOA(ILUOUT,NVERB)
+  END IF ! lorilam
+  ! initialise NSV_* variables
+  CALL INI_NSV(1)
+  ALLOCATE(XSVT(IIU,IJU,IKU,NSV))
+  ! Read dimensions in chem file and checks with output file
+  CALL FMOPEN_ll(HCHEMFILE,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP)
+  YRECFM='IMAX'
+  YDIR='--'
+  CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IIMAX,IGRID,ILENCH,         &
+              YCOMMENT,IRESP)
+  IF (IRESP/=0) THEN
+    WRITE(ILUOUT,FMT=9000) 
+    WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+   !callabortstop
+    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
+    CALL ABORT
+    STOP
+  END IF !IRESP
+  YRECFM='JMAX'
+  YDIR='--'
+  CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IJMAX,IGRID,ILENCH,         &
+              YCOMMENT,IRESP)
+  IF (IRESP/=0) THEN
+    WRITE(ILUOUT,FMT=9000) 
+    WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+!callabortstop
+    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
+    CALL ABORT
+    STOP
+  END IF !IRESP
+  YRECFM='KMAX'
+  YDIR='--'
+  CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,IKMAX,IGRID,ILENCH,         &
+              YCOMMENT,IRESP)
+  IF (IRESP/=0) THEN
+    WRITE(ILUOUT,FMT=9000) 
+    WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+!callabortstop
+    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
+    CALL ABORT
+    STOP
+  END IF !IRESP
+  IF ( (IIMAX/=(IIU_ll-2*JPHEXT)) .OR. (IJMAX/=(IJU_ll-2*JPHEXT))      &
+                                  .OR. (IKMAX/=(IKU-2*JPVEXT)) ) THEN
+    WRITE(ILUOUT,FMT=9000) 
+    WRITE(ILUOUT,*) 'THE GRIDS ARE DIFFERENT IN THE OUTPUT FILE :'
+    WRITE(ILUOUT,*) IIU_ll-2*JPHEXT,'*',IJU_ll-2*JPHEXT,'*',IKU-2*JPVEXT
+    WRITE(ILUOUT,*) 'AND IN THE CHEM FILE :',HCHEMFILE
+    WRITE(ILUOUT,*) IIMAX,'*',IJMAX,'*',IKMAX
+    !callabortstop
+    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
+    CALL ABORT
+    STOP
+  END IF ! IIMAX
+  IF (.NOT.LDUST) THEN
+  ! Read scalars in chem file 
+    DO JSV = NSV_CHEMBEG,NSV_CHEMEND
+      YRECFM=TRIM(CNAMES(JSV-NSV_CHEMBEG+1))//'T'
+      YDIR='XY'
+      CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+                  YCOMMENT,IRESP)
+      IF (IRESP/=0) THEN
+        WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+        XSVT(:,:,:,JSV) = 0.
+      END IF !IRESP
+    END DO ! JSV
+    IF (ALL(XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND) == 0.)) THEN 
+      LUSECHEM=.FALSE.
+      NEQ = 0
+    END IF
+  END IF
+
+  IF (LDUST) THEN
+    LDSTINIT=.TRUE.
+    LDSTPRES=.FALSE.
+    YDESFM=TRIM(ADJUSTL(HCHEMFILE))//'.des'
+    CALL FMLOOK_ll(YDESFM,HLUOUT,ILUDES,IRESP)
+    CALL POSNAM(ILUDES,'NAM_DUST',GFOUND,ILUOUT)
+    IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_DUST)
+    CALL INI_NSV(1)
+    IMOMENTS = INT(NSV_DSTEND - NSV_DSTBEG+1)/NMODE_DST
+    IF (IMOMENTS == 1) THEN
+      DO JMODE=1, NMODE_DST
+        !Index from which names are picked
+        ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + 2
+        JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
+             +  1                 & !Number of moments in this mode
+             + (NSV_DSTBEG -1)      !Previous list of tracers  
+        YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T'
+        YDIR='XY'
+        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+                    YCOMMENT,IRESP)
+        IF (IRESP/=0) THEN
+          WRITE(ILUOUT,FMT=9000) 
+          WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
+          CALL ABORT
+          STOP
+        END IF !IRESP
+      END DO !JMOD
+    ELSE  ! IMOMENTS diff 1
+      DO JMODE=1,NMODE_DST
+        DO JMOM=1,IMOMENTS
+          ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + JMOM
+          JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
+               + JMOM               & !Number of moments in this mode
+               + (NSV_DSTBEG -1)      !Previous list of tracers
+          YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T'
+          YDIR='XY'
+          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+                      YCOMMENT,IRESP)
+          IF (IRESP/=0) THEN
+            WRITE(ILUOUT,FMT=9000) 
+            WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+            STOP
+          END IF !IRESP
+        END DO ! JMOM
+      END DO !JMOD
+    END IF !if IMOMENTS    
+  END IF  ! LDUST
+
+  IF (LSALT) THEN
+    LSLTINIT=.TRUE.
+    LSLTPRES=.FALSE.
+    CALL POSNAM(ILUDES,'NAM_SALT',GFOUND,ILUOUT)
+    IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_SALT)
+    CALL INI_NSV(1)
+    IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG+1)/NMODE_SLT
+    IF (IMOMENTS == 1) THEN
+      DO JMODE=1, NMODE_SLT
+        !Index from which names are picked
+        ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + 2
+        JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
+             +  1                 & !Number of moments in this mode
+             + (NSV_SLTBEG -1)      !Previous list of tracers  
+        YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'
+        YDIR='XY'
+        CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+                    YCOMMENT,IRESP)
+        IF (IRESP/=0) THEN
+          WRITE(ILUOUT,FMT=9000) 
+          WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
+          CALL ABORT
+          STOP
+        END IF !IRESP
+      END DO !JMOD
+    ELSE  ! IMOMENTS
+      DO JMODE=1,NMODE_SLT
+        DO JMOM=1,IMOMENTS
+          ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + JMOM
+          JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
+               + JMOM               & !Number of moments in this mode
+               + (NSV_SLTBEG -1)      !Previous list of tracers
+          YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'
+          YDIR='XY'
+          CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+                      YCOMMENT,IRESP)
+          IF (IRESP/=0) THEN
+            WRITE(ILUOUT,FMT=9000) 
+            WRITE(ILUOUT,*) TRIM(YRECFM),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+            STOP
+          END IF !IRESP
+        END DO ! JMOM
+      END DO !JMOD
+    END IF !if IMOMENTS    
+  END IF  ! LSALT
+
+  DO JSV = NSV_AERBEG,NSV_AEREND
+    YRECFM=TRIM(CAERONAMES(JSV-NSV_AERBEG+1))//'T'
+    YDIR='XY'
+    CALL FMREAD(HCHEMFILE,YRECFM,HLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+                YCOMMENT,IRESP)
+    IF (IRESP/=0) THEN
+      WRITE(ILUOUT,FMT=9000) 
+      WRITE(ILUOUT,*) TRIM(YRECFM),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+!callabortstop
+!CALL ABORT
+!      STOP
+      LORILAM=.FALSE.
+    END IF !IRESP
+  END DO ! JSV
+  CALL FMCLOS_ll(HCHEMFILE,'KEEP',HLUOUT,IRESP)
+
+ELSE ! HCHEMFILE
+  IF (NSV >=1) THEN
+    ALLOCATE(XSVT(IIU,IJU,IKU,NSV))
+    XSVT(:,:,:,:)=PSV_MX(:,:,:,:)
+  ELSE !NSV
+    ALLOCATE(XSVT(0,0,0,0))
+  END IF ! NSV
+ENDIF ! HCHEMFILE
+!-------------------------------------------------------------------------------
+!
+!*       4.    2D LARGE SCALE FIELDS FOR LBC
+!              -----------------------------
+!
+!
+IF (CTURB /= 'NONE') THEN
+  IF ( LHORELAX_TKE) THEN
+    ALLOCATE(XLBXTKEM(2*NRIMX+2,IJU,IKU))
+    ALLOCATE(XLBYTKEM(IIU,2*NRIMY+2,IKU))
+  ELSE
+    ALLOCATE(XLBXTKEM(2,IJU,IKU))
+    ALLOCATE(XLBYTKEM(IIU,2,IKU))
+  END IF 
+  !       
+  ILBX=SIZE(XLBXTKEM,1)/2-1     
+  XLBXTKEM(1:ILBX+1,:,:)         = XTKET(IIB-1:IIB-1+ILBX,:,:)
+  XLBXTKEM(ILBX+2:2*ILBX+2,:,:)  = XTKET(IIE+1-ILBX:IIE+1,:,:)
+  ILBY=SIZE(XLBYTKEM,2)/2-1
+  XLBYTKEM(:,1:ILBY+1,:)        = XTKET(:,IJB-1:IJB-1+ILBY,:)
+  XLBYTKEM(:,ILBY+2:2*ILBY+2,:) = XTKET(:,IJE+1-ILBY:IJE+1,:)
+ELSE
+  ALLOCATE(XLBXTKEM(0,0,0))
+  ALLOCATE(XLBYTKEM(0,0,0))
+END IF  
+!
+IF ( NSV > 0 ) THEN 
+  IF ( ANY( LHORELAX_SV(:)) ) THEN
+    ALLOCATE(XLBXSVM(2*NRIMX+2,IJU,IKU,NSV))
+    ALLOCATE(XLBYSVM(IIU,2*NRIMY+2,IKU,NSV))
+  ELSE
+    ALLOCATE(XLBXSVM(2,IJU,IKU,NSV))
+    ALLOCATE(XLBYSVM(IIU,2,IKU,NSV))
+  END IF
+  !       
+  ILBX=SIZE(XLBXSVM,1)/2-1     
+  XLBXSVM(1:ILBX+1,:,:,:)         = XSVT(IIB-1:IIB-1+ILBX,:,:,:)
+  XLBXSVM(ILBX+2:2*ILBX+2,:,:,:)  = XSVT(IIE+1-ILBX:IIE+1,:,:,:)
+  ILBY=SIZE(XLBYSVM,2)/2-1
+  XLBYSVM(:,1:ILBY+1,:,:)        = XSVT(:,IJB-1:IJB-1+ILBY,:,:)
+  XLBYSVM(:,ILBY+2:2*ILBY+2,:,:) = XSVT(:,IJE+1-ILBY:IJE+1,:,:)
+ELSE
+  ALLOCATE(XLBXSVM(0,0,0,0))
+  ALLOCATE(XLBYSVM(0,0,0,0))
+END IF
+!
+!
+NSIZELBXTKE_ll=SIZE(XLBXTKEM,1)
+NSIZELBYTKE_ll=SIZE(XLBYTKEM,2)
+NSIZELBXSV_ll =SIZE(XLBXSVM,1)
+NSIZELBYSV_ll =SIZE(XLBYSVM,2)
+!
+!-------------------------------------------------------------------------------
+9000  FORMAT(/,'FATAL ERROR IN INI_PROG_VAR : ',/, &
+             '--------------------------------------' )
+!
+END SUBROUTINE INI_PROG_VAR