diff --git a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90
index bb8534b6dedc4aa9b89775f7106dd6a45efef4ca..5abc98b1e2e5663dc251939d12f7067d84d7a6b4 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90
@@ -13,6 +13,7 @@ program LFI2CDF
 
   USE MODE_FIELD,         ONLY: INI_FIELD_LIST
   USE MODE_IO,            ONLY: IO_Init, IO_Config_set
+  use mode_ll
   USE mode_options
   USE MODE_SPLITTINGZ_ll, ONLY: INI_PARAZ_ll
   USE mode_util
diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index 1713d2e6561be3a206a1714f42433ee7121e76c6..bc20c05b2071d54f387c251078c5cc336e8f2322 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -957,7 +957,7 @@ END DO
     USE MODD_GRID,          ONLY: XBETA, XRPK, XLAT0, XLON0, XLATORI, XLONORI
     USE MODD_GRID_n,        ONLY: LSLEVE, XXHAT, XYHAT, XZHAT
     USE MODD_IO,            ONLY: LIOCDF4
-    USE MODD_PARAMETERS,    ONLY: JPHEXT
+    USE MODD_PARAMETERS,    ONLY: JPHEXT, JPVEXT
     USE MODD_PARAMETERS_ll, ONLY: JPHEXT_ll=>JPHEXT, JPVEXT_ll=>JPVEXT
     USE MODD_TIME_n,        ONLY: TDTCUR, TDTMOD
 
diff --git a/src/LIB/SURCOUCHE/src/extern_usersurc_ll.f90 b/src/LIB/SURCOUCHE/src/extern_usersurc_ll.f90
deleted file mode 100644
index 77e2211f4a04e6ba584cd8300d9217df388472f7..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/extern_usersurc_ll.f90
+++ /dev/null
@@ -1,1427 +0,0 @@
-!MNH_LIC Copyright 1998-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.
-!-----------------------------------------------------------------
-!!    Authors
-!!    -------
-!
-!     R. Guivarch, D. Lugato    * CERFACS *
-!     Ph. Kloos                 * CERFACS - CNRM *
-!
-!!    Modifications
-!!    -------------
-!     Original 01/05/98
-!     Juan 19/08/2005:  modification INTENT -> INTENT(INOUT)
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!-----------------------------------------------------------------
-
-!
-!!     #################################################
-       SUBROUTINE ADD_FIELD2_ll( TPLIST_ll, TPHALO2_ll )
-!!     #################################################
-!
-  USE MODE_ARGSLIST2_ll, ONLY : E_ADD_FIELD2_ll => ADD_FIELD2_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : HALO2_ll, HALO2LIST_ll
-!
-  TYPE(HALO2LIST_ll), POINTER :: TPLIST_ll
-  TYPE(HALO2_ll), TARGET      :: TPHALO2_ll
-!
-  CALL E_ADD_FIELD2_ll( TPLIST_ll, TPHALO2_ll )
-!
-       END SUBROUTINE ADD_FIELD2_ll
-!
-!!     ########################################################
-       SUBROUTINE DEL_FIELD2_ll( TPLIST_ll, TPHALO2_ll, KINFO )
-!!     ########################################################
-!
-  USE MODE_ARGSLIST2_ll, ONLY : E_DEL_FIELD2_ll => DEL_FIELD2_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : HALO2_ll, HALO2LIST_ll
-!
-  TYPE(HALO2LIST_ll), POINTER :: TPLIST_ll
-  TYPE(HALO2_ll), TARGET      :: TPHALO2_ll
-  INTEGER                     :: KINFO
-!
-  CALL E_DEL_FIELD2_ll( TPLIST_ll, TPHALO2_ll, KINFO )
-!
-       END SUBROUTINE DEL_FIELD2_ll
-
-!
-!!     #######################################################
-       SUBROUTINE ADD1DFIELD_ll( HDIR, TPLIST, PFIELD, HNAME )
-!!     #######################################################
-!
-  USE MODE_ARGSLIST_ll, ONLY : E_ADD1DFIELD_ll => ADD1DFIELD_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll
-!
-  CHARACTER(LEN=1), INTENT(IN) :: HDIR
-  TYPE(LIST1D_ll), POINTER     :: TPLIST
-  REAL, DIMENSION(:), TARGET   :: PFIELD
-  character(len=*), intent(in) :: HNAME ! Name of the field to be added
-!
-  CALL E_ADD1DFIELD_ll( HDIR, TPLIST, PFIELD, HNAME )
-!
-       END SUBROUTINE ADD1DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE ADD2DFIELD_ll( TPLIST, PFIELD, HNAME )
-!!     #################################################
-!
-  USE MODE_ARGSLIST_ll, ONLY : E_ADD2DFIELD_ll => ADD2DFIELD_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER       :: TPLIST
-  REAL, DIMENSION(:,:), TARGET :: PFIELD
-  character(len=*), intent(in) :: HNAME ! Name of the field to be added
-!
-  CALL E_ADD2DFIELD_ll( TPLIST, PFIELD, HNAME )
-!
-       END SUBROUTINE ADD2DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE ADD3DFIELD_ll( TPLIST, PFIELD, HNAME )
-!!     #################################################
-!
-  USE MODE_ARGSLIST_ll, ONLY : E_ADD3DFIELD_ll => ADD3DFIELD_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER         :: TPLIST
-  REAL, DIMENSION(:,:,:), TARGET :: PFIELD
-  character(len=*), intent(in) :: HNAME ! Name of the field to be added
-!
-  CALL E_ADD3DFIELD_ll( TPLIST, PFIELD, HNAME )
-!
-       END SUBROUTINE ADD3DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE ADD4DFIELD_ll( TPLIST, PFIELD, HNAME )
-!!     #################################################
-!
-  USE MODE_ARGSLIST_ll, ONLY : E_ADD4DFIELD_ll => ADD4DFIELD_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  type(list_ll), pointer   :: tplist   ! list of fields
-  real, dimension(:,:,:,:),   intent(in) :: pfield   ! field to be added to the list of fields
-  character(len=*), intent(in) :: hname ! name of the field to be added
-!
-  CALL E_ADD4DFIELD_ll( TPLIST, PFIELD, HNAME )
-!
-       END SUBROUTINE ADD4DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE DEL1DFIELD_ll( TPLIST, PFIELD, KINFO )
-!!     #################################################
-!
-  USE MODE_ARGSLIST_ll, ONLY : E_DEL1DFIELD_ll => DEL1DFIELD_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll
-!
-  TYPE(LIST1D_ll), POINTER     :: TPLIST
-  REAL, DIMENSION(:), TARGET   :: PFIELD
-  INTEGER, INTENT(OUT)         :: KINFO
-!
-  CALL E_DEL1DFIELD_ll( TPLIST, PFIELD, KINFO )
-!
-       END SUBROUTINE DEL1DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE DEL2DFIELD_ll( TPLIST, PFIELD, KINFO )
-!!     #################################################
-!
-  USE MODE_ARGSLIST_ll, ONLY : E_DEL2DFIELD_ll => DEL2DFIELD_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER       :: TPLIST
-  REAL, DIMENSION(:,:), TARGET :: PFIELD
-  INTEGER, INTENT(OUT)         :: KINFO
-!
-  CALL E_DEL2DFIELD_ll( TPLIST, PFIELD, KINFO )
-!
-       END SUBROUTINE DEL2DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE DEL3DFIELD_ll( TPLIST, PFIELD, KINFO )
-!!     #################################################
-!
-  USE MODE_ARGSLIST_ll, ONLY : E_DEL3DFIELD_ll => DEL3DFIELD_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER         :: TPLIST
-  REAL, DIMENSION(:,:,:), TARGET :: PFIELD
-  INTEGER, INTENT(OUT)           :: KINFO
-!
-  CALL E_DEL3DFIELD_ll( TPLIST, PFIELD, KINFO )
-!
-       END SUBROUTINE DEL3DFIELD_ll
-!
-!!     #################################
-       SUBROUTINE CLEANLIST_ll( TPLIST )
-!!     #################################
-!
-  USE MODE_ARGSLIST_ll, ONLY : E_CLEANLIST_ll => CLEANLIST_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER     :: TPLIST
-!
-  CALL E_CLEANLIST_ll( TPLIST )
-!
-       END SUBROUTINE CLEANLIST_ll
-!
-!!     ##################################
-       SUBROUTINE END_PARA_ll( KINFO_ll )
-!!     ##################################
-!
-  USE MODE_INIT_ll, ONLY : E_END_PARA_ll => END_PARA_ll
-!
-  INTEGER, INTENT(OUT) :: KINFO_ll
-!
-  CALL E_END_PARA_ll( KINFO_ll )
-!
-       END SUBROUTINE END_PARA_ll
-!
-!!     ##################################################
-       SUBROUTINE  GET_DIM_EXT_ll( HSPLIT, KXDIM, KYDIM )
-!!     ##################################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_DIM_EXT_ll => GET_DIM_EXT_ll
-!
-  CHARACTER(len=1), INTENT(IN) :: HSPLIT
-  INTEGER, INTENT(OUT)    :: KXDIM, KYDIM
-!
-  CALL E_GET_DIM_EXT_ll( HSPLIT, KXDIM, KYDIM )
-!
-       END SUBROUTINE GET_DIM_EXT_ll
-!
-!!     ###################################################
-       SUBROUTINE  GET_DIM_PHYS_ll( HSPLIT, KXDIM, KYDIM )
-!!     ###################################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_DIM_PHYS_ll => GET_DIM_PHYS_ll
-!
-  CHARACTER(len=1), INTENT(IN) :: HSPLIT
-  INTEGER, INTENT(OUT)    :: KXDIM, KYDIM
-!
-  CALL E_GET_DIM_PHYS_ll( HSPLIT, KXDIM, KYDIM )
-!
-       END SUBROUTINE GET_DIM_PHYS_ll
-!
-!!     ##########################################
-       SUBROUTINE GET_OR_ll( HSPLIT, KXOR, KYOR )
-!!     ##########################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_OR_ll => GET_OR_ll
-!
-  CHARACTER(len=1), INTENT(IN) :: HSPLIT
-  INTEGER, INTENT(OUT)    :: KXOR, KYOR
-!
-  CALL E_GET_OR_ll( HSPLIT, KXOR, KYOR )
-!
-       END SUBROUTINE GET_OR_ll
-!
-!!     ####################################################
-       SUBROUTINE GET_INDICE_ll( KXOR, KYOR, KXEND, KYEND )
-!!     ####################################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_INDICE_ll => GET_INDICE_ll
-!
-  INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND
-!
-  CALL E_GET_INDICE_ll( KXOR, KYOR, KXEND, KYEND )
-!
-       END SUBROUTINE GET_INDICE_ll
-!
-!!     ############################################
-       SUBROUTINE GET_GLOBALDIMS_ll( KIMAX, KJMAX )
-!!     ############################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_GLOBALDIMS_ll => GET_GLOBALDIMS_ll
-!
-  INTEGER, INTENT(OUT) :: KIMAX, KJMAX
-!
-  CALL E_GET_GLOBALDIMS_ll( KIMAX, KJMAX )
-!
-       END SUBROUTINE GET_GLOBALDIMS_ll
-!
-!!     ######################################################
-       SUBROUTINE GET_PHYSICAL_ll( KXOR, KYOR, KXEND, KYEND )
-!!     ######################################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_PHYSICAL_ll => GET_PHYSICAL_ll
-!
-  INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND
-!
-  CALL E_GET_PHYSICAL_ll( KXOR, KYOR, KXEND, KYEND )
-!
-       END SUBROUTINE GET_PHYSICAL_ll
-!
-!!     ###############################################################
-       SUBROUTINE GET_INTERSECTION_ll( KXOR, KYOR, KXEND, KYEND, &
-                                       KXORI, KYORI, KXENDI, KYENDI, &
-                                       HDOM, KINFO, KIP )
-!!     ###############################################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_INTERSECTION_ll => GET_INTERSECTION_ll
-!
-  CHARACTER(LEN=4), INTENT(IN)  :: HDOM
-  INTEGER, INTENT(IN)           :: KXOR, KYOR, KXEND, KYEND
-  INTEGER, INTENT(OUT)          :: KXORI, KYORI, KXENDI, KYENDI
-  INTEGER, INTENT(OUT)          :: KINFO
-  INTEGER, INTENT(IN), OPTIONAL :: KIP
-!
-  CALL E_GET_INTERSECTION_ll( KXOR, KYOR, KXEND, KYEND, &
-                              KXORI, KYORI, KXENDI, KYENDI, &
-                              HDOM, KINFO, KIP )
-!
-       END SUBROUTINE GET_INTERSECTION_ll
-!
-!!  ####################################################################
-    SUBROUTINE GET_1DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, &
-                                     KB, KE, KERR )
-!!  ####################################################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_1DGLOBALSLICE_ll => GET_1DGLOBALSLICE_ll
-!
-  REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY
-  CHARACTER(LEN=1), INTENT(IN)             :: HDIR
-  INTEGER, INTENT(IN)                      :: KLOC
-  REAL, DIMENSION(:), INTENT(OUT)          :: PGLOBALSLICE
-  INTEGER, OPTIONAL                        :: KB, KE, KERR
-!
-  CALL E_GET_1DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, KB, KE, KERR )
-!
-       END SUBROUTINE GET_1DGLOBALSLICE_ll
-!
-!!  ####################################################################
-    SUBROUTINE GET_2DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, &
-                                     KB, KE, KKB, KKE, KERR )
-!!  ####################################################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_2DGLOBALSLICE_ll => GET_2DGLOBALSLICE_ll
-!
-  REAL, DIMENSION(:,:,:) :: PARRAY
-  CHARACTER(LEN=1)       :: HDIR
-  INTEGER                :: KLOC
-  REAL, DIMENSION(:,:)   :: PGLOBALSLICE
-  INTEGER, OPTIONAL      :: KB, KE, KKB, KKE, KERR
-!
-  CALL E_GET_2DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, &
-                               KB, KE, KKB, KKE, KERR )
-!
-       END SUBROUTINE GET_2DGLOBALSLICE_ll
-!
-!!  #####################################################################
-    SUBROUTINE GET_1DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, KB, KE, KERR )
-!!  #####################################################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_1DSLICE_ll => GET_1DSLICE_ll
-!
-  REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY
-  CHARACTER(LEN=1), INTENT(IN)             :: HDIR
-  INTEGER, INTENT(IN)                      :: KLOC
-  REAL, DIMENSION(:), INTENT(OUT)          :: PSLICE
-  INTEGER, OPTIONAL                        :: KB, KE, KERR
-!
-  CALL E_GET_1DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, KB, KE, KERR )
-!
-       END SUBROUTINE GET_1DSLICE_ll
-!
-!!  ########################################################
-    SUBROUTINE GET_2DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, &
-                               KB, KE, KKB, KKE, KERR )
-!!  ########################################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_GET_2DSLICE_ll => GET_2DSLICE_ll
-!
-  REAL, DIMENSION(:,:,:) :: PARRAY
-  CHARACTER(LEN=1)       :: HDIR
-  INTEGER                :: KLOC
-  REAL, DIMENSION(:,:)   :: PSLICE
-  INTEGER, OPTIONAL      :: KB, KE, KKB, KKE, KERR
-!
-  CALL E_GET_2DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, &
-                         KB, KE, KKB, KKE, KERR )
-!
-       END SUBROUTINE GET_2DSLICE_ll
-!
-!!     ##################################
-       SUBROUTINE INI_PARA_ll( KINFO_ll )
-!!     ##################################
-!
-  USE MODE_INIT_ll, ONLY : E_INI_PARA_ll => INI_PARA_ll
-!
-  INTEGER, INTENT(OUT) :: KINFO_ll
-!
-  CALL E_INI_PARA_ll( KINFO_ll )
-!
-       END SUBROUTINE INI_PARA_ll
-!
-!     #########################################
-      SUBROUTINE SET_SPLITTING_ll( HSPLITTING )
-!     #########################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_SPLITTING_ll=>SET_SPLITTING_ll
-!
-  CHARACTER(LEN=*) :: HSPLITTING
-!
-  CALL E_SET_SPLITTING_ll(HSPLITTING)
-!
-       END SUBROUTINE SET_SPLITTING_ll
-!
-!     ##################################
-      SUBROUTINE SET_LBX_ll( KLBX, KMI )
-!     ##################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_LBX_ll=>SET_LBX_ll
-!
-  CHARACTER(LEN=*) :: KLBX
-  INTEGER          :: KMI
-!
-  CALL E_SET_LBX_ll(KLBX, KMI)
-!
-       END SUBROUTINE SET_LBX_ll
-!
-!     ##################################
-      SUBROUTINE SET_LBY_ll( KLBY, KMI )
-!     ###################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_LBY_ll=>SET_LBY_ll
-!
-  CHARACTER(LEN=*) :: KLBY
-  INTEGER          :: KMI
-!
-  CALL E_SET_LBY_ll(KLBY, KMI)
-!
-       END SUBROUTINE SET_LBY_ll
-!
-!     ############################################
-      SUBROUTINE SET_LBSIZEX_ll( KNBRIM, KRIMTAB )
-!     ############################################
-!
-  USE MODE_LB_ll, ONLY : E_SET_LBSIZEX_ll => SET_LBSIZEX_ll
-!
-  INTEGER               :: KNBRIM
-  INTEGER, DIMENSION(:) :: KRIMTAB
-!
-  CALL E_SET_LBSIZEX_ll(KNBRIM, KRIMTAB)
-!
-       END SUBROUTINE SET_LBSIZEX_ll
-!
-!     ############################################
-      SUBROUTINE SET_LBSIZEY_ll( KNBRIM, KRIMTAB )
-!     ############################################
-!
-  USE MODE_LB_ll, ONLY : E_SET_LBSIZEY_ll => SET_LBSIZEY_ll
-!
-  INTEGER               :: KNBRIM
-  INTEGER, DIMENSION(:) :: KRIMTAB
-!
-  CALL E_SET_LBSIZEY_ll(KNBRIM, KRIMTAB)
-!
-       END SUBROUTINE SET_LBSIZEY_ll
-!
-!     ###################################
-      SUBROUTINE SET_DIM_ll( KX, KY, KZ )
-!     ###################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_DIM_ll=>SET_DIM_ll
-!
-  INTEGER :: KX,KY,KZ
-!
-  CALL E_SET_DIM_ll(KX, KY, KZ)
-!
-       END SUBROUTINE SET_DIM_ll
-!
-!     #######################################################
-      SUBROUTINE SET_JP_ll( KMODELMAX, KHEXT, KVEXT, KPHALO )
-!     #######################################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_JP_ll=>SET_JP_ll
-  IMPLICIT NONE 
-!
-  INTEGER :: KMODELMAX, KHEXT, KVEXT, KPHALO
-!
-  CALL E_SET_JP_ll(KMODELMAX, KHEXT, KVEXT, KPHALO)
-!
-       END SUBROUTINE SET_JP_ll
-!
-!     ########################################
-      SUBROUTINE SET_XRATIO_ll( KXRATIO, KMI )
-!     ########################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_XRATIO_ll=>SET_XRATIO_ll
-!
-  INTEGER :: KXRATIO, KMI
-!
-  CALL E_SET_XRATIO_ll(KXRATIO, KMI)
-!
-       END SUBROUTINE SET_XRATIO_ll
-!
-!     ########################################
-      SUBROUTINE SET_YRATIO_ll( KYRATIO, KMI )
-!     ########################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_YRATIO_ll=>SET_YRATIO_ll
-!
- INTEGER :: KYRATIO, KMI
-!
-  CALL E_SET_YRATIO_ll(KYRATIO, KMI)
-!
-       END SUBROUTINE SET_YRATIO_ll
-!
-!     ##################################
-      SUBROUTINE SET_DAD_ll( KDAD, KMI )
-!     ##################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_DAD_ll=>SET_DAD_ll
-!
-  INTEGER :: KDAD, KMI
-!
-  CALL E_SET_DAD_ll(KDAD, KMI)
-!
-       END SUBROUTINE SET_DAD_ll
-!
-!     ##################################
-      SUBROUTINE SET_XOR_ll( KXOR, KMI )
-!     ##################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_XOR_ll=>SET_XOR_ll
-!
-  INTEGER :: KXOR, KMI
-!
-  CALL E_SET_XOR_ll(KXOR, KMI)
-!
-       END SUBROUTINE SET_XOR_ll
-!
-!     ####################################
-      SUBROUTINE SET_XEND_ll( KXEND, KMI )
-!     ####################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_XEND_ll=>SET_XEND_ll
-!
-  INTEGER :: KXEND, KMI
-!
-  CALL E_SET_XEND_ll(KXEND, KMI)
-! 
-       END SUBROUTINE SET_XEND_ll
-!
-!     ##################################
-      SUBROUTINE SET_YOR_ll( KYOR, KMI )
-!     ##################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_YOR_ll=>SET_YOR_ll
-!
-  INTEGER :: KYOR, KMI
-!
-  CALL E_SET_YOR_ll(KYOR, KMI)
-!
-       END SUBROUTINE SET_YOR_ll
-!
-!     ####################################
-      SUBROUTINE SET_YEND_ll( KYEND, KMI )
-!     ####################################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_YEND_ll=>SET_YEND_ll
-!
-  INTEGER :: KYEND, KMI
-!
-  CALL E_SET_YEND_ll(KYEND, KMI)
-!
-       END SUBROUTINE SET_YEND_ll
-!
-!     ########################
-      SUBROUTINE SET_DAD0_ll()
-!     ########################
-!
-  USE MODE_INIT_ll, ONLY : E_SET_DAD0_ll=>SET_DAD0_ll
-!
-  CALL E_SET_DAD0_ll()
-!
-       END SUBROUTINE SET_DAD0_ll
-!
-!     #######################
-      SUBROUTINE INIT_LB_ll()
-!     #######################
-!
-  USE MODE_LB_ll, ONLY : E_INIT_LB_ll => INIT_LB_ll
-!
-  CALL E_INIT_LB_ll()
-!
-       END SUBROUTINE INIT_LB_ll
-!
-!     #######################
-      SUBROUTINE SET_LB_FIELD_ll(HLBTYPE, PFIELD, PLBXFIELD, PLBYFIELD, IIB, IJB, IIE, IJE, &
-        SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH )
-!     #######################
-!
-  USE MODE_LB_ll, ONLY : E_SET_LB_FIELD_ll => SET_LB_FIELD_ll
-!
-  CHARACTER(LEN=*),INTENT(IN) :: HLBTYPE ! LB type : 'LB','LBU'
-  REAL, DIMENSION(:,:,:), INTENT(IN)  :: PFIELD      ! field on the whole domain (or subdomain)
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLBXFIELD    ! LB field - X direction
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLBYFIELD    ! LB field - Y direction
-  !beginning and end of the local physical subdomain
-  INTEGER, INTENT(IN)   :: IIB            ! indice I Beginning in x direction
-  INTEGER, INTENT(IN)   :: IJB            ! indice J Beginning in y direction
-  INTEGER, INTENT(IN)   :: IIE            ! indice I End       in x direction
-  INTEGER, INTENT(IN)   :: IJE            ! indice J End       in y direction
-  INTEGER, INTENT(IN)   :: SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH ! shifting applied to the indices copied from PFIELD in each direction
-                                                                        ! it is used for LBXUM et LBXVM
-                                                                        ! I do not know why...
-!
-  CALL E_SET_LB_FIELD_ll(HLBTYPE, PFIELD, PLBXFIELD, PLBYFIELD, IIB, IJB, IIE, IJE, &
-        SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH )
-!
-       END SUBROUTINE SET_LB_FIELD_ll
-!
-!!     ###################################
-       FUNCTION LNORTH_ll( K, HSPLITTING )
-!!     ###################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_LNORTH_ll => LNORTH_ll
-!
-  LOGICAL                           :: LNORTH_ll
-  INTEGER, INTENT(IN), OPTIONAL     :: K
-  CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING
-!
-  LNORTH_ll=E_LNORTH_ll( K, HSPLITTING )
-!
-       END FUNCTION LNORTH_ll
-!
-!!     ##################################
-       FUNCTION LWEST_ll( K, HSPLITTING )
-!!     ##################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_LWEST_ll => LWEST_ll
-!
-  LOGICAL                           :: LWEST_ll  
-  INTEGER, INTENT(IN), OPTIONAL     :: K
-  CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING
-!
-  LWEST_ll=E_LWEST_ll( K, HSPLITTING )
-!
-       END FUNCTION LWEST_ll
-!
-!!     ##################################
-       FUNCTION LEAST_ll( K, HSPLITTING )
-!!     ##################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_LEAST_ll => LEAST_ll
-!
-  LOGICAL                           :: LEAST_ll
-  INTEGER, INTENT(IN), OPTIONAL     :: K
-  CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING
-!
-  LEAST_ll=E_LEAST_ll( K, HSPLITTING )
-!
-       END FUNCTION LEAST_ll
-!
-!!     ###########################################
-       FUNCTION LSOUTH_ll( K, HSPLITTING )
-!!     ###########################################
-!
-  USE MODE_TOOLS_ll, ONLY : E_LSOUTH_ll => LSOUTH_ll
-!
-  LOGICAL                           :: LSOUTH_ll
-  INTEGER, INTENT(IN), OPTIONAL     :: K
-  CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING
-!
-  LSOUTH_ll=E_LSOUTH_ll( K, HSPLITTING )
-!
-       END FUNCTION LSOUTH_ll
-!
-!     ###############################################
-      SUBROUTINE GET_MODEL_NUMBER_ll( KMODEL_NUMBER )
-!     ###############################################
-!
-  USE MODE_NEST_ll, ONLY : E_GET_MODEL_NUMBER_ll => GET_MODEL_NUMBER_ll
-!
-  INTEGER :: KMODEL_NUMBER
-!
-  CALL E_GET_MODEL_NUMBER_ll( KMODEL_NUMBER )
-!
-      END SUBROUTINE GET_MODEL_NUMBER_ll
-!
-!     ####################################################
-      SUBROUTINE GET_CHILD_DIM_ll( KCHILD, KX, KY, KINFO )
-!     ####################################################
-!
-  USE MODE_NEST_ll, ONLY : E_GET_CHILD_DIM_ll => GET_CHILD_DIM_ll
-!
-  INTEGER, INTENT(IN) :: KCHILD
-!
-  INTEGER, INTENT(OUT) :: KX, KY
-!
-  INTEGER, INTENT(OUT) :: KINFO
-!
-  CALL E_GET_CHILD_DIM_ll( KCHILD, KX, KY, KINFO )
-!
-       END SUBROUTINE GET_CHILD_DIM_ll
-!
-!     ###################################################################
-      SUBROUTINE GET_FEEDBACK_COORD_ll( KXOR, KYOR, KXEND, KYEND, KINFO )
-!     ###################################################################
-!
-  USE MODE_NEST_ll, ONLY : E_GET_FEEDBACK_COORD_ll => GET_FEEDBACK_COORD_ll
-!
-  INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND
-  INTEGER, INTENT(OUT) :: KINFO
-!
-  CALL E_GET_FEEDBACK_COORD_ll( KXOR, KYOR, KXEND, KYEND, KINFO )
-!
-       END SUBROUTINE GET_FEEDBACK_COORD_ll
-!
-!     #############################################################
-      SUBROUTINE SET_LS2DFIELD_1WAY_ll( P2DFIELD, PTFIELD, KMODEL )
-!     #############################################################
-!
-  USE MODE_LS_ll, ONLY : E_SET_LS2DFIELD_1WAY_ll => SET_LS2DFIELD_1WAY_ll
-!
-  REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD
-  INTEGER, INTENT(IN)                      :: KMODEL
-!
-  CALL E_SET_LS2DFIELD_1WAY_ll( P2DFIELD, PTFIELD, KMODEL )
-!
-       END SUBROUTINE SET_LS2DFIELD_1WAY_ll
-!
-!     #############################################################
-      SUBROUTINE SET_LS3DFIELD_1WAY_ll( P3DFIELD, PTFIELD, KMODEL )
-!     #############################################################
-!
-  USE MODE_LS_ll, ONLY : E_SET_LS3DFIELD_1WAY_ll => SET_LS3DFIELD_1WAY_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD
-  INTEGER, INTENT(IN)                        :: KMODEL
-!
-  CALL E_SET_LS3DFIELD_1WAY_ll( P3DFIELD, PTFIELD, KMODEL )
-!
-       END SUBROUTINE SET_LS3DFIELD_1WAY_ll
-!
-!     ##################################
-      SUBROUTINE UNSET_LSFIELD_1WAY_ll()
-!     ##################################
-!
-  USE MODE_LS_ll, ONLY : E_UNSET_LSFIELD_1WAY_ll => UNSET_LSFIELD_1WAY_ll
-!
-  CALL E_UNSET_LSFIELD_1WAY_ll()
-!
-       END SUBROUTINE UNSET_LSFIELD_1WAY_ll
-!
-!     #####################################################
-      SUBROUTINE SET_LS2DFIELD_2WAY_ll( P2DFIELD, PTFIELD )
-!     #####################################################
-!
-  USE MODE_LS_ll, ONLY : E_SET_LS2DFIELD_2WAY_ll => SET_LS2DFIELD_2WAY_ll
-!
-  REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD
-!
-  CALL E_SET_LS2DFIELD_2WAY_ll( P2DFIELD, PTFIELD )
-!
-       END SUBROUTINE SET_LS2DFIELD_2WAY_ll
-!
-!     #####################################################
-      SUBROUTINE SET_LS3DFIELD_2WAY_ll( P3DFIELD, PTFIELD )
-!     #####################################################
-!
-  USE MODE_LS_ll, ONLY : E_SET_LS3DFIELD_2WAY_ll => SET_LS3DFIELD_2WAY_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD
-!
-  CALL E_SET_LS3DFIELD_2WAY_ll( P3DFIELD, PTFIELD )
-!
-       END SUBROUTINE SET_LS3DFIELD_2WAY_ll
-!
-!     ##########################################
-      SUBROUTINE UNSET_LSFIELD_2WAY_ll( KMODEL )
-!     ##########################################
-!
-  USE MODE_LS_ll, ONLY : E_UNSET_LSFIELD_2WAY_ll => UNSET_LSFIELD_2WAY_ll
-!
-  INTEGER, INTENT(IN) :: KMODEL
-!
-  CALL E_UNSET_LSFIELD_2WAY_ll( KMODEL )
-!
-       END SUBROUTINE UNSET_LSFIELD_2WAY_ll
-!
-!     #########################################
-      SUBROUTINE LS_FORCING_ll( KCHILD, KINFO, OEXTRAPOL, OCYCLIC_EXTRAPOL )
-!     #########################################
-!
-  USE MODE_LS_ll, ONLY : E_LS_FORCING_ll => LS_FORCING_ll
-!
-  INTEGER, INTENT(IN)  :: KCHILD
-  INTEGER, INTENT(OUT) :: KINFO
-  LOGICAL, OPTIONAL, INTENT(IN) :: OEXTRAPOL
-  LOGICAL, OPTIONAL, INTENT(IN) :: OCYCLIC_EXTRAPOL
-!
-  IF ( PRESENT(OEXTRAPOL) .AND. PRESENT(OCYCLIC_EXTRAPOL) ) THEN
-    CALL E_LS_FORCING_ll(  KCHILD, KINFO, OEXTRAPOL, OCYCLIC_EXTRAPOL )
-  ELSEIF ( PRESENT(OEXTRAPOL) ) THEN
-    CALL E_LS_FORCING_ll(  KCHILD, KINFO, OEXTRAPOL )
-  ELSE
-    CALL E_LS_FORCING_ll(  KCHILD, KINFO )
-  ENDIF
-!
-       END SUBROUTINE LS_FORCING_ll
-!
-!     ###################################
-      SUBROUTINE LS_FEEDBACK_ll( KINFO  )
-!     ###################################
-!
-  USE MODE_LS_ll, ONLY : E_LS_FEEDBACK_ll => LS_FEEDBACK_ll
-!
-  INTEGER, INTENT(OUT) :: KINFO
-!
-  CALL E_LS_FEEDBACK_ll( KINFO )
-!
-       END SUBROUTINE LS_FEEDBACK_ll
-!
-!     ##############################################################
-      SUBROUTINE SET_LB2DFIELD_ll( P2DFIELD, PTFIELD, KFINELBSIZE, &
-                                   HSIDE, KMODEL )
-!     ##############################################################
-!
-  USE MODE_LB_ll, ONLY : E_SET_LB2DFIELD_ll => SET_LB2DFIELD_ll
-!
-  REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD
-  INTEGER, INTENT(IN)                      :: KFINELBSIZE, KMODEL
-  CHARACTER(LEN=*), INTENT(IN)             :: HSIDE
-!
-  CALL E_SET_LB2DFIELD_ll( P2DFIELD, PTFIELD, KFINELBSIZE, &
-                           HSIDE, KMODEL ) 
-!
-       END SUBROUTINE SET_LB2DFIELD_ll
-!
-!     ##############################################################
-      SUBROUTINE SET_LB3DFIELD_ll( P3DFIELD, PTFIELD, KFINELBSIZE, &
-                                   HSIDE, KMODEL )
-!     ##############################################################
-!
-  USE MODE_LB_ll, ONLY : E_SET_LB3DFIELD_ll => SET_LB3DFIELD_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD
-  INTEGER, INTENT(IN)                        :: KFINELBSIZE, KMODEL
-  CHARACTER(LEN=*), INTENT(IN)               :: HSIDE
-!
-  CALL E_SET_LB3DFIELD_ll( P3DFIELD, PTFIELD, KFINELBSIZE, &
-                           HSIDE, KMODEL )
-!
-       END SUBROUTINE SET_LB3DFIELD_ll
-!
-!     #############################
-      SUBROUTINE UNSET_LBFIELD_ll()
-!     #############################
-!
-  USE MODE_LB_ll, ONLY : E_UNSET_LBFIELD_ll => UNSET_LBFIELD_ll
-!
-  CALL E_UNSET_LBFIELD_ll()
-!
-       END SUBROUTINE UNSET_LBFIELD_ll
-!
-!     #########################################
-      SUBROUTINE LB_FORCING_ll( KCHILD, KINFO )
-!     #########################################
-!
-  USE MODE_LB_ll, ONLY : E_LB_FORCING_ll => LB_FORCING_ll
-!
-  INTEGER, INTENT(IN)  :: KCHILD
-  INTEGER, INTENT(OUT) :: KINFO
-!
-   CALL E_LB_FORCING_ll( KCHILD, KINFO )
-!
-       END SUBROUTINE LB_FORCING_ll
-!
-!!     ###########################################################
-       FUNCTION LBFINE2COARSE( KRATIO, KLBSIZE ) RESULT( KCOARSE )
-!!     ###########################################################
-!
-  USE MODE_NEST_ll, ONLY : E_LBFINE2COARSE => LBFINE2COARSE
-  IMPLICIT NONE
-!
-  INTEGER :: KCOARSE
-  INTEGER :: KRATIO, KLBSIZE
-!
-  KCOARSE = E_LBFINE2COARSE( KRATIO, KLBSIZE )
-!
-       END FUNCTION LBFINE2COARSE
-!
-!     #########################################
-      SUBROUTINE GO_TOMODEL_ll( KMODEL, KINFO )
-!     #########################################
-!
-  USE MODE_NEST_ll, ONLY : E_GO_TOMODEL_ll => GO_TOMODEL_ll
-  IMPLICIT NONE
-!
-  INTEGER :: KMODEL, KINFO
-!
-  CALL E_GO_TOMODEL_ll( KMODEL, KINFO )
-!
-       END SUBROUTINE GO_TOMODEL_ll
-!
-!!     ########################################################
-       SUBROUTINE REMAP_2WAY_X_ll( PFIELDIN, PFIELDOUT, KINFO )
-!!     ########################################################
-!
-  USE MODE_EXCHANGE_ll, ONLY : E_REMAP_2WAY_X_ll => REMAP_2WAY_X_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PFIELDIN
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDOUT
-  INTEGER                             :: KINFO
-!
-  CALL E_REMAP_2WAY_X_ll( PFIELDIN, PFIELDOUT, KINFO )
-!
-       END SUBROUTINE REMAP_2WAY_X_ll
-!
-!     ########################################################
-      SUBROUTINE REMAP_X_2WAY_ll( PFIELDIN, PFIELDOUT, KINFO )
-!     ########################################################
-!
-  USE MODE_EXCHANGE_ll, ONLY : E_REMAP_X_2WAY_ll => REMAP_X_2WAY_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PFIELDIN
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDOUT
-  INTEGER                             :: KINFO
-!
-  CALL E_REMAP_X_2WAY_ll( PFIELDIN, PFIELDOUT, KINFO )
-!
-       END SUBROUTINE REMAP_X_2WAY_ll
-!
-!     #####################################################
-      SUBROUTINE REMAP_X_Y_ll( PFIELDIN, PFIELDOUT, KINFO )
-!     #####################################################
-!
-  USE MODE_EXCHANGE_ll, ONLY : E_REMAP_X_Y_ll => REMAP_X_Y_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PFIELDIN
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDOUT
-  INTEGER                             :: KINFO
-!
-  CALL E_REMAP_X_Y_ll( PFIELDIN, PFIELDOUT, KINFO )
-!
-       END SUBROUTINE REMAP_X_Y_ll
-!
-!     #####################################################
-      SUBROUTINE REMAP_Y_X_ll( PFIELDIN, PFIELDOUT, KINFO )
-!     #####################################################
-!
-  USE MODE_EXCHANGE_ll, ONLY : E_REMAP_Y_X_ll => REMAP_Y_X_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PFIELDIN
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDOUT
-  INTEGER                             :: KINFO
-!
-  CALL E_REMAP_Y_X_ll( PFIELDIN, PFIELDOUT, KINFO )
-!
-       END SUBROUTINE REMAP_Y_X_ll
-!
-!!     #######################################################
-       FUNCTION EXTRACT_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                            KXEND, KYEND, KZEND )
-!!     #######################################################
-!
-  USE MODE_SUM_ll, ONLY : E_EXTRACT_ll => EXTRACT_ll
-!
-  REAL, DIMENSION(:,:,:), POINTER    :: EXTRACT_ll
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD
-  INTEGER, INTENT(OUT)               :: KINFO
-  INTEGER, OPTIONAL, INTENT(IN)      :: KXOR, KYOR, KZOR, &
-                                        KXEND, KYEND, KZEND
-!
-  EXTRACT_ll => E_EXTRACT_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                              KXEND, KYEND, KZEND )
-!
-       END FUNCTION EXTRACT_ll
-!
-!!     ###########################################################
-       FUNCTION SUM1D_ll( PFIELD, KDIR, KINFO, KXOR, KYOR, KZOR, &
-                           KXEND, KYEND, KZEND )
-!!     ###########################################################
-!
-  USE MODE_SUM_ll, ONLY : E_SUM1D_ll => SUM1D_ll
-!
-  REAL, DIMENSION(:,:), POINTER      :: SUM1D_ll
-  INTEGER, INTENT(IN)                :: KDIR
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD
-  INTEGER, INTENT(OUT)               :: KINFO
-  INTEGER, OPTIONAL, INTENT(IN)      :: KXOR, KYOR, KZOR, &
-                                        KXEND, KYEND, KZEND
-!
-  SUM1D_ll => E_SUM1D_ll( PFIELD, KDIR, KINFO, KXOR, KYOR, KZOR, &
-                        KXEND, KYEND, KZEND )
-!
-       END FUNCTION SUM1D_ll
-!
-!!     ###################################################################
-       FUNCTION SUM2D_ll( PFIELD, KDIR1, KDIR2, KINFO, KXOR, KYOR, KZOR, &
-                          KXEND, KYEND, KZEND )
-!!     ###################################################################
-!
-  USE MODE_SUM_ll, ONLY : E_SUM2D_ll => SUM2D_ll
-!
-  REAL, DIMENSION(:), POINTER        :: SUM2D_ll
-  INTEGER, INTENT(IN)                :: KDIR1, KDIR2
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD
-  INTEGER, INTENT(OUT)               :: KINFO
-  INTEGER, OPTIONAL, INTENT(IN)      :: KXOR, KYOR, KZOR, &
-                                        KXEND, KYEND, KZEND
-!
-  SUM2D_ll => E_SUM2D_ll( PFIELD, KDIR1, KDIR2, KINFO, KXOR, KYOR, KZOR, &
-                          KXEND, KYEND, KZEND )
-!
-       END FUNCTION SUM2D_ll
-!
-!!     #####################################################
-       FUNCTION SUM3D_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                          KXEND, KYEND, KZEND )
-!!     #####################################################
-!
-  USE MODE_SUM_ll, ONLY : E_SUM3D_ll => SUM3D_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD
-  INTEGER, INTENT(OUT)               :: KINFO
-  INTEGER, OPTIONAL, INTENT(IN)      :: KXOR, KYOR, KZOR, &
-                                        KXEND, KYEND, KZEND
-!
-  SUM3D_ll = E_SUM3D_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                          KXEND, KYEND, KZEND )
-!
-       END FUNCTION SUM3D_ll
-!
-!!     #######################################################################
-       FUNCTION SUM_1DFIELD_ll( PFIELD, HDIR, KOR, KEND, KERR ) RESULT( ZSUM )
-!!     #######################################################################
-!
-  USE MODE_SUM_ll, ONLY : E_SUM_1DFIELD_ll => SUM_1DFIELD_ll
-!
-  REAL, DIMENSION(:), INTENT(IN) :: PFIELD
-  CHARACTER(LEN=1)               :: HDIR
-  INTEGER, OPTIONAL, INTENT(OUT) :: KERR
-  INTEGER, OPTIONAL, INTENT(IN)  :: KOR, KEND
-  REAL                           :: ZSUM
-!
-  ZSUM = E_SUM_1DFIELD_ll( PFIELD, HDIR, KOR, KEND, KERR )
-!
-       END FUNCTION SUM_1DFIELD_ll
-!
-!!     ###################################################
-       FUNCTION MAX_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                             KXEND, KYEND, KZEND )
-!!     ###################################################
-!
-  USE MODE_SUM_ll, ONLY : E_MAX_ll => MAX_ll
-!
-  REAL                               :: MAX_ll
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD
-  INTEGER, INTENT(OUT)               :: KINFO
-  INTEGER, OPTIONAL, INTENT(IN)      :: KXOR, KYOR, KZOR, &
-                                        KXEND, KYEND, KZEND
-!
-  MAX_ll = E_MAX_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                     KXEND, KYEND, KZEND )
-!
-       END FUNCTION MAX_ll
-!
-!!     ###################################################
-       FUNCTION MIN_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                             KXEND, KYEND, KZEND )
-!!     ###################################################
-!
-  USE MODE_SUM_ll, ONLY : E_MIN_ll => MIN_ll
-!
-  REAL                               :: MIN_ll
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD
-  INTEGER, INTENT(OUT)               :: KINFO
-  INTEGER, OPTIONAL, INTENT(IN)      :: KXOR, KYOR, KZOR, &
-                                         KXEND, KYEND, KZEND
-!
-  MIN_ll = E_MIN_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                             KXEND, KYEND, KZEND )
-!
-       END FUNCTION MIN_ll
-!
-!!     ###########################################
-       FUNCTION SUMMASK_ll( PFIELD, OMASK, KINFO )
-!!     ###########################################
-!
-  USE MODE_SUM_ll, ONLY : E_SUMMASK_ll => SUMMASK_ll
-!
-  REAL, DIMENSION(:), POINTER         :: SUMMASK_ll
-  REAL, DIMENSION(:,:,:), INTENT(IN)  :: PFIELD
-  LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASK
-  INTEGER, INTENT(OUT)                :: KINFO
-!
-  SUMMASK_ll => E_SUMMASK_ll( PFIELD, OMASK, KINFO )
-!
-       END FUNCTION SUMMASK_ll
-!
-!!     ###############################################
-       FUNCTION SUMMASKCOMP_ll( PFIELD, OMASK, KINFO )
-!!     ###############################################
-!
-  USE MODE_SUM_ll, ONLY : E_SUMMASKCOMP_ll => SUMMASKCOMP_ll
-!
-  REAL                                :: SUMMASKCOMP_ll
-  REAL, DIMENSION(:,:,:), INTENT(IN)  :: PFIELD
-  LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASK
-  INTEGER, INTENT(OUT)                :: KINFO
-!
-  SUMMASKCOMP_ll = E_SUMMASKCOMP_ll( PFIELD, OMASK, KINFO )
-!
-       END FUNCTION SUMMASKCOMP_ll
-!
-!!     #############################################
-       SUBROUTINE SUM_DIM1_ll( PFIELD, PRES, KINFO )
-!!     #############################################
-!
-  USE MODE_SUM_ll, ONLY : E_SUM_DIM1_ll => SUM_DIM1_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD
-  REAL, DIMENSION(:,:), INTENT(OUT)  :: PRES
-  INTEGER, INTENT(OUT)               :: KINFO
-!
-  CALL E_SUM_DIM1_ll( PFIELD, PRES, KINFO )
-!
-       END SUBROUTINE SUM_DIM1_ll
-!
-!!     #############################################
-       SUBROUTINE SUM_DIM2_ll( PFIELD, PRES, KINFO )
-!!     #############################################
-!
-  USE MODE_SUM_ll, ONLY : E_SUM_DIM2_ll => SUM_DIM2_ll
-!
-  REAL, DIMENSION(:), INTENT(IN)  :: PFIELD
-  REAL, DIMENSION(:), INTENT(OUT) :: PRES
-  INTEGER, INTENT(OUT)            :: KINFO
-!
-  CALL E_SUM_DIM2_ll( PFIELD, PRES, KINFO )
-!
-       END SUBROUTINE SUM_DIM2_ll
-!
-!!     #######################################################
-       FUNCTION GMAXLOC3D_ll( PARRAY, MASK ) RESULT( KMAXLOC )
-!!     #######################################################
-!
-  USE MODE_SUM2_ll, ONLY : E_GMAXLOC3D_ll => GMAXLOC3D_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN)              :: PARRAY
-  LOGICAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: MASK
-  INTEGER, DIMENSION(3)                           :: KMAXLOC
-!
-  KMAXLOC = E_GMAXLOC3D_ll( PARRAY, MASK )
-!
-       END FUNCTION GMAXLOC3D_ll
-!
-!!     ##############################################################
-       FUNCTION GMAXLOC2D_ll( PARRAY, KDIMS, MASK ) RESULT( KMAXLOC )
-!!     ##############################################################
-!
-  USE MODE_SUM2_ll, ONLY : E_GMAXLOC2D_ll => GMAXLOC2D_ll
-!
-  REAL, DIMENSION(:,:), INTENT(IN)              :: PARRAY
-  LOGICAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: MASK
-  INTEGER, DIMENSION(2)                         :: KMAXLOC
-  INTEGER, DIMENSION(2), OPTIONAL               :: KDIMS
-!
-  KMAXLOC = E_GMAXLOC2D_ll( PARRAY, KDIMS, MASK )
-!
-       END FUNCTION GMAXLOC2D_ll
-!
-!!     ##############################################################
-       FUNCTION GMAXLOC1D_ll( PARRAY, KDIMS, MASK ) RESULT( KMAXLOC )
-!!     ##############################################################
-!
-  USE MODE_SUM2_ll, ONLY : E_GMAXLOC1D_ll => GMAXLOC1D_ll
-!
-  REAL, DIMENSION(:), INTENT(IN)              :: PARRAY
-  LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: MASK
-  INTEGER                                     :: KMAXLOC
-  INTEGER,  OPTIONAL                          :: KDIMS
-!
-  KMAXLOC = E_GMAXLOC1D_ll( PARRAY, KDIMS, MASK )
-!
-       END FUNCTION GMAXLOC1D_ll
-!
-!!     #######################################################
-       FUNCTION GMINLOC3D_ll( PARRAY, MASK ) RESULT( KMINLOC )
-!!     #######################################################
-!
-  USE MODE_SUM2_ll, ONLY : E_GMINLOC3D_ll => GMINLOC3D_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN)              :: PARRAY
-  LOGICAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: MASK
-  INTEGER, DIMENSION(3)                           :: KMINLOC
-!
-  KMINLOC = E_GMINLOC3D_ll( PARRAY, MASK )
-!
-       END FUNCTION GMINLOC3D_ll
-!
-!!     ##############################################################
-       FUNCTION GMINLOC2D_ll( PARRAY, KDIMS, MASK ) RESULT( KMINLOC )
-!!     ##############################################################
-!
-  USE MODE_SUM2_ll, ONLY : E_GMINLOC2D_ll => GMINLOC2D_ll
-!
-  REAL, DIMENSION(:,:), INTENT(IN)              :: PARRAY
-  LOGICAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: MASK
-  INTEGER, DIMENSION(2)                         :: KMINLOC
-  INTEGER, DIMENSION(2), OPTIONAL               :: KDIMS
-!
-  KMINLOC = E_GMINLOC2D_ll( PARRAY, KDIMS, MASK )
-!
-       END FUNCTION GMINLOC2D_ll
-!
-!!     ##############################################################
-       FUNCTION GMINLOC1D_ll( PARRAY, KDIMS, MASK ) RESULT( KMINLOC )
-!!     ##############################################################
-!
-  USE MODE_SUM2_ll, ONLY : E_GMINLOC1D_ll => GMINLOC1D_ll
-!
-  REAL, DIMENSION(:), INTENT(IN)              :: PARRAY
-  LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: MASK
-  INTEGER                                     :: KMINLOC
-  INTEGER,  OPTIONAL                          :: KDIMS
-!
-  KMINLOC = E_GMINLOC1D_ll( PARRAY, KDIMS, MASK )
-!
-       END FUNCTION GMINLOC1D_ll
-!
-
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_0DD_ll( PRES, KINFO )
-!!     ##########################################
-!
-         USE MODD_REPRO_SUM , ONLY : DOUBLE_DOUBLE
-         USE MODE_SUM_ll    , ONLY : E_REDUCE_SUM_0DD_ll => REDUCE_SUM_0DD_ll
-         !
-         TYPE(DOUBLE_DOUBLE) , INTENT(INOUT)  :: PRES
-         INTEGER             , INTENT(OUT)    :: KINFO 
-         !
-         CALL E_REDUCE_SUM_0DD_ll(PRES, KINFO)
-!
-       END SUBROUTINE REDUCE_SUM_0DD_ll
-
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_0D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_0D_ll => REDUCE_SUM_0D_ll
-!
-  REAL, INTENT(INOUT)  :: PRES
-  INTEGER, INTENT(OUT) :: KINFO
-!
-  CALL E_REDUCE_SUM_0D_ll(PRES, KINFO)
-!
-       END SUBROUTINE REDUCE_SUM_0D_ll
-!
-
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_1DD_ll( PRES, KINFO )
-!!     ##########################################
-!
-         USE MODD_REPRO_SUM  , ONLY :  DOUBLE_DOUBLE
-         USE MODE_SUM_ll     , ONLY : E_REDUCE_SUM_1DD_ll => REDUCE_SUM_1DD_ll
-         !
-         TYPE(DOUBLE_DOUBLE), DIMENSION(:), INTENT(INOUT) :: PRES
-         INTEGER                          , INTENT(OUT)   :: KINFO
-         !
-         CALL E_REDUCE_SUM_1DD_ll( PRES, KINFO )
-!
-
-       END SUBROUTINE REDUCE_SUM_1DD_ll
-
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_1D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_1D_ll => REDUCE_SUM_1D_ll
-!
-  REAL, DIMENSION(:), INTENT(INOUT) :: PRES
-  INTEGER, INTENT(OUT)              :: KINFO
-!
-  CALL E_REDUCE_SUM_1D_ll( PRES, KINFO )
-!
-       END SUBROUTINE REDUCE_SUM_1D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_2D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_2D_ll => REDUCE_SUM_2D_ll
-!
-  REAL, DIMENSION(:,:), INTENT(INOUT) :: PRES
-  INTEGER, INTENT(OUT)                :: KINFO
-!
-  CALL E_REDUCE_SUM_2D_ll( PRES, KINFO )
-!
-       END SUBROUTINE REDUCE_SUM_2D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_3D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_3D_ll => REDUCE_SUM_3D_ll
-!
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRES
-  INTEGER, INTENT(OUT)                  :: KINFO
-!
-  CALL E_REDUCE_SUM_3D_ll(PRES, KINFO)
-!
-       END SUBROUTINE REDUCE_SUM_3D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_I0D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_I0D_ll => REDUCE_SUM_I0D_ll
-!
-  INTEGER, INTENT(INOUT)  :: PRES
-  INTEGER, INTENT(OUT) :: KINFO
-!
-  CALL E_REDUCE_SUM_I0D_ll(PRES, KINFO)
-!
-       END SUBROUTINE REDUCE_SUM_I0D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_I1D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_I1D_ll => REDUCE_SUM_I1D_ll
-!
-  INTEGER, DIMENSION(:), INTENT(INOUT) :: PRES
-  INTEGER, INTENT(OUT)              :: KINFO
-!
-  CALL E_REDUCE_SUM_I1D_ll( PRES, KINFO )
-!
-       END SUBROUTINE REDUCE_SUM_I1D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_I2D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_I2D_ll => REDUCE_SUM_I2D_ll
-!
-  INTEGER, DIMENSION(:,:), INTENT(INOUT) :: PRES
-  INTEGER, INTENT(OUT)                :: KINFO
-!
-  CALL E_REDUCE_SUM_I2D_ll( PRES, KINFO )
-!
-       END SUBROUTINE REDUCE_SUM_I2D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_I3D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_I3D_ll => REDUCE_SUM_I3D_ll
-!
-  INTEGER, DIMENSION(:,:,:), INTENT(INOUT) :: PRES
-  INTEGER, INTENT(OUT)                  :: KINFO
-!
-  CALL E_REDUCE_SUM_I3D_ll(PRES, KINFO)
-!
-       END SUBROUTINE REDUCE_SUM_I3D_ll
-!
-
-!!     ##########################################
-       SUBROUTINE UPDATE_HALO_ll( TPLIST, KINFO )
-!!     ##########################################
-!
-  USE MODE_EXCHANGE_ll, ONLY : E_UPDATE_HALO_ll => UPDATE_HALO_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER :: TPLIST
-  INTEGER                :: KINFO
-!
-  CALL E_UPDATE_HALO_ll( TPLIST, KINFO )
-!
-       END SUBROUTINE UPDATE_HALO_ll
-!
-!!     ############################################
-       SUBROUTINE UPDATE_1DHALO_ll( TPLIST, KINFO )
-!!     ############################################
-!
-  USE MODE_EXCHANGE_ll, ONLY : E_UPDATE_1DHALO_ll => UPDATE_1DHALO_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll
-!
-  TYPE(LIST1D_ll), POINTER :: TPLIST
-  INTEGER, INTENT(OUT)     :: KINFO
-!
-  CALL E_UPDATE_1DHALO_ll( TPLIST, KINFO )
-!
-       END SUBROUTINE UPDATE_1DHALO_ll
-!
-!!     ############################################################
-       SUBROUTINE UPDATE_BOUNDARIES_ll( HDIRECTION, TPLIST, KINFO )
-!!     ############################################################
-!
-  USE MODE_BOUNDARIES_ll, ONLY : E_UPDATE_BOUNDARIES_ll => UPDATE_BOUNDARIES_ll
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  CHARACTER(len=2), INTENT(IN) :: HDIRECTION
-  TYPE(LIST_ll), POINTER  :: TPLIST
-  INTEGER                 :: KINFO
-!
-  CALL E_UPDATE_BOUNDARIES_ll( HDIRECTION, TPLIST, KINFO )
-!
-       END SUBROUTINE UPDATE_BOUNDARIES_ll
-!
-!!     ####################################################################
-       SUBROUTINE INIT_HALO2_ll( TPHALO2LIST, KNBVAR, KDIMX, KDIMY, KDIMZ )
-!!     ####################################################################
-!
-  USE MODE_EXCHANGE2_ll, ONLY : E_INIT_HALO2_ll => INIT_HALO2_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
-!
-  TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST
-  INTEGER                     :: KNBVAR
-  INTEGER                     :: KDIMX, KDIMY, KDIMZ
-!
-  CALL E_INIT_HALO2_ll(TPHALO2LIST, KNBVAR, KDIMX, KDIMY, KDIMZ)
-!
-       END SUBROUTINE INIT_HALO2_ll
-!
-!!     ########################################################
-       SUBROUTINE UPDATE_HALO2_ll( TPLIST, TPLISTHALO2, KINFO )
-!!     ########################################################
-!
-  USE MODE_EXCHANGE2_ll, ONLY : E_UPDATE_HALO2_ll => UPDATE_HALO2_ll
-!
-  USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll,LIST_ll
-!
-  TYPE(LIST_ll), POINTER      :: TPLIST
-  TYPE(HALO2LIST_ll), POINTER :: TPLISTHALO2
-  INTEGER                     :: KINFO
-!
-  CALL E_UPDATE_HALO2_ll( TPLIST, TPLISTHALO2, KINFO )
-!
-       END SUBROUTINE UPDATE_HALO2_ll
-!
-!     #########################
-      SUBROUTINE SCATTER(P1,P2)
-!     #########################
-!
-USE MODE_SCATTER_ll
-USE MODD_MPIF
-USE MODD_VAR_ll , ONLY : NMNH_COMM_WORLD
-!
-IMPLICIT NONE
-!
-!  INCLUDE 'mpif.h'
-!
-REAL, DIMENSION(:,:),  INTENT(IN)    :: P1
-REAL, DIMENSION(:,:),  INTENT(OUT)   :: P2
-!
-CALL SCATTER_XYFIELD(P1,P2,1,NMNH_COMM_WORLD)
-!
-END SUBROUTINE SCATTER
diff --git a/src/LIB/SURCOUCHE/src/mode_double_double.f90 b/src/LIB/SURCOUCHE/src/mode_double_double.f90
index 809944ce84da22fcc09397b1a5ff0542bc96b098..b9e58898f24f8dd022c8f70c6dc6031f6e5427cc 100644
--- a/src/LIB/SURCOUCHE/src/mode_double_double.f90
+++ b/src/LIB/SURCOUCHE/src/mode_double_double.f90
@@ -1,18 +1,27 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2010-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.
 !-----------------------------------------------------------------
 !Correction :
 !  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !-----------------------------------------------------------------
 MODULE modd_repro_sum
+
+  implicit none
+
   TYPE DOUBLE_DOUBLE
      SEQUENCE
      REAL :: R , E
   END TYPE DOUBLE_DOUBLE
+
+  LOGICAL, save :: FIRST_CALL_DD     = .TRUE.
+  INTEGER, save :: MNH_DOUBLE_DOUBLE
+  INTEGER, save :: MNH_SUM_DD
+
 END MODULE modd_repro_sum
 
+
 MODULE mode_repro_sum
 
   USE MODD_MPIF 
@@ -20,9 +29,6 @@ MODULE mode_repro_sum
 
   IMPLICIT NONE
 
-  LOGICAL :: FIRST_CALL_DD     = .TRUE.
-  INTEGER :: MNH_DOUBLE_DOUBLE 
-  INTEGER :: MNH_SUM_DD  
 
 !!$  INTERFACE ADD   
 !!$     MODULE PROCEDURE RPDD 
@@ -42,66 +48,6 @@ MODULE mode_repro_sum
 
 CONTAINS
 
-  SUBROUTINE INIT_DD(KINFO)
-    use modd_precision, only: MNHREAL_MPI
-    IMPLICIT NONE
-    INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-    !
-    ! define the double-double for MPI
-    !
-    CALL MPI_TYPE_CONTIGUOUS(2, MNHREAL_MPI ,MNH_DOUBLE_DOUBLE , KINFO)
-    CALL MPI_TYPE_COMMIT(MNH_DOUBLE_DOUBLE , KINFO)
-    !
-    ! define the double-double sum = MNH_SUM_DD  for MPI 
-    !
-    CALL MPI_OP_CREATE(DDPDD, .TRUE., MNH_SUM_DD, KINFO)
-    FIRST_CALL_DD = .FALSE.
-    !
-  END SUBROUTINE INIT_DD
-  
-  PURE SUBROUTINE DDPDD (dda, ddb, len, itype)
-    !----------------------------------------------------------------------
-    ! 
-    ! Purpose: 
-    ! Modification of original codes written by David H. Bailey    
-    ! This subroutine computes ddb(i) = dda(i)+ddb(i)
-    ! for use with MPI_*_REDUCE
-    ! 
-    !----------------------------------------------------------------------
-    !
-    ! Arguments
-    !
-    INTEGER, INTENT(in)                :: len       ! array length
-    TYPE(DOUBLE_DOUBLE), INTENT(in)    :: dda(len)  ! input
-    TYPE(DOUBLE_DOUBLE), INTENT(inout) :: ddb(len)  ! result
-    INTEGER, INTENT(in)                :: itype     ! unused
-    !
-    ! Local workspace
-    !
-    REAL e, t1, t2
-    INTEGER i
-    !
-    !-----------------------------------------------------------------------
-    !
-    DO i = 1, len
-       !
-       !   Compute dda + ddb using Knuth's trick.
-       !
-       t1 = dda(i)%R + ddb(i)%R
-       e  = t1 - dda(i)%R
-       t2 = ((ddb(i)%R - e) + (dda(i)%R - (t1 - e))) &
-            + dda(i)%E + ddb(i)%E
-       !
-       !   The result is t1 + t2, after normalization.
-       !
-       ddb(i)%R = t1 + t2
-       ddb(i)%E = t2 - ((t1 + t2) - t1) 
-    ENDDO
-
-    RETURN
-
-  END SUBROUTINE DDPDD
-
   ELEMENTAL SUBROUTINE RPDD (a, ddb)
     !----------------------------------------------------------------------
     ! 
@@ -232,7 +178,7 @@ CONTAINS
     ! Could be inlined by compiler <=> elemental function
     ! 
     !----------------------------------------------------------------------
-    USE MODE_ll , ONLY : REDUCESUM_ll
+    USE mode_reduce_sum, ONLY: REDUCESUM_ll
     !
     ! Arguments
     !
@@ -277,7 +223,7 @@ CONTAINS
     ! This subroutine computes c(1:n2) = sum_dd(a(:,1:n2)) on all processors
     ! 
     !----------------------------------------------------------------------
-    USE MODE_ll , ONLY : REDUCESUM_ll
+    USE mode_reduce_sum, ONLY: REDUCESUM_ll
     !
     ! Arguments
     !
@@ -320,7 +266,7 @@ CONTAINS
     ! This subroutine computes c = sum_dd(a(:)) on all processors
     ! 
     !----------------------------------------------------------------------
-    USE MODE_ll , ONLY : REDUCESUM_ll
+    USE mode_reduce_sum, ONLY: REDUCESUM_ll
     !
     ! Arguments
     !
diff --git a/src/LIB/SURCOUCHE/src/mode_lb_ll.f90 b/src/LIB/SURCOUCHE/src/mode_lb_ll.f90
index df07aafd0efd670325b161dc2f29b47c427cfc57..eff5ff16498bf22ab1a3bd24253e08c96fb52f00 100644
--- a/src/LIB/SURCOUCHE/src/mode_lb_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_lb_ll.f90
@@ -1809,7 +1809,7 @@
 !*       0.     DECLARATIONS
 !               ------------
 !
-  USE MODE_ll
+  USE MODE_TOOLS_ll, only: LWEST_ll, LEAST_ll
   !
   IMPLICIT NONE
   !
@@ -1846,7 +1846,7 @@
 !*       0.     DECLARATIONS
 !               ------------
 !
-  USE MODE_ll
+  USE MODE_TOOLS_ll, only: LNORTH_ll, LSOUTH_ll
   !
   IMPLICIT NONE
   !
diff --git a/src/LIB/SURCOUCHE/src/mode_ll.f90 b/src/LIB/SURCOUCHE/src/mode_ll.f90
index 30bf677904825aa22ab4e4a1907455e9dd6d5c40..b40ef97c3865d171b53f3577ed7cc52b5d0c83ac 100644
--- a/src/LIB/SURCOUCHE/src/mode_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_ll.f90
@@ -1,20 +1,14 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2005-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for CVS information
+! Modifications
+!  P. Wautelet 14/06/2019: use mode_* instead of modi_*
 !-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-!     ##############
-      MODULE MODE_ll
-!     ##############
+!#############
+MODULE MODE_ll
+!#############
 !
 !!     Purpose
 !!     -------
@@ -23,24 +17,21 @@
 !      of the user interface
 !
 !------------------------------------------------------------------------------
-! 
-  USE MODD_ARGSLIST_ll
-!
-  USE MODI_INIT_ll
-!
-  USE MODI_ADDnDFIELD_ll
-  USE MODI_DELnDFIELD_ll
-!
-  USE MODI_ADDDELFIELD2_ll
 !
-  USE MODI_UPDATE_ll
-  USE MODI_REMAP_ll
-!
-  USE MODI_SUM_ll 
-!
-  USE MODI_GET_ll 
-  USE MODI_LOCATION_ll 
-!
-  USE MODI_NEST_ll 
-! 
+use modd_argslist_ll
+
+use mode_argslist_ll
+use mode_argslist2_ll
+use mode_exchange_ll
+use mode_exchange2_ll
+use mode_gather_ll
+use mode_init_ll
+use mode_lb_ll
+use mode_ls_ll
+use mode_nest_ll
+use mode_reduce_sum
+use mode_scatter_ll
+use mode_sum_ll
+use mode_tools_ll
+
 END MODULE MODE_ll
diff --git a/src/LIB/SURCOUCHE/src/mode_ls_ll.f90 b/src/LIB/SURCOUCHE/src/mode_ls_ll.f90
index 5c0a214647c187c66834f224504bfb8495187782..053f3fb527933efcebcac4b6a7eaab4f4f33bac3 100644
--- a/src/LIB/SURCOUCHE/src/mode_ls_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_ls_ll.f90
@@ -54,11 +54,21 @@
 !
 !------------------------------------------------------------------------------
 !
-  USE MODD_STRUCTURE_ll
+USE MODD_STRUCTURE_ll
 
-  use mode_msg
-!
-  CONTAINS
+use mode_msg
+
+implicit none
+
+interface SET_LSFIELD_1WAY_ll
+  module procedure SET_LS2DFIELD_1WAY_ll, SET_LS3DFIELD_1WAY_ll
+end interface
+
+interface SET_LSFIELD_2WAY_ll
+  module procedure SET_LS2DFIELD_2WAY_ll, SET_LS3DFIELD_2WAY_ll
+end interface
+
+CONTAINS
 !
 !     ###########################################################
       SUBROUTINE SET_LS2DFIELD_1WAY_ll(P2DFIELD, PTFIELD, KMODEL)
diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
index e923178060930ef2ce34ba378651808749d34a60..15727c382c58ae8b7129bb95a03fff771eb02b73 100644
--- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
@@ -20,6 +20,7 @@ MODULE MODE_MPPDB
 !
   use ISO_FORTRAN_ENV, only: OUTPUT_UNIT
 
+  use MODE_TOOLS_ll, only: GET_GLOBALDIMS_ll, GET_INDICE_ll
   use mode_msg
 
   use modi_tools_c
@@ -624,7 +625,6 @@ CONTAINS
     use modd_precision,     only: MNHINT_MPI, MNHREAL_MPI
 
     USE MODE_DISTRIB_LB
-    USE MODE_TOOLS_ll,      ONLY: GET_GLOBALDIMS_ll
 
     IMPLICIT NONE
 
diff --git a/src/LIB/SURCOUCHE/src/mode_reduce_sum.f90 b/src/LIB/SURCOUCHE/src/mode_reduce_sum.f90
new file mode 100644
index 0000000000000000000000000000000000000000..a0411f18362f28095cb9bf6a06798433aa19375b
--- /dev/null
+++ b/src/LIB/SURCOUCHE/src/mode_reduce_sum.f90
@@ -0,0 +1,742 @@
+!MNH_LIC Copyright 1998-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.
+!-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!  P. Wautelet 21/06/2019: mode REDUCESUM_ll subroutine to mode_reduce_sum.f90 (to remove circular dependencies between modules)
+!-----------------------------------------------------------------
+module mode_reduce_sum
+
+USE MODD_MPIF
+use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
+USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
+USE modd_repro_sum
+
+implicit none
+
+INTERFACE REDUCESUM_ll
+   MODULE PROCEDURE REDUCE_SUM_0DD_ll, REDUCE_SUM_1DD_ll,                                      &
+                    REDUCE_SUM_0D_ll,  REDUCE_SUM_1D_ll,  REDUCE_SUM_2D_ll,  REDUCE_SUM_3D_ll, &
+                    REDUCE_SUM_I0D_ll, REDUCE_SUM_I1D_ll, REDUCE_SUM_I2D_ll, REDUCE_SUM_I3D_ll
+END INTERFACE
+
+contains
+
+  SUBROUTINE INIT_DD(KINFO)
+    IMPLICIT NONE
+    INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+    !
+    ! define the double-double for MPI
+    !
+    CALL MPI_TYPE_CONTIGUOUS(2, MNHREAL_MPI ,MNH_DOUBLE_DOUBLE , KINFO)
+    CALL MPI_TYPE_COMMIT(MNH_DOUBLE_DOUBLE , KINFO)
+    !
+    ! define the double-double sum = MNH_SUM_DD  for MPI
+    !
+    CALL MPI_OP_CREATE(DDPDD, .TRUE., MNH_SUM_DD, KINFO)
+    FIRST_CALL_DD = .FALSE.
+    !
+  END SUBROUTINE INIT_DD
+
+  PURE SUBROUTINE DDPDD (dda, ddb, len, itype)
+    !----------------------------------------------------------------------
+    !
+    ! Purpose:
+    ! Modification of original codes written by David H. Bailey
+    ! This subroutine computes ddb(i) = dda(i)+ddb(i)
+    ! for use with MPI_*_REDUCE
+    !
+    !----------------------------------------------------------------------
+    !
+    ! Arguments
+    !
+    INTEGER, INTENT(in)                :: len       ! array length
+    TYPE(DOUBLE_DOUBLE), INTENT(in)    :: dda(len)  ! input
+    TYPE(DOUBLE_DOUBLE), INTENT(inout) :: ddb(len)  ! result
+    INTEGER, INTENT(in)                :: itype     ! unused
+    !
+    ! Local workspace
+    !
+    REAL e, t1, t2
+    INTEGER i
+    !
+    !-----------------------------------------------------------------------
+    !
+    DO i = 1, len
+       !
+       !   Compute dda + ddb using Knuth's trick.
+       !
+       t1 = dda(i)%R + ddb(i)%R
+       e  = t1 - dda(i)%R
+       t2 = ((ddb(i)%R - e) + (dda(i)%R - (t1 - e))) &
+            + dda(i)%E + ddb(i)%E
+       !
+       !   The result is t1 + t2, after normalization.
+       !
+       ddb(i)%R = t1 + t2
+       ddb(i)%E = t2 - ((t1 + t2) - t1)
+    ENDDO
+
+    RETURN
+
+  END SUBROUTINE DDPDD
+
+!     ########################################
+      SUBROUTINE REDUCE_SUM_0DD_ll(PRES, KINFO)
+!     ########################################
+!
+!!****  *REDUCE_SUM_0DD_ll*-
+!
+!!    Purpose
+!!    -------
+!     This routine calculates the sum of the values
+!     of the scalar argument PRES on processors.
+!
+!     REDUCE_SUM_0Q_ll is the routine for scalar REAL*16 argument
+!     of the generic routine REDUCESUM_ll.
+!
+!!    Method
+!!    ------
+!     Before the call to REDUCE_SUM_0Q_ll, each processor
+!     computes its local sum PRES; in REDUCE_SUM_0Q_ll
+!     we reduce this values and return the global sum
+!     in the PRES variable  REAL*16.
+!
+!!    External
+!!    --------
+!
+!!    Implicit Arguments
+!!    ------------------
+!
+!
+!!    Author
+!!    ------
+!     Ph. Kloos      * CNRM - CERFACS *
+!
+!!    Modifications
+!!    -------------
+!     Original 27/06/98
+!     R. Guivarch 09/07/98 Same argument PRES INOUT
+!
+!-----------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  TYPE(DOUBLE_DOUBLE), INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  TYPE(DOUBLE_DOUBLE)  :: ZRES ! sum
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  IF (FIRST_CALL_DD) CALL INIT_DD(KINFO)
+  ZRES%R = 0.0 ;  ZRES%E = 0.0
+  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNH_DOUBLE_DOUBLE , &
+                     MNH_SUM_DD, NMNH_COMM_WORLD, KINFO)
+
+  PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE REDUCE_SUM_0DD_ll
+!
+!     ########################################
+      SUBROUTINE REDUCE_SUM_0D_ll(PRES, KINFO)
+!     ########################################
+!
+!!****  *REDUCE_SUM_0D_ll*-
+!
+!!    Purpose
+!!    -------
+!     This routine calculates the sum of the values
+!     of the scalar argument PRES on processors.
+!
+!     REDUCE_SUM_0D_ll is the routine for scalar argument
+!     of the generic routine REDUCESUM_ll.
+!
+!!    Method
+!!    ------
+!     Before the call to REDUCE_SUM_0D_ll, each processor
+!     computes its local sum PRES; in REDUCE_SUM_0D_ll
+!     we reduce this values and return the global sum
+!     in the PRES variable.
+!
+!!    External
+!!    --------
+!
+!!    Implicit Arguments
+!!    ------------------
+!
+!
+!!    Author
+!!    ------
+!     Ph. Kloos      * CNRM - CERFACS *
+!
+!!    Modifications
+!!    -------------
+!     Original 27/06/98
+!     R. Guivarch 09/07/98 Same argument PRES INOUT
+!
+!-----------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  REAL, INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  REAL :: ZRES ! Intermediate result
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHREAL_MPI, &
+                     MPI_SUM, NMNH_COMM_WORLD, KINFO)
+!
+  PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+      END SUBROUTINE REDUCE_SUM_0D_ll
+!
+!     ########################################
+      SUBROUTINE REDUCE_SUM_1DD_ll(PRES, KINFO)
+!     ########################################
+!
+
+!!    Author
+!!    ------
+!     J.Escobar 22/10/2010
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+   TYPE(DOUBLE_DOUBLE), DIMENSION(:), INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  TYPE(DOUBLE_DOUBLE), DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum
+
+!
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  IF (FIRST_CALL_DD) CALL INIT_DD(KINFO)
+  ZRES%R = 0.0 ;  ZRES%E = 0.0
+  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES), MNH_DOUBLE_DOUBLE , &
+                     MNH_SUM_DD, NMNH_COMM_WORLD, KINFO)
+PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE REDUCE_SUM_1DD_ll
+!
+
+!     ########################################
+      SUBROUTINE REDUCE_SUM_1D_ll(PRES, KINFO)
+!     ########################################
+!
+!!****  *REDUCE_SUM_1D_ll*-
+!
+!!    Purpose
+!!    -------
+!     This routine calculates the sum of the values
+!     of the each entry of the one-dimensional vector PRES
+!     on all processors.
+!
+!     REDUCE_SUM_1D_ll is the routine for 1D argument
+!     of the generic routine REDUCESUM_ll.
+!
+!!    Method
+!!    ------
+!     Before the call to REDUCE_SUM_1D_ll, each processor
+!     computes its local 1D sum PRES; in REDUCE_SUM_1D_ll
+!     we reduce this values and return the global sum
+!     in the PRES variable.
+!
+!!    External
+!!    --------
+!
+!!    Implicit Arguments
+!!    ------------------
+!
+!
+!!    Author
+!!    ------
+!     Ph. Kloos      * CNRM - CERFACS *
+!
+!!    Modifications
+!!    -------------
+!     Original 27/06/98
+!     R. Guivarch 09/07/98 Same argument PRES INOUT
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  REAL, DIMENSION(:), INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  REAL, DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHREAL_MPI, &
+                     MPI_SUM, NMNH_COMM_WORLD, KINFO)
+!
+  PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+      END SUBROUTINE REDUCE_SUM_1D_ll
+!
+!     ########################################
+      SUBROUTINE REDUCE_SUM_2D_ll(PRES, KINFO)
+!     ########################################
+!
+!!****  *REDUCE_SUM_2D_ll*-
+!
+!!    Purpose
+!!    -------
+!     This routine calculates the sum of the values
+!     of the each entry of the two-dimensional vector PRES
+!     on all processors.
+!
+!     REDUCE_SUM_2D_ll is the routine for 2D argument
+!     of the generic routine REDUCESUM_ll.
+!
+!!    Method
+!!    ------
+!     Before the call to REDUCE_SUM_2D_ll, each processor
+!     computes its local 2D sum PRES; in REDUCE_SUM_2D_ll
+!     we reduce this values and return the global sum
+!     in the PRES variable.
+!
+!!    External
+!!    --------
+!
+!!    Implicit Arguments
+!!    ------------------
+!
+!
+!!    Author
+!!    ------
+!     Ph. Kloos      * CNRM - CERFACS *
+!
+!!    Modifications
+!!    -------------
+!     Original 27/06/98
+!     R. Guivarch 09/07/98 Same argument PRES INOUT
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  REAL, DIMENSION(:,:), INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  REAL, DIMENSION(SIZE(PRES,1),SIZE(PRES,2)) :: ZRES ! Intermediate sum
+!
+  INTEGER :: IDIM
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  IDIM = SIZE(PRES,1) * SIZE(PRES,2)
+!
+  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, &
+                     NMNH_COMM_WORLD, KINFO)
+!
+  PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+      END SUBROUTINE REDUCE_SUM_2D_ll
+!
+!     ########################################
+      SUBROUTINE REDUCE_SUM_3D_ll(PRES, KINFO)
+!     ########################################
+!
+!!****  *REDUCE_SUM_3D_ll*-
+!
+!!    Purpose
+!!    -------
+!     This routine calculates the sum of the values
+!     of the each entry of the three-dimensional vector PRES
+!     on all processors.
+!
+!     REDUCE_SUM_3D_ll is the routine for 3D argument
+!     of the generic routine REDUCESUM_ll.
+!
+!!    Method
+!!    ------
+!     Before the call to REDUCE_SUM_3D_ll, each processor
+!     computes its local 3D sum PRES; in REDUCE_SUM_3D_ll
+!     we reduce this values and return the global sum
+!     in the PRES variable.
+!
+!!    External
+!!    --------
+!
+!!    Implicit Arguments
+!!    ------------------
+!
+!
+!!    Author
+!!    ------
+!     Ph. Kloos      * CNRM - CERFACS *
+!
+!!    Modifications
+!!    -------------
+!     Original 27/06/98
+!     R. Guivarch 09/07/98 Same argument PRES INOUT
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  REAL, DIMENSION(SIZE(PRES,1),SIZE(PRES,2),SIZE(PRES,3)) :: ZRES ! Intermediate
+                                                                  ! sum
+!
+  INTEGER :: IDIM
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3)
+!
+  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, &
+                     NMNH_COMM_WORLD, KINFO)
+!
+  PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+      END SUBROUTINE REDUCE_SUM_3D_ll
+!
+!     ########################################
+      SUBROUTINE REDUCE_SUM_I0D_ll(PRES, KINFO)
+!     ########################################
+!
+!!****  *REDUCE_SUM_I0D_ll*-
+!
+!!    Purpose
+!!    -------
+!     This routine calculates the sum of the values
+!     of the scalar argument PRES on processors.
+!
+!     REDUCE_SUM_I0D_ll is the routine for integer scalar argument
+!     of the generic routine REDUCESUM_ll.
+!
+!!    Method
+!!    ------
+!     Before the call to REDUCE_SUM_I0D_ll, each processor
+!     computes its local sum PRES; in REDUCE_SUM_I0D_ll
+!     we reduce this values and return the global sum
+!     in the PRES variable.
+!
+!!    External
+!!    --------
+!
+!!    Author
+!!    ------
+!     D. Gazen  * L.A. *
+!
+!!    Modifications
+!!    -------------
+!     Original 4/09/2000
+!
+!-----------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  INTEGER, INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  INTEGER :: ZRES ! Intermediate result
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHINT_MPI, &
+                     MPI_SUM, NMNH_COMM_WORLD, KINFO)
+!
+  PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+      END SUBROUTINE REDUCE_SUM_I0D_ll
+!
+!     ########################################
+      SUBROUTINE REDUCE_SUM_I1D_ll(PRES, KINFO)
+!     ########################################
+!
+!!****  *REDUCE_SUM_I1D_ll*-
+!
+!!    Purpose
+!!    -------
+!     This routine calculates the sum of the values
+!     of the each entry of the one-dimensional vector PRES
+!     on all processors.
+!
+!     REDUCE_SUM_I1D_ll is the routine for integer 1D argument
+!     of the generic routine REDUCESUM_ll.
+!
+!!    Method
+!!    ------
+!     Before the call to REDUCE_SUM_I1D_ll, each processor
+!     computes its local 1D sum PRES; in REDUCE_SUM_I1D_ll
+!     we reduce this values and return the global sum
+!     in the PRES variable.
+!
+!!    External
+!!    --------
+!
+!!    Author
+!!    ------
+!     D. Gazen  * L.A. *
+!
+!!    Modifications
+!!    -------------
+!     Original 4/09/2000
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  INTEGER, DIMENSION(:), INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  INTEGER, DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHINT_MPI, &
+                     MPI_SUM, NMNH_COMM_WORLD, KINFO)
+!
+  PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+      END SUBROUTINE REDUCE_SUM_I1D_ll
+!
+!     ########################################
+      SUBROUTINE REDUCE_SUM_I2D_ll(PRES, KINFO)
+!     ########################################
+!
+!!****  *REDUCE_SUM_2D_ll*-
+!
+!!    Purpose
+!!    -------
+!     This routine calculates the sum of the values
+!     of the each entry of the two-dimensional vector PRES
+!     on all processors.
+!
+!     REDUCE_SUM_I2D_ll is the routine for integer 2D argument
+!     of the generic routine REDUCESUM_ll.
+!
+!!    Method
+!!    ------
+!     Before the call to REDUCE_SUM_I2D_ll, each processor
+!     computes its local 2D sum PRES; in REDUCE_SUM_I2D_ll
+!     we reduce this values and return the global sum
+!     in the PRES variable.
+!
+!!    External
+!!    --------
+!
+!!    Author
+!!    ------
+!     D. Gazen  * L.A. *
+!
+!!    Modifications
+!!    -------------
+!     Original 4/09/2000
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  INTEGER, DIMENSION(:,:), INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  INTEGER, DIMENSION(SIZE(PRES,1),SIZE(PRES,2)) :: ZRES ! Intermediate sum
+!
+  INTEGER :: IDIM
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  IDIM = SIZE(PRES,1) * SIZE(PRES,2)
+!
+  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, &
+                     NMNH_COMM_WORLD, KINFO)
+!
+  PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+      END SUBROUTINE REDUCE_SUM_I2D_ll
+!
+!     ########################################
+      SUBROUTINE REDUCE_SUM_I3D_ll(PRES, KINFO)
+!     ########################################
+!
+!!****  *REDUCE_SUM_I3D_ll*-
+!
+!!    Purpose
+!!    -------
+!     This routine calculates the sum of the values
+!     of the each entry of the three-dimensional vector PRES
+!     on all processors.
+!
+!     REDUCE_SUM_I3D_ll is the routine for 3D argument
+!     of the generic routine REDUCESUM_ll.
+!
+!!    Method
+!!    ------
+!     Before the call to REDUCE_SUM_I3D_ll, each processor
+!     computes its local 3D sum PRES; in REDUCE_SUM_I3D_ll
+!     we reduce this values and return the global sum
+!     in the PRES variable.
+!
+!!    External
+!!    --------
+!
+!!    Author
+!!    ------
+!     D. Gazen  * L.A. *
+!
+!!    Modifications
+!!    -------------
+!     Original 4/09/2000
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!
+  IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+  INTEGER, DIMENSION(:,:,:), INTENT(INOUT) :: PRES ! sum
+!
+  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
+!
+!*       0.2   Declarations of local variables :
+!
+  INTEGER, DIMENSION(SIZE(PRES,1),SIZE(PRES,2),SIZE(PRES,3)) :: ZRES ! Intermediate
+                                                                  ! sum
+!
+  INTEGER :: IDIM
+!
+!-------------------------------------------------------------------------------
+!
+!*       1. CALL THE MPI_ALLREDUCE ROUTINE
+!           ------------------------------
+!
+  IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3)
+!
+  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, &
+                     NMNH_COMM_WORLD, KINFO)
+!
+  PRES = ZRES
+!
+!-------------------------------------------------------------------------------
+!
+      END SUBROUTINE REDUCE_SUM_I3D_ll
+!
+!-------------------------------------------------------------------------------
+!
+end module mode_reduce_sum
diff --git a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90
index 77d08c6866ce897efa35164f450f5b2ed04e74b3..3ab67f7ba8364b8e0c4a5516bf4c44c4f99e0b15 100644
--- a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90
@@ -37,12 +37,18 @@
 !
 !------------------------------------------------------------------------------
 !
-   USE MODD_MPIF
-   !JUANZ
-   USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
-   !JUANZ
-!
-!  INCLUDE 'mpif.h'
+USE MODD_MPIF
+USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
+
+implicit none
+
+interface GMAXLOC_ll
+  module procedure GMAXLOC1D_ll, GMAXLOC2D_ll, GMAXLOC3D_ll
+end interface
+
+interface GMINLOC_ll
+  module procedure GMINLOC1D_ll, GMINLOC2D_ll, GMINLOC3D_ll
+end interface
 !
   CONTAINS
 !
diff --git a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90
index b5901a18c048334e0bfdf6649bc8158150ee27ce..e462ac4409840403d7c3f591481cb10f51083bb0 100644
--- a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-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.
@@ -6,6 +6,7 @@
 ! Modifications:
 !  J. Escobar  15/09/2015: WENO5 & JPHEXT <> 1
 !  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!  P. Wautelet 21/06/2019: mode REDUCESUM_ll subroutine to mode_reduce_sum.f90 (to remove circular dependencies between modules)
 !-----------------------------------------------------------------
 
 !     ##################
@@ -57,11 +58,15 @@
 !
 !------------------------------------------------------------------------------
 !
-   USE MODD_MPIF
-   use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
-   USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
+USE MODD_MPIF
+use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
+USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
+
+use mode_reduce_sum
+
+implicit none
 !
-  CONTAINS
+CONTAINS
 !
 !     #######################################################
       FUNCTION EXTRACT_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
@@ -118,7 +123,7 @@
 !
   USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT
   USE MODD_VAR_ll,        ONLY: TCRRT_COMDATA
-  USE MODE_TOOLS_ll,      ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
+  USE MODE_TOOLS_ll,      ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
 !
   IMPLICIT NONE
 !
@@ -368,7 +373,7 @@
   USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT
   USE MODD_VAR_ll,        ONLY: TCRRT_COMDATA
 !
-  USE MODE_TOOLS_ll,      ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
+  USE MODE_TOOLS_ll,      ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
 !
   IMPLICIT NONE
 !
@@ -670,7 +675,7 @@
   USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT
   USE MODD_VAR_ll,        ONLY: TCRRT_COMDATA
 !
-  USE MODE_TOOLS_ll,      ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
+  USE MODE_TOOLS_ll,      ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
 !
   IMPLICIT NONE
 !
@@ -971,7 +976,7 @@
   USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT
   USE MODD_VAR_ll,        ONLY: TCRRT_COMDATA
 !
-  USE MODE_TOOLS_ll,      ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
+  USE MODE_TOOLS_ll,      ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
 !
   USE MODE_TOOLS_ll
 !
@@ -1205,7 +1210,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
   USE MODD_STRUCTURE_ll,  ONLY: MODELSPLITTING_ll
   USE MODD_VAR_ll,        ONLY: IP, TCRRT_COMDATA, TCRRT_PROCONF, NPROC
 !
-  USE MODE_TOOLS_ll,      ONLY:  LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
+  USE MODE_TOOLS_ll,      ONLY:  GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
 !
   IMPLICIT NONE
 !
@@ -1405,7 +1410,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
   USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT
   USE MODD_VAR_ll,        ONLY: TCRRT_COMDATA
 !
-  USE MODE_TOOLS_ll,      ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
+  USE MODE_TOOLS_ll,      ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
 !
   IMPLICIT NONE
 !
@@ -1617,7 +1622,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
   USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT
   USE MODD_VAR_ll,        ONLY: TCRRT_COMDATA
 !
-  USE MODE_TOOLS_ll,      ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
+  USE MODE_TOOLS_ll,      ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll
 !
   IMPLICIT NONE
 !
@@ -2370,664 +2375,4 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
   
       END SUBROUTINE SUM_DIM1_ll
 !
-!     ########################################
-      SUBROUTINE REDUCE_SUM_0DD_ll(PRES, KINFO)
-!     ########################################
-!
-!!****  *REDUCE_SUM_0DD_ll*-
-!
-!!    Purpose
-!!    -------
-!     This routine calculates the sum of the values
-!     of the scalar argument PRES on processors.
-!
-!     REDUCE_SUM_0Q_ll is the routine for scalar REAL*16 argument
-!     of the generic routine REDUCESUM_ll.
-!
-!!    Method
-!!    ------
-!     Before the call to REDUCE_SUM_0Q_ll, each processor
-!     computes its local sum PRES; in REDUCE_SUM_0Q_ll
-!     we reduce this values and return the global sum
-!     in the PRES variable  REAL*16.
-!
-!!    External
-!!    --------
-!
-!!    Implicit Arguments
-!!    ------------------
-!
-!
-!!    Author
-!!    ------
-!     Ph. Kloos      * CNRM - CERFACS *
-!
-!!    Modifications
-!!    -------------
-!     Original 27/06/98
-!     R. Guivarch 09/07/98 Same argument PRES INOUT
-!
-!-----------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!
-  USE MODE_REPRO_SUM
-!
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-  TYPE(DOUBLE_DOUBLE), INTENT(INOUT) :: PRES ! sum 
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-!
-  TYPE(DOUBLE_DOUBLE)  :: ZRES ! sum 
-!
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  IF (FIRST_CALL_DD) CALL INIT_DD(KINFO)
-  ZRES%R = 0.0 ;  ZRES%E = 0.0
-  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNH_DOUBLE_DOUBLE , &
-                     MNH_SUM_DD, NMNH_COMM_WORLD, KINFO)
-
-  PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE REDUCE_SUM_0DD_ll
-!
-!     ########################################
-      SUBROUTINE REDUCE_SUM_0D_ll(PRES, KINFO)
-!     ########################################
-!
-!!****  *REDUCE_SUM_0D_ll*-
-!
-!!    Purpose
-!!    -------
-!     This routine calculates the sum of the values
-!     of the scalar argument PRES on processors.
-!
-!     REDUCE_SUM_0D_ll is the routine for scalar argument
-!     of the generic routine REDUCESUM_ll.
-!
-!!    Method
-!!    ------
-!     Before the call to REDUCE_SUM_0D_ll, each processor
-!     computes its local sum PRES; in REDUCE_SUM_0D_ll
-!     we reduce this values and return the global sum
-!     in the PRES variable.
-!
-!!    External
-!!    --------
-!
-!!    Implicit Arguments
-!!    ------------------
-!
-!
-!!    Author
-!!    ------
-!     Ph. Kloos      * CNRM - CERFACS *
-!
-!!    Modifications
-!!    -------------
-!     Original 27/06/98
-!     R. Guivarch 09/07/98 Same argument PRES INOUT
-!
-!-----------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-  REAL, INTENT(INOUT) :: PRES ! sum 
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-!
-  REAL :: ZRES ! Intermediate result
-!
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHREAL_MPI, &
-                     MPI_SUM, NMNH_COMM_WORLD, KINFO)
-!
-  PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE REDUCE_SUM_0D_ll
-!
-!     ########################################
-      SUBROUTINE REDUCE_SUM_1DD_ll(PRES, KINFO)
-!     ########################################
-!
-
-!!    Author
-!!    ------
-!     J.Escobar 22/10/2010
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!
-!
-        USE MODE_REPRO_SUM 
-
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-   TYPE(DOUBLE_DOUBLE), DIMENSION(:), INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-!
-  TYPE(DOUBLE_DOUBLE), DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum
-
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  IF (FIRST_CALL_DD) CALL INIT_DD(KINFO)
-  ZRES%R = 0.0 ;  ZRES%E = 0.0
-  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES), MNH_DOUBLE_DOUBLE , &
-                     MNH_SUM_DD, NMNH_COMM_WORLD, KINFO)
-PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE REDUCE_SUM_1DD_ll
-!
-
-!     ########################################
-      SUBROUTINE REDUCE_SUM_1D_ll(PRES, KINFO)
-!     ########################################
-!
-!!****  *REDUCE_SUM_1D_ll*-
-!
-!!    Purpose
-!!    -------
-!     This routine calculates the sum of the values
-!     of the each entry of the one-dimensional vector PRES
-!     on all processors.
-! 
-!     REDUCE_SUM_1D_ll is the routine for 1D argument
-!     of the generic routine REDUCESUM_ll.
-! 
-!!    Method
-!!    ------
-!     Before the call to REDUCE_SUM_1D_ll, each processor
-!     computes its local 1D sum PRES; in REDUCE_SUM_1D_ll
-!     we reduce this values and return the global sum
-!     in the PRES variable.
-!
-!!    External
-!!    --------
-!
-!!    Implicit Arguments
-!!    ------------------
-!
-!
-!!    Author
-!!    ------
-!     Ph. Kloos      * CNRM - CERFACS *
-!
-!!    Modifications
-!!    -------------
-!     Original 27/06/98
-!     R. Guivarch 09/07/98 Same argument PRES INOUT
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-  REAL, DIMENSION(:), INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-!
-  REAL, DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum
-!
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHREAL_MPI, &
-                     MPI_SUM, NMNH_COMM_WORLD, KINFO)
-!
-  PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE REDUCE_SUM_1D_ll
-!
-!     ########################################
-      SUBROUTINE REDUCE_SUM_2D_ll(PRES, KINFO)
-!     ########################################
-!
-!!****  *REDUCE_SUM_2D_ll*-
-!
-!!    Purpose
-!!    -------
-!     This routine calculates the sum of the values
-!     of the each entry of the two-dimensional vector PRES
-!     on all processors.
-! 
-!     REDUCE_SUM_2D_ll is the routine for 2D argument
-!     of the generic routine REDUCESUM_ll.
-! 
-!!    Method
-!!    ------
-!     Before the call to REDUCE_SUM_2D_ll, each processor
-!     computes its local 2D sum PRES; in REDUCE_SUM_2D_ll
-!     we reduce this values and return the global sum
-!     in the PRES variable.
-!
-!!    External
-!!    --------
-!
-!!    Implicit Arguments
-!!    ------------------
-!
-!
-!!    Author
-!!    ------
-!     Ph. Kloos      * CNRM - CERFACS *
-!
-!!    Modifications
-!!    -------------
-!     Original 27/06/98
-!     R. Guivarch 09/07/98 Same argument PRES INOUT
-!
-!-------------------------------------------------------------------------------
-! 
-!*       0.    DECLARATIONS 
-!
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-  REAL, DIMENSION(:,:), INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-! 
-  REAL, DIMENSION(SIZE(PRES,1),SIZE(PRES,2)) :: ZRES ! Intermediate sum
-!
-  INTEGER :: IDIM 
-! 
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  IDIM = SIZE(PRES,1) * SIZE(PRES,2)
-!
-  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, &
-                     NMNH_COMM_WORLD, KINFO)
-!
-  PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE REDUCE_SUM_2D_ll
-!
-!     ########################################
-      SUBROUTINE REDUCE_SUM_3D_ll(PRES, KINFO)
-!     ########################################
-!
-!!****  *REDUCE_SUM_3D_ll*-
-!
-!!    Purpose
-!!    -------
-!     This routine calculates the sum of the values
-!     of the each entry of the three-dimensional vector PRES
-!     on all processors.
-! 
-!     REDUCE_SUM_3D_ll is the routine for 3D argument
-!     of the generic routine REDUCESUM_ll.
-! 
-!!    Method
-!!    ------
-!     Before the call to REDUCE_SUM_3D_ll, each processor
-!     computes its local 3D sum PRES; in REDUCE_SUM_3D_ll
-!     we reduce this values and return the global sum
-!     in the PRES variable.
-!
-!!    External
-!!    --------
-!
-!!    Implicit Arguments
-!!    ------------------
-!
-!
-!!    Author
-!!    ------
-!     Ph. Kloos      * CNRM - CERFACS *
-!
-!!    Modifications
-!!    -------------
-!     Original 27/06/98
-!     R. Guivarch 09/07/98 Same argument PRES INOUT
-!
-!-------------------------------------------------------------------------------
-! 
-!*       0.    DECLARATIONS 
-!
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-! 
-  REAL, DIMENSION(SIZE(PRES,1),SIZE(PRES,2),SIZE(PRES,3)) :: ZRES ! Intermediate
-                                                                  ! sum
-!
-  INTEGER :: IDIM
-! 
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3)
-!
-  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, &
-                     NMNH_COMM_WORLD, KINFO)
-!
-  PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE REDUCE_SUM_3D_ll
-!
-!     ########################################
-      SUBROUTINE REDUCE_SUM_I0D_ll(PRES, KINFO)
-!     ########################################
-!
-!!****  *REDUCE_SUM_I0D_ll*-
-!
-!!    Purpose
-!!    -------
-!     This routine calculates the sum of the values
-!     of the scalar argument PRES on processors.
-!
-!     REDUCE_SUM_I0D_ll is the routine for integer scalar argument
-!     of the generic routine REDUCESUM_ll.
-!
-!!    Method
-!!    ------
-!     Before the call to REDUCE_SUM_I0D_ll, each processor
-!     computes its local sum PRES; in REDUCE_SUM_I0D_ll
-!     we reduce this values and return the global sum
-!     in the PRES variable.
-!
-!!    External
-!!    --------
-!
-!!    Author
-!!    ------
-!     D. Gazen  * L.A. *
-!
-!!    Modifications
-!!    -------------
-!     Original 4/09/2000
-!
-!-----------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!
-!
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-  INTEGER, INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-!
-  INTEGER :: ZRES ! Intermediate result
-!
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHINT_MPI, &
-                     MPI_SUM, NMNH_COMM_WORLD, KINFO)
-!
-  PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE REDUCE_SUM_I0D_ll
-!
-!     ########################################
-      SUBROUTINE REDUCE_SUM_I1D_ll(PRES, KINFO)
-!     ########################################
-!
-!!****  *REDUCE_SUM_I1D_ll*-
-!
-!!    Purpose
-!!    -------
-!     This routine calculates the sum of the values
-!     of the each entry of the one-dimensional vector PRES
-!     on all processors.
-!
-!     REDUCE_SUM_I1D_ll is the routine for integer 1D argument
-!     of the generic routine REDUCESUM_ll.
-!
-!!    Method
-!!    ------
-!     Before the call to REDUCE_SUM_I1D_ll, each processor
-!     computes its local 1D sum PRES; in REDUCE_SUM_I1D_ll
-!     we reduce this values and return the global sum
-!     in the PRES variable.
-!
-!!    External
-!!    --------
-!
-!!    Author
-!!    ------
-!     D. Gazen  * L.A. *
-!
-!!    Modifications
-!!    -------------
-!     Original 4/09/2000
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-  INTEGER, DIMENSION(:), INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-!
-  INTEGER, DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum
-!
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHINT_MPI, &
-                     MPI_SUM, NMNH_COMM_WORLD, KINFO)
-!
-  PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE REDUCE_SUM_I1D_ll
-!
-!     ########################################
-      SUBROUTINE REDUCE_SUM_I2D_ll(PRES, KINFO)
-!     ########################################
-!
-!!****  *REDUCE_SUM_2D_ll*-
-!
-!!    Purpose
-!!    -------
-!     This routine calculates the sum of the values
-!     of the each entry of the two-dimensional vector PRES
-!     on all processors.
-!
-!     REDUCE_SUM_I2D_ll is the routine for integer 2D argument
-!     of the generic routine REDUCESUM_ll.
-!
-!!    Method
-!!    ------
-!     Before the call to REDUCE_SUM_I2D_ll, each processor
-!     computes its local 2D sum PRES; in REDUCE_SUM_I2D_ll
-!     we reduce this values and return the global sum
-!     in the PRES variable.
-!
-!!    External
-!!    --------
-!
-!!    Author
-!!    ------
-!     D. Gazen  * L.A. *
-!
-!!    Modifications
-!!    -------------
-!     Original 4/09/2000
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-  INTEGER, DIMENSION(:,:), INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-!
-  INTEGER, DIMENSION(SIZE(PRES,1),SIZE(PRES,2)) :: ZRES ! Intermediate sum
-!
-  INTEGER :: IDIM
-!
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  IDIM = SIZE(PRES,1) * SIZE(PRES,2)
-!
-  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, &
-                     NMNH_COMM_WORLD, KINFO)
-!
-  PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE REDUCE_SUM_I2D_ll
-!
-!     ########################################
-      SUBROUTINE REDUCE_SUM_I3D_ll(PRES, KINFO)
-!     ########################################
-!
-!!****  *REDUCE_SUM_I3D_ll*-
-!
-!!    Purpose
-!!    -------
-!     This routine calculates the sum of the values
-!     of the each entry of the three-dimensional vector PRES
-!     on all processors.
-!
-!     REDUCE_SUM_I3D_ll is the routine for 3D argument
-!     of the generic routine REDUCESUM_ll.
-!
-!!    Method
-!!    ------
-!     Before the call to REDUCE_SUM_I3D_ll, each processor
-!     computes its local 3D sum PRES; in REDUCE_SUM_I3D_ll
-!     we reduce this values and return the global sum
-!     in the PRES variable.
-!
-!!    External
-!!    --------
-!
-!!    Author
-!!    ------
-!     D. Gazen  * L.A. *
-!
-!!    Modifications
-!!    -------------
-!     Original 4/09/2000
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!
-  IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-  INTEGER, DIMENSION(:,:,:), INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-!*       0.2   Declarations of local variables :
-!
-  INTEGER, DIMENSION(SIZE(PRES,1),SIZE(PRES,2),SIZE(PRES,3)) :: ZRES ! Intermediate
-                                                                  ! sum
-!
-  INTEGER :: IDIM
-!
-!-------------------------------------------------------------------------------
-!
-!*       1. CALL THE MPI_ALLREDUCE ROUTINE
-!           ------------------------------
-!
-  IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3)
-!
-  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, &
-                     NMNH_COMM_WORLD, KINFO)
-!
-  PRES = ZRES
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE REDUCE_SUM_I3D_ll
-!
-!-------------------------------------------------------------------------------
-!
 END MODULE MODE_SUM_ll
diff --git a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
index 8378386e1c732809ab0d9849611e476bbed47304..b5fbe7198a2e4bd55d549e75aa671f105bef252e 100644
--- a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
@@ -47,16 +47,24 @@
 !     Juan/Didier 12/03/2009: array bound bug correction with 1proc/MPIVIDE
 !     J. Escobar  27/06/2011  correction for gridnesting with different SHAPE 
 ! 
-  USE MODD_MPIF
-  use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
-  USE MODD_STRUCTURE_ll
-  !JUANZ
-  USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
-  !JUANZ
+USE MODD_MPIF
+use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
+USE MODD_STRUCTURE_ll
+USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
 
-  use mode_msg
-!
-  CONTAINS
+use mode_msg
+
+implicit none
+
+interface GET_GLOBALSLICE_ll
+  module procedure GET_1DGLOBALSLICE_ll, GET_2DGLOBALSLICE_ll
+end interface
+
+interface GET_SLICE_ll
+  module procedure GET_1DSLICE_ll, GET_2DSLICE_ll
+end interface
+
+CONTAINS
 
   SUBROUTINE SLIDE_COORD(KDIM_DATA,KDIM_PROC,THIS_PROC,KOR,KEND)
 
diff --git a/src/LIB/SURCOUCHE/src/modi_adddelfield2_ll.f90 b/src/LIB/SURCOUCHE/src/modi_adddelfield2_ll.f90
deleted file mode 100644
index 5d3722292a18f4bf1d3bd9fccbbbff34363a8c02..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_adddelfield2_ll.f90
+++ /dev/null
@@ -1,50 +0,0 @@
-!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 CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-!     ###########################
-      MODULE MODI_ADDDELFIELD2_ll
-!     ###########################
-!
-INTERFACE
-!
-!!     #################################################
-       SUBROUTINE ADD_FIELD2_ll( TPLIST_ll, TPHALO2_ll )
-!!     #################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : HALO2_ll, HALO2LIST_ll
-!
-  TYPE(HALO2LIST_ll), POINTER :: TPLIST_ll  ! list of HALO2
-  TYPE(HALO2_ll), TARGET      :: TPHALO2_ll ! HALO2 to be added
-!
-       END SUBROUTINE ADD_FIELD2_ll
-!
-!!     ########################################################
-       SUBROUTINE DEL_FIELD2_ll( TPLIST_ll, TPHALO2_ll, KINFO )
-!!     ########################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : HALO2_ll, HALO2LIST_ll
-!
-  TYPE(HALO2LIST_ll), POINTER :: TPLIST_ll ! list of fields
-  TYPE(HALO2_ll), TARGET      :: TPHALO2_ll! field to be deleted
-                                           ! from the list of fields
-  INTEGER                     :: KINFO     ! return status :
-                                           !   0 if PFIELD has been found
-                                           !   1 otherwise
-!
-       END SUBROUTINE DEL_FIELD2_ll
-!
-END INTERFACE
-!
-END MODULE MODI_ADDDELFIELD2_ll
-
diff --git a/src/LIB/SURCOUCHE/src/modi_addndfield_ll.f90 b/src/LIB/SURCOUCHE/src/modi_addndfield_ll.f90
deleted file mode 100644
index 043aa02d0f8ad3fd05de721e2429d5f4bff5969d..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_addndfield_ll.f90
+++ /dev/null
@@ -1,70 +0,0 @@
-!MNH_LIC Copyright 1998-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.
-!-----------------------------------------------------------------
-! Modifications:
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!-----------------------------------------------------------------
-!     #########################
-      MODULE MODI_ADDnDFIELD_ll
-!     #########################
-!
-INTERFACE
-!
-!!     #######################################################
-       SUBROUTINE ADD1DFIELD_ll( HDIR, TPLIST, PFIELD, HNAME )
-!!     #######################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll
-!
-  CHARACTER(LEN=1), INTENT(IN) :: HDIR   ! direction of the field
-                                         ! ("X" or "Y")
-  TYPE(LIST1D_ll), POINTER     :: TPLIST ! list of fields
-  REAL, DIMENSION(:), TARGET   :: PFIELD ! field to be added 
-                                         ! to the list of fields
-  character(len=*), intent(in) :: HNAME ! Name of the field to be added
-!
-       END SUBROUTINE ADD1DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE ADD2DFIELD_ll( TPLIST, PFIELD, HNAME )
-!!     #################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER       :: TPLIST ! list of fields
-  REAL, DIMENSION(:,:), TARGET :: PFIELD ! field to be added
-                                         ! to the list of fields
-  character(len=*), intent(in) :: HNAME ! Name of the field to be added
-!
-       END SUBROUTINE ADD2DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE ADD3DFIELD_ll( TPLIST, PFIELD, HNAME )
-!!     #################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER         :: TPLIST   ! list of fields
-  REAL, DIMENSION(:,:,:), TARGET :: PFIELD   ! field to be added
-                                             ! to the list of fields
-  character(len=*), intent(in) :: HNAME ! Name of the field to be added
-!
-       END SUBROUTINE ADD3DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE ADD4DFIELD_ll( TPLIST, PFIELD, HNAME )
-!!     #################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  type(list_ll), pointer   :: tplist   ! list of fields
-  real, dimension(:,:,:,:),   intent(in) :: pfield   ! field to be added to the list of fields
-  character(len=*), intent(in) :: hname ! name of the field to be added
-!
-       END SUBROUTINE ADD4DFIELD_ll
-!
-END INTERFACE
-!
-END MODULE MODI_ADDnDFIELD_ll
diff --git a/src/LIB/SURCOUCHE/src/modi_delndfield_ll.f90 b/src/LIB/SURCOUCHE/src/modi_delndfield_ll.f90
deleted file mode 100644
index dc4dbc89f353721f10ecc5291280c4c7803a0556..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_delndfield_ll.f90
+++ /dev/null
@@ -1,78 +0,0 @@
-!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 CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-!     ########################
-      MODULE MODI_DELnDFIELD_ll
-!     #########################
-!
-INTERFACE
-!
-!!     #################################################
-       SUBROUTINE DEL1DFIELD_ll( TPLIST, PFIELD, KINFO )
-!!     #################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER     :: TPLIST ! list of fields
-  REAL, DIMENSION(:), TARGET :: PFIELD ! field to be deleted
-                                       ! from the list of fields
-  INTEGER, INTENT(OUT)       :: KINFO  ! return status :
-                                       !   0 if PFIELD has been found
-                                       !   1 otherwise.
-!
-       END SUBROUTINE DEL1DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE DEL2DFIELD_ll( TPLIST, PFIELD, KINFO )
-!!     #################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER     :: TPLIST ! list of fields
-  REAL, DIMENSION(:,:), TARGET :: PFIELD ! field to be deleted
-                                       ! from the list of fields
-  INTEGER, INTENT(OUT)       :: KINFO  ! return status :
-                                       !   0 if PFIELD has been found
-                                       !   1 otherwise.
-!
-       END SUBROUTINE DEL2DFIELD_ll
-!
-!!     #################################################
-       SUBROUTINE DEL3DFIELD_ll( TPLIST, PFIELD, KINFO )
-!!     #################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER     :: TPLIST ! list of fields
-  REAL, DIMENSION(:,:,:), TARGET :: PFIELD ! field to be deleted
-                                       ! from the list of fields
-  INTEGER, INTENT(OUT)       :: KINFO  ! return status :
-                                       !   0 if PFIELD has been found
-                                       !   1 otherwise.
-!
-       END SUBROUTINE DEL3DFIELD_ll
-!
-!!     #################################
-       SUBROUTINE CLEANLIST_ll( TPLIST )
-!!     #################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER     :: TPLIST ! list of fields
-!
-       END SUBROUTINE CLEANLIST_ll
-!
-END INTERFACE
-!
-END MODULE MODI_DELnDFIELD_ll
diff --git a/src/LIB/SURCOUCHE/src/modi_gather.f90 b/src/LIB/SURCOUCHE/src/modi_gather.f90
deleted file mode 100644
index edda3c46eb26e8e5dfb27db12f5dc57730f98d1e..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_gather.f90
+++ /dev/null
@@ -1,54 +0,0 @@
-!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 CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-MODULE MODI_GATHER_ll
-!
-INTERFACE GATHERALL_FIELD_ll
-  SUBROUTINE GATHERALL_X1(HDIR,PSEND,PRECV,KRESP)
-  CHARACTER(LEN=*),  INTENT(IN) :: HDIR
-  REAL,DIMENSION(:), INTENT(IN) :: PSEND
-  REAL,DIMENSION(:), INTENT(INOUT):: PRECV
-  INTEGER,           INTENT(INOUT):: KRESP
-  END SUBROUTINE GATHERALL_X1
-  
-  SUBROUTINE GATHERALL_X2(HDIR,PSEND,PRECV,KRESP)
-  CHARACTER(LEN=*),    INTENT(IN) :: HDIR
-  REAL,DIMENSION(:,:), INTENT(IN) :: PSEND
-  REAL,DIMENSION(:,:), INTENT(INOUT):: PRECV
-  INTEGER,             INTENT(INOUT):: KRESP
-  END SUBROUTINE GATHERALL_X2
-  
-  SUBROUTINE GATHERALL_X3(HDIR,PSEND,PRECV,KRESP)
-  CHARACTER(LEN=*),      INTENT(IN) :: HDIR
-  REAL,DIMENSION(:,:,:), INTENT(IN) :: PSEND
-  REAL,DIMENSION(:,:,:), INTENT(INOUT):: PRECV
-  INTEGER,               INTENT(INOUT):: KRESP
-  END SUBROUTINE GATHERALL_X3
-  
-  SUBROUTINE GATHERALL_N1(HDIR,KSEND,KRECV,KRESP)
-  CHARACTER(LEN=*),     INTENT(IN) :: HDIR
-  INTEGER,DIMENSION(:), INTENT(IN) :: KSEND
-  INTEGER,DIMENSION(:), INTENT(INOUT):: KRECV
-  INTEGER,              INTENT(INOUT):: KRESP
-  END SUBROUTINE GATHERALL_N1
-  
-  SUBROUTINE GATHERALL_N2(HDIR,KSEND,KRECV,KRESP)
-  CHARACTER(LEN=*),       INTENT(IN) :: HDIR
-  INTEGER,DIMENSION(:,:), INTENT(IN) :: KSEND
-  INTEGER,DIMENSION(:,:), INTENT(INOUT):: KRECV
-  INTEGER,                INTENT(INOUT):: KRESP
-  END SUBROUTINE GATHERALL_N2
-END INTERFACE
-!
-END MODULE MODI_GATHER_ll
diff --git a/src/LIB/SURCOUCHE/src/modi_get_ll.f90 b/src/LIB/SURCOUCHE/src/modi_get_ll.f90
deleted file mode 100644
index f77ebb3ea5899a9b0d8e4f078c1fe13bd40ca116..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_get_ll.f90
+++ /dev/null
@@ -1,143 +0,0 @@
-!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.
-!-----------------------------------------------------------------
-
-!     ##################
-      MODULE MODI_GET_ll 
-!     ##################
-!
-INTERFACE
-!
-!!     ##################################################
-       SUBROUTINE  GET_DIM_EXT_ll( HSPLIT, KXDIM, KYDIM )
-!!     ##################################################
-!
-  CHARACTER(len=1), INTENT(IN) :: HSPLIT
-  INTEGER, INTENT(OUT) :: KXDIM, KYDIM
-!
-       END SUBROUTINE GET_DIM_EXT_ll
-!
-!!     ###################################################
-       SUBROUTINE  GET_DIM_PHYS_ll( HSPLIT, KXDIM, KYDIM )
-!!     ###################################################
-!
-  CHARACTER(len=1), INTENT(IN) :: HSPLIT
-  INTEGER, INTENT(OUT) :: KXDIM, KYDIM
-!
-       END SUBROUTINE GET_DIM_PHYS_ll
-!
-!!     ##########################################
-       SUBROUTINE GET_OR_ll( HSPLIT, KXOR, KYOR )
-!!     ##########################################
-!
-  CHARACTER(len=1), INTENT(IN) :: HSPLIT
-  INTEGER, INTENT(OUT) :: KXOR, KYOR
-!
-       END SUBROUTINE GET_OR_ll
-!
-!!     ####################################################
-       SUBROUTINE GET_INDICE_ll( KXOR, KYOR, KXEND, KYEND )
-!!     ####################################################
-!
-  INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND
-!
-       END SUBROUTINE GET_INDICE_ll
-!
-!!     ##########################################
-       SUBROUTINE GET_GLOBALDIMS_ll(KIMAX, KJMAX)
-!!     ##########################################
-!
-  INTEGER, INTENT(OUT) :: KIMAX, KJMAX ! current model dimensions
-!
-       END SUBROUTINE GET_GLOBALDIMS_ll
-!
-!!     ######################################################
-       SUBROUTINE GET_PHYSICAL_ll( KXOR, KYOR, KXEND, KYEND )
-!!     ######################################################
-!
-  INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND
-!
-       END SUBROUTINE GET_PHYSICAL_ll
-!
-!!     ###############################################################
-       SUBROUTINE GET_INTERSECTION_ll( KXOR, KYOR, KXEND, KYEND, &
-                                       KXORI, KYORI, KXENDI, KYENDI, &
-                                       HDOM, KINFO, KIP )
-!!     ###############################################################
-!
-  CHARACTER(LEN=4), INTENT(IN) :: HDOM    ! 'EXTE' for extended subdomain
-                                          ! 'PHYS' for physical subdomain
-  INTEGER, INTENT(IN)  :: KXOR, KYOR, &   ! Coordinates of the
-                          KXEND, KYEND    ! region
-!
-  INTEGER, INTENT(OUT) :: KXORI, KYORI, & ! Global Coordinates
-                          KXENDI, KYENDI  ! of the intersection
-  INTEGER, INTENT(OUT) :: KINFO           ! Returned Info
-  INTEGER, INTENT(IN), OPTIONAL:: KIP     ! Processor number
-                                          ! (or subdomain number)
-       END SUBROUTINE GET_INTERSECTION_ll
-!
-END INTERFACE
-!
-INTERFACE GET_GLOBALSLICE_ll
-!
-!!      ####################################################################
-        SUBROUTINE GET_1DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, &
-                                         KB, KE, KERR )
-!!      ####################################################################
-!
-  REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY
-  CHARACTER(LEN=1), INTENT(IN)      :: HDIR
-  INTEGER, INTENT(IN)               :: KLOC
-  REAL, DIMENSION(:), INTENT(OUT)   :: PGLOBALSLICE
-  INTEGER, OPTIONAL    :: KB, KE, KERR
-!
-       END SUBROUTINE GET_1DGLOBALSLICE_ll
-!
-!!     ####################################################################
-       SUBROUTINE GET_2DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, &
-                                        KB, KE, KKB, KKE, KERR )
-!!     ####################################################################
-!
-  REAL, DIMENSION(:,:,:) :: PARRAY
-  CHARACTER(LEN=1)       :: HDIR
-  INTEGER                :: KLOC
-  REAL, DIMENSION(:,:)   :: PGLOBALSLICE
-  INTEGER, OPTIONAL    :: KB, KE, KKB, KKE, KERR
-!
-       END SUBROUTINE GET_2DGLOBALSLICE_ll
-!
-END INTERFACE
-!
-INTERFACE GET_SLICE_ll
-!
-!!     #####################################################################
-       SUBROUTINE GET_1DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, KB, KE, KERR )
-!!     #####################################################################
-!
-  REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY
-  CHARACTER(LEN=1), INTENT(IN)      :: HDIR
-  INTEGER, INTENT(IN)               :: KLOC
-  REAL, DIMENSION(:), INTENT(OUT)   :: PSLICE
-  INTEGER, OPTIONAL    :: KB, KE, KERR
-!
-       END SUBROUTINE GET_1DSLICE_ll
-!
-!!     ########################################################
-       SUBROUTINE GET_2DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, &
-                                  KB, KE, KKB, KKE, KERR )
-!!     ########################################################
-!
-  REAL, DIMENSION(:,:,:) :: PARRAY
-  CHARACTER(LEN=1)       :: HDIR
-  INTEGER                :: KLOC
-  REAL, DIMENSION(:,:)   :: PSLICE
-  INTEGER, OPTIONAL    :: KB, KE, KKB, KKE, KERR
-!
-       END SUBROUTINE GET_2DSLICE_ll
-!
-END INTERFACE
-!
-END MODULE MODI_GET_ll
diff --git a/src/LIB/SURCOUCHE/src/modi_init_ll.f90 b/src/LIB/SURCOUCHE/src/modi_init_ll.f90
deleted file mode 100644
index ecf09a18d3d3f1cc71bf7555cb7f11740f4007d5..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_init_ll.f90
+++ /dev/null
@@ -1,188 +0,0 @@
-!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 CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-!     ###################
-      MODULE MODI_INIT_ll
-!     ###################
-!!
-INTERFACE 
-!
-!      #########################################
-       SUBROUTINE SET_SPLITTING_ll( HSPLITTING )
-!      #########################################
-!
-  CHARACTER(LEN=*) :: HSPLITTING
-!
-       END SUBROUTINE SET_SPLITTING_ll
-!
-!      ##################################
-       SUBROUTINE SET_LBX_ll( KLBX, KMI )
-!      ##################################
-!
-  CHARACTER(LEN=*) :: KLBX
-  INTEGER :: KMI
-!
-       END SUBROUTINE SET_LBX_ll
-!
-!      ##################################
-       SUBROUTINE SET_LBY_ll( KLBY, KMI )
-!      ##################################
-!
-  CHARACTER(LEN=*) :: KLBY
-  INTEGER :: KMI
-!
-       END SUBROUTINE SET_LBY_ll
-!
-!      ############################################
-       SUBROUTINE SET_LBSIZEX_ll( KNBRIM, KRIMTAB )
-!      ############################################
-!
-  INTEGER :: KNBRIM
-  INTEGER, DIMENSION(:) :: KRIMTAB
-!
-       END SUBROUTINE SET_LBSIZEX_ll
-!
-!      ############################################
-       SUBROUTINE SET_LBSIZEY_ll( KNBRIM, KRIMTAB )
-!      ############################################
-!
-  INTEGER :: KNBRIM
-  INTEGER, DIMENSION(:) :: KRIMTAB
-!
-       END SUBROUTINE SET_LBSIZEY_ll
-!
-!      ###################################
-       SUBROUTINE SET_DIM_ll( KX, KY, KZ )
-!      ###################################
-!
- INTEGER :: KX,KY,KZ
-!
-        END SUBROUTINE SET_DIM_ll
-!
-!      #######################################################
-       SUBROUTINE SET_JP_ll( KMODELMAX, KHEXT, KVEXT, KPHALO )
-!      #######################################################
-!
-  INTEGER :: KMODELMAX, KHEXT, KVEXT, KPHALO
-!
-       END SUBROUTINE SET_JP_ll
-!
-!      ########################################
-       SUBROUTINE SET_XRATIO_ll( KXRATIO, KMI )
-!      ########################################
-!
-  INTEGER :: KXRATIO, KMI
-!
-       END SUBROUTINE SET_XRATIO_ll
-!
-!      ########################################
-       SUBROUTINE SET_YRATIO_ll( KYRATIO, KMI )
-!      ########################################
-!
-  INTEGER :: KYRATIO, KMI
-!
-       END SUBROUTINE SET_YRATIO_ll
-!
-!      ##################################
-       SUBROUTINE SET_DAD_ll( KDAD, KMI )
-!      ##################################
-!
-  INTEGER :: KDAD, KMI
-!
-       END SUBROUTINE SET_DAD_ll
-!
-!      ##################################
-       SUBROUTINE SET_XOR_ll( KXOR, KMI )
-!      ##################################
-!
-  INTEGER :: KXOR, KMI
-!
-       END SUBROUTINE SET_XOR_ll
-!
-!      ####################################
-       SUBROUTINE SET_XEND_ll( KXEND, KMI )
-!      ####################################
-!
-  INTEGER :: KXEND, KMI
-!
-       END SUBROUTINE SET_XEND_ll
-!
-!      ##################################
-       SUBROUTINE SET_YOR_ll( KYOR, KMI )
-!      ##################################
-!
-  INTEGER :: KYOR, KMI
-!
-       END SUBROUTINE SET_YOR_ll
-!
-!      ####################################
-       SUBROUTINE SET_YEND_ll( KYEND, KMI )
-!      ####################################
-!
-  INTEGER :: KYEND, KMI
-!
-       END SUBROUTINE SET_YEND_ll
-!
-!      ########################
-       SUBROUTINE SET_DAD0_ll()
-!      ########################
-!
-       END SUBROUTINE SET_DAD0_ll
-!
-!      #######################
-       SUBROUTINE INIT_LB_ll()
-!      #######################
-!
-       END SUBROUTINE INIT_LB_ll
-!
-!      #######################
-       SUBROUTINE SET_LB_FIELD_ll(HLBTYPE, PFIELD, PLBXFIELD, PLBYFIELD, IIB, IJB, IIE, IJE, &
-        SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH )
-  !
-  CHARACTER(LEN=*),INTENT(IN) :: HLBTYPE ! LB type : 'LB','LBU'
-  REAL, DIMENSION(:,:,:), INTENT(IN)  :: PFIELD      ! field on the whole domain (or subdomain)
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLBXFIELD    ! LB field - X direction
-  REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLBYFIELD    ! LB field - Y direction
-  !beginning and end of the local physical subdomain
-  INTEGER, INTENT(IN)   :: IIB            ! indice I Beginning in x direction
-  INTEGER, INTENT(IN)   :: IJB            ! indice J Beginning in y direction
-  INTEGER, INTENT(IN)   :: IIE            ! indice I End       in x direction
-  INTEGER, INTENT(IN)   :: IJE            ! indice J End       in y direction
-  INTEGER, INTENT(IN)   :: SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH ! shifting applied to the indices copied from PFIELD in each direction
-                                                                        ! it is used for LBXUM et LBXVM
-                                                                        ! I do not know why...
-  !
-!      #######################
-!
-       END SUBROUTINE SET_LB_FIELD_ll
-!
-!      ###################################
-        SUBROUTINE INI_PARA_ll( KINFO_ll )
-!      ###################################
-!
-  INTEGER, INTENT(OUT) :: KINFO_ll
-!
-       END SUBROUTINE INI_PARA_ll
-!
-!     ###################################
-       SUBROUTINE END_PARA_ll( KINFO_ll )
-!     ###################################
-!
-  INTEGER, INTENT(OUT) :: KINFO_ll
-!
-       END SUBROUTINE END_PARA_ll
-!
-END INTERFACE
-!
-END MODULE MODI_INIT_ll
diff --git a/src/LIB/SURCOUCHE/src/modi_location_ll.f90 b/src/LIB/SURCOUCHE/src/modi_location_ll.f90
deleted file mode 100644
index 4f6e4cdea2fb14c649ed4ff0b1bb5c35e25358dd..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_location_ll.f90
+++ /dev/null
@@ -1,51 +0,0 @@
-!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.
-!-----------------------------------------------------------------
-
-!     #######################
-      MODULE MODI_LOCATION_ll
-!     #######################
-!
-INTERFACE
-!
-!!     ###########################################
-       LOGICAL FUNCTION LNORTH_ll( K, HSPLITTING )
-!!     ###########################################
-!
-  INTEGER,          INTENT(IN), OPTIONAL :: K ! number of the subdomain
-  CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING ! kind of splitting
-!
-       END FUNCTION LNORTH_ll
-!
-!!     ##########################################
-       LOGICAL FUNCTION LWEST_ll( K, HSPLITTING )
-!!     ##########################################
-!
-  INTEGER,          INTENT(IN), OPTIONAL :: K ! number of the subdomain
-  CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING ! kind of splitting
-!
-       END FUNCTION LWEST_ll
-!
-!!     ###########################################
-       LOGICAL FUNCTION LSOUTH_ll( K, HSPLITTING )
-!!     ###########################################
-!
-  INTEGER,          INTENT(IN), OPTIONAL :: K ! number of the subdomain
-  CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING ! kind of splitting
-!
-       END FUNCTION LSOUTH_ll
-!
-!!     ##########################################
-       LOGICAL FUNCTION LEAST_ll( K, HSPLITTING )
-!!     ##########################################
-!
-  INTEGER,          INTENT(IN), OPTIONAL :: K ! number of the subdomain
-  CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING ! kind of splitting
-!
-       END FUNCTION LEAST_ll
-!
-END INTERFACE
-!
-END MODULE MODI_LOCATION_ll
diff --git a/src/LIB/SURCOUCHE/src/modi_nest_ll.f90 b/src/LIB/SURCOUCHE/src/modi_nest_ll.f90
deleted file mode 100644
index d4fc1b5f7af4e1d7f03128429c9e057974206a11..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_nest_ll.f90
+++ /dev/null
@@ -1,195 +0,0 @@
-!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 CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-!     ###################
-      MODULE MODI_NEST_ll
-!     ###################
-!
-INTERFACE
-!
-!     ###############################################
-      SUBROUTINE GET_MODEL_NUMBER_ll( KMODEL_NUMBER )
-!     ###############################################
-!
-  INTEGER :: KMODEL_NUMBER
-!
-      END SUBROUTINE GET_MODEL_NUMBER_ll
-!
-!     ####################################################
-      SUBROUTINE GET_CHILD_DIM_ll( KCHILD, KX, KY, KINFO )
-!     ####################################################
-!
-  INTEGER, INTENT(IN) :: KCHILD
-!
-  INTEGER, INTENT(OUT) :: KX, KY
-!
-  INTEGER, INTENT(OUT) :: KINFO
-!
-       END SUBROUTINE GET_CHILD_DIM_ll
-!
-!     ###################################################################
-      SUBROUTINE GET_FEEDBACK_COORD_ll( KXOR, KYOR, KXEND, KYEND, KINFO )
-!     ###################################################################
-!
-  INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND
-!
-  INTEGER, INTENT(OUT) :: KINFO
-!
-       END SUBROUTINE GET_FEEDBACK_COORD_ll
-!
-!     ##################################
-      SUBROUTINE UNSET_LSFIELD_1WAY_ll()
-!     ##################################
-!
-      END SUBROUTINE UNSET_LSFIELD_1WAY_ll
-!
-!     ##########################################
-      SUBROUTINE UNSET_LSFIELD_2WAY_ll( KMODEL )
-!     ##########################################
-!
-  INTEGER, INTENT(IN) :: KMODEL
-!
-      END SUBROUTINE UNSET_LSFIELD_2WAY_ll
-!
-!     #########################################
-      SUBROUTINE LS_FORCING_ll( KCHILD, KINFO, OEXTRAPOL, OCYCLIC_EXTRAPOL )
-!     #########################################
-!
-  INTEGER, INTENT(IN) :: KCHILD 
-  INTEGER, INTENT(OUT) :: KINFO
-  LOGICAL, OPTIONAL, INTENT(IN) :: OEXTRAPOL
-  LOGICAL, OPTIONAL, INTENT(IN) :: OCYCLIC_EXTRAPOL
-!
-      END SUBROUTINE LS_FORCING_ll
-!
-!     ###################################
-      SUBROUTINE LS_FEEDBACK_ll( KINFO  )
-!     ###################################
-!
-  INTEGER, INTENT(OUT) :: KINFO
-!
-      END SUBROUTINE LS_FEEDBACK_ll
-!
-
-!     #############################
-      SUBROUTINE UNSET_LBFIELD_ll()
-!     #############################
-!
-      END SUBROUTINE UNSET_LBFIELD_ll
-!
-!     #########################################
-      SUBROUTINE LB_FORCING_ll( KCHILD, KINFO )
-!     #########################################
-!
-  INTEGER, INTENT(IN) :: KCHILD
-!
-  INTEGER, INTENT(OUT) :: KINFO
-!
-       END SUBROUTINE LB_FORCING_ll
-!
-!!     ###########################################################
-       FUNCTION LBFINE2COARSE( KRATIO, KLBSIZE ) RESULT( KCOARSE )
-!!     ###########################################################
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KCOARSE
-!
-  INTEGER :: KRATIO, KLBSIZE
-!
-      END FUNCTION LBFINE2COARSE
-!
-!     #########################################
-      SUBROUTINE GO_TOMODEL_ll( KMODEL, KINFO )
-!     #########################################
-!
-INTEGER :: KMODEL, KINFO
-!
-      END SUBROUTINE GO_TOMODEL_ll
-!
-END INTERFACE
-!
-INTERFACE SET_LSFIELD_1WAY_ll
-!
-!     #############################################################
-      SUBROUTINE SET_LS2DFIELD_1WAY_ll( P2DFIELD, PTFIELD, KMODEL )
-!     #############################################################
-!
-  REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD
-  INTEGER, INTENT(IN) :: KMODEL
-!
-      END SUBROUTINE SET_LS2DFIELD_1WAY_ll
-!
-!     #############################################################
-      SUBROUTINE SET_LS3DFIELD_1WAY_ll( P3DFIELD, PTFIELD, KMODEL )
-!     #############################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD
-  INTEGER, INTENT(IN) :: KMODEL
-!
-      END SUBROUTINE SET_LS3DFIELD_1WAY_ll
-!
-END INTERFACE
-!
-INTERFACE SET_LSFIELD_2WAY_ll
-!
-!     #####################################################
-      SUBROUTINE SET_LS2DFIELD_2WAY_ll( P2DFIELD, PTFIELD )
-!     #####################################################
-!
-  REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD
-!
-      END SUBROUTINE SET_LS2DFIELD_2WAY_ll
-!
-!     #####################################################
-      SUBROUTINE SET_LS3DFIELD_2WAY_ll( P3DFIELD, PTFIELD )
-!     #####################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD
-!
-      END SUBROUTINE SET_LS3DFIELD_2WAY_ll
-!
-END INTERFACE
-!
-INTERFACE SET_LBFIELD_ll
-!
-!     ##############################################################
-      SUBROUTINE SET_LB2DFIELD_ll( P2DFIELD, PTFIELD, KFINELBSIZE, &
-                                   HSIDE, KMODEL )
-!     ##############################################################
-!
-  REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD
-!
-  INTEGER, INTENT(IN) :: KFINELBSIZE, KMODEL
-!
-  CHARACTER(LEN=*), INTENT(IN) :: HSIDE
-!
-      END SUBROUTINE SET_LB2DFIELD_ll
-!
-!     ##############################################################
-      SUBROUTINE SET_LB3DFIELD_ll( P3DFIELD, PTFIELD, KFINELBSIZE, &
-                                   HSIDE, KMODEL )
-!     ##############################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD
-!
-  INTEGER, INTENT(IN) :: KFINELBSIZE, KMODEL
-!
-  CHARACTER(LEN=*), INTENT(IN) :: HSIDE
-!
-      END SUBROUTINE SET_LB3DFIELD_ll
-!
-END INTERFACE
-!
-END MODULE MODI_NEST_ll
diff --git a/src/LIB/SURCOUCHE/src/modi_remap_ll.f90 b/src/LIB/SURCOUCHE/src/modi_remap_ll.f90
deleted file mode 100644
index ab47659f701fbf8b4ecd1c08ddcd1736d25f34d3..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_remap_ll.f90
+++ /dev/null
@@ -1,63 +0,0 @@
-!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 CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-!     ####################
-      MODULE MODI_REMAP_ll 
-!     ####################
-!
-INTERFACE
-!
-!!     ########################################################
-       SUBROUTINE REMAP_2WAY_X_ll( PFIELDIN, PFIELDOUT, KINFO )
-!!     ########################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELDIN ! field to be sent
-  REAL, DIMENSION(:,:,:), INTENT(OUT) :: PFIELDOUT ! reception field
-  INTEGER :: KINFO ! return status
-!
-      END SUBROUTINE REMAP_2WAY_X_ll
-!
-!     ########################################################
-      SUBROUTINE REMAP_X_2WAY_ll( PFIELDIN, PFIELDOUT, KINFO )
-!     ########################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELDIN ! field to be sent
-  REAL, DIMENSION(:,:,:), INTENT(OUT) :: PFIELDOUT ! reception field
-  INTEGER :: KINFO ! return status
-!
-      END SUBROUTINE REMAP_X_2WAY_ll
-!
-!     #####################################################
-      SUBROUTINE REMAP_X_Y_ll( PFIELDIN, PFIELDOUT, KINFO )
-!     #####################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELDIN ! field to be sent
-  REAL, DIMENSION(:,:,:), INTENT(OUT) :: PFIELDOUT ! reception field
-  INTEGER :: KINFO ! return status
-!
-      END SUBROUTINE REMAP_X_Y_ll
-!
-!     #####################################################
-      SUBROUTINE REMAP_Y_X_ll( PFIELDIN, PFIELDOUT, KINFO )
-!     #####################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELDIN ! field to be sent
-  REAL, DIMENSION(:,:,:), INTENT(OUT) :: PFIELDOUT ! reception field
-  INTEGER :: KINFO ! return status
-!
-      END SUBROUTINE REMAP_Y_X_ll
-!
-END INTERFACE
-!
-END MODULE MODI_REMAP_ll
diff --git a/src/LIB/SURCOUCHE/src/modi_scatter.f90 b/src/LIB/SURCOUCHE/src/modi_scatter.f90
deleted file mode 100644
index c85b9f1f667699f290d7acbf1ef3096c7f666403..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_scatter.f90
+++ /dev/null
@@ -1,29 +0,0 @@
-!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 CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-!     ######spl
-      MODULE MODI_SCATTER
-!     #####################
-!
-INTERFACE
-      SUBROUTINE SCATTER(P1,P2)
-!
-REAL, DIMENSION(:,:),  INTENT(IN)    :: P1
-REAL, DIMENSION(:,:),  INTENT(OUT)   :: P2
-!
-END SUBROUTINE SCATTER
-!
-END INTERFACE
-!
-END MODULE MODI_SCATTER
diff --git a/src/LIB/SURCOUCHE/src/modi_sum_ll.f90 b/src/LIB/SURCOUCHE/src/modi_sum_ll.f90
deleted file mode 100644
index dfef9061dd6354c4ad9a237ff55f6384a0aa227e..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_sum_ll.f90
+++ /dev/null
@@ -1,365 +0,0 @@
-!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.
-!     ##################
-      MODULE MODI_SUM_ll
-!     ##################
-!
-INTERFACE
-!
-!!     #######################################################
-       FUNCTION EXTRACT_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                            KXEND, KYEND, KZEND )
-!!     #######################################################
-!
-  REAL, DIMENSION(:,:,:), POINTER :: EXTRACT_ll ! Result
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field
-!
-  INTEGER, INTENT(OUT) :: KINFO ! Returned Info
-!
-  INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates
-                                   KXEND, KYEND, KZEND ! of the region
-!
-       END FUNCTION EXTRACT_ll
-!
-!!     ###########################################################
-       FUNCTION SUM1D_ll( PFIELD, KDIR, KINFO, KXOR, KYOR, KZOR, &
-                           KXEND, KYEND, KZEND )
-!!     ###########################################################
-!
-  REAL, DIMENSION(:,:), POINTER :: SUM1D_ll ! Result
-!
-  INTEGER, INTENT(IN) :: KDIR ! Summation direction (1, 2 or 3)
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field
-!
-  INTEGER, INTENT(OUT) :: KINFO ! Returned Info
-!
-  INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates
-                                   KXEND, KYEND, KZEND ! of the region
-!
-       END FUNCTION SUM1D_ll
-!
-!!     ###################################################################
-       FUNCTION SUM2D_ll( PFIELD, KDIR1, KDIR2, KINFO, KXOR, KYOR, KZOR, &
-                          KXEND, KYEND, KZEND )
-!!     ###################################################################
-!
-  REAL, DIMENSION(:), POINTER :: SUM2D_ll ! Result
-!
-  INTEGER, INTENT(IN) :: KDIR1, KDIR2 ! Summation directions (1, 2 or 3)
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field
-!
-  INTEGER, INTENT(OUT) :: KINFO ! Returned Info
-!
-  INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates
-                                   KXEND, KYEND, KZEND ! of the region
-!
-       END FUNCTION SUM2D_ll
-!
-!!     #####################################################
-       FUNCTION SUM3D_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                          KXEND, KYEND, KZEND )
-!!     #####################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field
-!
-  INTEGER, INTENT(OUT) :: KINFO ! Returned Info
-!
-  INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates
-                                   KXEND, KYEND, KZEND ! of the region
-!
-       END FUNCTION SUM3D_ll
-!
-!!     #######################################################################
-       FUNCTION SUM_1DFIELD_ll( PFIELD, HDIR, KOR, KEND, KERR ) RESULT( ZSUM )
-!!     #######################################################################
-!
-  REAL, DIMENSION(:), INTENT(IN) :: PFIELD ! 1d Field
-!
-  CHARACTER(LEN=1) :: HDIR               ! direction of the 1D field
-!
-  INTEGER, OPTIONAL, INTENT(OUT) :: KERR ! Returned Info
-!
-  INTEGER, OPTIONAL, INTENT(IN) :: KOR, KEND ! Coordinates of the region
-!
-  REAL :: ZSUM ! result
-!
-       END FUNCTION SUM_1DFIELD_ll
-!
-!!     ########################################################
-       REAL FUNCTION MAX_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                             KXEND, KYEND, KZEND )
-!!     ########################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field
-!
-  INTEGER, INTENT(OUT) :: KINFO ! Returned Info
-!
-  INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates
-                                   KXEND, KYEND, KZEND ! of the region
-!
-       END FUNCTION MAX_ll
-!
-!!     ########################################################
-       REAL FUNCTION MIN_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, &
-                             KXEND, KYEND, KZEND )
-!!     ########################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field
-!
-  INTEGER, INTENT(OUT) :: KINFO ! Returned Info
-!
-  INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates
-                                   KXEND, KYEND, KZEND ! of the region
-!
-       END FUNCTION MIN_ll
-!
-!!     ###########################################
-       FUNCTION SUMMASK_ll( PFIELD, OMASK, KINFO )
-!!     ###########################################
-!
-  REAL, DIMENSION(:), POINTER :: SUMMASK_ll ! Result
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field
-!
-  LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASK ! 2d Mask
-!
-  INTEGER, INTENT(OUT) :: KINFO ! Returned Info
-!
-       END FUNCTION SUMMASK_ll
-!
-!!     ####################################################
-       REAL FUNCTION SUMMASKCOMP_ll( PFIELD, OMASK, KINFO )
-!!     ####################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field
-!
-  LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASK ! 2d Mask
-! 
-  INTEGER, INTENT(OUT) :: KINFO ! Returned Info
-!
-       END FUNCTION SUMMASKCOMP_ll
-!
-!!     #############################################
-       SUBROUTINE SUM_DIM1_ll( PFIELD, PRES, KINFO )
-!!     #############################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD
-  REAL, DIMENSION(:, :), INTENT(OUT) :: PRES
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE SUM_DIM1_ll
-!
-!!     #############################################
-       SUBROUTINE SUM_DIM2_ll( PFIELD, PRES, KINFO )
-!!     #############################################
-!
-  REAL, DIMENSION(:), INTENT(IN) :: PFIELD
-  REAL, DIMENSION(:), INTENT(OUT) :: PRES
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE SUM_DIM2_ll
-!
-END INTERFACE
-!
-INTERFACE GMAXLOC_ll
-!
-!!     #######################################################
-       FUNCTION GMAXLOC3D_ll( PARRAY, MASK ) RESULT( KMAXLOC )
-!!     #######################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN)              :: PARRAY   ! input array in
-                                    ! which the maximum is to be found
-!
-  LOGICAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: MASK     ! mask 
-  INTEGER, DIMENSION(3)                           :: KMAXLOC  ! indices
-          ! of the maximum value on the whole domain (global coordinates)
-!
-       END FUNCTION GMAXLOC3D_ll
-!
-!!     ##############################################################
-       FUNCTION GMAXLOC2D_ll( PARRAY, KDIMS, MASK ) RESULT( KMAXLOC )
-!!     ##############################################################
-!
-  REAL, DIMENSION(:,:), INTENT(IN)              :: PARRAY   ! input array in
-                                   ! which the maximum is to be found
-  LOGICAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: MASK     ! mask 
-  INTEGER, DIMENSION(2)                         :: KMAXLOC  ! indices
-          ! of the maximum value on the whole domain (global coordinates)
-  INTEGER, DIMENSION(2), OPTIONAL               :: KDIMS
-!
-       END FUNCTION GMAXLOC2D_ll
-!
-!!     ##############################################################
-       FUNCTION GMAXLOC1D_ll( PARRAY, KDIMS, MASK ) RESULT( KMAXLOC )
-!!     ##############################################################
-!
-  REAL, DIMENSION(:), INTENT(IN)              :: PARRAY   ! input array in
-                                 ! which the maximum is to be found
-  LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: MASK     ! mask 
-  INTEGER                                     :: KMAXLOC  ! indice
-          ! of the maximum value on the whole domain (global coordinates)
-  INTEGER,  OPTIONAL                          :: KDIMS
-!
-       END FUNCTION GMAXLOC1D_ll
-!
-END INTERFACE
-!
-INTERFACE GMINLOC_ll
-!
-!!     #######################################################
-       FUNCTION GMINLOC3D_ll( PARRAY, MASK ) RESULT( KMINLOC )
-!!     #######################################################
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN)              :: PARRAY   ! input array in
-                                 ! which the minimum is to be found
-  LOGICAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: MASK     ! mask 
-  INTEGER, DIMENSION(3)                           :: KMINLOC  ! indices
-           ! of the minimum value on the whole domain (global coordinates)
-!
-       END FUNCTION GMINLOC3D_ll
-!
-!!     ##############################################################
-       FUNCTION GMINLOC2D_ll( PARRAY, KDIMS, MASK ) RESULT (KMINLOC )
-!!     ##############################################################
-!
-  REAL, DIMENSION(:,:), INTENT(IN)              :: PARRAY   ! input array in
-                                 ! which the minimum is to be found
-  LOGICAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: MASK     ! mask 
-  INTEGER, DIMENSION(2)                         :: KMINLOC  ! indices
-           ! of the minimum value on the whole domain (global coordinates)
-  INTEGER, DIMENSION(2), OPTIONAL               :: KDIMS
-!
-       END FUNCTION GMINLOC2D_ll
-!
-!!     ##############################################################
-       FUNCTION GMINLOC1D_ll( PARRAY, KDIMS, MASK ) RESULT( KMINLOC )
-!!     ##############################################################
-!
-  REAL, DIMENSION(:), INTENT(IN)              :: PARRAY   ! input array in
-                                 ! which the minimum is to be found
-  LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: MASK     ! mask 
-  INTEGER                                     :: KMINLOC  ! indice
-           ! of the minimum value on the whole domain (global coordinates)
-  INTEGER,  OPTIONAL                       :: KDIMS
-!
-       END FUNCTION GMINLOC1D_ll
-!
-END INTERFACE
-!
-INTERFACE REDUCESUM_ll
-!
-!!     ###########################################
-       SUBROUTINE REDUCE_SUM_0DD_ll( PRES, KINFO )
-!!     ###########################################
-!
-  USE MODD_REPRO_SUM  , ONLY          :  DOUBLE_DOUBLE
-!
-  TYPE(DOUBLE_DOUBLE) , INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER             , INTENT(OUT)   :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_0DD_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_0D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  REAL, INTENT(INOUT) :: PRES ! sum 
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_0D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_1DD_ll( PRES, KINFO )
-!!     ##########################################
-!
-  USE MODD_REPRO_SUM  , ONLY                     :  DOUBLE_DOUBLE
-!
-  TYPE(DOUBLE_DOUBLE),DIMENSION(:),INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER                   , INTENT(OUT)  :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_1DD_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_1D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  REAL,DIMENSION(:),INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_1D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_2D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  REAL,DIMENSION(:,:),INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_2D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_3D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  REAL, DIMENSION(:,:,:),INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_3D_ll
-!
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_I0D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  INTEGER, INTENT(INOUT) :: PRES ! sum 
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_I0D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_I1D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  INTEGER,DIMENSION(:),INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_I1D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_I2D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  INTEGER,DIMENSION(:,:),INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_I2D_ll
-!
-!!     ##########################################
-       SUBROUTINE REDUCE_SUM_I3D_ll( PRES, KINFO )
-!!     ##########################################
-!
-  INTEGER, DIMENSION(:,:,:),INTENT(INOUT) :: PRES ! sum
-!
-  INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-!
-       END SUBROUTINE REDUCE_SUM_I3D_ll
-!
-END INTERFACE
-!
-END MODULE MODI_SUM_ll
diff --git a/src/LIB/SURCOUCHE/src/modi_update_ll.f90 b/src/LIB/SURCOUCHE/src/modi_update_ll.f90
deleted file mode 100644
index b19f828e52a89955c6ea5fca46389fdb200c8d55..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modi_update_ll.f90
+++ /dev/null
@@ -1,76 +0,0 @@
-!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.
-!-----------------------------------------------------------------
-
-!     #####################
-      MODULE MODI_UPDATE_ll 
-!     #####################
-!
-INTERFACE
-!
-!!     ##########################################
-       SUBROUTINE UPDATE_HALO_ll( TPLIST, KINFO )
-!!     ##########################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of fields to be updated
-  INTEGER                :: KINFO  ! return status
-!
-       END SUBROUTINE UPDATE_HALO_ll
-!
-!!     ############################################
-       SUBROUTINE UPDATE_1DHALO_ll( TPLIST, KINFO )
-!!     ############################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll
-!
-  TYPE(LIST1D_ll), POINTER :: TPLIST
-  INTEGER, INTENT(OUT) :: KINFO
-!
-       END SUBROUTINE UPDATE_1DHALO_ll
-!
-!!     ############################################################
-       SUBROUTINE UPDATE_BOUNDARIES_ll( HDIRECTION, TPLIST, KINFO )
-!!     ############################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-  CHARACTER(len=2), INTENT(IN) :: HDIRECTION
-  TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of fields to be updated
-  INTEGER                :: KINFO  ! return status
-!
-       END SUBROUTINE UPDATE_BOUNDARIES_ll
-!
-!
-!!     ##################################################################
-       SUBROUTINE INIT_HALO2_ll(TPHALO2LIST, KNBVAR, KDIMX, KDIMY, KDIMZ)
-!!     ##################################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
-!
-  TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST ! list of HALO2_lls
-  INTEGER                     :: KNBVAR      ! number of HALO2_lls to allocate
-  INTEGER        :: KDIMX, KDIMY, KDIMZ      ! dimensions of the HALO2_lls
-!
-       END SUBROUTINE INIT_HALO2_ll
-!
-!!     ########################################################
-       SUBROUTINE UPDATE_HALO2_ll( TPLIST, TPLISTHALO2, KINFO )
-!!     ########################################################
-!
-  USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll,LIST_ll
-!
-  TYPE(LIST_ll), POINTER      :: TPLIST      ! pointer to the list of 
-                                             ! fields to be sent
-  TYPE(HALO2LIST_ll), POINTER :: TPLISTHALO2 ! pointer to the list of
-                                             ! halo2 to be received
-  INTEGER                     :: KINFO       ! return status
-!
-       END SUBROUTINE UPDATE_HALO2_ll
-!
-END INTERFACE
-!
-END MODULE MODI_UPDATE_ll
diff --git a/src/LIB/SURCOUCHE/src/test_double_double.f90 b/src/LIB/SURCOUCHE/src/test_double_double.f90
index eb1d20fa04a3f08ac29562b456da3f8815d0aaac..59b0b2976b5efbf1a835a7da28bbf824b6354f7e 100644
--- a/src/LIB/SURCOUCHE/src/test_double_double.f90
+++ b/src/LIB/SURCOUCHE/src/test_double_double.f90
@@ -1,12 +1,14 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2010-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.
+!-----------------------------------------------------------------
 PROGRAM TEST_DOUBLE_DOUBLE
   ! This code calculates the summation of an array of real numbers
   ! distributed on multiple processors using double-double precision.
 
   USE MODD_MPIF
+  use mode_reduce_sum
   USE mode_repro_sum
 
   IMPLICIT NONE
diff --git a/src/MNH/aer_monitorn.f90 b/src/MNH/aer_monitorn.f90
index 21f1f177fdb72649cc8f5074726840a36ea06626..97faca64cb603b8b904a8512a07a01a45f85f619 100644
--- a/src/MNH/aer_monitorn.f90
+++ b/src/MNH/aer_monitorn.f90
@@ -1,7 +1,8 @@
-!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
 !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !ORILAM_LIC for details.
+!-----------------------------------------------------------------
 !!    ########################
       MODULE MODI_AER_MONITOR_n
 !!    ########################
@@ -120,7 +121,7 @@ USE MODD_CONF_n,    ONLY: LUSERC,&    ! Logical to use clouds
                           NRR         ! Total number of water variables
 USE MODD_PARAM_n,    ONLY: CCLOUD
 USE MODD_PRECIP_n, ONLY: XEVAP3D
-USE MODI_SUM_ll
+USE MODE_SUM_ll
 USE MODI_SEDIM_DUST
 USE MODI_SEDIM_SALT
 USE MODI_DUST_FILTER
diff --git a/src/MNH/bikhardt.f90 b/src/MNH/bikhardt.f90
index 1efebdc110d4eb558ebb4e10203fddeaebae9c7f..d1aef90e66f611cd6211de826c09ffdbce869a33 100644
--- a/src/MNH/bikhardt.f90
+++ b/src/MNH/bikhardt.f90
@@ -79,6 +79,8 @@ contains
 !               ------------
 !
 USE MODD_PARAMETERS       ! Declarative modules
+
+use mode_tools_ll,        only: GET_INDICE_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/ch_aqueous_sedim1mom.f90 b/src/MNH/ch_aqueous_sedim1mom.f90
index bddef28fabab5eda5381b4c4acad12a3c03792e9..9b4e7c6c327a7146e172173aed5dc17d867c7b77 100644
--- a/src/MNH/ch_aqueous_sedim1mom.f90
+++ b/src/MNH/ch_aqueous_sedim1mom.f90
@@ -99,7 +99,8 @@ USE MODD_RAIN_ICE_PARAM,  ONLY : XFSEDR, XEXSEDR, &
                                  XFSEDG, XEXSEDG
 
 use mode_tools,           only: Countjv
-!
+use mode_tools_ll,        only: GET_INDICE_ll
+
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
diff --git a/src/MNH/ch_aqueous_tmicc2r2.f90 b/src/MNH/ch_aqueous_tmicc2r2.f90
index 463ce4238652ab665025bcec96199e685441306c..5009b65247fd7696a0cc62018e39858f2c03fc92 100644
--- a/src/MNH/ch_aqueous_tmicc2r2.f90
+++ b/src/MNH/ch_aqueous_tmicc2r2.f90
@@ -94,6 +94,7 @@ USE MODD_RAIN_C2R2_KHKO_PARAM, ONLY : XAUTO1, XAUTO2,               &
                                  XACCR_RSMALL1, XACCR_RSMALL2
 
 use mode_tools,                only: Countjv
+use mode_tools_ll,             only: GET_INDICE_ll
 
 IMPLICIT NONE
 !
diff --git a/src/MNH/ch_aqueous_tmicice.f90 b/src/MNH/ch_aqueous_tmicice.f90
index c0fc812219caa96684384ec073a03b668b8f0fbf..e51d52f374a2b6ff66cb7891b25af689cb400fd3 100644
--- a/src/MNH/ch_aqueous_tmicice.f90
+++ b/src/MNH/ch_aqueous_tmicice.f90
@@ -137,6 +137,7 @@ USE MODD_CH_ICE_n                            ! index for ice phase chemistry wit
 USE MODE_PACK_PGI
 #endif
 use mode_tools,           only: Countjv
+use mode_tools_ll,        only: GET_INDICE_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/ch_aqueous_tmickess.f90 b/src/MNH/ch_aqueous_tmickess.f90
index ff4a0bf33b81dee3b215e2632813b506884c16a6..5c57138b8eca55b20d4550a54c4fd2f3d88c325c 100644
--- a/src/MNH/ch_aqueous_tmickess.f90
+++ b/src/MNH/ch_aqueous_tmickess.f90
@@ -84,6 +84,7 @@ USE MODD_CLOUDPAR,        ONLY : XC1RC, XC2RC, &! autoconversion param.
                                  XCEXVT         ! constant in the rain drop fall velocity
 
 use mode_tools,           only: Countjv
+use mode_tools_ll,        only: GET_INDICE_ll
 
 IMPLICIT NONE
 !
diff --git a/src/MNH/ch_aqueous_tmickhko.f90 b/src/MNH/ch_aqueous_tmickhko.f90
index 7369be14eb357a3112c9f118dc42228bd90f8605..938565d212dcc3925fe8169f450aa6a397daba65 100644
--- a/src/MNH/ch_aqueous_tmickhko.f90
+++ b/src/MNH/ch_aqueous_tmickhko.f90
@@ -85,6 +85,7 @@ USE MODD_PARAMETERS,ONLY: JPHEXT,    &! number of horizontal External points
 USE MODD_RAIN_C2R2_DESCR, ONLY : XRTMIN, XCTMIN 
 
 use mode_tools,           only: Countjv
+use mode_tools_ll,        only: GET_INDICE_ll
 
 IMPLICIT NONE
 !
diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90
index c5357b6a18dd0e5275a5c866958cb60f0edba919..30ea347667318cda050a7dd246ab9396b5635e95 100644
--- a/src/MNH/ch_monitorn.f90
+++ b/src/MNH/ch_monitorn.f90
@@ -2,6 +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_CH_MONITOR_n
 !!    ########################
@@ -133,7 +134,6 @@ USE MODI_CH_AQUEOUS_TMICKHKO
 USE MODI_CH_AQUEOUS_SEDIM1MOM
 USE MODI_CH_AQUEOUS_SEDIM2MOM
 USE MODI_CH_AQUEOUS_CHECK
-USE MODI_SUM_ll
 USE MODI_CH_AER_SEDIM_n
 USE MODI_CH_AER_WETDEP_n
 USE MODI_CH_ORILAM
@@ -145,6 +145,7 @@ USE MODI_CH_AER_DEPOS
 USE MODE_ll
 USE MODE_MODELN_HANDLER
 use mode_msg
+USE MODE_SUM_ll
 !
 USE MODI_WRITE_TS1D
 USE MODD_CST, ONLY : XMNH_TINY
diff --git a/src/MNH/change_gribex_var.f90 b/src/MNH/change_gribex_var.f90
index 0f4badbcd98c8f3280d2c46a7a704b8e51188ef8..a24b85dc832b2beaec76afa82d636023fbc7dabe 100644
--- a/src/MNH/change_gribex_var.f90
+++ b/src/MNH/change_gribex_var.f90
@@ -2,6 +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_CHANGE_GRIBEX_VAR
 !     #############################
@@ -172,6 +173,7 @@ USE MODD_PARAMETERS
 USE MODD_REF
 !
 USE MODE_THERMO
+use mode_tools_ll,        only: GET_INDICE_ll
 !
 USE MODI_SHUMAN
 USE MODI_WATER_SUM
diff --git a/src/MNH/convection.f90 b/src/MNH/convection.f90
index 84eb18803a7034d84f1845fa0c4020f698761b59..2738ac854fe50aabff8b02554b43b0c6f41b6c79 100644
--- a/src/MNH/convection.f90
+++ b/src/MNH/convection.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-!-----------------------------------------------------------------
 !     ######################
       MODULE MODI_CONVECTION
 !     ######################
@@ -166,6 +162,9 @@ END MODULE MODI_CONVECTION
 !
 USE MODD_PARAMETERS
 USE MODD_CST
+
+use mode_tools_ll,        only: GET_INDICE_ll
+
 USE MODI_SHUMAN
 USE MODI_DEEP_CONVECTION
 USE MODI_SHALLOW_CONVECTION
diff --git a/src/MNH/define_maskn.f90 b/src/MNH/define_maskn.f90
index abd56bf02b2932733f88c05d04b72af9265004f0..e7c927cb6105d71ce086710880d29681a7523602 100644
--- a/src/MNH/define_maskn.f90
+++ b/src/MNH/define_maskn.f90
@@ -68,7 +68,7 @@ USE MODE_MODELN_HANDLER
 !
 USE MODD_VAR_ll, ONLY : YSPLITTING
 USE MODD_STRUCTURE_ll, ONLY : ZONE_ll
-USE MODE_TOOLS_ll, ONLY : INTERSECTION
+USE MODE_TOOLS_ll, ONLY : GET_OR_ll, INTERSECTION
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/eddyUV_flux_one_wayn.f90 b/src/MNH/eddyUV_flux_one_wayn.f90
index 99a1fc6783a34ab406dd09980941479396b15c5a..1e8e7c51314655f7e99de4252bd3562d2722878f 100644
--- a/src/MNH/eddyUV_flux_one_wayn.f90
+++ b/src/MNH/eddyUV_flux_one_wayn.f90
@@ -69,6 +69,7 @@ USE MODD_NESTING
 !
 use mode_bikhardt
 USE MODE_FIELD, ONLY : TFIELDLIST, FIND_FIELD_ID_FROM_MNHNAME
+use mode_tools_ll,        only: GET_INDICE_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/exchange.f90 b/src/MNH/exchange.f90
index fbf47a060f4524e611135ec95b0ba7a8293b0d5e..b6d8bb8b3a90378304d730c19fbdfeecb932cef2 100644
--- a/src/MNH/exchange.f90
+++ b/src/MNH/exchange.f90
@@ -1,14 +1,8 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/exchange.f90,v $ $Revision: 1.2.2.2.2.2.16.1.2.5.2.1 $ $Date: 2015/12/01 15:26:23 $
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
 !     ####################
       MODULE MODI_EXCHANGE
 !     ####################
@@ -99,7 +93,7 @@ END MODULE MODI_EXCHANGE
 !*      0.   DECLARATIONS
 !            ------------
 !
-USE MODE_ll
+! USE MODE_ll
 !
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
 USE MODD_GRID_n
@@ -108,7 +102,8 @@ USE MODD_BUDGET,      ONLY : LBUDGET_SV
 USE MODD_CST,         ONLY : XMNH_TINY
 USE MODD_LUNIT_n,     ONLY : TLUOUT
 USE MODI_SHUMAN
-USE MODI_SUM_ll
+use mode_exchange_ll, only: UPDATE_HALO_ll
+USE MODE_SUM_ll
 USE MODI_BUDGET
 USE MODD_CH_MNHC_n,   ONLY : LUSECHEM, LUSECHAQ, LUSECHIC
 USE MODD_CH_AEROSOL,  ONLY : LORILAM, NM6_AER
diff --git a/src/MNH/extend_grid_parameter_mnh.f90 b/src/MNH/extend_grid_parameter_mnh.f90
index 3d5fc09a13966b120e77dbb6db3755d0e3a69ed0..f83fc564f7c7a88f784331aab62369990f598531 100644
--- a/src/MNH/extend_grid_parameter_mnh.f90
+++ b/src/MNH/extend_grid_parameter_mnh.f90
@@ -22,7 +22,7 @@ USE MODD_MPIF
 use MODD_PRECISION,   only: MNHREAL_MPI
 USE MODD_VAR_ll,      ONLY: NPROC, IP, NMNH_COMM_WORLD
 !
-USE MODE_TOOLS_ll,    ONLY: INTERSECTION, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll
+USE MODE_TOOLS_ll,    ONLY: GET_GLOBALDIMS_ll, GET_INDICE_ll, GET_OR_ll, INTERSECTION, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll
 !
 USE MODI_UPDATE_NHALO1D
 !
diff --git a/src/MNH/fill_zsmtn.f90 b/src/MNH/fill_zsmtn.f90
index 6a8bb7556c4e9ae88049eefa66be4c7d37b4b0b1..0aec87f432255cf0c4b0a52bb87c1a7d23730c71 100644
--- a/src/MNH/fill_zsmtn.f90
+++ b/src/MNH/fill_zsmtn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2005-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.
 !-----------------------------------------------------------------
 !     ######################
@@ -70,6 +70,7 @@ USE MODI_INI_BIKHARDT_n
 USE MODI_SPAWN_ZS
 USE MODE_MODELN_HANDLER
 !
+use mode_nest_ll,      only: GO_TOMODEL_ll
 USE MODE_SPLITTING_ll, ONLY : SPLIT2, DEF_SPLITTING2
 USE MODD_VAR_ll, ONLY : NPROC, IP, YSPLITTING, NMNH_COMM_WORLD
 USE MODD_STRUCTURE_ll, ONLY : ZONE_ll
diff --git a/src/MNH/gps_zenith.f90 b/src/MNH/gps_zenith.f90
index 613ad8f2b6145570b8111a7ec83c5b251d675fdb..a11a074d6f511b7909c55934712aa9294cd0a3c2 100644
--- a/src/MNH/gps_zenith.f90
+++ b/src/MNH/gps_zenith.f90
@@ -86,7 +86,7 @@ USE MODD_PARAMETERS
 !
 USE MODE_IO_FILE,          ONLY: IO_File_close, IO_File_open
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list
-USE MODE_TOOLS_ll,         ONLY: LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll
+USE MODE_TOOLS_ll,         ONLY: GET_INDICE_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll
 !
 USE MODI_INTERPOL_STATION
 !
diff --git a/src/MNH/ice_adjust.f90 b/src/MNH/ice_adjust.f90
index 76ed83fdd97e2d79f6c00cb165ffc20895a3dc42..d89d7227fd120a31677f451e7c38c069c5c8a89d 100644
--- a/src/MNH/ice_adjust.f90
+++ b/src/MNH/ice_adjust.f90
@@ -174,7 +174,9 @@ USE MODD_BUDGET
 USE MODD_CONF
 USE MODD_CST
 USE MODD_PARAMETERS
-!
+
+use mode_tools_ll,        only: GET_INDICE_ll
+
 USE MODI_BUDGET
 USE MODI_CONDENSATION
 USE MODI_GET_HALO
diff --git a/src/MNH/ice_adjust_elec.f90 b/src/MNH/ice_adjust_elec.f90
index 957781f1862a455d18478686f61a10eca718268a..8d802babf157138a461aeff09c479f519d42149b 100644
--- a/src/MNH/ice_adjust_elec.f90
+++ b/src/MNH/ice_adjust_elec.f90
@@ -179,7 +179,9 @@ USE MODD_BUDGET
 USE MODD_NSV, ONLY : NSV_ELECBEG, NSV_ELECEND
 USE MODD_ELEC_DESCR, ONLY : XRTMIN_ELEC, XQTMIN, XFC, XFI, XECHARGE
 USE MODD_RAIN_ICE_DESCR, ONLY : XRTMIN, XBI
-!
+
+use mode_tools_ll,        only: GET_INDICE_ll
+
 USE MODI_CONDENSATION
 USE MODI_BUDGET
 USE MODI_GET_HALO
diff --git a/src/MNH/ini_one_wayn.f90 b/src/MNH/ini_one_wayn.f90
index 50cbf7ae92633f14d3579f961cc825188da6d148..582bcac1eedeaa9c95d03fcf22910247bccb5259 100644
--- a/src/MNH/ini_one_wayn.f90
+++ b/src/MNH/ini_one_wayn.f90
@@ -108,7 +108,9 @@ USE MODD_PARAM_n,        only: CCLOUD
 USE MODD_REF_n,          only: XRHODJ, XRHODREF
 !
 use mode_bikhardt
-use mode_ll,             only: LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, SET_LSFIELD_1WAY_ll
+use mode_ll,             only: GET_CHILD_DIM_ll, GET_DIM_EXT_ll, GO_TOMODEL_ll,         &
+                               LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, &
+                               SET_LSFIELD_1WAY_ll, UNSET_LSFIELD_1WAY_ll
 USE MODE_MODELN_HANDLER, only: GOTO_MODEL
 !
 USE MODI_SET_CHEMAQ_1WAY
diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90
index f02cd9c388ba086241e6cf773243827f0ea2b0fa..7f9e33802c3d1f812783407aba724084078871ac 100644
--- a/src/MNH/ini_prog_var.f90
+++ b/src/MNH/ini_prog_var.f90
@@ -127,6 +127,7 @@ USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list
 USE MODE_MODELN_HANDLER
 USE MODE_MSG
 USE MODE_POS
+use mode_tools_ll,         only: GET_INDICE_ll
 !
 USE MODI_CH_AER_INIT_SOA
 USE MODI_CH_INIT_SCHEME_n
diff --git a/src/MNH/ion_attach_elec.f90 b/src/MNH/ion_attach_elec.f90
index 90a6f300ec32d36d3ac48752d48f6deebcff4eed..bfecbd9a16f54dc039518c785c481438bda2e442 100644
--- a/src/MNH/ion_attach_elec.f90
+++ b/src/MNH/ion_attach_elec.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2010-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.
+!-----------------------------------------------------------------
 !     ############################
       MODULE MODI_ION_ATTACH_ELEC
 !     ############################
@@ -92,7 +93,9 @@ USE MODD_RAIN_ICE_PARAM
 USE MODD_NSV, ONLY : NSV_ELECBEG, NSV_ELEC
 USE MODD_BUDGET, ONLY : LBU_RSV
 USE MODD_REF,    ONLY : XTHVREFZ
-!
+
+use mode_tools_ll,        only: GET_INDICE_ll
+
 USE MODI_BUDGET
 USE MODI_MOMG
 !
diff --git a/src/MNH/khko_notadjust.f90 b/src/MNH/khko_notadjust.f90
index adf6eee1c10df71a80cf600d765cbdd291e023a9..806c6c9652e2dd3515a1657eb1444d864d687637 100644
--- a/src/MNH/khko_notadjust.f90
+++ b/src/MNH/khko_notadjust.f90
@@ -111,6 +111,7 @@ USE MODE_FIELD,           ONLY: TFIELDDATA,TYPEREAL
 USE MODE_IO_FIELD_WRITE,  only: IO_Field_write
 USE MODE_MSG
 use mode_tools,           only: Countjv
+use mode_tools_ll,        only: GET_INDICE_ll
 !
 USE MODI_BUDGET
 USE MODI_PROGNOS
diff --git a/src/MNH/lidar.f90 b/src/MNH/lidar.f90
index 835da86854aa30a790446dcf70cc0143b516db98..976de3ca396061d429dbdb10531c45da38bfc020 100644
--- a/src/MNH/lidar.f90
+++ b/src/MNH/lidar.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2007-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.
+!-----------------------------------------------------------------
 !      #################
        MODULE MODI_LIDAR 
 !      #################
@@ -112,7 +113,9 @@ USE MODD_PARAM_LIMA_COLD, ONLY : UCCS=>XCCS, UCXS=>XCXS, ULBEXS=>XLBEXS, &
                                                          ULBS=>XLBS
 USE MODD_PARAM_LIMA_MIXED,ONLY : UCCG=>XCCG, UCXG=>XCXG, ULBEXG=>XLBEXG, &
                                                          ULBG=>XLBG
-!
+
+use mode_tools_ll,        only: GET_INDICE_ll
+
 USE MODI_BHMIE_WATER    ! Gamma or mono dispersed size distributions
 USE MODI_BHMIE_AEROSOLS ! Lognormal or mono dispersed size distributions
 !
diff --git a/src/MNH/mnhget_surf_paramn.f90 b/src/MNH/mnhget_surf_paramn.f90
index 238c9d4ae495de607bf0ea77ffb853acefb7952b..da6c4608943b601d01edfbb2a234079a68c551cb 100644
--- a/src/MNH/mnhget_surf_paramn.f90
+++ b/src/MNH/mnhget_surf_paramn.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 surfex 2006/10/24 10:43:18
-!-----------------------------------------------------------------
 !     #######################
       MODULE MODI_MNHGET_SURF_PARAM_n
 !     #######################
@@ -88,6 +83,8 @@ USE MODD_PARAMETERS,     ONLY : XUNDEF
 !
 USE MODD_IO_SURF_MNH,    ONLY : NHALO
 !
+use mode_tools_ll,        only: GET_INDICE_ll
+
 USE MODI_GET_COVER_N
 USE MODI_GET_FRAC_N
 USE MODI_GET_JCOVER_N
diff --git a/src/MNH/mnhopen_aux_io_surf.f90 b/src/MNH/mnhopen_aux_io_surf.f90
index 3a89446e628078774236e93bcb5a944c48085ba6..2d0888f4515e3e1173ad26ad642f534893bc16d3 100644
--- a/src/MNH/mnhopen_aux_io_surf.f90
+++ b/src/MNH/mnhopen_aux_io_surf.f90
@@ -75,6 +75,7 @@ USE MODE_IO_FIELD_READ,    only: IO_Field_read
 USE MODE_IO_FILE,          ONLY: IO_File_open
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list, IO_File_find_byname
 USE MODE_MSG
+use MODE_TOOLS_ll,        only: GET_DIM_EXT_ll, GET_INDICE_ll
 !
 USE MODI_GET_1D_MASK
 USE MODI_MNH_SURF_GRID_IO_INIT
diff --git a/src/MNH/mnhopen_namelist.f90 b/src/MNH/mnhopen_namelist.f90
index d594b6e5ff0e60fda174f2a27a028318b8f633eb..81716add4fcd795d50b15a88814ae749dafc66a7 100644
--- a/src/MNH/mnhopen_namelist.f90
+++ b/src/MNH/mnhopen_namelist.f90
@@ -60,6 +60,7 @@ USE MODD_IO_NAM,           ONLY: TNAM
 USE MODE_IO_FILE,          ONLY: IO_File_open
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list
 USE MODE_MSG
+use mode_nest_ll,          only: GET_MODEL_NUMBER_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/mode_elec_ll.f90 b/src/MNH/mode_elec_ll.f90
index 084db39dd5ecec2f1b48f1e743e95d9ef328d23c..32ba759ef5e0b8f1cffd1f5f0ac2f62cd4dc5bd4 100644
--- a/src/MNH/mode_elec_ll.f90
+++ b/src/MNH/mode_elec_ll.f90
@@ -28,7 +28,9 @@
 USE MODD_MPIF
 use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
 USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
-!
+
+use MODE_TOOLS_ll,  only: GET_OR_ll
+
 IMPLICIT NONE
 !
 INTEGER, PARAMETER :: IFIRST_PROC = 0   ! 0/1 to increase numerotation of proc number 
diff --git a/src/MNH/mode_extrapol.f90 b/src/MNH/mode_extrapol.f90
index fe3cc9b664bbeca42953bca05f35b5801b61b8af..41d5268fbcbe5acef1f00965eac0332c2d6f8e1b 100644
--- a/src/MNH/mode_extrapol.f90
+++ b/src/MNH/mode_extrapol.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2011-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.
@@ -35,7 +35,7 @@ CONTAINS
 
   SUBROUTINE EXTRAPOL3D(HBORD,PTAB)
     USE MODD_LBC_n
-    USE MODE_ll
+    USE MODE_TOOLS_ll
     !
     IMPLICIT NONE
     !
@@ -93,7 +93,7 @@ CONTAINS
 
   SUBROUTINE EXTRAPOL2D(HBORD,PTAB)
     USE MODD_LBC_n
-    USE MODE_ll
+    USE MODE_TOOLS_ll
     !
     IMPLICIT NONE
     !
@@ -170,10 +170,12 @@ CONTAINS
 !!      J.Escobar 2/05/2016 : add STOP in case of problem with decomposition
 !-------------------------------------------------------------------------------
     USE MODD_LBC_n
+    use mode_argslist_ll,    only: ADD2DFIELD_ll, CLEANLIST_ll
     USE MODE_MODELN_HANDLER
-    USE MODE_ll
-    USE MODD_PARAMETERS, ONLY : JPHEXT
-    USE MODE_EXCHANGE_ll, ONLY : UPDATE_HALO_EXTENDED_ll
+    use mode_nest_ll,        only: GET_CHILD_DIM_ll, GO_TOMODEL_ll
+    USE MODE_TOOLS_ll
+    USE MODD_PARAMETERS,     ONLY: JPHEXT
+    USE MODE_EXCHANGE_ll,    ONLY: UPDATE_HALO_EXTENDED_ll
     !
     IMPLICIT NONE
     !
@@ -311,10 +313,12 @@ CONTAINS
 !!      J.Escobar 2/05/2016 : add STOP in case of problem with decomposition
 !-------------------------------------------------------------------------------
     USE MODD_LBC_n
+    use mode_argslist_ll,    only: ADD2DFIELD_ll, CLEANLIST_ll
     USE MODE_MODELN_HANDLER
-    USE MODE_ll
-    USE MODD_PARAMETERS, ONLY : JPHEXT
-    USE MODE_EXCHANGE_ll, ONLY : UPDATE_HALO_EXTENDED_ll
+    use mode_nest_ll,        only: GET_CHILD_DIM_ll, GO_TOMODEL_ll
+    USE MODE_TOOLS_ll
+    USE MODD_PARAMETERS,     ONLY: JPHEXT
+    USE MODE_EXCHANGE_ll,    ONLY: UPDATE_HALO_EXTENDED_ll
     !
     IMPLICIT NONE
     !
diff --git a/src/MNH/mode_type_zdiffu.f90 b/src/MNH/mode_type_zdiffu.f90
index e6a4a6076278f31aab1bee492787dad0b45fc212..7083cb2629079100fcde90077cb4324b1c5cdb17 100644
--- a/src/MNH/mode_type_zdiffu.f90
+++ b/src/MNH/mode_type_zdiffu.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2006-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.
 !-----------------------------------------------------------------
 MODULE MODE_TYPE_ZDIFFU
@@ -17,6 +17,8 @@ SUBROUTINE INIT_TYPE_ZDIFFU_HALO2(PTYPE_ZDIFFU_HALO2,KSIZE_ZERO)
 !              ------------
 USE MODD_PARAMETERS , ONLY : JPVEXT
 USE MODD_DIM_ll     , ONLY : NKMAX_TMP_ll
+
+use mode_tools_ll,   only: GET_DIM_EXT_ll, GET_INDICE_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/one_wayn.f90 b/src/MNH/one_wayn.f90
index f7bcfbd74eb3bf7ac1593cfba69ad864ede34ddf..8f922a418ec4e95d2703056d878e542c90953261 100644
--- a/src/MNH/one_wayn.f90
+++ b/src/MNH/one_wayn.f90
@@ -141,9 +141,12 @@ USE MODD_PARAM_n,        only: CCLOUD
 USE MODD_REF_n,          only: XRHODJ, XRHODREF, XRVREF, XTHVREF
 !
 use mode_bikhardt
-use mode_ll,             only: LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, SET_LSFIELD_1WAY_ll
+use mode_ll,             only: GET_CHILD_DIM_ll, GO_TOMODEL_ll,                         &
+                               LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, &
+                               SET_LSFIELD_1WAY_ll, UNSET_LSFIELD_1WAY_ll
 USE MODE_MODELN_HANDLER, only: GOTO_MODEL
 use mode_sum_ll,         only: SUM3D_ll
+use mode_tools_ll,       only: GET_DIM_EXT_ll
 !
 USE MODI_SET_CHEMAQ_1WAY
 USE MODI_SET_CONC_ICE_C1R3
diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90
index 86b375631f93207762fa91052e5412c6c11d7679..4303b30728ee131ad0d8d1f6cd5a0eb4aafacd69 100644
--- a/src/MNH/prep_pgd.f90
+++ b/src/MNH/prep_pgd.f90
@@ -99,6 +99,7 @@ USE MODE_IO,               only: IO_Config_set, IO_Init
 USE MODE_IO_FIELD_WRITE,   only: IO_Field_write, IO_Header_write
 USE MODE_IO_FILE,          only: IO_File_close, IO_File_open
 USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list, IO_Filelist_print
+use mode_ll
 USE MODE_MODELN_HANDLER
 USE MODE_MSG
 USE MODE_POS
diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90
index 97cc43d0a07feef1abaf31c176e29ecc8aa92a14..b4c3096c367839114be4329438e174c08f608d4c 100644
--- a/src/MNH/pressurez.f90
+++ b/src/MNH/pressurez.f90
@@ -239,6 +239,7 @@ USE MODD_VAR_ll,      ONLY: NMNH_COMM_WORLD , NPROC
 USE MODE_ll
 USE MODE_MPPDB
 USE MODE_MSG
+USE MODE_SUM2_ll,     ONLY: GMAXLOC_ll
 !
 USE MODI_BUDGET
 USE MODI_CONJGRAD
@@ -252,7 +253,6 @@ USE MODI_MASS_LEAK
 USE MODI_P_ABS
 USE MODI_RICHARDSON
 USE MODI_SHUMAN
-USE MODI_SUM_ll , ONLY : GMAXLOC_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/radar_simulator.f90 b/src/MNH/radar_simulator.f90
index 1d09ecc69198c2b91558b22c01081ffd166a8b43..b855afc924ed0d8a391fc7d21a9d572158c6fd7f 100644
--- a/src/MNH/radar_simulator.f90
+++ b/src/MNH/radar_simulator.f90
@@ -146,6 +146,8 @@ USE MODD_RADAR            , ONLY: XLAT_RAD,XLON_RAD,XALT_RAD,XDT_RAD,XELEV,&
 !
 USE MODE_INTERPOL_BEAM
 USE MODE_FGAU             , ONLY: GAULEG,GAUHER
+use mode_tools_ll,        only: GET_INDICE_ll
+
 USE MODI_RADAR_SCATTERING
 ! convective/stratiform
 USE MODI_SET_MSK 
diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90
index 531637f10cc37a1b65b4a345a40860d85a256822..8d47d4851fe307bbfa631489ad4fdbf10a128a7c 100644
--- a/src/MNH/radiations.f90
+++ b/src/MNH/radiations.f90
@@ -163,12 +163,13 @@ USE MODE_REPRO_SUM,      ONLY : SUM_DD_R2_R1_ll,SUM_DD_R1_ll
 USE MODE_PACK_PGI
 #endif
 USE MODE_SALTOPT
+USE MODE_SUM_ll,          ONLY: MIN_ll
+USE MODE_SUM2_ll,         ONLY: GMINLOC_ll
 USE MODE_THERMO
 !
 USE MODI_AEROOPT_GET
 USE MODI_ECMWF_RADIATION_VERS2
 USE MODI_ECRAD_INTERFACE
-USE MODI_SUM_ll,      ONLY: GMINLOC_ll, MIN_ll
 USE MODD_VAR_ll,      ONLY: IP
 !  
 IMPLICIT NONE
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index 04c6953c18b4bf6592c2d6af013c969d99c69804..51f3a734e961f55493974ebda2e1c21b1077e994 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -268,6 +268,7 @@ use MODE_RAIN_ICE_SEDIMENTATION_STAT,  only: RAIN_ICE_SEDIMENTATION_STAT
 use MODE_RAIN_ICE_SLOW,                only: RAIN_ICE_SLOW
 use MODE_RAIN_ICE_WARM,                only: RAIN_ICE_WARM
 use mode_tools,                        only: Countjv
+use mode_tools_ll,                     only: GET_INDICE_ll
 
 use MODI_BUDGET
 USE MODI_ICE4_RAINFR_VERT
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index 047a7618837fe20f15acf3aa2ad4595b807d3bff..6ff7014b90c5d416e45fa2a60cda6fe5b8aaf16e 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -142,6 +142,7 @@ USE MODE_MSG
 USE MODE_TIME
 USE MODE_THERMO
 USE MODE_TOOLS, ONLY: UPCASE
+use mode_tools_ll,   only: GET_DIM_EXT_ll
 !
 USE MODI_READ_HGRID_n
 USE MODI_READ_VER_GRID
diff --git a/src/MNH/read_asc_latpress.f90 b/src/MNH/read_asc_latpress.f90
index 61745f0d15b225622ff7c647f17b122796e25dfe..af67b339779c1df773e1e56e8deaa0120b1790eb 100644
--- a/src/MNH/read_asc_latpress.f90
+++ b/src/MNH/read_asc_latpress.f90
@@ -1,8 +1,8 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-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.
-
+!-----------------------------------------------------------------
 !     ########################
       MODULE MODI_READ_ASC_LATPRESS
 !     ########################
@@ -52,8 +52,7 @@ END MODULE MODI_READ_ASC_LATPRESS
 !            -----------
 !
 !
-
-
+use mode_tools_ll,        only: GET_INDICE_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90
index 778b9e29c97c92e0e4d788fff847280ba6944660..b5e9923162403a4345ae638acf393c5419d115fa 100644
--- a/src/MNH/read_chem_data_netcdf_case.f90
+++ b/src/MNH/read_chem_data_netcdf_case.f90
@@ -117,6 +117,7 @@ USE MODE_MPPDB
 USE MODE_THERMO
 USE MODE_TIME
 USE MODE_TOOLS,      ONLY: UPCASE
+use mode_tools_ll,   only: GET_DIM_EXT_ll
 !
 USE MODI_CH_AER_INIT_SOA
 USE MODI_CH_INIT_SCHEME_n
diff --git a/src/MNH/read_hgrid.f90 b/src/MNH/read_hgrid.f90
index 26b9881e4dd96a27160ffd4aec883c38abc99446..ec9c7cd44834781c72dda2a054b4dbc66f2868d4 100644
--- a/src/MNH/read_hgrid.f90
+++ b/src/MNH/read_hgrid.f90
@@ -93,6 +93,8 @@ USE MODE_IO_FIELD_READ, only: IO_Field_read
 USE MODE_GRIDPROJ
 USE MODE_MSG
 USE MODE_MODELN_HANDLER
+use MODE_NEST_ll,        only: GO_TOMODEL_ll
+use MODE_TOOLS_ll,       only: GET_DIM_PHYS_ll
 !
 USE MODI_READ_HGRID_n
 !
diff --git a/src/MNH/read_hgridn.f90 b/src/MNH/read_hgridn.f90
index 0989fed5359ea361bf8667a872ea934124fa094d..04cf40b18a5e061db9bf11b1b3159d2dbe311ce9 100644
--- a/src/MNH/read_hgridn.f90
+++ b/src/MNH/read_hgridn.f90
@@ -92,6 +92,7 @@ USE MODE_IO,            only: IO_Pack_set
 USE MODE_IO_FIELD_READ, only: IO_Field_read
 USE MODE_MSG
 USE MODE_MODELN_HANDLER
+use MODE_TOOLS_ll,       only: GET_DIM_EXT_ll, GET_DIM_PHYS_ll, GET_INDICE_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/set_advfrc.f90 b/src/MNH/set_advfrc.f90
index b931fe38b25df299015f2528102b153cdf644489..954d6fb9607ae72667f10f5bfc57e2adaaf2fa28 100644
--- a/src/MNH/set_advfrc.f90
+++ b/src/MNH/set_advfrc.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-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.
@@ -93,6 +93,7 @@ USE MODD_REF
 USE MODE_DATETIME
 USE MODE_MSG
 USE MODE_THERMO
+use mode_tools_ll,        only: GET_INDICE_ll
 !
 USE MODI_HEIGHT_PRESS
 USE MODI_PRESS_HEIGHT
diff --git a/src/MNH/set_perturb.f90 b/src/MNH/set_perturb.f90
index ef30e87c56598b307c37c5061a9eff04d0071f3e..1f88a63cfff307d1dd499afd5f73d1d7d1f51d9e 100644
--- a/src/MNH/set_perturb.f90
+++ b/src/MNH/set_perturb.f90
@@ -115,15 +115,16 @@ USE MODD_LUNIT_n, ONLY: TLUOUT
 USE MODD_LSFIELD_n
 USE MODD_PARAMETERS
 USE MODD_REF_n
+USE MODD_VAR_ll , ONLY : NMNH_COMM_WORLD
 !
 USE MODE_GATHER_ll
 USE MODE_ll
 USE MODE_MPPDB
 USE MODE_POS
 USE MODE_REPRO_SUM
+use MODE_SCATTER_ll, only: SCATTER_XYFIELD
 !
 USE MODI_GET_HALO
-USE MODI_SCATTER
 !
 IMPLICIT NONE
 !
@@ -354,8 +355,8 @@ SELECT CASE(CPERT_KIND)
 !*       3.3   Add to the U and V fields :
 !
     ALLOCATE(ZPU(IIU,IJU),ZPV(IIU,IJU))
-    CALL SCATTER(ZPU_ll,ZPU)
-    CALL SCATTER(ZPV_ll,ZPV)
+    CALL SCATTER_XYFIELD(ZPU_ll,ZPU,1,NMNH_COMM_WORLD)
+    CALL SCATTER_XYFIELD(ZPV_ll,ZPV,1,NMNH_COMM_WORLD)
     DEALLOCATE(ZPU_ll,ZPV_ll)
     DO JI = 1,IIU
       DO JJ = 1,IJU
diff --git a/src/MNH/set_relfrc.f90 b/src/MNH/set_relfrc.f90
index 7c7fc25b1aeb15115d282bba56bd8f513ab701ab..6de7d389ec9698629325142cc2dbecdbd2532563 100644
--- a/src/MNH/set_relfrc.f90
+++ b/src/MNH/set_relfrc.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-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.
@@ -80,6 +80,7 @@ END MODULE MODI_SET_RELFRC
 !
 USE MODD_CONF
 USE MODD_CST 
+USE MODD_DIM_n
 USE MODD_FRC
 USE MODD_GRID
 USE MODD_GRID_n
@@ -92,8 +93,8 @@ USE MODD_RELFRC_n
 USE MODE_DATETIME
 USE MODE_MSG
 USE MODE_THERMO 
+use mode_tools_ll,        only: GET_INDICE_ll
 !
-USE MODD_DIM_n 
 USE MODI_HEIGHT_PRESS
 USE MODI_PRESS_HEIGHT
 USE MODI_READ_ASC_LATPRESS
diff --git a/src/MNH/spectre.f90 b/src/MNH/spectre.f90
index 22878e5a926e5263f3e868a0ef20357e13ea4179..545c60629410ef29c5a16bfd5289f96038c41e28 100644
--- a/src/MNH/spectre.f90
+++ b/src/MNH/spectre.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2011-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.
@@ -40,6 +40,7 @@ USE MODE_POS
 USE MODE_IO,               only: IO_Config_set, IO_Init
 USE MODE_IO_FILE,          only: IO_File_close, IO_File_open
 USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list, IO_Filelist_print
+use mode_init_ll,          only: END_PARA_ll
 USE MODE_MODELN_HANDLER
 !USE MODD_TYPE_DATE
 USE MODI_VERSION
diff --git a/src/MNH/spectre_arome.f90 b/src/MNH/spectre_arome.f90
index 81a83ebc2089429df9c56f7ecaa107e050d6d94e..c519472808d3a06c58144cd4596c1c28f8a0e0a1 100644
--- a/src/MNH/spectre_arome.f90
+++ b/src/MNH/spectre_arome.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2011-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.
@@ -30,6 +30,7 @@ SUBROUTINE SPECTRE_AROME(HINIFILE,HOUTFILE,PDELTAX,PDELTAY,KI,KJ,KK)
 !
 USE MODD_CONF
 USE MODE_IO, only: IO_Pack_set
+use mode_init_ll, only: SET_DAD0_ll, SET_JP_ll, SET_SPLITTING_ll
 USE MODD_SPECTRE
 USE MODI_COMPUTE_SPECTRE
 USE MODD_PARAMETERS
diff --git a/src/MNH/split_grid_parameter_mnh.f90 b/src/MNH/split_grid_parameter_mnh.f90
index fed28c271c66c42b89e5a22370edd23e29884dda..e859565f1512b167ef76f96a8a8c1856968428b8 100644
--- a/src/MNH/split_grid_parameter_mnh.f90
+++ b/src/MNH/split_grid_parameter_mnh.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2011-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.
+!-----------------------------------------------------------------
 !     #############################################################
 #ifdef MNH_PARALLEL
       SUBROUTINE SPLIT_GRID_PARAMETERX1_MNH(HGRID,HREC,KDIM,KSIZE,KIMAX_ll,KJMAX_ll,KHALO,PFIELD,PFIELD_SPLIT)
@@ -21,6 +22,8 @@
 #else
 USE MODD_IO_SURF_MNH, ONLY : NHALO
 #endif
+
+use mode_tools_ll,        only: GET_INDICE_ll, GET_OR_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/surf_solar_slopes.f90 b/src/MNH/surf_solar_slopes.f90
index 9dd3fbe40e653dab6d3ced2f8c4d61a04e70bc3f..e7ea4ef2284690164c6c4c0679c8621f245ec5dd 100644
--- a/src/MNH/surf_solar_slopes.f90
+++ b/src/MNH/surf_solar_slopes.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 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.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 param 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !    #############################
      MODULE MODI_SURF_SOLAR_SLOPES 
 !    #############################
@@ -83,6 +78,7 @@ END MODULE MODI_SURF_SOLAR_SLOPES
 !              ------------
 !
 USE MODD_CST, ONLY : XPI, XMNH_TINY
+use mode_tools_ll, only: GET_INDICE_ll
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/turb_cloud_index.f90 b/src/MNH/turb_cloud_index.f90
index a224e27eb694ad36e42c8559521034e5de408996..abe8e0f24c2af29888c0d0517ea5d6d882e6e8a8 100644
--- a/src/MNH/turb_cloud_index.f90
+++ b/src/MNH/turb_cloud_index.f90
@@ -90,6 +90,7 @@ USE MODD_PARAMETERS,     ONLY: JPVEXT
 !
 USE MODE_FIELD,          ONLY: TFIELDDATA,TYPEREAL
 USE MODE_IO_FIELD_WRITE, only: IO_Field_write
+use mode_tools_ll,       only: GET_INDICE_ll
 !
 USE MODI_GRADIENT_M
 !
diff --git a/src/MNH/zsmt_pgd.f90 b/src/MNH/zsmt_pgd.f90
index de9025e0f7668d7f4d216f2741999e9c84d36aeb..7731c2dcf7524bf48901c17ce96a42f87633a309 100644
--- a/src/MNH/zsmt_pgd.f90
+++ b/src/MNH/zsmt_pgd.f90
@@ -75,7 +75,8 @@ USE MODE_IO_FIELD_READ,  only: IO_Field_read
 USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 USE MODE_ll        , ONLY : GET_DIM_EXT_ll , ADD2DFIELD_ll , CLEANLIST_ll , UPDATE_HALO_ll
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll 
-USE MODI_SUM_ll
+USE MODE_SUM_ll
+use mode_tools_ll,        only: GET_INDICE_ll
 USE MODE_FIELD, ONLY: TFIELDDATA, TYPEREAL
 !
 IMPLICIT NONE
diff --git a/src/SURFEX/interpol_npts.F90 b/src/SURFEX/interpol_npts.F90
index 8f3d25e867dcf7d1228eabc9f75626622e820288..49953d7aec721500ede2b606426d15a99ff1ccfc 100644
--- a/src/SURFEX/interpol_npts.F90
+++ b/src/SURFEX/interpol_npts.F90
@@ -2,6 +2,7 @@
 !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.
+!-----------------------------------------------------------------
 !     #########
       SUBROUTINE INTERPOL_NPTS (UG, U, HPROGRAM,KLUOUT,KNPTS,KCODE,PX,PY,PFIELD,KNEAR_NBR)
 !     #########################################################
@@ -75,7 +76,7 @@ use modd_mpif
 use modd_precision,    only: MNHINT_MPI, MNHREAL_MPI
 USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
 USE MODE_GATHER_ll
-USE MODE_TOOLS_ll,     ONLY : GET_GLOBALDIMS_ll
+USE MODE_TOOLS_ll,     ONLY : GET_DIM_PHYS_ll, GET_GLOBALDIMS_ll
 USE MODD_PARAMETERS_ll,ONLY : JPHEXT
 !
 USE MODD_IO_SURF_MNH, ONLY : NIU, NJU