diff --git a/src/MNH/bikhardt.f90 b/src/MNH/bikhardt.f90
index a049ec3150b1b192aa8f41ad7d65bbb7a686c069..1efebdc110d4eb558ebb4e10203fddeaebae9c7f 100644
--- a/src/MNH/bikhardt.f90
+++ b/src/MNH/bikhardt.f90
@@ -1,126 +1,27 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-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 interpol 2006/05/18 13:07:25
+! Modifications:
+!  P. Wautelet 03/05/2019: modi_bikhardt -> mode_bikhardt
 !-----------------------------------------------------------------
 !###################
-MODULE MODI_BIKHARDT
+module mode_bikhardt
 !###################
-!
-INTERFACE BIKHARDT
-!
-      SUBROUTINE BIKHARDT4D (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-                             PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-                             KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,KGRID,   &
-                             HLBCX,HLBCY,PFIELD1,PFIELD2)
-!
-                                    ! interpolation coefficients 
-REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
-!
-INTEGER,   INTENT(IN)  :: KXOR,KXEND !  horizontal position (i,j) of the ORigin and END  
-INTEGER,   INTENT(IN)  :: KYOR,KYEND ! of the model domain, relative to the outer model
-INTEGER,   INTENT(IN)  :: KDXRATIO   !  x and y-direction Resolution ratio
-INTEGER,   INTENT(IN)  :: KDYRATIO   ! between inner model and outer model
-INTEGER,   INTENT(IN)  :: KGRID      ! code of grid point
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX   ! type of lateral
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
-REAL, DIMENSION(:,:,:,:),         INTENT(IN) :: PFIELD1 ! field of outer model
-REAL, DIMENSION(:,:,:,:),         INTENT(OUT):: PFIELD2 ! field of inner model
-!
-END SUBROUTINE BIKHARDT4D
-!
-      SUBROUTINE BIKHARDT3D (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-                             PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-                             KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,KGRID,   &
-                             HLBCX,HLBCY,PFIELD1,PFIELD2)
-!
-                                    ! interpolation coefficients  
-REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
-!
-INTEGER,   INTENT(IN)  :: KXOR,KXEND !  horizontal position (i,j) of the ORigin and END  
-INTEGER,   INTENT(IN)  :: KYOR,KYEND ! of the inner model domain, relative to outer model
-INTEGER,   INTENT(IN)  :: KDXRATIO   !  x and y-direction Resolution ratio
-INTEGER,   INTENT(IN)  :: KDYRATIO   ! between inner model and outer model
-INTEGER,   INTENT(IN)  :: KGRID      ! code of grid point
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX   ! type of lateral
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
-REAL, DIMENSION(:,:,:),           INTENT(IN) :: PFIELD1 ! field of outer model
-REAL, DIMENSION(:,:,:),           INTENT(OUT):: PFIELD2 ! field of inner model
-!
-END SUBROUTINE BIKHARDT3D
-!
-      SUBROUTINE BIKHARDT2D (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-                             PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-                             KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,KGRID,   &
-                             HLBCX,HLBCY,PFIELD1,PFIELD2)
-!
-                                    ! interpolation coefficients  
-REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
-!
-INTEGER,   INTENT(IN)  :: KXOR,KXEND !  horizontal position (i,j) of the ORigin and END  
-INTEGER,   INTENT(IN)  :: KYOR,KYEND ! of the inner model domain, relative to outer model
-INTEGER,   INTENT(IN)  :: KDXRATIO   !  x and y-direction Resolution ratio
-INTEGER,   INTENT(IN)  :: KDYRATIO   ! between inner model  and outer model
-INTEGER,   INTENT(IN)  :: KGRID      ! code of grid point
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX   ! type of lateral
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
-REAL, DIMENSION(:,:),             INTENT(IN) :: PFIELD1 ! field of outer model
-REAL, DIMENSION(:,:),             INTENT(OUT):: PFIELD2 ! field of inner model
-!
-END SUBROUTINE BIKHARDT2D
-!
-END INTERFACE
-!
-END MODULE MODI_BIKHARDT
-!
-!#####################
-MODULE MODI_BIKHARDT4D
-!#####################
-!
-INTERFACE
-!
-      SUBROUTINE BIKHARDT4D (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-                             PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-                             KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO,KGRID,   &
-                             HLBCX,HLBCY,PFIELD1,PFIELD2)
-!
-                                    ! interpolation coefficients  
-REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
-!
-INTEGER,   INTENT(IN)  :: KXOR,KXEND !  horizontal position (i,j) of the ORigin and END  
-INTEGER,   INTENT(IN)  :: KYOR,KYEND ! of the inner model domain, relative to outer model
-INTEGER,   INTENT(IN)  :: KDXRATIO   !  x and y-direction Resolution ratio
-INTEGER,   INTENT(IN)  :: KDYRATIO   ! between inner model  and outer model
-INTEGER,   INTENT(IN)  :: KGRID      ! code of grid point
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX   ! type of lateral
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
-REAL, DIMENSION(:,:,:,:),         INTENT(IN) :: PFIELD1 ! field of outer model
-REAL, DIMENSION(:,:,:,:),         INTENT(OUT):: PFIELD2 ! field of inner model
-!
-END SUBROUTINE BIKHARDT4D
-!
-END INTERFACE
-!
-END MODULE MODI_BIKHARDT4D
-!
-!
+
+implicit none
+
+private
+
+public :: Bikhardt
+
+interface Bikhardt
+  module procedure Bikhardt2d, Bikhardt3d, Bikhardt4d
+end interface
+
+contains
+
 !     #########################################################################
       SUBROUTINE BIKHARDT4D (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
                              PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
@@ -183,7 +84,7 @@ IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
 !
-                                    ! interpolation coefficients  
+                                    ! interpolation coefficients
 REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
 REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
 REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
@@ -489,13 +390,11 @@ END SUBROUTINE BIKHARDT4D
 !*       0.     DECLARATIONS
 !               ------------
 !
-USE MODI_BIKHARDT4D      
-!
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
 !
-                                    ! interpolation coefficients  
+                                    ! interpolation coefficients
 REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
 REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
 REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
@@ -578,13 +477,11 @@ END SUBROUTINE BIKHARDT3D
 !*       0.     DECLARATIONS
 !               ------------
 !
-USE MODI_BIKHARDT4D      
-!
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
 !
-                                    ! interpolation coefficients  
+                                    ! interpolation coefficients
 REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
 REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
 REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
@@ -614,3 +511,5 @@ PFIELD2(:,:)  =ZFIELD2(:,:,1,1)
 !-------------------------------------------------------------------------------
 !
 END SUBROUTINE BIKHARDT2D
+
+end module mode_bikhardt
diff --git a/src/MNH/eddyUV_flux_one_wayn.f90 b/src/MNH/eddyUV_flux_one_wayn.f90
index 3ec0effa1cd57de05ad6c49a7d0123c4d2510a3b..99a1fc6783a34ab406dd09980941479396b15c5a 100644
--- a/src/MNH/eddyUV_flux_one_wayn.f90
+++ b/src/MNH/eddyUV_flux_one_wayn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 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.
 !-----------------------------------------------------------------
 !     ###############################
@@ -64,11 +64,10 @@ USE MODD_REF_n,                 ONLY:XRHODJ
 USE MODD_METRICS_n
 USE MODI_GRADIENT_U
 !
-! For the horizontal interpolation
-USE MODI_BIKHARDT
 USE MODD_BIKHARDT_n
 USE MODD_NESTING
 !
+use mode_bikhardt
 USE MODE_FIELD, ONLY : TFIELDLIST, FIND_FIELD_ID_FROM_MNHNAME
 !
 IMPLICIT NONE
diff --git a/src/MNH/eddy_flux_one_wayn.f90 b/src/MNH/eddy_flux_one_wayn.f90
index 1aaadbc64f4d049638e6fd39d54f42ac7afb173b..31549eab9eb22dbfa862d9b69f72cbf091c58ee5 100644
--- a/src/MNH/eddy_flux_one_wayn.f90
+++ b/src/MNH/eddy_flux_one_wayn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2011-2018 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.
 !-----------------------------------------------------------------
 !     ###############################
@@ -65,11 +65,10 @@ USE MODD_METRICS_n
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_U
 !
-! For the horizontal interpolation
-USE MODI_BIKHARDT
 USE MODD_BIKHARDT_n
 USE MODD_NESTING
 !
+use mode_bikhardt
 USE MODE_FIELD, ONLY : TFIELDLIST, FIND_FIELD_ID_FROM_MNHNAME
 !
 IMPLICIT NONE
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 4678c605673b913b6be87dc70e12572429f90773..dad3e933933a55d6a761bae30c453cecf9a0e377 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -301,6 +301,7 @@ USE MODE_IO
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list
 USE MODE_IO_FILE,          ONLY: IO_File_open
 USE MODE_IO_FIELD_READ,    only: IO_Field_read
+USE MODE_INI_ONE_WAY_n
 USE MODE_GATHER_ll
 USE MODE_MSG
 USE MODE_TYPE_ZDIFFU
@@ -392,7 +393,6 @@ USE MODI_INI_RADIATIONS_ECRAD
 USE MODI_CH_INIT_FIELD_n
 USE MODI_INI_DEEP_CONVECTION
 USE MODI_INI_BIKHARDT_n
-USE MODI_INI_ONE_WAY_n
 USE MODI_GET_SIZEX_LB
 USE MODI_GET_SIZEY_LB
 USE MODI_INI_SPAWN_LS_n
@@ -2006,20 +2006,20 @@ IF ( KMI > 1) THEN
   DPTR_XLBYRM=>XLBYRM
   DPTR_XLBXSVM=>XLBXSVM
   DPTR_XLBYSVM=>XLBYSVM
-  CALL INI_ONE_WAY_n(NDAD(KMI),XTSTEP,KMI,1,                         &
-       DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4,        &
-       DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4,        &
-       NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),NDTRATIO(KMI),      &
-       DPTR_CLBCX,DPTR_CLBCY,NRIMX,NRIMY,                                &
-       DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,      &
-       DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,      &
-       DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,      &
-       DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM,      &
-       CCLOUD, LUSECHAQ, LUSECHIC,                                                 &
-       DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM,DPTR_XLBXWM,DPTR_XLBYWM,    &
-       DPTR_XLBXTHM,DPTR_XLBYTHM,                                                  &
-       DPTR_XLBXTKEM,DPTR_XLBYTKEM,                                                &
-       DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM                           )
+  CALL INI_ONE_WAY_n(NDAD(KMI),KMI,                                                             &
+       DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4, &
+       DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4, &
+       NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),                                                     &
+       DPTR_CLBCX,DPTR_CLBCY,NRIMX,NRIMY,                                                       &
+       DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,                   &
+       DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,                   &
+       DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,                   &
+       DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM,                   &
+       CCLOUD, LUSECHAQ, LUSECHIC,                                                              &
+       DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM,DPTR_XLBXWM,DPTR_XLBYWM,                 &
+       DPTR_XLBXTHM,DPTR_XLBYTHM,                                                               &
+       DPTR_XLBXTKEM,DPTR_XLBYTKEM,                                                             &
+       DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM                                        )
 END IF
 !
 !
diff --git a/src/MNH/ini_one_wayn.f90 b/src/MNH/ini_one_wayn.f90
index 1b6100cd773e6cd67bc95046afe517991cede48b..50cbf7ae92633f14d3579f961cc825188da6d148 100644
--- a/src/MNH/ini_one_wayn.f90
+++ b/src/MNH/ini_one_wayn.f90
@@ -3,78 +3,25 @@
 !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_INI_ONE_WAY_n
-!     #######################
-!
-INTERFACE 
-!
-      SUBROUTINE INI_ONE_WAY_n( KDAD,PTSTEP,KMI,KTCOUNT,                 &
-                    PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4,     &
-                    PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4,     &
-                    KDXRATIO,KDYRATIO,KDTRATIO,                          &
-                    HLBCX,HLBCY,KRIMX,KRIMY,                             &
-                    KKLIN_LBXU,PCOEFLIN_LBXU,KKLIN_LBYU,PCOEFLIN_LBYU,   &
-                    KKLIN_LBXV,PCOEFLIN_LBXV,KKLIN_LBYV,PCOEFLIN_LBYV,   &
-                    KKLIN_LBXW,PCOEFLIN_LBXW,KKLIN_LBYW,PCOEFLIN_LBYW,   &
-                    KKLIN_LBXM,PCOEFLIN_LBXM,KKLIN_LBYM,PCOEFLIN_LBYM,   &
-                    HCLOUD, OUSECHAQ, OUSECHIC,                          &
-                    PLBXUM,PLBYUM,PLBXVM,PLBYVM,PLBXWM,PLBYWM,           &
-                    PLBXTHM,PLBYTHM,                                     &
-                    PLBXTKEM,PLBYTKEM,                                   &
-                    PLBXRM,PLBYRM,PLBXSVM,PLBYSVM                        )
-!
-!
-INTEGER,          INTENT(IN)    :: KDAD     !  Number of the DAD model
-REAL,             INTENT(IN)    :: PTSTEP   !  Time step
-INTEGER,          INTENT(IN)    :: KMI      ! model number
-INTEGER,          INTENT(IN)    :: KTCOUNT  !  Temporal loop COUNTer
-                                            ! (=1 at the segment beginning)
-!
-                                    ! interpolation coefficients 
-REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
-!
-INTEGER,   INTENT(IN)  :: KDXRATIO   !  x and y-direction resolution RATIO
-INTEGER,   INTENT(IN)  :: KDYRATIO   ! between inner model and outer model
-INTEGER,   INTENT(IN)  :: KDTRATIO   !  Time step resolution RATIO
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX   ! type of lateral
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
-INTEGER,          INTENT(IN)    :: KRIMX,KRIMY ! size of the RIM area
-!  coefficients for the vertical interpolation of the LB fields
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXU,KKLIN_LBYU 
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXU,PCOEFLIN_LBYU
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXV,KKLIN_LBYV 
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXV,PCOEFLIN_LBYV
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXW,KKLIN_LBYW 
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXW,PCOEFLIN_LBYW
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXM,KKLIN_LBYM 
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXM,PCOEFLIN_LBYM
-CHARACTER (LEN=4), INTENT(IN)           :: HCLOUD        ! Indicator of the cloud scheme
-LOGICAL,           INTENT(IN)           :: OUSECHAQ      ! logical for aqueous phase chemistry
-LOGICAL,           INTENT(IN)           :: OUSECHIC      ! logical for ice phase chemistry
-!  
-REAL, DIMENSION(:,:,:), INTENT(OUT)    :: PLBXUM,PLBXVM,PLBXWM ! Large Scale fields at t-dt
-REAL, DIMENSION(:,:,:), INTENT(OUT)    :: PLBYUM,PLBYVM,PLBYWM 
-REAL, DIMENSION(:,:,:),  INTENT(OUT)  :: PLBXTHM ,PLBYTHM  ! Large Scale fields at t-dt
-REAL, DIMENSION(:,:,:),  INTENT(OUT)  :: PLBXTKEM,PLBYTKEM ! Theta, TKE
-REAL, DIMENSION(:,:,:,:),INTENT(OUT)  :: PLBXRM  ,PLBYRM   ! Moisture and SV
-REAL, DIMENSION(:,:,:,:),INTENT(OUT)  :: PLBXSVM ,PLBYSVM  ! in x and y-dir.
-!
-END SUBROUTINE INI_ONE_WAY_n
-!
-END INTERFACE
-!
-END MODULE MODI_INI_ONE_WAY_n
-!
+!########################
+MODULE MODE_INI_ONE_WAY_n
+!########################
+
+use mode_msg
+
+implicit none
+
+private
+
+public :: INI_ONE_WAY_n, Compute_ini_LB
+
+contains
 
 !     ####################################################################
-SUBROUTINE INI_ONE_WAY_n(KDAD,PTSTEP,KMI,KTCOUNT,                        &
+SUBROUTINE INI_ONE_WAY_n(KDAD,KMI,                                       &
                     PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4,     &
                     PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4,     &
-                    KDXRATIO,KDYRATIO,KDTRATIO,                          &
+                    KDXRATIO,KDYRATIO,                                   &
                     HLBCX,HLBCY,KRIMX,KRIMY,                             &
                     KKLIN_LBXU,PCOEFLIN_LBXU,KKLIN_LBYU,PCOEFLIN_LBYU,   &
                     KKLIN_LBXV,PCOEFLIN_LBXV,KKLIN_LBYV,PCOEFLIN_LBYV,   &
@@ -141,100 +88,96 @@ SUBROUTINE INI_ONE_WAY_n(KDAD,PTSTEP,KMI,KTCOUNT,                        &
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!!
+!  P. Wautelet 03/05/2019: restructuration of one_wayn and ini_one_wayn
+!
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
 !            ------------
-USE MODE_ll
-use mode_msg
-USE MODE_MODELN_HANDLER
-!
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-USE MODD_PARAMETERS
-USE MODD_CONF
-USE MODD_CST
-USE MODD_FIELD_n      ! modules relative to the outer model $n
-USE MODD_PARAM_n
-USE MODD_CH_MNHC_n, ONLY: LUSECHAQ, LUSECHIC
-USE MODD_REF_n
-USE MODD_NSV
-!
-USE MODI_BIKHARDT
-USE MODI_VER_INTERP_LIN
-USE MODI_SET_CONC_RAIN_C2R2
-USE MODI_SET_CONC_ICE_C1R3
-USE MODI_SET_CHEMAQ_1WAY
 !
+USE MODD_CH_MNHC_n,      only: LUSECHAQ, LUSECHIC
+USE MODD_CST,            only: XTH00
+USE MODD_FIELD_n,        only: XRT, XSVT, XUT, XVT, XWT, XTHT, XTKET
+USE MODD_NSV,            only: NSV_A, NSV_C1R3BEG_A, NSV_C1R3_A, NSV_C2R2BEG_A, NSV_C2R2_A, NSV_CHEMBEG_A, NSV_CHEMEND_A,     &
+                               NSV_CHEM_A, NSV_CHICBEG_A, NSV_CHIC_A, NSV_DSTBEG_A, NSV_DSTDEPBEG_A, NSV_DSTDEP_A, NSV_DST_A, &
+                               NSV_ELECBEG_A, NSV_ELEC_A, NSV_LGBEG_A, NSV_LG_A, NSV_LIMA_A, NSV_LIMA_BEG_A,                  &
+                               NSV_LNOXBEG_A, NSV_LNOX_A, NSV_PPBEG_A, NSV_PP_A,                                              &
+                               NSV_SLTBEG_A, NSV_SLTDEPBEG_A, NSV_SLTDEP_A, NSV_SLT_A, NSV_USER_A
+
+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_MODELN_HANDLER, only: GOTO_MODEL
+!
+USE MODI_SET_CHEMAQ_1WAY
+USE MODI_SET_CONC_ICE_C1R3
 USE MODI_SET_CONC_LIMA
+USE MODI_SET_CONC_RAIN_C2R2
+!
 !
 IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
 !
 !
-INTEGER,          INTENT(IN)    :: KDAD     !  Number of the DAD model
-REAL,             INTENT(IN)    :: PTSTEP   !  Time step
-INTEGER,          INTENT(IN)    :: KMI      ! model number
-INTEGER,          INTENT(IN)    :: KTCOUNT  !  Temporal loop COUNTer
-                                            ! (=1 at the segment beginning)
-!
-                                    ! interpolation coefficients
-REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
-!
-INTEGER,   INTENT(IN)  :: KDXRATIO   !  x and y-direction resolution RATIO
-INTEGER,   INTENT(IN)  :: KDYRATIO   ! between inner model and outer model
-INTEGER,   INTENT(IN)  :: KDTRATIO   !  Time step resolution RATIO
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX   ! type of lateral
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
-INTEGER,          INTENT(IN)    :: KRIMX,KRIMY ! size of the RIM area
+INTEGER,                          INTENT(IN)  :: KDAD     !  Number of the DAD model
+INTEGER,                          INTENT(IN)  :: KMI      ! model number
+! interpolation coefficients
+REAL,    DIMENSION(:),            INTENT(IN)  :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
+REAL,    DIMENSION(:),            INTENT(IN)  :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
+REAL,    DIMENSION(:),            INTENT(IN)  :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
+REAL,    DIMENSION(:),            INTENT(IN)  :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
+!
+INTEGER,                          INTENT(IN)  :: KDXRATIO   !  x and y-direction resolution RATIO
+INTEGER,                          INTENT(IN)  :: KDYRATIO   ! between inner model and outer model
+CHARACTER (LEN=4), DIMENSION (2), INTENT(IN)  :: HLBCX      ! type of lateral
+CHARACTER (LEN=4), DIMENSION (2), INTENT(IN)  :: HLBCY      ! boundary conditions
+INTEGER,          INTENT(IN)    :: KRIMX,KRIMY              ! size of the RIM area
 !  coefficients for the vertical interpolation of the LB fields
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXU,KKLIN_LBYU
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXU,PCOEFLIN_LBYU
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXV,KKLIN_LBYV
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXV,PCOEFLIN_LBYV
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXW,KKLIN_LBYW
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXW,PCOEFLIN_LBYW
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXM,KKLIN_LBYM
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXM,PCOEFLIN_LBYM
-CHARACTER (LEN=4), INTENT(IN)  :: HCLOUD        ! Indicator of the cloud scheme
-LOGICAL,           INTENT(IN)  :: OUSECHAQ      ! logical for aqueous phase
-LOGICAL,           INTENT(IN)  :: OUSECHIC      ! logical for ice phase chemistry
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT)    :: PLBXUM,PLBXVM,PLBXWM ! Large Scale fields at t-dt
-REAL, DIMENSION(:,:,:), INTENT(OUT)    :: PLBYUM,PLBYVM,PLBYWM
-REAL, DIMENSION(:,:,:),  INTENT(OUT)  :: PLBXTHM ,PLBYTHM  ! Large Scale fields at t-dt
-REAL, DIMENSION(:,:,:),  INTENT(OUT)  :: PLBXTKEM,PLBYTKEM ! Theta, TKE
-REAL, DIMENSION(:,:,:,:),INTENT(OUT)  :: PLBXRM  ,PLBYRM   ! Moisture and SV
-REAL, DIMENSION(:,:,:,:),INTENT(OUT)  :: PLBXSVM ,PLBYSVM  ! in x and y-dir.
+INTEGER, DIMENSION(:,:,:),        INTENT(IN)  :: KKLIN_LBXU,KKLIN_LBYU
+REAL,    DIMENSION(:,:,:),        INTENT(IN)  :: PCOEFLIN_LBXU,PCOEFLIN_LBYU
+INTEGER, DIMENSION(:,:,:),        INTENT(IN)  :: KKLIN_LBXV,KKLIN_LBYV
+REAL,    DIMENSION(:,:,:),        INTENT(IN)  :: PCOEFLIN_LBXV,PCOEFLIN_LBYV
+INTEGER, DIMENSION(:,:,:),        INTENT(IN)  :: KKLIN_LBXW,KKLIN_LBYW
+REAL,    DIMENSION(:,:,:),        INTENT(IN)  :: PCOEFLIN_LBXW,PCOEFLIN_LBYW
+INTEGER, DIMENSION(:,:,:),        INTENT(IN)  :: KKLIN_LBXM,KKLIN_LBYM
+REAL,    DIMENSION(:,:,:),        INTENT(IN)  :: PCOEFLIN_LBXM,PCOEFLIN_LBYM
+CHARACTER (LEN=4),                INTENT(IN)  :: HCLOUD        ! Indicator of the cloud scheme
+LOGICAL,                          INTENT(IN)  :: OUSECHAQ      ! logical for aqueous phase
+LOGICAL,                          INTENT(IN)  :: OUSECHIC      ! logical for ice phase chemistry
+!
+REAL,    DIMENSION(:,:,:),        INTENT(OUT) :: PLBXUM,PLBXVM,PLBXWM ! Large Scale fields at t-dt
+REAL,    DIMENSION(:,:,:),        INTENT(OUT) :: PLBYUM,PLBYVM,PLBYWM
+REAL,    DIMENSION(:,:,:),        INTENT(OUT) :: PLBXTHM ,PLBYTHM  ! Large Scale fields at t-dt
+REAL,    DIMENSION(:,:,:),        INTENT(OUT) :: PLBXTKEM,PLBYTKEM ! Theta, TKE
+REAL,    DIMENSION(:,:,:,:),      INTENT(OUT) :: PLBXRM  ,PLBYRM   ! Moisture and SV
+REAL,    DIMENSION(:,:,:,:),      INTENT(OUT) :: PLBXSVM ,PLBYSVM  ! in x and y-dir.
 !
 !
 !*       0.2   declarations of local variables
 !
-INTEGER                :: IIB,IIE,IJB,IJE,IIU,IJU
-INTEGER                :: ILBX,ILBY,ILBX2,ILBY2
-REAL,   DIMENSION(:,:,:), ALLOCATABLE  :: ZWORK
-LOGICAL  :: GVERT_INTERP
+INTEGER                                  :: IIB,IIE,IJB,IJE,IIU,IJU
+REAL,   DIMENSION(:,:,:),    ALLOCATABLE :: ZWORK
 !
-INTEGER           :: IRR,ISV_USER          !  Number of moist and user scalar variables
-INTEGER           :: JRR,JSV          !  Loop index
+INTEGER                                  :: IRR,ISV_USER !  Number of moist and user scalar variables
+INTEGER                                  :: JRR,JSV      !  Loop index
+INTEGER                                  :: IGRID
 !
 ! reduced array for the interpolation coefficients
-REAL, DIMENSION(:,:,:), ALLOCATABLE ::  ZCOEFLIN_LBXM_RED,ZCOEFLIN_LBYM_RED
-INTEGER, DIMENSION(:,:,:), ALLOCATABLE :: IKLIN_LBXM_RED,IKLIN_LBYM_RED
+REAL,    DIMENSION(:,:,:),   ALLOCATABLE :: ZCOEFLIN_LBXM_RED,ZCOEFLIN_LBYM_RED
+INTEGER, DIMENSION(:,:,:),   ALLOCATABLE :: IKLIN_LBXM_RED,IKLIN_LBYM_RED
 !
 ! Variables used for LS communications
-INTEGER :: IINFO_ll, IDIMX, IDIMY
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTUM, ZTVM, ZTWM, ZTTHM, ZTTKEM
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE ::ZTRM,ZTSVM
-!
-CHARACTER(LEN=4)                    :: ZINIT_TYPE ! type of C2R2 initialisation
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZCONCM  ! C2R2 concentrations
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZCHEMM  ! chemical concentrations
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZCHEMMI  ! chemical ice phase concentrations
+INTEGER                                  :: IINFO_ll, IDIMX, IDIMY
+REAL,    DIMENSION(:,:,:),   ALLOCATABLE :: ZTUM, ZTVM, ZTWM, ZTTHM, ZTTKEM
+REAL,    DIMENSION(:,:,:,:), ALLOCATABLE :: ZTRM,ZTSVM
+!
+CHARACTER(LEN=4)                         :: ZINIT_TYPE ! type of C2R2 initialisation
+REAL,    DIMENSION(:,:,:,:), ALLOCATABLE :: ZCONCM  ! C2R2 concentrations
+REAL,    DIMENSION(:,:,:,:), ALLOCATABLE :: ZCHEMM  ! chemical concentrations
+REAL,    DIMENSION(:,:,:,:), ALLOCATABLE :: ZCHEMMI  ! chemical ice phase concentrations
 !-------------------------------------------------------------------------------
 !
 !*      0.   INITIALISATION
@@ -271,8 +214,6 @@ ELSE
 ENDIF
 !
 !
-GVERT_INTERP=.TRUE.
-!
 IRR=MIN(SIZE(XRT,4),SIZE(PLBXRM,4))
 ISV_USER=MIN(NSV_USER_A(KDAD),NSV_USER_A(KMI))
 !
@@ -551,190 +492,69 @@ IF (ALLOCATED(ZCHEMMI)) DEALLOCATE(ZCHEMMI)
 !*      1.   U FIELD TREATMENT
 !            -----------------
 !
-!*      1.1  Horizontal Bikhardt interpolation
-!
-PLBXUM=0.
-PLBYUM=0.
-!
-CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-               PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-               2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,2,       &
-                                           HLBCX,HLBCY,ZTUM,ZWORK)
+IGRID = 2
+CALL Compute_ini_LB( PLBXUM, PLBYUM, ZTUM, ZWORK,                                  &
+                     PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,       &
+                     PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,       &
+                     IIB, IIE, IJB, IJE, IGRID,                                    &
+                     IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY, &
+                     KKLIN_LBXU, KKLIN_LBYU,                                       &
+                     PCOEFLIN_LBXU, PCOEFLIN_LBYU )
 DEALLOCATE(ZTUM)
 !
-ILBX2=SIZE(PLBXUM,1)
-IF(LWEST_ll( ).AND.LEAST_ll( )) THEN
-  ILBX=ILBX2/2
-ELSE
-  ILBX=ILBX2
-ENDIF
-!
-IF(LWEST_ll( ) .AND. ILBX/=0) THEN
-  PLBXUM(1:ILBX,IJB:IJE,:)=ZWORK(IIB+1:IIB+ILBX,IJB:IJE,:)  !  C grid
-ENDIF
-!
-IF(LEAST_ll( ) .AND. ILBX/=0) THEN
-  PLBXUM(ILBX2-ILBX+1:ILBX2,IJB:IJE,:)=ZWORK(IIE+1-ILBX:IIE,IJB:IJE,:)
-ENDIF
-!
-ILBY2=SIZE(PLBYUM,2)
-IF(LSOUTH_ll( ).AND.LNORTH_ll( )) THEN
-  ILBY=ILBY2/2
-ELSE
-  ILBY=ILBY2
-ENDIF
-!
-IF(LSOUTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYUM(IIB:IIE,1:ILBY,:)=ZWORK(IIB:IIE,IJB:IJB-1+ILBY,:)
-ENDIF
-!
-IF(LNORTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYUM(IIB:IIE,ILBY2-ILBY+1:ILBY2,:)=ZWORK(IIB:IIE,IJE+1-ILBY:IJE,:)
-ENDIF
-!
-!*      1.2  Vertical interpolation
-!
-IF ( SIZE(PLBXUM,1) /= 0 .AND. GVERT_INTERP) THEN
-  PLBXUM(:,:,:) = VER_INTERP_LIN(PLBXUM(:,:,:),   &
-                                   KKLIN_LBXU(:,:,:),PCOEFLIN_LBXU(:,:,:))
-END IF
-!
-IF ( SIZE(PLBYUM,1) /= 0 .AND. GVERT_INTERP) THEN
-  PLBYUM(:,:,:) = VER_INTERP_LIN(PLBYUM(:,:,:),   &
-                                   KKLIN_LBYU(:,:,:),PCOEFLIN_LBYU(:,:,:))
-END IF
-!
 !-------------------------------------------------------------------------------
 !
 !*      2.   V FIELD TREATMENT
 !            -----------------
 !
-!*      2.1  Horizontal Bikhardt interpolation
-!
-PLBXVM=0.
-PLBYVM=0.
-!
-CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-               PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-               2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,3,       &
-                                           HLBCX,HLBCY,ZTVM,ZWORK)
+IGRID = 3
+CALL Compute_ini_LB( PLBXVM, PLBYVM, ZTVM, ZWORK,                                  &
+                     PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,       &
+                     PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,       &
+                     IIB, IIE, IJB, IJE, IGRID,                                    &
+                     IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY, &
+                     KKLIN_LBXV, KKLIN_LBYV,                                       &
+                     PCOEFLIN_LBXV, PCOEFLIN_LBYV )
 DEALLOCATE(ZTVM)
 !
-ILBX2=SIZE(PLBXVM,1)
-IF(LWEST_ll( ).AND.LEAST_ll( )) THEN
-  ILBX=ILBX2/2
-ELSE
-  ILBX=ILBX2
-ENDIF
-!
-IF(LWEST_ll( ) .AND. ILBX/=0) THEN
-  PLBXVM(1:ILBX,IJB:IJE,:)=ZWORK(IIB:IIB-1+ILBX,IJB:IJE,:)
-ENDIF
-!
-IF(LEAST_ll( ) .AND. ILBX/=0) THEN
-  PLBXVM(ILBX2-ILBX+1:ILBX2,IJB:IJE,:)=ZWORK(IIE+1-ILBX:IIE,IJB:IJE,:)
-ENDIF
-!
-ILBY2=SIZE(PLBYVM,2)
-IF(LSOUTH_ll( ).AND.LNORTH_ll( )) THEN
-  ILBY=ILBY2/2
-ELSE
-  ILBY=ILBY2
-ENDIF
-!
-IF(LSOUTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYVM(IIB:IIE,1:ILBY,:)=ZWORK(IIB:IIE,IJB+1:IJB+ILBY,:)  !  C grid
-ENDIF
-!
-IF(LNORTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYVM(IIB:IIE,ILBY2-ILBY+1:ILBY2,:)=ZWORK(IIB:IIE,IJE+1-ILBY:IJE,:)
-ENDIF
-!
-!*      1.2  Vertical interpolation
-!
-IF ( SIZE(PLBXVM,1) /= 0 .AND. GVERT_INTERP) THEN
-  PLBXVM(:,:,:) = VER_INTERP_LIN(PLBXVM(:,:,:),   &
-                                   KKLIN_LBXV(:,:,:),PCOEFLIN_LBXV(:,:,:))
-END IF
-!
-IF ( SIZE(PLBYVM,1) /= 0 .AND. GVERT_INTERP) THEN
-  PLBYVM(:,:,:) = VER_INTERP_LIN(PLBYVM(:,:,:),   &
-                                   KKLIN_LBYV(:,:,:),PCOEFLIN_LBYV(:,:,:))
-END IF
-
 !-------------------------------------------------------------------------------
 !
 !*      3.   W FIELD TREATMENT
 !            -----------------
 !
-!*      3.1  Horizontal Bikhardt interpolation
-!
-PLBXWM=0.
-PLBYWM=0.
-!
-CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-               PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-               2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,4,       &
-                                           HLBCX,HLBCY,ZTWM,ZWORK)
+IGRID = 4
+CALL Compute_ini_LB( PLBXWM, PLBYWM, ZTWM, ZWORK,                                  &
+                     PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,       &
+                     PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,       &
+                     IIB, IIE, IJB, IJE, IGRID,                                    &
+                     IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY, &
+                     KKLIN_LBXW, KKLIN_LBYW,                                       &
+                     PCOEFLIN_LBXW, PCOEFLIN_LBYW )
 DEALLOCATE(ZTWM)
 !
-ILBX2=SIZE(PLBXWM,1)
-IF(LWEST_ll( ).AND.LEAST_ll( )) THEN
-  ILBX=ILBX2/2
-ELSE
-  ILBX=ILBX2
-ENDIF
-!
-IF(LWEST_ll( ) .AND. ILBX/=0) THEN
-  PLBXWM(1:ILBX,IJB:IJE,:)=ZWORK(IIB:IIB-1+ILBX,IJB:IJE,:)
-ENDIF
-!
-IF(LEAST_ll( ) .AND. ILBX/=0) THEN
-  PLBXWM(ILBX2-ILBX+1:ILBX2,IJB:IJE,:)=ZWORK(IIE+1-ILBX:IIE,IJB:IJE,:)
-ENDIF
-!
-ILBY2=SIZE(PLBYWM,2)
-IF(LSOUTH_ll( ).AND.LNORTH_ll( )) THEN
-  ILBY=ILBY2/2
-ELSE
-  ILBY=ILBY2
-ENDIF
-!
-IF(LSOUTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYWM(IIB:IIE,1:ILBY,:)=ZWORK(IIB:IIE,IJB:IJB-1+ILBY,:)
-ENDIF
-!
-IF(LNORTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYWM(IIB:IIE,ILBY2-ILBY+1:ILBY2,:)=ZWORK(IIB:IIE,IJE+1-ILBY:IJE,:)
-ENDIF
-!
-!*      1.2  Vertical interpolation
-!
-IF ( SIZE(PLBXWM,1) /= 0 .AND. GVERT_INTERP) THEN
-  PLBXWM(:,:,:) = VER_INTERP_LIN(PLBXWM(:,:,:),   &
-                                   KKLIN_LBXW(:,:,:),PCOEFLIN_LBXW(:,:,:))
-END IF
-!
-IF ( SIZE(PLBYWM,1) /= 0 .AND. GVERT_INTERP) THEN
-  PLBYWM(:,:,:) = VER_INTERP_LIN(PLBYWM(:,:,:),   &
-                                   KKLIN_LBYW(:,:,:),PCOEFLIN_LBYW(:,:,:))
-END IF
-!
-!
-!
 !-------------------------------------------------------------------------------
 !
-!*      5.   COMPUTE LARGE SCALE SOURCES FOR POTENTIAL TEMPERATURE
+!*      4.   COMPUTE LARGE SCALE SOURCES FOR POTENTIAL TEMPERATURE
 !            -----------------------------------------------------
 !
-CALL COMPUTE_LB_M(PLBXTHM,PLBYTHM,ZTTHM,XTH00)
+IGRID = 1
+CALL Compute_ini_LB( PLBXTHM, PLBYTHM, ZTTHM, ZWORK,                                            &
+                     PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,                    &
+                     PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,                    &
+                     IIB, IIE, IJB, IJE, IGRID,                                                 &
+                     IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY,              &
+                     KKLIN_LBXM, KKLIN_LBYM,                                                    &
+                     PCOEFLIN_LBXM, PCOEFLIN_LBYM,                                              &
+                     PTH00 = XTH00,                                                             &
+                     KKLIN_LBX_RED    = IKLIN_LBXM_RED,    KKLIN_LBY_RED    = IKLIN_LBYM_RED,   &
+                     PCOEFLIN_LBX_RED = ZCOEFLIN_LBXM_RED, PCOEFLIN_LBY_RED = ZCOEFLIN_LBYM_RED )
 !
 DEALLOCATE(ZTTHM)
 !
 !
 !-------------------------------------------------------------------------------
 !
-!*      6.   COMPUTE LARGE SCALE SOURCES FOR TURBULENT KINETIC ENERGY
+!*      5.   COMPUTE LARGE SCALE SOURCES FOR TURBULENT KINETIC ENERGY
 !            --------------------------------------------------------
 !
 !
@@ -742,13 +562,22 @@ IF (SIZE(XTKET,3) == 0 .OR. SIZE(PLBXTKEM,3) == 0) THEN
   PLBXTKEM(:,:,:) = 0.                      ! turbulence not activated
   PLBYTKEM(:,:,:) = 0.
 ELSE
-  CALL COMPUTE_LB_M(PLBXTKEM,PLBYTKEM,ZTTKEM)
+  IGRID = 1
+  CALL Compute_ini_LB( PLBXTKEM, PLBYTKEM, ZTTKEM, ZWORK,                                         &
+                       PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,                    &
+                       PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,                    &
+                       IIB, IIE, IJB, IJE, IGRID,                                                 &
+                       IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY,              &
+                       KKLIN_LBXM, KKLIN_LBYM,                                                    &
+                       PCOEFLIN_LBXM, PCOEFLIN_LBYM,                                              &
+                       KKLIN_LBX_RED    = IKLIN_LBXM_RED,    KKLIN_LBY_RED    = IKLIN_LBYM_RED,   &
+                       PCOEFLIN_LBX_RED = ZCOEFLIN_LBXM_RED, PCOEFLIN_LBY_RED = ZCOEFLIN_LBYM_RED )
   DEALLOCATE(ZTTKEM)
 ENDIF
 !
 !-------------------------------------------------------------------------------
 !
-!*      7.   COMPUTE LARGE SCALE SOURCES FOR MOIST VARIABLES
+!*      6.   COMPUTE LARGE SCALE SOURCES FOR MOIST VARIABLES
 !            -----------------------------------------------
 !
 !
@@ -756,8 +585,17 @@ IF (IRR == 0 ) THEN
   PLBXRM(:,:,:,:) = 0.                      ! water cycle not activated
   PLBYRM(:,:,:,:) = 0.
 ELSE
+  IGRID = 1
   DO JRR = 1,IRR
-    CALL COMPUTE_LB_M(PLBXRM(:,:,:,JRR),PLBYRM(:,:,:,JRR),ZTRM(:,:,:,JRR))
+    CALL Compute_ini_LB( PLBXRM(:,:,:,JRR), PLBYRM(:,:,:,JRR), ZTRM(:,:,:,JRR), ZWORK,              &
+                         PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,                    &
+                         PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,                    &
+                         IIB, IIE, IJB, IJE, IGRID,                                                 &
+                         IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY,              &
+                         KKLIN_LBXM, KKLIN_LBYM,                                                    &
+                         PCOEFLIN_LBXM, PCOEFLIN_LBYM,                                              &
+                         KKLIN_LBX_RED    = IKLIN_LBXM_RED,    KKLIN_LBY_RED    = IKLIN_LBYM_RED,   &
+                         PCOEFLIN_LBX_RED = ZCOEFLIN_LBXM_RED, PCOEFLIN_LBY_RED = ZCOEFLIN_LBYM_RED )
   END DO
   DEALLOCATE(ZTRM)
 !
@@ -768,13 +606,22 @@ END IF
 !
 !-------------------------------------------------------------------------------
 !
-!*      8.   COMPUTE LARGE SCALE SOURCES FOR SCALAR VARIABLES
+!*      7.   COMPUTE LARGE SCALE SOURCES FOR SCALAR VARIABLES
 !            ------------------------------------------------
 !
 !
 IF (NSV_A(KMI) > 0) THEN
+  IGRID = 1
   DO JSV = 1,NSV_A(KMI)
-    CALL COMPUTE_LB_M(PLBXSVM(:,:,:,JSV),PLBYSVM(:,:,:,JSV),ZTSVM(:,:,:,JSV))
+    CALL Compute_ini_LB( PLBXSVM(:,:,:,JSV),PLBYSVM(:,:,:,JSV),ZTSVM(:,:,:,JSV), ZWORK,             &
+                         PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,                    &
+                         PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,                    &
+                         IIB, IIE, IJB, IJE, IGRID,                                                 &
+                         IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY,              &
+                         KKLIN_LBXM, KKLIN_LBYM,                                                    &
+                         PCOEFLIN_LBXM, PCOEFLIN_LBYM,                                              &
+                         KKLIN_LBX_RED    = IKLIN_LBXM_RED,    KKLIN_LBY_RED    = IKLIN_LBYM_RED,   &
+                         PCOEFLIN_LBX_RED = ZCOEFLIN_LBXM_RED, PCOEFLIN_LBY_RED = ZCOEFLIN_LBYM_RED )
   END DO
   DEALLOCATE(ZTSVM)
 ELSE
@@ -788,20 +635,67 @@ DEALLOCATE(ZCOEFLIN_LBXM_RED,ZCOEFLIN_LBYM_RED,IKLIN_LBXM_RED,IKLIN_LBYM_RED)
 CALL GOTO_MODEL(KMI)
 !------------------------------------------------------------------------------
 !
-CONTAINS
+END SUBROUTINE INI_ONE_WAY_n
+
+
+
+!#################################################################################
+SUBROUTINE Compute_ini_LB(PLBX,PLBY,PTFIELD,PWORK,                               &
+                          PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4,       &
+                          PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4,       &
+                          KIB,KIE,KJB,KJE, KGRID,                                &
+                          KDIMX,KDIMY,KDXRATIO,KDYRATIO,HLBCX,HLBCY,KRIMX,KRIMY, &
+                          KKLIN_LBX,KKLIN_LBY,                                   &
+                          PCOEFLIN_LBX,PCOEFLIN_LBY,                             &
+                          PTH00,                                                 &
+                          KKLIN_LBX_RED,KKLIN_LBY_RED,                           &
+                          PCOEFLIN_LBX_RED,PCOEFLIN_LBY_RED )
+!#################################################################################
+!
+use modd_parameters, only: jphext
+
+use mode_bikhardt
+use mode_ll,         only: LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll
+
+use modi_ver_interp_lin
+
+IMPLICIT NONE
 !
+!*       0.1   declarations of arguments
 !
-!     ################################################
-      SUBROUTINE COMPUTE_LB_M(PLBX,PLBY,PTFIELD,PTH00)
-!     ################################################
+REAL,    DIMENSION(:,:,:),           INTENT(OUT) :: PLBX,PLBY ! source term
+REAL,    DIMENSION(:,:,:),           INTENT(IN)  :: PTFIELD   ! ls forcing array
+REAL,    DIMENSION(:,:,:),           INTENT(OUT) :: PWORK
+! interpolation coefficients
+REAL,    DIMENSION(:),               INTENT(IN)  :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
+REAL,    DIMENSION(:),               INTENT(IN)  :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
+REAL,    DIMENSION(:),               INTENT(IN)  :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
+REAL,    DIMENSION(:),               INTENT(IN)  :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
+INTEGER,                             INTENT(IN)  :: KIB,KIE,KJB,KJE
+INTEGER,                             INTENT(IN)  :: KGRID      ! code of grid point
+INTEGER,                             INTENT(IN)  :: KDIMX, KDIMY
+INTEGER,                             INTENT(IN)  :: KDXRATIO   !  x and y-direction resolution RATIO
+INTEGER,                             INTENT(IN)  :: KDYRATIO   ! between inner model and outer model
+CHARACTER (LEN=4), DIMENSION (2),    INTENT(IN)  :: HLBCX   ! type of lateral
+CHARACTER (LEN=4), DIMENSION (2),    INTENT(IN)  :: HLBCY   ! boundary conditions
+INTEGER,                             INTENT(IN)  :: KRIMX,KRIMY ! size of the RIM area
+INTEGER, DIMENSION(:,:,:),           INTENT(IN)  :: KKLIN_LBX,KKLIN_LBY
+REAL,    DIMENSION(:,:,:),           INTENT(IN)  :: PCOEFLIN_LBX,PCOEFLIN_LBY
+REAL,                      OPTIONAL, INTENT(IN)  :: PTH00 ! reference temperature
+INTEGER, DIMENSION(:,:,:), optional, INTENT(IN)  :: KKLIN_LBX_RED,KKLIN_LBY_RED
+REAL,    DIMENSION(:,:,:), optional, INTENT(in)  :: PCOEFLIN_LBX_RED,PCOEFLIN_LBY_RED
+!
+!*       0.2   declarations of local variables
 !
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PLBX,PLBY ! source term
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PTFIELD   ! ls forcing array
-REAL, OPTIONAL, INTENT(IN)          :: PTH00 ! reference temperature
+INTEGER :: ILBX, ILBY, ILBX2, ILBY2
+INTEGER :: IW, IE, IN, IS
 !
+
+if ( kgrid<1 .or. kgrid>4 ) call Print_msg( NVERB_FATAL, 'GEN', 'Compute_LB', 'invalid kgrid dummy argument' )
+
 IF(PRESENT(PTH00)) THEN
-  PLBX=PTH00 ! to avoid undefined computation
-  PLBY=PTH00
+  PLBX(:,:,:) = PTH00 ! to avoid undefined computation
+  PLBY(:,:,:) = PTH00
 ELSE
   PLBX=0.
   PLBY=0.
@@ -812,8 +706,8 @@ ENDIF
 !
 CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
                PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-               2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,       &
-                                           HLBCX,HLBCY,PTFIELD,ZWORK)
+               2,2,KDIMX-1,KDIMY-1,KDXRATIO,KDYRATIO,KGRID,     &
+               HLBCX,HLBCY,PTFIELD,PWORK)
 !
 ILBX2=SIZE(PLBX,1)
 IF(LWEST_ll( ).AND.LEAST_ll( )) THEN
@@ -823,11 +717,19 @@ ELSE
 ENDIF
 !
 IF(LWEST_ll( ) .AND. ILBX/=0) THEN
-  PLBX(1:ILBX,IJB:IJE,:)=ZWORK(IIB:IIB-1+ILBX,IJB:IJE,:)
+  iw = kib
+  ie = kib -1 + ilbx
+  if ( kgrid == 2 ) then
+    iw = iw + 1
+    ie = ie + 1
+  end if
+  PLBX(1:ILBX,KJB:KJE,:) = PWORK(iw:ie,KJB:KJE,: )
 ENDIF
 !
 IF(LEAST_ll( ) .AND. ILBX/=0) THEN
-  PLBX(ILBX2-ILBX+1:ILBX2,IJB:IJE,:)=ZWORK(IIE+1-ILBX:IIE,IJB:IJE,:)
+  iw = kie + 1 - ilbx
+  ie = kie
+  PLBX(ILBX2-ILBX+1:ILBX2,KJB:KJE,:) = PWORK(iw:ie,KJB:KJE,:)
 ENDIF
 !
 ILBY2=SIZE(PLBY,2)
@@ -838,36 +740,39 @@ ELSE
 ENDIF
 !
 IF(LSOUTH_ll( ) .AND. ILBY/=0) THEN
-  PLBY(IIB:IIE,1:ILBY,:)=ZWORK(IIB:IIE,IJB:IJB-1+ILBY,:)
+  is = kjb
+  in = kjb - 1 + ilby
+  if ( kgrid == 3 ) then
+    is = is + 1
+    in = in + 1
+  end if
+  PLBY(KIB:KIE,1:ILBY,:) = PWORK(KIB:KIE,is:in,:)
 ENDIF
 !
 IF(LNORTH_ll( ) .AND. ILBY/=0) THEN
-  PLBY(IIB:IIE,ILBY2-ILBY+1:ILBY2,:)=ZWORK(IIB:IIE,IJE+1-ILBY:IJE,:)
+  is = kje + 1 - ilby
+  in = kje
+  PLBY(KIB:KIE,ILBY2-ILBY+1:ILBY2,:) = PWORK(KIB:KIE,is:in,:)
 ENDIF
 !
 !*    Vertical interpolation
 !
-IF ( SIZE(PLBX,1) /= 0 .AND. GVERT_INTERP) THEN
-  IF ( ILBX == KRIMX+JPHEXT ) THEN
-    PLBX(:,:,:) = VER_INTERP_LIN(PLBX(:,:,:),   &
-                             KKLIN_LBXM(:,:,:),PCOEFLIN_LBXM(:,:,:))
-  ELSE
-    PLBX(:,:,:) = VER_INTERP_LIN(PLBX(:,:,:),  &
-                          IKLIN_LBXM_RED(:,:,:),ZCOEFLIN_LBXM_RED(:,:,:))
-  END IF
+IF ( SIZE(PLBX,1) /= 0 ) THEN
+  if ( present( kklin_lbx_red ) .and. ilbx /= krimx+jphext ) then
+    PLBX(:,:,:) = VER_INTERP_LIN( PLBX(:,:,:), KKLIN_LBX_RED(:,:,:), PCOEFLIN_LBX_RED(:,:,:) )
+  else
+    PLBX(:,:,:) = VER_INTERP_LIN( PLBX(:,:,:), KKLIN_LBX(:,:,:),     PCOEFLIN_LBX(:,:,:) )
+  end if
 END IF
 !
-IF ( SIZE(PLBY,1) /= 0 .AND. GVERT_INTERP) THEN
-  IF ( ILBY == KRIMY+JPHEXT ) THEN
-    PLBY(:,:,:) = VER_INTERP_LIN(PLBY(:,:,:),   &
-                                   KKLIN_LBYM(:,:,:),PCOEFLIN_LBYM(:,:,:))
-  ELSE
-    PLBY(:,:,:) = VER_INTERP_LIN(PLBY(:,:,:),   &
-                          IKLIN_LBYM_RED(:,:,:),ZCOEFLIN_LBYM_RED(:,:,:))
-  END IF
+IF ( SIZE(PLBY,1) /= 0 ) THEN
+  if ( present( kklin_lby_red ) .and. ilby /= krimy+jphext ) then
+    PLBY(:,:,:) = VER_INTERP_LIN( PLBY(:,:,:), KKLIN_LBY_RED(:,:,:), PCOEFLIN_LBY_RED(:,:,:) )
+  else
+    PLBY(:,:,:) = VER_INTERP_LIN( PLBY(:,:,:), KKLIN_LBY(:,:,:),     PCOEFLIN_LBY(:,:,:) )
+  end if
 END IF
 !
-!
-END SUBROUTINE  COMPUTE_LB_M
-!
-END SUBROUTINE INI_ONE_WAY_n
+END SUBROUTINE Compute_ini_LB
+
+END MODULE MODE_INI_ONE_WAY_n
diff --git a/src/MNH/ini_spawn_lsn.f90 b/src/MNH/ini_spawn_lsn.f90
index f33f727bbc247a84af9b5ae3934f0e8de1157b72..d1274f06b9987ff87bcbf50390a13b2b82970a5d 100644
--- a/src/MNH/ini_spawn_lsn.f90
+++ b/src/MNH/ini_spawn_lsn.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1997-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_INI_SPAWN_LS_n
 !     #########################
@@ -147,6 +143,7 @@ END MODULE MODI_INI_SPAWN_LS_n
 !
 !*      0.   DECLARATIONS
 !            ------------
+use mode_bikhardt
 USE MODE_ll
 USE MODE_MODELN_HANDLER
 !
@@ -158,7 +155,6 @@ USE MODD_FIELD_n     ! modules relative to the outer model $n
 USE MODD_LSFIELD_n
 USE MODD_GRID_n   
 !
-USE MODI_BIKHARDT
 USE MODI_SHUMAN
 USE MODI_COEF_VER_INTERP_LIN
 USE MODI_VER_INTERP_LIN
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index 00aa82518fea1a3cd00e205dac3bd22497af384c..1d6bc3eefe6e98c6b53edb1a4346b1c613ed793b 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -45,12 +45,10 @@ END MODULE MODI_INI_SPECTRE_n
 !              ------------
 !
 USE MODD_ADV_n
+USE MODD_ARGSLIST_ll,   ONLY: LIST_ll
 USE MODD_BIKHARDT_n
 USE MODD_BUDGET
-USE MODD_CH_AERO_n,     ONLY: XSOLORG,XMI
-USE MODD_CH_AEROSOL,    ONLY: LORILAM
-USE MODD_CH_MNHC_n,     ONLY: LUSECHEM, LUSECHAQ, LUSECHIC, LCH_INIT_FIELD, &
-                              LCH_CONV_LINOX, XCH_TUV_DOBNEW, LCH_PH
+USE MODD_CH_MNHC_n,     ONLY: LUSECHAQ, LUSECHIC, LCH_INIT_FIELD
 USE MODD_CH_PH_n
 USE MODD_CLOUD_MF_n
 USE MODD_CST
@@ -59,7 +57,6 @@ USE MODD_CONF_n
 USE MODD_CTURB
 USE MODD_CURVCOR_n
 USE MODD_DEEP_CONVECTION_n
-USE MODD_DIAG_FLAG,     ONLY: LCHEMDIAG
 USE MODD_DIM_n
 USE MODD_DRAGTREE
 USE MODD_DUST
@@ -67,7 +64,6 @@ USE MODD_DYN
 USE MODD_DYN_n
 USE MODD_DYNZD
 USE MODD_DYNZD_n
-USE MODD_ELEC_n,        ONLY: XCION_POS_FW, XCION_NEG_FW
 USE MODD_FIELD_n
 USE MODD_FRC
 USE MODD_FRC_n
@@ -81,9 +77,8 @@ USE MODD_LUNIT_n,       ONLY: COUTFILE, TLUOUT
 USE MODD_MEAN_FIELD
 USE MODD_MEAN_FIELD_n
 USE MODD_METRICS_n
-USE MODD_NESTING,       only: CDAD_NAME, NDAD, NDT_2_WAY, NDTRATIO, NDXRATIO_ALL, NDYRATIO_ALL
+USE MODD_NESTING,       only: NDAD, NDT_2_WAY, NDXRATIO_ALL, NDYRATIO_ALL
 USE MODD_NSV
-USE MODD_NUDGING_n,     ONLY: LNUDGING
 USE MODD_OUT_n
 USE MODD_PARAMETERS
 USE MODD_PARAM_KAFR_n
@@ -97,18 +92,15 @@ USE MODD_PAST_FIELD_n
 USE MODD_RADIATIONS_n
 USE MODD_REF
 USE MODD_REF_n
-USE MODD_SERIES,        ONLY: LSERIES
 USE MODD_SHADOWS_n
 USE MODD_SPECTRE
-USE MODD_STAND_ATM,     ONLY: XSTROATM, XSMLSATM, XSMLWATM, XSPOSATM, XSPOWATM
 USE MODD_TIME
 USE MODD_TIME_n
-USE MODD_TURB_CLOUD,    ONLY: NMODEL_CLOUD, CTURBLEN_CLOUD,XCEI
 USE MODD_TURB_n
 USE MODD_VAR_ll,        ONLY: IP
 !
-USE MODD_ARGSLIST_ll,   ONLY: LIST_ll
 USE MODE_GATHER_ll
+USE MODE_INI_ONE_WAY_n
 USE MODE_IO_FIELD_READ, only: IO_Field_read
 USE MODE_ll
 USE MODE_MODELN_HANDLER
@@ -119,7 +111,6 @@ USE MODE_TYPE_ZDIFFU
 USE MODI_INI_BIKHARDT_n
 USE MODI_INI_CPL
 USE MODI_INI_DYNAMICS
-USE MODI_INI_ONE_WAY_n
 USE MODI_INI_SPAWN_LS_n
 USE MODI_GET_SIZEX_LB
 USE MODI_GET_SIZEY_LB
@@ -139,7 +130,6 @@ TYPE(TFILEDATA),   INTENT(IN) :: TPINIFILE ! Initial file
 !
 !*       0.2   declarations of local variables
 !
-INTEGER             :: JSV     ! Loop index
 INTEGER             :: ILUOUT  ! Logical unit number of output-listing
 INTEGER             :: IIU     ! Upper dimension in x direction (local)
 INTEGER             :: IJU     ! Upper dimension in y direction (local)
@@ -147,10 +137,6 @@ INTEGER             :: IIU_ll  ! Upper dimension in x direction (global)
 INTEGER             :: IJU_ll  ! Upper dimension in y direction (global)
 INTEGER             :: IKU     ! Upper dimension in z direction
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZJ ! Jacobian
-LOGICAL             :: GINIDCONV ! logical switch for the deep convection
-                               ! initialization
-LOGICAL             :: GINIRAD ! logical switch for the radiation
-                               ! initialization
 !
 !
 TYPE(LIST_ll), POINTER :: TZINITHALO2D_ll ! pointer for the list of 2D fields
@@ -167,14 +153,6 @@ INTEGER :: IIY,IJY
 INTEGER :: IIU_B,IJU_B
 INTEGER :: IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll
 !
-REAL, DIMENSION(:,:),   ALLOCATABLE :: ZCO2   ! CO2 concentration near the surface
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZCOVER ! surface cover types
-INTEGER                             :: ICOVER ! number of cover types
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZDIR_ALB ! direct albedo
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZSCA_ALB ! diffuse albedo
-REAL, DIMENSION(:,:),   ALLOCATABLE :: ZEMIS    ! emissivity
-REAL, DIMENSION(:,:),   ALLOCATABLE :: ZTSRAD   ! surface temperature
 !------------------------------------------
 ! Dummy pointers needed to correct an ifort Bug
 REAL, DIMENSION(:), POINTER :: DPTR_XZHAT
@@ -884,20 +862,20 @@ IF ( KMI > 1) THEN
   DPTR_XLBYRM=>XLBYRM
   DPTR_XLBXSVM=>XLBXSVM
   DPTR_XLBYSVM=>XLBYSVM
-  CALL INI_ONE_WAY_n(NDAD(KMI),XTSTEP,KMI,1,                         &
-       DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4,        &
-       DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4,        &
-       NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),NDTRATIO(KMI),      &
-       DPTR_CLBCX,DPTR_CLBCY,NRIMX,NRIMY,                                &
-       DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,      &
-       DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,      &
-       DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,      &
-       DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM,      &
-       CCLOUD, LUSECHAQ, LUSECHIC,                                                 &
-       DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM,DPTR_XLBXWM,DPTR_XLBYWM,    &
-       DPTR_XLBXTHM,DPTR_XLBYTHM,                                                  &
-       DPTR_XLBXTKEM,DPTR_XLBYTKEM,                                                &
-       DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM                           )
+  CALL INI_ONE_WAY_n(NDAD(KMI),KMI,                                                             &
+       DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4, &
+       DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4, &
+       NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),                                                     &
+       DPTR_CLBCX,DPTR_CLBCY,NRIMX,NRIMY,                                                       &
+       DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,                   &
+       DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,                   &
+       DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,                   &
+       DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM,                   &
+       CCLOUD, LUSECHAQ, LUSECHIC,                                                              &
+       DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM,DPTR_XLBXWM,DPTR_XLBYWM,                 &
+       DPTR_XLBXTHM,DPTR_XLBYTHM,                                                               &
+       DPTR_XLBXTKEM,DPTR_XLBYTKEM,                                                             &
+       DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM                                        )
 END IF
 !
 !
@@ -958,4 +936,3 @@ DEALLOCATE(ZJ)
 !
 
 END SUBROUTINE INI_SPECTRE_n
-
diff --git a/src/MNH/les_cloud_masksn.f90 b/src/MNH/les_cloud_masksn.f90
index e08d56550d075d79270aff0a4ceaa60b3fd7cf9a..daeb189e9c4857293aa878d87b0c9ad65e92d079 100644
--- a/src/MNH/les_cloud_masksn.f90
+++ b/src/MNH/les_cloud_masksn.f90
@@ -38,6 +38,7 @@
 !!      P. Aumond        10/2009 Add possibility of user maskS
 !!       F.Couvreux      06/2011 : Conditional sampling
 !!       C.Lac           10/2014 : Correction on user masks   
+!!       Q.Rodier        05/2019 : Missing parallelization 
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -66,7 +67,7 @@ IMPLICIT NONE
 !
 INTEGER :: JK                                  ! vertical loop counter
 INTEGER :: JI                                  ! loop index on masks  
-INTEGER :: IIU, IJU                            ! hor. indices
+INTEGER :: IIU, IJU,IIB,IJB,IIE,IJE            ! hor. indices
 INTEGER :: IKU, KBASE, KTOP                    ! ver. index
 INTEGER :: IRR, IRRC, IRRR, IRRI, IRRS, IRRG   ! moist variables indices
 INTEGER :: JSV                                  ! ind of scalars
@@ -92,6 +93,7 @@ REAL, DIMENSION(:),       ALLOCATABLE :: ZMEANRC
 !-------------------------------------------------------------------------------
 !
 CALL GET_DIM_EXT_ll('B',IIU,IJU)
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 !
 IKU = SIZE(XTHT,3)
 !
@@ -215,8 +217,8 @@ DEALLOCATE(ZWORK1D)
 IF (LLES_NEB_MASK) THEN
   ALLOCATE(LLES_CURRENT_NEB_MASK(IIU,IJU,NLES_K))
   LLES_CURRENT_NEB_MASK (:,:,:) = .FALSE.
-  WHERE ((ZRC_LES>1.E-6 .OR. ZRI_LES>1.E-6) .AND. ZW_LES>0.)
-    LLES_CURRENT_NEB_MASK (:,:,:) = .TRUE.
+  WHERE ((ZRC_LES(IIB:IIE,IJB:IJE,:)>1.E-6 .OR. ZRI_LES(IIB:IIE,IJB:IJE,:)>1.E-6) .AND. ZW_LES(IIB:IIE,IJB:IJE,:)>0.)
+    LLES_CURRENT_NEB_MASK (IIB:IIE,IJB:IJE,:) = .TRUE.
   END WHERE
 END IF
 !
@@ -228,9 +230,9 @@ END IF
 IF (LLES_CORE_MASK) THEN
   ALLOCATE(LLES_CURRENT_CORE_MASK(IIU,IJU,NLES_K))
   LLES_CURRENT_CORE_MASK (:,:,:) = .FALSE.
-  WHERE ((ZRC_LES>1.E-6 .OR. ZRI_LES>1.E-6) &
-         .AND. ZW_LES>0. .AND. ZTHV_ANOM>0.)  
-    LLES_CURRENT_CORE_MASK (:,:,:) = .TRUE.
+  WHERE ((ZRC_LES(IIB:IIE,IJB:IJE,:)>1.E-6 .OR. ZRI_LES(IIB:IIE,IJB:IJE,:)>1.E-6) &
+         .AND. ZW_LES(IIB:IIE,IJB:IJE,:)>0. .AND. ZTHV_ANOM(IIB:IIE,IJB:IJE,:)>0.)  
+    LLES_CURRENT_CORE_MASK (IIB:IIE,IJB:IJE,:) = .TRUE.
   END WHERE
 END IF
 !
@@ -243,10 +245,10 @@ IF (LLES_CS_MASK) THEN
 !
   CALL LES_MEAN_ll(ZRC_LES, LLES_CURRENT_CART_MASK, ZMEANRC  )
   ALLOCATE(LLES_CURRENT_CS1_MASK(IIU,IJU,NLES_K))
-  LLES_CURRENT_CS1_MASK (:,:,:) = .FALSE.
+  LLES_CURRENT_CS1_MASK(:,:,:) = .FALSE.
   IF (NSV_CS >= 2) THEN
     ALLOCATE(LLES_CURRENT_CS2_MASK(IIU,IJU,NLES_K))
-    LLES_CURRENT_CS2_MASK (:,:,:) = .FALSE.
+    LLES_CURRENT_CS2_MASK(:,:,:) = .FALSE.
     IF (NSV_CS == 3) THEN
       ALLOCATE(LLES_CURRENT_CS3_MASK(IIU,IJU,NLES_K))
       LLES_CURRENT_CS3_MASK (:,:,:) = .FALSE.
@@ -271,73 +273,73 @@ IF (LLES_CS_MASK) THEN
 ! case no cloud top and base                    
     IF (JSV == NSV_CSBEG) THEN
      IF ((KBASE ==2) .AND. (KTOP == NLES_K)) THEN
-      WHERE (ZW_LES(:,:,JK)>0. .AND. ZSV_ANOM(:,:,JK,JSV-NSV_CSBEG+1) >  &
+      WHERE (ZW_LES(IIB:IIE,IJB:IJE,JK)>0. .AND. ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) >  &
              XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS1_MASK (:,:,JK) = .TRUE.
+          LLES_CURRENT_CS1_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
       END WHERE       
      END IF
 !
 ! case cloud top and base defined                    
 !
      IF (XZHAT(JK) < XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN      
-      WHERE (ZW_LES(:,:,JK)>0. .AND. ZSV_ANOM(:,:,JK,JSV-NSV_CSBEG+1) > &
+      WHERE (ZW_LES(IIB:IIE,IJB:IJE,JK)>0. .AND. ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
              XSCAL(JSV-NSV_CSBEG+1) *ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS1_MASK (:,:,JK) = .TRUE.
+          LLES_CURRENT_CS1_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
       END WHERE
      END IF     
 !
      IF (XZHAT(JK) >= XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN
-      WHERE (ZW_LES(:,:,JK)>0. .AND. ZSV_ANOM(:,:,JK,JSV-NSV_CSBEG+1) > &
+      WHERE (ZW_LES(IIB:IIE,IJB:IJE,JK)>0. .AND. ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
              XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1) .AND. &
-          ZRC_LES(:,:,JK)>1.E-6)
-          LLES_CURRENT_CS1_MASK (:,:,JK) = .TRUE.
+          ZRC_LES(IIB:IIE,IJB:IJE,JK)>1.E-6)
+          LLES_CURRENT_CS1_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
       END WHERE  
      END IF
     ELSE IF ( JSV == NSV_CSBEG + 1 ) THEN
      IF ((KBASE ==2) .AND. (KTOP == NLES_K)) THEN
-      WHERE ( ZSV_ANOM(:,:,JK,JSV-NSV_CSBEG+1) > &
+      WHERE ( ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
               XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS2_MASK (:,:,JK) = .TRUE.
+          LLES_CURRENT_CS2_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
       END WHERE       
      END IF
 !
 ! case cloud top and base defined                    
 !
      IF (XZHAT(JK) < XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN      
-      WHERE (ZSV_ANOM(:,:,JK,JSV-NSV_CSBEG+1) >  &
+      WHERE (ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) >  &
              XSCAL(JSV-NSV_CSBEG+1) *ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS2_MASK (:,:,JK) = .TRUE.
+          LLES_CURRENT_CS2_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
       END WHERE
      END IF     
 !
      IF (XZHAT(JK) >= XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN
-      WHERE (ZSV_ANOM(:,:,JK,JSV-NSV_CSBEG+1) > &
+      WHERE (ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
              XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1)) 
-          LLES_CURRENT_CS2_MASK (:,:,JK) = .TRUE.
+          LLES_CURRENT_CS2_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
       END WHERE  
      END IF
 !
     ELSE 
      IF ((KBASE ==2) .AND. (KTOP == NLES_K)) THEN
-      WHERE ( ZSV_ANOM(:,:,JK,JSV-NSV_CSBEG+1) > &
+      WHERE ( ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
               XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS3_MASK (:,:,JK) = .TRUE.
+          LLES_CURRENT_CS3_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
       END WHERE       
      END IF
 !
 ! case cloud top and base defined                    
 !
      IF (XZHAT(JK) < XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN      
-      WHERE (ZSV_ANOM(:,:,JK,JSV-NSV_CSBEG+1) > &
+      WHERE (ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
              XSCAL(JSV-NSV_CSBEG+1) *ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS3_MASK (:,:,JK) = .TRUE.
+          LLES_CURRENT_CS3_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
       END WHERE
      END IF     
 !
      IF (XZHAT(JK) >= XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN
-      WHERE (ZSV_ANOM(:,:,JK,JSV-NSV_CSBEG+1) > &
+      WHERE (ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
              XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1)) 
-          LLES_CURRENT_CS3_MASK (:,:,JK) = .TRUE.
+          LLES_CURRENT_CS3_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
       END WHERE  
      END IF
     END IF
@@ -353,7 +355,7 @@ END IF
 IF (LLES_MY_MASK) THEN
   ALLOCATE(LLES_CURRENT_MY_MASKS(IIU,IJU,NLES_K,NLES_MASKS_USER))
   DO JI=1,NLES_MASKS_USER
-    LLES_CURRENT_MY_MASKS (:,:,:,JI) = .FALSE.
+    LLES_CURRENT_MY_MASKS (IIB:IIE,IJB:IJE,:,JI) = .FALSE.
   END DO
 ! WHERE ((ZRC_LES + ZRI_LES) > 1.E-06) 
 !    LLES_CURRENT_MY_MASKS (:,:,:,1) = .TRUE.
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 128897c87ec0514d20b086e6115ad077790ee6ad..94c45b456313b9f0b9684778c24b942a199f50e1 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -354,6 +354,7 @@ USE MODE_ll
 USE MODE_MNH_TIMING
 USE MODE_MODELN_HANDLER
 USE MODE_MPPDB
+USE MODE_ONE_WAY_n
 !
 USE MODI_ADVECTION_METSV
 USE MODI_ADVECTION_UVW
@@ -393,7 +394,6 @@ USE MODI_MNHGET_SURF_PARAM_n
 USE MODI_MNHWRITE_ZS_DUMMY_n
 USE MODI_NUDGING
 USE MODI_NUM_DIFF
-USE MODI_ONE_WAY_n
 USE MODI_PHYS_PARAM_n
 USE MODI_PRESSUREZ
 USE MODI_PROFILER_n
diff --git a/src/MNH/one_wayn.f90 b/src/MNH/one_wayn.f90
index 05532ca21cc52e30ba2ef6be4633a2760a93b08d..f7bcfbd74eb3bf7ac1593cfba69ad864ede34ddf 100644
--- a/src/MNH/one_wayn.f90
+++ b/src/MNH/one_wayn.f90
@@ -1,91 +1,22 @@
-!MNH_LIC Copyright 1996-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-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_ONE_WAY_n
-!     ###################
-!
-INTERFACE 
-!
-      SUBROUTINE ONE_WAY_n(KDAD,PTSTEP,KMI,KTCOUNT,                      &
-                    PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4,     &
-                    PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4,     &
-                    KDXRATIO,KDYRATIO,KDTRATIO,                          &
-                    HLBCX,HLBCY,KRIMX,KRIMY,                             &
-                    KKLIN_LBXU,PCOEFLIN_LBXU,KKLIN_LBYU,PCOEFLIN_LBYU,   &
-                    KKLIN_LBXV,PCOEFLIN_LBXV,KKLIN_LBYV,PCOEFLIN_LBYV,   &
-                    KKLIN_LBXW,PCOEFLIN_LBXW,KKLIN_LBYW,PCOEFLIN_LBYW,   &
-                    KKLIN_LBXM,PCOEFLIN_LBXM,KKLIN_LBYM,PCOEFLIN_LBYM,   &
-                    OSTEADY_DMASS,HCLOUD,OUSECHAQ,OUSECHIC,              &
-                    PLBXUM,PLBYUM,PLBXVM,PLBYVM,PLBXWM,PLBYWM,           &
-                    PLBXTHM,PLBYTHM,                                     &
-                    PLBXTKEM,PLBYTKEM,                                   &
-                    PLBXRM,PLBYRM,PLBXSVM,PLBYSVM,                       &
-                    PDRYMASST,PDRYMASSS,                                 &
-                    PLBXUS,PLBYUS,PLBXVS,PLBYVS,PLBXWS,PLBYWS,           &
-                    PLBXTHS,PLBYTHS,                                     &
-                    PLBXTKES,PLBYTKES,                                   &
-                    PLBXRS,PLBYRS,PLBXSVS,PLBYSVS                        )
-!
-!
-INTEGER,          INTENT(IN)    :: KDAD     !  Number of the DAD model
-REAL,             INTENT(IN)    :: PTSTEP   !  Time step
-INTEGER,          INTENT(IN)    :: KMI      ! model number
+!####################
+MODULE MODE_ONE_WAY_n
+!####################
+
+use mode_msg
+
+implicit none
+
+private
+
+public :: ONE_WAY_n
+
+contains
 
-INTEGER,          INTENT(IN)    :: KTCOUNT  !  Temporal loop COUNTer
-                                            ! (=1 at the segment beginning)
-!
-                                    ! interpolation coefficients 
-REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
-REAL, DIMENSION(:), INTENT(IN) :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
-!
-INTEGER,   INTENT(IN)  :: KDXRATIO   !  x and y-direction resolution RATIO
-INTEGER,   INTENT(IN)  :: KDYRATIO   ! between inner model and outer model
-INTEGER,   INTENT(IN)  :: KDTRATIO   !  Time step resolution RATIO
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX   ! type of lateral
-CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY   ! boundary conditions
-INTEGER,          INTENT(IN)    :: KRIMX,KRIMY ! size of the RIM area
-!  coefficients for the vertical interpolation of the LB fields
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXU,KKLIN_LBYU 
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXU,PCOEFLIN_LBYU
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXV,KKLIN_LBYV 
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXV,PCOEFLIN_LBYV
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXW,KKLIN_LBYW 
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXW,PCOEFLIN_LBYW
-INTEGER, DIMENSION(:,:,:), INTENT(  IN ) :: KKLIN_LBXM,KKLIN_LBYM 
-REAL,    DIMENSION(:,:,:), INTENT(  IN ) :: PCOEFLIN_LBXM,PCOEFLIN_LBYM
-!
-LOGICAL,           INTENT(IN)  :: OSTEADY_DMASS ! Md evolution logical switch
-CHARACTER (LEN=4), INTENT(IN)  :: HCLOUD        ! Indicator of the cloud scheme
-LOGICAL,           INTENT(IN)  :: OUSECHAQ      ! logical for aqueous phase chemistry
-LOGICAL,           INTENT(IN)  :: OUSECHIC      ! logical for ice phase chemistry
-!  
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLBXUM,PLBXVM,PLBXWM ! Large Scale fields at t-dt
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLBYUM,PLBYVM,PLBYWM 
-REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLBXTHM ,PLBYTHM  ! Large Scale fields at t-dt
-REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PLBXTKEM,PLBYTKEM ! Theta, TKE
-REAL, DIMENSION(:,:,:,:),INTENT(IN)  :: PLBXRM  ,PLBYRM   ! Moisture and SV
-REAL, DIMENSION(:,:,:,:),INTENT(IN)  :: PLBXSVM ,PLBYSVM  ! in x and y-dir.
-!
-REAL,             INTENT(INOUT) :: PDRYMASST     ! Mass of dry air Md 
-REAL,             INTENT(INOUT) :: PDRYMASSS     !  Md source 
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PLBXUS,PLBXVS,PLBXWS ! Large Scale source terms 
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PLBYUS,PLBYVS,PLBYWS
-REAL, DIMENSION(:,:,:),  INTENT(OUT) :: PLBXTHS ,PLBYTHS  ! Large Scale fields sources
-REAL, DIMENSION(:,:,:),  INTENT(OUT) :: PLBXTKES,PLBYTKES ! Theta, TKE
-REAL, DIMENSION(:,:,:,:),INTENT(OUT) :: PLBXRS  ,PLBYRS   ! Moisture and SV
-REAL, DIMENSION(:,:,:,:),INTENT(OUT) :: PLBXSVS ,PLBYSVS  ! in x and y-dir.
-!
-END SUBROUTINE ONE_WAY_n
-!
-END INTERFACE
-!
-END MODULE MODI_ONE_WAY_n
-!
 !     ####################################################################
 SUBROUTINE ONE_WAY_n(KDAD,PTSTEP,KMI,KTCOUNT,                            &
                     PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4,     &
@@ -188,30 +119,36 @@ SUBROUTINE ONE_WAY_n(KDAD,PTSTEP,KMI,KTCOUNT,                            &
 !!      Modification    01/2016  (JP Pinty) Add LIMA
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 03/05/2019: restructuration of one_wayn and ini_one_wayn
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
 !            ------------
-USE MODE_ll
-USE MODE_MODELN_HANDLER
-use mode_msg
+USE MODD_CH_MNHC_n,      only: LUSECHAQ, LUSECHIC
+USE MODD_CONF,           only: CEQNSYS
+USE MODD_CST,            only: XCPD, XP00, XRD, XRV, XTH00
+USE MODD_FIELD_n,        only: XPABST, XRT, XSVT, XUT, XVT, XWT, XTHT, XTKET
+USE MODD_NESTING,        only: NXOR_ALL, NXEND_ALL, NYOR_ALL, NYEND_ALL
+USE MODD_NSV,            only: NSV_A, NSV_C1R3BEG_A, NSV_C1R3_A, NSV_C2R2BEG_A, NSV_C2R2_A, NSV_CHEMBEG_A, NSV_CHEMEND_A, &
+                               NSV_CHEM_A, NSV_CHICBEG_A, NSV_CHIC_A, NSV_DSTBEG_A, NSV_DST_A,                            &
+                               NSV_ELECBEG_A, NSV_ELEC_A, NSV_LGBEG_A, NSV_LG_A, NSV_LIMA_A, NSV_LIMA_BEG_A,              &
+                               NSV_PPBEG_A, NSV_PP_A,                                                                     &
+                               NSV_SLTBEG_A, NSV_SLT_A, NSV_USER_A,                                                       &
+                               NSV_AERBEG_A, NSV_AER_A, NSV_CSBEG_A, NSV_CS_A
+
+USE MODD_PARAMETERS,     only: JPHEXT, JPVEXT
+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_MODELN_HANDLER, only: GOTO_MODEL
+use mode_sum_ll,         only: SUM3D_ll
 !
-USE MODD_PARAMETERS
-USE MODD_NESTING
-USE MODD_CST
-USE MODD_REF_n        ! modules relative to the outer model $n
-USE MODD_FIELD_n
-USE MODD_CONF
-USE MODD_PARAM_n
-USE MODD_CH_MNHC_n, ONLY: LUSECHAQ, LUSECHIC
-USE MODD_NSV
-!
-USE MODI_BIKHARDT
-USE MODI_VER_INTERP_LIN
-USE MODI_SET_CONC_RAIN_C2R2
-USE MODI_SET_CONC_ICE_C1R3
 USE MODI_SET_CHEMAQ_1WAY
+USE MODI_SET_CONC_ICE_C1R3
 USE MODI_SET_CONC_LIMA
+USE MODI_SET_CONC_RAIN_C2R2
 !
 IMPLICIT NONE
 !
@@ -269,9 +206,8 @@ REAL, DIMENSION(:,:,:,:),INTENT(OUT) :: PLBXSVS ,PLBYSVS  ! in x and y-dir.
 !
 !*       0.2   declarations of local variables
 !
-REAL                   :: ZTIME                   ! Interpolation length
+REAL                   :: ZTIME                   ! Interpolation duration
 INTEGER                :: IIB,IIE,IJB,IJE,IIU,IJU
-INTEGER                :: ILBX,ILBY,ILBX2,ILBY2
 REAL     ::   ZBIGTSTEP    ! time step of the dad model ($n)
 REAL     ::   ZRV_O_RD     ! = Rv /  Rd
 REAL     ::   ZRD_O_CPD    ! = Rd /  Cpd
@@ -279,7 +215,6 @@ REAL     ::  ZDRYMASST,ZDRYMASSM
 !REAL,   DIMENSION(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)) :: ZJ,ZRHOD
 REAL,   DIMENSION(:,:,:), ALLOCATABLE :: ZJ,ZRHOD
 REAL,   DIMENSION(:,:,:), ALLOCATABLE  :: ZWORK
-LOGICAL  :: GVERT_INTERP
 !
 INTEGER           :: IRR,ISV_USER          !  Number of moist and scalar variables
 INTEGER           :: JRR,JSV          !  Loop index
@@ -298,7 +233,7 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZCONCT
 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZCHEMT
 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZCHEMTI
 !
-INTEGER :: N_VAR_LIMA
+integer :: igrid
 !
 !-------------------------------------------------------------------------------
 !
@@ -324,7 +259,6 @@ ZRV_O_RD  = XRV / XRD
 ZRD_O_CPD = XRD / XCPD
 !
 ZTIME = PTSTEP * (1+KDTRATIO)
-GVERT_INTERP=.TRUE.
 ZJ(:,:,:)   =0.
 ZRHOD(:,:,:)=0.
 !
@@ -631,183 +565,44 @@ IF (ALLOCATED(ZCHEMTI)) DEALLOCATE(ZCHEMTI)
 !
 !*      1.   U FIELD TREATMENT
 !            -----------------
-PLBXUS=0.
-PLBYUS=0.
-!
-!*      1.1  Horizontal Bikhardt interpolation
-!
-CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-               PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-               2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,2,       &
-                                           HLBCX,HLBCY,ZTUT,ZWORK)
+IGRID = 2
+CALL Compute_LB( PLBXUM, PLBYUM, PLBXUS, PLBYUS, ZTUT, ZTIME, ZWORK,           &
+                 PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,       &
+                 PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,       &
+                 IIB, IIE, IJB, IJE, IGRID,                                    &
+                 IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY, &
+                 KKLIN_LBXU, KKLIN_LBYU,                                       &
+                 PCOEFLIN_LBXU, PCOEFLIN_LBYU )
 DEALLOCATE(ZTUT)
 !
-ILBX2=SIZE(PLBXUM,1)
-IF(LWEST_ll( ).AND.LEAST_ll( )) THEN
-  ILBX=ILBX2/2
-ELSE
-  ILBX=ILBX2
-ENDIF
-!
-IF (LWEST_ll() .AND. ILBX/=0) THEN
-  PLBXUS(1:ILBX,IJB:IJE,:)=ZWORK(IIB+1:IIB+ILBX,IJB:IJE,:)  !  C grid
-ENDIF
-!
-IF (LEAST_ll()  .AND. ILBX/=0) THEN
-  PLBXUS(ILBX2-ILBX+1:ILBX2,IJB:IJE,:)=ZWORK(IIE+1-ILBX:IIE,IJB:IJE,:)
-ENDIF
-!
-ILBY2=SIZE(PLBYUM,2)
-IF(LSOUTH_ll( ).AND.LNORTH_ll( )) THEN
-  ILBY=ILBY2/2
-ELSE
-  ILBY=ILBY2
-ENDIF
-!
-IF(LSOUTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYUS(IIB:IIE,1:ILBY,:)=ZWORK(IIB:IIE,IJB:IJB-1+ILBY,:)
-ENDIF
-!
-IF(LNORTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYUS(IIB:IIE,ILBY2-ILBY+1:ILBY2,:)=ZWORK(IIB:IIE,IJE+1-ILBY:IJE,:)
-ENDIF
-!
-!
-!*      1.2  Vertical interpolation and tendency computation
-!
-IF ( SIZE(PLBXUS,1) /= 0 ) THEN
-  IF( GVERT_INTERP )   PLBXUS(:,:,:) =               &
-     VER_INTERP_LIN(PLBXUS(:,:,:), KKLIN_LBXU(:,:,:),PCOEFLIN_LBXU(:,:,:))
-  PLBXUS(:,:,:) = (PLBXUS(:,:,:) - PLBXUM(:,:,:)) / ZTIME
-END IF
-!
-IF ( SIZE(PLBYUS,1) /= 0 ) THEN
-  IF( GVERT_INTERP ) PLBYUS(:,:,:) =                  &
-     VER_INTERP_LIN(PLBYUS(:,:,:), KKLIN_LBYU(:,:,:),PCOEFLIN_LBYU(:,:,:))
-  PLBYUS(:,:,:) = (PLBYUS(:,:,:) - PLBYUM(:,:,:)) / ZTIME
-END IF
-!
 !-------------------------------------------------------------------------------
 !
 !*      2.   V FIELD TREATMENT
 !            -----------------
-PLBXVS=0.
-PLBYVS=0.
-!
-!*      2.1  Horizontal Bikhardt interpolation
-!
-CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-               PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-               2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,3,       &
-                                           HLBCX,HLBCY,ZTVT,ZWORK)
+IGRID = 3
+CALL Compute_LB( PLBXVM, PLBYVM, PLBXVS, PLBYVS, ZTVT, ZTIME, ZWORK,           &
+                 PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,       &
+                 PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,       &
+                 IIB, IIE, IJB, IJE, IGRID,                                    &
+                 IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY, &
+                 KKLIN_LBXV, KKLIN_LBYV,                                       &
+                 PCOEFLIN_LBXV, PCOEFLIN_LBYV )
 DEALLOCATE(ZTVT)
 !
-ILBX2=SIZE(PLBXVM,1)
-IF(LWEST_ll( ).AND.LEAST_ll( )) THEN
-  ILBX=ILBX2/2
-ELSE
-  ILBX=ILBX2
-ENDIF
-!
-IF(LWEST_ll( ) .AND. ILBX/=0) THEN
-  PLBXVS(1:ILBX,IJB:IJE,:)=ZWORK(IIB:IIB-1+ILBX,IJB:IJE,:)
-ENDIF
-!
-IF(LEAST_ll( ) .AND. ILBX/=0) THEN
-  PLBXVS(ILBX2-ILBX+1:ILBX2,IJB:IJE,:)=ZWORK(IIE+1-ILBX:IIE,IJB:IJE,:)
-ENDIF
-!
-ILBY2=SIZE(PLBYVM,2)
-IF(LSOUTH_ll( ).AND.LNORTH_ll( )) THEN
-  ILBY=ILBY2/2
-ELSE
-  ILBY=ILBY2
-ENDIF
-!
-IF(LSOUTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYVS(IIB:IIE,1:ILBY,:)=ZWORK(IIB:IIE,IJB+1:IJB+ILBY,:)  !  C grid
-ENDIF
-!
-IF(LNORTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYVS(IIB:IIE,ILBY2-ILBY+1:ILBY2,:)=ZWORK(IIB:IIE,IJE+1-ILBY:IJE,:)
-ENDIF
-!
-
-!*      2.2  Vertical interpolation and tendency computation
-!
-IF ( SIZE(PLBXVS,1) /= 0 ) THEN
-  IF( GVERT_INTERP ) PLBXVS(:,:,:) =                                  &
-     VER_INTERP_LIN(PLBXVS(:,:,:),  KKLIN_LBXV(:,:,:),PCOEFLIN_LBXV(:,:,:))
-  PLBXVS(:,:,:) = (PLBXVS(:,:,:) - PLBXVM(:,:,:)) / ZTIME
-END IF
-!
-IF ( SIZE(PLBYVS,1) /= 0 ) THEN
-  IF( GVERT_INTERP ) PLBYVS(:,:,:) =                        &
-     VER_INTERP_LIN(PLBYVS(:,:,:),  KKLIN_LBYV(:,:,:),PCOEFLIN_LBYV(:,:,:))
-    PLBYVS(:,:,:) = (PLBYVS(:,:,:) - PLBYVM(:,:,:)) / ZTIME
-END IF
-!
 !-------------------------------------------------------------------------------
 !
 !*      3.   W FIELD TREATMENT
 !            -----------------
-PLBXWS=0.
-PLBYWS=0.
-!
-!*      3.1  Horizontal Bikhardt interpolation
-!
-CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-               PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-               2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,4,       &
-                                           HLBCX,HLBCY,ZTWT,ZWORK)
+IGRID = 4
+CALL Compute_LB( PLBXWM, PLBYWM, PLBXWS, PLBYWS, ZTWT, ZTIME, ZWORK,           &
+                 PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,       &
+                 PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,       &
+                 IIB, IIE, IJB, IJE, IGRID,                                    &
+                 IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY, &
+                 KKLIN_LBXW, KKLIN_LBYW,                                       &
+                 PCOEFLIN_LBXW, PCOEFLIN_LBYW )
 DEALLOCATE(ZTWT)
 !
-ILBX2=SIZE(PLBXWM,1)
-IF(LWEST_ll( ).AND.LEAST_ll( )) THEN
-  ILBX=ILBX2/2
-ELSE
-  ILBX=ILBX2
-ENDIF
-!
-IF(LWEST_ll( ) .AND. ILBX/=0) THEN
-  PLBXWS(1:ILBX,IJB:IJE,:)=ZWORK(IIB:IIB-1+ILBX,IJB:IJE,:)
-ENDIF
-!
-IF(LEAST_ll( ) .AND. ILBX/=0) THEN
-  PLBXWS(ILBX2-ILBX+1:ILBX2,IJB:IJE,:)=ZWORK(IIE+1-ILBX:IIE,IJB:IJE,:)
-ENDIF
-!
-ILBY2=SIZE(PLBYWM,2)
-IF(LSOUTH_ll( ).AND.LNORTH_ll( )) THEN
-  ILBY=ILBY2/2
-ELSE
-  ILBY=ILBY2
-ENDIF
-!
-IF(LSOUTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYWS(IIB:IIE,1:ILBY,:)=ZWORK(IIB:IIE,IJB:IJB-1+ILBY,:)
-ENDIF
-!
-IF(LNORTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYWS(IIB:IIE,ILBY2-ILBY+1:ILBY2,:)=ZWORK(IIB:IIE,IJE+1-ILBY:IJE,:)
-ENDIF
-!
-!
-!
-!*      3.2  Vertical interpolation and tendency computation
-!
-IF ( SIZE(PLBXWS,1) /= 0 ) THEN
-  IF( GVERT_INTERP ) PLBXWS(:,:,:) =                         &
-     VER_INTERP_LIN(PLBXWS(:,:,:), KKLIN_LBXW(:,:,:),PCOEFLIN_LBXW(:,:,:))
-  PLBXWS(:,:,:) = (PLBXWS(:,:,:) - PLBXWM(:,:,:)) / ZTIME
-END IF
-!
-IF ( SIZE(PLBYWS,1) /= 0 ) THEN
-  IF( GVERT_INTERP ) PLBYWS(:,:,:) =                         &
-     VER_INTERP_LIN(PLBYWS(:,:,:), KKLIN_LBYW(:,:,:),PCOEFLIN_LBYW(:,:,:))
-  PLBYWS(:,:,:) = (PLBYWS(:,:,:) - PLBYWM(:,:,:)) / ZTIME
-END IF
-!
 !
 !-------------------------------------------------------------------------------
 !
@@ -895,7 +690,17 @@ CALL GO_TOMODEL_ll(KMI, IINFO_ll)
 !            -----------------------------------------------------
 !
 !
-CALL COMPUTE_LB_M(PLBXTHM,PLBYTHM,PLBXTHS,PLBYTHS,ZTTHT,XTH00)
+IGRID = 1
+CALL Compute_LB( PLBXTHM, PLBYTHM, PLBXTHS, PLBYTHS, ZTTHT, ZTIME, ZWORK,                   &
+                 PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,                    &
+                 PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,                    &
+                 IIB, IIE, IJB, IJE, IGRID,                                                 &
+                 IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY,              &
+                 KKLIN_LBXM, KKLIN_LBYM,                                                    &
+                 PCOEFLIN_LBXM, PCOEFLIN_LBYM,                                              &
+                 PTH00 = XTH00,                                                             &
+                 KKLIN_LBX_RED    = IKLIN_LBXM_RED,    KKLIN_LBY_RED    = IKLIN_LBYM_RED,   &
+                 PCOEFLIN_LBX_RED = ZCOEFLIN_LBXM_RED, PCOEFLIN_LBY_RED = ZCOEFLIN_LBYM_RED )
 DEALLOCATE(ZTTHT)
 !
 !
@@ -908,7 +713,16 @@ IF (SIZE(XTKET,3) == 0 .OR. SIZE(PLBXTKEM,3) == 0) THEN
   PLBXTKES(:,:,:) = 0.                      ! turbulence not activated
   PLBYTKES(:,:,:) = 0.
 ELSE
-  CALL COMPUTE_LB_M(PLBXTKEM,PLBYTKEM,PLBXTKES,PLBYTKES,ZTTKET)
+  IGRID = 1
+  CALL Compute_LB( PLBXTKEM, PLBYTKEM, PLBXTKES, PLBYTKES, ZTTKET, ZTIME, ZWORK,              &
+                   PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,                    &
+                   PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,                    &
+                   IIB, IIE, IJB, IJE, IGRID,                                                 &
+                   IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY,              &
+                   KKLIN_LBXM, KKLIN_LBYM,                                                    &
+                   PCOEFLIN_LBXM, PCOEFLIN_LBYM,                                              &
+                   KKLIN_LBX_RED    = IKLIN_LBXM_RED,    KKLIN_LBY_RED    = IKLIN_LBYM_RED,   &
+                   PCOEFLIN_LBX_RED = ZCOEFLIN_LBXM_RED, PCOEFLIN_LBY_RED = ZCOEFLIN_LBYM_RED )
   DEALLOCATE(ZTTKET)
 END IF
 !
@@ -923,8 +737,17 @@ IF (IRR == 0) THEN
   PLBYRS(:,:,:,:) = 0.
 ELSE
   DO JRR = 1,IRR
-    CALL COMPUTE_LB_M(PLBXRM(:,:,:,JRR),PLBYRM(:,:,:,JRR),   &
-                   PLBXRS(:,:,:,JRR),PLBYRS(:,:,:,JRR),ZTRT(:,:,:,JRR))
+    IGRID = 1
+    CALL Compute_LB( PLBXRM(:,:,:,JRR), PLBYRM(:,:,:,JRR), PLBXRS(:,:,:,JRR), PLBYRS(:,:,:,JRR), &
+                     ZTRT(:,:,:,JRR), ZTIME, ZWORK,                                              &
+                     PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,                     &
+                     PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,                     &
+                     IIB, IIE, IJB, IJE, IGRID,                                                  &
+                     IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY,               &
+                     KKLIN_LBXM, KKLIN_LBYM,                                                     &
+                     PCOEFLIN_LBXM, PCOEFLIN_LBYM,                                               &
+                     KKLIN_LBX_RED    = IKLIN_LBXM_RED,    KKLIN_LBY_RED    = IKLIN_LBYM_RED,    &
+                     PCOEFLIN_LBX_RED = ZCOEFLIN_LBXM_RED, PCOEFLIN_LBY_RED = ZCOEFLIN_LBYM_RED  )
   END DO
   DEALLOCATE(ZTRT)
 !
@@ -941,8 +764,17 @@ END IF
 IF (NSV_A(KMI) > 0) THEN
   ! Users scalar variables
   DO JSV = 1,NSV_A(KMI)
-    CALL COMPUTE_LB_M(PLBXSVM(:,:,:,JSV),PLBYSVM(:,:,:,JSV),  &
-         PLBXSVS(:,:,:,JSV),PLBYSVS(:,:,:,JSV),ZTSVT(:,:,:,JSV))
+    IGRID = 1
+    CALL Compute_LB( PLBXSVM(:,:,:,JSV), PLBYSVM(:,:,:,JSV), PLBXSVS(:,:,:,JSV), PLBYSVS(:,:,:,JSV), &
+                     ZTSVT(:,:,:,JSV), ZTIME, ZWORK,                                                 &
+                     PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,                         &
+                     PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,                         &
+                     IIB, IIE, IJB, IJE, IGRID,                                                      &
+                     IDIMX, IDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY,                   &
+                     KKLIN_LBXM, KKLIN_LBYM,                                                         &
+                     PCOEFLIN_LBXM, PCOEFLIN_LBYM,                                                   &
+                     KKLIN_LBX_RED    = IKLIN_LBXM_RED,    KKLIN_LBY_RED    = IKLIN_LBYM_RED,        &
+                     PCOEFLIN_LBX_RED = ZCOEFLIN_LBXM_RED, PCOEFLIN_LBY_RED = ZCOEFLIN_LBYM_RED      )
   END DO
   DEALLOCATE(ZTSVT)
 ELSE
@@ -956,97 +788,67 @@ DEALLOCATE(ZCOEFLIN_LBXM_RED,ZCOEFLIN_LBYM_RED,IKLIN_LBXM_RED,IKLIN_LBYM_RED)
 !------------------------------------------------------------------------------
 CALL GOTO_MODEL(KMI)
 !
-CONTAINS
-!
-!
-! #############################################################
-  SUBROUTINE COMPUTE_LB_M(PLBXM,PLBYM,PLBXS,PLBYS,PTFIELD,PTH00)
-! #############################################################
-!
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PLBXM,PLBYM !LB fields at t-dt
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PLBXS,PLBYS ! LB source terms
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PTFIELD     ! ls forcing array
-REAL, OPTIONAL, INTENT(IN) :: PTH00 ! reference temperature
-!
-!
-IF(PRESENT(PTH00)) THEN
-  PLBXS=PTH00 ! to avoid undefined computation
-  PLBYS=PTH00
-ELSE
-  PLBXS=0.
-  PLBYS=0.
-ENDIF
-!
-!*    Horizontal Bikhardt interpolation
-!
-!
-CALL BIKHARDT (PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, &
-               PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, &
-               2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1,       &
-                                           HLBCX,HLBCY,PTFIELD,ZWORK)
-!
-ILBX2=SIZE(PLBXM,1)
-IF(LWEST_ll( ).AND.LEAST_ll( )) THEN
-  ILBX=ILBX2/2
-ELSE
-  ILBX=ILBX2
-ENDIF
-!
-IF(LWEST_ll( ) .AND. ILBX/=0) THEN
-  PLBXS(1:ILBX,IJB:IJE,:)=ZWORK(IIB:IIB-1+ILBX,IJB:IJE,:)
-ENDIF
-!
-IF(LEAST_ll( ) .AND. ILBX/=0) THEN
-  PLBXS(ILBX2-ILBX+1:ILBX2,IJB:IJE,:)=ZWORK(IIE+1-ILBX:IIE,IJB:IJE,:)
-ENDIF
-!
-ILBY2=SIZE(PLBYM,2)
-IF(LSOUTH_ll( ).AND.LNORTH_ll( )) THEN
-  ILBY=ILBY2/2
-ELSE
-  ILBY=ILBY2
-ENDIF
-!
-IF(LSOUTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYS(IIB:IIE,1:ILBY,:)=ZWORK(IIB:IIE,IJB:IJB-1+ILBY,:)
-ENDIF
-!
-IF(LNORTH_ll( ) .AND. ILBY/=0) THEN
-  PLBYS(IIB:IIE,ILBY2-ILBY+1:ILBY2,:)=ZWORK(IIB:IIE,IJE+1-ILBY:IJE,:)
-ENDIF
-!
-!
-!*  Vertical interpolation and tendency
-!
-!
-IF ( SIZE(PLBXS,1) /= 0 ) THEN
-  IF( GVERT_INTERP ) THEN
-    IF ( ILBX == KRIMX+JPHEXT ) THEN
-      PLBXS(:,:,:) = VER_INTERP_LIN(PLBXS(:,:,:),  &
-                          KKLIN_LBXM(:,:,:),PCOEFLIN_LBXM(:,:,:))
-    ELSE
-      PLBXS(:,:,:) = VER_INTERP_LIN(PLBXS(:,:,:),  &
-                               IKLIN_LBXM_RED(:,:,:),ZCOEFLIN_LBXM_RED(:,:,:))
-    ENDIF
-  ENDIF
-  PLBXS(:,:,:) = (PLBXS(:,:,:) - PLBXM(:,:,:)) / ZTIME
-END IF
-!
-!
-IF ( SIZE(PLBYS,1) /= 0 ) THEN
-  IF( GVERT_INTERP ) THEN
-    IF ( ILBY == KRIMY+JPHEXT ) THEN
-      PLBYS(:,:,:) = VER_INTERP_LIN(PLBYS(:,:,:),  &
-                          KKLIN_LBYM(:,:,:),PCOEFLIN_LBYM(:,:,:))
-    ELSE
-      PLBYS(:,:,:) = VER_INTERP_LIN(PLBYS(:,:,:),  &
-                          IKLIN_LBYM_RED(:,:,:),ZCOEFLIN_LBYM_RED(:,:,:))
-    ENDIF
-  ENDIF
-  PLBYS(:,:,:) = (PLBYS(:,:,:) - PLBYM(:,:,:)) / ZTIME
-END IF
-!
-END SUBROUTINE  COMPUTE_LB_M
+END SUBROUTINE ONE_WAY_n
+
+
+
+!#################################################################################
+SUBROUTINE Compute_LB(PLBXM,PLBYM,PLBX,PLBY,PTFIELD,PTIME,PWORK,             &
+                      PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4,       &
+                      PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4,       &
+                      KIB,KIE,KJB,KJE, KGRID,                                &
+                      KDIMX,KDIMY,KDXRATIO,KDYRATIO,HLBCX,HLBCY,KRIMX,KRIMY, &
+                      KKLIN_LBX,KKLIN_LBY,                                   &
+                      PCOEFLIN_LBX,PCOEFLIN_LBY,                             &
+                      PTH00,                                                 &
+                      KKLIN_LBX_RED,KKLIN_LBY_RED,                           &
+                      PCOEFLIN_LBX_RED,PCOEFLIN_LBY_RED )
+!#################################################################################
+
+use MODE_INI_ONE_WAY_n, only: Compute_ini_LB
+
+IMPLICIT NONE
 !
+!*       0.1   declarations of arguments
 !
-END SUBROUTINE ONE_WAY_n
+REAL,    DIMENSION(:,:,:),           INTENT(IN)  :: PLBXM,PLBYM ! Large-scale field at t-dt
+REAL,    DIMENSION(:,:,:),           INTENT(OUT) :: PLBX,PLBY ! source term
+REAL,    DIMENSION(:,:,:),           INTENT(IN)  :: PTFIELD   ! ls forcing array
+REAL,                                INTENT(IN)  :: PTIME     ! Interpolation duration
+REAL,    DIMENSION(:,:,:),           INTENT(OUT) :: PWORK
+! interpolation coefficients
+REAL,    DIMENSION(:),               INTENT(IN)  :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
+REAL,    DIMENSION(:),               INTENT(IN)  :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
+REAL,    DIMENSION(:),               INTENT(IN)  :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
+REAL,    DIMENSION(:),               INTENT(IN)  :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc.
+INTEGER,                             INTENT(IN)  :: KIB,KIE,KJB,KJE
+INTEGER,                             INTENT(IN)  :: KGRID      ! code of grid point
+INTEGER,                             INTENT(IN)  :: KDIMX, KDIMY
+INTEGER,                             INTENT(IN)  :: KDXRATIO   !  x and y-direction resolution RATIO
+INTEGER,                             INTENT(IN)  :: KDYRATIO   ! between inner model and outer model
+CHARACTER (LEN=4), DIMENSION (2),    INTENT(IN)  :: HLBCX   ! type of lateral
+CHARACTER (LEN=4), DIMENSION (2),    INTENT(IN)  :: HLBCY   ! boundary conditions
+INTEGER,                             INTENT(IN)  :: KRIMX,KRIMY ! size of the RIM area
+INTEGER, DIMENSION(:,:,:),           INTENT(IN)  :: KKLIN_LBX,KKLIN_LBY
+REAL,    DIMENSION(:,:,:),           INTENT(IN)  :: PCOEFLIN_LBX,PCOEFLIN_LBY
+REAL,                      OPTIONAL, INTENT(IN)  :: PTH00 ! reference temperature
+INTEGER, DIMENSION(:,:,:), optional, INTENT(IN)  :: KKLIN_LBX_RED,KKLIN_LBY_RED
+REAL,    DIMENSION(:,:,:), optional, INTENT(in)  :: PCOEFLIN_LBX_RED,PCOEFLIN_LBY_RED
+
+
+CALL Compute_ini_LB( PLBX, PLBY, PTFIELD, PWORK,                                              &
+                     PBMX1, PBMX2, PBMX3, PBMX4, PBMY1, PBMY2, PBMY3, PBMY4,                  &
+                     PBFX1, PBFX2, PBFX3, PBFX4, PBFY1, PBFY2, PBFY3, PBFY4,                  &
+                     KIB, KIE, KJB, KJE, KGRID,                                               &
+                     KDIMX, KDIMY, KDXRATIO, KDYRATIO, HLBCX, HLBCY, KRIMX, KRIMY,            &
+                     KKLIN_LBX, KKLIN_LBY,                                                    &
+                     PCOEFLIN_LBX, PCOEFLIN_LBY,                                              &
+                     PTH00 = PTH00,                                                           &
+                     KKLIN_LBX_RED    = KKLIN_LBX_RED,    KKLIN_LBY_RED    = KKLIN_LBY_RED,   &
+                     PCOEFLIN_LBX_RED = PCOEFLIN_LBX_RED, PCOEFLIN_LBY_RED = PCOEFLIN_LBY_RED )
+PLBX(:,:,:) = (PLBX(:,:,:) - PLBXM(:,:,:)) / PTIME
+PLBY(:,:,:) = (PLBY(:,:,:) - PLBYM(:,:,:)) / PTIME
+
+end SUBROUTINE Compute_LB
+
+end MODULE MODE_ONE_WAY_n
diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90
index b0f75841c3fc10bfe0c3c8ab5b0a094d5ec36649..62d152167dcaf4ba6853784893d1229937f27d4e 100644
--- a/src/MNH/spawn_field2.f90
+++ b/src/MNH/spawn_field2.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_SPAWN_FIELD2
 !#######################
@@ -187,6 +188,7 @@ USE MODD_RELFRC_n
 USE MODD_SALT,            ONLY: CSALTNAMES
 USE MODD_SPAWN
 !
+use mode_bikhardt
 USE MODE_FIELD,           ONLY: TFIELDDATA,TYPEREAL
 USE MODE_IO_FIELD_READ,   only: IO_Field_read
 USE MODE_ll
@@ -196,8 +198,6 @@ USE MODE_MPPDB
 USE MODE_THERMO
 USE MODE_TOOLS,           ONLY: UPCASE
 !
-USE MODI_BIKHARDT
-!
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
diff --git a/src/MNH/spawn_grid2.f90 b/src/MNH/spawn_grid2.f90
index 15de26857beed2dd1fa0d811b2c82330722ecdd1..4ba0d58a36220aa6703065ab8e356a3a0494bfaa 100644
--- a/src/MNH/spawn_grid2.f90
+++ b/src/MNH/spawn_grid2.f90
@@ -164,11 +164,11 @@ USE MODD_LBC_n,     ONLY: LBC_MODEL
 USE MODD_LUNIT_n, ONLY: TLUOUT
 USE MODD_BIKHARDT_n
 USE MODD_VAR_ll
+use mode_bikhardt
 USE MODE_ll
 USE MODE_TIME
 USE MODE_GRIDPROJ
 !
-USE MODI_BIKHARDT
 USE MODI_SPAWN_ZS
 !
 USE MODE_MODELN_HANDLER
diff --git a/src/MNH/spawn_lsn.f90 b/src/MNH/spawn_lsn.f90
index 88d40d981a5826dc3400f7c3752262678fff458c..d72774348bbcf8e84d88176a208ed056217f4a52 100644
--- a/src/MNH/spawn_lsn.f90
+++ b/src/MNH/spawn_lsn.f90
@@ -23,7 +23,7 @@ INTERFACE
 INTEGER,   INTENT(IN)  :: KDAD      ! number of the DAD model
 REAL,             INTENT(IN)    :: PTSTEP   !  Time step
 INTEGER,          INTENT(IN)    :: KMI      ! model number
-                                    ! interpolation coefficients 
+                                    ! interpolation coefficients
 REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc.
 REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc.
 REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc.
@@ -129,6 +129,7 @@ END MODULE MODI_SPAWN_LS_n
 !
 !*      0.   DECLARATIONS
 !            ------------
+use mode_bikhardt
 USE MODE_ll
 USE MODE_MODELN_HANDLER
 !
@@ -139,7 +140,6 @@ USE MODD_LSFIELD_n
 USE MODD_FIELD_n      ! modules relative to the outer model _n
 USE MODD_GRID_n   
 !
-USE MODI_BIKHARDT
 USE MODI_COEF_VER_INTERP_LIN
 USE MODI_VER_INTERP_LIN
 USE MODI_SHUMAN
diff --git a/src/MNH/spawn_pressure2.f90 b/src/MNH/spawn_pressure2.f90
index 4a4077c296999362a58b8729cfebd4827cd65b70..0a55faaef3b11cd76e9f289ad02fd6a32e772000 100644
--- a/src/MNH/spawn_pressure2.f90
+++ b/src/MNH/spawn_pressure2.f90
@@ -1,6 +1,6 @@
 !MNH_LIC Copyright 1997-2018 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.
 !-----------------------------------------------------------------
 !#######################
@@ -122,11 +122,11 @@ USE MODD_VER_INTERP_LIN
 USE MODD_SPAWN
 !
 USE MODI_SHUMAN
-USE MODI_BIKHARDT
 USE MODI_COMPUTE_EXNER_FROM_TOP
 USE MODI_COEF_VER_INTERP_LIN
 USE MODI_VER_INTERP_LIN
 !
+use mode_bikhardt
 USE MODE_MODELN_HANDLER
 USE MODE_ll
 USE MODE_MPPDB
diff --git a/src/MNH/spawn_surf2_rain.f90 b/src/MNH/spawn_surf2_rain.f90
index 0c324004db2bc022e01a0d0851e92d327c927cb5..4a6ecb4f7d5181a10521d82ec754245958021f74 100644
--- a/src/MNH/spawn_surf2_rain.f90
+++ b/src/MNH/spawn_surf2_rain.f90
@@ -122,9 +122,9 @@ USE MODD_IO,      ONLY: TFILEDATA
 USE MODD_LBC_n,   ONLY: LBC_MODEL
 USE MODD_SPAWN
 !
+use mode_bikhardt
 USE MODE_MODELN_HANDLER
 !
-USE MODI_BIKHARDT         ! Interface modules
 USE MODI_READ_PRECIP_FIELD
 !
 IMPLICIT NONE
diff --git a/src/MNH/spawn_zs.f90 b/src/MNH/spawn_zs.f90
index ea7ad57684df040d48e490829a65991582d45b1c..fc12915cca3825c01cea9fef34d8d52cdec7f841 100644
--- a/src/MNH/spawn_zs.f90
+++ b/src/MNH/spawn_zs.f90
@@ -110,7 +110,7 @@ use modd_precision,  only: MNHREAL_MPI
 !
 USE MODD_BIKHARDT_n
 !
-USE MODI_BIKHARDT
+use mode_bikhardt
 USE MODI_ZS_BOUNDARY
 !
 USE MODE_MODELN_HANDLER
diff --git a/src/MNH/zs_boundaryn.f90 b/src/MNH/zs_boundaryn.f90
index 2fe1bf3b4b496ad49adfa6521e9e1e550b8fd5aa..b26462efd793b2cebedd6ebf2961bd32991d3db2 100644
--- a/src/MNH/zs_boundaryn.f90
+++ b/src/MNH/zs_boundaryn.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1999-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 init 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     #######################
       MODULE MODI_ZS_BOUNDARY_n
 !     #######################
@@ -100,7 +95,7 @@ USE MODE_MODELN_HANDLER
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
 USE MODD_GRID_n       ! contains the DAD model informations
 !
-USE MODI_BIKHARDT
+use mode_bikhardt
 !
 !
 IMPLICIT NONE