From ca35f7435337bad37010725af852e091eda240e7 Mon Sep 17 00:00:00 2001
From: Juan Escobar <escj@aero.obs-mip.fr>
Date: Thu, 24 May 2018 15:05:39 +0200
Subject: [PATCH] Juan 24/05/2018: COUPLING , move coupling source from
 ARCH_SRC/CPL_WAVE to OASIS

---
 src/ARCH_SRC/CPL_WAVE/MNH/ground_paramn.f90   |  929 -------
 src/ARCH_SRC/CPL_WAVE/MNH/ini_modeln.f90      | 2314 -----------------
 src/ARCH_SRC/CPL_WAVE/MNH/mesonh.f90          |  242 --
 .../CPL_WAVE/SURCOUCHE/mode_init_ll.f90       |  823 ------
 src/ARCH_SRC/CPL_WAVE/SURCOUCHE/mode_io.f90   |  955 -------
 .../MNH/mnh_oasis_define.F90                  |    0
 .../CPL_WAVE => OASIS}/MNH/mnh_oasis_grid.F90 |    2 +-
 .../CPL_WAVE => OASIS}/MNH/mnh_oasis_recv.F90 |    0
 .../CPL_WAVE => OASIS}/MNH/mnh_oasis_send.F90 |    0
 .../SURFEX/coare30_flux.F90                   |    0
 .../SURFEX/coare30_seaflux.F90                |    0
 .../SURFEX/coupling_seafluxn.F90              |    0
 .../SURFEX/dealloc_seafluxn.F90               |    0
 .../SURFEX/default_prep_seaflux.F90           |    0
 .../SURFEX/default_seaflux.F90                |    0
 .../SURFEX/diag_cpl_esm_sea.F90               |    0
 .../SURFEX/diag_inline_seafluxn.F90           |    0
 .../SURFEX/diag_seaflux_initn.F90             |    0
 .../CPL_WAVE => OASIS}/SURFEX/get_sfx_sea.F90 |    0
 .../SURFEX/get_sfx_wave.F90                   |    0
 .../CPL_WAVE => OASIS}/SURFEX/get_sfxcpln.F90 |    0
 .../SURFEX/init_seafluxn.F90                  |    3 +-
 .../SURFEX/modd_prep_seaflux.F90              |    0
 .../SURFEX/modd_seafluxn.F90                  |    0
 .../SURFEX/modd_sfx_oasis.F90                 |    0
 .../SURFEX/mode_read_netcdf_mercator.F90      |    0
 .../SURFEX/modn_prep_seaflux.F90              |    0
 .../SURFEX/modn_seafluxn.F90                  |    0
 .../SURFEX/modn_sfx_oasis.F90                 |    0
 .../SURFEX/prep_hor_seaflux_field.F90         |    0
 .../SURFEX/prep_seaflux.F90                   |    0
 .../SURFEX/prep_seaflux_netcdf.F90            |    0
 .../SURFEX/prep_seaflux_unif.F90              |    0
 .../CPL_WAVE => OASIS}/SURFEX/put_sfx_sea.F90 |    0
 .../SURFEX/put_sfx_wave.F90                   |    0
 .../CPL_WAVE => OASIS}/SURFEX/put_sfxcpln.F90 |    0
 .../CPL_WAVE => OASIS}/SURFEX/read_lcover.F90 |    0
 .../SURFEX/read_nam_prep_seafluxn.F90         |    0
 .../SURFEX/read_namelists_seafluxn.F90        |    0
 .../SURFEX/read_prep_seaflux_conf.F90         |    0
 .../SURFEX/read_seafluxn.F90                  |    0
 .../SURFEX/sfx_oasis_define.F90               |    0
 .../SURFEX/sfx_oasis_init.F90                 |    0
 .../SURFEX/sfx_oasis_read_nam.F90             |    0
 .../SURFEX/sfx_oasis_recv.F90                 |    0
 .../SURFEX/sfx_oasis_send.F90                 |    0
 .../SURFEX/write_lcover.F90                   |    0
 .../SURFEX/writesurf_seafluxn.F90             |    0
 48 files changed, 3 insertions(+), 5265 deletions(-)
 delete mode 100644 src/ARCH_SRC/CPL_WAVE/MNH/ground_paramn.f90
 delete mode 100644 src/ARCH_SRC/CPL_WAVE/MNH/ini_modeln.f90
 delete mode 100644 src/ARCH_SRC/CPL_WAVE/MNH/mesonh.f90
 delete mode 100644 src/ARCH_SRC/CPL_WAVE/SURCOUCHE/mode_init_ll.f90
 delete mode 100644 src/ARCH_SRC/CPL_WAVE/SURCOUCHE/mode_io.f90
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/MNH/mnh_oasis_define.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/MNH/mnh_oasis_grid.F90 (99%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/MNH/mnh_oasis_recv.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/MNH/mnh_oasis_send.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/coare30_flux.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/coare30_seaflux.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/coupling_seafluxn.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/dealloc_seafluxn.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/default_prep_seaflux.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/default_seaflux.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/diag_cpl_esm_sea.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/diag_inline_seafluxn.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/diag_seaflux_initn.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/get_sfx_sea.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/get_sfx_wave.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/get_sfxcpln.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/init_seafluxn.F90 (99%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/modd_prep_seaflux.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/modd_seafluxn.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/modd_sfx_oasis.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/mode_read_netcdf_mercator.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/modn_prep_seaflux.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/modn_seafluxn.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/modn_sfx_oasis.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/prep_hor_seaflux_field.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/prep_seaflux.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/prep_seaflux_netcdf.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/prep_seaflux_unif.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/put_sfx_sea.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/put_sfx_wave.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/put_sfxcpln.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/read_lcover.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/read_nam_prep_seafluxn.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/read_namelists_seafluxn.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/read_prep_seaflux_conf.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/read_seafluxn.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/sfx_oasis_define.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/sfx_oasis_init.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/sfx_oasis_read_nam.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/sfx_oasis_recv.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/sfx_oasis_send.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/write_lcover.F90 (100%)
 rename src/{ARCH_SRC/CPL_WAVE => OASIS}/SURFEX/writesurf_seafluxn.F90 (100%)

diff --git a/src/ARCH_SRC/CPL_WAVE/MNH/ground_paramn.f90 b/src/ARCH_SRC/CPL_WAVE/MNH/ground_paramn.f90
deleted file mode 100644
index 0735f4cca..000000000
--- a/src/ARCH_SRC/CPL_WAVE/MNH/ground_paramn.f90
+++ /dev/null
@@ -1,929 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 soil 2006/10/27 16:02:47
-!-----------------------------------------------------------------
-!     ##########
-MODULE MODI_GROUND_PARAM_n
-!     ##########
-!
-INTERFACE 
-!
-      SUBROUTINE GROUND_PARAM_n( PSFTH, PSFRV, PSFSV, PSFCO2, PSFU, PSFV, &
-                                 PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD        )
-!
-!* surface fluxes
-!  --------------
-!
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFTH ! surface flux of potential temperature (Km/s)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFRV ! surface flux of water vapor           (m/s*kg/kg)
-REAL, DIMENSION(:,:,:),INTENT(OUT):: PSFSV ! surface flux of scalar                (m/s*kg/kg)
-                                           ! flux of chemical var.                 (ppp.m/s)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFCO2! surface flux of CO2                   (m/s*kg/kg)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFU  ! surface fluxes of horizontal   
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFV  ! momentum in x and y directions        (m2/s2)
-!
-!* Radiative parameters
-!  --------------------
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDIR_ALB  ! direct  albedo for each spectral band (-)
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSCA_ALB  ! diffuse albedo for each spectral band (-)
-REAL, DIMENSION(:,:),   INTENT(OUT) :: PEMIS     ! surface emissivity                    (-)
-REAL, DIMENSION(:,:),   INTENT(OUT) :: PTSRAD    ! surface radiative temperature         (K)
-!
-END SUBROUTINE GROUND_PARAM_n
-!
-END INTERFACE
-!
-END MODULE MODI_GROUND_PARAM_n
-!
-!     ######################################################################
-      SUBROUTINE GROUND_PARAM_n( PSFTH, PSFRV, PSFSV, PSFCO2, PSFU, PSFV, &
-                                 PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD        )
-!     #######################################################################
-!
-!
-!!****  *GROUND_PARAM*  
-!!
-!!    PURPOSE
-!!    -------
-!       Monitor to call the externalized surface
-!     
-!!**  METHOD
-!!    ------
-!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    Noilhan and Planton (1989)
-!!      
-!!    AUTHOR
-!!    ------
-!!	S. Belair           * Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    10/03/95 
-!!      (J.Stein)   25/10/95  add the rain flux computation at the ground
-!!                            and the lbc
-!!      (J.Stein)   15/11/95  include the strong slopes cases
-!!      (J.Stein)   06/02/96  bug correction for the precipitation flux writing 
-!!      (J.Stein)   20/05/96  set the right IGRID value for the rain rate
-!!      (J.Viviand) 04/02/97  add cold and convective precipitation rate
-!!      (J.Stein)   22/06/97  use the absolute pressure    
-!!      (V.Masson)  09/07/97  add directional z0 computations and RESA correction     
-!!      (V.Masson)  13/02/98  merge the ISBA and TSZ0 routines,
-!!                            rename the routine as a monitor, called by PHYS_PARAMn
-!!                            add the town parameterization
-!!                            recomputes z0 where snow is.
-!!                            pack and unpack of 2D fields into 1D fields
-!!      (V.Masson)  04/01/00  removes the TSZ0 case
-!       (F.Solmon/V.Masson)   adapatation for patch approach
-!                             modification of internal subroutine pack/ allocation in function 
-!                              of patch indices
-!                             calling of isba for each defined patch
-!                             averaging of patch fluxes to get nat fluxes 
-!       (P. Tulet/G.Guenais)  04/02/01  separation of vegetatives class
-!                                           for friction velocity and 
-!                                           aerodynamical resistance
-!      (S Donnier)            09/12/02  add specific humidity at 2m for diagnostic
-!      (V.Masson)             01/03/03  externalisation of the surface schemes!
-!      (P.Tulet )             01/11/03  externalisation of the surface chemistry!
-!!     (D.Gazen)              01/12/03  change emissions handling for surf. externalization
-!!     (J.escobar)            18/10/2012 missing USE MODI_COUPLING_SURF_ATM_n & MODI_DIAG_SURF_ATM_n
-!      (J.escobar)            02/2014 add Forefire coupling
-!!     (G.Delautier)          06/2016 phasage surfex 8
-!!     (B.Vie)                2016 LIMA
-!!     (J.Pianezze)           08/2016 add send/recv oasis functions
-!!      (M.Leriche)            24/03/16 remove flag for chemical surface fluxes
-!-------------------------------------------------------------------------------
-!
-!*       0.     DECLARATIONS
-!               ------------
-!
-! 
-#ifdef CPLOASIS
-USE MODD_IO_SURF_MNH, ONLY : NLUOUT
-USE MODI_GET_HALO
-USE MODI_MNH_OASIS_RECV
-USE MODI_MNH_OASIS_SEND
-USE MODD_SFX_OASIS, ONLY : LOASIS
-USE MODD_DYN, ONLY : XSEGLEN
-#endif
-!
-USE MODD_CST,        ONLY : XP00, XCPD, XRD, XRV,XRHOLW, XDAY, XPI, XLVTT, XMD, XAVOGADRO
-USE MODD_PARAMETERS, ONLY : JPVEXT, XUNDEF
-USE MODD_DYN_n,      ONLY : XTSTEP
-USE MODD_CH_MNHC_n,  ONLY : LUSECHEM
-USE MODD_FIELD_n,    ONLY : XUT, XVT, XWT, XTHT, XRT, XPABST, XSVT, XTKET
-USE MODD_METRICS_n,  ONLY : XDXX, XDYY, XDZZ
-USE MODD_DIM_n,      ONLY : NKMAX
-USE MODD_GRID_n,     ONLY : XLON, XZZ, XDIRCOSXW, XDIRCOSYW, XDIRCOSZW, &
-                            XCOSSLOPE, XSINSLOPE, XZS
-USE MODD_REF_n,      ONLY : XRHODREF
-USE MODD_CONF_n,     ONLY : NRR
-USE MODD_PARAM_n,    ONLY : CDCONV,CCLOUD, CRAD
-USE MODD_PRECIP_n,   ONLY : XINPRC, XINPRR, XINPRS, XINPRG, XINPRH
-USE MODD_DEEP_CONVECTION_n, ONLY : XPRCONV, XPRSCONV
-USE MODD_CONF,       ONLY : LCARTESIAN, CPROGRAM
-USE MODD_TIME_n,     ONLY : TDTCUR
-USE MODD_RADIATIONS_n,   ONLY : XFLALWD, XCCO2, XTSIDER, &
-                                XSW_BANDS, XDIRSRFSWD, XSCAFLASWD, &
-                                XZENITH, XAZIM, XAER
-USE MODD_NSV
-USE MODD_GRID,       ONLY : XLON0, XRPK, XBETA
-USE MODD_PARAM_ICE,  ONLY : LSEDIC
-USE MODD_PARAM_C2R2, ONLY : LSEDC
-USE MODD_DIAG_IN_RUN
-USE MODD_DUST,       ONLY : LDUST 
-USE MODD_SALT,       ONLY : LSALT
-USE MODD_CH_AEROSOL, ONLY : LORILAM
-USE MODD_CSTS_DUST,  ONLY : XMOLARWEIGHT_DUST
-USE MODD_CSTS_SALT,  ONLY : XMOLARWEIGHT_SALT
-!
-USE MODI_NORMAL_INTERPOL
-USE MODI_ROTATE_WIND
-USE MODI_SHUMAN
-USE MODI_MNHGET_SURF_PARAM_n
-USE MODI_COUPLING_SURF_ATM_n
-USE MODI_DIAG_SURF_ATM_n
-USE MODD_MNH_SURFEX_n
-!
-USE MODE_ll
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-#ifdef MNH_FOREFIRE
-!** MODULES FOR FOREFIRE **!
-USE MODD_FOREFIRE
-USE MODD_FOREFIRE_n
-USE MODI_COUPLING_FOREFIRE_n
-#endif
-!
-USE MODD_TIME_n
-USE MODD_TIME
-USE MODI_TEMPORAL_DIST
-!
-USE MODD_PARAM_LIMA, ONLY : MSEDC=>LSEDC
-!
-IMPLICIT NONE
-!
-!
-!
-!*      0.1    declarations of arguments
-!
-!* surface fluxes
-!  --------------
-!
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFTH ! surface flux of potential temperature (Km/s)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFRV ! surface flux of water vapor           (m/s*kg/kg)
-REAL, DIMENSION(:,:,:),INTENT(OUT):: PSFSV ! surface flux of scalar                (m/s*kg/kg)
-                                           ! flux of chemical var.                 (ppp.m/s)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFCO2! surface flux of CO2                   (m/s*kg/kg)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFU  ! surface fluxes of horizontal   
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFV  ! momentum in x and y directions        (m2/s2)
-!
-!* Radiative parameters
-!  --------------------
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDIR_ALB  ! direct  albedo for each spectral band (-)
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSCA_ALB  ! diffuse albedo for each spectral band (-)
-REAL, DIMENSION(:,:),   INTENT(OUT) :: PEMIS     ! surface emissivity                    (-)
-REAL, DIMENSION(:,:),   INTENT(OUT) :: PTSRAD    ! surface radiative temperature         (K)
-!
-!
-!-------------------------------------------------------------------------------
-!
-!
-!
-!*      0.2    declarations of local variables
-!              -------------------------------
-!
-!
-!* Atmospheric variables
-!  ---------------------
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE         :: ZRV    ! vapor mixing ratio
-!
-!            suffix 'A' stands for atmospheric variable at first model level
-!
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZZREF  ! Forcing height
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZTA    ! Temperature
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZRVA   ! vapor mixing ratio
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZQA    ! humidity (kg/m3)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZPA    ! Pressure
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZPS    ! Pressure
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZEXNA  ! Exner function
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZEXNS  ! Exner function
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZTHA   ! potential temperature
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZRAIN  ! liquid precipitation (kg/m2/s)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSNOW  ! solid precipitation  (kg/m2/s)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZTSUN  ! solar time           (s since midnight)
-!
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZUA    ! u component of the wind
-!                                                       ! parallel to the orography
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZVA    ! v component of the wind
-!                                                       ! parallel to the orography
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZU     ! zonal wind
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZV     ! meridian wind
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZWIND  ! wind parallel to the orography
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZRHOA  ! air density
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZDIR   ! wind direction (rad from N clockwise)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFU   ! zonal momentum flux
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFV   ! meridian momentum flux
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZCO2   ! CO2 concentration (kg/kg)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZALFA  ! angle between the wind
-!                                                       ! and the x axis
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2),1):: ZU2D   ! u and v component of the
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2),1):: ZV2D   ! wind at mass point
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFTH  ! Turbulent flux of heat
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFTQ  ! Turbulent flux of water
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFCO2 ! Turbulent flux of CO2
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2),NSV):: ZSFTS! Turbulent flux of scalar
-
-!
-!* Dimensions
-!  ----------
-!
-INTEGER :: IIB  ! physical boundary
-INTEGER :: IIE  ! physical boundary
-INTEGER :: IJB  ! physical boundary
-INTEGER :: IJE  ! physical boundary
-INTEGER :: IKB  ! physical boundary
-INTEGER :: IKE  ! physical boundary
-INTEGER :: IKU  ! vertical array sizes
-!
-INTEGER :: JLAYER ! loop counter
-INTEGER :: JSV    ! loop counter
-INTEGER :: JI,JJ,JK ! loop index
-!
-INTEGER :: IDIM1 ! X physical dimension
-INTEGER :: IDIM2 ! Y physical dimension
-INTEGER :: IDIM1D! total physical dimension
-INTEGER :: IKRAD
-!
-!* Arrays put in 1D vectors
-!  ------------------------
-!
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_TSUN     ! solar time
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZENITH   ! zenithal angle
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_AZIM     ! azimuthal angle
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZREF     ! forcing height
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZS       ! orography
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_U        ! zonal wind
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_V        ! meridian wind
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_QA       ! air humidity  (kg/m3)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_TA       ! air temperature
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_RHOA     ! air density
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SV       ! scalar at first atmospheric level
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_CO2      ! air CO2 concentration
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_RAIN     ! liquid precipitation
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SNOW     ! solid precipitation
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_LW       ! incoming longwave
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_DIR_SW   ! direct incoming shortwave
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SCA_SW   ! diffuse incoming shortwave
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PS       ! surface pressure
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PA       ! pressure at first atmospheric level
-
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFTQ     ! water vapor flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFTH     ! potential temperature flux
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SFTS     ! scalar flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFCO2    ! CO2 flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFU      ! zonal momentum flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFV      ! meridian momentum flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_TSRAD    ! radiative surface temperature
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_DIR_ALB  ! direct albedo
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SCA_ALB  ! diffuse albedo
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_EMIS     ! emissivity
-
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_TSURF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_Z0
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_Z0H
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_QSURF
-
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PEW_A_COEF ! coefficients for
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PEW_B_COEF ! implicit coupling
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PET_A_COEF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PEQ_A_COEF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PET_B_COEF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PEQ_B_COEF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_RN        ! net radiation           (W/m2)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_H         ! sensible heat flux      (W/m2)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_LE        ! latent heat flux        (W/m2)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_GFLUX     ! ground flux             (W/m2)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_T2M       ! Air temperature at 2 meters (K)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_Q2M       ! Air humidity at 2 meters    (kg/kg)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_HU2M      ! Air relative humidity at 2 meters (-)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZON10M    ! zonal Wind at 10 meters     (m/s)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_MER10M    ! meridian Wind at 10 meters  (m/s)
-TYPE(LIST_ll), POINTER            :: TZFIELDSURF_ll    ! list of fields to exchange
-INTEGER                           :: IINFO_ll       ! return code of parallel routine
-!
-REAL                              :: ZTIMEC
-!
-!-------------------------------------------------------------------------------
-!
-!
-IKB= 1+JPVEXT
-IKU=NKMAX + 2* JPVEXT
-IKE=IKU-JPVEXT
-!
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-!
-PSFTH    = XUNDEF
-PSFRV    = XUNDEF
-PSFSV    = XUNDEF
-PSFCO2   = XUNDEF
-PSFU     = XUNDEF
-PSFV     = XUNDEF
-PDIR_ALB = XUNDEF
-PSCA_ALB = XUNDEF
-PEMIS    = XUNDEF
-PTSRAD   = XUNDEF
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.     CONVERSION OF THE ATMOSPHERIC VARIABLES
-!               --------------------------------------- 
-!
-!        1.1    water vapor
-!               -----------
-
-!
-ALLOCATE(ZRV(SIZE(PSFTH,1),SIZE(PSFTH,2),IKU))
-!
-IF(NRR>0) THEN
-  ZRV(:,:,:)=XRT(:,:,:,1)
-ELSE
-  ZRV(:,:,:)=0.
-END IF
-!
-!        1.2    Horizontal wind direction (rad from N clockwise)
-!               -------------------------
-!
-ZU2D(:,:,:)=MXF(XUT(:,:,IKB:IKB))
-ZV2D(:,:,:)=MYF(XVT(:,:,IKB:IKB))
-!
-!* angle between Y axis and wind (rad., clockwise)
-!
-ZALFA = 0.
-WHERE(ZU2D(:,:,1)/=0. .OR. ZV2D(:,:,1)/=0.)
-  ZALFA(:,:)=ATAN2(ZU2D(:,:,1),ZV2D(:,:,1))
-END WHERE
-WHERE(ZALFA(:,:)<0.) ZALFA(:,:) = ZALFA(:,:) + 2. * XPI
-!
-!* angle between North and wind (rad., clockwise)
-!
-IF (.NOT. LCARTESIAN) THEN
-  ZDIR =   ( (XRPK*(XLON(:,:)-XLON0)) - XBETA ) * XPI/180.  + ZALFA
-ELSE
-  ZDIR =                              - XBETA   * XPI/180.  + ZALFA
-END IF
-!
-!
-!        1.3    Rotate the wind
-!               ---------------
-!
-CALL ROTATE_WIND(XUT,XVT,XWT,           &
-     XDIRCOSXW, XDIRCOSYW, XDIRCOSZW,   &
-     XCOSSLOPE,XSINSLOPE,               &
-     XDXX,XDYY,XDZZ,                    &
-     ZUA,ZVA                            )
-
-!
-!        1.4    zonal and meridian components of the wind parallel to the slope
-!               ---------------------------------------------------------------
-!
-ZWIND(:,:) = SQRT( ZUA**2 + ZVA**2 )
-!
-ZU(:,:) = ZWIND(:,:) * SIN(ZDIR)
-ZV(:,:) = ZWIND(:,:) * COS(ZDIR)
-!
-!        1.5   Horizontal interpolation the thermodynamic fields
-!              -------------------------------------------------
-!
-CALL NORMAL_INTERPOL(XTHT,ZRV,XPABST,                    &
-     XDIRCOSXW, XDIRCOSYW, XDIRCOSZW,                    &
-     XCOSSLOPE,XSINSLOPE,                                &
-     XDXX,XDYY,XDZZ,                                     &
-     ZTHA,ZRVA,ZEXNA                                     )
-!
-DEALLOCATE(ZRV)
-!
-!
-!        1.6    Pressure and Exner function
-!               ---------------------------
-!
-!
-ZPA(:,:) = XP00 * ZEXNA(:,:) **(XCPD/XRD)
-!
-ZEXNS(:,:) = 0.5 * ( (XPABST(:,:,IKB-1)/XP00)**(XRD/XCPD)  &
-                    +(XPABST(:,:,IKB  )/XP00)**(XRD/XCPD)  &
-                   )
-ZPS(:,:) = XP00 * ZEXNS(:,:) **(XCPD/XRD)
-!
-!        1.7    humidity in kg/m3 from the mixing ratio
-!               ---------------------------------------
-!
-!
-ZQA(:,:) = ZRVA(:,:) * XRHODREF(:,:,IKB)
-!
-!
-!        1.8    Temperature from the potential temperature
-!               ------------------------------------------
-!
-!
-ZTA(:,:) = ZTHA(:,:) * ZEXNA(:,:)
-!
-!
-!        1.9    Air density
-!               -----------
-!
-ZRHOA(:,:) = ZPA(:,:)/(XRD * ZTA(:,:) * ((1. + (XRD/XRV)*ZRVA(:,:))/ &
-                                         (1. + ZRVA(:,:))))
-!
-!
-!        1.10   Precipitations
-!               --------------
-!
-ZRAIN=0.
-ZSNOW=0.
-IF (NRR>2 .AND. SIZE(XINPRR)>0 ) THEN
-  IF (( CCLOUD(1:3) == 'ICE'                                          .AND. LSEDIC) .OR. &
-      ((CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') .AND. LSEDC)  .OR. &
-      ( CCLOUD=='LIMA'                                                .AND. MSEDC))   THEN
-    ZRAIN = ZRAIN + XINPRR * XRHOLW + XINPRC * XRHOLW
-  ELSE
-    ZRAIN = ZRAIN + XINPRR * XRHOLW
-  END IF
-END IF
-IF (CDCONV == 'KAFR')  THEN
-  ZRAIN = ZRAIN + (XPRCONV - XPRSCONV)  * XRHOLW
-  ZSNOW = ZSNOW + XPRSCONV * XRHOLW
-END IF
-IF( NRR    >= 5    .AND. SIZE(XINPRS)>0 ) ZSNOW = ZSNOW + XINPRS * XRHOLW
-IF( NRR    >= 6    .AND. SIZE(XINPRG)>0 ) ZSNOW = ZSNOW + XINPRG * XRHOLW
-IF( NRR    >= 7    .AND. SIZE(XINPRH)>0 ) ZSNOW = ZSNOW + XINPRH * XRHOLW
-!
-!
-!        1.11   Solar time
-!               ----------
-!
-IF (.NOT. LCARTESIAN) THEN
-  ZTSUN(:,:) = MOD(TDTCUR%TIME -XTSIDER*3600. +XLON(:,:)*240., XDAY)
-ELSE
-  ZTSUN(:,:) = MOD(TDTCUR%TIME -XTSIDER*3600. +XLON0    *240., XDAY)
-END IF
-!
-!        1.12   Forcing level
-!               -------------
-!
-ZZREF(:,:) = 0.5*( XZZ(:,:,IKB+1)-XZZ(:,:,IKB) )*XDIRCOSZW(:,:)
-!
-!
-!        1.13   CO2 concentration (kg/m3)
-!               -----------------
-!
-ZCO2(:,:) = XCCO2 * XRHODREF(:,:,IKB)
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.     Call to surface monitor with 2D variables
-!               -----------------------------------------
-!
-!
-! initial values:
-!
-IDIM1       = IIE-IIB+1
-IDIM2       = IJE-IJB+1
-IDIM1D      = IDIM1*IDIM2
-!
-!
-! Transform 2D input fields into 1D:
-!
-CALL RESHAPE_SURF(IDIM1D)
-!
-! call to have the cumulated time since beginning of simulation
-!
-CALL TEMPORAL_DIST(TDTCUR%TDATE%YEAR,TDTCUR%TDATE%MONTH,               &
-                       TDTCUR%TDATE%DAY, TDTCUR%TIME,                      &
-                       TDTSEG%TDATE%YEAR,TDTSEG%TDATE%MONTH,               &
-                       TDTSEG%TDATE%DAY, TDTSEG%TIME,        &
-                       ZTIMEC)
-!
-#ifdef CPLOASIS
-IF (LOASIS) THEN
-  IF ( MOD(ZTIMEC,1.0) .LE. 1E-2 .OR. (1.0 - MOD(ZTIMEC,1.0)) .LE. 1E-2 ) THEN
-    IF ( NINT(ZTIMEC-(XSEGLEN-XTSTEP)) .LT. 0 ) THEN
-      WRITE(NLUOUT,*) '----------------------------'
-      WRITE(NLUOUT,*) ' Reception des champs avec OASIS'
-      WRITE(NLUOUT,*) 'NINT(ZTIMEC)=', NINT(ZTIMEC)
-      CALL MNH_OASIS_RECV(CPROGRAM,IDIM1D,SIZE(XSW_BANDS),ZTIMEC+XTSTEP,XTSTEP,         &
-                        ZP_ZENITH,XSW_BANDS                                         ,         &
-                        ZP_TSRAD,ZP_DIR_ALB,ZP_SCA_ALB,ZP_EMIS,ZP_TSURF)
-      WRITE(NLUOUT,*) '----------------------------'
-    END IF
-  END IF
-END IF
-#endif
-!
-! Call to surface schemes
-!                       
-CALL COUPLING_SURF_ATM_n(YSURF_CUR,'MESONH', 'E',ZTIMEC,                                                   &
-               XTSTEP, TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME,  &
-               IDIM1D,NSV,SIZE(XSW_BANDS),                                                    &
-               ZP_TSUN, ZP_ZENITH,ZP_ZENITH, ZP_AZIM,                                                   &
-               ZP_ZREF, ZP_ZREF, ZP_ZS, ZP_U, ZP_V, ZP_QA, ZP_TA, ZP_RHOA, ZP_SV, ZP_CO2, CSV,&
-               ZP_RAIN, ZP_SNOW, ZP_LW, ZP_DIR_SW, ZP_SCA_SW, XSW_BANDS, ZP_PS, ZP_PA,        &
-               ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV,                           &
-               ZP_TSRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H, ZP_QSURF,  &
-               ZP_PEW_A_COEF, ZP_PEW_B_COEF,                                                  &
-               ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,                    &
-               'OK'                                                                           )
-!
-#ifdef CPLOASIS
-IF (LOASIS) THEN
-  IF ( MOD(ZTIMEC,1.0) .LE. 1E-2 .OR. (1.0 - MOD(ZTIMEC,1.0)) .LE. 1E-2 ) THEN
-    IF (NINT(ZTIMEC-(XSEGLEN-XTSTEP)) .LT. 0) THEN
-      WRITE(NLUOUT,*) '----------------------------'
-      WRITE(NLUOUT,*) ' Envoi des champs avec OASIS'
-      WRITE(NLUOUT,*) 'NINT(ZTIMEC)=', NINT(ZTIMEC)
-      CALL MNH_OASIS_SEND(CPROGRAM,IDIM1D,ZTIMEC+XTSTEP,XTSTEP)
-      WRITE(NLUOUT,*) '----------------------------'
-    END IF
-  END IF
-END IF
-#endif
-!
-IF (CPROGRAM=='DIAG  ' .OR. LDIAG_IN_RUN) THEN
-  CALL DIAG_SURF_ATM_n(YSURF_CUR,'MESONH')
-  CALL  MNHGET_SURF_PARAM_n(PRN=ZP_RN,PH=ZP_H,PLE=ZP_LE,PGFLUX=ZP_GFLUX, &
-                           PT2M=ZP_T2M,PQ2M=ZP_Q2M,PHU2M=ZP_HU2M,        &
-                           PZON10M=ZP_ZON10M,PMER10M=ZP_MER10M           )
-END IF
-!
-! Transform 1D output fields into 2D:
-!
-CALL UNSHAPE_SURF(IDIM1,IDIM2)
-#ifdef MNH_FOREFIRE
-!------------------------!
-! COUPLING WITH FOREFIRE !
-!------------------------!
-	
-IF ( LFOREFIRE ) THEN
-	CALL FOREFIRE_DUMP_FIELDS_n(XUT, XVT, XWT, XSVT&
-	           , XTHT, XRT(:,:,:,1), XPABST, XTKET&
-	           , IDIM1+2, IDIM2+2, NKMAX+2)
-END IF
-
-IF ( FFCOUPLING ) THEN
-
-	CALL SEND_GROUND_WIND_n(XUT, XVT, IKB, IINFO_ll)
-	
-	CALL FOREFIRE_RECEIVE_PARAL_n()
-   
-   CALL COUPLING_FOREFIRE_n(XTSTEP, ZSFTH, ZSFTQ, ZSFTS)
-	
-	CALL FOREFIRE_SEND_PARAL_n(IINFO_ll)
-   
-END IF
-
-FF_TIME = FF_TIME + XTSTEP
-#endif
-!
-! Friction of components along slope axes (U: largest local slope axis, V: zero slope axis)
-!
-! 
-PSFU(:,:) = 0.
-PSFV(:,:) = 0.
-!
-WHERE (ZSFU(:,:)/=XUNDEF .AND. ZWIND(:,:)>0.)
-  PSFU(:,:) = - SQRT(ZSFU**2+ZSFV**2) * ZUA(:,:) / ZWIND(:,:) / XRHODREF(:,:,IKB)
-  PSFV(:,:) = - SQRT(ZSFU**2+ZSFV**2) * ZVA(:,:) / ZWIND(:,:) / XRHODREF(:,:,IKB)
-END WHERE
-!
-!* conversion from H (W/m2) to w'Theta'
-!
-PSFTH(:,:) = ZSFTH(:,:) /  XCPD / XRHODREF(:,:,IKB)
-!
-!
-!* conversion from water flux (kg/m2/s) to w'rv'
-!
-PSFRV(:,:) = ZSFTQ(:,:) / XRHODREF(:,:,IKB)
-!
-!
-!* conversion from scalar flux (kg/m2/s) to w'rsv'
-!
-IF(NSV .GT. 0) THEN
-   DO JSV=1,NSV
-     PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) / XRHODREF(:,:,IKB)
-   END DO
-END IF
-!
-!* conversion from chemistry flux (molec/m2/s) to (ppp.m.s-1)
-!
-IF (LUSECHEM) THEN
-  DO JSV=NSV_CHEMBEG,NSV_CHEMEND
-    PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / ( XAVOGADRO * XRHODREF(:,:,IKB)) 
-  END DO
-ELSE
-  PSFSV(:,:,NSV_CHEMBEG:NSV_CHEMEND) = 0.
-END IF
-!
-!* conversion from dust flux (kg/m2/s) to (ppp.m.s-1)
-!
-IF (LDUST) THEN
-  DO JSV=NSV_DSTBEG,NSV_DSTEND
-     PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / (XMOLARWEIGHT_DUST * XRHODREF(:,:,IKB))
-  END DO
-ELSE
-  PSFSV(:,:,NSV_DSTBEG:NSV_DSTEND) = 0.
-END IF
-!
-!* conversion from sea salt flux (kg/m2/s) to (ppp.m.s-1)
-!
-IF (LSALT) THEN
-  DO JSV=NSV_SLTBEG,NSV_SLTEND
-     PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / (XMOLARWEIGHT_SALT * XRHODREF(:,:,IKB))
-  END DO
-ELSE
-  PSFSV(:,:,NSV_SLTBEG:NSV_SLTEND) = 0.
-END IF
-!
-!* conversion from aerosol flux (molec/m2/s) to (ppp.m.s-1)
-!
-IF (LORILAM) THEN
-  DO JSV=NSV_AERBEG,NSV_AEREND
-    PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / ( XAVOGADRO * XRHODREF(:,:,IKB))
-  END DO
-ELSE
-  PSFSV(:,:,NSV_AERBEG:NSV_AEREND) = 0.
-END IF
-!
-!* conversion from CO2 flux (kg/m2/s) to w'CO2'
-!
-PSFCO2(:,:) = ZSFCO2(:,:) / XRHODREF(:,:,IKB)
-!
-!
-!*  Diagnostics
-!   -----------
-!
-!
-IF (LDIAG_IN_RUN) THEN
-  !
-  XCURRENT_LW   (:,:) = XFLALWD(:,:)
-  XCURRENT_SW   (:,:) = SUM(XDIRSRFSWD(:,:,:)+XSCAFLASWD(:,:,:),DIM=3)
-  XCURRENT_SFCO2(:,:) = ZSFCO2(:,:)
-  XCURRENT_DSTAOD(:,:)=0.0
-  IF (CRAD=='ECMW') THEN
-  DO JK=IKB,IKE
-    IKRAD = JK - 1 
-    DO JJ=IJB,IJE
-       DO JI=IIB,IIE
-         XCURRENT_DSTAOD(JI,JJ)=XCURRENT_DSTAOD(JI,JJ)+XAER(JI,JJ,IKRAD,3)
-       ENDDO
-    ENDDO
-  ENDDO
-  END IF
-!
-  NULLIFY(TZFIELDSURF_ll)
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_RN    )
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_H     )
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_LE    )
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_GFLUX )
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_SW    )
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_LW    )
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_T2M   )
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_Q2M   )
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_HU2M  )
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_ZON10M)
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_MER10M) 
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_DSTAOD)
-  CALL ADD2DFIELD_ll(TZFIELDSURF_ll,XCURRENT_SFCO2 )
-
-  CALL UPDATE_HALO_ll(TZFIELDSURF_ll,IINFO_ll)
-  CALL CLEANLIST_ll(TZFIELDSURF_ll)
-END IF
-!
-!==================================================================================
-!
-CONTAINS
-!
-!==================================================================================
-!
-SUBROUTINE RESHAPE_SURF(KDIM1D)
-!
-INTEGER, INTENT(IN)   :: KDIM1D
-INTEGER, DIMENSION(1) :: ISHAPE_1
-!
-ISHAPE_1 = (/KDIM1D/)
-!
-ALLOCATE(ZP_TSUN    (KDIM1D))
-ALLOCATE(ZP_ZENITH  (KDIM1D))
-ALLOCATE(ZP_AZIM    (KDIM1D))
-ALLOCATE(ZP_ZREF    (KDIM1D))
-ALLOCATE(ZP_ZS      (KDIM1D))
-ALLOCATE(ZP_U       (KDIM1D))
-ALLOCATE(ZP_V       (KDIM1D))
-ALLOCATE(ZP_QA      (KDIM1D))
-ALLOCATE(ZP_TA      (KDIM1D))
-ALLOCATE(ZP_RHOA    (KDIM1D))
-ALLOCATE(ZP_SV      (KDIM1D,NSV))
-ALLOCATE(ZP_CO2     (KDIM1D))
-ALLOCATE(ZP_RAIN    (KDIM1D))
-ALLOCATE(ZP_SNOW    (KDIM1D))
-ALLOCATE(ZP_LW      (KDIM1D))
-ALLOCATE(ZP_DIR_SW  (KDIM1D,SIZE(XDIRSRFSWD,3)))
-ALLOCATE(ZP_SCA_SW  (KDIM1D,SIZE(XSCAFLASWD,3)))
-ALLOCATE(ZP_PS      (KDIM1D))
-ALLOCATE(ZP_PA      (KDIM1D))
-
-ALLOCATE(ZP_SFTQ    (KDIM1D))
-ALLOCATE(ZP_SFTH    (KDIM1D))
-ALLOCATE(ZP_SFU     (KDIM1D))
-ALLOCATE(ZP_SFV     (KDIM1D))
-ALLOCATE(ZP_SFTS    (KDIM1D,NSV))
-ALLOCATE(ZP_SFCO2   (KDIM1D))
-ALLOCATE(ZP_TSRAD   (KDIM1D))
-ALLOCATE(ZP_DIR_ALB (KDIM1D,SIZE(PDIR_ALB,3)))
-ALLOCATE(ZP_SCA_ALB (KDIM1D,SIZE(PSCA_ALB,3)))
-ALLOCATE(ZP_EMIS    (KDIM1D))
-ALLOCATE(ZP_TSURF   (KDIM1D))
-ALLOCATE(ZP_Z0      (KDIM1D))
-ALLOCATE(ZP_Z0H     (KDIM1D))
-ALLOCATE(ZP_QSURF   (KDIM1D))
-ALLOCATE(ZP_RN      (KDIM1D))
-ALLOCATE(ZP_H       (KDIM1D))
-ALLOCATE(ZP_LE      (KDIM1D))
-ALLOCATE(ZP_GFLUX   (KDIM1D))
-ALLOCATE(ZP_T2M     (KDIM1D))
-ALLOCATE(ZP_Q2M     (KDIM1D))
-ALLOCATE(ZP_HU2M    (KDIM1D))
-ALLOCATE(ZP_ZON10M  (KDIM1D))
-ALLOCATE(ZP_MER10M  (KDIM1D))
-
-!* explicit coupling only
-ALLOCATE(ZP_PEW_A_COEF  (KDIM1D))
-ALLOCATE(ZP_PEW_B_COEF  (KDIM1D))
-ALLOCATE(ZP_PET_A_COEF  (KDIM1D))
-ALLOCATE(ZP_PEQ_A_COEF  (KDIM1D))
-ALLOCATE(ZP_PET_B_COEF  (KDIM1D))
-ALLOCATE(ZP_PEQ_B_COEF  (KDIM1D))
-
-ZP_TSUN(:)        = RESHAPE(ZTSUN(IIB:IIE,IJB:IJE),        ISHAPE_1)
-ZP_TA(:)          = RESHAPE(ZTA(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_QA(:)          = RESHAPE(ZQA(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_RHOA(:)        = RESHAPE(ZRHOA(IIB:IIE,IJB:IJE),        ISHAPE_1)
-ZP_U(:)           = RESHAPE(ZU(IIB:IIE,IJB:IJE),           ISHAPE_1)
-ZP_V(:)           = RESHAPE(ZV(IIB:IIE,IJB:IJE),           ISHAPE_1)
-ZP_PS(:)          = RESHAPE(ZPS(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_PA(:)          = RESHAPE(ZPA(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_ZS(:)          = RESHAPE(XZS(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_CO2(:)         = RESHAPE(ZCO2(IIB:IIE,IJB:IJE),         ISHAPE_1)
-ZP_SNOW(:)        = RESHAPE(ZSNOW(IIB:IIE,IJB:IJE),        ISHAPE_1)
-ZP_RAIN(:)        = RESHAPE(ZRAIN(IIB:IIE,IJB:IJE),        ISHAPE_1)
-ZP_ZREF(:)        = RESHAPE(ZZREF(IIB:IIE,IJB:IJE),        ISHAPE_1)
-
-DO JLAYER=1,NSV
-  ZP_SV(:,JLAYER) = RESHAPE(XSVT(IIB:IIE,IJB:IJE,IKB,JLAYER), ISHAPE_1)
-END DO
-!
-!chemical conversion : from part/part to molec./m3
-DO JLAYER=NSV_CHEMBEG,NSV_CHEMEND
-  ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) * XAVOGADRO * ZP_RHOA(:) / XMD
-END DO
-DO JLAYER=NSV_AERBEG,NSV_AEREND
-  ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) * XAVOGADRO * ZP_RHOA(:) / XMD
-END DO
-!dust  conversion : from part/part to kg/m3
-DO JLAYER=NSV_DSTBEG,NSV_DSTEND
- ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) *  XMOLARWEIGHT_DUST* ZP_RHOA(:) / XMD
-END DO
-!sea salt  conversion : from part/part to kg/m3
-DO JLAYER=NSV_SLTBEG,NSV_SLTEND
- ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) *  XMOLARWEIGHT_SALT* ZP_RHOA(:) / XMD
-END DO
-!
-ZP_ZENITH(:)      = RESHAPE(XZENITH(IIB:IIE,IJB:IJE),      ISHAPE_1)
-ZP_AZIM  (:)      = RESHAPE(XAZIM  (IIB:IIE,IJB:IJE),      ISHAPE_1)
-ZP_LW(:)          = RESHAPE(XFLALWD(IIB:IIE,IJB:IJE),      ISHAPE_1)
-DO JLAYER=1,SIZE(XDIRSRFSWD,3)
-  ZP_DIR_SW(:,JLAYER)  = RESHAPE(XDIRSRFSWD(IIB:IIE,IJB:IJE,JLAYER),  ISHAPE_1)
-  ZP_SCA_SW(:,JLAYER)  = RESHAPE(XSCAFLASWD(IIB:IIE,IJB:IJE,JLAYER),  ISHAPE_1)
-END DO
-!
-ZP_PEW_A_COEF = 0.
-ZP_PEW_B_COEF = 0.
-ZP_PET_A_COEF = 0.
-ZP_PEQ_A_COEF = 0.
-ZP_PET_B_COEF = 0.
-ZP_PEQ_B_COEF = 0.
-!
-END SUBROUTINE RESHAPE_SURF
-!================================================i=================================
-SUBROUTINE UNSHAPE_SURF(KDIM1,KDIM2)
-!
-INTEGER, INTENT(IN)   :: KDIM1, KDIM2
-INTEGER, DIMENSION(2) :: ISHAPE_2
-!
-ISHAPE_2 = (/KDIM1,KDIM2/)
-!
-! Arguments in call to surface:
-!
-ZSFTH = XUNDEF
-ZSFTQ = XUNDEF
-IF (NSV>0) ZSFTS = XUNDEF
-ZSFCO2 = XUNDEF
-ZSFU = XUNDEF
-ZSFV = XUNDEF
-!
-ZSFTH   (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFTH(:),       ISHAPE_2)
-ZSFTQ   (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFTQ(:),       ISHAPE_2)
-DO JLAYER=1,SIZE(PSFSV,3)
-  ZSFTS   (IIB:IIE,IJB:IJE,JLAYER) = RESHAPE(ZP_SFTS(:,JLAYER),  ISHAPE_2)
-END DO
-ZSFCO2  (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFCO2(:),    ISHAPE_2)
-ZSFU    (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFU(:),      ISHAPE_2)
-ZSFV    (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFV(:),      ISHAPE_2)
-PEMIS   (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_EMIS(:),     ISHAPE_2)
-PTSRAD  (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_TSRAD(:),    ISHAPE_2)
-!
-IF (LDIAG_IN_RUN) THEN
-  XCURRENT_RN      (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_RN(:),     ISHAPE_2)
-  XCURRENT_H       (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_H (:),     ISHAPE_2)
-  XCURRENT_LE      (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_LE(:),     ISHAPE_2)
-  XCURRENT_GFLUX   (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_GFLUX(:),  ISHAPE_2)
-  XCURRENT_T2M     (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_T2M(:),    ISHAPE_2)
-  XCURRENT_Q2M     (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_Q2M(:),    ISHAPE_2)
-  XCURRENT_HU2M    (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_HU2M(:),   ISHAPE_2)
-  XCURRENT_ZON10M  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_ZON10M(:), ISHAPE_2)
-  XCURRENT_MER10M  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_MER10M(:), ISHAPE_2)
-ENDIF
-!
-DO JLAYER=1,SIZE(PDIR_ALB,3)
-  PDIR_ALB(IIB:IIE,IJB:IJE,JLAYER) = RESHAPE(ZP_DIR_ALB(:,JLAYER), ISHAPE_2)
-  PSCA_ALB(IIB:IIE,IJB:IJE,JLAYER) = RESHAPE(ZP_SCA_ALB(:,JLAYER), ISHAPE_2)
-END DO
-!
-DEALLOCATE(ZP_TSUN    )
-DEALLOCATE(ZP_ZENITH  )
-DEALLOCATE(ZP_AZIM    )
-DEALLOCATE(ZP_ZREF    )
-DEALLOCATE(ZP_ZS      )
-DEALLOCATE(ZP_U       )
-DEALLOCATE(ZP_V       )
-DEALLOCATE(ZP_QA      )
-DEALLOCATE(ZP_TA      )
-DEALLOCATE(ZP_RHOA    )
-DEALLOCATE(ZP_SV      )
-DEALLOCATE(ZP_CO2     )
-DEALLOCATE(ZP_RAIN    )
-DEALLOCATE(ZP_SNOW    )
-DEALLOCATE(ZP_LW      )
-DEALLOCATE(ZP_DIR_SW  )
-DEALLOCATE(ZP_SCA_SW  )
-DEALLOCATE(ZP_PS      )
-DEALLOCATE(ZP_PA      )
-
-DEALLOCATE(ZP_SFTQ    )
-DEALLOCATE(ZP_SFTH    )
-DEALLOCATE(ZP_SFTS    )
-DEALLOCATE(ZP_SFCO2   )
-DEALLOCATE(ZP_SFU     )
-DEALLOCATE(ZP_SFV     )
-DEALLOCATE(ZP_TSRAD   )
-DEALLOCATE(ZP_DIR_ALB )
-DEALLOCATE(ZP_SCA_ALB )
-DEALLOCATE(ZP_EMIS    )
-DEALLOCATE(ZP_RN      )
-DEALLOCATE(ZP_H       )
-DEALLOCATE(ZP_LE      )
-DEALLOCATE(ZP_GFLUX   )
-DEALLOCATE(ZP_T2M     )
-DEALLOCATE(ZP_Q2M     )
-DEALLOCATE(ZP_HU2M     )
-DEALLOCATE(ZP_ZON10M  )
-DEALLOCATE(ZP_MER10M  )
-
-DEALLOCATE(ZP_PEW_A_COEF  )
-DEALLOCATE(ZP_PEW_B_COEF  )
-DEALLOCATE(ZP_PET_A_COEF  )
-DEALLOCATE(ZP_PEQ_A_COEF  )
-DEALLOCATE(ZP_PET_B_COEF  )
-DEALLOCATE(ZP_PEQ_B_COEF  )
-!
-END SUBROUTINE UNSHAPE_SURF
-!==================================================================================
-!
-END SUBROUTINE GROUND_PARAM_n
diff --git a/src/ARCH_SRC/CPL_WAVE/MNH/ini_modeln.f90 b/src/ARCH_SRC/CPL_WAVE/MNH/ini_modeln.f90
deleted file mode 100644
index 50ae95c4c..000000000
--- a/src/ARCH_SRC/CPL_WAVE/MNH/ini_modeln.f90
+++ /dev/null
@@ -1,2314 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
-!     #######################
-      MODULE MODI_INI_MODEL_n
-!     #######################
-!
-INTERFACE
-!
-       SUBROUTINE INI_MODEL_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD)
-!
-       INTEGER, INTENT(IN)              :: KMI      ! Model index 
-       CHARACTER (LEN=*), INTENT(IN)    :: HLUOUT   ! name for output-listing
-       !  of nested models
-       CHARACTER (LEN=28), INTENT(IN)   :: HINIFILE ! name of
-       CHARACTER (LEN=28), INTENT(IN)   :: HINIFILEPGD
-!
-END SUBROUTINE INI_MODEL_n
-!
-END INTERFACE
-!
-END MODULE MODI_INI_MODEL_n
-!     ######################################################
-      SUBROUTINE INI_MODEL_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD)
-!     ######################################################
-!
-!!****  *INI_MODEL_n* - routine to initialize the nested model _n
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to initialize the variables
-!     of the nested model _n.
-!
-!!**  METHOD
-!!    ------
-!!      The initialization of the model _n is performed as follows :
-!!       - Memory for arrays are then allocated :
-!!            * If  turbulence kinetic energy variable is not needed
-!!    (CTURB='NONE'),  XTKET, XTKEM and XTKES are zero-size arrays.
-!!            * If  dissipation of TKE variable is not needed
-!!    (CTURBLEN /='KEPS'),  XEPST, XEPSM and XREPSS are zero-size arrays.
-!!            * Memory for mixing ratio arrays is allocated according to the
-!!     value of logicals LUSERn (the number NRR of moist variables is deduced).
-!!            * The latitude (XLAT), longitude (XLON) and map factor (XMAP)
-!!     arrays are zero-size arrays if Cartesian geometry (LCARTESIAN=.TRUE.)
-!!            * Memory for reference state without orography ( XRHODREFZ and
-!!     XTHVREFZ) is only allocated in INI_MODEL1
-!!            * The horizontal Coriolis parameters (XCORIOX and XCORIOY) arrays
-!!     are  zero-size arrays if thinshell approximation (LTHINSHELL=.TRUE.)
-!!            * The Curvature coefficients (XCURVX and XCURVY) arrays
-!!     are zero-size arrays if Cartesian geometry (LCARTESIAN=.TRUE.)
-!!            * Memory for the Jacobian (ZJ) local array is allocated
-!!     (This variable is computed in SET_GRID and used in SET_REF).
-!!       - The spatial and temporal grid variables are initialized by SET_GRID.
-!!       - The metric coefficients are computed by METRICS (they are using in
-!!     the SET-REF call).
-!!       - The prognostic variables and are read in initial
-!!    LFIFM file (in READ_FIELD)
-!!       - The reference state variables  are initialized by SET_REF.
-!!       - The temporal indexes of the outputs are computed by SET_OUTPUT_TIMES
-!!       - The large scale sources are computed in case of coupling case by
-!!    INI_CPL.
-!!       - The initialization of the parameters needed for the dynamics
-!!         of the model n is realized in INI_DYNAMICS.
-!!       - Then the initial file (DESFM+LFIFM files) is closed by FMCLOS.
-!!       - The initialization of the parameters needed for the ECMWF radiation
-!!         code is realized in INI_RADIATIONS.
-!!       - The contents of the scalar variables are overwritten by
-!!         the chemistry initialization subroutine CH_INIT_FIELDn when
-!!         the flags LUSECHEM and LCH_INIT_FIELD are set to TRUE.
-!!         This allows easy initialization of the chemical fields at a
-!!         restart of the model.
-!!
-!!    EXTERNAL
-!!    --------
-!!      FMLOOK      : to retrieve a logical unit number associated with a file
-!!      FMREAD      : to read a LFIFM file
-!!      FMFREE      : to release a logical unit number
-!!      SET_DIM     : to initialize dimensions
-!!      SET_GRID    : to initialize grid
-!!      METRICS     : to compute metric coefficients
-!!      READ_FIELD  : to initialize field
-!!      FMCLOS      : to close a FM-file
-!!      SET_REF     : to initialize reference state for anelastic approximation
-!!      INI_DYNAMICS: to initialize parameters for the dynamics
-!!      INI_TKE_EPS : to initialize the TKE 
-!!      SET_DIRCOS  : to compute the director cosinus of the orography
-!!      INI_RADIATIONS : to initialize radiation computations
-!!      CH_INIT_CCS: to initialize the chemical core system
-!!      CH_INIT_FIELDn: to (re)initialize the scalar variables
-!!      INI_DEEP_CONVECTION : to initialize the deep convection scheme
-!!      CLEANLIST_ll : deaalocate a list
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!      Module MODD_PARAMETERS : contains declaration of parameter variables
-!!         JPHEXT : Horizontal external points number
-!!         JPVEXT : Vertical external points number
-!!
-!!      Module MODD_MODD_DYN   : contains declaration of parameters
-!!                               for the dynamics
-!!      Module MODD_CONF       : contains declaration of configuration variables
-!!                               for all models
-!!         NMODEL     : Number of nested models
-!!         NVERB      : Level of informations on output-listing
-!!                          0 for minimum  prints
-!!                          5 for intermediate level of prints
-!!                         10 for maximum  prints
-!!
-!!      Module MODD_REF        : contains declaration of reference state
-!!                               variables for all models
-!!      Module MODD_FIELD_n    : contains declaration of prognostic fields
-!!      Module MODD_LSFIELD_n  : contains declaration of Larger Scale fields
-!!      Module MODD_GRID_n     : contains declaration of spatial grid variables
-!!      Module MODD_TIME_n     : contains declaration of temporal grid variables
-!!      Module MODD_REF_n      : contains declaration of reference state
-!!                               variables
-!!      Module MODD_CURVCOR_n  : contains declaration of curvature and Coriolis
-!!                               variables
-!!      Module MODD_BUDGET     : contains declarations of the budget parameters
-!!      Module MODD_RADIATIONS_n:contains declaration of the variables of the
-!!                               radiation interface scheme
-!!      Module MODD_STAND_ATM  : contains declaration of the 5 standard
-!!                               atmospheres used for the ECMWF-radiation code
-!!      Module MODD_FRC        : contains declaration of the control variables
-!!                               and of the forcing fields
-!!      Module MODD_CH_MNHC_n   : contains the control parameters for chemistry
-!!      Module MODD_DEEP_CONVECTION_n: contains declaration of the variables of
-!!                                     the deep convection scheme
-!!        
-!!        
-!!        
-!!        
-!!      Module MODN_CONF_n     : contains declaration of namelist NAM_CONFn and 
-!!                             uses module MODD_CONF_n (configuration variables)
-!!      Module MODN_LUNIT_n    : contains declaration of namelist NAM_LUNITn and
-!!                             uses module MODD_LUNIT_n (Logical units)
-!!      Module MODN_DYN_n      : contains declaration of namelist NAM_DYNn and
-!!                             uses module MODD_DYN_n (control of dynamics)
-!!      Module MODN_PARAM_n    : contains declaration of namelist NAM_PARAMn and
-!!                             uses module MODD_PARAM_n (control of physical
-!!                             parameterization)
-!!      Module MODN_LBC_n      : contains declaration of namelist NAM_LBCn and 
-!!                             uses module MODD_LBC_n (lateral boundaries)
-!!      Module MODN_TURB_n     : contains declaration of namelist NAM_TURBn and 
-!!                             uses module MODD_TURB_n (turbulence scheme)
-!!      Module MODN_PARAM_RAD_n: contains declaration of namelist NAM_PARAM_RADn
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation (routine INI_MODEL_n)
-!!      
-!!
-!!    AUTHOR
-!!    ------
-!!      V. Ducrocq       * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original     10/06/94
-!!      Modification 17/10/94  (Stein)  For LCORIO
-!!      Modification 20/10/94  (Stein)  For SET_GRID and NAMOUTN
-!!      Modification 26/10/94  (Stein)  Modifications of the namelist names
-!!      Modification 10/11/94  (Lafore) allocatation of tke fields
-!!      Modification 22/11/94  (Stein)  change the READ_FIELDS call ( add
-!!                                      pressure function
-!!      Modification 06/12/94  (Stein)  add the LS fields
-!!                   12/12/94  (Stein)  rename END_INI in INI_DYNAMICS
-!!      Modification 09/01/95  (Stein)  add the turbulence scheme
-!!      Modification Jan 19, 1995 (J. Cuxart) add the TKE initialization
-!!                   Jan 23, 1995 (J. Stein ) remove the condition
-!!                             LTHINSHELL=T LCARTESIAN=T => stop
-!!      Modification Feb 16, 1995 (I.Mallet) add the METRICS call and
-!!                                      change the SET_REF call (add
-!!                                      the lineic mass)
-!!      Modification Mar 10, 1995 (I. Mallet) add the COUPLING initialization
-!!                   June 29,1995 (Ph. Hereil, J. Stein) add the budget init.
-!!      Modification Sept. 1, 1995 (S. Belair) Reading of the surface variables
-!!                                 and parameters for ISBA (i.e., add a
-!!                                 CALL READ_GR_FIELD)
-!!      Modification 18/08/95     (J.P.Lafore)   time step change case
-!!                   25/09/95     (J. Cuxart and J.Stein)   add LES variables
-!!                                and the diachronic file initialization
-!!      Modification Sept 20,1995 (Lafore) coupling for the dry mass Md
-!!      Modification Sept. 12, 1995 (J.-P. Pinty) add the initialization of
-!!                                      the ECMWF radiation code
-!!      Modification Sept. 13, 1995 (J.-P. Pinty) control the allocation of the
-!!                                      arrays of MODD_GR_FIELD_n
-!!      Modification Nove. 17, 1995 (J.Stein) control of the control !! 
-!!                   March 01, 1996 (J. Stein) add the cloud fraction    
-!!                   April 03, 1996 (J. Stein) unify the ISBA and TSZ0 cases
-!!      Modification 13/12/95 (M. Georgelin) add the forcing variables in
-!!                                           the call read_field, and their
-!!                                           allocation.
-!!                   Mai   23, 1996 (J. Stein) allocate XSEA in the TSZ0 case
-!!                   June  11, 1996 (V. Masson) add XSILT and XLAKE of
-!!                                              MODD_GR_FIELD_n
-!!                   August 7, 1996 (K. Suhre)  add (re)initialization of
-!!                                              chemistry
-!!                   Octo. 11, 1996 (J. Stein ) add XSRCT and XSRCM
-!!                   October 8, 1996 (J. Cuxart, E. Sanchez) Moist LES diagnostics
-!!                                     and control on TKE initialization.
-!!      Modification 19/12/96 (J.-P. Pinty) add the ice parameterization and
-!!                                          the precipitation fields
-!!      Modification 11/01/97 (J.-P. Pinty) add the deep convection
-!!                   Nov.   1, 1996 (V. Masson) Read the vertical grid kind
-!!                   Nov.  20, 1996 (V. Masson) control of convection calling time
-!!                   July  16, 1996 (J.P.Lafore) update of EXSEG file reading
-!!                   Oct.  08, 1996 (J.P.Lafore, V.Masson)
-!!                                       MY_NAME and DAD_NAME reading and check
-!!                   Oct.  30, 1996 (J.P.Lafore) resolution ratio reading for nesting
-!!                                       and Bikhardt interpolation coef. initialization
-!!                   Nov.  22, 1996 (J.P.Lafore) allocation of LS sources for nesting
-!!                   Feb.  26, 1997 (J.P.Lafore) allocation of "surfacic" LS fields
-!!                   March 10, 1997 (J.P.Lafore) forcing only for model 1
-!!                   June  22, 1997 (J. Stein)   add the absolute pressure
-!!                   July  09, 1997 (V. Masson)  add directional z0 and SSO
-!!                   Aug.  18, 1997 (V. Masson)  consistency between storage
-!!                                               type and CCONF
-!!                   Dec.  22, 1997 (J. Stein)   add the LS field spawning
-!!                   Jan.  24, 1998 (P.Bechtold) change MODD_FRC and MODD_DEEP_CONVECTION
-!!                   Dec.  24, 1997 (V.Masson)   directional z0 parameters
-!!                   Aug.  13, 1998 (V. Ducrocq P Jabouille)   //
-!!                   Mai.  26, 1998 (J. Stein)   remove NXEND,NYEND
-!!                   Feb.   1, 1999 (J. Stein)   compute the Bikhardt
-!!                                       interpolation coeff. before the call to set_grid
-!!                   April  5, 1999 (V. Ducrocq) change the DXRATIO_ALL init.
-!!                   April  12, 1999 (J. Stein)  cleaning + INI_SPAWN_LS
-!!                   Apr.   7, 1999 (P Jabouille) store the metric coefficients
-!!                                                in modd_metrics_n
-!!                   Jui.   15,1999 (P Jabouille) split the routines in two parts
-!!                   Jan.   04,2000 (V. Masson)   removes the TSZ0 case
-!!                   Apr.   15,2000 (P Jabouille) parallelization of grid nesting
-!!                   Aug.   20,2000 (J Stein    ) tranpose XBFY
-!!                   Jui    01,2000 (F.solmon )   adapatation for patch approach
-!!                   Jun.   15,2000 (J.-P. Pinty) add C2R2 initialization
-!!                   Nov.  15,2000 (V.Masson) use of ini_modeln in prep_real_case
-!!                   Nov.  15,2000 (V.Masson) call of LES routines
-!!                   Nov.  15,2000 (V.Masson) aircraft and balloon initialization routines
-!!                   Jan.  22,2001 (D.Gazen) update_nsv set NSV_* var. for current model
-!!                   Mar.  04,2002 (V.Ducrocq) initialization to temporal series
-!!                   Mar.  15,2002 (F.Solmon) modification of ini_radiation interface
-!!                   Nov.  29,2002 (JP Pinty) add C3R5, ICE2, ICE4, ELEC
-!!                   Jan.  2004    (V.Masson) externalization of surface
-!!                   May   2006    Remove KEPS
-!!                   Apr.  2010    (M. Leriche) add pH for aqueous phase chemistry
-!!                   Jul.  2010    (M. Leriche) add Ice phase chemistry
-!!                   Oct.  2010  (J.Escobar) check if local domain not to small for NRIMX NRIMY
-!!                   Nov.  2010  (J.Escobar) PGI BUG , add SIZE(CSV) to init_ground routine
-!!                   Nov.  2009    (C. Barthe) add call to INI_ELEC_n
-!!                   Mar.  2010    (M. Chong) add small ions 
-!!                   Apr.  2011    (M. Chong) correction of RESTART (ELEC)
-!!                   June  2011  (B.Aouizerats) Prognostic aerosols
-!!                   June  2011  (P.Aumond) Drag of the vegetation  
-!!                                         + Mean fields
-!!                   July  2013  (Bosseur & Filippi) Adds Forefire
-!!                   P. Tulet      Nov 2014 accumulated moles of aqueous species that fall at the surface   
-!!                   JAn.  2015  (F. Brosse) bug in allocate XACPRAQ
-!!                   Dec 2014 (C.Lac) : For reproducibility START/RESTA
-!!                   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
-!!                   V. Masson     Feb 2015 replaces, for aerosols, cover fractions by sea, town, bare soil fractions
-!!                   J.Escobar : 19/04/2016 : Pb IOZ/NETCDF , missing OPARALLELIO=.FALSE. for PGD files
-!!                   J.Escobar : 01/06/2016 : correct check limit of NRIM versus local subdomain size IDIM
-!!                   06/2016     (G.Delautier) phasage surfex 8
-!!                   Modification    01/2016  (JP Pinty) Add LIMA
-!!                   Aug.  2016 (J.Pianezze) Add SFX_OASIS_READ_NAM function from SurfEx
-!!                   M.Leriche 2016 Chemistry
-!!                   10/2016 M.Mazoyer New KHKO output fields
-!!                      10/2016 (C.Lac) Add max values
-!!       F. Brosse   Oct.  2016 add prod/loss terms computation for chemistry
-!!                   M.Leriche 2016 Chemistry
-!!                   M.Leriche 10/02/17 prevent negative values in LBX(Y)SVS
-!!                   M.Leriche 01/07/2017 Add DIAG chimical surface fluxes
-!!                   09/2017 Q.Rodier add LTEND_UV_FRC
-!---------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-#ifdef CPLOASIS
-  USE MODI_SFX_OASIS_READ_NAM
-#endif
-!
-USE MODE_ll
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-USE MODE_IO_ll
-USE MODE_FM
-USE MODE_FMREAD
-USE MODE_TYPE_ZDIFFU
-!
-USE MODD_NSV
-USE MODD_PARAMETERS
-USE MODD_CST
-USE MODD_CONF
-USE MODD_DUST
-USE MODD_DYN
-USE MODD_DYNZD
-USE MODD_FRC
-USE MODD_REF
-USE MODD_SERIES, ONLY: LSERIES
-USE MODD_TIME
-USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD, CTURBLEN_CLOUD,XCEI
-USE MODD_NESTING
-USE MODD_PASPOL
-USE MODD_DRAGTREE
-USE MODD_METRICS_n
-USE MODD_DYN_n
-USE MODD_DYNZD_n
-USE MODD_FIELD_n
-USE MODD_PAST_FIELD_n
-USE MODD_MEAN_FIELD_n
-USE MODD_MEAN_FIELD
-USE MODD_ADV_n
-USE MODD_LSFIELD_n
-USE MODD_GRID_n
-USE MODD_GRID, ONLY: XLONORI,XLATORI
-USE MODD_TIME_n
-USE MODD_REF_n
-USE MODD_FRC_n
-USE MODD_CURVCOR_n
-USE MODD_DIM_n
-USE MODD_BUDGET
-USE MODD_RADIATIONS_n
-USE MODD_SHADOWS_n
-USE MODD_PARAM_RAD_n,   ONLY : CLW, CAER, CAOP     
-USE MODD_VAR_ll,        ONLY : IP
-!
-USE MODD_STAND_ATM,     ONLY : XSTROATM, XSMLSATM, XSMLWATM, XSPOSATM, XSPOWATM
-USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, LCH_INIT_FIELD, &
-                           CCHEM_INPUT_FILE, LCH_CONV_LINOX,             &
-                           XCH_TUV_DOBNEW, LCH_PH, CSPEC_BUDGET, CSPEC_PRODLOSS
-USE MODD_CH_PH_n
-USE MODD_CH_AEROSOL, ONLY : LORILAM
-USE MODD_CH_AERO_n,  ONLY : XSOLORG,XMI
-USE MODD_CH_FLX_n,  ONLY : XCHFLX
-USE MODD_PARAM_KAFR_n
-USE MODD_PARAM_MFSHALL_n
-USE MODD_DEEP_CONVECTION_n
-USE MODD_OUT_n
-USE MODD_BIKHARDT_n
-USE MODD_NUDGING_n, ONLY : LNUDGING
-USE MODD_DIAG_FLAG, ONLY : LCHEMDIAG, CSPEC_BU_DIAG
-USE MODD_CLOUD_MF_n
-USE MODD_NSV
-!
-USE MODD_ELEC_n, ONLY : XCION_POS_FW, XCION_NEG_FW
-
-USE MODD_LUNIT_n
-USE MODD_CONF_n
-USE MODD_GET_n
-USE MODD_TURB_n
-USE MODD_CTURB
-USE MODD_LBC_n
-USE MODD_PASPOL_n
-!
-!
-USE MODI_GATHER_ll
-USE MODI_INI_BUDGET
-USE MODI_INI_SW_SETUP
-USE MODI_SET_GRID
-USE MODI_METRICS
-USE MODI_UPDATE_METRICS
-USE MODI_READ_FIELD
-USE MODI_SET_REF
-USE MODI_INI_DYNAMICS
-USE MODI_INI_TKE_EPS
-USE MODI_SET_DIRCOS
-USE MODI_INI_CPL
-USE MODI_INI_RADIATIONS
-USE MODI_INI_RADIATIONS_ECMWF
-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
-USE MODI_INI_AIRCRAFT_BALLOON
-USE MODI_UPDATE_NSV
-USE MODI_INI_ELEC_n
-USE MODI_INI_MICRO_n
-USE MODI_INI_LG
-USE MODI_SURF_SOLAR_GEOM
-USE MODI_SUNPOS_n
-USE MODI_INI_SURF_RAD
-USE MODI_MNHGET_SURF_PARAM_n
-USE MODI_MNHREAD_ZS_DUMMY_n
-USE MODI_INIT_GROUND_PARAM_n
-USE MODI_INI_AIRCRAFT_BALLOON
-USE MODI_INI_SURFSTATION_n
-USE MODI_INI_POSPROFILER_n
-USE MODI_CH_INIT_JVALUES
-USE MODI_CH_AER_MOD_INIT
-!
-USE MODD_PARAM_n
-USE MODE_MODELN_HANDLER
-USE MODE_SPLITTINGZ_ll , ONLY : GET_DIM_EXTZ_ll
-
-USE MODI_TEMPORAL_DIST
-
-USE MODI_INI_AEROSET1
-USE MODI_INI_AEROSET2
-USE MODI_INI_AEROSET3
-USE MODI_INI_AEROSET4
-USE MODI_INI_AEROSET5
-USE MODI_INI_AEROSET6
-!
-#ifdef MNH_FOREFIRE
-USE MODD_FOREFIRE
-USE MODD_FOREFIRE_n
-USE MODI_INIT_FOREFIRE_n
-#endif
-USE MODI_INI_LES_N
-USE MODD_MNH_SURFEX_n
-USE MODI_INI_SERIES_N
-! Eddy fluxes  ! Ajout PP
-USE MODD_DEF_EDDY_FLUX_n   ! for VT and WT fluxes
-USE MODD_DEF_EDDYUV_FLUX_n ! FOR UV
-USE MODD_LATZ_EDFLX
-USE MODD_ADVFRC_n
-USE MODD_RELFRC_n
-USE MODD_2D_FRC
-!
-USE MODD_CH_PRODLOSSTOT_n
-USE MODI_CH_INIT_PRODLOSSTOT_n
-!
-USE MODD_CH_BUDGET_n
-USE MODI_CH_INIT_BUDGET_n
-USE MODD_CH_M9_n, ONLY:NNONZEROTERMS
-!
-USE MODE_MPPDB
-USE MODI_INIT_AEROSOL_PROPERTIES
-!
-IMPLICIT NONE
-!
-!*       0.1   declarations of arguments
-!
-!
-INTEGER, INTENT(IN)              :: KMI      ! Model Index 
-
-CHARACTER (LEN=*), INTENT(IN)    :: HLUOUT   ! name for output-listing
-                                             !  of nested models
-CHARACTER (LEN=28),  INTENT(IN)   :: HINIFILE ! name of
-                                             ! the initial file
-CHARACTER (LEN=28), INTENT(IN)   :: HINIFILEPGD       
-!
-!*       0.2   declarations of local variables
-!
-INTEGER             :: JSV     ! Loop index
-INTEGER             :: IRESP   ! Return code of FM routines
-INTEGER             :: ININAR  ! File management variable
-INTEGER             :: IMASDEV ! version of MESOHN in the input file
-INTEGER             :: ILUOUT  ! Logical unit number of output-listing
-CHARACTER(LEN=2)    :: YDIR   ! Type  of the data field in LFIFM file
-INTEGER             :: IGRID   ! C-grid indicator in LFIFM file
-INTEGER             :: ILENCH  ! Length of comment string in LFIFM file
-CHARACTER (LEN=100) :: YCOMMENT!comment string in LFIFM file
-CHARACTER (LEN=LEN_HREC)  :: YRECFM  ! Name of the desired field in LFIFM file
-INTEGER             :: IIU     ! Upper dimension in x direction (local)
-INTEGER             :: IJU     ! Upper dimension in y direction (local)
-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
-                                      !  which must be communicated in INIT
-TYPE(LIST_ll), POINTER :: TZINITHALO3D_ll ! pointer for the list of 3D fields
-                                      !  which must be communicated in INIT
-!
-INTEGER :: IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU     ! dimensions of the
-INTEGER :: IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2       ! West-east LB arrays
-INTEGER :: IISIZEYF,IJSIZEYF,IISIZEYFV,IJSIZEYFV     ! dimensions of the
-INTEGER :: IISIZEY4,IJSIZEY4,IISIZEY2,IJSIZEY2       ! North-south LB arrays
-INTEGER :: IINFO_ll  ! Return code of //routines
-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 :: ZSEA   ! sea fraction
-REAL, DIMENSION(:,:),   ALLOCATABLE :: ZTOWN  ! town fraction
-REAL, DIMENSION(:,:),   ALLOCATABLE :: ZBARE  ! bare soil fraction
-!
-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
-!
-!
-INTEGER, DIMENSION(:,:),ALLOCATABLE :: IINDEX   ! indices of non-zero terms
-INTEGER, DIMENSION(:),ALLOCATABLE   :: IIND
-INTEGER                             :: JM
-!
-!------------------------------------------
-! Dummy pointers needed to correct an ifort Bug
-REAL, DIMENSION(:), POINTER :: DPTR_XZHAT
-REAL, DIMENSION(:), POINTER :: DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4
-REAL, DIMENSION(:), POINTER :: DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4
-REAL, DIMENSION(:), POINTER :: DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4
-REAL, DIMENSION(:), POINTER :: DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4
-CHARACTER(LEN=4), DIMENSION(:), POINTER :: DPTR_CLBCX,DPTR_CLBCY
-INTEGER, DIMENSION(:,:,:), POINTER :: DPTR_NKLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_NKLIN_LBXV,DPTR_NKLIN_LBYV
-INTEGER, DIMENSION(:,:,:), POINTER :: DPTR_NKLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_NKLIN_LBXM,DPTR_NKLIN_LBYM
-REAL, DIMENSION(:,:,:), POINTER :: DPTR_XCOEFLIN_LBXU,DPTR_XCOEFLIN_LBYU
-REAL, DIMENSION(:,:,:), POINTER :: DPTR_XCOEFLIN_LBXV,DPTR_XCOEFLIN_LBYV
-REAL, DIMENSION(:,:,:), POINTER :: DPTR_XCOEFLIN_LBXW,DPTR_XCOEFLIN_LBYW
-REAL, DIMENSION(:,:,:), POINTER :: DPTR_XCOEFLIN_LBXM,DPTR_XCOEFLIN_LBYM
-REAL, DIMENSION(:,:,:),   POINTER :: DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM
-REAL, DIMENSION(:,:,:),   POINTER :: DPTR_XLBXWM,DPTR_XLBYWM,DPTR_XLBXTHM,DPTR_XLBYTHM
-REAL, DIMENSION(:,:,:),   POINTER :: DPTR_XLBXTKEM,DPTR_XLBYTKEM
-REAL, DIMENSION(:,:,:,:),   POINTER :: DPTR_XLBXSVM,DPTR_XLBYSVM                
-REAL, DIMENSION(:,:,:,:), POINTER :: DPTR_XLBXRM,DPTR_XLBYRM
-REAL, DIMENSION(:,:,:),   POINTER ::  DPTR_XZZ
-REAL, DIMENSION(:,:,:), POINTER ::   DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM
-REAL, DIMENSION(:,:,:), POINTER ::   DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS
-!
-INTEGER                         ::  IIB,IJB,IIE,IJE,IDIMX,IDIMY
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    PROLOGUE
-!              --------
-! Compute relaxation coefficients without changing INI_DYNAMICS nor RELAXDEF
-!
-IF (CCLOUD == 'LIMA') THEN
-  LHORELAX_SVC1R3=LHORELAX_SVLIMA
-END IF
-!
-!
-NULLIFY(TZINITHALO2D_ll)
-NULLIFY(TZINITHALO3D_ll)
-!
-!*       1.    RETRIEVE LOGICAL UNIT NUMBER
-!              ----------------------------
-!
-CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
-CLUOUT = HLUOUT
-CINIFILE=HINIFILE
-CINIFILEPGD=HINIFILEPGD
-!
-CALL FMREAD(HINIFILE,'MASDEV',HLUOUT,'--',IMASDEV,IGRID,ILENCH,YCOMMENT,IRESP)
-!-------------------------------------------------------------------------------
-!
-!*       2.   END OF READING
-!             --------------
-!*       2.1  Read number of forcing fields
-!
-IF (LFORCING) THEN ! Retrieve the number of time-dependent forcings.
-  YRECFM='FRC'
-  YDIR='--'
-  CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NFRC,IGRID,ILENCH,YCOMMENT,IRESP)
-  IF ( (IRESP /= 0) .OR. (NFRC <=0) ) THEN
-    WRITE(ILUOUT,'(A/A)') &
-     "INI_MODEL_n ERROR: you want to read forcing variables from FMfile", &
-     "                   but no fields have been found by FMREAD"
-!callabortstop
-    CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP 1
-  END IF
-END IF
-!
-! Modif PP for time evolving adv forcing
-  IF ( L2D_ADV_FRC ) THEN ! Retrieve the number of time-dependent forcings.
-    WRITE(ILUOUT,FMT=*) "INI_MODEL_n ENTER ADV_FORCING"
-    YRECFM='NADVFRC1'
-    YDIR='--'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NADVFRC,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF ( (IRESP /= 0) .OR. (NADVFRC <=0) ) THEN
-      WRITE(ILUOUT,'(A/A)') &
-      "INI_MODELn ERROR: you want to read forcing ADV variables from FMfile", &
-      "                   but no fields have been found by FMREAD"
-    !callabortstop
-    CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-      STOP 1
-    END IF
-    WRITE(ILUOUT,*) 'NADVFRC = ', NADVFRC
-END IF
-!
-IF ( L2D_REL_FRC ) THEN ! Retrieve the number of time-dependent forcings.
-    WRITE(ILUOUT,FMT=*) "INI_MODEL_n ENTER REL_FORCING"
-    YRECFM='NRELFRC1'
-    YDIR='--'
-    CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NRELFRC,IGRID,ILENCH,YCOMMENT,IRESP)
-    IF ( (IRESP /= 0) .OR. (NRELFRC <=0) ) THEN
-      WRITE(ILUOUT,'(A/A)') &
-      "INI_MODELn ERROR: you want to read forcing REL variables from FMfile", &
-      "                   but no fields have been found by FMREAD"
-    !callabortstop
-    CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-      STOP 1
-    END IF
-    WRITE(ILUOUT,*) 'NRELFRC = ', NRELFRC
-END IF
-!*       2.2  Checks the position of vertical absorbing layer
-!
-IKU=NKMAX+2*JPVEXT
-!
-YRECFM = 'ZHAT'
-ALLOCATE(XZHAT(IKU))
- YDIR='--'
-CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XZHAT,IGRID,ILENCH,YCOMMENT,IRESP)
-IF (XALZBOT>=XZHAT(IKU) .AND. LVE_RELAX) THEN
-  WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR: you want to use vertical relaxation"
-  WRITE(ILUOUT,FMT=*) "                  but bottom of layer XALZBOT(",XALZBOT,")"
-  WRITE(ILUOUT,FMT=*) "                  is upper than model top    (",XZHAT(IKU),")"
-!callabortstop
-  CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
-END IF
-IF (LVE_RELAX) THEN
- IF (XALZBOT>=XZHAT(IKU-4) ) THEN
-  WRITE(ILUOUT,FMT=*) "INI_MODEL_n WARNING: you want to use vertical relaxation"
-  WRITE(ILUOUT,FMT=*) "                    but the layer defined by XALZBOT(",XALZBOT,")"
-  WRITE(ILUOUT,FMT=*) "                    contains less than 5 model levels"
- END IF
-END IF
-DEALLOCATE(XZHAT)
-!
-!*       2.3  Compute sizes of arrays of the extended sub-domain
-!
-CALL GET_DIM_EXT_ll('B',IIU,IJU)
-IIU_ll=NIMAX_ll + 2 * JPHEXT
-IJU_ll=NJMAX_ll + 2 * JPHEXT
-! initialize NIMAX and NJMAX for not updated versions regarding the parallelism
-! spawning,...
-CALL GET_DIM_PHYS_ll('B',NIMAX,NJMAX)
-!
-CALL GET_INDICE_ll( IIB,IJB,IIE,IJE)
-IDIMX = IIE - IIB + 1
-IDIMY = IJE - IJB + 1
-!
-NRR=0
-NRRL=0
-NRRI=0
-IF (CGETRVT /= 'SKIP' ) THEN
-  NRR = NRR+1
-END IF
-IF (CGETRCT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRL = NRRL+1
-END IF
-IF (CGETRRT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRL = NRRL+1
-END IF
-IF (CGETRIT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRI = NRRI+1
-END IF
-IF (CGETRST /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRI = NRRI+1
-END IF
-IF (CGETRGT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRI = NRRI+1
-END IF
-IF (CGETRHT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRI = NRRI+1
-END IF
-IF (NVERB >= 5) THEN
-  WRITE (UNIT=ILUOUT,FMT='("THERE ARE ",I2," WATER VARIABLES")') NRR
-  WRITE (UNIT=ILUOUT,FMT='("THERE ARE ",I2," LIQUID VARIABLES")') NRRL
-  WRITE (UNIT=ILUOUT,FMT='("THERE ARE ",I2," SOLID VARIABLES")') NRRI
-END IF
-!
-!*       2.3  Update NSV and floating indices for the current model
-!
-! 
-CALL UPDATE_NSV(KMI) 
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.    ALLOCATE  MEMORY
-!              -----------------
-!
-!*       3.1   Module MODD_FIELD_n
-!
-IF (LMEAN_FIELD) THEN
-!
-  MEAN_COUNT = 0
-!
-  ALLOCATE(XUM_MEAN(IIU,IJU,IKU))      ; XUM_MEAN  = 0.0
-  ALLOCATE(XVM_MEAN(IIU,IJU,IKU))      ; XVM_MEAN  = 0.0
-  ALLOCATE(XWM_MEAN(IIU,IJU,IKU))      ; XWM_MEAN  = 0.0
-  ALLOCATE(XTHM_MEAN(IIU,IJU,IKU))     ; XTHM_MEAN = 0.0
-  ALLOCATE(XTEMPM_MEAN(IIU,IJU,IKU))   ; XTEMPM_MEAN = 0.0
-  IF (CTURB/='NONE') THEN
-     ALLOCATE(XTKEM_MEAN(IIU,IJU,IKU))    
-     XTKEM_MEAN = 0.0
-  END IF
-  ALLOCATE(XPABSM_MEAN(IIU,IJU,IKU))   ; XPABSM_MEAN = 0.0
-!
-  ALLOCATE(XU2_MEAN(IIU,IJU,IKU))      ; XU2_MEAN  = 0.0
-  ALLOCATE(XV2_MEAN(IIU,IJU,IKU))      ; XV2_MEAN  = 0.0
-  ALLOCATE(XW2_MEAN(IIU,IJU,IKU))      ; XW2_MEAN  = 0.0
-  ALLOCATE(XTH2_MEAN(IIU,IJU,IKU))     ; XTH2_MEAN = 0.0
-  ALLOCATE(XTEMP2_MEAN(IIU,IJU,IKU))   ; XTEMP2_MEAN = 0.0
-  ALLOCATE(XPABS2_MEAN(IIU,IJU,IKU))   ; XPABS2_MEAN = 0.0
-!
-  ALLOCATE(XUM_MAX(IIU,IJU,IKU))      ; XUM_MAX  = -1.E20
-  ALLOCATE(XVM_MAX(IIU,IJU,IKU))      ; XVM_MAX  = -1.E20
-  ALLOCATE(XWM_MAX(IIU,IJU,IKU))      ; XWM_MAX  = -1.E20
-  ALLOCATE(XTHM_MAX(IIU,IJU,IKU))     ; XTHM_MAX = 0.0
-  ALLOCATE(XTEMPM_MAX(IIU,IJU,IKU))   ; XTEMPM_MAX = 0.0
-  IF (CTURB/='NONE') THEN
-     ALLOCATE(XTKEM_MAX(IIU,IJU,IKU))
-     XTKEM_MAX = 0.0
-  END IF
-  ALLOCATE(XPABSM_MAX(IIU,IJU,IKU))   ; XPABSM_MAX = 0.0
-END IF
-!
-IF ((CUVW_ADV_SCHEME(1:3)=='CEN') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN
-  ALLOCATE(XUM(IIU,IJU,IKU))
-  ALLOCATE(XVM(IIU,IJU,IKU))
-  ALLOCATE(XWM(IIU,IJU,IKU))
-  ALLOCATE(XDUM(IIU,IJU,IKU))
-  ALLOCATE(XDVM(IIU,IJU,IKU))
-  ALLOCATE(XDWM(IIU,IJU,IKU))
-  IF (CCONF == 'START') THEN
-    XUM  = 0.0
-    XVM  = 0.0
-    XWM  = 0.0
-    XDUM  = 0.0
-    XDVM  = 0.0
-    XDWM  = 0.0
-  END IF
-END IF
-!
-ALLOCATE(XUT(IIU,IJU,IKU))      ; XUT  = 0.0
-ALLOCATE(XVT(IIU,IJU,IKU))      ; XVT  = 0.0
-ALLOCATE(XWT(IIU,IJU,IKU))      ; XWT  = 0.0
-ALLOCATE(XTHT(IIU,IJU,IKU))     ; XTHT = 0.0
-ALLOCATE(XRUS(IIU,IJU,IKU))     ; XRUS = 0.0
-ALLOCATE(XRVS(IIU,IJU,IKU))     ; XRVS = 0.0
-ALLOCATE(XRWS(IIU,IJU,IKU))     ; XRWS = 0.0
-ALLOCATE(XRUS_PRES(IIU,IJU,IKU)); XRUS_PRES = 0.0
-ALLOCATE(XRVS_PRES(IIU,IJU,IKU)); XRVS_PRES = 0.0
-ALLOCATE(XRWS_PRES(IIU,IJU,IKU)); XRWS_PRES = 0.0
-ALLOCATE(XRTHS(IIU,IJU,IKU))    ; XRTHS = 0.0
-ALLOCATE(XRTHS_CLD(IIU,IJU,IKU)); XRTHS_CLD = 0.0
-IF (CTURB /= 'NONE') THEN
-  ALLOCATE(XTKET(IIU,IJU,IKU))
-  ALLOCATE(XRTKES(IIU,IJU,IKU))
-  ALLOCATE(XRTKEMS(IIU,IJU,IKU)); XRTKEMS = 0.0
-  ALLOCATE(XWTHVMF(IIU,IJU,IKU))
-  ALLOCATE(XDYP(IIU,IJU,IKU))
-  ALLOCATE(XTHP(IIU,IJU,IKU))
-  ALLOCATE(XTR(IIU,IJU,IKU))
-  ALLOCATE(XDISS(IIU,IJU,IKU))
-  ALLOCATE(XLEM(IIU,IJU,IKU))
-  XTKEMIN=XKEMIN
-ELSE
-  ALLOCATE(XTKET(0,0,0))
-  ALLOCATE(XRTKES(0,0,0))
-  ALLOCATE(XWTHVMF(0,0,0))
-  ALLOCATE(XDYP(0,0,0))
-  ALLOCATE(XTHP(0,0,0))
-  ALLOCATE(XTR(0,0,0))
-  ALLOCATE(XDISS(0,0,0))
-  ALLOCATE(XLEM(0,0,0))
-END IF
-IF (CTOM == 'TM06') THEN
-  ALLOCATE(XBL_DEPTH(IIU,IJU))
-ELSE
-  ALLOCATE(XBL_DEPTH(0,0))
-END IF
-IF (LRMC01) THEN
-  ALLOCATE(XSBL_DEPTH(IIU,IJU))
-ELSE
-  ALLOCATE(XSBL_DEPTH(0,0))
-END IF
-!
-ALLOCATE(XPABSM(IIU,IJU,IKU)) ; XPABSM = 0.0
-ALLOCATE(XPABST(IIU,IJU,IKU)) ; XPABST = 0.0
-!
-ALLOCATE(XRT(IIU,IJU,IKU,NRR)) ;     XRT = 0.0
-ALLOCATE(XRRS(IIU,IJU,IKU,NRR)) ;    XRRS = 0.0
-ALLOCATE(XRRS_CLD(IIU,IJU,IKU,NRR)); XRRS_CLD = 0.0
-!
-IF (CTURB /= 'NONE' .AND. NRR>1) THEN
-  ALLOCATE(XSRCT(IIU,IJU,IKU))
-  ALLOCATE(XSIGS(IIU,IJU,IKU))
-ELSE
-  ALLOCATE(XSRCT(0,0,0))
-  ALLOCATE(XSIGS(0,0,0))
-END IF
-!
-IF (NRR>1) THEN
-  ALLOCATE(XCLDFR(IIU,IJU,IKU))
-ELSE
-  ALLOCATE(XCLDFR(0,0,0))
-END IF
-!
-ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) ;     XSVT  = 0.
-ALLOCATE(XRSVS(IIU,IJU,IKU,NSV));     XRSVS = 0.
-ALLOCATE(XRSVS_CLD(IIU,IJU,IKU,NSV)); XRSVS_CLD = 0.0
-!
-IF (LPASPOL) THEN
-  ALLOCATE( XATC(IIU,IJU,IKU,NSV_PP) )
-  XATC = 0.
-             ELSE
-  ALLOCATE( XATC(0,0,0,0))
-  XATC = 0.
-END IF
-!
-!*       3.2   Module MODD_GRID_n and MODD_METRICS_n
-!
-IF (LCARTESIAN) THEN
-  ALLOCATE(XLON(0,0))
-  ALLOCATE(XLAT(0,0))
-  ALLOCATE(XMAP(0,0))
-ELSE
-  ALLOCATE(XLON(IIU,IJU))
-  ALLOCATE(XLAT(IIU,IJU))
-  ALLOCATE(XMAP(IIU,IJU))
-END IF
-ALLOCATE(XXHAT(IIU))
-ALLOCATE(XDXHAT(IIU))
-ALLOCATE(XYHAT(IJU))
-ALLOCATE(XDYHAT(IJU))
-ALLOCATE(XZS(IIU,IJU))
-ALLOCATE(XZSMT(IIU,IJU))
-ALLOCATE(XZZ(IIU,IJU,IKU))
-ALLOCATE(XZHAT(IKU))
-ALLOCATE(XDIRCOSZW(IIU,IJU))
-ALLOCATE(XDIRCOSXW(IIU,IJU))
-ALLOCATE(XDIRCOSYW(IIU,IJU))
-ALLOCATE(XCOSSLOPE(IIU,IJU))
-ALLOCATE(XSINSLOPE(IIU,IJU))
-!
-ALLOCATE(XDXX(IIU,IJU,IKU))
-ALLOCATE(XDYY(IIU,IJU,IKU))
-ALLOCATE(XDZX(IIU,IJU,IKU))
-ALLOCATE(XDZY(IIU,IJU,IKU))
-ALLOCATE(XDZZ(IIU,IJU,IKU))
-!
-!*       3.3   Modules MODD_REF and  MODD_REF_n
-!
-IF (KMI == 1) THEN
-  ALLOCATE(XRHODREFZ(IKU),XTHVREFZ(IKU))
-END IF
-ALLOCATE(XRHODREF(IIU,IJU,IKU))
-ALLOCATE(XTHVREF(IIU,IJU,IKU))
-ALLOCATE(XEXNREF(IIU,IJU,IKU))
-ALLOCATE(XRHODJ(IIU,IJU,IKU))
-IF (CEQNSYS=='DUR' .AND. LUSERV) THEN
-  ALLOCATE(XRVREF(IIU,IJU,IKU))
-ELSE
-  ALLOCATE(XRVREF(0,0,0))
-END IF
-!
-!*       3.4   Module MODD_CURVCOR_n
-!
-IF (LTHINSHELL) THEN
-  ALLOCATE(XCORIOX(0,0))
-  ALLOCATE(XCORIOY(0,0))
-ELSE
-  ALLOCATE(XCORIOX(IIU,IJU))
-  ALLOCATE(XCORIOY(IIU,IJU))
-END IF
-  ALLOCATE(XCORIOZ(IIU,IJU))
-IF (LCARTESIAN) THEN
-  ALLOCATE(XCURVX(0,0))
-  ALLOCATE(XCURVY(0,0))
-ELSE
-  ALLOCATE(XCURVX(IIU,IJU))
-  ALLOCATE(XCURVY(IIU,IJU))
-END IF
-!
-!*       3.5   Module MODD_DYN_n
-!
-CALL GET_DIM_EXT_ll('Y',IIY,IJY)
-IF (L2D) THEN
-  ALLOCATE(XBFY(IIY,IJY,IKU))
-ELSE
-  ALLOCATE(XBFY(IJY,IIY,IKU)) ! transposition needed by the optimisition of the
-                              ! FFT solver
-END IF
-CALL GET_DIM_EXT_ll('B',IIU_B,IJU_B)
-ALLOCATE(XBFB(IIU_B,IJU_B,IKU))
-CALL GET_DIM_EXTZ_ll('SXP2_YP1_Z',IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll)
-ALLOCATE(XBF_SXP2_YP1_Z(IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll))
-ALLOCATE(XAF(IKU),XCF(IKU))
-ALLOCATE(XTRIGSX(3*IIU_ll))
-ALLOCATE(XTRIGSY(3*IJU_ll))
-ALLOCATE(XRHOM(IKU))
-ALLOCATE(XALK(IKU))
-ALLOCATE(XALKW(IKU))
-ALLOCATE(XALKBAS(IKU))
-ALLOCATE(XALKWBAS(IKU))
-!
-IF ( LHORELAX_UVWTH .OR. LHORELAX_RV .OR.                                  &
-     LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI  .OR. LHORELAX_RS  .OR. &
-     LHORELAX_RG .OR. LHORELAX_RH .OR. LHORELAX_TKE .OR.                   &
-     ANY(LHORELAX_SV) ) THEN
-  ALLOCATE(XKURELAX(IIU,IJU))
-  ALLOCATE(XKVRELAX(IIU,IJU))
-  ALLOCATE(XKWRELAX(IIU,IJU))
-  ALLOCATE(LMASK_RELAX(IIU,IJU))
-ELSE
-  ALLOCATE(XKURELAX(0,0))
-  ALLOCATE(XKVRELAX(0,0))
-  ALLOCATE(XKWRELAX(0,0))
-  ALLOCATE(LMASK_RELAX(0,0))
-END IF
-!
-! Additional fields for truly horizontal diffusion (Module MODD_DYNZD$n)
-IF (LZDIFFU) THEN
-  CALL INIT_TYPE_ZDIFFU_HALO2(XZDIFFU_HALO2)
-ELSE
-  CALL INIT_TYPE_ZDIFFU_HALO2(XZDIFFU_HALO2,0)
-ENDIF
-!
-!*       3.6   Larger Scale variables (Module MODD_LSFIELD$n)
-!
-!
-! upper relaxation part
-!
-ALLOCATE(XLSUM(IIU,IJU,IKU))    ; XLSUM  = 0.0
-ALLOCATE(XLSVM(IIU,IJU,IKU))    ; XLSVM  = 0.0
-ALLOCATE(XLSWM(IIU,IJU,IKU))    ; XLSWM  = 0.0
-ALLOCATE(XLSTHM(IIU,IJU,IKU))   ; XLSTHM = 0.0
-IF ( NRR > 0 ) THEN
-  ALLOCATE(XLSRVM(IIU,IJU,IKU)) ; XLSRVM = 0.0
-ELSE
-  ALLOCATE(XLSRVM(0,0,0))
-END IF
-!
-!  lbc part
-!
-IF ( L1D) THEN                         ! 1D case
-!
-  NSIZELBX_ll=0
-  NSIZELBXU_ll=0
-  NSIZELBY_ll=0
-  NSIZELBYV_ll=0
-  NSIZELBXTKE_ll=0
-  NSIZELBXR_ll=0
-  NSIZELBXSV_ll=0
-  NSIZELBYTKE_ll=0
-  NSIZELBYR_ll=0
-  NSIZELBYSV_ll=0
-  ALLOCATE(XLBXUM(0,0,0))
-  ALLOCATE(XLBYUM(0,0,0))
-  ALLOCATE(XLBXVM(0,0,0))
-  ALLOCATE(XLBYVM(0,0,0))
-  ALLOCATE(XLBXWM(0,0,0))
-  ALLOCATE(XLBYWM(0,0,0))
-  ALLOCATE(XLBXTHM(0,0,0))
-  ALLOCATE(XLBYTHM(0,0,0))
-  ALLOCATE(XLBXTKEM(0,0,0))
-  ALLOCATE(XLBYTKEM(0,0,0))
-  ALLOCATE(XLBXRM(0,0,0,0))
-  ALLOCATE(XLBYRM(0,0,0,0))
-  ALLOCATE(XLBXSVM(0,0,0,0))
-  ALLOCATE(XLBYSVM(0,0,0,0))
-!
-ELSEIF( L2D ) THEN                         ! 2D case
-!
-  NSIZELBY_ll=0
-  NSIZELBYV_ll=0
-  NSIZELBYTKE_ll=0
-  NSIZELBYR_ll=0
-  NSIZELBYSV_ll=0
-  ALLOCATE(XLBYUM(0,0,0))
-  ALLOCATE(XLBYVM(0,0,0))
-  ALLOCATE(XLBYWM(0,0,0))
-  ALLOCATE(XLBYTHM(0,0,0))
-  ALLOCATE(XLBYTKEM(0,0,0))
-  ALLOCATE(XLBYRM(0,0,0,0))
-  ALLOCATE(XLBYSVM(0,0,0,0))
-!
-  CALL GET_SIZEX_LB(HLUOUT,NIMAX_ll,NJMAX_ll,NRIMX,   &
-       IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU,         &
-       IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2)
-!
-  IF ( LHORELAX_UVWTH ) THEN
-    NSIZELBX_ll=2*NRIMX+2*JPHEXT
-    NSIZELBXU_ll=2*NRIMX+2*JPHEXT
-    ALLOCATE(XLBXUM(IISIZEXFU,IJSIZEXFU,IKU))
-    ALLOCATE(XLBXVM(IISIZEXF,IJSIZEXF,IKU))
-    ALLOCATE(XLBXWM(IISIZEXF,IJSIZEXF,IKU))
-    ALLOCATE(XLBXTHM(IISIZEXF,IJSIZEXF,IKU))
-  ELSE
-    NSIZELBX_ll=2*JPHEXT      ! 2
-    NSIZELBXU_ll=2*(JPHEXT+1) ! 4
-    ALLOCATE(XLBXUM(IISIZEX4,IJSIZEX4,IKU))
-    ALLOCATE(XLBXVM(IISIZEX2,IJSIZEX2,IKU))
-    ALLOCATE(XLBXWM(IISIZEX2,IJSIZEX2,IKU))
-    ALLOCATE(XLBXTHM(IISIZEX2,IJSIZEX2,IKU))
-  END IF
-!
-  IF (CTURB /= 'NONE') THEN
-    IF ( LHORELAX_TKE) THEN
-      NSIZELBXTKE_ll=2* NRIMX+2*JPHEXT
-      ALLOCATE(XLBXTKEM(IISIZEXF,IJSIZEXF,IKU))
-    ELSE
-      NSIZELBXTKE_ll=2*JPHEXT  ! 2
-      ALLOCATE(XLBXTKEM(IISIZEX2,IJSIZEX2,IKU))
-    END IF
-  ELSE
-    NSIZELBXTKE_ll=0
-    ALLOCATE(XLBXTKEM(0,0,0))
-  END IF
-  !
-  IF ( NRR > 0 ) THEN
-    IF (LHORELAX_RV .OR. LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI    &
-         .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. LHORELAX_RH               &
-       ) THEN
-      NSIZELBXR_ll=2* NRIMX+2*JPHEXT
-      ALLOCATE(XLBXRM(IISIZEXF,IJSIZEXF,IKU,NRR))
-    ELSE
-      NSIZELBXR_ll=2*JPHEXT  ! 2
-      ALLOCATE(XLBXRM(IISIZEX2,IJSIZEX2,IKU,NRR))
-    ENDIF
-  ELSE
-    NSIZELBXR_ll=0
-    ALLOCATE(XLBXRM(0,0,0,0))
-  END IF
-  !
-  IF ( NSV > 0 ) THEN
-    IF ( ANY( LHORELAX_SV(:)) ) THEN
-      NSIZELBXSV_ll=2* NRIMX+2*JPHEXT
-      ALLOCATE(XLBXSVM(IISIZEXF,IJSIZEXF,IKU,NSV))
-    ELSE
-      NSIZELBXSV_ll=2*JPHEXT  ! 2
-      ALLOCATE(XLBXSVM(IISIZEX2,IJSIZEX2,IKU,NSV))
-    END IF
-  ELSE
-    NSIZELBXSV_ll=0
-    ALLOCATE(XLBXSVM(0,0,0,0))
-  END IF
-!
-ELSE                                   ! 3D case
-!
-!
-  CALL GET_SIZEX_LB(HLUOUT,NIMAX_ll,NJMAX_ll,NRIMX,   &
-       IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU,          &
-       IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2)
-  CALL GET_SIZEY_LB(HLUOUT,NIMAX_ll,NJMAX_ll,NRIMY,   &
-       IISIZEYF,IJSIZEYF,IISIZEYFV,IJSIZEYFV,          &
-       IISIZEY4,IJSIZEY4,IISIZEY2,IJSIZEY2)
-!
-! check if local domain not to small for NRIMX NRIMY
-!
-  IF ( CLBCX(1) /= 'CYCL' )  THEN
-     IF ( NRIMX .GT. IDIMX )   THEN
-        WRITE(*,'(A,I8,A/A,2I8,/A)') "Processor=", IP-1, &
-             " :: INI_MODEL_n ERROR:  ( NRIMX  > IDIMX )  ", &
-             " Local domain to small for relaxation NRIMX,IDIMX ", &
-             NRIMX,IDIMX ,&
-             " change relaxation parameters or number of processors "
-        !callabortstop
-        CALL ABORT
-        STOP    
-     END IF
-  END IF
-  IF ( CLBCY(1) /= 'CYCL' ) THEN
-     IF ( NRIMY .GT. IDIMY )  THEN
-        WRITE(*,'(A,I8,A/A,2I8,/A)') "Processor=", IP-1, &
-             " :: INI_MODEL_n ERROR:  ( NRIMY > IDIMY )  ", &
-             " Local domain to small for relaxation NRIMY,IDIMY ", &
-             NRIMY,IDIMY ,&
-             " change relaxation parameters or number of processors "
-        !callabortstop
-        CALL ABORT
-        STOP    
-     END IF
-  END IF
-IF ( LHORELAX_UVWTH ) THEN
-    NSIZELBX_ll=2*NRIMX+2*JPHEXT
-    NSIZELBXU_ll=2*NRIMX+2*JPHEXT
-    NSIZELBY_ll=2*NRIMY+2*JPHEXT
-    NSIZELBYV_ll=2*NRIMY+2*JPHEXT
-    ALLOCATE(XLBXUM(IISIZEXFU,IJSIZEXFU,IKU))
-    ALLOCATE(XLBYUM(IISIZEYF,IJSIZEYF,IKU))
-    ALLOCATE(XLBXVM(IISIZEXF,IJSIZEXF,IKU))
-    ALLOCATE(XLBYVM(IISIZEYFV,IJSIZEYFV,IKU))
-    ALLOCATE(XLBXWM(IISIZEXF,IJSIZEXF,IKU))
-    ALLOCATE(XLBYWM(IISIZEYF,IJSIZEYF,IKU))
-    ALLOCATE(XLBXTHM(IISIZEXF,IJSIZEXF,IKU))
-    ALLOCATE(XLBYTHM(IISIZEYF,IJSIZEYF,IKU))
-  ELSE
-    NSIZELBX_ll=2*JPHEXT  ! 2
-    NSIZELBXU_ll=2*(JPHEXT+1) ! 4
-    NSIZELBY_ll=2*JPHEXT  ! 2
-    NSIZELBYV_ll=2*(JPHEXT+1) ! 4
-    ALLOCATE(XLBXUM(IISIZEX4,IJSIZEX4,IKU))
-    ALLOCATE(XLBYUM(IISIZEY2,IJSIZEY2,IKU))
-    ALLOCATE(XLBXVM(IISIZEX2,IJSIZEX2,IKU))
-    ALLOCATE(XLBYVM(IISIZEY4,IJSIZEY4,IKU))
-    ALLOCATE(XLBXWM(IISIZEX2,IJSIZEX2,IKU))
-    ALLOCATE(XLBYWM(IISIZEY2,IJSIZEY2,IKU))
-    ALLOCATE(XLBXTHM(IISIZEX2,IJSIZEX2,IKU))
-    ALLOCATE(XLBYTHM(IISIZEY2,IJSIZEY2,IKU))
-  END IF
-  !
-  IF (CTURB /= 'NONE') THEN
-    IF ( LHORELAX_TKE) THEN
-      NSIZELBXTKE_ll=2*NRIMX+2*JPHEXT
-      NSIZELBYTKE_ll=2*NRIMY+2*JPHEXT
-      ALLOCATE(XLBXTKEM(IISIZEXF,IJSIZEXF,IKU))
-      ALLOCATE(XLBYTKEM(IISIZEYF,IJSIZEYF,IKU))
-    ELSE
-      NSIZELBXTKE_ll=2*JPHEXT  ! 2
-      NSIZELBYTKE_ll=2*JPHEXT  ! 2
-      ALLOCATE(XLBXTKEM(IISIZEX2,IJSIZEX2,IKU))
-      ALLOCATE(XLBYTKEM(IISIZEY2,IJSIZEY2,IKU))
-    END IF
-  ELSE
-    NSIZELBXTKE_ll=0
-    NSIZELBYTKE_ll=0
-    ALLOCATE(XLBXTKEM(0,0,0))
-    ALLOCATE(XLBYTKEM(0,0,0))
-  END IF
-  !
-  IF ( NRR > 0 ) THEN
-    IF (LHORELAX_RV .OR. LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI    &
-          .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. LHORELAX_RH              &
-       ) THEN
-      NSIZELBXR_ll=2*NRIMX+2*JPHEXT
-      NSIZELBYR_ll=2*NRIMY+2*JPHEXT
-      ALLOCATE(XLBXRM(IISIZEXF,IJSIZEXF,IKU,NRR))
-      ALLOCATE(XLBYRM(IISIZEYF,IJSIZEYF,IKU,NRR))
-    ELSE
-      NSIZELBXR_ll=2*JPHEXT  ! 2
-      NSIZELBYR_ll=2*JPHEXT  ! 2
-      ALLOCATE(XLBXRM(IISIZEX2,IJSIZEX2,IKU,NRR))
-      ALLOCATE(XLBYRM(IISIZEY2,IJSIZEY2,IKU,NRR))
-    ENDIF
-  ELSE
-    NSIZELBXR_ll=0
-    NSIZELBYR_ll=0
-    ALLOCATE(XLBXRM(0,0,0,0))
-    ALLOCATE(XLBYRM(0,0,0,0))
-  END IF
-  !
-  IF ( NSV > 0 ) THEN
-    IF ( ANY( LHORELAX_SV(:)) ) THEN
-      NSIZELBXSV_ll=2*NRIMX+2*JPHEXT
-      NSIZELBYSV_ll=2*NRIMY+2*JPHEXT
-      ALLOCATE(XLBXSVM(IISIZEXF,IJSIZEXF,IKU,NSV))
-      ALLOCATE(XLBYSVM(IISIZEYF,IJSIZEYF,IKU,NSV))
-    ELSE
-      NSIZELBXSV_ll=2*JPHEXT  ! 2
-      NSIZELBYSV_ll=2*JPHEXT  ! 2
-      ALLOCATE(XLBXSVM(IISIZEX2,IJSIZEX2,IKU,NSV))
-      ALLOCATE(XLBYSVM(IISIZEY2,IJSIZEY2,IKU,NSV))
-    END IF
-  ELSE
-    NSIZELBXSV_ll=0
-    NSIZELBYSV_ll=0
-    ALLOCATE(XLBXSVM(0,0,0,0))
-    ALLOCATE(XLBYSVM(0,0,0,0))
-  END IF
-END IF      ! END OF THE IF STRUCTURE ON THE MODEL DIMENSION
-!
-!
-IF ( KMI > 1 ) THEN 
-  ! it has been assumed that the THeta field used the largest rim area compared
-  ! to the others prognostic variables, if it is not the case, you must change
-  ! these lines
-  ALLOCATE(XCOEFLIN_LBXM(SIZE(XLBXTHM,1),SIZE(XLBXTHM,2),SIZE(XLBXTHM,3)))
-  ALLOCATE(   NKLIN_LBXM(SIZE(XLBXTHM,1),SIZE(XLBXTHM,2),SIZE(XLBXTHM,3)))
-  ALLOCATE(XCOEFLIN_LBYM(SIZE(XLBYTHM,1),SIZE(XLBYTHM,2),SIZE(XLBYTHM,3)))
-  ALLOCATE(   NKLIN_LBYM(SIZE(XLBYTHM,1),SIZE(XLBYTHM,2),SIZE(XLBYTHM,3)))
-  ALLOCATE(XCOEFLIN_LBXU(SIZE(XLBXUM,1),SIZE(XLBXUM,2),SIZE(XLBXUM,3)))
-  ALLOCATE(   NKLIN_LBXU(SIZE(XLBXUM,1),SIZE(XLBXUM,2),SIZE(XLBXUM,3)))
-  ALLOCATE(XCOEFLIN_LBYU(SIZE(XLBYUM,1),SIZE(XLBYUM,2),SIZE(XLBYUM,3)))
-  ALLOCATE(   NKLIN_LBYU(SIZE(XLBYUM,1),SIZE(XLBYUM,2),SIZE(XLBYUM,3)))
-  ALLOCATE(XCOEFLIN_LBXV(SIZE(XLBXVM,1),SIZE(XLBXVM,2),SIZE(XLBXVM,3)))
-  ALLOCATE(   NKLIN_LBXV(SIZE(XLBXVM,1),SIZE(XLBXVM,2),SIZE(XLBXVM,3)))
-  ALLOCATE(XCOEFLIN_LBYV(SIZE(XLBYVM,1),SIZE(XLBYVM,2),SIZE(XLBYVM,3)))
-  ALLOCATE(   NKLIN_LBYV(SIZE(XLBYVM,1),SIZE(XLBYVM,2),SIZE(XLBYVM,3)))
-  ALLOCATE(XCOEFLIN_LBXW(SIZE(XLBXWM,1),SIZE(XLBXWM,2),SIZE(XLBXWM,3)))
-  ALLOCATE(   NKLIN_LBXW(SIZE(XLBXWM,1),SIZE(XLBXWM,2),SIZE(XLBXWM,3)))
-  ALLOCATE(XCOEFLIN_LBYW(SIZE(XLBYWM,1),SIZE(XLBYWM,2),SIZE(XLBYWM,3)))
-  ALLOCATE(   NKLIN_LBYW(SIZE(XLBYWM,1),SIZE(XLBYWM,2),SIZE(XLBYWM,3)))
-END IF
-!
-!  allocation of the LS fields for vertical relaxation and numerical diffusion
-IF( .NOT. LSTEADYLS )  THEN
-!
-  ALLOCATE(XLSUS(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
-  ALLOCATE(XLSVS(SIZE(XLSVM,1),SIZE(XLSVM,2),SIZE(XLSVM,3)))
-  ALLOCATE(XLSWS(SIZE(XLSWM,1),SIZE(XLSWM,2),SIZE(XLSWM,3)))
-  ALLOCATE(XLSTHS(SIZE(XLSTHM,1),SIZE(XLSTHM,2),SIZE(XLSTHM,3)))
-  ALLOCATE(XLSRVS(SIZE(XLSRVM,1),SIZE(XLSRVM,2),SIZE(XLSRVM,3)))
-!
-ELSE
-!
-  ALLOCATE(XLSUS(0,0,0))
-  ALLOCATE(XLSVS(0,0,0))
-  ALLOCATE(XLSWS(0,0,0))
-  ALLOCATE(XLSTHS(0,0,0))
-  ALLOCATE(XLSRVS(0,0,0))
-!
-END IF
-!  allocation of the LB fields for horizontal relaxation and Lateral Boundaries
-IF( .NOT. ( LSTEADYLS .AND. KMI==1 ) )  THEN
-!
-  ALLOCATE(XLBXTKES(SIZE(XLBXTKEM,1),SIZE(XLBXTKEM,2),SIZE(XLBXTKEM,3)))
-  ALLOCATE(XLBYTKES(SIZE(XLBYTKEM,1),SIZE(XLBYTKEM,2),SIZE(XLBYTKEM,3)))
-  ALLOCATE(XLBXUS(SIZE(XLBXUM,1),SIZE(XLBXUM,2),SIZE(XLBXUM,3)))
-  ALLOCATE(XLBYUS(SIZE(XLBYUM,1),SIZE(XLBYUM,2),SIZE(XLBYUM,3)))
-  ALLOCATE(XLBXVS(SIZE(XLBXVM,1),SIZE(XLBXVM,2),SIZE(XLBXVM,3)))
-  ALLOCATE(XLBYVS(SIZE(XLBYVM,1),SIZE(XLBYVM,2),SIZE(XLBYVM,3)))
-  ALLOCATE(XLBXWS(SIZE(XLBXWM,1),SIZE(XLBXWM,2),SIZE(XLBXWM,3)))
-  ALLOCATE(XLBYWS(SIZE(XLBYWM,1),SIZE(XLBYWM,2),SIZE(XLBYWM,3)))
-  ALLOCATE(XLBXTHS(SIZE(XLBXTHM,1),SIZE(XLBXTHM,2),SIZE(XLBXTHM,3)))
-  ALLOCATE(XLBYTHS(SIZE(XLBYTHM,1),SIZE(XLBYTHM,2),SIZE(XLBYTHM,3)))
-  ALLOCATE(XLBXRS(SIZE(XLBXRM,1),SIZE(XLBXRM,2),SIZE(XLBXRM,3),SIZE(XLBXRM,4)))
-  ALLOCATE(XLBYRS(SIZE(XLBYRM,1),SIZE(XLBYRM,2),SIZE(XLBYRM,3),SIZE(XLBYRM,4)))
-  ALLOCATE(XLBXSVS(SIZE(XLBXSVM,1),SIZE(XLBXSVM,2),SIZE(XLBXSVM,3),SIZE(XLBXSVM,4)))
-  ALLOCATE(XLBYSVS(SIZE(XLBYSVM,1),SIZE(XLBYSVM,2),SIZE(XLBYSVM,3),SIZE(XLBYSVM,4)))
-!
-ELSE
-!
-  ALLOCATE(XLBXTKES(0,0,0))
-  ALLOCATE(XLBYTKES(0,0,0))
-  ALLOCATE(XLBXUS(0,0,0))
-  ALLOCATE(XLBYUS(0,0,0))
-  ALLOCATE(XLBXVS(0,0,0))
-  ALLOCATE(XLBYVS(0,0,0))
-  ALLOCATE(XLBXWS(0,0,0))
-  ALLOCATE(XLBYWS(0,0,0))
-  ALLOCATE(XLBXTHS(0,0,0))
-  ALLOCATE(XLBYTHS(0,0,0))
-  ALLOCATE(XLBXRS(0,0,0,0))
-  ALLOCATE(XLBYRS(0,0,0,0))
-  ALLOCATE(XLBXSVS(0,0,0,0))
-  ALLOCATE(XLBYSVS(0,0,0,0))
-!
-END IF
-!
-!
-!*       3.7   Module MODD_RADIATIONS_n (except XOZON and XAER)
-!
-!
-NSWB_MNH = 6
-ALLOCATE(XSW_BANDS (NSWB_MNH))
-ALLOCATE(XZENITH   (IIU,IJU))
-ALLOCATE(XAZIM     (IIU,IJU))
-ALLOCATE(XALBUV    (IIU,IJU))
-ALLOCATE(XDIRSRFSWD(IIU,IJU,NSWB_MNH))
-ALLOCATE(XSCAFLASWD(IIU,IJU,NSWB_MNH))
-ALLOCATE(XFLALWD   (IIU,IJU))
-!
-IF (CRAD /= 'NONE') THEN
-  ALLOCATE(XSLOPANG(IIU,IJU))
-  ALLOCATE(XSLOPAZI(IIU,IJU))
-  ALLOCATE(XDTHRAD(IIU,IJU,IKU))
-  ALLOCATE(XDIRFLASWD(IIU,IJU,NSWB_MNH))
-  ALLOCATE(XDIR_ALB(IIU,IJU,NSWB_MNH))
-  ALLOCATE(XSCA_ALB(IIU,IJU,NSWB_MNH))
-  ALLOCATE(XEMIS  (IIU,IJU))
-  ALLOCATE(XTSRAD (IIU,IJU))    ; XTSRAD = 0.0
-  ALLOCATE(XSEA (IIU,IJU))
-  ALLOCATE(XZS_XY (IIU,IJU))
-  ALLOCATE(NCLEARCOL_TM1(IIU,IJU))
-  ALLOCATE(XSWU(IIU,IJU,IKU))
-  ALLOCATE(XSWD(IIU,IJU,IKU))
-  ALLOCATE(XLWU(IIU,IJU,IKU))
-  ALLOCATE(XLWD(IIU,IJU,IKU))
-  ALLOCATE(XDTHRADSW(IIU,IJU,IKU))
-  ALLOCATE(XDTHRADLW(IIU,IJU,IKU))
-  ALLOCATE(XRADEFF(IIU,IJU,IKU))
-ELSE
-  ALLOCATE(XSLOPANG(0,0))
-  ALLOCATE(XSLOPAZI(0,0))
-  ALLOCATE(XDTHRAD(0,0,0))
-  ALLOCATE(XDIRFLASWD(0,0,0))
-  ALLOCATE(XDIR_ALB(0,0,0))
-  ALLOCATE(XSCA_ALB(0,0,0))
-  ALLOCATE(XEMIS  (0,0))
-  ALLOCATE(XTSRAD (0,0))
-  ALLOCATE(XSEA (0,0))
-  ALLOCATE(XZS_XY (0,0))
-  ALLOCATE(NCLEARCOL_TM1(0,0))
-  ALLOCATE(XSWU(0,0,0))
-  ALLOCATE(XSWD(0,0,0))
-  ALLOCATE(XLWU(0,0,0))
-  ALLOCATE(XLWD(0,0,0))
-  ALLOCATE(XDTHRADSW(0,0,0))
-  ALLOCATE(XDTHRADLW(0,0,0))
-  ALLOCATE(XRADEFF(0,0,0))
-END IF
-
-IF (CRAD == 'ECMW') THEN
-  ALLOCATE(XSTROATM(31,6))
-  ALLOCATE(XSMLSATM(31,6))
-  ALLOCATE(XSMLWATM(31,6))
-  ALLOCATE(XSPOSATM(31,6))
-  ALLOCATE(XSPOWATM(31,6))
-  ALLOCATE(XSTATM(31,6))
-ELSE
-  ALLOCATE(XSTROATM(0,0))
-  ALLOCATE(XSMLSATM(0,0))
-  ALLOCATE(XSMLWATM(0,0))
-  ALLOCATE(XSPOSATM(0,0))
-  ALLOCATE(XSPOWATM(0,0))
-  ALLOCATE(XSTATM(0,0))
-END IF
-!
-!*       3.8   Module MODD_DEEP_CONVECTION_n
-!
-IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
-  ALLOCATE(NCOUNTCONV(IIU,IJU))
-  ALLOCATE(XDTHCONV(IIU,IJU,IKU))
-  ALLOCATE(XDRVCONV(IIU,IJU,IKU))
-  ALLOCATE(XDRCCONV(IIU,IJU,IKU))
-  ALLOCATE(XDRICONV(IIU,IJU,IKU))
-  ALLOCATE(XPRCONV(IIU,IJU))
-  ALLOCATE(XPACCONV(IIU,IJU))
-  ALLOCATE(XPRSCONV(IIU,IJU))
-  ! diagnostics
-  IF (LCH_CONV_LINOX) THEN
-    ALLOCATE(XIC_RATE(IIU,IJU))
-    ALLOCATE(XCG_RATE(IIU,IJU))
-    ALLOCATE(XIC_TOTAL_NUMBER(IIU,IJU))
-    ALLOCATE(XCG_TOTAL_NUMBER(IIU,IJU))
-  ELSE
-    ALLOCATE(XIC_RATE(0,0))
-    ALLOCATE(XCG_RATE(0,0))
-    ALLOCATE(XIC_TOTAL_NUMBER(0,0))
-    ALLOCATE(XCG_TOTAL_NUMBER(0,0))
-  END IF
-  IF ( LDIAGCONV )  THEN
-    ALLOCATE(XUMFCONV(IIU,IJU,IKU))
-    ALLOCATE(XDMFCONV(IIU,IJU,IKU))
-    ALLOCATE(XPRLFLXCONV(IIU,IJU,IKU))
-    ALLOCATE(XPRSFLXCONV(IIU,IJU,IKU))
-    ALLOCATE(XCAPE(IIU,IJU))
-    ALLOCATE(NCLTOPCONV(IIU,IJU))
-    ALLOCATE(NCLBASCONV(IIU,IJU))
-  ELSE
-    ALLOCATE(XUMFCONV(0,0,0))
-    ALLOCATE(XDMFCONV(0,0,0))
-    ALLOCATE(XPRLFLXCONV(0,0,0))
-    ALLOCATE(XPRSFLXCONV(0,0,0))
-    ALLOCATE(XCAPE(0,0))
-    ALLOCATE(NCLTOPCONV(0,0))
-    ALLOCATE(NCLBASCONV(0,0))
-  END IF
-ELSE
-  ALLOCATE(XPRCONV(0,0))
-  ALLOCATE(XPACCONV(0,0))
-  ALLOCATE(XPRSCONV(0,0))
-END IF
-!
-IF ((CDCONV == 'KAFR' .OR. CSCONV == 'KAFR') &
-    .AND. LSUBG_COND .AND. LSIG_CONV) THEN
-  ALLOCATE(XMFCONV(IIU,IJU,IKU))
-ELSE
-  ALLOCATE(XMFCONV(0,0,0))
-ENDIF
-!
-IF ((CDCONV == 'KAFR' .OR. CSCONV == 'KAFR') &
-    .AND. LCHTRANS .AND. NSV > 0 ) THEN
-  ALLOCATE(XDSVCONV(IIU,IJU,IKU,NSV))
-ELSE
-  ALLOCATE(XDSVCONV(0,0,0,0))
-END IF
-!
-ALLOCATE(XCF_MF(IIU,IJU,IKU)) ; XCF_MF=0.0
-ALLOCATE(XRC_MF(IIU,IJU,IKU)) ; XRC_MF=0.0
-ALLOCATE(XRI_MF(IIU,IJU,IKU)) ; XRI_MF=0.0
-!
-!*       3.9   Local variables
-!
-ALLOCATE(ZJ(IIU,IJU,IKU))
-!
-!*      3.10 Forcing variables (Module MODD_FRC)
-!
-IF (KMI == 1) THEN
-  IF ( LFORCING ) THEN
-    ALLOCATE(TDTFRC(NFRC))
-    ALLOCATE(XUFRC(IKU,NFRC))
-    ALLOCATE(XVFRC(IKU,NFRC))
-    ALLOCATE(XWFRC(IKU,NFRC))
-    ALLOCATE(XTHFRC(IKU,NFRC))
-    ALLOCATE(XRVFRC(IKU,NFRC))
-    ALLOCATE(XTENDTHFRC(IKU,NFRC))
-    ALLOCATE(XTENDRVFRC(IKU,NFRC))
-    ALLOCATE(XGXTHFRC(IKU,NFRC))
-    ALLOCATE(XGYTHFRC(IKU,NFRC))
-    ALLOCATE(XPGROUNDFRC(NFRC))
-    ALLOCATE(XTENDUFRC(IKU,NFRC))
-    ALLOCATE(XTENDVFRC(IKU,NFRC))
-  ELSE
-    ALLOCATE(TDTFRC(0))
-    ALLOCATE(XUFRC(0,0))
-    ALLOCATE(XVFRC(0,0))
-    ALLOCATE(XWFRC(0,0))
-    ALLOCATE(XTHFRC(0,0))
-    ALLOCATE(XRVFRC(0,0))
-    ALLOCATE(XTENDTHFRC(0,0))
-    ALLOCATE(XTENDRVFRC(0,0))
-    ALLOCATE(XGXTHFRC(0,0))
-    ALLOCATE(XGYTHFRC(0,0))
-    ALLOCATE(XPGROUNDFRC(0))
-    ALLOCATE(XTENDUFRC(0,0))
-    ALLOCATE(XTENDVFRC(0,0))
-  END IF
-  IF ( LFORCING ) THEN
-    ALLOCATE(XWTFRC(IIU,IJU,IKU))
-    ALLOCATE(XUFRC_PAST(IIU,IJU,IKU)) ; XUFRC_PAST = XUNDEF
-    ALLOCATE(XVFRC_PAST(IIU,IJU,IKU)) ; XVFRC_PAST = XUNDEF
-  ELSE
-    ALLOCATE(XWTFRC(0,0,0))
-    ALLOCATE(XUFRC_PAST(0,0,0))
-    ALLOCATE(XVFRC_PAST(0,0,0))
-  END IF
-END IF
-! ----------------------------------------------------------------------
-!
-IF (L2D_ADV_FRC) THEN
-  WRITE(ILUOUT,*) 'L2D_ADV_FRC IS SET TO', L2D_ADV_FRC
-  WRITE(ILUOUT,*) 'ADV FRC WILL BE SET'
-  ALLOCATE(TDTADVFRC(NADVFRC))
-  ALLOCATE(XDTHFRC(IIU,IJU,IKU,NADVFRC))  ; XDTHFRC=0.
-  ALLOCATE(XDRVFRC(IIU,IJU,IKU,NADVFRC))  ; XDRVFRC=0.
-ELSE
-  ALLOCATE(TDTADVFRC(0))
-  ALLOCATE(XDTHFRC(0,0,0,0))
-  ALLOCATE(XDRVFRC(0,0,0,0))
-ENDIF
-
-IF (L2D_REL_FRC) THEN
-  WRITE(ILUOUT,*) 'L2D_REL_FRC IS SET TO', L2D_REL_FRC
-  WRITE(ILUOUT,*) 'REL FRC WILL BE SET'
-  ALLOCATE(TDTRELFRC(NRELFRC))
-  ALLOCATE(XTHREL(IIU,IJU,IKU,NRELFRC))  ; XTHREL=0.
-  ALLOCATE(XRVREL(IIU,IJU,IKU,NRELFRC))  ; XRVREL=0.
-ELSE
-  ALLOCATE(TDTRELFRC(0))
-  ALLOCATE(XTHREL(0,0,0,0))
-  ALLOCATE(XRVREL(0,0,0,0))
-ENDIF
-!
-!*      4.11 BIS: Eddy fluxes allocation
-!
-IF ( LTH_FLX ) THEN
-   ALLOCATE(XVTH_FLUX_M(IIU,IJU,IKU)) ; XVTH_FLUX_M = 0.
-   ALLOCATE(XWTH_FLUX_M(IIU,IJU,IKU)) ; XWTH_FLUX_M = 0.
-   IF (KMI /= 1) THEN
-      ALLOCATE(XRTHS_EDDY_FLUX(IIU,IJU,IKU))
-      XRTHS_EDDY_FLUX = 0.
-   ENDIF
-ELSE
-   ALLOCATE(XVTH_FLUX_M(0,0,0)) ; XVTH_FLUX_M = 0.
-   ALLOCATE(XWTH_FLUX_M(0,0,0)) ; XWTH_FLUX_M = 0.
-END IF
-!
-IF ( LUV_FLX) THEN
-   ALLOCATE(XVU_FLUX_M(IIU,IJU,IKU)) ; XVU_FLUX_M  = 0.
-   IF (KMI /= 1) THEN
-      ALLOCATE(XRVS_EDDY_FLUX(IIU,IJU,IKU))
-      XRVS_EDDY_FLUX = 0.
-   ENDIF
-ELSE
-   ALLOCATE(XVU_FLUX_M(0,0,0)) ; XVU_FLUX_M  = 0.
-END IF
-!
-!*      3.11   Module MODD_ICE_CONC_n
-!
-IF (     (CCLOUD == 'ICE3'.OR.CCLOUD == 'ICE4') .AND.   &
-     (CPROGRAM == 'DIAG  '.OR.CPROGRAM == 'MESONH')) THEN
-  ALLOCATE(XCIT(IIU,IJU,IKU))
-ELSE
-  ALLOCATE(XCIT(0,0,0))
-END IF
-!
-IF ( CCLOUD == 'KHKO' .OR. CCLOUD == 'C2R2') THEN
-   ALLOCATE(XSUPSAT(IIU,IJU,IKU))
-   ALLOCATE(XNACT(IIU,IJU,IKU))
-   ALLOCATE(XNPRO(IIU,IJU,IKU))
-   ALLOCATE(XSSPRO(IIU,IJU,IKU))
-END IF
-!
-!*      3.12   Module MODD_TURB_CLOUD
-!
-IF (.NOT.(ALLOCATED(XCEI))) ALLOCATE(XCEI(0,0,0))
-IF (KMI == NMODEL_CLOUD .AND. CTURBLEN_CLOUD/='NONE' ) THEN
-  DEALLOCATE(XCEI)
-  ALLOCATE(XCEI(IIU,IJU,IKU))
-ENDIF
-!
-!*      3.13  Module MODD_CH_PH_n
-!
-IF (LUSECHAQ.AND.(CPROGRAM == 'DIAG  '.OR.CPROGRAM == 'MESONH')) THEN
-  IF (LCH_PH) THEN
-    ALLOCATE(XPHC(IIU,IJU,IKU))
-    IF (NRRL==2) THEN
-      ALLOCATE(XPHR(IIU,IJU,IKU))
-      ALLOCATE(XACPHR(IIU,IJU))
-      XACPHR(:,:) =  0.
-    ENDIF
-  ENDIF
-  IF (NRRL==2) THEN
-    ALLOCATE(XACPRAQ(IIU,IJU,NSV_CHAC/2))
-    XACPRAQ(:,:,:) = 0.
-  ENDIF
-ENDIF
-IF ((LUSECHEM).AND.(CPROGRAM == 'DIAG  ')) THEN
-  ALLOCATE(XCHFLX(IIU,IJU,NSV_CHEM))
-  XCHFLX(:,:,:) = 0.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       4.    INITIALIZE BUDGET VARIABLES
-!              ---------------------------
-!
-IF ( CBUTYPE /= "NONE" .AND. NBUMOD == KMI ) THEN
-  CALL INI_BUDGET(ILUOUT, HLUOUT,XTSTEP,NSV,NRR,                              &
-             LNUMDIFU,LNUMDIFTH,LNUMDIFSV,                                    &
-             LHORELAX_UVWTH,LHORELAX_RV, LHORELAX_RC,LHORELAX_RR,             &
-             LHORELAX_RI,LHORELAX_RS,LHORELAX_RG, LHORELAX_RH,LHORELAX_TKE,   &
-             LHORELAX_SV,LVE_RELAX,LCHTRANS,LNUDGING,LDRAGTREE,LDEPOTREE,     &
-             CRAD,CDCONV,CSCONV,CTURB,CTURBDIM,CCLOUD                         )
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       5.    INITIALIZE INTERPOLATION COEFFICIENTS
-!
-CALL INI_BIKHARDT_n (NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),KMI)
-!
-!-------------------------------------------------------------------------------
-!
-!*       6.    INITIALIZE GRIDS AND METRIC COEFFICIENTS
-!              ----------------------------------------
-!
-CALL SET_GRID(KMI,HINIFILE,HLUOUT,IIU,IJU,IKU,NIMAX_ll,NJMAX_ll,         &
-              XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4,           &
-              XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4,           &
-              NXOR_ALL(KMI),NYOR_ALL(KMI),NXEND_ALL(KMI),NYEND_ALL(KMI), &
-              NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),                       &
-              CLBCX,CLBCY,                                               &
-              XTSTEP,XSEGLEN,                                            &
-              XLONORI,XLATORI,XLON,XLAT,                                 &
-              XXHAT,XYHAT,XDXHAT,XDYHAT, XMAP,                           &
-              XZS,XZZ,XZHAT,LSLEVE,XLEN1,XLEN2,XZSMT,                    &
-              ZJ,                                                        &
-              TDTMOD,TDTCUR,NSTOP,NOUT_TIMES,NOUT_NUMB)
-!
-CALL METRICS(XMAP,XDXHAT,XDYHAT,XZZ,XDXX,XDYY,XDZX,XDZY,XDZZ)
-!
-!* update halos of metric coefficients
-!
-!
-CALL UPDATE_METRICS(CLBCX,CLBCY,XDXX,XDYY,XDZX,XDZY,XDZZ)
-!
-!
-CALL SET_DIRCOS(CLBCX,CLBCY,XDXX,XDYY,XDZX,XDZY,TZINITHALO2D_ll,   &
-                XDIRCOSXW,XDIRCOSYW,XDIRCOSZW,XCOSSLOPE,XSINSLOPE  )
-!
-! grid nesting initializations
-IF ( KMI == 1 ) THEN
-  XTSTEP_MODEL1=XTSTEP
-END IF
-!
-NDT_2_WAY(KMI)=4
-!
-!-------------------------------------------------------------------------------
-!
-!*      7.    INITIALIZE DATA FOR JVALUES AND AEROSOLS 
-!
-IF ( LUSECHEM .OR. LCHEMDIAG ) THEN
-  IF ((KMI==1).AND.(CPROGRAM == "MESONH".OR.CPROGRAM == "DIAG  "))  &
-    CALL CH_INIT_JVALUES(TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH,      &
-                         TDTCUR%TDATE%YEAR, ILUOUT, XCH_TUV_DOBNEW)
-!
-  IF (LORILAM) THEN
-    CALL CH_AER_MOD_INIT
-  ELSE
-    IF (.NOT.(ASSOCIATED(XSOLORG))) ALLOCATE(XSOLORG(0,0,0,0))  
-    IF (.NOT.(ASSOCIATED(XMI))) ALLOCATE(XMI(0,0,0,0))  
-  ENDIF
-ELSE
-  IF (.NOT.(ASSOCIATED(XMI))) ALLOCATE(XMI(0,0,0,0))
-  IF (.NOT.(ASSOCIATED(XSOLORG))) ALLOCATE(XSOLORG(0,0,0,0))
-END IF
-!
-IF (CCLOUD=='LIMA') CALL INIT_AEROSOL_PROPERTIES
-!
-!-------------------------------------------------------------------------------
-!
-!*       8.    INITIALIZE THE PROGNOSTIC FIELDS
-!              --------------------------------
-!
-CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-before read_field::XUT",PRECISION)
-CALL READ_FIELD(HINIFILE,HLUOUT,IMASDEV, IIU,IJU,IKU,XTSTEP,                  &
-                CGETTKET,CGETRVT,CGETRCT,CGETRRT,CGETRIT,CGETCIT,             &
-                CGETRST,CGETRGT,CGETRHT,CGETSVT,CGETSRCT,CGETSIGS,CGETCLDFR,  &
-                CGETBL_DEPTH,CGETSBL_DEPTH,CGETPHC,CGETPHR,CUVW_ADV_SCHEME,   &
-                CTEMP_SCHEME,NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,&
-                NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                &
-                NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,        &
-                XUM,XVM,XWM,XDUM,XDVM,XDWM,                                   &
-                XUT,XVT,XWT,XTHT,XPABST,XPABSM,XTKET,XRTKEMS,                 &
-                XRT,XSVT,XCIT,XDRYMASST,                                      &
-                XSIGS,XSRCT,XCLDFR,XBL_DEPTH,XSBL_DEPTH,XWTHVMF,XPHC,XPHR,    &
-                XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,                              &
-                XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,                        &
-                XLBXRM,XLBXSVM,                                               &
-                XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,                        &
-                XLBYRM,XLBYSVM,                                               &
-                NFRC,TDTFRC,XUFRC,XVFRC,XWFRC,XTHFRC,XRVFRC,                  &
-                XTENDTHFRC,XTENDRVFRC,XGXTHFRC,XGYTHFRC,                      &
-                XPGROUNDFRC, XATC,                                            &
-                XTENDUFRC, XTENDVFRC,                                         &
-                NADVFRC,TDTADVFRC,XDTHFRC,XDRVFRC,                            &
-                NRELFRC,TDTRELFRC,XTHREL,XRVREL,                              &
-                XVTH_FLUX_M,XWTH_FLUX_M,XVU_FLUX_M,                           &
-                XRUS_PRES,XRVS_PRES,XRWS_PRES,XRTHS_CLD,XRRS_CLD,XRSVS_CLD    )
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*        9.   INITIALIZE REFERENCE STATE
-!              ---------------------------
-!
-!
-CALL SET_REF(KMI,HINIFILE,HLUOUT,                                &
-             XZZ,XZHAT,ZJ,XDXX,XDYY,CLBCX,CLBCY,                 &
-             XREFMASS,XMASS_O_PHI0,XLINMASS,                      &
-             XRHODREF,XTHVREF,XRVREF,XEXNREF,XRHODJ              )
-!
-!-------------------------------------------------------------------------------
-!
-!*       10.1    INITIALIZE THE TURBULENCE VARIABLES
-!               -----------------------------------
-!
-IF ((CTURB == 'TKEL').AND.(CCONF=='START')) THEN
-  CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-before ini_tke_eps::XUT",PRECISION)
-  CALL INI_TKE_EPS(CGETTKET,XTHVREF,XZZ, &
-                   XUT,XVT,XTHT,                  &
-                   XTKET,TZINITHALO3D_ll    )
-  CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-after ini_tke_eps::XUT",PRECISION)
-END IF
-!
-!
-!*       10.2   INITIALIZE THE LES VARIABLES
-!               ----------------------------
-!
-CALL INI_LES_n
-!
-!-------------------------------------------------------------------------------
-!
-!*       11.    INITIALIZE THE SOURCE OF TOTAL DRY MASS Md
-!               ------------------------------------------
-!
-IF((KMI==1).AND.LSTEADYLS) THEN
-  XDRYMASSS = 0.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       12.    INITIALIZE THE MICROPHYSICS                   
-!               ----------------------------
-!
-IF (CELEC == 'NONE') THEN
-  CALL INI_MICRO_n(ILUOUT)
-!
-!-------------------------------------------------------------------------------
-!
-!*       13.    INITIALIZE THE ATMOSPHERIC ELECTRICITY                   
-!               --------------------------------------
-!
-ELSE
-  CALL INI_ELEC_n(ILUOUT, CELEC, CCLOUD, HLUOUT, CINIFILE, &
-                  XTSTEP, XZZ,                             &
-                  XDXX, XDYY, XDZZ, XDZX, XDZY             )
-!
-  WRITE (UNIT=ILUOUT,&
-  FMT='(/,"ELECTRIC VARIABLES ARE BETWEEN INDEX",I2," AND ",I2)')&
-  NSV_ELECBEG, NSV_ELECEND
-! 
-    IF( CGETSVT(NSV_ELECBEG)=='INIT' ) THEN
-      XSVT(:,:,:,NSV_ELECBEG) = XCION_POS_FW(:,:,:)                  ! Nb/kg
-      XSVT(:,:,:,NSV_ELECEND) = XCION_NEG_FW(:,:,:)
-!
-      XSVT(:,:,:,NSV_ELECBEG+1:NSV_ELECEND-1) = 0.0
-    ELSE  ! Convert elec_variables per m3 into elec_variables per kg of air
-      DO JSV = NSV_ELECBEG, NSV_ELECEND
-         XSVT(:,:,:,JSV) = XSVT(:,:,:,JSV) / XRHODREF(:,:,:)
-      ENDDO
-    END IF
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       14.   INITIALIZE THE LARGE SCALE SOURCES
-!              ----------------------------------
-!
-IF ((KMI==1).AND.(.NOT. LSTEADYLS)) THEN
-  CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-before ini_cpl::XUT",PRECISION)
-  CALL INI_CPL(HLUOUT,NSTOP,XTSTEP,LSTEADYLS,CCONF,                           &
-               CGETTKET,                                                      &
-               CGETRVT,CGETRCT,CGETRRT,CGETRIT,                               &
-               CGETRST,CGETRGT,CGETRHT,CGETSVT,LCH_INIT_FIELD,                &
-               NSV,NIMAX_ll,NJMAX_ll,                                         &
-               NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,             &
-               NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                 &
-               NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,         &
-               XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XDRYMASST,                     &
-               XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,          &
-               XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,          &
-               XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XDRYMASSS,                     &
-               XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,          &
-               XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS           )
-  CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-after ini_cpl::XUT",PRECISION)
-!
-      DO JSV=NSV_CHEMBEG,NSV_CHEMEND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-      !
-      DO JSV=NSV_LNOXBEG,NSV_LNOXEND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-      !
-      DO JSV=NSV_AERBEG,NSV_AEREND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-      !
-      DO JSV=NSV_DSTBEG,NSV_DSTEND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-      !
-      DO JSV=NSV_DSTDEPBEG,NSV_DSTDEPEND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-      !
-      DO JSV=NSV_SLTBEG,NSV_SLTEND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-      !
-      DO JSV=NSV_SLTDEPBEG,NSV_SLTDEPEND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-      !
-      DO JSV=NSV_PPBEG,NSV_PPEND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-      !
-#ifdef MNH_FOREFIRE
-      DO JSV=NSV_FFBEG,NSV_FFEND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-      !
-#endif
-      DO JSV=NSV_CSBEG,NSV_CSEND
-        XLBXSVS(:,:,:,JSV)=MAX(XLBXSVS(:,:,:,JSV),0.)
-        XLBYSVS(:,:,:,JSV)=MAX(XLBYSVS(:,:,:,JSV),0.)
-      ENDDO
-!
-END IF
-!
-IF ( KMI > 1) THEN
-  ! Use dummy pointers to correct an ifort BUG
-  DPTR_XBMX1=>XBMX1
-  DPTR_XBMX2=>XBMX2
-  DPTR_XBMX3=>XBMX3
-  DPTR_XBMX4=>XBMX4
-  DPTR_XBMY1=>XBMY1
-  DPTR_XBMY2=>XBMY2
-  DPTR_XBMY3=>XBMY3
-  DPTR_XBMY4=>XBMY4
-  DPTR_XBFX1=>XBFX1
-  DPTR_XBFX2=>XBFX2
-  DPTR_XBFX3=>XBFX3
-  DPTR_XBFX4=>XBFX4
-  DPTR_XBFY1=>XBFY1
-  DPTR_XBFY2=>XBFY2
-  DPTR_XBFY3=>XBFY3
-  DPTR_XBFY4=>XBFY4
-  DPTR_CLBCX=>CLBCX
-  DPTR_CLBCY=>CLBCY
-  !
-  DPTR_XZZ=>XZZ
-  DPTR_XZHAT=>XZHAT
-  DPTR_XLSUM=>XLSUM
-  DPTR_XLSVM=>XLSVM
-  DPTR_XLSWM=>XLSWM
-  DPTR_XLSTHM=>XLSTHM
-  DPTR_XLSRVM=>XLSRVM
-  DPTR_XLSUS=>XLSUS
-  DPTR_XLSVS=>XLSVS
-  DPTR_XLSWS=>XLSWS
-  DPTR_XLSTHS=>XLSTHS
-  DPTR_XLSRVS=>XLSRVS
-  !
-  DPTR_NKLIN_LBXU=>NKLIN_LBXU
-  DPTR_XCOEFLIN_LBXU=>XCOEFLIN_LBXU
-  DPTR_NKLIN_LBYU=>NKLIN_LBYU
-  DPTR_XCOEFLIN_LBYU=>XCOEFLIN_LBYU
-  DPTR_NKLIN_LBXV=>NKLIN_LBXV
-  DPTR_XCOEFLIN_LBXV=>XCOEFLIN_LBXV
-  DPTR_NKLIN_LBYV=>NKLIN_LBYV
-  DPTR_XCOEFLIN_LBYV=>XCOEFLIN_LBYV
-  DPTR_NKLIN_LBXW=>NKLIN_LBXW
-  DPTR_XCOEFLIN_LBXW=>XCOEFLIN_LBXW
-  DPTR_NKLIN_LBYW=>NKLIN_LBYW
-  DPTR_XCOEFLIN_LBYW=>XCOEFLIN_LBYW
-  DPTR_NKLIN_LBXM=>NKLIN_LBXM
-  DPTR_XCOEFLIN_LBXM=>XCOEFLIN_LBXM
-  DPTR_NKLIN_LBYM=>NKLIN_LBYM
-  DPTR_XCOEFLIN_LBYM=>XCOEFLIN_LBYM
-  !
-  CALL INI_SPAWN_LS_n(NDAD(KMI),XTSTEP,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,DPTR_XZZ,DPTR_XZHAT,                                &
-       LSLEVE,XLEN1,XLEN2,                                   &
-       DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM,                      &
-       DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS,                      &
-       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     )
-  !
-  DPTR_XLBXUM=>XLBXUM
-  DPTR_XLBYUM=>XLBYUM
-  DPTR_XLBXVM=>XLBXVM
-  DPTR_XLBYVM=>XLBYVM
-  DPTR_XLBXWM=>XLBXWM
-  DPTR_XLBYWM=>XLBYWM
-  DPTR_XLBXTHM=>XLBXTHM
-  DPTR_XLBYTHM=>XLBYTHM
-  DPTR_XLBXTKEM=>XLBXTKEM
-  DPTR_XLBYTKEM=>XLBYTKEM
-  DPTR_XLBXRM=>XLBXRM
-  DPTR_XLBYRM=>XLBYRM
-  DPTR_XLBXSVM=>XLBXSVM
-  DPTR_XLBYSVM=>XLBYSVM
-  CALL INI_ONE_WAY_n(NDAD(KMI),CLUOUT,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                           )
-END IF
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*       15.    INITIALIZE THE SCALAR VARIABLES
-!               -------------------------------
-!
-IF (LLG .AND. LINIT_LG .AND. CPROGRAM=='MESONH') &
-  CALL INI_LG(XXHAT,XYHAT,XZZ,XSVT,XLBXSVM,XLBYSVM)
-
-!
-!*       16.    BUILT THE GENERIC OUTPUT NAME
-!               ----------------------------
-!
-WRITE(COUTFILE,'(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))
-WRITE(CFMDIAC, '(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))//'.000'
-IF (CPROGRAM=='MESONH') THEN
-  IF ( NDAD(KMI) == 1)  CDAD_NAME(KMI) = CEXP//'.1.'//CSEG
-  IF ( NDAD(KMI) == 2)  CDAD_NAME(KMI) = CEXP//'.2.'//CSEG
-  IF ( NDAD(KMI) == 3)  CDAD_NAME(KMI) = CEXP//'.3.'//CSEG
-  IF ( NDAD(KMI) == 4)  CDAD_NAME(KMI) = CEXP//'.4.'//CSEG
-  IF ( NDAD(KMI) == 5)  CDAD_NAME(KMI) = CEXP//'.5.'//CSEG
-  IF ( NDAD(KMI) == 6)  CDAD_NAME(KMI) = CEXP//'.6.'//CSEG
-  IF ( NDAD(KMI) == 7)  CDAD_NAME(KMI) = CEXP//'.7.'//CSEG
-  IF ( NDAD(KMI) == 8)  CDAD_NAME(KMI) = CEXP//'.8.'//CSEG
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       17.    INITIALIZE THE PARAMETERS FOR THE DYNAMICS
-!               ------------------------------------------
-!
-CALL INI_DYNAMICS(HLUOUT,XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,     &
-             XZHAT,CLBCX,CLBCY,XTSTEP,                                        &
-             LVE_RELAX,LVE_RELAX_GRD,LHORELAX_UVWTH,LHORELAX_RV,              &
-             LHORELAX_RC,LHORELAX_RR,LHORELAX_RI,LHORELAX_RS,LHORELAX_RG,     &
-             LHORELAX_RH,LHORELAX_TKE,LHORELAX_SV,                            &
-             LHORELAX_SVC2R2,LHORELAX_SVC1R3,LHORELAX_SVELEC,LHORELAX_SVLG,   &
-             LHORELAX_SVCHEM,LHORELAX_SVAER,LHORELAX_SVDST,LHORELAX_SVSLT,    &
-             LHORELAX_SVPP,LHORELAX_SVCS,LHORELAX_SVCHIC,                     &
-#ifdef MNH_FOREFIRE
-             LHORELAX_SVFF,                                                   &
-#endif
-             XRIMKMAX,NRIMX,NRIMY,                                            &
-             XALKTOP,XALKGRD,XALZBOT,XALZBAS,                                 &
-             XT4DIFU,XT4DIFTH,XT4DIFSV,                                       &
-             XCORIOX,XCORIOY,XCORIOZ,XCURVX,XCURVY,                           &
-             XDXHATM,XDYHATM,XRHOM,XAF,XBFY,XCF,XTRIGSX,XTRIGSY,NIFAXX,NIFAXY,&
-             XALK,XALKW,NALBOT,XALKBAS,XALKWBAS,NALBAS,                       &
-             LMASK_RELAX,XKURELAX,XKVRELAX,XKWRELAX,                          &
-             XDK2U,XDK4U,XDK2TH,XDK4TH,XDK2SV,XDK4SV,                         &
-             LZDIFFU,XZDIFFU_HALO2,                                           &
-             XBFB,XBF_SXP2_YP1_Z                                              ) 
-!
-!-------------------------------------------------------------------------------
-!
-!*      18.    SURFACE FIELDS
-!              --------------
-!
-!*      18.1   Radiative setup
-!              ---------------
-!
-IF (CRAD   /= 'NONE') THEN
-  IF (CGETRAD =='INIT') THEN
-    GINIRAD  =.TRUE.
-  ELSE
-    GINIRAD  =.FALSE.
-  END IF
-  CALL INI_RADIATIONS(HINIFILE,HLUOUT,GINIRAD,TDTCUR,TDTEXP,XZZ, &
-                      XDXX, XDYY,                         &
-                      XSINDEL,XCOSDEL,XTSIDER,XCORSOL,    &
-                      XSLOPANG,XSLOPAZI,                  &
-                      XDTHRAD,XDIRFLASWD,XSCAFLASWD,      &
-                      XFLALWD,XDIRSRFSWD,NCLEARCOL_TM1,   &
-                      XZENITH,XAZIM,                      &
-                      TDTRAD_FULL,TDTRAD_CLONLY,          &
-                      TZINITHALO2D_ll,                    &
-                      XRADEFF,XSWU,XSWD,XLWU,             &
-                      XLWD,XDTHRADSW,XDTHRADLW           )
-  !
-  IF (GINIRAD) CALL SUNPOS_n(XZENITH,PAZIMSOL=XAZIM)
-  CALL SURF_SOLAR_GEOM    (XZS, XZS_XY)
-  !
-  ALLOCATE(XXHAT_ll                 (IIU_ll))
-  ALLOCATE(XYHAT_ll                 (IJU_ll))
-  ALLOCATE(XZS_ll                   (IIU_ll,IJU_ll))
-  ALLOCATE(XZS_XY_ll                (IIU_ll,IJU_ll))
-  !
-  CALL GATHERALL_FIELD_ll('XY',XZS,XZS_ll,IRESP)
-  CALL GATHERALL_FIELD_ll('XY',XZS_XY,XZS_XY_ll,IRESP)
-  CALL GATHERALL_FIELD_ll('XX',XXHAT,XXHAT_ll,IRESP)
-  CALL GATHERALL_FIELD_ll('YY',XYHAT,XYHAT_ll,IRESP)
-  XZS_MAX_ll=MAXVAL(XZS_ll)
-ELSE
-  XAZIM       = XPI
-  XZENITH     = XPI/2.
-  XDIRSRFSWD  = 0.
-  XSCAFLASWD  = 0.
-  XFLALWD     = 300.  ! W/m2
-  XTSIDER     = 0.
-END IF
-!
-!
-CALL INI_SW_SETUP (CRAD,NSWB_MNH,XSW_BANDS)
-!
-!
-!       18.1.1 Special initialisation for CO2 content
-!              CO2 (molar mass=44) horizontally and vertically homogeneous at 360 ppm
-!
-XCCO2 = 360.0E-06 * 44.0E-03 / XMD
-!
-!
-!*      18.2   Externalized surface fields
-!              ---------------------------
-!
-ALLOCATE(ZCO2(IIU,IJU))
-ZCO2(:,:) = XCCO2
-!
-
-ALLOCATE(ZDIR_ALB(IIU,IJU,NSWB_MNH))
-ALLOCATE(ZSCA_ALB(IIU,IJU,NSWB_MNH))
-ALLOCATE(ZEMIS  (IIU,IJU))
-ALLOCATE(ZTSRAD (IIU,IJU))
-!
-IF (IMASDEV>=46) THEN
-  CALL FMREAD(HINIFILE,'SURF',HLUOUT,'--',CSURF,IGRID,ILENCH,YCOMMENT,IRESP)
-ELSE
-  CSURF = "EXTE"
-END IF
-!
-!
-IF (CSURF=='EXTE' .AND. (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG  ')) THEN
-  ! ouverture du fichier PGD
-  IF  ( LEN_TRIM(CINIFILEPGD) > 0 ) THEN
-    CALL FMOPEN_ll(CINIFILEPGD,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP,OPARALLELIO=.FALSE.) 
-    IF (IRESP/=0) THEN
-      WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD
-      WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNITn"
-    !callabortstop
-      CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
-    ENDIF
-  ELSE
-  ! case after a spawning
-    CINIFILEPGD = HINIFILE
-  END IF
-  !
-  CALL GOTO_SURFEX(KMI)
-  !* initialization of surface
-  !
-  !
-#ifdef CPLOASIS
-  CALL SFX_OASIS_READ_NAM(CPROGRAM,XTSTEP)
-  WRITE(*,*) 'SFX-OASIS: READ NAM_SFX_SEA_CPL OK'
-#endif
-  !
-  CALL INIT_GROUND_PARAM_n ('ALL',SIZE(CSV),CSV,ZCO2,                             &
-                            XZENITH,XAZIM,XSW_BANDS,ZDIR_ALB,ZSCA_ALB,  &
-                            ZEMIS,ZTSRAD                                )
-  !
-  IF (SIZE(XEMIS)>0) THEN
-    XDIR_ALB = ZDIR_ALB
-    XSCA_ALB = ZSCA_ALB
-    XEMIS    = ZEMIS
-    XTSRAD   = ZTSRAD
-    CALL MNHGET_SURF_PARAM_n (PSEA=XSEA)                          
-  END IF
-ELSE
-  !* fields not physically necessary, but must be initialized
-  IF (SIZE(XEMIS)>0) THEN
-    XDIR_ALB = 0.
-    XSCA_ALB = 0.
-    XEMIS    = 1.
-    XTSRAD   = XTT
-    XSEA     = 1.
-  END IF
-END IF
-IF (CSURF=='EXTE' .AND. (CPROGRAM=='SPAWN ')) THEN
-  ! ouverture du fichier PGD
-  CALL FMOPEN_ll(CINIFILEPGD,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP,OPARALLELIO=.FALSE.) 
-  IF (IRESP/=0) THEN
-    WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD
-    WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNIT2_SPA"
-    !callabortstop
-    CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
-  ENDIF
-ENDIF
-!
-  !* special case after spawning in prep_real_case
-IF (CSURF=='EXRM' .AND. CPROGRAM=='REAL  ') CSURF = 'EXTE'
-!
-DEALLOCATE(ZDIR_ALB)
-DEALLOCATE(ZSCA_ALB)
-DEALLOCATE(ZEMIS   )
-DEALLOCATE(ZTSRAD  )
-!
-DEALLOCATE(ZCO2)
-!
-!
-!* in a RESTART case, reads surface radiative quantities in the MESONH file
-!
-IF (CRAD   == 'ECMW' .AND. CGETRAD=='READ') THEN
-  CALL INI_SURF_RAD(HINIFILE, CLUOUT, XDIR_ALB, XSCA_ALB, XEMIS, XTSRAD)
-END IF
-!
-!
-!*      18.3   Mesonh fields
-!              -------------
-!
-IF (CPROGRAM/='REAL  ') CALL MNHREAD_ZS_DUMMY_n(CINIFILEPGD)
-!
-!-------------------------------------------------------------------------------
-!
-!*       19.    INITIALIZE THE PARAMETERS FOR THE PHYSICS
-!               -----------------------------------------
-!
-IF (CRAD   == 'ECMW') THEN
-!
-!* get cover mask for aerosols
-!
-  IF (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG  ') THEN
-    ALLOCATE(ZSEA(IIU,IJU))
-    ALLOCATE(ZTOWN(IIU,IJU))
-    ALLOCATE(ZBARE(IIU,IJU))
-    IF (CSURF=='EXTE') THEN
-      CALL GOTO_SURFEX(KMI)
-      CALL MNHGET_SURF_PARAM_n(PSEA=ZSEA,PTOWN=ZTOWN,PBARE=ZBARE)
-    ELSE
-      ZSEA (:,:) = 1.
-      ZTOWN(:,:) = 0.
-      ZBARE(:,:) = 0.
-    END IF
-!
-    CALL INI_RADIATIONS_ECMWF (HINIFILE,HLUOUT,                                           &
-                               XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP,          &
-                               CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB,CAER,NAER,NSTATM,          &
-                               XSTATM,ZSEA,ZTOWN,ZBARE,XOZON, XAER,XDST_WL, LSUBG_COND              )
-!
-    DEALLOCATE(ZSEA,ZTOWN,ZBARE)
-    ALLOCATE (XAER_CLIM(SIZE(XAER,1),SIZE(XAER,2),SIZE(XAER,3),SIZE(XAER,4)))
-    XAER_CLIM(:,:,:,:) =XAER(:,:,:,:)
-!
-  END IF
-ELSE
-  ALLOCATE (XOZON(0,0,0))
-  ALLOCATE (XAER(0,0,0,0))
-  ALLOCATE (XDST_WL(0,0,0,0))
-  ALLOCATE (XAER_CLIM(0,0,0,0))  
-END IF
-!
-!
-!
-IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
-  IF (CGETCONV=='INIT') THEN
-    GINIDCONV=.TRUE.
-  ELSE
-    GINIDCONV=.FALSE.
-  END IF
-!
-!  commensurability between convection calling time and time step
-!
-  XDTCONV=XTSTEP*REAL( INT( (MIN(XDTCONV,1800.)+1.E-10)/XTSTEP ) )
-  XDTCONV=MAX( XDTCONV, XTSTEP )
-  IF (NVERB>=10) THEN
-    WRITE(ILUOUT,*) 'XDTCONV has been set to : ',XDTCONV
-  END IF
-  CALL INI_DEEP_CONVECTION (HINIFILE,HLUOUT,GINIDCONV,TDTCUR,        &
-                           NCOUNTCONV,XDTHCONV,XDRVCONV,XDRCCONV,    &
-                           XDRICONV,XPRCONV,XPRSCONV,XPACCONV,       &
-                           XUMFCONV,XDMFCONV,XMFCONV,XPRLFLXCONV,XPRSFLXCONV,&
-                           XCAPE,NCLTOPCONV,NCLBASCONV,              &
-                           TDTDCONV, CGETSVCONV, XDSVCONV,           &
-                           LCH_CONV_LINOX, XIC_RATE, XCG_RATE,       &
-                           XIC_TOTAL_NUMBER, XCG_TOTAL_NUMBER        )
-
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*      19.    ALLOCATION OF THE TEMPORAL SERIES
-!              ---------------------------------
-!
-IF (LSERIES .AND. CPROGRAM/='DIAG  ') CALL INI_SERIES_n
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*      20.   (re)initialize scalar variables
-!             -------------------------------
-!
-!
-IF ( LUSECHEM .OR. LCHEMDIAG ) THEN
-  IF (CPROGRAM=='MESONH'.AND.CCONF=='RESTA') LCH_INIT_FIELD =.FALSE.
-  IF (CPROGRAM=='MESONH'.OR. CPROGRAM=='DIAG  ' .OR. CPROGRAM=='IDEAL ') &
-        CALL CH_INIT_FIELD_n(KMI, ILUOUT, NVERB)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      22.    UPDATE HALO
-!              -----------
-!
-!
-CALL UPDATE_HALO_ll(TZINITHALO3D_ll,IINFO_ll)
-CALL UPDATE_HALO_ll(TZINITHALO2D_ll,IINFO_ll)
-CALL CLEANLIST_ll(TZINITHALO3D_ll)
-CALL CLEANLIST_ll(TZINITHALO2D_ll)
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*      23.    DEALLOCATION
-!              -------------
-!
-DEALLOCATE(ZJ)
-!
-DEALLOCATE(XSTROATM)
-DEALLOCATE(XSMLSATM)
-DEALLOCATE(XSMLWATM)
-DEALLOCATE(XSPOSATM)
-DEALLOCATE(XSPOWATM)
-!
-!-------------------------------------------------------------------------------
-!
-!*      24.     BALLOON and AIRCRAFT initializations
-!              ------------------------------------
-!
-CALL INI_AIRCRAFT_BALLOON(HINIFILE,CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
-                          IKU,CTURB=="TKEL" ,                                 &
-                          XLATORI, XLONORI                                    )
-!
-!-------------------------------------------------------------------------------
-!
-!*      25.     STATION initializations
-!              -----------------------
-!
-CALL INI_SURFSTATION_n(CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
-                       CTURB=="TKEL" ,                            &
-                       XLATORI, XLONORI                           )
-!
-!-------------------------------------------------------------------------------
-!
-!*      26.     PROFILER initializations
-!              ------------------------
-!
-CALL INI_POSPROFILER_n(CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
-                       CTURB=="TKEL",                             &
-                       XLATORI, XLONORI                           )
-!
-!-------------------------------------------------------------------------------
-!
-!*      28.     Prognostic aerosols          
-!              ------------------------
-!
-CALL INI_AEROSET1
-CALL INI_AEROSET2
-CALL INI_AEROSET3
-CALL INI_AEROSET4
-CALL INI_AEROSET5
-CALL INI_AEROSET6
-#ifdef MNH_FOREFIRE
-! 
-!-------------------------------------------------------------------------------
-!
-!*      29.    FOREFIRE initializations
-!              ------------------------
-!
-
-! Coupling with ForeFire if resolution is low enough
-!---------------------------------------------------
-IF ( LFOREFIRE .AND. 0.5*(XXHAT(2)-XXHAT(1)+XYHAT(2)-XYHAT(1)) < COUPLINGRES ) THEN
-	FFCOUPLING = .TRUE.	
-ELSE
-	FFCOUPLING = .FALSE.
-ENDIF
-
-! Initializing the ForeFire variables
-!------------------------------------
-IF ( LFOREFIRE ) THEN
-	CALL INIT_FOREFIRE_n(KMI, ILUOUT, IP &
-		, TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME, XTSTEP)
-END IF
-#endif
-
-!-------------------------------------------------------------------------------
-!
-!*      30.   Total production/Loss for chemical species
-!
-IF (LCHEMDIAG)  THEN
-        CALL CH_INIT_PRODLOSSTOT_n(ILUOUT)
-        IF (NEQ_PLT>0) THEN
-                ALLOCATE(XPROD(IIU,IJU,IKU,NEQ_PLT))
-                ALLOCATE(XLOSS(IIU,IJU,IKU,NEQ_PLT))
-                XPROD=0.0
-                XLOSS=0.0
-        ELSE
-                ALLOCATE(XPROD(0,0,0,0))
-                ALLOCATE(XLOSS(0,0,0,0))
-        END IF
-ELSE
-        ALLOCATE(XPROD(0,0,0,0))
-        ALLOCATE(XLOSS(0,0,0,0))
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*     31. Extended production/loss terms for chemical species
-!
-IF (LCHEMDIAG) THEN
-        CALL CH_INIT_BUDGET_n(ILUOUT)
-        IF (NEQ_BUDGET>0) THEN
-                ALLOCATE(IINDEX(2,NNONZEROTERMS))
-                ALLOCATE(IIND(NEQ_BUDGET))
-                CALL CH_NONZEROTERMS(KMI,IINDEX,NNONZEROTERMS)
-                ALLOCATE(XTCHEM(NEQ_BUDGET))
-                DO JM=1,NEQ_BUDGET
-                        IIND(JM)=COUNT((IINDEX(1,:))==NSPEC_BUDGET(JM))
-                        ALLOCATE(XTCHEM(JM)%NB_REAC(IIND(JM)))
-                        ALLOCATE(XTCHEM(JM)%XB_REAC(IIU,IJU,IKU,IIND(JM)))
-                END DO
-                DEALLOCATE(IIND)
-                DEALLOCATE(IINDEX)
-        ELSE
-                ALLOCATE(XTCHEM(0))
-        END IF
-ELSE
-        ALLOCATE(XTCHEM(0))
-END IF
-
-END SUBROUTINE INI_MODEL_n
-
diff --git a/src/ARCH_SRC/CPL_WAVE/MNH/mesonh.f90 b/src/ARCH_SRC/CPL_WAVE/MNH/mesonh.f90
deleted file mode 100644
index 153b0755f..000000000
--- a/src/ARCH_SRC/CPL_WAVE/MNH/mesonh.f90
+++ /dev/null
@@ -1,242 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-!-----------------------------------------------------------------
-!     ##############
-      PROGRAM MESONH
-!     ##############
-!
-!!****  *MESONH * -general monitor of the model
-!!
-!!    PURPOSE
-!!    -------
-!! 
-!!      This program is the general monitor of the model. Firstly, it calls the 
-!!    subroutine INIT, which performs the sequential initialization of the  
-!!    nested models. Then, the program calls the temporal loops of all the 
-!!    models, by calling a recursive function which make the temporal nesting
-!!    of the different nested models. 
-!!    
-!!**  METHOD
-!!    ------
-!!
-!!      The initialization is a sequentially performed together with the
-!!    temporal loop of all the nested models. The spatial nesting can be
-!!    performed in an arbitrary way, the only constrainst is for the first model
-!!    which must contain all the others. For the moment, only 8 models can be
-!!    runned at the time and the imbriquation level can also go to this upper
-!!    value.
-!!    
-!!    
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!       subroutine INIT  : performs the sequential initialization of the nested 
-!!                         models
-!!       subroutine MODEL: choose the right MODELn to be called
-!! 
-!!       subroutine KID_MODEL: recursive function which calls the kid models
-!! 
-!!    IMPLICIT ARGUMENTS
-!!    ------------------ 
-!!
-!!    MODD_CONF:     NMODEL, NMASDEV, CPROGRAM
-!!    MODD_CONF_n:   CSTORAGE_TYPE
-!!                   
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    NONE
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!       J. STEIN  * METEO-FRANCE *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!
-!!      Original    20/10/94 
-!!      J.Stein                     08/12/94  clean the code and add the modules
-!!      J.Stein and P.Jabouille     30/04/96  add the storage_type
-!!      J.P.Lafore                  11/07/96  multi-tasking introduction for nesting
-!!      J.P.Lafore                  01/08/96  events implementation
-!!      J.P.Lafore                  17/11/97  events modification for two-way nesting
-!!      J.Stein                     08/07/98  sequential form for the nesting
-!!      J.Stein                     08/04/99  general case of the sequential form
-!!      V. Masson                   15/03/99  MASDEV number and PROGRAM name
-!!      J.P. Chaboureau             15/03/04  loop limited to 100000 iterations
-!!                                            remplaced by infinite loop
-!!      J.Escobar                 19/03/2008  rename INIT to INIT_MNH --> grib problem
-!!      J.Escobar                  6/11/2014  remove test on LCHECK otherwise never call MPPDB_INIT
-!!      J.Escobar                 15/09/2015  WENO5 & JPHEXT <> 1
-!!      G.Delautier                  06/2016  phasage surfex 8
-!!      J. Pianezze               01/08/2016  add sfxoasis coupling functions
-!-------------------------------------------------------------------------------
-!
-!*       0.     DECLARATIONS
-!               ------------
-!
-#ifdef CPLOASIS
-  USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD, IP
-  USE MODD_DYN_n, ONLY : XTSTEP
-  USE MODD_SFX_OASIS, ONLY : LOASIS, LOASIS_GRID
-#endif
-!
-USE MODD_CONF
-USE MODD_NESTING
-USE MODD_CONF_n
-!
-USE MODI_MODEL_n
-USE MODI_KID_MODEL
-!
-USE MODE_ll
-USE MODE_IO_ll
-USE MODE_MODELN_HANDLER
-!
-USE MODI_VERSION
-USE MODI_INIT_MNH
-USE MODD_MNH_SURFEX_n
-!
-#ifdef CPLOASIS
-  USE MODI_SFX_OASIS_INIT
-  USE MODI_MNH_OASIS_GRID
-  USE MODI_MNH_OASIS_DEFINE
-  USE MODI_SFX_OASIS_END
-#endif
-!
-USE MODE_MPPDB
-!
-IMPLICIT NONE 
-!
-!*       0.1    declarations of local variables
-!
-INTEGER       :: JMODEL                       ! loop index 
-INTEGER       :: ITEMP_MODEL1                 ! loop increment 
-LOGICAL       :: GEXIT                        ! flag for the end of the
-                                              ! temporal loop       
-INTEGER       :: IINFO_ll                     ! return code of // routines
-!
-#ifdef CPLOASIS
-  CHARACTER(LEN=28)  :: CNAMELIST
-  LOGICAL            :: L_MASTER
-#endif
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.    INITIALIZATION
-!              --------------
-! Switch to model 1 variables
-#ifndef CPLOASIS
-CALL MPPDB_INIT()
-#endif
-!
-CALL GOTO_MODEL(1)
-!
-#ifdef CPLOASIS
-  CNAMELIST='EXSEG1.nam'
-  CALL SFX_OASIS_INIT(CNAMELIST, NMNH_COMM_WORLD)
-#endif
-!
-CALL INITIO_ll()
-!
-CALL VERSION
-CPROGRAM='MESONH'
-!
-CALL INIT_MNH
-!
-!
-GEXIT=.FALSE.
-!
-!
-!*         1.1   INITIALIZATION GRID OASIS
-!                -------------------------
-!
-!
-#ifdef CPLOASIS
-IF(IP==1) THEN
-  L_MASTER=.TRUE.
-ELSE
-  L_MASTER=.FALSE.
-END IF
-!
-IF (LOASIS_GRID) THEN
-  CALL MNH_OASIS_GRID(L_MASTER,NMNH_COMM_WORLD)
-ENDIF
-#endif
-!
-!
-!*         1.2   INITIALIZATION PARTITION OASIS
-!                ------------------------------
-!
-#ifdef CPLOASIS
-IF (LOASIS) THEN
-  CALL MNH_OASIS_DEFINE(CPROGRAM,IP)
-END IF
-#endif
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.    TEMPORAL LOOP 
-!              -------------
-!
-DO JMODEL=1,NMODEL
-  CALL GO_TOMODEL_ll(JMODEL,IINFO_ll)
-  CALL GOTO_MODEL(JMODEL)
-  CSTORAGE_TYPE='TT'
-  CALL MODEL_n(1,GEXIT)
-END DO
-!
-IF(GEXIT) THEN
-   !callabortstop
-  CALL ABORT
-  STOP
-ENDIF
-!
-ITEMP_MODEL1=1
-DO
-  ITEMP_MODEL1=ITEMP_MODEL1+1
-  !
-  CALL GO_TOMODEL_ll(1,IINFO_ll)
-  CALL GOTO_MODEL(1)
-  CALL MODEL_n(ITEMP_MODEL1,GEXIT)
-  !
-  CALL KID_MODEL(1,ITEMP_MODEL1,GEXIT)
-  !
-  IF(GEXIT) EXIT
-  !
-END DO
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.    FINALIZE THE PARALLEL SESSION
-!              -----------------------------
-!
-IF (LCHECK) THEN
-  CALL MPPDB_BARRIER()
-ELSE
-  CALL END_PARA_ll(IINFO_ll)
-#ifdef CPLOASIS
-IF (LOASIS) THEN
-  CALL SFX_OASIS_END
-END IF
-#endif
-END IF
-!
-!
-CALL SURFEX_DEALLO_LIST
-!
-!-------------------------------------------------------------------------------
-!
-!callabortstop
-!CALL ABORT
-STOP
-!
-END PROGRAM MESONH  
diff --git a/src/ARCH_SRC/CPL_WAVE/SURCOUCHE/mode_init_ll.f90 b/src/ARCH_SRC/CPL_WAVE/SURCOUCHE/mode_init_ll.f90
deleted file mode 100644
index 2b021e7de..000000000
--- a/src/ARCH_SRC/CPL_WAVE/SURCOUCHE/mode_init_ll.f90
+++ /dev/null
@@ -1,823 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!--------------- special set of characters for CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-
-#ifdef MNH_MPI_DOUBLE_PRECISION
-#define MNH_MPI_REAL MPI_DOUBLE_PRECISION
-#define MNH_MPI_2REAL MPI_2DOUBLE_PRECISION
-#else
-#define MNH_MPI_REAL MPI_REAL
-#define MNH_MPI_2REAL MPI_2REAL
-#endif
-
-!     ###################
-      MODULE MODE_INIT_ll
-!     ###################
-!!
-!!    Purpose
-!!    -------
-!
-!     The purpose of this module is the implementation of the initialisation
-!     of parallel data structure
-!
-!!    Routines Of The User Interface
-!!    ------------------------------
-! 
-!     SUBROUTINES : SET_SPLITTING_ll, SET_LBX_ll, SET_LBY_ll
-!                   SET_DIM_ll, SET_JP_ll, SET_XRATIO_ll, SET_YRATIO_ll
-!                   SET_DAD_ll, SET_XOR_ll, SET_XEND_ll, SET_YOR_ll,
-!                   SET_YEND_ll, SET_DAD0_ll,
-! 
-!                   INI_PARA_ll, END_PARA_ll
-!                   
-!!    Implicit Arguments
-!!    ------------------
-! 
-!!    Reference
-!!    ---------
-! 
-!      User Interface for Meso-NH parallel package
-!      Ph. Kloos, L. Giraud, R. Guivarch, D. Lugato
-!
-!!    Authors
-!!    -------
-! 
-!     R. Guivarch               * CERFACS - ENSEEIHT *
-!     Ph. Kloos                 * CERFACS - CNRM *
-!     N. Gicquel                * CERFACS - CNRM *
-!
-!!    Modifications
-!!    -------------
-!
-!       Original     May 19, 1998
-!       Juan     19/08/2005: distinction Halo NORD/SUD & EST/WEST
-!       M.Moge   05/02/2015: extended HALO (halo size + 1)
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_MPIF
-!
-  IMPLICIT NONE
-!
-!  INCLUDE 'mpif.h'
-!
-  CONTAINS
-!
-!     #######################################
-      SUBROUTINE SET_SPLITTING_ll(HSPLITTING)
-!     #######################################
-!
-!!****  *SET_SPLITTING_ll* - 
-!
-!!    Purpose
-!!    -------
-!       Set the variable YSPLITTING with HSPLITTING
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_VAR_ll, ONLY : YSPLITTING
-!
-  IMPLICIT NONE
-!
-  CHARACTER(LEN=*) :: HSPLITTING
-!
-!-------------------------------------------------------------------------------
-!
-  YSPLITTING = HSPLITTING
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_SPLITTING_ll
-!
-!     ################################
-      SUBROUTINE SET_LBX_ll(KLBX, KMI)
-!     ################################
-!
-!!****  *SET_LBX_ll *-
-!
-!!    Purpose
-!!    -------
-!       Set the variable CLBCX(KMI,:) with KLBX
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_PARAMETERS_ll, ONLY : JPMODELMAX
-  USE MODD_DIM_ll, ONLY : CLBCX
-!
-  IMPLICIT NONE
-!
-  CHARACTER(LEN=*) :: KLBX
-  INTEGER :: KMI
-!
-!-------------------------------------------------------------------------------
-!
-  IF (KMI.LE.JPMODELMAX) THEN
-    CLBCX(KMI, :) = KLBX
-  ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_LBX_ll
-!
-!     ################################
-      SUBROUTINE SET_LBY_ll(KLBY, KMI)
-!     ################################
-!
-!!****  *SET_LBY_ll *-
-!
-!!    Purpose
-!!    -------
-!       Set the variable CLBCY(KMI,:) with KLBY
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_PARAMETERS_ll, ONLY : JPMODELMAX
-  USE MODD_DIM_ll, ONLY : CLBCY
-!
-  IMPLICIT NONE
-!
-  CHARACTER(LEN=*) :: KLBY
-  INTEGER :: KMI
-!
-!-------------------------------------------------------------------------------
-!
-  IF (KMI.LE.JPMODELMAX) THEN
-    CLBCY(KMI, :) = KLBY
-  ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_LBY_ll
-!
-!     #################################
-      SUBROUTINE SET_DIM_ll(KX, KY, KZ)
-!     #################################
-!
-!!****  *SET_DIM_ll *-
-!
-!!    Purpose
-!!    -------
-!       Set the variable CLBCY(KMI,:) with KLBY
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_DIM_ll, ONLY : NIMAX_ll, NJMAX_ll, NKMAX_ll
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KX,KY,KZ
-!
-!-------------------------------------------------------------------------------
-!
-  NIMAX_ll = KX
-  NJMAX_ll = KY
-  NKMAX_ll = KZ
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_DIM_ll
-!
-!     #####################################################
-      SUBROUTINE SET_JP_ll(KMODELMAX, KHEXT, KVEXT, KPHALO)
-!     #####################################################
-!
-!!****  *SET_JP_ll *-
-!
-!!    Purpose
-!!    -------
-!       Set the halo variables and alloacte arrays of MODD_DIM_ll
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_PARAMETERS_ll, ONLY : JPMODELMAX, JPHEXT, JPVEXT
-  USE MODD_DIM_ll, ONLY : NDXRATIO_ALL, NDYRATIO_ALL, &
-                          NXOR_ALL, NYOR_ALL, NXEND_ALL, NYEND_ALL, &
-                          NDAD, CLBCX, CLBCY
-  USE MODD_VAR_ll, ONLY : JPHALO
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KMODELMAX, KHEXT, KVEXT, KPHALO
-!
-!-------------------------------------------------------------------------------
-!
-  JPMODELMAX = KMODELMAX
-  JPHEXT = KHEXT
-  JPVEXT = KVEXT 
-  JPHALO = KPHALO
-!
-! Allocate arrays declared in MODD_DIM_ll
-!
-  IF ( ALLOCATED(NDXRATIO_ALL) ) DEALLOCATE(NDXRATIO_ALL)
-  IF ( ALLOCATED(NDYRATIO_ALL) ) DEALLOCATE(NDYRATIO_ALL)
-  IF ( ALLOCATED(NXOR_ALL) ) DEALLOCATE(NXOR_ALL)
-  IF ( ALLOCATED(NYOR_ALL) ) DEALLOCATE(NYOR_ALL)
-  IF ( ALLOCATED(NXEND_ALL) ) DEALLOCATE(NXEND_ALL)
-  IF ( ALLOCATED(NYEND_ALL) ) DEALLOCATE(NYEND_ALL)
-  IF ( ALLOCATED(NDAD) ) DEALLOCATE(NDAD)
-  IF ( ALLOCATED(CLBCX) ) DEALLOCATE(CLBCX)
-  IF ( ALLOCATED(CLBCY) ) DEALLOCATE(CLBCY)
-  ALLOCATE(NDXRATIO_ALL(JPMODELMAX), NDYRATIO_ALL(JPMODELMAX))
-  ALLOCATE(NXOR_ALL(JPMODELMAX), NYOR_ALL(JPMODELMAX)) 
-  ALLOCATE(NXEND_ALL(JPMODELMAX), NYEND_ALL(JPMODELMAX)) 
-  ALLOCATE(NDAD(JPMODELMAX)) 
-  ALLOCATE(CLBCX(JPMODELMAX, 2), CLBCY(JPMODELMAX, 2)) 
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_JP_ll
-!
-!     ######################################
-      SUBROUTINE SET_XRATIO_ll(KXRATIO, KMI)
-!     ######################################
-!
-!!****  *SET_XRATIO_ll *-
-!
-!!    Purpose
-!!    -------
-!       Set the variable NDXRATIO_ALL(KMI) with KXRATIO
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_DIM_ll, ONLY : NDXRATIO_ALL
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KXRATIO, KMI
-!
-!-------------------------------------------------------------------------------
-!
-  NDXRATIO_ALL(KMI) = KXRATIO
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_XRATIO_ll
-!
-!     ######################################
-      SUBROUTINE SET_YRATIO_ll(KYRATIO, KMI)
-!     ######################################
-!
-!!****  *SET_YRATIO_ll *-
-!
-!!    Purpose
-!!    -------
-!       Set the variable NDYRATIO_ALL(KMI) with KYRATIO
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_DIM_ll, ONLY : NDYRATIO_ALL
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KYRATIO, KMI
-!
-!-------------------------------------------------------------------------------
-!
-  NDYRATIO_ALL(KMI) = KYRATIO
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_YRATIO_ll
-!
-!     ################################
-      SUBROUTINE SET_DAD_ll(KDAD, KMI)
-!     ################################
-!
-!!****  *SET_DAD_ll* -
-!
-!!    Purpose
-!!    -------
-!       Set the variable NDAD(KMI) with KDAD
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_DIM_ll, ONLY : NDAD
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KDAD, KMI
-!
-!-------------------------------------------------------------------------------
-!
-  NDAD(KMI) = KDAD
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_DAD_ll
-!
-!     ################################
-      SUBROUTINE SET_XOR_ll(KXOR, KMI)
-!     ################################
-!
-!!****  *SET_XOR_ll* -
-!
-!!    Purpose
-!!    -------
-!       Set the variable NXOR_ALL(KMI) with KXOR
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_DIM_ll, ONLY : NXOR_ALL
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KXOR, KMI
-!
-!-------------------------------------------------------------------------------
-!
-  NXOR_ALL(KMI) = KXOR
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_XOR_ll
-!
-!     ##################################
-      SUBROUTINE SET_XEND_ll(KXEND, KMI)
-!     ##################################
-!
-!!****  *SET_XEND_ll* -
-!
-!!    Purpose
-!!    -------
-!       Set the variable NXEND_ALL(KMI) with KXEND
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_DIM_ll, ONLY : NXEND_ALL
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KXEND, KMI
-!
-!-------------------------------------------------------------------------------
-!
-  NXEND_ALL(KMI) = KXEND
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_XEND_ll
-!
-!     ################################
-      SUBROUTINE SET_YOR_ll(KYOR, KMI)
-!     ################################
-!
-!!****  *SET_YOR_ll* -
-!
-!!    Purpose
-!!    -------
-!       Set the variable NYOR_ALL(KMI) with KYOR
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_DIM_ll, ONLY : NYOR_ALL
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KYOR, KMI
-!
-!-------------------------------------------------------------------------------
-!
-  NYOR_ALL(KMI) = KYOR
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_YOR_ll
-!
-!     ##################################
-      SUBROUTINE SET_YEND_ll(KYEND, KMI)
-!     ##################################
-!
-!!****  *SET_YEND_ll* -
-!
-!!    Purpose
-!!    -------
-!       Set the variable NYEND_ALL(KMI) with KYEND
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_DIM_ll, ONLY : NYEND_ALL
-!
-  IMPLICIT NONE
-!
-  INTEGER :: KYEND, KMI
-!
-!-------------------------------------------------------------------------------
-!
-  NYEND_ALL(KMI) = KYEND
-!
-!-------------------------------------------------------------------------------
-!
-      END SUBROUTINE SET_YEND_ll
-!
-!     ########################
-      SUBROUTINE SET_DAD0_ll()
-!     ########################
-!
-!!****  *SET_DAD0_ll* -
-!
-!!    Purpose
-!!    -------
-!       fill the array NDAD with 0
-!
-!-------------------------------------------------------------------------------
-!
-  USE MODD_DIM_ll, ONLY : NDAD
-!
-  IMPLICIT NONE
-!
-!-------------------------------------------------------------------------------
-!
-  NDAD(:) = 0
-!
-      END SUBROUTINE SET_DAD0_ll
-!
-!     ################################
-      SUBROUTINE INI_PARA_ll(KINFO_ll)
-        !     ################################
-        !
-        !!****  *INI_PARA_ll* - routine to initialize the parallel variables
-        !!
-        !!    Purpose
-        !!    -------
-        !     the purpose of the routine is to fill the structured type variables
-        !     TCRRT_PROCONF and TCRRT_COMDATA
-        !
-        !!**  Method
-        !!    ------
-        !!
-        !!    External
-        !!    --------
-        !     Module MODE_SPLITTING_ll
-        !      SPLIT2
-        !
-        !     Module MODE_CONSTRUCT_ll
-        !       INI_PZ, INI_EZ, INI_BOUNDARIES, INI_TRANS,
-        !       CONSTRUCT_HALO1, CONSTRUCT_HALO2, CONSTRUCT_HALO2_EXTENDED,
-        !       CONSTRUCT_TRANS, CONSTRUCT_1DX, CONSTRUCT_1DY,
-        !       COMPUTE_HALO_MAX, COMPUTE_TRANS_MAX
-        !
-        !     Module MODE_NEST_ll
-        !       INI_CHILD
-        !
-        !!    Implicit Arguments
-        !!    ------------------
-        !     Module MODD_DIM_ll
-        !       JPHEXT - Horizontal External points number
-        !       NDXRATIO_ALL, NDYRATIO_ALL, NXOR_ALL, NYOR_ALL,
-        !       NXEND_ALL, NYEND_ALL,...
-        ! 
-        !     Module MODD_PARALLEL
-        !       TCRRT_PROCONF - Current configuration for current model
-        !       TCRRT_COMDATA - Current communication data structure for current model
-        !                       and local processor
-        ! 
-        !     Reference
-        !!    ---------
-        ! 
-        !!    AUTHOR
-        !!    ------
-        !       R. Guivarch
-        ! 
-        !!    MODIFICATIONS
-        !!    -------------
-        !     Original 01/05/98
-        !     R. Guivarch 01/01/98  Grid-Nesting
-        !     R. Guivarch 29/11/99  x and y splitting -> YSPLITTING 
-        !
-        !-------------------------------------------------------------------------------
-        !
-        !*       0.    DECLARATIONS
-        !
-        USE MODD_DIM_ll
-        USE MODD_PARAMETERS_ll
-        USE MODD_STRUCTURE_ll
-        USE MODD_VAR_ll
-        !
-        USE MODE_SPLITTING_ll, ONLY : SPLIT2
-        !
-        USE MODE_CONSTRUCT_ll, ONLY : INI_PZ, INI_EZ, INI_BOUNDARIES, INI_TRANS, &
-             CONSTRUCT_HALO1, CONSTRUCT_HALO2, CONSTRUCT_HALO_EXTENDED, &
-             CONSTRUCT_TRANS, CONSTRUCT_1DX, CONSTRUCT_1DY, &
-             COMPUTE_HALO_MAX, COMPUTE_TRANS_MAX
-        !
-        USE MODE_NEST_ll, ONLY : INI_CHILD
-        !
-        !JUANZ
-        USE  MODE_MNH_WORLD , ONLY :  INIT_NMNH_COMM_WORLD
-        !JUANZ
-        IMPLICIT NONE
-        !
-        !*       0.1   declarations of arguments
-        !
-        INTEGER, INTENT(OUT) :: KINFO_ll
-        !
-        !*       0.2   declarations of local variables
-        !
-
-        INTEGER  ,PARAMETER                      :: MPI_BUFFER_SIZE = 140000000
-        CHARACTER,SAVE,ALLOCATABLE,DIMENSION(:)  :: MPI_BUFFER
-        !JUAN
-        LOGICAL,SAVE                             :: GFIRSTCALL = .TRUE.
-        !JUAN
-
-
-        TYPE(ZONE_ll), ALLOCATABLE, DIMENSION(:) :: TZDZP ! intermediate zone
-        !
-        TYPE(MODELSPLITTING_ll), POINTER :: TZSPLIT
-        TYPE(PROCONF_ll), POINTER :: TZPROCONF
-        INTEGER :: JMODEL
-
-        LOGICAL     :: GISINIT
-        !JUANZ
-        INTEGER :: myrank_key,new_rank,new_size
-        INTEGER  :: COLOR = 1
-        !JUANZ
-        !
-        !-------------------------------------------------------------------------------
-        !
-        !*       1.    INITIALIZE MPI :
-        !              --------------
-        !
-        KINFO_ll = 0
-        CALL MPI_INITIALIZED(GISINIT, KINFO_ll)
-        IF (.NOT. GISINIT) THEN
-           !CALL MPI_INIT(KINFO_ll)
-           !JUANZ create new/remapped communicator if need
-           CALL INIT_NMNH_COMM_WORLD(KINFO_ll)
-        END IF
-        !
-        CALL MPI_COMM_RANK(NMNH_COMM_WORLD, IP, KINFO_ll)
-        !
-        CALL MPI_COMM_SIZE(NMNH_COMM_WORLD, NPROC, KINFO_ll)
-        !
-        CALL MPI_COMM_DUP(NMNH_COMM_WORLD, NHALO_COM, KINFO_ll)
-        !
-        CALL MPI_COMM_DUP(NMNH_COMM_WORLD, NHALO2_COM, KINFO_ll)
-        !
-        CALL MPI_COMM_DUP(NMNH_COMM_WORLD, NTRANS_COM, KINFO_ll)
-        !
-        CALL MPI_COMM_DUP(NMNH_COMM_WORLD, NGRID_COM, KINFO_ll)
-        !
-        IP = IP + 1
-        !
-        MPI_PRECISION  = MNH_MPI_REAL
-        MPI_2PRECISION = MNH_MPI_2REAL
-        !
-        !-------------------------------------------------------------------------------
-        !
-        !*       2.    SET OUTPUT FILE :
-        !              ---------------
-
-        !  CALL OPEN_ll(UNIT=NIOUNIT,FILE=YOUTPUTFILE,ACTION='write',form&
-        !       &='FORMATTED',MODE=SPECIFIC,IOSTAT=IRESP)
-        !
-        !-------------------------------------------------------------------------------
-        !
-        !*       3.    ALLOCATION :
-        !              ----------
-        !
-
-        IF (GFIRSTCALL) THEN
-           ALLOCATE(MPI_BUFFER(MPI_BUFFER_SIZE))
-           CALL MPI_BUFFER_ATTACH(MPI_BUFFER,MPI_BUFFER_SIZE,KINFO_ll)
-           GFIRSTCALL = .FALSE.
-        ENDIF
-
-
-        ALLOCATE(TZDZP(NPROC))
-        !
-        ALLOCATE(TCRRT_PROCONF)
-        CALL ALLOC(TCRRT_COMDATA)
-        ALLOCATE(TCRRT_PROCONF%TSPLITS_B(NPROC))
-        ALLOCATE(TCRRT_PROCONF%TSPLITS_X(NPROC))
-        ALLOCATE(TCRRT_PROCONF%TSPLITS_Y(NPROC))
-        ALLOCATE(TCRRT_PROCONF%TBOUND(NPROC))
-        NULLIFY(TCRRT_PROCONF%TPARENT)
-        NULLIFY(TCRRT_COMDATA%TPARENT)
-        NULLIFY(TCRRT_PROCONF%TCHILDREN)
-        NULLIFY(TCRRT_COMDATA%TCHILDREN)
-        !
-        !-------------------------------------------------------------------------------
-        !
-        !*       4.    SPLITTING OF THE DOMAIN :
-        !              -----------------------
-        !
-        DIMX = NIMAX_ll + 2*JPHEXT
-        DIMY = NJMAX_ll + 2*JPHEXT
-        DIMZ = NKMAX_ll + 2*JPVEXT
-        !
-        TCRRT_PROCONF%NUMBER = 1
-        !
-        CALL SPLIT2(NIMAX_ll,NJMAX_ll,NKMAX_ll,NPROC,TZDZP,YSPLITTING)
-        !    
-        !-------------------------------------------------------------------------------
-        !
-        !*       5.    INITIALIZATION OF TCRRT_PROCONF :
-        !              -------------------------------
-        !
-        CALL INI_PZ(TCRRT_PROCONF,TZDZP)
-        !
-        CALL INI_BOUNDARIES(TCRRT_PROCONF)
-        !
-        CALL INI_EZ(TCRRT_PROCONF)
-        !
-        CALL INI_TRANS(TCRRT_PROCONF)
-        !
-        !-------------------------------------------------------------------------------
-        !
-        !*       6.    INITIALIZATION OF TCRRT_COMDATA :
-        !              -------------------------------
-        !
-        !*       6.1    Model Number
-        !
-        TCRRT_COMDATA%NUMBER = 1
-        !
-        !*       6.2    Pointer from TCRRT_COMDATA to TCRRT_PROCONF for 2Way splitting
-        !
-        TCRRT_COMDATA%TSPLIT_B => TCRRT_PROCONF%TSPLITS_B(IP)
-
-        TZSPLIT => TCRRT_COMDATA%TSPLIT_B
-        !
-        !
-        !*       6.3   Pointer from TCRRT_COMDATA to TCRRT_PROCONF
-        !        for x-slices splitting
-        TCRRT_COMDATA%TSPLIT_X => TCRRT_PROCONF%TSPLITS_X(IP)
-        !
-        TZSPLIT => TCRRT_COMDATA%TSPLIT_X
-        !
-        !
-        !*       6.4   Pointer from TCRRT_COMDATA to TCRRT_PROCONF
-        !              for y-slices splitting
-        !
-        TCRRT_COMDATA%TSPLIT_Y => TCRRT_PROCONF%TSPLITS_Y(IP)
-        !
-        TZSPLIT => TCRRT_COMDATA%TSPLIT_Y
-        !
-        !
-        !*       6.5   Construction of HALO1 communication data
-        !
-        CALL CONSTRUCT_HALO1(TCRRT_COMDATA, TCRRT_PROCONF)
-        CALL CONSTRUCT_HALO2(TCRRT_COMDATA, TCRRT_PROCONF)
-        CALL CONSTRUCT_HALO_EXTENDED(TCRRT_COMDATA, TCRRT_PROCONF, JPHEXT+1)
-        !
-        !
-        !*       6.6   Construction of 1D communication data
-        !
-        ALLOCATE(TCRRT_COMDATA%HALO1DX)
-        ALLOCATE(TCRRT_COMDATA%HALO1DX%NSEND_WEST(NPROC))
-        ALLOCATE(TCRRT_COMDATA%HALO1DX%NSEND_EAST(NPROC))
-        CALL CONSTRUCT_1DX(TCRRT_COMDATA, TCRRT_PROCONF)
-        !
-        ALLOCATE(TCRRT_COMDATA%HALO1DY)
-        ALLOCATE(TCRRT_COMDATA%HALO1DY%NSEND_SOUTH(NPROC))
-        ALLOCATE(TCRRT_COMDATA%HALO1DY%NSEND_NORTH(NPROC))
-        CALL CONSTRUCT_1DY(TCRRT_COMDATA, TCRRT_PROCONF)
-        !
-        !
-        !*       6.7   Construction of Transposition communication data
-        !
-        CALL CONSTRUCT_TRANS(TCRRT_COMDATA, TCRRT_PROCONF)
-        !
-        !
-        !-------------------------------------------------------------------------------
-        !
-        !        7.    GRID NESTING :
-        !              ------------
-        !
-        NULLIFY(TCRRT_PROCONF%TCHILDREN)
-        NULLIFY(TCRRT_COMDATA%TCHILDREN)
-        NULLIFY(TCRRT_COMDATA%TP2C_DATA)
-        !
-        DO JMODEL = 1, JPMODELMAX
-           !
-           IF( NDAD(JMODEL) .EQ. TCRRT_PROCONF%NUMBER ) THEN
-              CALL INI_CHILD(TCRRT_PROCONF, TCRRT_COMDATA, JMODEL)
-           ENDIF
-           !
-        ENDDO
-        !
-        !-------------------------------------------------------------------------------
-        !
-        TZPROCONF => TCRRT_PROCONF
-        !
-        CALL COMPUTE_TRANS_MAX(NBUFFERSIZE_3D, TCRRT_COMDATA)
-        NCOMBUFFSIZE1 = NBUFFERSIZE_3D
-        !JUAN NCOMBUFFSIZE1 = 10000000
-
-        !
-        CALL COMPUTE_HALO_MAX(NMAXSIZEHALO, TCRRT_COMDATA)
-        !
-        !NAG4.0 boom avec le 50 lorsqu'on active les scalaires 
-        !  NBUFFERSIZE_2D = 50*NMAXSIZEHALO
-        NBUFFERSIZE_2D = 150*NMAXSIZEHALO
-        !NAG4.0
-        NCOMBUFFSIZE2 = NBUFFERSIZE_2D
-        !
-        DEALLOCATE(TZDZP)
-        !
-        !-------------------------------------------------------------------------------
-        !
-      END SUBROUTINE INI_PARA_ll
-!
-!     ##################################
-      SUBROUTINE END_PARA_ll( KINFO_ll )
-!     ##################################
-!
-!!****  *END_PARA_ll* - routine to finalize the parallel session
-!
-!!    Purpose
-!!    -------
-!     the purpose of the routine is to end the parallel session
-!
-!!**  Method
-!!    ------
-!
-!!    External
-!!    --------
-!
-!!    Implicit Arguments
-!!    ------------------
-!     Module MODD_DIM_ll
-!       
-!!    Reference
-!!    ---------
-!
-!!    Author
-!!    ------
-!     R. Guivarch
-!
-!!    Modifications
-!!    -------------
-!     Original 01/06/98
-!     R. Guivarch 15/09/99  deallocation of grid-nesting arrays
-!     J. Pianezze 11/2016 - add LOASIS flag
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!
-  USE MODD_DIM_ll
-!  USE MODD_STRUCTURE_ll
-!  USE MODD_VAR_ll, ONLY : NIOUNIT, YOUTPUTFILE
-  USE MODD_IO_ll,          ONLY : ISP
-  USE MODD_SFX_OASIS, ONLY : LOASIS
-!
-#ifdef MNH_GA
-USE MODE_GA
-#endif
-!
-  IMPLICIT NONE
-!
-!*       0.1   declarations of arguments
-!
-  INTEGER, INTENT(OUT) :: KINFO_ll
-
-!
-!*       0.2   declarations of local variables
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.    CALL TO MPI_FINALIZE
-!
-!  CALL CLOSE_ll(YOUTPUTFILE)
-
-#ifdef MNH_GA
-  if (.not. GFIRST_GA ) then
-     call ga_sync()
-     IF (ISP .EQ. 1) THEN
-        call ga_print_stats()
-        call ga_summarize(0)
-     END IF
-     call ga_sync()
-     gstatus_ga =  ga_destroy(g_a)
-     CALL ga_terminate()
-  endif
-#endif
-!
-IF (.NOT. LOASIS) THEN
-  CALL MPI_FINALIZE(KINFO_ll)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.    DEALLOCATION
-!
-  DEALLOCATE(NDXRATIO_ALL, NDYRATIO_ALL)
-  DEALLOCATE(NXOR_ALL, NYOR_ALL) 
-  DEALLOCATE(NXEND_ALL, NYEND_ALL) 
-  DEALLOCATE(NDAD) 
-  DEALLOCATE(CLBCX, CLBCY) 
-!
-END SUBROUTINE END_PARA_ll
-!
-END MODULE MODE_INIT_ll
diff --git a/src/ARCH_SRC/CPL_WAVE/SURCOUCHE/mode_io.f90 b/src/ARCH_SRC/CPL_WAVE/SURCOUCHE/mode_io.f90
deleted file mode 100644
index bc23ed7fd..000000000
--- a/src/ARCH_SRC/CPL_WAVE/SURCOUCHE/mode_io.f90
+++ /dev/null
@@ -1,955 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!--------------- special set of characters for CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-!!    Authors
-!!    -------
-!
-!     D. Gazen
-!     Juan 19/08/2005: bug argument optinonel ACCESS --> YACCESS 
-!     Juan 22/05/2008: bug mode SPECIFIC in OPEN_ll 
-!     Juan 05/11/2009: allow JPMAX_UNIT=48 open files 
-!     J.Escobar   18/10/10   bug with PGI compiler on ADJUSTL
-!     Philippe 04/02/2016: bug with DELIM='NONE' and GCC 5.2/5.3
-!     D.Gazen   : avril 2016 change error message 
-!     J. Pianezze 01/08/2016  add LOASIS flag
-!
-MODULE MODE_IO_ll
-
-  USE MODD_ERRCODES
-  USE MODE_FD_ll
-  USE MODD_MPIF
-  !JUANZ
-  USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
-  !JUANZ
-
-  IMPLICIT NONE 
-
-  PRIVATE
-
-  !INCLUDE 'mpif.h'
-
-  INTEGER, PARAMETER :: JPFNULL = 9       !! /dev/null fortran unit
-  INTEGER, PARAMETER :: JPRESERVED_UNIT   = 11
-  INTEGER, PARAMETER :: JPMAX_UNIT_NUMBER = JPRESERVED_UNIT+300
-  ! 
-  LOGICAL,SAVE :: GALLOC(JPRESERVED_UNIT:JPMAX_UNIT_NUMBER) = .FALSE.
-  !
-  CHARACTER(LEN=*),PARAMETER      :: CFILENULL="/dev/null"
-  !
-  !! Provisoire
-  CHARACTER(LEN=*),PARAMETER :: GLOBAL='GLOBAL'
-  CHARACTER(LEN=*),PARAMETER :: SPECIFIC='SPECIFIC'
-  !!
-  LOGICAL,SAVE :: GCONFIO = .FALSE. ! Turn TRUE when SET_CONFIO_ll is called.
-
-  !! Provisoire
-  PUBLIC IONEWFLU,UPCASE,INITIO_ll,OPEN_ll,CLOSE_ll,FLUSH_ll,GLOBAL,SPECIFIC
-  PUBLIC SET_CONFIO_ll,GCONFIO
-  !JUANZ
-  PUBLIC  io_file,io_rank
-  !JUANZ
-
-CONTAINS 
-
-  FUNCTION IONEWFLU()
-
-    INTEGER :: IONEWFLU
-
-    INTEGER :: JI
-    INTEGER :: IOS
-    LOGICAL :: GEXISTS, GOPENED, GFOUND
-
-    GFOUND = .FALSE.
-
-    DO JI=JPRESERVED_UNIT, JPMAX_UNIT_NUMBER
-       IF (GALLOC(JI)) CYCLE
-       INQUIRE(UNIT=JI, EXIST=GEXISTS, OPENED=GOPENED, IOSTAT=IOS)
-       IF (GEXISTS .AND. .NOT. GOPENED .AND. IOS == 0) THEN
-          IONEWFLU   = JI
-          GFOUND     = .TRUE.
-          GALLOC(JI) = .TRUE.
-          EXIT
-       END IF
-    END DO
-
-    IF (.NOT. GFOUND) IONEWFLU = NOSLOTLEFT
-
-  END FUNCTION IONEWFLU
-
-  SUBROUTINE IOFREEFLU(KOFLU)
-    
-    INTEGER :: KOFLU
-    
-    IF ((KOFLU .GE. JPRESERVED_UNIT) .AND. (KOFLU .LE. JPMAX_UNIT_NUMBER )) THEN 
-       GALLOC(KOFLU) = .FALSE.
-    ELSE
-       print*,"mode_io.f90: IOFREEFLU BAD IUNIT=",KOFLU
-       STOP "mode_io.f90: IOFREEFLU BAD IUNIT"
-    END IF
-
-  END SUBROUTINE IOFREEFLU
-
-  FUNCTION UPCASE(HSTRING)
-    CHARACTER(LEN=*)            :: HSTRING
-    CHARACTER(LEN=LEN(HSTRING)) :: UPCASE
-
-    INTEGER :: JC
-    INTEGER, PARAMETER :: IAMIN = IACHAR("a")
-    INTEGER, PARAMETER :: IAMAJ = IACHAR("A")
-
-    DO JC=1,LEN(HSTRING)
-       IF (HSTRING(JC:JC) >= "a" .AND. HSTRING(JC:JC) <= "z") THEN
-          UPCASE(JC:JC) = ACHAR(IACHAR(HSTRING(JC:JC)) - IAMIN + IAMAJ)
-       ELSE
-          UPCASE(JC:JC) = HSTRING(JC:JC)
-       END IF
-    END DO
-
-  END FUNCTION UPCASE
-
-  SUBROUTINE SET_CONFIO_ll(OIOCDF4, OFORCELFIOUT, OFORCELFIREAD)
-    USE MODD_IO_ll, ONLY : LIOCDF4, LLFIOUT, LLFIREAD
-    LOGICAL, INTENT(IN)           :: OIOCDF4
-    LOGICAL, INTENT(IN), OPTIONAL :: OFORCELFIOUT, OFORCELFIREAD
-
-    LOGICAL :: GFORCELFIOUT, GFORCELFIREAD
-
-    IF (GCONFIO) THEN
-       PRINT *, 'SET_CONFIO_ll already called (ignoring this call).' 
-    ELSE
-       IF (PRESENT(OFORCELFIOUT)) THEN
-          GFORCELFIOUT = OFORCELFIOUT
-       ELSE
-          GFORCELFIOUT = .FALSE.
-       END IF
-       IF (PRESENT(OFORCELFIREAD)) THEN
-          GFORCELFIREAD = OFORCELFIREAD
-       ELSE
-          GFORCELFIREAD = .FALSE.
-       END IF
-
-#if defined(MNH_IOCDF4)
-       !PRINT *, 'SET_CONFIO_ll : sources compiled WITH IOCDF4 support.'       
-       LIOCDF4  = OIOCDF4
-       LLFIOUT  = (.NOT. OIOCDF4 .OR. GFORCELFIOUT)
-       LLFIREAD = GFORCELFIREAD
-#else
-       !PRINT *, 'SET_CONFIO_ll : sources compiled WITHOUT IOCDF4 support.'       
-       LIOCDF4 = .FALSE.
-       LLFIOUT = .TRUE.
-       LLFIREAD = .TRUE.
-#endif       
-       GCONFIO = .TRUE.
-    END IF
-    
-  END SUBROUTINE SET_CONFIO_ll
-  
-  SUBROUTINE INITIO_ll()
-    USE  MODE_MNH_WORLD , ONLY :  INIT_NMNH_COMM_WORLD
-    USE MODD_SFX_OASIS, ONLY : LOASIS
-    USE MODD_IO_ll
-    IMPLICIT NONE
-
-    INTEGER :: IERR, IOS
-    LOGICAL :: GISINIT
-
-    ISTDERR = 0
-
-    IF (.NOT. LOASIS) THEN
-      CALL MPI_INITIALIZED(GISINIT, IERR)
-      IF (.NOT. GISINIT) THEN
-         !CALL MPI_INIT(IERR)
-         CALL INIT_NMNH_COMM_WORLD(IERR)
-         if (IERR .NE.0) STOP "mode_io.f90::INITIO_ll() MPI_INIT ---> PROBLEME WITH REMAPPING NMNH_COMM_WORLD "
-      END IF
-      !! Now MPI is initialized for sure
-    END IF
-
-    CALL INITFD()
-
-    !! Default number for Processor I/O
-    ISIOP = 1
-
-    !! Get number of allocated processors
-    CALL MPI_COMM_SIZE(NMNH_COMM_WORLD, ISNPROC,IERR)
-    IF (ISNPROC==1) GSMONOPROC = .TRUE.
-
-    !! Store proc number
-    CALL MPI_COMM_RANK(NMNH_COMM_WORLD, ISP, IERR)
-    ISP = ISP + 1
-
-    !! Open /dev/null for GLOBAL mode
-#if defined(DEV_NULL)
-    OPEN(UNIT=JPFNULL,FILE=CFILENULL  ,ACTION='WRITE',IOSTAT=IOS)
-#else
-    OPEN(UNIT=JPFNULL,STATUS='SCRATCH',ACTION='WRITE',IOSTAT=IOS)
-#endif
-    IF (IOS > 0) THEN
-       WRITE(ISTDERR,*) 'Error OPENING /dev/null...'
-       CALL MPI_ABORT(NMNH_COMM_WORLD, IOS, IERR)
-    END IF
-
-    !! Init STDOUT and PIPE
-    IF (ISP == ISIOP) THEN
-       ISTDOUT = 6
-    ELSE
-       ISTDOUT = JPFNULL
-    END IF
-
-  END SUBROUTINE INITIO_ll
-
-  SUBROUTINE OPEN_ll(UNIT,    &
-       FILE,    &
-       MODE,    &
-       LFIPAR,  &
-       COMM,    &
-       STATUS,  &
-       ACCESS,  &
-       IOSTAT,  &
-       FORM,    &
-       RECL,    &
-       BLANK,   &
-       POSITION,&
-       ACTION,  &
-       DELIM,    &
-       PAD,      &
-       KNB_PROCIO,& 
-       KMELEV,&
-       OPARALLELIO)
-#if defined(MNH_IOCDF4)
-  USE MODD_NETCDF
-  USE MODE_NETCDF
-#endif
-  USE MODD_IO_ll
-    INTEGER,         INTENT(OUT)           :: UNIT  !! Different from fortran OPEN
-    CHARACTER(len=*),INTENT(IN),  OPTIONAL :: FILE
-    CHARACTER(len=*),INTENT(IN),  OPTIONAL :: MODE
-    TYPE(LFIPARAM),  POINTER,     OPTIONAL :: LFIPAR
-    CHARACTER(len=*),INTENT(IN),  OPTIONAL :: STATUS
-    CHARACTER(len=*),INTENT(IN),  OPTIONAL :: ACCESS
-    INTEGER,         INTENT(OUT)           :: IOSTAT
-    CHARACTER(len=*),INTENT(IN),  OPTIONAL :: FORM
-    INTEGER,         INTENT(IN),  OPTIONAL :: RECL
-    CHARACTER(len=*),INTENT(IN),  OPTIONAL :: BLANK
-    CHARACTER(len=*),INTENT(IN),  OPTIONAL :: POSITION
-    CHARACTER(len=*),INTENT(IN)            :: ACTION
-    CHARACTER(len=*),INTENT(IN),  OPTIONAL :: DELIM
-    CHARACTER(len=*),INTENT(IN),  OPTIONAL :: PAD
-    INTEGER,         INTENT(IN),  OPTIONAL :: COMM
-    !JUANZ
-    INTEGER,         INTENT(IN),  OPTIONAL :: KNB_PROCIO
-    INTEGER(KIND=LFI_INT), INTENT(IN),  OPTIONAL :: KMELEV    
-    LOGICAL,         INTENT(IN),  OPTIONAL :: OPARALLELIO
-    !JUANZ
-    !
-    ! local var
-    !
-    !JUANZ
-    CHARACTER(len=5)                      :: cfile
-    INTEGER                               :: ifile, irank_procio   
-    TYPE(FD_ll), POINTER                  :: TZFD_IOZ  
-    CHARACTER(len=128)                    :: YFILE_IOZ
-    INTEGER(KIND=LFI_INT)                 :: IRESOU,IMELEV,INPRAR
-    INTEGER(KIND=LFI_INT)                 :: INUMBR8,ININAR8    
-    LOGICAL(KIND=LFI_INT)                 :: GNAMFI8,GFATER8,GSTATS8 
-    !JUANZ
-
-#if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX)
-    CHARACTER(len=20)    :: YSTATUS
-    CHARACTER(len=20)    :: YACCESS
-    CHARACTER(len=20)    :: YFORM
-    INTEGER              :: YRECL
-    INTEGER ,PARAMETER   :: RECL_DEF = 10000
-    CHARACTER(len=20)    :: YBLANK
-    CHARACTER(len=20)    :: YPOSITION
-    CHARACTER(len=20)    :: YDELIM
-    CHARACTER(len=20)    :: YPAD
-    !JUAN
-#endif
-    CHARACTER(len=20)    :: YACTION
-    CHARACTER(len=20)    :: YMODE
-    INTEGER              :: IOS,IERR
-    INTEGER(KIND=IDCDF_KIND) :: IOSCDF
-    INTEGER              :: ICOMM
-    INTEGER              :: ICMPRES
-    TYPE(FD_ll), POINTER :: TZFD, TZFDTEMP
-    ! didier
-    LOGICAL :: GEXISTS,GOPENED
-    INTEGER :: IUNIT
-    ! didier
-    !JUAN SX5 : probleme function retournant un pointer
-    TYPE(FD_ll), POINTER :: TZJUAN
-    LOGICAL               :: GPARALLELIO
-
-    IF ( PRESENT(OPARALLELIO) ) THEN
-      GPARALLELIO = OPARALLELIO
-    ELSE  !par defaut on active les IO paralleles en Z si possible
-      GPARALLELIO = .TRUE.
-    ENDIF
-
-#ifdef MNH_VPP
-    !! BUG Fuji avec RECL non fourni en argument de MYOPEN
-    INTEGER :: IRECSIZE     
-    IF (PRESENT(RECL)) THEN
-       IRECSIZE = RECL
-    ELSE 
-       IRECSIZE = 2147483647  ! Default value for FUJI RECL
-    END IF
-#endif
-
-    IOS = 0
-    IF (PRESENT(COMM)) THEN 
-       ICOMM = COMM
-    ELSE
-       ICOMM = NMNH_COMM_WORLD ! Default communicator
-    END IF
-
-    IF (PRESENT(MODE)) THEN 
-       YMODE = MODE
-       YMODE = UPCASE(TRIM(ADJUSTL(YMODE)))
-    ELSE 
-       YMODE = 'GLOBAL'         ! Default Mode
-    END IF
-
-    YACTION = ACTION
-    YACTION = UPCASE(TRIM(ADJUSTL(YACTION)))
-    IF (YACTION /= "READ" .AND. YACTION /= "WRITE") THEN
-       IOSTAT = 99
-       UNIT = -1
-       WRITE(ISTDERR,*) 'Erreur OPEN_ll : ACTION=',YACTION,' non supportee'
-       RETURN
-    END IF
-
-    IF (.NOT. ANY(YMODE == (/'GLOBAL     ','SPECIFIC   ','DISTRIBUTED' , 'IO_ZSPLIT  '/))) THEN
-       IOSTAT = 99
-       UNIT = -1
-       WRITE(ISTDERR,*) 'OPEN_ll error : MODE UNKNOWN'
-       RETURN
-    END IF
-
-    !JUAN SX5 : probleme function retournant un pointer
-    !IF (.NOT. ASSOCIATED(GETFD(FILE))) THEN
-    TZJUAN=>GETFD(FILE)
-    IF (.NOT. ASSOCIATED(TZJUAN)) THEN 
-       !JUAN SX5 : probleme function retournant un pointer
-       !! File is not already opened : GOOD
-       !! Add a new FD element
-       TZFD=>NEWFD()
-    ELSE 
-       !! Error : File already opened
-       IOSTAT = 99
-       UNIT = -1
-       WRITE(ISTDERR,*) 'OPEN_ll error : File', FILE, 'already opened'
-       RETURN
-    END IF
-
-!!$    CALL MPI_ALLREDUCE(ILOCALERR, IGLOBALERR, 1, MPI_INTEGER, MPI_BOR,&
-!!$         & ICOMM, IERR)
-!!$    IF (IGLOBALERR /= NOERROR) THEN 
-!!$       IOSTAT = GLOBALERR
-!!$       UNIT = -1
-!!$       RETURN 
-!!$    END IF
-
-
-
-    TZFD%NAME = FILE
-    TZFD%MODE = YMODE
-    NULLIFY(TZFD%PARAM)
-
-#if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX)
-    !JUAN
-    IF (PRESENT(STATUS)) THEN
-       YSTATUS=STATUS
-    ELSE
-       YSTATUS='UNKNOWN'
-    ENDIF
-    IF (PRESENT(ACCESS)) THEN
-       YACCESS=ACCESS
-    ELSE
-       YACCESS='SEQUENTIAL'
-    ENDIF
-    IF (PRESENT(FORM)) THEN
-       YFORM=FORM
-    ELSE
-       YFORM='FORMATTED'
-    ENDIF
-    IF (PRESENT(RECL)) THEN
-       YRECL=RECL
-    ELSE
-       YRECL=RECL_DEF
-    ENDIF
-    IF (PRESENT(BLANK)) THEN
-       YBLANK=BLANK
-    ELSE
-       YBLANK='NULL'
-    ENDIF
-    IF (PRESENT(POSITION)) THEN
-       YPOSITION=POSITION
-    ELSE
-       YPOSITION='ASIS'
-    ENDIF
-    IF (PRESENT(DELIM)) THEN
-       YDELIM=DELIM
-    ELSE
-       YDELIM='NONE'
-    ENDIF
-    IF (PRESENT(PAD)) THEN
-       YPAD=PAD
-    ELSE
-       YPAD='YES'
-    ENDIF
-#endif
-
-    SELECT CASE(YMODE)
-
-    CASE('GLOBAL')
-       IF (YACTION == 'READ') THEN
-          TZFD%OWNER = ISP
-       ELSE 
-          TZFD%OWNER = ISIOP
-       END IF
-
-       IF (ISP == TZFD%OWNER) THEN 
-          !! I/O processor case
-
-          TZFD%FLU = IONEWFLU()
-#ifdef MNH_VPP
-          OPEN(UNIT=TZFD%FLU,       &
-               FILE=TRIM(TZFD%NAME),&
-               STATUS=STATUS,       &
-               ACCESS=ACCESS,       &
-               IOSTAT=IOS,          &
-               FORM=FORM,           &
-               RECL=IRECSIZE,       &
-               BLANK=BLANK,         &
-               POSITION=POSITION,   &
-               ACTION=YACTION,      &
-               DELIM=DELIM,         &
-               PAD=PAD)
-
-#else
-#if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX)
-          !JUAN : 31/03/2000 modif pour acces direct
-          IF (YACCESS=='DIRECT') THEN
-             OPEN(UNIT=TZFD%FLU,       &
-                  FILE=TRIM(TZFD%NAME),&
-                  STATUS=YSTATUS,       &
-                  ACCESS=YACCESS,       &
-                  IOSTAT=IOS,          &
-                  FORM=YFORM,           &
-                  RECL=YRECL,           &
-                  ACTION=YACTION)
-          ELSE
-             IF (YFORM=="FORMATTED") THEN
-               IF (ACTION=='READ') THEN
-                OPEN(UNIT=TZFD%FLU,       &
-                     FILE=TRIM(TZFD%NAME),&
-                     STATUS=YSTATUS,       &
-                     ACCESS=YACCESS,       &
-                     IOSTAT=IOS,          &
-                     FORM=YFORM,           &
-                     RECL=YRECL,           &
-                     BLANK=YBLANK,         &
-                     POSITION=YPOSITION,   &
-                     ACTION=YACTION,      &
-                     !DELIM=YDELIM,         & !Philippe: commented because bug with GCC 5.X
-                     PAD=YPAD)
-               ELSE
-                OPEN(UNIT=TZFD%FLU,       &
-                     FILE=TRIM(TZFD%NAME),&
-                     STATUS=YSTATUS,       &
-                     ACCESS=YACCESS,       &
-                     IOSTAT=IOS,          &
-                     FORM=YFORM,           &
-                     RECL=YRECL,           &
-                     BLANK=YBLANK,         &
-                     POSITION=YPOSITION,   &
-                     ACTION=YACTION,      &
-                     DELIM=YDELIM,         &
-                     PAD=YPAD)
-               ENDIF
-             ELSE
-                OPEN(UNIT=TZFD%FLU,       &
-                     FILE=TRIM(TZFD%NAME),&
-                     STATUS=YSTATUS,       &
-                     ACCESS=YACCESS,       &
-                     IOSTAT=IOS,          &
-                     FORM=YFORM,           &
-                     RECL=YRECL,           &
-                     POSITION=YPOSITION,   &
-                     ACTION=YACTION)
-             ENDIF
-          ENDIF
-
-
-          !print*,' OPEN_ll'
-          !print*,' OPEN(UNIT=',TZFD%FLU       
-          !print*,' FILE=',TRIM(TZFD%NAME)
-          !print*,' STATUS=',YSTATUS       
-          !print*,' ACCESS=',YACCESS
-          !print*,' IOSTAT=',IOS
-          !print*,' FORM=',YFORM
-          !print*,' RECL=',YRECL
-          !print*,' BLANK=',YBLANK
-          !print*,' POSITION=',YPOSITION
-          !print*,' ACTION=',YACTION
-          !print*,' DELIM=',YDELIM
-          !print*,' PAD=',YPAD
-#else
-          OPEN(UNIT=TZFD%FLU,       &
-               FILE=TRIM(TZFD%NAME),&
-               STATUS=STATUS,       &
-               ACCESS=ACCESS,       &
-               IOSTAT=IOS,          &
-               FORM=FORM,           &
-               RECL=RECL,           &
-               BLANK=BLANK,         &
-               POSITION=POSITION,   &
-               ACTION=YACTION,      &
-               DELIM=DELIM,         &
-               PAD=PAD)
-#endif
-
-#endif
-
-       ELSE 
-          !! NON I/O processors case
-          IOS = 0
-          TZFD%FLU = JPFNULL 
-       END IF
-
-    CASE('SPECIFIC')
-       TZFD%OWNER = ISP
-       TZFD%FLU = IONEWFLU()
-
-#ifdef MNH_VPP
-       OPEN(UNIT=TZFD%FLU,                      &
-            FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
-            STATUS=STATUS,                         &
-            ACCESS=ACCESS,                         &
-            IOSTAT=IOS,                            &
-            FORM=FORM,                             &
-            RECL=IRECSIZE,                         &
-            BLANK=BLANK,                           &
-            POSITION=POSITION,                     &
-            ACTION=YACTION,                        &
-            DELIM=DELIM,                           &
-            PAD=PAD)
-
-#else
-#if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX)
-       IF (ACCESS=='DIRECT') THEN
-          OPEN(UNIT=TZFD%FLU,       &
-               FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
-               STATUS=YSTATUS,       &
-               ACCESS=YACCESS,       &
-               IOSTAT=IOS,          &
-               FORM=YFORM,           &
-               RECL=YRECL,           &
-               ACTION=YACTION)
-       ELSE
-        IF (ACTION=='READ') THEN
-          OPEN(UNIT=TZFD%FLU,                      &
-               FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
-               STATUS=YSTATUS,                         &
-               ACCESS=YACCESS,                         &
-               IOSTAT=IOS,                             &
-               FORM=YFORM,                             &
-               RECL=YRECL,                             &
-               BLANK=YBLANK,                           &
-               POSITION=YPOSITION,                     &
-               ACTION=YACTION,                         &
-               !DELIM=YDELIM,         & !Philippe: commented because bug with GCC 5.X
-               PAD=YPAD)
-         ELSE
-          OPEN(UNIT=TZFD%FLU,                      &
-               FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
-               STATUS=YSTATUS,                         &
-               ACCESS=YACCESS,                         &
-               IOSTAT=IOS,                             &
-               FORM=YFORM,                             &
-               RECL=YRECL,                             &
-               BLANK=YBLANK,                           &
-               POSITION=YPOSITION,                     &
-               ACTION=YACTION,                         &
-               DELIM=YDELIM,                           &
-               PAD=YPAD)
-         ENDIF
-       ENDIF
-#else
-       OPEN(UNIT=TZFD%FLU,                      &
-            FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
-            STATUS=STATUS,                         &
-            ACCESS=ACCESS,                         &
-            IOSTAT=IOS,                            &
-            FORM=FORM,                             &
-            RECL=RECL,                             &
-            BLANK=BLANK,                           &
-            POSITION=POSITION,                     &
-            ACTION=YACTION,                        &
-            DELIM=DELIM,                           &
-            PAD=PAD)
-#endif
-
-#endif
-
-    CASE('DISTRIBUTED')
-       TZFD%OWNER = ISIOP
-       IF (.NOT. PRESENT(LFIPAR)) THEN
-          PRINT *,"ERROR OPEN_ll : LFI non present"
-          RETURN
-       END IF
-       TZFD%PARAM=>LFIPAR
-
-       IF (ISP == TZFD%OWNER) THEN 
-          TZFD%FLU = IONEWFLU()
-       ELSE 
-          !! NON I/O processors case
-          IOS = 0
-          TZFD%FLU = -1
-       END IF
-
-    CASE('IO_ZSPLIT')
-
-       TZFD%OWNER = ISIOP
-       TZFD%NAME  = TRIM(FILE)//".lfi"
-       IF (PRESENT(KNB_PROCIO)) THEN
-          TZFD%NB_PROCIO = KNB_PROCIO
-       ELSE
-          TZFD%NB_PROCIO = 1
-       ENDIF
-       IF( .NOT. GPARALLELIO ) THEN
-         TZFD%NB_PROCIO = 1
-       ENDIF
-       TZFD%COMM = NMNH_COMM_WORLD
-       TZFD%PARAM     =>LFIPAR
-#if defined(MNH_IOCDF4)
-       IF (ISP == TZFD%OWNER .AND. (.NOT. LIOCDF4 .OR. (YACTION=='WRITE' .AND. LLFIOUT) &
-            &                                     .OR. (YACTION=='READ'  .AND. LLFIREAD))) THEN
-#else
-       IF (ISP == TZFD%OWNER) THEN
-#endif
-             TZFD%FLU = IONEWFLU()
-       ELSE 
-          !! NON I/O processors OR NetCDF read case 
-          IOS = 0
-          TZFD%FLU = -1
-       END IF
-       IF (TZFD%NB_PROCIO .GT. 1 ) THEN
-          DO ifile=0,TZFD%NB_PROCIO-1
-             irank_procio = 1 + io_rank(ifile,ISNPROC,TZFD%NB_PROCIO)
-             write(cfile ,'(".Z",i3.3)') ifile+1
-             YFILE_IOZ           = TRIM(FILE)//cfile//".lfi"
-             TZFD_IOZ           =>NEWFD()
-             TZFD_IOZ%NAME      = YFILE_IOZ
-             TZFD_IOZ%MODE      = 'IO_ZSPLIT'
-             TZFD_IOZ%OWNER     = irank_procio
-             TZFD_IOZ%COMM      = NMNH_COMM_WORLD
-             TZFD_IOZ%NB_PROCIO = TZFD%NB_PROCIO
-             TZFD_IOZ%FLU       = -1
-             TZFD_IOZ%PARAM     =>LFIPAR
-
-             IF ( irank_procio .EQ. ISP ) THEN
-#if defined(MNH_IOCDF4)                   
-                IF (LIOCDF4) THEN
-                   IF (YACTION == 'READ' .AND. .NOT. LLFIREAD) THEN
-                      ! Open NetCDF File for reading
-                      TZFD_IOZ%CDF => NEWIOCDF()
-                      IOSCDF = NF_OPEN(TRIM(FILE)//cfile//".nc4", NF_NOWRITE, TZFD_IOZ%CDF%NCID)
-                      IF (IOSCDF /= NF_NOERR) THEN
-   PRINT *, 'Error in opening (NF_OPEN) ', TRIM(FILE)//cfile//'.nc4', ' : ', NF_STRERROR(IOS)
-                         STOP
-                      ELSE
-                         IOS = 0
-                      END IF
-                      PRINT *, 'NF_OPEN(IO_ZSPLIT): ',TRIM(FILE)//cfile//'.nc4'
-                   END IF
-                   
-                   IF (YACTION == 'WRITE') THEN
-                      ! YACTION == 'WRITE'
-                      ! Create NetCDF File for writing
-                      TZFD_IOZ%CDF => NEWIOCDF()
-                      IOSCDF = NF_CREATE(TRIM(FILE)//cfile//".nc4", &
-                           &IOR(NF_CLOBBER,NF_NETCDF4), TZFD_IOZ%CDF%NCID)
-                      IF (IOSCDF /= NF_NOERR) THEN
-                         PRINT *, 'Error in opening (NF_CREATE) ', TRIM(FILE)//cfile//'.nc4', ' : ', NF_STRERROR(IOS)
-                         STOP
-                      ELSE
-                         IOS = 0
-                      END IF
-                      PRINT *, 'NF_CREATE(IO_ZSPLIT): ',TRIM(FILE)//cfile//'.nc4'
-                   END IF
-                END IF
-#endif
-                IF (.NOT. LIOCDF4 .OR. (YACTION=='WRITE' .AND. LLFIOUT)&
-                     &            .OR. (YACTION=='READ'  .AND. LLFIREAD)) THEN
-                   ! LFI case
-                   ! Open LFI File for reading
-                   !this proc must write on this file open it ...    
-                   TZFD_IOZ%FLU       = IONEWFLU()
-                   !! LFI-File case
-                   IRESOU = 0
-                   GNAMFI8 = .TRUE.
-                   GFATER8 = .TRUE.
-                   GSTATS8 = .FALSE.
-                   IF (PRESENT(KMELEV)) THEN
-                      IMELEV = KMELEV
-                   ELSE
-                      IMELEV = 0
-                   ENDIF
-                   INPRAR = 49
-                   !
-                   ! JUAN open lfi file temporary modif
-                   !
-                   INUMBR8 = TZFD_IOZ%FLU
-                   CALL LFIOUV(IRESOU,     &
-                        INUMBR8,           &
-                        GNAMFI8,           &
-                        TZFD_IOZ%NAME,     &
-                        "UNKNOWN",         &
-                        GFATER8,           &
-                        GSTATS8,           &
-                        IMELEV,            &
-                        INPRAR,            &
-                        ININAR8)
-                   !KNINAR = ININAR8
-                END IF
-             ENDIF
-          ENDDO
-       END IF
-
-
-    END SELECT
-
-    ! Recherche d'un communicateur a reutiliser
-    ! TZFD is the first element
-
-    TZFD%COMM = ICOMM
-!!$    TZFD%COMM = MPI_COMM_NULL
-
-!!$    TZFDTEMP=>TZFD%NEXT
-!!$    DO WHILE(ASSOCIATED(TZFDTEMP))
-!!$       CALL MPI_COMM_COMPARE(ICOMM,TZFDTEMP%COMM,ICMPRES,IERR)
-!!$       IF (ICMPRES == MPI_CONGRUENT) THEN
-!!$          TZFD%COMM = TZFDTEMP%COMM
-!!$          EXIT
-!!$       END IF
-!!$       TZFDTEMP=>TZFDTEMP%NEXT
-!!$    END DO
-!!$
-!!$    IF (TZFD%COMM == MPI_COMM_NULL) THEN
-!!$       ! Pas de communicateur equivalent -> on duplique
-!!$       !
-!!$       CALL MPI_COMM_DUP(ICOMM, TZFD%COMM, IERR)
-!!$       !       WRITE(ISTDOUT,*) 'FILE = ',TZFD%NAME,', comm ',TZFD%COMM&
-!!$       !            & , ' cree par duplication de comm ', ICOMM
-!!$    END IF
-
-    IOSTAT = IOS
-    UNIT = TZFD%FLU
-
-  CONTAINS
-    FUNCTION SUFFIX(HEXT)
-
-      CHARACTER(len=*)             :: HEXT
-      CHARACTER(len=LEN(HEXT)+3)   :: SUFFIX
-
-      WRITE(SUFFIX,'(A,i3.3)') TRIM(HEXT), ISP
-
-    END FUNCTION SUFFIX
-
-  END SUBROUTINE OPEN_ll
-
-  SUBROUTINE CLOSE_ll(HFILE,IOSTAT,STATUS,OPARALLELIO)
-  USE MODD_IO_ll
-#if defined(MNH_IOCDF4)
-  USE MODE_NETCDF
-#endif
-    CHARACTER(LEN=*), INTENT(IN)            :: HFILE
-    INTEGER,          INTENT(OUT), OPTIONAL :: IOSTAT
-    CHARACTER(LEN=*), INTENT(IN),  OPTIONAL :: STATUS
-    LOGICAL,          INTENT(IN),  OPTIONAL :: OPARALLELIO
-
-    TYPE(FD_ll), POINTER :: TZFD
-    INTEGER :: OLDCOMM
-
-    INTEGER :: IERR, IGLOBALERR, IRESP
-
-    CHARACTER(LEN=100)                      :: STATUSL
-    !JUANZ
-    CHARACTER(len=5)                      :: yfile
-    INTEGER                               :: ifile, irank_procio,ilen   
-    TYPE(FD_ll), POINTER                  :: TZFD_IOZ  
-    CHARACTER(len=128)                    :: YFILE_IOZ
-    INTEGER(KIND=LFI_INT)                 :: IRESP8,INUM8
-    CHARACTER(LEN=7)                      :: YSTATU  
-    LOGICAL                               :: GPARALLELIO
-
-    IF ( PRESENT(OPARALLELIO) ) THEN
-      GPARALLELIO = OPARALLELIO
-    ELSE  !par defaut on active les IO paralleles en Z si possible
-      GPARALLELIO = .TRUE.
-    ENDIF
-    !JUANZ
-
-    TZFD=>GETFD(HFILE)
-
-    IF (.NOT. ASSOCIATED(TZFD)) THEN
-       WRITE(ISTDOUT,*) 'Erreur CLOSE_ll : Fichier : ', HFILE, ' non&
-            & present...'
-       IF (PRESENT(IOSTAT)) IOSTAT = BADVALUE
-       RETURN
-    END IF
-
-    IRESP      = 0
-    IGLOBALERR = 0
-    IF (PRESENT(STATUS))  THEN
-       STATUSL = STATUS
-    ELSE
-       STATUSL = "KEEP"
-    ENDIF
-
-    SELECT CASE(TZFD%MODE)
-    CASE('GLOBAL','SPECIFIC')
-       IF (TZFD%OWNER == ISP) THEN
-          CLOSE(UNIT=TZFD%FLU, IOSTAT=IRESP,STATUS=STATUSL)
-          CALL IOFREEFLU(TZFD%FLU)
-       END IF
-       CALL MPI_ALLREDUCE(IRESP,IGLOBALERR,1,MPI_INTEGER,MPI_BOR,TZFD&
-            & %COMM,IERR)
-    CASE('DISTRIBUTED')
-       ! nothing to close with FM-Files
-
-    CASE('IO_ZSPLIT')
-       !
-       ! close LFI file in the different PROC
-       !
-       IF( .NOT. GPARALLELIO ) THEN
-         TZFD%NB_PROCIO = 1
-       ENDIF
-       IF (TZFD%NB_PROCIO .GT. 1 ) THEN
-          DO ifile=0,TZFD%NB_PROCIO-1
-             irank_procio = 1 + io_rank(ifile,ISNPROC,TZFD%NB_PROCIO)
-             write(yfile ,'(".Z",i3.3)') ifile+1
-             ilen = len_trim(TZFD%NAME)
-             YFILE_IOZ   = TRIM(TZFD%NAME(1:ilen-4))//yfile//".lfi"
-             TZFD_IOZ => GETFD(YFILE_IOZ)
-             IF (ISP == TZFD_IOZ%OWNER) THEN
-                IF (TZFD_IOZ%FLU > 0) THEN
-                   INUM8=TZFD_IOZ%FLU
-                   CALL LFIFER(IRESP8,INUM8,YSTATU)
-                   CALL IOFREEFLU(TZFD_IOZ%FLU)
-                   IRESP = IRESP8
-                END IF
-                IF (ASSOCIATED(TZFD_IOZ%CDF)) CALL CLEANIOCDF(TZFD_IOZ%CDF)
-             END IF
-          END DO
-       END IF
-    END SELECT
-
-    OLDCOMM = TZFD%COMM   !! Recopie dans var. temporaire
-
-    CALL DELFD(TZFD)
-
-!!$    IF (IRESP == IGLOBALERR) THEN
-!!$
-!!$       ! liberation du communicateur
-!!$       !
-!!$       TZFD=>GETFD(OLDCOMM)
-!!$
-!!$       IF (.NOT. ASSOCIATED(TZFD)) THEN
-!!$          CALL MPI_COMM_FREE(OLDCOMM, IERR)
-!!$       END IF
-!!$    END IF
-
-    IF (PRESENT(IOSTAT)) IOSTAT = IGLOBALERR
-
-  END SUBROUTINE CLOSE_ll
-
-  SUBROUTINE FLUSH_ll(HFILE,IRESP)
-#if defined(NAGf95)
-    USE F90_UNIX
-#endif
-    USE MODD_IO_ll
-    CHARACTER(LEN=*), INTENT(IN)            :: HFILE
-    INTEGER,          INTENT(OUT), OPTIONAL :: IRESP
-
-    TYPE(FD_ll), POINTER :: TZFD
-    INTEGER              :: IUNIT
-
-    IRESP=0
-    TZFD=>GETFD(HFILE)
-    IF (.NOT. ASSOCIATED(TZFD)) THEN
-       WRITE(ISTDOUT,*) 'Error in FLUSH_ll : file ',TRIM(HFILE),&
-            &' not present !'
-       IF (PRESENT(IRESP)) IRESP = BADVALUE
-       RETURN
-    END IF
-
-    IUNIT=TZFD%FLU
-    IF (TZFD%OWNER == ISP .AND. TZFD%MODE /= 'DISTRIBUTED') THEN
-#if defined(MNH_SP4)
-       CALL FLUSH(IUNIT)
-#else
-       CALL FLUSH(IUNIT)
-#endif
-    END IF
-
-  END SUBROUTINE FLUSH_ll
-
-  FUNCTION io_file(k,nb_proc_io)
-    !
-    ! return the file number where to write the K level of data
-    !
-    IMPLICIT NONE
-    INTEGER(kind=MNH_MPI_RANK_KIND)                   :: k,nb_proc_io
-    INTEGER(kind=MNH_MPI_RANK_KIND)                   :: io_file
-
-    io_file = MOD ((k-1) , nb_proc_io )
-
-  END FUNCTION io_file
-
-  FUNCTION io_rank(ifile,nb_proc,nb_proc_io,offset_rank)
-    !
-    ! return the proc number which must write the 'ifile' file
-    !
-    IMPLICIT NONE
-    INTEGER(kind=MNH_MPI_RANK_KIND)                  :: ifile,nb_proc,nb_proc_io
-    INTEGER(kind=MNH_MPI_RANK_KIND),OPTIONAL         :: offset_rank
-
-    INTEGER(kind=MNH_MPI_RANK_KIND)                  :: io_rank
-
-    INTEGER(kind=MNH_MPI_RANK_KIND)                  :: ipas,irest
-
-    ipas  =        nb_proc / nb_proc_io
-    irest =  MOD ( nb_proc , nb_proc_io )
-
-    IF  (ipas /= 0 ) THEN
-       io_rank=ipas * ifile + MIN(ifile , irest )
-    ELSE
-       io_rank=MOD(ifile , nb_proc )
-    ENDIF
-
-    !
-    ! optional rank to shift for read test
-    !
-    IF (PRESENT(offset_rank)) THEN
-       IF ( offset_rank .GT.0 ) io_rank=MOD(io_rank+offset_rank,nb_proc)
-       IF ( offset_rank .LT.0 ) io_rank=MOD(nb_proc-io_rank+offset_rank,nb_proc)
-    ENDIF
-
-  END FUNCTION io_rank
-
-
-END MODULE MODE_IO_ll
diff --git a/src/ARCH_SRC/CPL_WAVE/MNH/mnh_oasis_define.F90 b/src/OASIS/MNH/mnh_oasis_define.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/MNH/mnh_oasis_define.F90
rename to src/OASIS/MNH/mnh_oasis_define.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/MNH/mnh_oasis_grid.F90 b/src/OASIS/MNH/mnh_oasis_grid.F90
similarity index 99%
rename from src/ARCH_SRC/CPL_WAVE/MNH/mnh_oasis_grid.F90
rename to src/OASIS/MNH/mnh_oasis_grid.F90
index 1695eddad..22d99b6c0 100644
--- a/src/ARCH_SRC/CPL_WAVE/MNH/mnh_oasis_grid.F90
+++ b/src/OASIS/MNH/mnh_oasis_grid.F90
@@ -64,7 +64,7 @@ USE MOD_OASIS
 #endif
 !
 USE MODD_PARAMETERS,  ONLY : XUNDEF
-USE MODD_IO_SURF_MNH, ONLY : NHALO, NLUOUT
+USE MODD_IO_SURF_MNH, ONLY : NHALO
 USE MODD_CST,         ONLY : XPI, XRADIUS
 USE MODD_DIM_n,       ONLY : NIMAX_ll, NJMAX_ll, NIMAX, NJMAX
 USE MODD_PARAMETERS,  ONLY : JPHEXT
diff --git a/src/ARCH_SRC/CPL_WAVE/MNH/mnh_oasis_recv.F90 b/src/OASIS/MNH/mnh_oasis_recv.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/MNH/mnh_oasis_recv.F90
rename to src/OASIS/MNH/mnh_oasis_recv.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/MNH/mnh_oasis_send.F90 b/src/OASIS/MNH/mnh_oasis_send.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/MNH/mnh_oasis_send.F90
rename to src/OASIS/MNH/mnh_oasis_send.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/coare30_flux.F90 b/src/OASIS/SURFEX/coare30_flux.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/coare30_flux.F90
rename to src/OASIS/SURFEX/coare30_flux.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/coare30_seaflux.F90 b/src/OASIS/SURFEX/coare30_seaflux.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/coare30_seaflux.F90
rename to src/OASIS/SURFEX/coare30_seaflux.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/coupling_seafluxn.F90 b/src/OASIS/SURFEX/coupling_seafluxn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/coupling_seafluxn.F90
rename to src/OASIS/SURFEX/coupling_seafluxn.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/dealloc_seafluxn.F90 b/src/OASIS/SURFEX/dealloc_seafluxn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/dealloc_seafluxn.F90
rename to src/OASIS/SURFEX/dealloc_seafluxn.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/default_prep_seaflux.F90 b/src/OASIS/SURFEX/default_prep_seaflux.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/default_prep_seaflux.F90
rename to src/OASIS/SURFEX/default_prep_seaflux.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/default_seaflux.F90 b/src/OASIS/SURFEX/default_seaflux.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/default_seaflux.F90
rename to src/OASIS/SURFEX/default_seaflux.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/diag_cpl_esm_sea.F90 b/src/OASIS/SURFEX/diag_cpl_esm_sea.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/diag_cpl_esm_sea.F90
rename to src/OASIS/SURFEX/diag_cpl_esm_sea.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/diag_inline_seafluxn.F90 b/src/OASIS/SURFEX/diag_inline_seafluxn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/diag_inline_seafluxn.F90
rename to src/OASIS/SURFEX/diag_inline_seafluxn.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/diag_seaflux_initn.F90 b/src/OASIS/SURFEX/diag_seaflux_initn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/diag_seaflux_initn.F90
rename to src/OASIS/SURFEX/diag_seaflux_initn.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/get_sfx_sea.F90 b/src/OASIS/SURFEX/get_sfx_sea.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/get_sfx_sea.F90
rename to src/OASIS/SURFEX/get_sfx_sea.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/get_sfx_wave.F90 b/src/OASIS/SURFEX/get_sfx_wave.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/get_sfx_wave.F90
rename to src/OASIS/SURFEX/get_sfx_wave.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/get_sfxcpln.F90 b/src/OASIS/SURFEX/get_sfxcpln.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/get_sfxcpln.F90
rename to src/OASIS/SURFEX/get_sfxcpln.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/init_seafluxn.F90 b/src/OASIS/SURFEX/init_seafluxn.F90
similarity index 99%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/init_seafluxn.F90
rename to src/OASIS/SURFEX/init_seafluxn.F90
index e22e2a731..e718fd1bb 100644
--- a/src/ARCH_SRC/CPL_WAVE/SURFEX/init_seafluxn.F90
+++ b/src/OASIS/SURFEX/init_seafluxn.F90
@@ -415,7 +415,8 @@ ENDIF
 !
  CALL INIT_CHEMICAL_n(ILUOUT, KSV, HSV, SM%CHS%SVS,           &
                      SM%CHS%CCH_NAMES, SM%CHS%CAER_NAMES,     &
-                     HDSTNAMES=SM%CHS%CDSTNAMES, HSLTNAMES=SM%CHS%CSLTNAMES        )
+                     HDSTNAMES=SM%CHS%CDSTNAMES, HSLTNAMES=SM%CHS%CSLTNAMES,  &
+                     HSNWNAMES=SM%CHS%CSNWNAMES     )
 !
 !* deposition scheme
 !
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/modd_prep_seaflux.F90 b/src/OASIS/SURFEX/modd_prep_seaflux.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/modd_prep_seaflux.F90
rename to src/OASIS/SURFEX/modd_prep_seaflux.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/modd_seafluxn.F90 b/src/OASIS/SURFEX/modd_seafluxn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/modd_seafluxn.F90
rename to src/OASIS/SURFEX/modd_seafluxn.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/modd_sfx_oasis.F90 b/src/OASIS/SURFEX/modd_sfx_oasis.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/modd_sfx_oasis.F90
rename to src/OASIS/SURFEX/modd_sfx_oasis.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/mode_read_netcdf_mercator.F90 b/src/OASIS/SURFEX/mode_read_netcdf_mercator.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/mode_read_netcdf_mercator.F90
rename to src/OASIS/SURFEX/mode_read_netcdf_mercator.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/modn_prep_seaflux.F90 b/src/OASIS/SURFEX/modn_prep_seaflux.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/modn_prep_seaflux.F90
rename to src/OASIS/SURFEX/modn_prep_seaflux.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/modn_seafluxn.F90 b/src/OASIS/SURFEX/modn_seafluxn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/modn_seafluxn.F90
rename to src/OASIS/SURFEX/modn_seafluxn.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/modn_sfx_oasis.F90 b/src/OASIS/SURFEX/modn_sfx_oasis.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/modn_sfx_oasis.F90
rename to src/OASIS/SURFEX/modn_sfx_oasis.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/prep_hor_seaflux_field.F90 b/src/OASIS/SURFEX/prep_hor_seaflux_field.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/prep_hor_seaflux_field.F90
rename to src/OASIS/SURFEX/prep_hor_seaflux_field.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/prep_seaflux.F90 b/src/OASIS/SURFEX/prep_seaflux.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/prep_seaflux.F90
rename to src/OASIS/SURFEX/prep_seaflux.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/prep_seaflux_netcdf.F90 b/src/OASIS/SURFEX/prep_seaflux_netcdf.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/prep_seaflux_netcdf.F90
rename to src/OASIS/SURFEX/prep_seaflux_netcdf.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/prep_seaflux_unif.F90 b/src/OASIS/SURFEX/prep_seaflux_unif.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/prep_seaflux_unif.F90
rename to src/OASIS/SURFEX/prep_seaflux_unif.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/put_sfx_sea.F90 b/src/OASIS/SURFEX/put_sfx_sea.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/put_sfx_sea.F90
rename to src/OASIS/SURFEX/put_sfx_sea.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/put_sfx_wave.F90 b/src/OASIS/SURFEX/put_sfx_wave.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/put_sfx_wave.F90
rename to src/OASIS/SURFEX/put_sfx_wave.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/put_sfxcpln.F90 b/src/OASIS/SURFEX/put_sfxcpln.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/put_sfxcpln.F90
rename to src/OASIS/SURFEX/put_sfxcpln.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/read_lcover.F90 b/src/OASIS/SURFEX/read_lcover.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/read_lcover.F90
rename to src/OASIS/SURFEX/read_lcover.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/read_nam_prep_seafluxn.F90 b/src/OASIS/SURFEX/read_nam_prep_seafluxn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/read_nam_prep_seafluxn.F90
rename to src/OASIS/SURFEX/read_nam_prep_seafluxn.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/read_namelists_seafluxn.F90 b/src/OASIS/SURFEX/read_namelists_seafluxn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/read_namelists_seafluxn.F90
rename to src/OASIS/SURFEX/read_namelists_seafluxn.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/read_prep_seaflux_conf.F90 b/src/OASIS/SURFEX/read_prep_seaflux_conf.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/read_prep_seaflux_conf.F90
rename to src/OASIS/SURFEX/read_prep_seaflux_conf.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/read_seafluxn.F90 b/src/OASIS/SURFEX/read_seafluxn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/read_seafluxn.F90
rename to src/OASIS/SURFEX/read_seafluxn.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_define.F90 b/src/OASIS/SURFEX/sfx_oasis_define.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_define.F90
rename to src/OASIS/SURFEX/sfx_oasis_define.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_init.F90 b/src/OASIS/SURFEX/sfx_oasis_init.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_init.F90
rename to src/OASIS/SURFEX/sfx_oasis_init.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_read_nam.F90 b/src/OASIS/SURFEX/sfx_oasis_read_nam.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_read_nam.F90
rename to src/OASIS/SURFEX/sfx_oasis_read_nam.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_recv.F90 b/src/OASIS/SURFEX/sfx_oasis_recv.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_recv.F90
rename to src/OASIS/SURFEX/sfx_oasis_recv.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_send.F90 b/src/OASIS/SURFEX/sfx_oasis_send.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/sfx_oasis_send.F90
rename to src/OASIS/SURFEX/sfx_oasis_send.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/write_lcover.F90 b/src/OASIS/SURFEX/write_lcover.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/write_lcover.F90
rename to src/OASIS/SURFEX/write_lcover.F90
diff --git a/src/ARCH_SRC/CPL_WAVE/SURFEX/writesurf_seafluxn.F90 b/src/OASIS/SURFEX/writesurf_seafluxn.F90
similarity index 100%
rename from src/ARCH_SRC/CPL_WAVE/SURFEX/writesurf_seafluxn.F90
rename to src/OASIS/SURFEX/writesurf_seafluxn.F90
-- 
GitLab