From 66cb6b92bd36f5c50341313860c8b44a3871738a Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 20 Mar 2023 16:59:36 +0100
Subject: [PATCH] Philippe 21/03/2023: ZSOLVER: continue transfer and merging
 of ZSOLVER/ sources into MNH/ (work in progress, compilation OK, runs MNH
 CPU+GPU OK, runs ZSOLVER CPU-only OK)

---
 src/MNH/anel_balancen.f90     |   45 +-
 src/MNH/ini_dynamics.f90      |   55 +-
 src/MNH/ini_modeln.f90        |   25 +-
 src/MNH/ini_spectren.f90      |   13 +-
 src/MNH/modd_dynn.f90         |   44 +-
 src/MNH/modeln.f90            |    9 +-
 src/MNH/pressurez.f90         |   22 +
 src/MNH/read_exsegn.f90       |    7 +-
 src/MNH/tridz.f90             |   42 +-
 src/ZSOLVER/anel_balancen.f90 |  330 ----
 src/ZSOLVER/conjgrad.f90      |  291 ----
 src/ZSOLVER/conresol.f90      |  272 ---
 src/ZSOLVER/conresolz.f90     |  295 ----
 src/ZSOLVER/ini_dynamics.f90  |  640 -------
 src/ZSOLVER/ini_modeln.f90    | 2721 ------------------------------
 src/ZSOLVER/ini_spectren.f90  |  941 -----------
 src/ZSOLVER/modd_dynn.f90     |  406 -----
 src/ZSOLVER/read_exsegn.f90   | 2997 ---------------------------------
 18 files changed, 235 insertions(+), 8920 deletions(-)
 delete mode 100644 src/ZSOLVER/anel_balancen.f90
 delete mode 100644 src/ZSOLVER/conjgrad.f90
 delete mode 100644 src/ZSOLVER/conresol.f90
 delete mode 100644 src/ZSOLVER/conresolz.f90
 delete mode 100644 src/ZSOLVER/ini_dynamics.f90
 delete mode 100644 src/ZSOLVER/ini_modeln.f90
 delete mode 100644 src/ZSOLVER/ini_spectren.f90
 delete mode 100644 src/ZSOLVER/modd_dynn.f90
 delete mode 100644 src/ZSOLVER/read_exsegn.f90

diff --git a/src/MNH/anel_balancen.f90 b/src/MNH/anel_balancen.f90
index 540e56b76..1c14b8262 100644
--- a/src/MNH/anel_balancen.f90
+++ b/src/MNH/anel_balancen.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 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.
@@ -173,8 +173,13 @@ INTEGER                       ::  IMI          ! model index
 !JUAN
 INTEGER                               ::  IIU_B,IJU_B,IKU
 INTEGER                               ::  IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll
-REAL, DIMENSION(:,:,:), ALLOCATABLE   ::  ZBFB,ZBF_SXP2_YP1_Z                         
-!JUAN
+REAL, DIMENSION(:,:,:), ALLOCATABLE   ::  ZBFB,ZBF_SXP2_YP1_Z
+#ifdef MNH_MGSOLVER
+REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZAF_ZS,ZBF_ZS,ZCF_ZS
+REAL, DIMENSION(:,:)  , ALLOCATABLE   :: ZDXATH_ZS,ZDYATH_ZS
+REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZRHO_ZS
+REAL, DIMENSION(:),     ALLOCATABLE   :: ZA_K,ZB_K,ZC_K,ZD_K
+#endif
 !
 INTEGER :: IINFO_ll
 TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL()   ! list of fields to exchange
@@ -196,6 +201,22 @@ ALLOCATE(ZTRIGSY(3*(NJMAX_ll+2*JPHEXT)))
 IKU=SIZE(XRHODJ,3)
 CALL GET_DIM_EXT_ll('B',IIU_B,IJU_B)
 ALLOCATE(ZBFB(IIU_B,IJU_B,IKU))
+!
+#ifdef MNH_MGSOLVER
+IF ( CPRESOPT == 'ZSOLV' ) THEN
+  ALLOCATE(ZAF_ZS(IIU_B,IJU_B,IKU))
+  ALLOCATE(ZBF_ZS(IIU_B,IJU_B,IKU))
+  ALLOCATE(ZCF_ZS(IIU_B,IJU_B,IKU))
+  ALLOCATE(ZDXATH_ZS(IIU_B,IJU_B))
+  ALLOCATE(ZDYATH_ZS(IIU_B,IJU_B))
+  ALLOCATE(ZRHO_ZS(IIU_B,IJU_B,IKU))
+  ALLOCATE(ZA_K(IKU))
+  ALLOCATE(ZB_K(IKU))
+  ALLOCATE(ZC_K(IKU))
+  ALLOCATE(ZD_K(IKU))
+END IF
+#endif
+!
 CALL GET_DIM_EXTZ_ll('SXP2_YP1_Z',IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll)
 ALLOCATE(ZBF_SXP2_YP1_Z(IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll))
 !JUAN Z_SPLITING
@@ -208,9 +229,17 @@ CALL MPPDB_CHECK3D(XUT,"anel_balancen1-::XUT",PRECISION)
 !               -------------------------------
 !
 !
-CALL TRIDZ(CLBCX,CLBCY,XMAP,XDXHAT,XDYHAT,ZDXHATM,ZDYHATM,ZRHOM,        &
+CALL TRIDZ(CLBCX,CLBCY,XMAP,XDXHAT,XDYHAT,CPRESOPT,                     &
+          ZDXHATM,ZDYHATM,ZRHOM,                                        &
           ZAF,ZCF,ZTRIGSX,ZTRIGSY,IIFAXX,IIFAXY,XRHODJ,XTHVREF,XZZ,ZBFY,&
+#ifndef MNH_MGSOLVER
           ZBFB,ZBF_SXP2_YP1_Z) 
+#else
+          ZBFB,ZBF_SXP2_YP1_Z,                                          &
+          ZAF_ZS,ZBF_ZS,ZCF_ZS,                                         &
+          ZDXATH_ZS,ZDYATH_ZS,ZRHO_ZS,                      &
+          ZA_K,ZB_K,ZC_K,ZD_K) !JUAN  FULL ZSOLVER
+#endif
 CALL MPPDB_CHECK3D(XRHODJ,"anel_balancen1-after TRIDZ::XRHODJ",PRECISION)
 !
 !-------------------------------------------------------------------------------
@@ -272,7 +301,15 @@ CALL PRESSUREZ(CLBCX,CLBCY,CPRESOPT,NITR,LITRADJ,ITCOUNT,XRELAX,IMI,  &
                IRR,IRRL,IRRI,ZDRYMASST,ZREFMASS,ZMASS_O_PHI0,         &
                ZTH,ZRR,XRHODREF,XTHVREF,XRVREF,XEXNREF, XLINMASS,     &
                ZRU,ZRV,ZRW,ZPABST,                                    &
+#ifndef MNH_MGSOLVER
                ZBFB,ZBF_SXP2_YP1_Z,PRESIDUAL                          )
+#else
+               ZBFB,ZBF_SXP2_YP1_Z,                                   &
+               XAF_ZS,XBF_ZS,XCF_ZS,                                  &
+               XDXATH_ZS,XDYATH_ZS,XRHO_ZS,                           &
+               XA_K,XB_K,XC_K,XD_K,                                   &
+               PRESIDUAL                          )
+#endif
 !
 CALL MPPDB_CHECK3D(XRHODJ,"anel_balancen3.2-after pressurez halo::XRHODJ",PRECISION)
 CALL MPPDB_CHECK3D(ZRU,"anel_balancen3.2-after pressurez::ZRU",PRECISION)
diff --git a/src/MNH/ini_dynamics.f90 b/src/MNH/ini_dynamics.f90
index 13ea80bc1..eed1f9389 100644
--- a/src/MNH/ini_dynamics.f90
+++ b/src/MNH/ini_dynamics.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 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.
@@ -8,7 +8,7 @@
 !     ########################
 INTERFACE
 SUBROUTINE INI_DYNAMICS(PLON,PLAT,PRHODJ,PTHVREF,PMAP,PZZ,                   &
-               PDXHAT,PDYHAT,PZHAT,HLBCX,HLBCY,PTSTEP,                       &
+               PDXHAT,PDYHAT,PZHAT,HLBCX,HLBCY,PTSTEP,HPRESOPT,              &
                OVE_RELAX,OVE_RELAX_GRD,OHORELAX_UVWTH,OHORELAX_RV,           &
                OHORELAX_RC,OHORELAX_RR,OHORELAX_RI,OHORELAX_RS,OHORELAX_RG,  &
                OHORELAX_RH,OHORELAX_TKE,OHORELAX_SV,                         &
@@ -26,8 +26,15 @@ SUBROUTINE INI_DYNAMICS(PLON,PLAT,PRHODJ,PTHVREF,PMAP,PZZ,                   &
                PALK,PALKW,KALBOT,PALKBAS,PALKWBAS,KALBAS,                    &
                OMASK_RELAX,PKURELAX, PKVRELAX, PKWRELAX,                     &
                PDK2U,PDK4U,PDK2TH,PDK4TH,PDK2SV,PDK4SV,OZDIFFU,PZDIFFU_HALO2,& 
-               PBFB,&
+               PBFB,                                                         &
+#ifndef MNH_MGSOLVER
                PBF_SXP2_YP1_Z) !JUAN Z_SPLITING
+#else
+               PBF_SXP2_YP1_Z,                                               &
+               PAF_ZS,PBF_ZS,PCF_ZS,                                         &
+               PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                                  &
+               A_K,B_K,C_K,D_K) !JUAN FULL ZSOLVER
+#endif
 !  intent in arguments
 !
 USE MODE_TYPE_ZDIFFU
@@ -112,7 +119,8 @@ REAL,     INTENT(IN)   :: PT4DIFU    ! Damping time scale for 2*dx wavelength
 REAL,     INTENT(IN)   :: PT4DIFTH   ! for meteorological scalar variables
 REAL,     INTENT(IN)   :: PT4DIFSV   ! for tracer scalar variables
 
-REAL,     INTENT(IN)   :: PTSTEP     ! Time step    
+REAL,     INTENT(IN)   :: PTSTEP     ! Time step
+CHARACTER (LEN=5), INTENT(IN) :: HPRESOPT        ! choice of the pressure solver
 !
 !  intent out arguments
 !
@@ -172,6 +180,13 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBFB ! elements of the tri-diag matrix
                                             ! on an b-slice of global physical domain
 REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBF_SXP2_YP1_Z ! elements of the tri-diag. SXP2_YP1_Z-slide 
                                                    ! matrix in the pressure eq.
+#ifdef MNH_MGSOLVER
+REAL, DIMENSION(:,:,:), INTENT(OUT) :: PAF_ZS,PBF_ZS,PCF_ZS
+REAL, DIMENSION(:,:)  , INTENT(OUT) :: PDXATH_ZS,PDYATH_ZS
+REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRHO_ZS
+REAL, DIMENSION(:)    , INTENT(OUT) :: A_K,B_K,C_K,D_K
+#endif
+
 END SUBROUTINE INI_DYNAMICS
 !
 END INTERFACE
@@ -179,7 +194,7 @@ END INTERFACE
 END MODULE MODI_INI_DYNAMICS
 !     ######################################################################
 SUBROUTINE INI_DYNAMICS(PLON,PLAT,PRHODJ,PTHVREF,PMAP,PZZ,                   &
-               PDXHAT,PDYHAT,PZHAT,HLBCX,HLBCY,PTSTEP,                       &
+               PDXHAT,PDYHAT,PZHAT,HLBCX,HLBCY,PTSTEP,HPRESOPT,              &
                OVE_RELAX,OVE_RELAX_GRD,OHORELAX_UVWTH,OHORELAX_RV,           &
                OHORELAX_RC,OHORELAX_RR,OHORELAX_RI,OHORELAX_RS,OHORELAX_RG,  &
                OHORELAX_RH,OHORELAX_TKE,OHORELAX_SV,                         &
@@ -197,8 +212,15 @@ SUBROUTINE INI_DYNAMICS(PLON,PLAT,PRHODJ,PTHVREF,PMAP,PZZ,                   &
                PALK,PALKW,KALBOT,PALKBAS,PALKWBAS,KALBAS,                    &
                OMASK_RELAX,PKURELAX, PKVRELAX, PKWRELAX,                     &
                PDK2U,PDK4U,PDK2TH,PDK4TH,PDK2SV,PDK4SV,OZDIFFU,PZDIFFU_HALO2,& 
-               PBFB,&
-               PBF_SXP2_YP1_Z)  !JUAN Z_SPLITING  
+               PBFB,                                                         &
+#ifndef MNH_MGSOLVER
+               PBF_SXP2_YP1_Z) !JUAN Z_SPLITING
+#else
+               PBF_SXP2_YP1_Z,                                               &
+               PAF_ZS,PBF_ZS,PCF_ZS,                                         &
+               PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                                  &
+               A_K,B_K,C_K,D_K) !JUAN FULL ZSOLVER
+#endif
 !     ######################################################################
 !
 !!****  *INI_DYNAMICS* - routine to initialize the parameters for the dynamics
@@ -389,7 +411,8 @@ REAL,     INTENT(IN)   :: PT4DIFU    ! Damping time scale for 2*dx wavelength
 REAL,     INTENT(IN)   :: PT4DIFTH   ! for meteorological scalar variables
 REAL,     INTENT(IN)   :: PT4DIFSV   ! for tracer scalar variables
 
-REAL,     INTENT(IN)   :: PTSTEP     ! Time step    
+REAL,     INTENT(IN)   :: PTSTEP     ! Time step
+CHARACTER (LEN=5), INTENT(IN) :: HPRESOPT        ! choice of the pressure solver
 !
 !  intent out arguments
 !
@@ -447,6 +470,12 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBFB ! elements of the tri-diag matrix
                                             ! on an b-slice of global physical domain
 REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBF_SXP2_YP1_Z ! elements of the tri-diag. SXP2_YP1_Z-slide 
                                                    ! matrix in the pressure eq.
+#ifdef MNH_MGSOLVER
+REAL, DIMENSION(:,:,:), INTENT(OUT) :: PAF_ZS,PBF_ZS,PCF_ZS
+REAL, DIMENSION(:,:)  , INTENT(OUT) :: PDXATH_ZS,PDYATH_ZS
+REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRHO_ZS
+REAL, DIMENSION(:)    , INTENT(OUT) :: A_K,B_K,C_K,D_K
+#endif
 !
 !*       0.2   declarations of local variables
 !
@@ -504,10 +533,18 @@ IF (.NOT.L1D) THEN
 !           PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,                            &
 !           PRHODJ,PTHVREF,PZZ,PBFY)
   CALL TRIDZ(HLBCX,HLBCY,                                                 &
-            PMAP,PDXHAT,PDYHAT,PDXHATM,PDYHATM,PRHOM,PAF,                 &
+            PMAP,PDXHAT,PDYHAT,HPRESOPT,                                  &
+            PDXHATM,PDYHATM,PRHOM,PAF,                                    &
             PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,                            &
             PRHODJ,PTHVREF,PZZ,PBFY,PBFB,                                 &
+#ifndef MNH_MGSOLVER
             PBF_SXP2_YP1_Z)
+#else
+            PBF_SXP2_YP1_Z,                                               &
+            PAF_ZS,PBF_ZS,PCF_ZS,                                         &
+            PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                                  &
+            A_K,B_K,C_K,D_K) !JUAN  FULL ZSOLVER
+#endif
 END IF
 !
 !
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 45d2945f1..e9baccd68 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -1085,6 +1085,20 @@ ELSE
 END IF
 CALL GET_DIM_EXT_ll('B',IIU_B,IJU_B)
 ALLOCATE(XBFB(IIU_B,IJU_B,IKU))
+#ifdef MNH_MGSOLVER
+IF ( CPRESOPT == 'ZSOLV' ) THEN
+  ALLOCATE(XAF_ZS(IIU_B,IJU_B,IKU))
+  ALLOCATE(XBF_ZS(IIU_B,IJU_B,IKU))
+  ALLOCATE(XCF_ZS(IIU_B,IJU_B,IKU))
+  ALLOCATE(XDXATH_ZS(IIU_B,IJU_B))
+  ALLOCATE(XDYATH_ZS(IIU_B,IJU_B))
+  ALLOCATE(XRHO_ZS(IIU_B,IJU_B,IKU))
+  ALLOCATE(XA_K(IKU))
+  ALLOCATE(XB_K(IKU))
+  ALLOCATE(XC_K(IKU))
+  ALLOCATE(XD_K(IKU))
+END IF
+#endif
 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))
@@ -2212,7 +2226,7 @@ IF (LLG .AND. LINIT_LG .AND. CPROGRAM=='MESONH') &
 !               ------------------------------------------
 !
 CALL INI_DYNAMICS(XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,            &
-             XZHAT,CLBCX,CLBCY,XTSTEP,                                        &
+             XZHAT,CLBCX,CLBCY,XTSTEP,CPRESOPT,                               &
              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,                            &
@@ -2231,7 +2245,14 @@ CALL INI_DYNAMICS(XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,            &
              LMASK_RELAX,XKURELAX,XKVRELAX,XKWRELAX,                          &
              XDK2U,XDK4U,XDK2TH,XDK4TH,XDK2SV,XDK4SV,                         &
              LZDIFFU,XZDIFFU_HALO2,                                           &
-             XBFB,XBF_SXP2_YP1_Z                                              ) 
+#ifndef MNH_MGSOLVER
+             XBFB,XBF_SXP2_YP1_Z                                              )
+#else
+             XBFB,XBF_SXP2_YP1_Z,                                             &
+             XAF_ZS,XBF_ZS,XCF_ZS,                                            &
+             XDXATH_ZS,XDYATH_ZS,XRHO_ZS,                                     &
+             XA_K,XB_K,XC_K,XD_K                                              )
+#endif
 
 !$acc update device( XRHOM, XAF, XBFY, XCF, XTRIGSX, XTRIGSY, NIFAXX, NIFAXY, XBFB, XBF_SXP2_YP1_Z )
 
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index 1067f2cef..2428e7979 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2015-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2015-2023 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.
@@ -894,7 +894,7 @@ ALLOCATE(XALKBAS(0))
 ALLOCATE(XALKWBAS(0))
 !
 CALL INI_DYNAMICS(XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,            &
-             XZHAT,CLBCX,CLBCY,XTSTEP,                                        &
+             XZHAT,CLBCX,CLBCY,XTSTEP,CPRESOPT,                               &
              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,                            &
@@ -913,7 +913,14 @@ CALL INI_DYNAMICS(XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,            &
              LMASK_RELAX,XKURELAX,XKVRELAX,XKWRELAX,                          &
              XDK2U,XDK4U,XDK2TH,XDK4TH,XDK2SV,XDK4SV,                         &
              LZDIFFU,XZDIFFU_HALO2,                                           &
-             XBFB,XBF_SXP2_YP1_Z                                              ) 
+#ifndef MNH_MGSOLVER
+             XBFB,XBF_SXP2_YP1_Z                                              )
+#else
+             XBFB,XBF_SXP2_YP1_Z,                                             &
+             XAF_ZS,XBF_ZS,XCF_ZS,                                            &
+             XDXATH_ZS,XDYATH_ZS,XRHO_ZS,                                     &
+             XA_K,XB_K,XC_K,XD_K) 
+#endif
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/modd_dynn.f90 b/src/MNH/modd_dynn.f90
index bf719ed52..363e9b055 100644
--- a/src/MNH/modd_dynn.f90
+++ b/src/MNH/modd_dynn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 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.
@@ -67,6 +67,12 @@ TYPE DYN_t
   REAL, DIMENSION(:,:,:), POINTER :: XBF_SXP2_YP1_Z=>NULL()     ! Vectors giving the non
   REAL, DIMENSION(:,:,:), POINTER :: XBF=>NULL()      ! vanishing elements of the 
   REAL, DIMENSION(:),     POINTER :: XAF=>NULL(),XCF=>NULL() ! tri-diag matrix in the pressure equation
+#ifdef MNH_MGSOLVER
+  REAL, DIMENSION(:,:,:), POINTER :: XAF_ZS=>NULL(), XBF_ZS=>NULL(), XCF_ZS=>NULL() ! coef for Zsolver
+  REAL, DIMENSION(:,:)  , POINTER :: XDXATH_ZS=>NULL(), XDYATH_ZS=>NULL()
+  REAL, DIMENSION(:,:,:), POINTER :: XRHO_ZS=>NULL()
+  REAL, DIMENSION(:),     POINTER :: XA_K=>NULL(), XB_K=>NULL(), XC_K=>NULL(), XD_K=>NULL()
+#endif
 !
                                                    ! Arrays of sinus or cosinus
                                                    ! values for the FFT 
@@ -188,6 +194,12 @@ REAL, DIMENSION(:,:,:), POINTER :: XBFB=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XBF_SXP2_YP1_Z=>NULL()
 REAL, DIMENSION(:,:,:), POINTER :: XBF=>NULL()
 REAL, DIMENSION(:),     POINTER :: XAF=>NULL(),XCF=>NULL()
+#ifdef MNH_MGSOLVER
+REAL, DIMENSION(:,:,:), POINTER :: XAF_ZS=>NULL(), XBF_ZS=>NULL(), XCF_ZS=>NULL()
+REAL, DIMENSION(:,:)  , POINTER :: XDXATH_ZS=>NULL(), XDYATH_ZS=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XRHO_ZS=>NULL()
+REAL, DIMENSION(:),     POINTER :: XA_K=>NULL(), XB_K=>NULL(), XC_K=>NULL(), XD_K=>NULL()
+#endif
 REAL, DIMENSION(:),   POINTER :: XTRIGSX=>NULL()
 REAL, DIMENSION(:),   POINTER :: XTRIGSY=>NULL()
 INTEGER, DIMENSION(:), POINTER :: NIFAXX=>NULL()
@@ -271,6 +283,21 @@ DYN_MODEL(KFROM)%XBF_SXP2_YP1_Z=>XBF_SXP2_YP1_Z
 DYN_MODEL(KFROM)%XBF=>XBF
 DYN_MODEL(KFROM)%XAF=>XAF
 DYN_MODEL(KFROM)%XCF=>XCF
+
+#ifdef MNH_MGSOLVER
+DYN_MODEL(KFROM)%XAF_ZS=>XAF_ZS
+DYN_MODEL(KFROM)%XBF_ZS=>XBF_ZS
+DYN_MODEL(KFROM)%XCF_ZS=>XCF_ZS
+
+DYN_MODEL(KFROM)%XDXATH_ZS=>XDXATH_ZS
+DYN_MODEL(KFROM)%XDYATH_ZS=>XDYATH_ZS
+DYN_MODEL(KFROM)%XRHO_ZS=>XRHO_ZS
+DYN_MODEL(KFROM)%XA_K=>XA_K
+DYN_MODEL(KFROM)%XB_K=>XB_K
+DYN_MODEL(KFROM)%XC_K=>XC_K
+DYN_MODEL(KFROM)%XD_K=>XD_K
+#endif
+
 DYN_MODEL(KFROM)%XTRIGSX=>XTRIGSX
 DYN_MODEL(KFROM)%XTRIGSY=>XTRIGSY
 DYN_MODEL(KFROM)%XRHOM=>XRHOM
@@ -292,6 +319,21 @@ XBF_SXP2_YP1_Z=>DYN_MODEL(KTO)%XBF_SXP2_YP1_Z
 XBF=>DYN_MODEL(KTO)%XBF
 XAF=>DYN_MODEL(KTO)%XAF
 XCF=>DYN_MODEL(KTO)%XCF
+
+#ifdef MNH_MGSOLVER
+XAF_ZS=>DYN_MODEL(KTO)%XAF_ZS
+XBF_ZS=>DYN_MODEL(KTO)%XBF_ZS
+XCF_ZS=>DYN_MODEL(KTO)%XCF_ZS
+
+XDXATH_ZS=>DYN_MODEL(KFROM)%XDXATH_ZS
+XDYATH_ZS=>DYN_MODEL(KFROM)%XDYATH_ZS
+XRHO_ZS=>DYN_MODEL(KFROM)%XRHO_ZS
+XA_K=>DYN_MODEL(KFROM)%XA_K
+XB_K=>DYN_MODEL(KFROM)%XB_K
+XC_K=>DYN_MODEL(KFROM)%XC_K
+XD_K=>DYN_MODEL(KFROM)%XD_K
+#endif
+
 XTRIGSX=>DYN_MODEL(KTO)%XTRIGSX
 XTRIGSY=>DYN_MODEL(KTO)%XTRIGSY
 NIFAXX=>DYN_MODEL(KTO)%NIFAXX
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index ceda1aedb..37e3d4061 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -1840,8 +1840,15 @@ IF(.NOT. L1D) THEN
                   NRR,NRRL,NRRI,XDRYMASST,XREFMASS,XMASS_O_PHI0,         &
                   XTHT,XRT,XRHODREF,XTHVREF,XRVREF,XEXNREF, XLINMASS,    &
                   XRUS, XRVS, XRWS, XPABST,                              &
-                  XBFB,&
+                  XBFB,                                                  &
+#ifndef MNH_MGSOLVER
                   XBF_SXP2_YP1_Z) !JUAN Z_SPLITING
+#else
+                  XBF_SXP2_YP1_Z,                                        &
+                  XAF_ZS,XBF_ZS,XCF_ZS,                                  &
+                  XDXATH_ZS,XDYATH_ZS,XRHO_ZS,                           &
+                  XA_K,XB_K,XC_K,XD_K) !JUAN FULL ZSOLVER
+#endif
 !$acc end data
 !$acc update self( XRUS, XRVS, XRWS, XPABST )
 !
diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90
index 15df86c77..8faeb1d9d 100644
--- a/src/MNH/pressurez.f90
+++ b/src/MNH/pressurez.f90
@@ -18,6 +18,11 @@ INTERFACE
       PRUS,PRVS,PRWS,PPABST,                                               &
       PBFB,                                                                &
       PBF_SXP2_YP1_Z,                                                      &
+#ifdef MNH_MGSOLVER
+      PAF_ZS,PBF_ZS,PCF_ZS,                                                &
+      PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                                         &
+      A_K,B_K,C_K,D_K,                                                     &
+#endif
       PRESIDUAL                                           ) !JUAN Z_SPLITING
 !
 IMPLICIT NONE
@@ -97,6 +102,12 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PBFB       ! elements of the tri-diag b-sl
                                                  ! matrix in the pressure eq.
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF_SXP2_YP1_Z       ! elements of the tri-diag. SXP2_YP1_Z-slide 
                                                    ! matrix in the pressure eq.
+#ifdef MNH_MGSOLVER
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PAF_ZS,PBF_ZS,PCF_ZS
+REAL, DIMENSION(:,:)  , INTENT(IN) :: PDXATH_ZS,PDYATH_ZS
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO_ZS
+REAL, DIMENSION(:)    , INTENT(IN) :: A_K,B_K,C_K,D_K
+#endif
 REAL, OPTIONAL                     :: PRESIDUAL
 !JUAN Z_SPLITING
 END SUBROUTINE PRESSUREZ
@@ -114,6 +125,11 @@ END MODULE MODI_PRESSUREZ
       PRUS,PRVS,PRWS,PPABST,                                               &
       PBFB,                                                                &
       PBF_SXP2_YP1_Z,                                                      &
+#ifdef MNH_MGSOLVER
+      PAF_ZS,PBF_ZS,PCF_ZS,                                                &
+      PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                                         &
+      A_K,B_K,C_K,D_K,                                                     &
+#endif
       PRESIDUAL                                           ) !JUAN Z_SPLITING
 !     ######################################################################
 !
@@ -351,6 +367,12 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PBFB       ! elements of the tri-diag b-sl
                                                  ! matrix in the pressure eq.
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF_SXP2_YP1_Z       ! elements of the tri-diag. SXP2_YP1_Z-slide 
                                                    ! matrix in the pressure eq.
+#ifdef MNH_MGSOLVER
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PAF_ZS,PBF_ZS,PCF_ZS
+REAL, DIMENSION(:,:)  , INTENT(IN) :: PDXATH_ZS,PDYATH_ZS
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHO_ZS
+REAL, DIMENSION(:)    , INTENT(IN) :: A_K,B_K,C_K,D_K
+#endif
 REAL, OPTIONAL                     :: PRESIDUAL
 !JUAN Z_SPLITING
 !
diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index 9db15fc16..f71986e8f 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 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.
@@ -845,7 +845,12 @@ END IF
 !
 !-------------------------------------------------------------------------------
 !
+#ifndef MNH_MGSOLVER
 CALL TEST_NAM_VAR(ILUOUT,'CPRESOPT',CPRESOPT,'RICHA','CGRAD','CRESI','ZRESI')
+#else
+CALL TEST_NAM_VAR(ILUOUT,'CPRESOPT',CPRESOPT,'RICHA','CGRAD','CRESI','ZRESI','ZSOLV',&
+                         'ZGRAD')
+#endif
 !
 CALL TEST_NAM_VAR(ILUOUT,'CUVW_ADV_SCHEME',CUVW_ADV_SCHEME, &
        'CEN4TH','CEN2ND','WENO_K' ) 
diff --git a/src/MNH/tridz.f90 b/src/MNH/tridz.f90
index 2d93c3386..841bb618b 100644
--- a/src/MNH/tridz.f90
+++ b/src/MNH/tridz.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 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.
@@ -10,10 +10,18 @@
 INTERFACE
 !
       SUBROUTINE TRIDZ(HLBCX,HLBCY,                                     &
-                      PMAP,PDXHAT,PDYHAT,PDXHATM,PDYHATM,PRHOM,         &
+                      PMAP,PDXHAT,PDYHAT,HPRESOPT,                      &
+                      PDXHATM,PDYHATM,PRHOM,                            &
                       PAF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,            &
-                      PRHODJ,PTHVREF,PZZ,PBFY,PBFB,&
+                      PRHODJ,PTHVREF,PZZ,PBFY,PBFB,                     &
+#ifndef MNH_MGSOLVER
                       PBF_SXP2_YP1_Z)!JUAN Z_SPLITING
+#else
+                      PBF_SXP2_YP1_Z,                                   &
+                      PAF_ZS,PBF_ZS,PCF_ZS,                             &
+                      PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                      &
+                      A_K,B_K,C_K,D_K) !JUAN  FULL ZSOLVER
+#endif
 !
 IMPLICIT NONE
 !
@@ -30,6 +38,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ        ! height z
 !
 REAL, DIMENSION(:), INTENT(IN) :: PDXHAT          ! Stretching in x direction
 REAL, DIMENSION(:), INTENT(IN) :: PDYHAT          ! Stretching in y direction
+CHARACTER (LEN=5),  INTENT(IN) :: HPRESOPT        ! choice of the pressure solver
 !
 REAL, INTENT(OUT) :: PDXHATM                     ! mean grid increment in the x
                                                  ! direction
@@ -48,6 +57,12 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBFB     ! elements (bsplit slide) of the
                                                 ! matrix in the pressure eq. 
 REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBF_SXP2_YP1_Z ! elements of the tri-diag. SXP2_YP1_Z-slide 
                                                    ! matrix in the pressure eq
+#ifdef MNH_MGSOLVER
+REAL, DIMENSION(:,:,:), INTENT(OUT) :: PAF_ZS,PBF_ZS,PCF_ZS
+REAL, DIMENSION(:,:)  , INTENT(OUT) :: PDXATH_ZS,PDYATH_ZS
+REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRHO_ZS
+REAL, DIMENSION(:)    , INTENT(OUT) :: A_K,B_K,C_K,D_K
+#endif
 !JUAN
 !
                                                  ! arrays of sin or cos values
@@ -69,10 +84,18 @@ END MODULE MODI_TRIDZ
 !
 !     ###################################################################
       SUBROUTINE TRIDZ(HLBCX,HLBCY,                                     &
-                      PMAP,PDXHAT,PDYHAT,PDXHATM,PDYHATM,PRHOM,         &
+                      PMAP,PDXHAT,PDYHAT,HPRESOPT,                      &
+                      PDXHATM,PDYHATM,PRHOM,                            &
                       PAF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,            &
-                      PRHODJ,PTHVREF,PZZ,PBFY,PBFB,&
-                      PBF_SXP2_YP1_Z) !JUAN Z_SPLITING        
+                      PRHODJ,PTHVREF,PZZ,PBFY,PBFB,                     &
+#ifndef MNH_MGSOLVER
+                      PBF_SXP2_YP1_Z)!JUAN Z_SPLITING
+#else
+                      PBF_SXP2_YP1_Z,                                   &
+                      PAF_ZS,PBF_ZS,PCF_ZS,                             &
+                      PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                      &
+                      A_K,B_K,C_K,D_K) !JUAN  FULL ZSOLVER
+#endif
 !    ####################################################################
 !
 !!****  *TRIDZ * - Compute coefficients for the flat operator
@@ -211,6 +234,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ        ! height z
 !
 REAL, DIMENSION(:), INTENT(IN) :: PDXHAT          ! Stretching in x direction
 REAL, DIMENSION(:), INTENT(IN) :: PDYHAT          ! Stretching in y direction
+CHARACTER (LEN=5),  INTENT(IN) :: HPRESOPT         ! choice of the pressure solver
 !
 REAL, INTENT(OUT) :: PDXHATM                     ! mean grid increment in the x
                                                  ! direction
@@ -229,6 +253,12 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBFB     ! elements (bsplit slide) of the
                                                 ! matrix in the pressure eq. 
 REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBF_SXP2_YP1_Z ! elements of the tri-diag. SXP2_YP1_Z-slide 
                                                    ! matrix in the pressure eq.
+#ifdef MNH_MGSOLVER
+REAL, DIMENSION(:,:,:), INTENT(OUT) :: PAF_ZS,PBF_ZS,PCF_ZS
+REAL, DIMENSION(:,:)  , INTENT(OUT) :: PDXATH_ZS,PDYATH_ZS
+REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRHO_ZS
+REAL, DIMENSION(:)    , INTENT(OUT) :: A_K,B_K,C_K,D_K
+#endif
 !JUAN
 !                                 
                                                  ! arrays of sin or cos values
diff --git a/src/ZSOLVER/anel_balancen.f90 b/src/ZSOLVER/anel_balancen.f90
deleted file mode 100644
index 27c6a691d..000000000
--- a/src/ZSOLVER/anel_balancen.f90
+++ /dev/null
@@ -1,330 +0,0 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     ##########################
-      MODULE MODI_ANEL_BALANCE_n
-!     ##########################
-!
-INTERFACE
-!
-SUBROUTINE ANEL_BALANCE_n(PRESIDUAL)
-!
-REAL, OPTIONAL                 :: PRESIDUAL
-END SUBROUTINE ANEL_BALANCE_n
-!
-END INTERFACE
-!
-END MODULE MODI_ANEL_BALANCE_n
-!
-!
-!
-!     ################################
-      SUBROUTINE ANEL_BALANCE_n(PRESIDUAL)
-!
-!     ################################
-!
-!
-!!****  *ANEL_BALANCE_n* - routine to apply an anelastic correction
-!!                   
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to  fulfill the anelastic balance
-!    in case of non-vanishing orography
-!
-!
-!
-!!**  METHOD
-!!    ------
-!!      The coefficients for the flat operator are first computed. Then the
-!!    pressure equation is solved and the pressure gradient is added to the wind
-!!    components in order to render this wind field non-divergent.
-!!
-!!    EXTERNAL
-!!    --------
-!!    TRID     : to compute coefficients for the flat operator
-!!    PRESSURE : to solve the pressure equation and add the pressure term to
-!!               wind
-!!    MXM,MYM,MZM : to average a field at mass point in the x,y,z directions
-!!
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!      Module MODD_CONF    : contains configuration variables for all models.
-!!         NVERB : verbosity level for output-listing
-!!
-!!      Module MODD_GRID_n  : contains grid variables
-!!         XMAP,XXHAT,XYHAT,XZZ
-!!
-!!      Module MODD_REF_n   : contains reference state variables 
-!!         XRHODJ,XTHVREF,XEXNREF,XRHODREF,XRVREF
-!!
-!!      Module MODD_REF_n   : contains reference state variables 
-!!         XLINMASS : lineic mass along the lateral boundaries
-!!
-!!      Module MODD_FIELD_n : contains prognostic variables
-!!         XUT,XVT,XWT,XTHT,XRT
-!! 
-!!      Module MODD_DYN_n : contains parameters for the dynamics
-!!         CPRESOPT : option for the pressure solver
-!!         NITR     : number of iterations for the solver
-!!         XRELAX   : relaxation coefficient used in the Richardson method
-!! 
-!!      Module MODD_LBC_n : contains parameters relative to the boundaries
-!!         CLBCX    : choice of lateral boundary condition along x
-!!         CLBCY    : choice of lateral boundary condition along y
-!!
-!!    REFERENCE
-!!    ---------
-!!      NONE
-!!
-!!
-!!    AUTHOR
-!!    ------
-!!      V. Ducrocq       * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original     6/09/94
-!!      J. Stein     4/11/94  put the pressure solver parameters in namelist
-!!      J. Stein     2/12/94  source cleaning
-!!      J.P. Lafore 03/01/95  call to PRESSURE to account for absolute pressure
-!!      J. Stein    17/01/95  bug in the pressure call
-!!      J. Stein    15/03/95  remove R from the historical variables
-!!      J.Stein and J.P. lafore 17/04/96 new version including the way to choose
-!!            the model number and the instant where the projection is performed
-!!      Stein,Lafore 14/01/97 new anelastic equations
-!!      M.Faivre    2014
-!!      M.Moge      08/2015   removing UPDATE_HALO_ll(XRHODJ) + EXTRAPOL on ZRU and ZRV in part 3.1
-!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-!
-USE MODE_ll
-USE MODE_MODELN_HANDLER
-!
-USE MODD_CONF    ! declarative modules
-USE MODD_PARAMETERS
-USE MODD_GRID_n
-USE MODD_DIM_n
-USE MODD_METRICS_n
-USE MODD_REF_n
-USE MODD_FIELD_n
-USE MODD_DYN_n
-USE MODD_LBC_n
-!
-USE MODI_TRIDZ    ! interface modules
-USE MODI_PRESSUREZ
-USE MODE_SPLITTINGZ_ll
-USE MODI_SHUMAN
-!
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-USE MODE_MPPDB
-USE MODE_EXTRAPOL
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of arguments :
-!
-REAL, OPTIONAL                 :: PRESIDUAL
-!
-!*       0.2   Declarations of local variables :
-!
-INTEGER :: IRESP                  ! return code
-INTEGER :: IIY,IJY                ! same variable for Y decomposition
-INTEGER :: ITCOUNT                ! counter value of temporal loop set to 1 ( this
-                                  ! means that no guess of the pressure is available for
-                                  ! the pressure solver
-REAL    :: ZDXHATM                   ! mean grid increment in the x direction
-REAL    :: ZDYHATM                   ! mean grid increment in the y direction
-REAL, DIMENSION (SIZE(XRHODJ,3)) :: ZRHOM   !  mean of XRHODJ on the plane x y
-                                            !  localized at a mass level
-!
-REAL, DIMENSION(SIZE(XRHODJ,3))    :: ZAF,ZCF  ! vector giving the nonvanishing
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZBFY    ! elements of the tri-diag matrix
-                                               ! in the pressure equation
-REAL, DIMENSION(:), ALLOCATABLE   :: ZTRIGSX   ! arrays of sin or cos values for
-REAL, DIMENSION(:), ALLOCATABLE   :: ZTRIGSY   ! the FFT in x and y directions
-INTEGER, DIMENSION(19)            :: IIFAXX    ! decomposition in prime numbers
-INTEGER, DIMENSION(19)            :: IIFAXY    ! for the FFT in x and y
-                                               ! directions
-REAL, DIMENSION(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)) :: ZPABST
-                                               ! Potential at time t
-REAL, DIMENSION(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)) :: ZRU,ZRV,ZRW
-                                               ! Rhod * (U,V,W)
-REAL, DIMENSION(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3)) :: ZTH
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRR
-!
-INTEGER                       ::       IRR     ! Total number of water variables
-INTEGER                       ::       IRRL    ! Number of liquid water variables
-INTEGER                       ::       IRRI    ! Number of solid water variables
-REAL                          ::  ZDRYMASST    ! Mass of dry air Md
-REAL                          ::  ZREFMASS     ! Total mass of the ref. atmosphere
-REAL                          ::  ZMASS_O_PHI0 ! Mass / Phi0
-INTEGER                       ::  IMI          ! model index
-!JUAN
-INTEGER                               ::  IIU_B,IJU_B,IKU
-INTEGER                               ::  IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll
-REAL, DIMENSION(:,:,:), ALLOCATABLE   ::  ZBFB,ZBF_SXP2_YP1_Z   
-REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZAF_ZS,ZBF_ZS,ZCF_ZS
-REAL, DIMENSION(:,:)  , ALLOCATABLE   :: ZDXATH_ZS,ZDYATH_ZS
-REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZRHO_ZS    
-REAL, DIMENSION(:),     ALLOCATABLE   :: ZA_K,ZB_K,ZC_K,ZD_K                 
-!JUAN
-!
-INTEGER :: IINFO_ll
-TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL()   ! list of fields to exchange
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.     PROLOGUE  :
-!               --------
-!
-CALL GET_DIM_EXT_ll('Y',IIY,IJY)
-IF (L2D) THEN
-  ALLOCATE(ZBFY(IIY,IJY,SIZE(XRHODJ,3)))
-ELSE
-  ALLOCATE(ZBFY(IJY,IIY,SIZE(XRHODJ,3)))
-ENDIF
-ALLOCATE(ZTRIGSX(3*(NIMAX_ll+2*JPHEXT)))
-ALLOCATE(ZTRIGSY(3*(NJMAX_ll+2*JPHEXT)))
-!JUAN Z_SPLITING
-IKU=SIZE(XRHODJ,3)
-CALL GET_DIM_EXT_ll('B',IIU_B,IJU_B)
-ALLOCATE(ZBFB(IIU_B,IJU_B,IKU))
-!
-ALLOCATE(ZAF_ZS(IIU_B,IJU_B,IKU))
-ALLOCATE(ZBF_ZS(IIU_B,IJU_B,IKU))
-ALLOCATE(ZCF_ZS(IIU_B,IJU_B,IKU))
-ALLOCATE(ZDXATH_ZS(IIU_B,IJU_B))
-ALLOCATE(ZDYATH_ZS(IIU_B,IJU_B))
-ALLOCATE(ZRHO_ZS(IIU_B,IJU_B,IKU))
-ALLOCATE(ZA_K(IKU))
-ALLOCATE(ZB_K(IKU))
-ALLOCATE(ZC_K(IKU))
-ALLOCATE(ZD_K(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(ZBF_SXP2_YP1_Z(IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll))
-!
-!JUAN Z_SPLITING
-CALL MPPDB_CHECK3D(XRHODJ,"anel_balancen1-::XRHODJ",PRECISION)
-CALL MPPDB_CHECK3D(XUT,"anel_balancen1-::XUT",PRECISION)
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.     PRESSURE SOLVER INITIALIZATION :
-!               -------------------------------
-!
-!
-CALL TRIDZ(CLBCX,CLBCY,XMAP,XDXHAT,XDYHAT,CPRESOPT,                     &
-          ZDXHATM,ZDYHATM,ZRHOM,                                        &
-          ZAF,ZCF,ZTRIGSX,ZTRIGSY,IIFAXX,IIFAXY,XRHODJ,XTHVREF,XZZ,ZBFY,&
-          ZBFB,ZBF_SXP2_YP1_Z,                                          &
-          ZAF_ZS,ZBF_ZS,ZCF_ZS,                                         &
-          ZDXATH_ZS,ZDYATH_ZS,ZRHO_ZS,                      &
-          ZA_K,ZB_K,ZC_K,ZD_K) !JUAN  FULL ZSOLVER
-CALL MPPDB_CHECK3D(XRHODJ,"anel_balancen1-after TRIDZ::XRHODJ",PRECISION)
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.      ANELASTIC CORRECTION :
-!                ---------------------
-!
-!
-!*       3.1     multiplication by RHODJ
-!
-!$20140710 UPHALO on XRHODJ
-!CALL ADD3DFIELD_ll( TZFIELDS_ll, XRHODJ, 'ANEL_BALANCE_n::XRHODJ' )
-!CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-!CALL CLEANLIST_ll(TZFIELDS_ll)
-CALL MPPDB_CHECK3D(XRHODJ,"anel_balancen3.1-after update halo::XRHODJ",PRECISION)
-CALL MPPDB_CHECK3D(XUT,"anel_balancen3.1-after update halo::XUT",PRECISION)
-CALL MPPDB_CHECK3D(XWT,"anel_balancen3.1-after update halo::XWT",PRECISION)
-!
-ZRU(:,:,:) = MXM(XRHODJ) * XUT(:,:,:)
-ZRV(:,:,:) = MYM(XRHODJ) * XVT(:,:,:)
-ZRW(:,:,:) = MZM(XRHODJ) * XWT(:,:,:)
-ZTH(:,:,:) = XTHT(:,:,:)
-ALLOCATE(ZRR(SIZE(XRHODJ,1),SIZE(XRHODJ,2),SIZE(XRHODJ,3),SIZE(XRT,4)))
-ZRR(:,:,:,:) = XRT(:,:,:,:)
-!20131112 appli update_halo_ll
-CALL ADD3DFIELD_ll( TZFIELDS_ll, ZRU, 'ANEL_BALANCE_n::ZRU' )
-CALL ADD3DFIELD_ll( TZFIELDS_ll, ZRV, 'ANEL_BALANCE_n::ZRV' )
-CALL ADD3DFIELD_ll( TZFIELDS_ll, ZRW, 'ANEL_BALANCE_n::ZRW' )
-CALL ADD3DFIELD_ll( TZFIELDS_ll, ZTH, 'ANEL_BALANCE_n::ZTH' )
-CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-CALL CLEANLIST_ll(TZFIELDS_ll)
-CALL MPPDB_CHECK3D(ZRU,"anel_balancen3.1-after1stupdhalo::ZRU",PRECISION)
-!$20131125 add extrapol on ZRU to have correct boundaries
-!CALL EXTRAPOL('W',ZRU)  ! ZRU boundaries now correct
-CALL MPPDB_CHECK3D(ZRU,"anel_balancen3.1-afterextrapol W::ZRU",PRECISION)
-!20131126 add extrapol on ZRV to have correct boundaries
-!CALL EXTRAPOL('S',ZRV)  ! ZRV boundaries now correct
-CALL MPPDB_CHECK3D(ZRV,"anel_balancen3.1-afterextrapol S::ZRV",PRECISION)
-CALL MPPDB_CHECK3D(ZRW,"anel_balancen3.1-afterextrapol S::ZRW",PRECISION)
-!
-!
-!
-!
-!*       3.2     satisfy the anelastic constraint
-!
-ITCOUNT      =-1     ! no first guess of the pressure is available
-ZPABST(:,:,:)= 0.    !       ==================CAUTION=====================
-ZDRYMASST    = 0.    !      |   Initialization necessary for the           |
-ZREFMASS     = 0.    !      |  computation of the absolute pressure,       |
-ZMASS_O_PHI0 = 1.    !      |  which is here not needed                    |
-IRR  = 0             !      |                                              |
-IRRL = 0             !      |                                              |
-IRRI = 0             !       ==============================================
-!
-IMI = GET_CURRENT_MODEL_INDEX()
-CALL PRESSUREZ(CLBCX,CLBCY,CPRESOPT,NITR,LITRADJ,ITCOUNT,XRELAX,IMI,  &
-               XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY,ZDXHATM,ZDYHATM,ZRHOM, &
-               ZAF,ZBFY,ZCF,ZTRIGSX,ZTRIGSY,IIFAXX,IIFAXY,            &
-               IRR,IRRL,IRRI,ZDRYMASST,ZREFMASS,ZMASS_O_PHI0,         &
-               ZTH,ZRR,XRHODREF,XTHVREF,XRVREF,XEXNREF, XLINMASS,     &
-               ZRU,ZRV,ZRW,ZPABST,                                    &
-               ZBFB,ZBF_SXP2_YP1_Z,                                   &
-               XAF_ZS,XBF_ZS,XCF_ZS,                                  &
-               XDXATH_ZS,XDYATH_ZS,XRHO_ZS,                           &
-               XA_K,XB_K,XC_K,XD_K,                                   &
-               PRESIDUAL                          )
-!
-CALL MPPDB_CHECK3D(XRHODJ,"anel_balancen3.2-after pressurez halo::XRHODJ",PRECISION)
-CALL MPPDB_CHECK3D(ZRU,"anel_balancen3.2-after pressurez::ZRU",PRECISION)
-CALL MPPDB_CHECK3D(ZRV,"anel_balancen3.2-after pressurez::ZRV",PRECISION)
-!
-DEALLOCATE(ZBFY,ZTRIGSX,ZTRIGSY,ZRR,ZBF_SXP2_YP1_Z)
-!*       3.2     return to the historical variables
-!
-!20131112 appli update_halo_ll and associated operations
-XUT(:,:,:) = ZRU(:,:,:) / MXM(XRHODJ)
-XVT(:,:,:) = ZRV(:,:,:) / MYM(XRHODJ)
-XWT(:,:,:) = ZRW(:,:,:) / MZM(XRHODJ)
-!20131112 appli update_halo_ll to XUT,XVT,XWT
-CALL ADD3DFIELD_ll( TZFIELDS_ll, XUT, 'ANEL_BALANCE_n::XUT' )
-CALL ADD3DFIELD_ll( TZFIELDS_ll, XVT, 'ANEL_BALANCE_n::XVT' )
-CALL ADD3DFIELD_ll( TZFIELDS_ll, XWT, 'ANEL_BALANCE_n::XWT' )
-CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-CALL CLEANLIST_ll(TZFIELDS_ll)
-CALL MPPDB_CHECK3D(XUT,"anel_balancen3.2-afterupdhalo::XUT",PRECISION)
-CALL MPPDB_CHECK3D(XVT,"anel_balancen3.2-afterupdhalo::XVT",PRECISION)
-!20131125 apply extrapol to fix boundary issue in //
-CALL EXTRAPOL('W',XUT)
-CALL EXTRAPOL('S',XVT)
-CALL MPPDB_CHECK3D(XUT,"anel_balancen3.2-after extrapolW::XUT",PRECISION)
-CALL MPPDB_CHECK3D(XVT,"anel_balancen3.2-after extrapolS::XVT",PRECISION)
-!
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE ANEL_BALANCE_n
diff --git a/src/ZSOLVER/conjgrad.f90 b/src/ZSOLVER/conjgrad.f90
deleted file mode 100644
index 54e9ad6d8..000000000
--- a/src/ZSOLVER/conjgrad.f90
+++ /dev/null
@@ -1,291 +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 solver 2006/05/18 13:07:25
-!-----------------------------------------------------------------
-!     ####################
-      MODULE MODI_CONJGRAD
-!     ####################
-!
-INTERFACE
-!
-      SUBROUTINE CONJGRAD(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV, &
-      PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,         &
-      KITR,PY,PPHI)
-!  
-IMPLICIT NONE
-!
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX    ! x-direction LBC type 
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY    ! y-direction LBC type 
-!
-                                                 ! Metric coefficients:
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDXX      ! d*xx 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDYY      ! d*yy 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZX      ! d*zx 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZY      ! d*zy 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDZZ      ! d*zz
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRHODJ    ! density of reference * J
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PTHETAV   ! virtual potential temp. at time t
-!
-REAL, INTENT(IN) :: PDXHATM                     ! mean grid increment in the x
-                                                ! direction
-REAL, INTENT(IN) :: PDYHATM                     ! mean grid increment in the y
-                                                ! direction
-!
-REAL, DIMENSION (:), INTENT(IN) :: PRHOM         !  mean of XRHODJ on the plane x y 
-                                                 !  localized at a mass level
-!
-REAL, DIMENSION(:), INTENT(IN)     :: PAF,PCF    ! vectors giving the nonvanishing
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF        ! elements of the tri-diag. 
-                                                 ! matrix in the pressure eq.
-!
-                                                 ! arrays of sin or cos values
-                                                 ! for the FFT :
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSX        ! - along x
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSY        ! - along y
-!
-                                                 ! decomposition in prime 
-                                                 ! numbers for the FFT:
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXX      ! - along x
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXY      ! - along y
-!
-INTEGER, INTENT(IN) :: KITR                      ! number of iterations for the
-                                                 ! pressure solver
-!
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PY         ! RHS of the equation
-!          
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PPHI    ! solution of the equation 
-!
-END SUBROUTINE CONJGRAD
-!
-END INTERFACE
-!
-END  MODULE MODI_CONJGRAD
-!
-!
-!
-!     #########################################################################
-      SUBROUTINE CONJGRAD(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV, &
-      PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,         &
-      KITR,PY,PPHI)
-!     #########################################################################
-!
-!!****  *CONJGRAD * - solve an elliptic equation by the conjugate gradient 
-!!       method
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to solve an elliptic equation using 
-!     the preditioned conjugate gradient (CG) method. This is a version of the 
-!     CG called ORTHOMIN (Young and Jea 1980).
-!     
-!!**  METHOD
-!!    ------
-!!      The equation to be solved reads:
-!!
-!!             Q (PHI) = Y
-!!
-!!    where Q is the quasi-Laplacian ( subroutine QLAP ) and PHI the pressure
-!!    function.
-!!    We precondition the problem by the operator F :
-!!             -1               -1 
-!!            F   * Q (PHI) = F    (Y)
-!!    F represents the flat Laplacian ie. without orography. Its inversion is 
-!!    realized in the routine FLAT_INV. This equation is solved with a Conjugate 
-!!    Gradient method.
-!!    The initial guess is given by the pressure at the previous time step.
-!!    The resolution stops after ITR iterations of the solver.
-!!
-!!    EXTERNAL
-!!    --------
-!!      Subroutine GDIV: compute J times the divergence of 1/J times a vector
-!!      Function QLAP: compute the complete quasi-Laplacian Q
-!!      Subroutine FLAT_INV : invert the flat quasi-laplacien F
-!!      Function DOTPROD: compute the dot product of 2 vectors
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------ 
-!!      Module MODI_GDIV: interface for the subroutine GDIV
-!!      Module MODI_QLAP: interface for the function QLAP
-!!      Module MODI_FLAT_INV: interface for the subroutine FLAT_INV
-!!      Module MODI_DOTPROD: interface for the function DOTPROD
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation (routine CONJGRAD)
-!!      Kapitza and Eppel (1992) Beit. Physik ...
-!!      Young and Jea (1980) ....
-!!      
-!!    AUTHOR
-!!    ------
-!!	P. HÃ…reil and J. Stein       * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    25/07/94 
-!!
-!!                  14/01/97 Durran anelastic equation (Stein,Lafore)
-!-------------------------------------------------------------------------------
-!
-!*       0.     DECLARATIONS
-!               ------------
-!
-USE MODI_GDIV
-USE MODI_QLAP
-USE MODI_FLAT_INV
-USE MODI_DOTPROD
-!
-IMPLICIT NONE
-!
-!*      0.1    declarations of arguments
-!
-!
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX    ! x-direction LBC type 
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY    ! y-direction LBC type 
-!
-                                                 ! Metric coefficients:
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDXX      ! d*xx 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDYY      ! d*yy 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZX      ! d*zx 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZY      ! d*zy 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDZZ      ! d*zz
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRHODJ    ! density of reference * J
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PTHETAV   ! virtual potential temp. at time t
-!
-REAL, INTENT(IN) :: PDXHATM                     ! mean grid increment in the x
-                                                ! direction
-REAL, INTENT(IN) :: PDYHATM                     ! mean grid increment in the y
-                                                ! direction
-!
-REAL, DIMENSION (:), INTENT(IN) :: PRHOM         !  mean of XRHODJ on the plane x y 
-                                                 !  localized at a mass level
-!
-REAL, DIMENSION(:), INTENT(IN)     :: PAF,PCF    ! vectors giving the nonvanishing
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF        ! elements of the tri-diag. 
-                                                 ! matrix in the pressure eq.
-!
-                                                 ! arrays of sin or cos values
-                                                 ! for the FFT :
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSX        ! - along x
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSY        ! - along y
-!
-                                                 ! decomposition in prime 
-                                                 ! numbers for the FFT:
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXX      ! - along x
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXY      ! - along y
-!
-INTEGER, INTENT(IN) :: KITR                      ! number of iterations for the
-                                                 ! pressure solver
-!
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PY         ! RHS of the equation
-!          
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PPHI    ! solution of the equation 
-!
-!*      0.2    declarations of local variables
-!
-INTEGER :: JM                                    ! loop index   
-!
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZDELTA  
-     ! array containing the auxilary field DELTA of the CG method
-!
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZP  
-     ! array containing the auxilary field P of the CG method
-!
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZWORK ! work 
-     ! array containing the source term to be multiplied by the F inverse
-!
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZWORKD ! work 
-     ! array containing the result of the F inversion * Q (DELTA)
-!
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZWORKP ! work 
-     ! array containing the result of the F inversion * Q (P)
-!
-REAL :: ZALPHA, ZLAMBDA      ! amplitude of the descent in the Conjugate
-                             ! directions
-REAL :: ZDOTPP               ! dot product of ZWORKP by itself
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.    INITIALIZATIONS
-!              ---------------
-!
-ZLAMBDA = 0.
-ZP = 0.
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.    ITERATIVE LOOP
-!              --------------
-!
-DO JM = 1,KITR                                                         
-!
-!*       2.1    compute the new pressure function
-!
-  PPHI = PPHI + ZLAMBDA * ZP     !   the case JM =0 is special because 
-                                 !   PPHI is not changed
-!
-!*       2.2    compute the auxiliary field DELTA
-!
-!                                -1
-!   compute the vector DELTA = F  * ( Y - Q ( PHI ) )
-!    
-  ZWORK = QLAP(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV,PPHI) 
-                                                               ! Q (PHI)
-!                       
-  ZWORK = PY - ZWORK                                           ! Y - Q (PHI)
-!
-  CALL FLAT_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, &!  -1
-                  PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,ZWORK,ZDELTA)   ! F  (Y - Q (PHI)))
-!   
-!*      2.3     compute the auxiliary field P
-!
-!                                         -1
-!   compute the vector P = DELTA + alpha F  * Q ( DELTA ) 
-!  
-  IF (JM == 1) THEN
-    ZP = ZDELTA          ! P = DELTA at the first solver iteration
-  ELSE
-    ZWORK  = QLAP(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,  &
-                PDZZ,PRHODJ,PTHETAV,ZDELTA)                         ! Q ( DELTA )
-    CALL FLAT_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,  & !  -1
-            PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,ZWORK,ZWORKD)             ! F  * Q ( DELTA ) 
-!
-    ZALPHA = - DOTPROD(ZWORKD,ZWORKP,HLBCX,HLBCY)/ZDOTPP   ! ZWORKP,ZDOTPP come 
-                     ! from the previous solver iteration  (section 2.4)
-    ZP = ZDELTA + ZALPHA * ZP                              ! new vector P
-!
-  END IF
-!
-!*      2.4     compute LAMBDA
-!
-!
-  ZWORK = QLAP(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,&
-  PDZZ,PRHODJ,PTHETAV,ZP)                                       ! Q ( P )
-  CALL FLAT_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,& !  -1
-  PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,ZWORK,ZWORKP)                   ! F  * Q ( P )
-!
-!    store the scalar product to compute lambda and next P
-  ZDOTPP = DOTPROD(ZWORKP,ZWORKP,HLBCX,HLBCY)   
-!
-  ZLAMBDA = DOTPROD(ZDELTA,ZWORKP,HLBCX,HLBCY) / ZDOTPP   ! lambda
-!
-!
-END DO              ! end of the loop for the iterative solver
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.    COMPUTE THE FINAL PRESSURE FUNCTION
-!              -----------------------------------
-!
-PPHI = PPHI + ZLAMBDA * ZP
-!  
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE CONJGRAD
diff --git a/src/ZSOLVER/conresol.f90 b/src/ZSOLVER/conresol.f90
deleted file mode 100644
index 4f720d67b..000000000
--- a/src/ZSOLVER/conresol.f90
+++ /dev/null
@@ -1,272 +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 solver 2006/05/18 13:07:25
-!-----------------------------------------------------------------
-!     ####################
-      MODULE MODI_CONRESOL
-!     ####################
-!
-INTERFACE
-!
-      SUBROUTINE CONRESOL(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV, &
-      PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,         &
-      KITR,PY,PPHI)
-!  
-IMPLICIT NONE
-!
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX    ! x-direction LBC type 
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY    ! y-direction LBC type 
-!
-                                                 ! Metric coefficients:
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDXX      ! d*xx 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDYY      ! d*yy 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZX      ! d*zx 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZY      ! d*zy 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDZZ      ! d*zz
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRHODJ    ! density of reference * J
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PTHETAV   ! virtual pot. temp. at time t
-!
-REAL, INTENT(IN) :: PDXHATM                     ! mean grid increment in the x
-                                                ! direction
-REAL, INTENT(IN) :: PDYHATM                     ! mean grid increment in the y
-                                                ! direction
-!
-REAL, DIMENSION (:), INTENT(IN) :: PRHOM         !  XRHODJ mean on the X Y plane
-                                                 !  localized at a mass level
-!
-REAL, DIMENSION(:), INTENT(IN)     :: PAF,PCF    ! vectors giving the nonvanishing
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF        ! elements of the tri-diag. 
-                                                 ! matrix in the pressure eq.
-!
-                                                 ! arrays of sin or cos values
-                                                 ! for the FFT :
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSX        ! - along x
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSY        ! - along y
-!
-                                                 ! decomposition in prime 
-                                                 ! numbers for the FFT:
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXX      ! - along x
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXY      ! - along y
-!
-INTEGER, INTENT(IN) :: KITR                      ! number of iterations for the
-                                                 ! pressure solver
-!
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PY         ! RHS of the equation
-!          
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PPHI    ! solution of the equation 
-!
-END SUBROUTINE CONRESOL
-!
-END INTERFACE
-!
-END  MODULE MODI_CONRESOL
-!
-!
-!
-!     #########################################################################
-      SUBROUTINE CONRESOL(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV, &
-      PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,         &
-      KITR,PY,PPHI)
-!     #########################################################################
-!
-!!****  *CONRESOL * - solve an elliptic equation by the conjugate residual
-!!       method
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to solve an elliptic equation using 
-!     the preconditioned conjugate residual (CR) method. This is a version
-!     of the scheme proposed by Skamarock, Smolarkiewicz and Klemp (MWR, 1997).
-!     
-!!**  METHOD
-!!    ------
-!!      The equation to be solved reads:
-!!
-!!             Q (PHI) = Y
-!!
-!!    where Q is the quasi-Laplacian ( subroutine QLAP ) and PHI the pressure
-!!    function.
-!!    We precondition the problem by the operator F :
-!!             -1               -1 
-!!            F   * Q (PHI) = F    (Y)
-!!    F represents the flat Laplacian ie. without orography. Its inversion is 
-!!    realized in the routine FLAT_INV. This equation is solved with a Conjugate
-!!    Residual method.
-!!    The initial guess is given by the pressure at the previous time step.
-!!    The resolution stops after ITR iterations of the solver.
-!!
-!!    EXTERNAL
-!!    --------
-!!      Subroutine GDIV: compute J times the divergence of 1/J times a vector
-!!      Function QLAP: compute the complete quasi-Laplacian Q
-!!      Subroutine FLAT_INV : invert the flat quasi-laplacien F
-!!      Function DOTPROD: compute the dot product of 2 vectors
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------ 
-!!      Module MODI_GDIV: interface for the subroutine GDIV
-!!      Module MODI_QLAP: interface for the function QLAP
-!!      Module MODI_FLAT_INV: interface for the subroutine FLAT_INV
-!!      Module MODI_DOTPROD: interface for the function DOTPROD
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation (routine CONRESOL)
-!!      Skamarock, Smolarkiewicz and Klemp (1997) MWR
-!!      
-!!    AUTHOR
-!!    ------
-!!	J.-P. Pinty *Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    25/08/99 
-!!      J.-P. Pinty & P. Jabouille
-!!                  11/07/00 bug in ZALPHA
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.     DECLARATIONS
-!               ------------
-!
-USE MODI_GDIV
-USE MODI_QLAP
-USE MODI_FLAT_INV
-USE MODI_DOTPROD
-!
-IMPLICIT NONE
-!
-!*      0.1    declarations of arguments
-!
-!
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX    ! x-direction LBC type 
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY    ! y-direction LBC type 
-!
-                                                 ! Metric coefficients:
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDXX      ! d*xx 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDYY      ! d*yy 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZX      ! d*zx 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZY      ! d*zy 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDZZ      ! d*zz
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRHODJ    ! density of reference * J
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PTHETAV   ! virtual pot. temp. at time t
-!
-REAL, INTENT(IN) :: PDXHATM                     ! mean grid increment in the x
-                                                ! direction
-REAL, INTENT(IN) :: PDYHATM                     ! mean grid increment in the y
-                                                ! direction
-!
-REAL, DIMENSION (:), INTENT(IN) :: PRHOM         !  mean of XRHODJ on the plane x y 
-                                                 !  localized at a mass level
-!
-REAL, DIMENSION(:), INTENT(IN)     :: PAF,PCF    ! vectors giving the nonvanishing
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF        ! elements of the tri-diag. 
-                                                 ! matrix in the pressure eq.
-!
-                                                 ! arrays of sin or cos values
-                                                 ! for the FFT :
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSX        ! - along x
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSY        ! - along y
-!
-                                                 ! decomposition in prime 
-                                                 ! numbers for the FFT:
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXX      ! - along x
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXY      ! - along y
-!
-INTEGER, INTENT(IN) :: KITR                      ! number of iterations for the
-                                                 ! pressure solver
-!
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PY         ! RHS of the equation
-!          
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PPHI    ! solution of the equation 
-!
-!*      0.2    declarations of local variables
-!
-INTEGER :: JM                                    ! loop index   
-!
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZDELTA, ZKSI  
-     ! array containing the auxilary fields DELTA and KSI of the CR method
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZP, ZQ  
-     ! array containing the auxilary fields P and Q of the CR method
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZRESIDUE
-     ! array containing the error field at each iteration Q(PHI) - Y
-!
-REAL :: ZALPHA, ZLAMBDA      ! amplitude of the descent in the Conjugate
-                             ! directions
-REAL :: ZDOT_DELTA           ! dot product of ZDELTA by itself
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.    INITIALIZATIONS
-!              ---------------
-!
-!                             
-!*       1.1    compute the vector: r^(0) =  Q(PHI) - Y
-!    
-ZRESIDUE = QLAP(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV,PPHI) - PY
-!
-!*       1.2    compute the vector: p^(0) = F^(-1)*( Q(PHI) - Y )
-!    
-CALL FLAT_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,  &
-                     PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,ZRESIDUE,ZP)
-!
-!*       1.3    compute the vector: delta^(0) = Q ( p^(0) )
-!
-ZDELTA = QLAP(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV,ZP)
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.    ITERATIVE LOOP
-!              --------------
-!
-DO JM = 1,KITR                                                         
-!
-!*       2.1    compute the step LAMBDA
-!
-  ZDOT_DELTA = DOTPROD(ZDELTA,  ZDELTA,HLBCX,HLBCY)            ! norm of DELTA
-  ZLAMBDA  = - DOTPROD(ZRESIDUE,ZDELTA,HLBCX,HLBCY) / ZDOT_DELTA
-!
-!*       2.2    update the pressure function PHI
-!
-  PPHI = PPHI + ZLAMBDA * ZP
-!
-!
-  IF( JM == KITR ) EXIT
-!
-!
-!*       2.3    update the residual error: r
-!
-  ZRESIDUE = ZRESIDUE + ZLAMBDA * ZDELTA
-!                        
-!*       2.4    compute the vector: q = F^(-1)*( Q(PHI) - Y )
-!    
-  CALL FLAT_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,  &
-                       PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,ZRESIDUE,ZQ)
-!   
-!*       2.5     compute the auxiliary field: ksi = Q ( q )
-!
-  ZKSI= QLAP(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV,ZQ)
-!                                         -1
-!*       2.6     compute the step ALPHA
-!  
-  ZALPHA = - DOTPROD(ZKSI,ZDELTA,HLBCX,HLBCY) / ZDOT_DELTA   ! lambda
-!
-!*       2.7     update p and DELTA
-!
-  ZP     = ZQ   + ZALPHA * ZP
-  ZDELTA = ZKSI + ZALPHA * ZDELTA
-!
-END DO              ! end of the loop for the iterative solver
-!
-!  
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE CONRESOL
diff --git a/src/ZSOLVER/conresolz.f90 b/src/ZSOLVER/conresolz.f90
deleted file mode 100644
index 17c514b33..000000000
--- a/src/ZSOLVER/conresolz.f90
+++ /dev/null
@@ -1,295 +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$ $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-!     ####################
-      MODULE MODI_CONRESOLZ
-!     ####################
-!
-INTERFACE
-!
-      SUBROUTINE CONRESOLZ(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV, &
-      PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,         &
-      KITR,PY,PPHI,                                                            &
-      PBFB,&
-      PBF_SXP2_YP1_Z) !JUAN Z_SPLITING
-!  
-IMPLICIT NONE
-!
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX    ! x-direction LBC type 
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY    ! y-direction LBC type 
-!
-                                                 ! Metric coefficients:
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDXX      ! d*xx 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDYY      ! d*yy 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZX      ! d*zx 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZY      ! d*zy 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDZZ      ! d*zz
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRHODJ    ! density of reference * J
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PTHETAV   ! virtual pot. temp. at time t
-!
-REAL, INTENT(IN) :: PDXHATM                     ! mean grid increment in the x
-                                                ! direction
-REAL, INTENT(IN) :: PDYHATM                     ! mean grid increment in the y
-                                                ! direction
-!
-REAL, DIMENSION (:), INTENT(IN) :: PRHOM         !  XRHODJ mean on the X Y plane
-                                                 !  localized at a mass level
-!
-REAL, DIMENSION(:), INTENT(IN)     :: PAF,PCF    ! vectors giving the nonvanishing
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF        ! elements of the tri-diag. 
-                                                 ! matrix in the pressure eq.
-!
-                                                 ! arrays of sin or cos values
-                                                 ! for the FFT :
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSX        ! - along x
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSY        ! - along y
-!
-                                                 ! decomposition in prime 
-                                                 ! numbers for the FFT:
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXX      ! - along x
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXY      ! - along y
-!
-INTEGER, INTENT(IN) :: KITR                      ! number of iterations for the
-                                                 ! pressure solver
-!
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PY         ! RHS of the equation
-!          
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PPHI    ! solution of the equation 
-!
-!JUAN Z_SPLITING
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBFB       ! elements of the tri-diag. b-slide 
-                                                 ! matrix in the pressure eq.
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF_SXP2_YP1_Z       ! elements of the tri-diag. SXP2_YP1_Z-slide 
-                                                   ! matrix in the pressure eq.
-!JUAN Z_SPLITING
-END SUBROUTINE CONRESOLZ
-!
-END INTERFACE
-!
-END  MODULE MODI_CONRESOLZ
-!
-!
-!
-!     #########################################################################
-      SUBROUTINE CONRESOLZ(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV, &
-      PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,         &
-      KITR,PY,PPHI,                                                            &
-      PBFB,&
-      PBF_SXP2_YP1_Z) !JUAN Z_SPLITING
-!     #########################################################################
-!
-!!****  *CONRESOLZ * - solve an elliptic equation by the conjugate residual
-!!       method
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to solve an elliptic equation using 
-!     the preconditioned conjugate residual (CR) method. This is a version
-!     of the scheme proposed by Skamarock, Smolarkiewicz and Klemp (MWR, 1997).
-!     
-!!**  METHOD
-!!    ------
-!!      The equation to be solved reads:
-!!
-!!             Q (PHI) = Y
-!!
-!!    where Q is the quasi-Laplacian ( subroutine QLAP ) and PHI the pressure
-!!    function.
-!!    We precondition the problem by the operator F :
-!!             -1               -1 
-!!            F   * Q (PHI) = F    (Y)
-!!    F represents the flat Laplacian ie. without orography. Its inversion is 
-!!    realized in the routine FLAT_INVZ. This equation is solved with a Conjugate
-!!    Residual method.
-!!    The initial guess is given by the pressure at the previous time step.
-!!    The resolution stops after ITR iterations of the solver.
-!!
-!!    EXTERNAL
-!!    --------
-!!      Subroutine GDIV: compute J times the divergence of 1/J times a vector
-!!      Function QLAP: compute the complete quasi-Laplacian Q
-!!      Subroutine FLAT_INVZ : invert the flat quasi-laplacien F
-!!      Function DOTPROD: compute the dot product of 2 vectors
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------ 
-!!      Module MODI_GDIV: interface for the subroutine GDIV
-!!      Module MODI_QLAP: interface for the function QLAP
-!!      Module MODI_FLAT_INVZ: interface for the subroutine FLAT_INVZ
-!!      Module MODI_DOTPROD: interface for the function DOTPROD
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation (routine CONRESOL)
-!!      Skamarock, Smolarkiewicz and Klemp (1997) MWR
-!!      
-!!    AUTHOR
-!!    ------
-!!	J.-P. Pinty *Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    25/08/99 
-!!      J.-P. Pinty & P. Jabouille
-!!                  11/07/00 bug in ZALPHA
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.     DECLARATIONS
-!               ------------
-!
-USE MODI_GDIV
-USE MODI_QLAP
-USE MODI_FLAT_INVZ
-USE MODI_DOTPROD
-!
-IMPLICIT NONE
-!
-!*      0.1    declarations of arguments
-!
-!
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX    ! x-direction LBC type 
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY    ! y-direction LBC type 
-!
-                                                 ! Metric coefficients:
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDXX      ! d*xx 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDYY      ! d*yy 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZX      ! d*zx 
-REAL, DIMENSION(:,:,:), INTENT(INOUT)  :: PDZY      ! d*zy 
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDZZ      ! d*zz
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRHODJ    ! density of reference * J
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PTHETAV   ! virtual pot. temp. at time t
-!
-REAL, INTENT(IN) :: PDXHATM                     ! mean grid increment in the x
-                                                ! direction
-REAL, INTENT(IN) :: PDYHATM                     ! mean grid increment in the y
-                                                ! direction
-!
-REAL, DIMENSION (:), INTENT(IN) :: PRHOM         !  mean of XRHODJ on the plane x y 
-                                                 !  localized at a mass level
-!
-REAL, DIMENSION(:), INTENT(IN)     :: PAF,PCF    ! vectors giving the nonvanishing
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF        ! elements of the tri-diag. 
-                                                 ! matrix in the pressure eq.
-!
-                                                 ! arrays of sin or cos values
-                                                 ! for the FFT :
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSX        ! - along x
-REAL, DIMENSION(:), INTENT(IN) :: PTRIGSY        ! - along y
-!
-                                                 ! decomposition in prime 
-                                                 ! numbers for the FFT:
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXX      ! - along x
-INTEGER, DIMENSION(19), INTENT(IN) :: KIFAXY      ! - along y
-!
-INTEGER, INTENT(IN) :: KITR                      ! number of iterations for the
-                                                 ! pressure solver
-!
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PY         ! RHS of the equation
-!          
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PPHI    ! solution of the equation 
-!JUAN Z_SPLITING
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBFB       ! elements of the tri-diag. b-slide 
-                                                 ! matrix in the pressure eq.
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PBF_SXP2_YP1_Z       ! elements of the tri-diag. SXP2_YP1_Z-slide 
-                                                   ! matrix in the pressure eq.
-!JUAN Z_SPLITING
-!
-!*      0.2    declarations of local variables
-!
-INTEGER :: JM                                    ! loop index   
-!
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZDELTA, ZKSI  
-     ! array containing the auxilary fields DELTA and KSI of the CR method
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZP, ZQ  
-     ! array containing the auxilary fields P and Q of the CR method
-REAL, DIMENSION(SIZE(PPHI,1),SIZE(PPHI,2),SIZE(PPHI,3)) :: ZRESIDUE
-     ! array containing the error field at each iteration Q(PHI) - Y
-!
-REAL :: ZALPHA, ZLAMBDA      ! amplitude of the descent in the Conjugate
-                             ! directions
-REAL :: ZDOT_DELTA           ! dot product of ZDELTA by itself
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.    INITIALIZATIONS
-!              ---------------
-!
-!                             
-!*       1.1    compute the vector: r^(0) =  Q(PHI) - Y
-!    
-ZRESIDUE = QLAP(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV,PPHI) - PY
-!
-!*       1.2    compute the vector: p^(0) = F^(-1)*( Q(PHI) - Y )
-!    
-CALL FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,  &
-                     PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,ZRESIDUE,ZP,&
-                     PBFB,&
-                     PBF_SXP2_YP1_Z) !JUAN Z_SPLITING 
-!JUAN      print*, "size ZP=",SIZE(ZP)
-!JUAN      print*, "size ZRESIDUE=",SIZE(ZRESIDUE)
-!
-!*       1.3    compute the vector: delta^(0) = Q ( p^(0) )
-!
-ZDELTA = QLAP(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV,ZP)
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.    ITERATIVE LOOP
-!              --------------
-!
-DO JM = 1,KITR                                                         
-!
-!*       2.1    compute the step LAMBDA
-!
-  ZDOT_DELTA = DOTPROD(ZDELTA,  ZDELTA,HLBCX,HLBCY)            ! norm of DELTA
-  ZLAMBDA  = - DOTPROD(ZRESIDUE,ZDELTA,HLBCX,HLBCY) / ZDOT_DELTA
-!
-!*       2.2    update the pressure function PHI
-!
-  PPHI = PPHI + ZLAMBDA * ZP
-!
-!
-  IF( JM == KITR ) EXIT
-!
-!
-!*       2.3    update the residual error: r
-!
-  ZRESIDUE = ZRESIDUE + ZLAMBDA * ZDELTA
-!                        
-!*       2.4    compute the vector: q = F^(-1)*( Q(PHI) - Y )
-!    
-CALL FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,  &
-                 PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,ZRESIDUE,ZQ,    &
-                 PBFB,&
-                 PBF_SXP2_YP1_Z) !JUAN Z_SPLITTING
-!   
-!*       2.5     compute the auxiliary field: ksi = Q ( q )
-!
-  ZKSI= QLAP(HLBCX,HLBCY,PDXX,PDYY,PDZX,PDZY,PDZZ,PRHODJ,PTHETAV,ZQ)
-!                                         -1
-!*       2.6     compute the step ALPHA
-!  
-  ZALPHA = - DOTPROD(ZKSI,ZDELTA,HLBCX,HLBCY) / ZDOT_DELTA   ! lambda
-!
-!*       2.7     update p and DELTA
-!
-  ZP     = ZQ   + ZALPHA * ZP
-  ZDELTA = ZKSI + ZALPHA * ZDELTA
-!
-END DO              ! end of the loop for the iterative solver
-!
-!  
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE CONRESOLZ
diff --git a/src/ZSOLVER/ini_dynamics.f90 b/src/ZSOLVER/ini_dynamics.f90
deleted file mode 100644
index 40aa0eb77..000000000
--- a/src/ZSOLVER/ini_dynamics.f90
+++ /dev/null
@@ -1,640 +0,0 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     ########################
-      MODULE MODI_INI_DYNAMICS
-!     ########################
-INTERFACE
-SUBROUTINE INI_DYNAMICS(PLON,PLAT,PRHODJ,PTHVREF,PMAP,PZZ,                   &
-               PDXHAT,PDYHAT,PZHAT,HLBCX,HLBCY,PTSTEP,HPRESOPT,              &
-               OVE_RELAX,OVE_RELAX_GRD,OHORELAX_UVWTH,OHORELAX_RV,           &
-               OHORELAX_RC,OHORELAX_RR,OHORELAX_RI,OHORELAX_RS,OHORELAX_RG,  &
-               OHORELAX_RH,OHORELAX_TKE,OHORELAX_SV,                         &
-               OHORELAX_SVC2R2,OHORELAX_SVC1R3,OHORELAX_SVELEC,OHORELAX_SVLG,&
-               OHORELAX_SVCHEM,OHORELAX_SVAER,OHORELAX_SVDST,OHORELAX_SVSLT, &
-               OHORELAX_SVPP,OHORELAX_SVCS,  OHORELAX_SVCHIC,OHORELAX_SVSNW, &
-#ifdef MNH_FOREFIRE
-               OHORELAX_SVFF,                                                &
-#endif
-               PRIMKMAX,KRIMX,KRIMY,PALKTOP,PALKGRD,PALZBOT,PALZBAS,         &
-               PT4DIFU,PT4DIFTH,PT4DIFSV,                                    &
-               PCORIOX,PCORIOY,PCORIOZ,PCURVX,PCURVY,                        &
-               PDXHATM,PDYHATM,PRHOM,PAF,PBFY,PCF,                           &
-               PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,                                &
-               PALK,PALKW,KALBOT,PALKBAS,PALKWBAS,KALBAS,                    &
-               OMASK_RELAX,PKURELAX, PKVRELAX, PKWRELAX,                     &
-               PDK2U,PDK4U,PDK2TH,PDK4TH,PDK2SV,PDK4SV,OZDIFFU,PZDIFFU_HALO2,& 
-               PBFB,                                                         &
-               PBF_SXP2_YP1_Z,                                               &
-               PAF_ZS,PBF_ZS,PCF_ZS,                                         &
-               PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                                  &
-               A_K,B_K,C_K,D_K) !JUAN FULL ZSOLVER
-!  intent in arguments
-!
-USE MODE_TYPE_ZDIFFU
-IMPLICIT NONE
-!
-REAL, DIMENSION(:,:),   INTENT(IN)        :: PLON,PLAT !Longitude and latitude
-REAL, DIMENSION(:,:,:), INTENT(IN)        :: PRHODJ    ! rho J
-REAL, DIMENSION(:,:,:), INTENT(IN)        :: PTHVREF   ! virtual potential 
-                                      ! temperature of the reference state
-REAL, DIMENSION(:,:),   INTENT(IN)        :: PMAP      ! Map factor
-REAL, DIMENSION(:,:,:), INTENT(IN)        :: PZZ       ! height 
-REAL, DIMENSION(:),     INTENT(IN)        :: PDXHAT     ! Stretching in x direction
-REAL, DIMENSION(:),     INTENT(IN)        :: PDYHAT     ! Stretching in y direction
-REAL, DIMENSION(:),     INTENT(IN)        :: PZHAT     ! Gal-Chen Height   
-CHARACTER(LEN=4), DIMENSION(:), INTENT(IN) :: HLBCX    ! x-direction LBC type
-CHARACTER(LEN=4), DIMENSION(:), INTENT(IN) :: HLBCY    ! y-direction LBC type
-LOGICAL,                INTENT(IN)        :: OVE_RELAX ! logical
-             ! switch to activate the VErtical  RELAXation
-LOGICAL,                INTENT(IN)        :: OVE_RELAX_GRD ! logical
-             ! switch to activate the VErtical  RELAXation (ground layer)
-LOGICAL,            INTENT(IN) :: OHORELAX_UVWTH  ! switch for the 
-                       ! horizontal relaxation for U,V,W,TH
-LOGICAL,            INTENT(IN) :: OHORELAX_RV     ! switch for the 
-                       ! horizontal relaxation for Rv
-LOGICAL,            INTENT(IN) :: OHORELAX_RC     ! switch for the 
-                       ! horizontal relaxation for Rc
-LOGICAL,            INTENT(IN) :: OHORELAX_RR     ! switch for the 
-                       ! horizontal relaxation for Rr
-LOGICAL,            INTENT(IN) :: OHORELAX_RI     ! switch for the 
-                       ! horizontal relaxation for Ri
-LOGICAL,            INTENT(IN) :: OHORELAX_RS     ! switch for the 
-                       ! horizontal relaxation for Rs
-LOGICAL,            INTENT(IN) :: OHORELAX_RG     ! switch for the 
-                       ! horizontal relaxation for Rg
-LOGICAL,            INTENT(IN) :: OHORELAX_RH     ! switch for the 
-                       ! horizontal relaxation for Rh
-LOGICAL,            INTENT(IN) :: OHORELAX_TKE    ! switch for the 
-                       ! horizontal relaxation for tke
-LOGICAL,DIMENSION(:),INTENT(IN):: OHORELAX_SV     ! switch for the 
-                       ! horizontal relaxation for sv variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVC2R2 ! switch for the 
-                       ! horizontal relaxation for c2r2 variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVC1R3 ! switch for the 
-                       ! horizontal relaxation for c1r3 variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVELEC ! switch for the 
-                       ! horizontal relaxation for elec variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVLG   ! switch for the 
-                       ! horizontal relaxation for lg variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVCHEM ! switch for the 
-                       ! horizontal relaxation for chem variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVCHIC ! switch for the 
-                       ! horizontal relaxation for ice chem variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVAER  ! switch for the 
-                       ! horizontal relaxation for aer variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVDST  ! switch for the 
-                       ! horizontal relaxation for dst variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVSLT  ! switch for the 
-                       ! horizontal relaxation for slt variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVPP   ! switch for the 
-                       ! horizontal relaxation for passive pollutants
-LOGICAL,             INTENT(IN):: OHORELAX_SVSNW   ! switch for the
-                       ! horizontal relaxation for blowing snow variables    
-#ifdef MNH_FOREFIRE
-LOGICAL,             INTENT(IN):: OHORELAX_SVFF   ! switch for the 
-                       ! horizontal relaxation for ForeFire variables
-#endif
-LOGICAL,             INTENT(IN):: OHORELAX_SVCS   ! switch for the 
-                       ! horizontal relaxation for conditional sampling
-REAL,                    INTENT(IN)    :: PRIMKMAX !Max. value of the horiz.
-                                     ! relaxation coefficients
-INTEGER,                INTENT(IN)     :: KRIMX,KRIMY ! Number of points in 
-                                     ! the rim zone in the x and y directions 
-REAL,     INTENT(IN)   :: PALKTOP    ! Damping coef. at the top of the absorbing
-                                     ! layer
-REAL,     INTENT(IN)   :: PALKGRD    ! Damping coef. at the top of the absorbing
-                                     ! layer                                    
-REAL,     INTENT(IN)   :: PALZBOT    ! Height of the absorbing layer base
-REAL,     INTENT(IN)   :: PALZBAS    ! Height of the absorbing layer base
-REAL,     INTENT(IN)   :: PT4DIFU    ! Damping time scale for 2*dx wavelength
-                                     ! specified for the 4nd order num. diffusion
-                                     ! for momentum
-REAL,     INTENT(IN)   :: PT4DIFTH   ! for meteorological scalar variables
-REAL,     INTENT(IN)   :: PT4DIFSV   ! for tracer scalar variables
-
-REAL,     INTENT(IN)   :: PTSTEP     ! Time step
-CHARACTER (LEN=5), INTENT(IN) :: HPRESOPT        ! choice of the pressure solver
-!
-!  intent out arguments
-!
-REAL, INTENT(OUT) :: PDXHATM                     ! mean grid increment in the x
-                                                 ! direction
-REAL, INTENT(OUT) :: PDYHATM                     ! mean grid increment in the y
-                                                 ! direction
-!
-REAL, DIMENSION (:), INTENT(OUT) :: PRHOM        !  mean of XRHODJ on the plane x y 
-                                                 !  localized at a mass level
-!
-REAL, DIMENSION(:,:), INTENT(OUT) :: PCORIOX,PCORIOY ! Hor. Coriolis parameters
-REAL, DIMENSION(:,:), INTENT(OUT) :: PCORIOZ         ! Vert. Coriolis parameter 
-REAL, DIMENSION(:,:), INTENT(OUT) :: PCURVX,PCURVY   ! Curvature coefficients
-! 
-REAL, DIMENSION(:),     INTENT(OUT) :: PAF ! vectors giving the non-vanishing        
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBFY ! elements of the tri-diag matrix        
-                                            ! on an y-slice of global physical domain
-REAL, DIMENSION(:),     INTENT(OUT) :: PCF ! in the pressure equation
-REAL, DIMENSION(:),     INTENT(OUT) :: PTRIGSX ! Arrays for sinus or cosinus 
-REAL, DIMENSION(:),     INTENT(OUT) :: PTRIGSY ! values for the FFT in x and
-                                               ! y directions
-INTEGER, DIMENSION(:),  INTENT(OUT) :: KIFAXX  ! Decomposition in prime numbers
-INTEGER, DIMENSION(:),  INTENT(OUT) :: KIFAXY  ! for the FFT in x and y
-                                               ! direction      
-INTEGER          ,  INTENT(OUT)  :: KALBOT     ! Vertical index corresponding
-                                               ! to the absorbing layer base
-!  
-REAL, DIMENSION(:),   INTENT(OUT) :: PALK  ! Function of the absorbing
-                                           ! layer damping coefficient
-                                           ! defined for  u,v,and theta
-REAL, DIMENSION(:),   INTENT(OUT) :: PALKW ! Idem but defined for w    
-INTEGER          ,  INTENT(OUT)  :: KALBAS     ! Vertical index corresponding
-                                               ! to the absorbing layer base
-!  
-REAL, DIMENSION(:),   INTENT(OUT) :: PALKBAS  ! Function of the absorbing
-                                           ! layer damping coefficient
-                                           ! defined for  u,v,and theta
-REAL, DIMENSION(:),   INTENT(OUT) :: PALKWBAS ! Idem but defined for w
-LOGICAL, DIMENSION(:,:),  INTENT(OUT)   :: OMASK_RELAX  ! True where the 
-                                           ! lateral relax. has to be performed
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PKURELAX  !  Horizontal relaxation
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PKVRELAX  !  coefficients for the
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PKWRELAX  ! u, v and mass locations
-REAL,                 INTENT(OUT) :: PDK2U ! 2nd order num. diffusion coef. /dx2
-REAL,                 INTENT(OUT) :: PDK4U ! 4nd order num. diffusion coef. /dx4
-                                           ! for momentum
-REAL,                 INTENT(OUT) :: PDK2TH! for meteorological scalar variables
-REAL,                 INTENT(OUT) :: PDK4TH! 
-REAL,                 INTENT(OUT) :: PDK2SV! for tracer scalar variables
-REAL,                 INTENT(OUT) :: PDK4SV! 
-!
-LOGICAL, INTENT(IN) :: OZDIFFU
-TYPE(TYPE_ZDIFFU_HALO2)                       :: PZDIFFU_HALO2
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBFB ! elements of the tri-diag matrix
-                                            ! on an b-slice of global physical domain
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBF_SXP2_YP1_Z ! elements of the tri-diag. SXP2_YP1_Z-slide 
-                                                   ! matrix in the pressure eq.
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PAF_ZS,PBF_ZS,PCF_ZS
-REAL, DIMENSION(:,:)  , INTENT(OUT) :: PDXATH_ZS,PDYATH_ZS
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRHO_ZS
-REAL, DIMENSION(:)    , INTENT(OUT) :: A_K,B_K,C_K,D_K
-
-END SUBROUTINE INI_DYNAMICS
-!
-END INTERFACE
-!
-END MODULE MODI_INI_DYNAMICS
-!     ######################################################################
-SUBROUTINE INI_DYNAMICS(PLON,PLAT,PRHODJ,PTHVREF,PMAP,PZZ,                   &
-               PDXHAT,PDYHAT,PZHAT,HLBCX,HLBCY,PTSTEP,HPRESOPT,              &
-               OVE_RELAX,OVE_RELAX_GRD,OHORELAX_UVWTH,OHORELAX_RV,           &
-               OHORELAX_RC,OHORELAX_RR,OHORELAX_RI,OHORELAX_RS,OHORELAX_RG,  &
-               OHORELAX_RH,OHORELAX_TKE,OHORELAX_SV,                         &
-               OHORELAX_SVC2R2,OHORELAX_SVC1R3,OHORELAX_SVELEC,OHORELAX_SVLG,&
-               OHORELAX_SVCHEM,OHORELAX_SVAER,OHORELAX_SVDST,OHORELAX_SVSLT, &
-               OHORELAX_SVPP,OHORELAX_SVCS,  OHORELAX_SVCHIC,OHORELAX_SVSNW, &
-#ifdef MNH_FOREFIRE
-               OHORELAX_SVFF,                                                &
-#endif
-               PRIMKMAX,KRIMX,KRIMY,PALKTOP,PALKGRD,PALZBOT,PALZBAS,         &
-               PT4DIFU,PT4DIFTH,PT4DIFSV,                                    &
-               PCORIOX,PCORIOY,PCORIOZ,PCURVX,PCURVY,                        &
-               PDXHATM,PDYHATM,PRHOM,PAF,PBFY,PCF,                           &
-               PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,                                &
-               PALK,PALKW,KALBOT,PALKBAS,PALKWBAS,KALBAS,                    &
-               OMASK_RELAX,PKURELAX, PKVRELAX, PKWRELAX,                     &
-               PDK2U,PDK4U,PDK2TH,PDK4TH,PDK2SV,PDK4SV,OZDIFFU,PZDIFFU_HALO2,& 
-               PBFB,                                                         &
-               PBF_SXP2_YP1_Z,                                               &
-               PAF_ZS,PBF_ZS,PCF_ZS,                                         &
-               PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                                  &
-               A_K,B_K,C_K,D_K) !JUAN FULL ZSOLVER  
-!     ######################################################################
-!
-!!****  *INI_DYNAMICS* - routine to initialize the parameters for the dynamics
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to set or compute the parameters used
-!     by the MESONH dynamics : 
-!              * Coriolis parameters
-!              * Curvature coefficients
-!              * Pressure solver coefficients
-!              * Absorbing layer coefficients
-!              * Numerical difussion coefficients
-!
-!!**  METHOD
-!!    ------
-!!      - Coriolis parameters and curvature terms :
-!!           Horizontal Coriolis parameters are not initialized if thinshell
-!!    approximation is made (LTHINSHELL=.TRUE.).
-!!           Curvature coefficients are not initialized if Cartesian geometry
-!!    (LCARTESIAN=.TRUE.)  
-!!      - Coefficients and variables for pressure solver :
-!!          This is done by TRID
-!!      - Coefficients and variables for the absorbing layer 
-!!          ( upper and lateral) : This is done by RELAXDEF
-!!      - Coefficients for the numerical diffusion
-!!      
-!!    EXTERNAL
-!!    --------   
-!!      TRID    : to initialize pressure solver
-!!      RELAXDEF: to compute the relaxation coefficients
-!!      GET_DIM_EXT_ll : get extended sub-domain sizes
-!!
-!!     Module MODI_TRID   : interface for routine TRID
-!!     Module MODI_RELAXDEF : interface for routine RELAXDEF
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------ 
-!!      Module MODD_CONF  : contains declaration of configuration variables
-!!        
-!!         LTHINSHELL : Logical for  THINSHELL approximation                
-!!                     .TRUE.  = thinshell approximation
-!!         LCARTESIAN : Logical for cartesian geometry :
-!!                     .TRUE.  = cartesian geometry 
-!!         L1D        : Logical for 1D configuration :
-!!                     .TRUE.  = 1D model 
-!!
-!!      Module MODD_CST   : contains physical constants 
-!!
-!!         XPI        : Pi
-!!         XOMEGA     : Earth rotation
-!!
-!!      Module MODD_GRID  : contains grid variables
-!!
-!!         XLON0      :  Reference longitude for the conformal projection
-!!         XLAT0      :  Reference latitude for the conformal projection  
-!!         XBETA      :  Rotation angle for the conformal projection
-!!         XRPK       :  Projection parameter for the conformal projection
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation (routine INI_DYNAMICS)
-!!      
-!!
-!!    AUTHOR
-!!    ------
-!!	V. Ducrocq       * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original        01/07/94 
-!!      Modification    18/10/94 (J. Stein) to add the abs. layer
-!!      Modification    16/11/94 (Lafore+Pinty) to add the num. diffusion
-!!      Modification    06/12/94  (J.Stein) add the switch LABSLAYER
-!!      Modification    12/12/94  (J.Stein) add the lateral relaxation 
-!!      Modification    16/01/95  (J.Stein) conditional CALL to trid for 1D case
-!!      Modification    13/08/98  (N.Asencio) add parallel code
-!!      Modification    20/05/06  Remove KEPS
-!!      Modification    07/2013   (Bosseur & Filippi) Adds Forefire
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!     Vionnet 07/2017 : blow snow
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------ 
-USE MODD_CONF
-USE MODD_CST
-USE MODD_GRID
-USE MODD_LUNIT_n, ONLY: TLUOUT
-!
-USE MODI_RELAXDEF
-! USE MODI_TRID
-USE MODI_TRIDZ
-USE MODI_ZDIFFUSETUP
-!
-USE MODE_ll
-USE MODE_TYPE_ZDIFFU
-#ifdef MNH_BITREP
-USE MODI_BITREP
-#define SIN BR_SIN
-#define COS BR_COS
-#endif
-!
-USE MODE_MPPDB
-!
-IMPLICIT NONE
-!
-!*       0.1   declarations of argument
-!
-!  intent in arguments
-!
-REAL, DIMENSION(:,:),   INTENT(IN)        :: PLON,PLAT !Longitude and latitude
-REAL, DIMENSION(:,:,:), INTENT(IN)        :: PRHODJ    ! rho J
-REAL, DIMENSION(:,:,:), INTENT(IN)        :: PTHVREF   ! virtual potential 
-                                      ! temperature of the reference state
-REAL, DIMENSION(:,:),   INTENT(IN)        :: PMAP      ! Map factor
-REAL, DIMENSION(:,:,:), INTENT(IN)        :: PZZ       ! height 
-REAL, DIMENSION(:),     INTENT(IN)        :: PDXHAT     ! Stretching in x direction
-REAL, DIMENSION(:),     INTENT(IN)        :: PDYHAT     ! Stretching in y direction
-REAL, DIMENSION(:),     INTENT(IN)        :: PZHAT     ! Gal-Chen Height   
-CHARACTER(LEN=4), DIMENSION(:), INTENT(IN) :: HLBCX    ! x-direction LBC type
-CHARACTER(LEN=4), DIMENSION(:), INTENT(IN) :: HLBCY    ! y-direction LBC type
-LOGICAL,                INTENT(IN)        :: OVE_RELAX ! logical
-             ! switch to activate the VErtical  RELAXation 
-LOGICAL,                INTENT(IN)        :: OVE_RELAX_GRD ! logical
-             ! switch to activate the VErtical  RELAXation (ground layer)       
-LOGICAL,            INTENT(IN) :: OHORELAX_UVWTH  ! switch for the 
-                       ! horizontal relaxation for U,V,W,TH
-LOGICAL,            INTENT(IN) :: OHORELAX_RV     ! switch for the 
-                       ! horizontal relaxation for Rv
-LOGICAL,            INTENT(IN) :: OHORELAX_RC     ! switch for the 
-                       ! horizontal relaxation for Rc
-LOGICAL,            INTENT(IN) :: OHORELAX_RR     ! switch for the 
-                       ! horizontal relaxation for Rr
-LOGICAL,            INTENT(IN) :: OHORELAX_RI     ! switch for the 
-                       ! horizontal relaxation for Ri
-LOGICAL,            INTENT(IN) :: OHORELAX_RS     ! switch for the 
-                       ! horizontal relaxation for Rs
-LOGICAL,            INTENT(IN) :: OHORELAX_RG     ! switch for the 
-                       ! horizontal relaxation for Rg
-LOGICAL,            INTENT(IN) :: OHORELAX_RH     ! switch for the 
-                       ! horizontal relaxation for Rh
-LOGICAL,            INTENT(IN) :: OHORELAX_TKE    ! switch for the 
-                       ! horizontal relaxation for tke
-LOGICAL,DIMENSION(:),INTENT(IN):: OHORELAX_SV     ! switch for the 
-                       ! horizontal relaxation for sv variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVC2R2 ! switch for the 
-                       ! horizontal relaxation for c2r2 variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVC1R3 ! switch for the 
-                       ! horizontal relaxation for c1r3 variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVELEC ! switch for the 
-                       ! horizontal relaxation for elec variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVLG   ! switch for the 
-                       ! horizontal relaxation for lg variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVCHEM ! switch for the 
-                       ! horizontal relaxation for chem variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVCHIC ! switch for the
-                       ! horizontal relaxation for ice chem variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVAER  ! switch for the 
-                       ! horizontal relaxation for aer variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVDST  ! switch for the 
-                       ! horizontal relaxation for dst variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVSLT  ! switch for the 
-                       ! horizontal relaxation for slt variables
-LOGICAL,             INTENT(IN):: OHORELAX_SVPP   ! switch for the 
-                       ! horizontal relaxation for passive pollutants
-LOGICAL,             INTENT(IN):: OHORELAX_SVSNW   ! switch for the
-                       ! horizontal relaxation for blowing snow variables
-#ifdef MNH_FOREFIRE
-LOGICAL,             INTENT(IN):: OHORELAX_SVFF   ! switch for the 
-                       ! horizontal relaxation for ForeFire variables
-#endif
-LOGICAL,             INTENT(IN):: OHORELAX_SVCS   ! switch for the 
-                       ! horizontal relaxation for conditional sampling
-REAL,                    INTENT(IN)    :: PRIMKMAX !Max. value of the horiz.
-                                     ! relaxation coefficients
-INTEGER,                INTENT(IN)     :: KRIMX,KRIMY ! Number of points in 
-                                     ! the rim zone in the x and y directions 
-REAL,     INTENT(IN)   :: PALKTOP    ! Damping coef. at the top of the absorbing
-                                     ! layer
-REAL,     INTENT(IN)   :: PALZBOT    ! Height of the absorbing layer base
-REAL,     INTENT(IN)   :: PALKGRD    ! Damping coef. at the top of the absorbing
-                                     ! layer
-REAL,     INTENT(IN)   :: PALZBAS    ! Height of the absorbing layer base
-REAL,     INTENT(IN)   :: PT4DIFU    ! Damping time scale for 2*dx wavelength
-                                     ! specified for the 4nd order num. diffusion
-                                     ! for momentum
-REAL,     INTENT(IN)   :: PT4DIFTH   ! for meteorological scalar variables
-REAL,     INTENT(IN)   :: PT4DIFSV   ! for tracer scalar variables
-
-REAL,     INTENT(IN)   :: PTSTEP     ! Time step
-CHARACTER (LEN=5), INTENT(IN) :: HPRESOPT        ! choice of the pressure solver
-!
-!  intent out arguments
-!
-REAL, INTENT(OUT) :: PDXHATM                     ! mean grid increment in the x
-                                                 ! direction
-REAL, INTENT(OUT) :: PDYHATM                     ! mean grid increment in the y
-                                                 ! direction
-!
-REAL, DIMENSION (:), INTENT(OUT) :: PRHOM        !  mean of XRHODJ on the plane x y 
-                                                 !  localized at a mass level
-!
-REAL, DIMENSION(:,:), INTENT(OUT) :: PCORIOX,PCORIOY ! Hor. Coriolis parameters
-REAL, DIMENSION(:,:), INTENT(OUT) :: PCORIOZ         ! Vert. Coriolis parameter 
-REAL, DIMENSION(:,:), INTENT(OUT) :: PCURVX,PCURVY   ! Curvature coefficients
-! 
-REAL, DIMENSION(:),     INTENT(OUT) :: PAF ! vectors giving the non-vanishing        
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBFY ! elements of the tri-diag matrix
-                                            ! on an y-slice of global physical domain
-REAL, DIMENSION(:),     INTENT(OUT) :: PCF ! in the pressure equation
-REAL, DIMENSION(:),     INTENT(OUT) :: PTRIGSX ! Arrays for sinus or cosinus 
-REAL, DIMENSION(:),     INTENT(OUT) :: PTRIGSY ! values for the FFT in x and
-                                               ! y directions
-INTEGER, DIMENSION(:),  INTENT(OUT) :: KIFAXX  ! Decomposition in prime numbers
-INTEGER, DIMENSION(:),  INTENT(OUT) :: KIFAXY  ! for the FFT in x and y
-                                               ! direction      
-INTEGER          ,  INTENT(OUT)  :: KALBOT     ! Vertical index corresponding
-                                               ! to the absorbing layer base
-!  
-REAL, DIMENSION(:),   INTENT(OUT) :: PALK  ! Function of the absorbing
-                                           ! layer damping coefficient
-                                           ! defined for  u,v,and theta
-REAL, DIMENSION(:),   INTENT(OUT) :: PALKW ! Idem but defined for w     
-INTEGER          ,  INTENT(OUT)  :: KALBAS     ! Vertical index corresponding
-                                               ! to the absorbing layer base
-!  
-REAL, DIMENSION(:),   INTENT(OUT) :: PALKBAS  ! Function of the absorbing
-                                           ! layer damping coefficient
-                                           ! defined for  u,v,and theta
-REAL, DIMENSION(:),   INTENT(OUT) :: PALKWBAS ! Idem but defined for w
-LOGICAL, DIMENSION(:,:),  INTENT(OUT)   :: OMASK_RELAX  ! True where the 
-                                           ! lateral relax. has to be performed
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PKURELAX  !  Horizontal relaxation
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PKVRELAX  !  coefficients for the
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PKWRELAX  ! u, v and mass locations
-REAL,                 INTENT(OUT) :: PDK2U ! 2nd order num. diffusion coef. /dx2
-REAL,                 INTENT(OUT) :: PDK4U ! 4nd order num. diffusion coef. /dx4
-                                           ! for momentum
-REAL,                 INTENT(OUT) :: PDK2TH! for meteorological scalar variables
-REAL,                 INTENT(OUT) :: PDK4TH! 
-REAL,                 INTENT(OUT) :: PDK2SV! for tracer scalar variables
-REAL,                 INTENT(OUT) :: PDK4SV! 
-LOGICAL, INTENT(IN) :: OZDIFFU
-TYPE(TYPE_ZDIFFU_HALO2)                       :: PZDIFFU_HALO2
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBFB ! elements of the tri-diag matrix
-                                            ! on an b-slice of global physical domain
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PBF_SXP2_YP1_Z ! elements of the tri-diag. SXP2_YP1_Z-slide 
-                                                   ! matrix in the pressure eq.
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PAF_ZS,PBF_ZS,PCF_ZS
-REAL, DIMENSION(:,:)  , INTENT(OUT) :: PDXATH_ZS,PDYATH_ZS
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRHO_ZS
-REAL, DIMENSION(:)    , INTENT(OUT) :: A_K,B_K,C_K,D_K
-!
-!*       0.2   declarations of local variables
-!
-REAL, DIMENSION(SIZE(PRHODJ,1),SIZE(PRHODJ,2)) :: ZGAMMA ! Gamma =K(lambda-lambda0) - beta
-REAL                                       :: ZMBETA ! -beta
-REAL                                       :: ZCDR   ! to convert degrees in
-                                                     ! radians 
-INTEGER                                    :: ILUOUT ! Logical unit number for output_listing file
-INTEGER                                    :: IIU,IJU !  Upper bounds in x,y directions
-LOGICAL                                    :: GHORELAX
-LOGICAL, DIMENSION(7) :: GHORELAXR ! local array of logical
-#ifdef MNH_FOREFIRE
-LOGICAL, DIMENSION(13):: GHORELAXSV! local array of logical
-#else
-LOGICAL, DIMENSION(12):: GHORELAXSV! local array of logical
-#endif
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.    COMPUTES CORIOLIS PARAMETERS AND CURVATURE COEFFICIENTS
-!              -------------------------------------------------------
-! 
-ZCDR = XPI/180.
-IF (.NOT.LCARTESIAN) THEN
-  ZGAMMA(:,:) = XRPK * ((PLON(:,:) - XLON0)*ZCDR) - (XBETA*ZCDR)
-  IF (.NOT.LTHINSHELL) THEN    
-    PCORIOX(:,:) = - 2. * XOMEGA * COS(PLAT(:,:)*ZCDR) * SIN(ZGAMMA(:,:))
-    PCORIOY(:,:) =   2. * XOMEGA * COS(PLAT(:,:)*ZCDR) * COS(ZGAMMA(:,:))
-  END IF
-  PCORIOZ(:,:)   =   2. * XOMEGA * SIN(PLAT(:,:)*ZCDR) 
-  PCURVX (:,:)   = COS(ZGAMMA(:,:)) * (SIN(PLAT(:,:)*ZCDR) -XRPK)         &
-                 / COS(PLAT(:,:)*ZCDR)
-  PCURVY (:,:)   = SIN(ZGAMMA(:,:)) * (SIN(PLAT(:,:)*ZCDR) -XRPK)         &
-                 / COS(PLAT(:,:)*ZCDR)
-  !
-  CALL MPPDB_CHECK2D(PCORIOX,"ini_dynamics:PCORIOX",PRECISION)
-  CALL MPPDB_CHECK2D(PCORIOY,"ini_dynamics:PCORIOY",PRECISION)
-  CALL MPPDB_CHECK2D(PCORIOZ,"ini_dynamics:PCORIOZ",PRECISION)
-  !
-ELSE
-  ZMBETA = - (XBETA*ZCDR)
-  PCORIOX(:,:) = - 2. * XOMEGA * COS(XLAT0*ZCDR) * SIN(ZMBETA)
-  PCORIOY(:,:) =   2. * XOMEGA * COS(XLAT0*ZCDR) * COS(ZMBETA)
-  PCORIOZ(:,:) =   2. * XOMEGA * SIN(XLAT0*ZCDR) 
-END IF           
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.    INITIALIZATION OF PRESSURE SOLVER
-!              ---------------------------------
-!
-IF (.NOT.L1D) THEN
-! CALL TRID(HLBCX,HLBCY,                                                  &
-!           PMAP,PDXHAT,PDYHAT,PDXHATM,PDYHATM,PRHOM,PAF,                 &
-!           PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,                            &
-!           PRHODJ,PTHVREF,PZZ,PBFY)
-  CALL TRIDZ(HLBCX,HLBCY,                                                 &
-            PMAP,PDXHAT,PDYHAT,HPRESOPT,                                  &
-            PDXHATM,PDYHATM,PRHOM,PAF,                                    &
-            PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,                            &
-            PRHODJ,PTHVREF,PZZ,PBFY,PBFB,                                 &
-            PBF_SXP2_YP1_Z,                                               &
-            PAF_ZS,PBF_ZS,PCF_ZS,                                         &
-            PDXATH_ZS,PDYATH_ZS,PRHO_ZS,                                  &
-            A_K,B_K,C_K,D_K) !JUAN  FULL ZSOLVER
-END IF
-!
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.    COMPUTE THE ABSORBING LAYER COEFFICIENTS
-!              ----------------------------------------
-!
-GHORELAXR(1) = OHORELAX_RV
-GHORELAXR(2) = OHORELAX_RC
-GHORELAXR(3) = OHORELAX_RR
-GHORELAXR(4) = OHORELAX_RI
-GHORELAXR(5) = OHORELAX_RS
-GHORELAXR(6) = OHORELAX_RG
-GHORELAXR(7) = OHORELAX_RH
-!
-GHORELAXSV(1) = OHORELAX_SVC2R2
-GHORELAXSV(2) = OHORELAX_SVC1R3
-GHORELAXSV(3) = OHORELAX_SVELEC
-GHORELAXSV(4) = OHORELAX_SVLG
-GHORELAXSV(5) = OHORELAX_SVCHEM
-GHORELAXSV(6) = OHORELAX_SVAER
-GHORELAXSV(7) = OHORELAX_SVDST
-GHORELAXSV(8) = OHORELAX_SVSLT
-GHORELAXSV(9) = OHORELAX_SVPP
-GHORELAXSV(10)= OHORELAX_SVCS
-GHORELAXSV(11) = OHORELAX_SVCHIC
-GHORELAXSV(12) = OHORELAX_SVSNW
-#ifdef MNH_FOREFIRE
-GHORELAXSV(13) = OHORELAX_SVFF
-#endif
-!
-GHORELAX=ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) &
-                        .OR. OHORELAX_UVWTH  .OR. OHORELAX_TKE 
-!
-IF (GHORELAX .OR. OVE_RELAX.OR.OVE_RELAX_GRD) THEN
-  CALL RELAXDEF( OVE_RELAX,OVE_RELAX_GRD,OHORELAX_UVWTH,OHORELAX_RV,  &
-     OHORELAX_RC,OHORELAX_RR,OHORELAX_RI,OHORELAX_RS,OHORELAX_RG,     &
-     OHORELAX_RH,OHORELAX_TKE,OHORELAX_SV,                            &
-     OHORELAX_SVC2R2,OHORELAX_SVC1R3,OHORELAX_SVELEC,OHORELAX_SVLG,   &
-     OHORELAX_SVCHEM, OHORELAX_SVAER, OHORELAX_SVDST, OHORELAX_SVSLT, &
-     OHORELAX_SVPP, OHORELAX_SVCS, OHORELAX_SVCHIC,OHORELAX_SVSNW,    &
-     PALKTOP,PALKGRD, PALZBOT,PALZBAS,                                &
-     PZZ, PZHAT, PTSTEP,                                              &
-     PRIMKMAX,KRIMX,KRIMY,                                            &
-     PALK, PALKW, KALBOT,                                             &
-     PALKBAS, PALKWBAS, KALBAS,                                       &
-     OMASK_RELAX,PKURELAX, PKVRELAX, PKWRELAX                         )
-END IF
-!
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*       4.    COMPUTE THE NUMERICAL DIFFUSION COEFFICIENTS
-!              --------------------------------------------
-!
-PDK4U = 1.0/(16.0*PT4DIFU) ! The damping rate for the 2*dx wavelength is the same
-PDK2U = 2.0*PDK4U          ! for the 2nd and the 4th order diffusion schemes
-                           ! for momentum
-PDK4TH= 1.0/(16.0*PT4DIFTH) ! for meteorological scalar variables                       
-PDK2TH= 2.0*PDK4TH         
-PDK4SV= 1.0/(16.0*PT4DIFSV) ! for tracer scalar variables                       
-PDK2SV= 2.0*PDK4SV         
-!
-! Call ZDIFFUSETUP if OZDIFFU is true (parameters for truly horizontal diffusion)
-!
-IF (OZDIFFU) THEN
-  CALL ZDIFFUSETUP (PZZ,&
-                    PZDIFFU_HALO2)
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*       5.    PRINT ON OUTPUT_LISTING
-!              -----------------------
-!
-IF (NVERB >= 10) THEN
-  CALL GET_DIM_EXT_ll ('B',IIU,IJU)
-  ILUOUT = TLUOUT%NLU
-!
-  WRITE(ILUOUT,*) 'INI_DYNAMICS : Some PCORIOZ values'
-  WRITE(ILUOUT,*) '(1,1)          (IIU/2,IJU/2)         (IIU,IJU)  '
-  WRITE(ILUOUT,*) PCORIOZ(1,1),PCORIOZ(IIU/2,IJU/2),PCORIOZ(IIU,IJU) 
-!
-  IF (.NOT.LTHINSHELL) THEN
-    WRITE(ILUOUT,*) 'INI_DYNAMICS : Some PCORIOX values'
-    WRITE(ILUOUT,*) '(1,1)          (IIU/2,IJU/2)         (IIU,IJU)  '
-    WRITE(ILUOUT,*) PCORIOX(1,1),PCORIOX(IIU/2,IJU/2),PCORIOX(IIU,IJU) 
-!
-    WRITE(ILUOUT,*) 'INI_DYNAMICS : Some PCORIOY values'
-    WRITE(ILUOUT,*) '(1,1)          (IIU/2,IJU/2)         (IIU,IJU)  '
-    WRITE(ILUOUT,*) PCORIOY(1,1),PCORIOY(IIU/2,IJU/2),PCORIOY(IIU,IJU) 
-  END IF
-!
-  IF ( .NOT. LCARTESIAN ) THEN
-    WRITE(ILUOUT,*) 'INI_DYNAMICS : Some PCURVX values'
-    WRITE(ILUOUT,*) '(1,1)          (IIU/2,IJU/2)         (IIU,IJU)  '
-    WRITE(ILUOUT,*) PCURVX(1,1),PCURVX(IIU/2,IJU/2),PCURVX(IIU,IJU)
-! 
-    WRITE(ILUOUT,*) 'INI_DYNAMICS : Some PCURVY values'
-    WRITE(ILUOUT,*) '(1,1)          (IIU/2,IJU/2)         (IIU,IJU)  '
-    WRITE(ILUOUT,*) PCURVY(1,1),PCURVY(IIU/2,IJU/2),PCURVY(IIU,IJU) 
-  END IF
-END IF
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE INI_DYNAMICS
diff --git a/src/ZSOLVER/ini_modeln.f90 b/src/ZSOLVER/ini_modeln.f90
deleted file mode 100644
index 609de0788..000000000
--- a/src/ZSOLVER/ini_modeln.f90
+++ /dev/null
@@ -1,2721 +0,0 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     #######################
-      MODULE MODI_INI_MODEL_n
-!     #######################
-!
-INTERFACE
-!
-       SUBROUTINE INI_MODEL_n(KMI,TPINIFILE)
-!
-USE MODD_IO, ONLY: TFILEDATA
-!
-INTEGER,          INTENT(IN)   :: KMI       ! Model Index
-TYPE(TFILEDATA),  INTENT(IN)   :: TPINIFILE ! Initial file
-!
-END SUBROUTINE INI_MODEL_n
-!
-END INTERFACE
-!
-END MODULE MODI_INI_MODEL_n
-!     ############################################
-      SUBROUTINE INI_MODEL_n(KMI,TPINIFILE)
-!     ############################################
-!
-!!****  *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 IO_File_close.
-!!       - 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
-!!    --------
-!!      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
-!!                   02/2018 Q.Libois ECRAD
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!                   V. Vionnet : 18/07/2017 : add blowing snow scheme 
-!!                   01/18 J.Colin Add DRAG 
-!  P. Wautelet 29/01/2019: bug: add missing zero-size allocations
-!  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
-!  P. Wautelet 13/02/2019: initialize XALBUV even if no radiation (needed in CH_INTERP_JVALUES)
-!  P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments of READ_FIELD
-!  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
-!  P. Wautelet 14/02/2019: remove HINIFILE dummy argument from INI_RADIATIONS_ECMWF/ECRAD
-!!                   02/2019 C.Lac add rain fraction as an output field
-!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
-!  P. Wautelet 14/03/2019: correct ZWS when variable not present in file (set to XZWS_DEFAULT)
-!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!  P. Wautelet 19/04/2019: removed unused dummy arguments and variables
-!  P. Wautelet 07/06/2019: allocate lookup tables for optical properties only when needed
-!  P. Wautelet 13/09/2019: budget: simplify and modernize date/time management
-!  C. Lac         11/2019: correction in the drag formula and application to building in addition to tree
-!  S. Riette      04/2020: XHL* fields
-!  F. Auguste     02/2021: add IBM
-!  T.Nigel        02/2021: add turbulence recycling
-! J.L.Redelsperger 06/2011: OCEAN case
-!---------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-#ifdef MNH_ECRAD
-USE YOERDI,                 only: RCCO2
-#endif
-
-USE MODD_2D_FRC
-USE MODD_ADVFRC_n
-USE MODD_ADV_n
-use MODD_AEROSET,           only: POLYTAU, POLYSSA, POLYG
-USE MODD_ARGSLIST_ll,       only: LIST_ll
-USE MODD_BIKHARDT_n
-USE MODD_BLOWSNOW
-USE MODD_BLOWSNOW_n
-USE MODD_BUDGET
-USE MODD_CH_AERO_n,         only: XSOLORG,XMI
-USE MODD_CH_AEROSOL,        only: LORILAM
-USE MODD_CH_BUDGET_n
-USE MODD_CH_FLX_n,          only: XCHFLX
-USE MODD_CH_M9_n,           only:NNONZEROTERMS
-USE MODD_CH_MNHC_n,         only: LUSECHEM, LUSECHAQ, LUSECHIC, LCH_INIT_FIELD, &
-                                  LCH_CONV_LINOX, XCH_TUV_DOBNEW, LCH_PH
-USE MODD_CH_PH_n
-USE MODD_CH_PRODLOSSTOT_n
-USE MODD_CLOUD_MF_n
-USE MODD_CONF
-USE MODD_CONF_n
-USE MODD_CST
-USE MODD_CTURB
-USE MODD_CURVCOR_n
-USE MODD_DEEP_CONVECTION_n
-USE MODD_DEF_EDDY_FLUX_n   ! for VT and WT fluxes
-USE MODD_DEF_EDDYUV_FLUX_n ! FOR UV
-USE MODD_DIAG_FLAG,         only: LCHEMDIAG, CSPEC_BU_DIAG
-USE MODD_DIM_n
-USE MODD_DRAG_n
-USE MODD_DRAGTREE_n
-USE MODD_DUST
-use MODD_DUST_OPT_LKT,      only: NMAX_RADIUS_LKT_DUST=>NMAX_RADIUS_LKT, NMAX_SIGMA_LKT_DUST=>NMAX_SIGMA_LKT,               &
-                                  NMAX_WVL_SW_DUST=>NMAX_WVL_SW,                                                            &
-                                  XEXT_COEFF_WVL_LKT_DUST=>XEXT_COEFF_WVL_LKT, XEXT_COEFF_550_LKT_DUST=>XEXT_COEFF_550_LKT, &
-                                  XPIZA_LKT_DUST=>XPIZA_LKT, XCGA_LKT_DUST=>XCGA_LKT
-USE MODD_DYN
-USE MODD_DYN_n
-USE MODD_DYNZD
-USE MODD_DYNZD_n
-USE MODD_ELEC_n,            only: XCION_POS_FW, XCION_NEG_FW
-USE MODD_EOL_MAIN
-USE MODD_FIELD_n
-#ifdef MNH_FOREFIRE
-USE MODD_FOREFIRE
-USE MODD_FOREFIRE_n
-#endif
-USE MODD_FRC
-USE MODD_FRC_n
-USE MODD_GET_n
-USE MODD_GRID_n
-USE MODD_GRID,              only: XLONORI,XLATORI
-USE MODD_IBM_PARAM_n,       only: LIBM, XIBM_IEPS, XIBM_LS, XIBM_XMUT
-USE MODD_IO,                only: CIO_DIR, TFILEDATA, TFILE_DUMMY
-USE MODD_IO_SURF_MNH,       only: IO_SURF_MNH_MODEL
-USE MODD_LATZ_EDFLX
-USE MODD_LBC_n,             only: CLBCX, CLBCY
-use modd_les
-USE MODD_LSFIELD_n
-USE MODD_LUNIT_n
-USE MODD_MEAN_FIELD
-USE MODD_MEAN_FIELD_n
-USE MODD_METRICS_n
-USE MODD_MNH_SURFEX_n
-USE MODD_NESTING,           only: CDAD_NAME, NDAD, NDT_2_WAY, NDTRATIO, NDXRATIO_ALL, NDYRATIO_ALL
-USE MODD_NSV
-USE MODD_NSV
-USE MODD_NUDGING_n,         only: LNUDGING
-USE MODD_OCEANH
-USE MODD_OUT_n
-USE MODD_PARAMETERS
-USE MODD_PARAM_KAFR_n
-USE MODD_PARAM_MFSHALL_n
-USE MODD_PARAM_n
-USE MODD_PARAM_RAD_n,       only: CAER, CAOP, CLW
-USE MODD_PASPOL
-USE MODD_PASPOL_n
-USE MODD_PAST_FIELD_n
-use modd_precision,         only: LFIINT
-USE MODD_RADIATIONS_n
-USE MODD_RECYCL_PARAM_n
-USE MODD_REF
-USE MODD_REF_n
-USE MODD_RELFRC_n
-use MODD_SALT,              only: LSALT
-use MODD_SALT_OPT_LKT,      only: NMAX_RADIUS_LKT_SALT=>NMAX_RADIUS_LKT, NMAX_SIGMA_LKT_SALT=>NMAX_SIGMA_LKT,               &
-                                  NMAX_WVL_SW_SALT=>NMAX_WVL_SW,                                                            &
-                                  XEXT_COEFF_WVL_LKT_SALT=>XEXT_COEFF_WVL_LKT, XEXT_COEFF_550_LKT_SALT=>XEXT_COEFF_550_LKT, &
-                                  XPIZA_LKT_SALT=>XPIZA_LKT, XCGA_LKT_SALT=>XCGA_LKT
-USE MODD_SERIES,            only: LSERIES
-USE MODD_SHADOWS_n
-USE MODD_STAND_ATM,         only: XSTROATM, XSMLSATM, XSMLWATM, XSPOSATM, XSPOWATM
-USE MODD_TIME
-USE MODD_TIME_n
-USE MODD_TURB_CLOUD,        only: NMODEL_CLOUD, CTURBLEN_CLOUD,XCEI
-USE MODD_TURB_n
-USE MODD_VAR_ll,            only: IP
-
-USE MODE_GATHER_ll
-use mode_ini_budget,        only: Budget_preallocate, Ini_budget
-USE MODE_INI_ONE_WAY_n
-USE MODE_IO
-USE MODE_IO_FIELD_READ,     only: IO_Field_read
-USE MODE_IO_FILE,           only: IO_File_open
-USE MODE_IO_MANAGE_STRUCT,  only: IO_File_add2list
-USE MODE_ll
-USE MODE_MODELN_HANDLER
-USE MODE_MPPDB
-USE MODE_MSG
-USE MODE_SPLITTINGZ_ll,     only: GET_DIM_EXTZ_ll
-USE MODE_TYPE_ZDIFFU
-
-USE MODI_CH_AER_MOD_INIT
-USE MODI_CH_INIT_BUDGET_n
-USE MODI_CH_INIT_FIELD_n
-USE MODI_CH_INIT_JVALUES
-USE MODI_CH_INIT_PRODLOSSTOT_n
-USE MODI_GET_SIZEX_LB
-USE MODI_GET_SIZEY_LB
-USE MODI_INI_AEROSET1
-USE MODI_INI_AEROSET2
-USE MODI_INI_AEROSET3
-USE MODI_INI_AEROSET4
-USE MODI_INI_AEROSET5
-USE MODI_INI_AEROSET6
-USE MODI_INI_AIRCRAFT_BALLOON
-USE MODI_INI_AIRCRAFT_BALLOON
-USE MODI_INI_BIKHARDT_n
-USE MODI_INI_CPL
-USE MODI_INI_DEEP_CONVECTION
-USE MODI_INI_DRAG
-USE MODI_INI_DYNAMICS
-USE MODI_INI_ELEC_n
-USE MODI_INI_EOL_ADNR
-USE MODI_INI_EOL_ALM
-USE MODI_INI_LES_N
-USE MODI_INI_LG
-USE MODI_INI_LW_SETUP
-USE MODI_INI_MICRO_n
-USE MODI_INI_POSPROFILER_n
-USE MODI_INI_RADIATIONS
-USE MODI_INI_RADIATIONS_ECMWF
-USE MODI_INI_RADIATIONS_ECRAD
-USE MODI_INI_SERIES_N
-USE MODI_INI_SPAWN_LS_n
-USE MODI_INI_SURF_RAD
-USE MODI_INI_SURFSTATION_n
-USE MODI_INI_SW_SETUP
-USE MODI_INIT_AEROSOL_PROPERTIES
-#ifdef MNH_FOREFIRE
-USE MODI_INIT_FOREFIRE_n
-#endif
-USE MODI_INIT_GROUND_PARAM_n
-USE MODI_INI_TKE_EPS
-USE MODI_METRICS
-USE MODI_MNHGET_SURF_PARAM_n
-USE MODI_MNHREAD_ZS_DUMMY_n
-USE MODI_READ_FIELD
-USE MODI_SET_DIRCOS
-USE MODI_SET_GRID
-USE MODI_SET_REF
-#ifdef CPLOASIS
-USE MODI_SFX_OASIS_READ_NAM
-#endif
-USE MODI_SUNPOS_n
-USE MODI_SURF_SOLAR_GEOM
-USE MODI_UPDATE_METRICS
-USE MODI_UPDATE_NSV
-#ifdef MNH_ECRAD
-#if ( VER_ECRAD == 140 )
-USE YOERDI   , ONLY :RCCO2
-#endif
-#endif
-!
-IMPLICIT NONE
-!
-!*       0.1   declarations of arguments
-!
-!
-INTEGER,          INTENT(IN)   :: KMI       ! Model Index
-TYPE(TFILEDATA),  INTENT(IN)   :: TPINIFILE ! Initial file
-!
-!*       0.2   declarations of local variables
-!
-REAL, PARAMETER :: NALBUV_DEFAULT = 0.01 ! Arbitrary low value for XALBUV
-!
-INTEGER             :: JSV     ! Loop index
-INTEGER             :: IRESP   ! Return code of FM routines
-INTEGER             :: ILUOUT  ! Logical unit number of output-listing
-CHARACTER(LEN=28)   :: YNAME
-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
-logical             :: gles    ! Logical to determine if LES diagnostics are enabled
-!
-!
-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
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZIBM_LS ! LevelSet IBM
-!
-!
-INTEGER, DIMENSION(:,:),ALLOCATABLE :: IINDEX   ! indices of non-zero terms
-INTEGER, DIMENSION(:),ALLOCATABLE   :: IIND
-INTEGER                             :: JM, JT
-!
-!------------------------------------------
-! 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
-REAL, DIMENSION(:,:),   POINTER ::   DPTR_XLSZWSM,DPTR_XLSZWSS
-!
-INTEGER                         ::  IIB,IJB,IIE,IJE,IDIMX,IDIMY,IMI
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    PROLOGUE
-!              --------
-! Compute relaxation coefficients without changing INI_DYNAMICS nor RELAXDEF
-!
-IF (CCLOUD == 'LIMA') THEN
-  LHORELAX_SVC1R3=LHORELAX_SVLIMA
-END IF
-!
-! UPDATE CONSTANTS FOR OCEAN MODEL
-IF (LOCEAN) THEN
-  XP00=XP00OCEAN
-  XTH00=XTH00OCEAN
-END IF
-!
-!
-NULLIFY(TZINITHALO2D_ll)
-NULLIFY(TZINITHALO3D_ll)
-!
-!*       1.    RETRIEVE LOGICAL UNIT NUMBER
-!              ----------------------------
-!
-ILUOUT = TLUOUT%NLU
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.   END OF READING
-!             --------------
-!*       2.1  Read number of forcing fields
-!
-IF (LFORCING) THEN ! Retrieve the number of time-dependent forcings.
-  CALL IO_Field_read(TPINIFILE,'FRC',NFRC,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 IO_Field_read"
-!callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
-  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"
-    CALL IO_Field_read(TPINIFILE,'NADVFRC1',NADVFRC,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 IO_Field_read"
-    !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
-    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"
-    CALL IO_Field_read(TPINIFILE,'NRELFRC1',NRELFRC,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 IO_Field_read"
-    !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
-    END IF
-    WRITE(ILUOUT,*) 'NRELFRC = ', NRELFRC
-END IF
-!*       2.2  Checks the position of vertical absorbing layer
-!
-IKU=NKMAX+2*JPVEXT
-!
-ALLOCATE(XZHAT(IKU))
-CALL IO_Field_read(TPINIFILE,'ZHAT',XZHAT)
-CALL IO_Field_read(TPINIFILE,'ZTOP',XZTOP)
-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 PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
-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
-  IDX_RVT = NRR
-END IF
-IF (CGETRCT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRL = NRRL+1
-  IDX_RCT = NRR
-END IF
-IF (CGETRRT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRL = NRRL+1
-  IDX_RRT = NRR
-END IF
-IF (CGETRIT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRI = NRRI+1
-  IDX_RIT = NRR
-END IF
-IF (CGETRST /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRI = NRRI+1
-  IDX_RST = NRR
-END IF
-IF (CGETRGT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRI = NRRI+1
-  IDX_RGT = NRR
-END IF
-IF (CGETRHT /= 'SKIP' ) THEN
-  NRR = NRR+1
-  NRRI = NRRI+1
-  IDX_RHT = NRR
-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.4  Update NSV and floating indices for the current model
-!
-! 
-CALL UPDATE_NSV(KMI) 
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.    ALLOCATE  MEMORY
-!              -----------------
-! * Module RECYCL
-!
-IF (LRECYCL) THEN 
-!
-  NR_COUNT = 0
-!
-  ALLOCATE(XUMEANW(IJU,IKU,INT(XNUMBELT)))      ; XUMEANW  = 0.0
-  ALLOCATE(XVMEANW(IJU,IKU,INT(XNUMBELT)))      ; XVMEANW  = 0.0
-  ALLOCATE(XWMEANW(IJU,IKU,INT(XNUMBELT)))      ; XWMEANW  = 0.0
-  ALLOCATE(XUMEANN(IIU,IKU,INT(XNUMBELT)))      ; XUMEANN  = 0.0
-  ALLOCATE(XVMEANN(IIU,IKU,INT(XNUMBELT)))      ; XVMEANN  = 0.0
-  ALLOCATE(XWMEANN(IIU,IKU,INT(XNUMBELT)))      ; XWMEANN  = 0.0
-  ALLOCATE(XUMEANE(IJU,IKU,INT(XNUMBELT)))      ; XUMEANE  = 0.0
-  ALLOCATE(XVMEANE(IJU,IKU,INT(XNUMBELT)))      ; XVMEANE  = 0.0
-  ALLOCATE(XWMEANE(IJU,IKU,INT(XNUMBELT)))      ; XWMEANE  = 0.0
-  ALLOCATE(XUMEANS(IIU,IKU,INT(XNUMBELT)))      ; XUMEANS  = 0.0
-  ALLOCATE(XVMEANS(IIU,IKU,INT(XNUMBELT)))      ; XVMEANS  = 0.0
-  ALLOCATE(XWMEANS(IIU,IKU,INT(XNUMBELT)))      ; XWMEANS  = 0.0
-  ALLOCATE(XTBV(IIU,IJU,IKU))                   ; XTBV  = 0.0
-ELSE
-  ALLOCATE(XUMEANW(0,0,0))
-  ALLOCATE(XVMEANW(0,0,0))
-  ALLOCATE(XWMEANW(0,0,0))
-  ALLOCATE(XUMEANN(0,0,0))
-  ALLOCATE(XVMEANN(0,0,0))
-  ALLOCATE(XWMEANN(0,0,0))
-  ALLOCATE(XUMEANE(0,0,0))
-  ALLOCATE(XVMEANE(0,0,0))
-  ALLOCATE(XWMEANE(0,0,0))
-  ALLOCATE(XUMEANS(0,0,0))
-  ALLOCATE(XVMEANS(0,0,0))
-  ALLOCATE(XWMEANS(0,0,0))
-  ALLOCATE(XTBV   (0,0,0))
-END IF
-!
-!
-!*       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
-  ALLOCATE(XSVT_MEAN(IIU,IJU,IKU))     ; XSVT_MEAN  = 0.0
-  IF (CTURB/='NONE') THEN
-    ALLOCATE(XTKEM_MEAN(IIU,IJU,IKU))
-    XTKEM_MEAN = 0.0
-  ELSE
-    ALLOCATE(XTKEM_MEAN(0,0,0))
-  END IF
-  ALLOCATE(XPABSM_MEAN(IIU,IJU,IKU))   ; XPABSM_MEAN = 0.0
-!
-  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(XUW_MEAN(IIU,IJU,IKU))      ; XUW_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
-  ELSE
-    ALLOCATE(XTKEM_MAX(0,0,0))
-  END IF
-  ALLOCATE(XPABSM_MAX(IIU,IJU,IKU))   ; XPABSM_MAX = 0.0
-ELSE
-  ALLOCATE(XUM_MEAN(0,0,0))
-  ALLOCATE(XVM_MEAN(0,0,0))
-  ALLOCATE(XWM_MEAN(0,0,0))
-  ALLOCATE(XTHM_MEAN(0,0,0))
-  ALLOCATE(XTEMPM_MEAN(0,0,0))
-  ALLOCATE(XSVT_MEAN(0,0,0))
-  ALLOCATE(XTKEM_MEAN(0,0,0))
-  ALLOCATE(XPABSM_MEAN(0,0,0))
-!
-  ALLOCATE(XU2_MEAN(0,0,0))
-  ALLOCATE(XV2_MEAN(0,0,0))
-  ALLOCATE(XW2_MEAN(0,0,0))
-  ALLOCATE(XUW_MEAN(0,0,0))
-  ALLOCATE(XTH2_MEAN(0,0,0))
-  ALLOCATE(XTEMP2_MEAN(0,0,0))
-  ALLOCATE(XPABS2_MEAN(0,0,0))
-!
-  ALLOCATE(XUM_MAX(0,0,0))
-  ALLOCATE(XVM_MAX(0,0,0))
-  ALLOCATE(XWM_MAX(0,0,0))
-  ALLOCATE(XTHM_MAX(0,0,0))
-  ALLOCATE(XTEMPM_MAX(0,0,0))
-  ALLOCATE(XTKEM_MAX(0,0,0))
-  ALLOCATE(XPABSM_MAX(0,0,0))
-END IF
-!
-IF ((CUVW_ADV_SCHEME(1:3)=='CEN') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN
-  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
-ELSE
-  ALLOCATE(XUM(0,0,0))
-  ALLOCATE(XVM(0,0,0))
-  ALLOCATE(XWM(0,0,0))
-  ALLOCATE(XDUM(0,0,0))
-  ALLOCATE(XDVM(0,0,0))
-  ALLOCATE(XDWM(0,0,0))
-END IF
-!
-ALLOCATE(XUT(IIU,IJU,IKU))      ; XUT  = 0.0
-ALLOCATE(XVT(IIU,IJU,IKU))      ; XVT  = 0.0
-ALLOCATE(XWT(IIU,IJU,IKU))      ; XWT  = 0.0
-ALLOCATE(XTHT(IIU,IJU,IKU))     ; XTHT = 0.0
-!$acc enter data copyin(XTHT)
-ALLOCATE(XRUS(IIU,IJU,IKU))     ; XRUS = 0.0
-ALLOCATE(XRVS(IIU,IJU,IKU))     ; XRVS = 0.0
-ALLOCATE(XRWS(IIU,IJU,IKU))     ; XRWS = 0.0
-!$acc enter data copyin(XRUS,XRVS,XRWS)
-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
-!$acc enter data copyin(XRTHS)
-ALLOCATE(XRTHS_CLD(IIU,IJU,IKU)); XRTHS_CLD = 0.0
-
-IF ( LIBM ) THEN
-  ALLOCATE(ZIBM_LS(IIU,IJU,IKU))  ; ZIBM_LS = 0.0
-  ALLOCATE(XIBM_XMUT(IIU,IJU,IKU)); XIBM_XMUT = 0.0
-ELSE
-  ALLOCATE(ZIBM_LS  (0,0,0))
-  ALLOCATE(XIBM_XMUT(0,0,0))
-END IF
-
-IF ( LRECYCL ) THEN
-  ALLOCATE(XFLUCTUNW(IJU,IKU))    ; XFLUCTUNW  = 0.0
-  ALLOCATE(XFLUCTVNN(IIU,IKU))    ; XFLUCTVNN  = 0.0
-  ALLOCATE(XFLUCTUTN(IIU,IKU))    ; XFLUCTUTN  = 0.0
-  ALLOCATE(XFLUCTVTW(IJU,IKU))    ; XFLUCTVTW  = 0.0
-  ALLOCATE(XFLUCTUNE(IJU,IKU))    ; XFLUCTUNE  = 0.0
-  ALLOCATE(XFLUCTVNS(IIU,IKU))    ; XFLUCTVNS  = 0.0
-  ALLOCATE(XFLUCTUTS(IIU,IKU))    ; XFLUCTUTS  = 0.0
-  ALLOCATE(XFLUCTVTE(IJU,IKU))    ; XFLUCTVTE  = 0.0
-  ALLOCATE(XFLUCTWTW(IJU,IKU))    ; XFLUCTWTW  = 0.0
-  ALLOCATE(XFLUCTWTN(IIU,IKU))    ; XFLUCTWTN  = 0.0
-  ALLOCATE(XFLUCTWTE(IJU,IKU))    ; XFLUCTWTE  = 0.0
-  ALLOCATE(XFLUCTWTS(IIU,IKU))    ; XFLUCTWTS  = 0.0
-ELSE
-  ALLOCATE(XFLUCTUNW(0,0))
-  ALLOCATE(XFLUCTVNN(0,0))
-  ALLOCATE(XFLUCTUTN(0,0))
-  ALLOCATE(XFLUCTVTW(0,0))
-  ALLOCATE(XFLUCTUNE(0,0))
-  ALLOCATE(XFLUCTVNS(0,0))
-  ALLOCATE(XFLUCTUTS(0,0))
-  ALLOCATE(XFLUCTVTE(0,0))
-  ALLOCATE(XFLUCTWTW(0,0))
-  ALLOCATE(XFLUCTWTN(0,0))
-  ALLOCATE(XFLUCTWTE(0,0))
-  ALLOCATE(XFLUCTWTS(0,0))
-END IF
-!
-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
-  XCED   =XCEDIS
-ELSE
-  ALLOCATE(XTKET(0,0,0))
-  ALLOCATE(XRTKES(0,0,0))
-  ALLOCATE(XRTKEMS(0,0,0))
-  ALLOCATE(XWTHVMF(0,0,0))
-  ALLOCATE(XDYP(0,0,0))
-  ALLOCATE(XTHP(0,0,0))
-  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
-!$acc enter data copyin(XPABST)
-!
-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 (CCLOUD == 'ICE3'.OR.CCLOUD == 'ICE4') THEN
-  ALLOCATE(XHLC_HRC(IIU,IJU,IKU))
-  ALLOCATE(XHLC_HCF(IIU,IJU,IKU))
-  ALLOCATE(XHLI_HRI(IIU,IJU,IKU))
-  ALLOCATE(XHLI_HCF(IIU,IJU,IKU))
-  XHLC_HRC(:,:,:)=0.
-  XHLC_HCF(:,:,:)=0.
-  XHLI_HRI(:,:,:)=0.
-  XHLI_HCF(:,:,:)=0.
-ELSE
-  ALLOCATE(XHLC_HRC(0,0,0))
-  ALLOCATE(XHLC_HCF(0,0,0))
-  ALLOCATE(XHLI_HRI(0,0,0))
-  ALLOCATE(XHLI_HCF(0,0,0))
-END IF
-!
-IF (NRR>1) THEN
-  ALLOCATE(XCLDFR(IIU,IJU,IKU));  XCLDFR (:, :, :) = 0.
-  ALLOCATE(XRAINFR(IIU,IJU,IKU)); XRAINFR(:, :, :) = 0.
-ELSE
-  ALLOCATE(XCLDFR(0,0,0))
-  ALLOCATE(XRAINFR(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
-ALLOCATE(XZWS(IIU,IJU)) ;             XZWS(:,:) = XZWS_DEFAULT
-!
-IF (LPASPOL) THEN
-  ALLOCATE( XATC(IIU,IJU,IKU,NSV_PP) )
-  XATC = 0.
-ELSE
-  ALLOCATE( XATC(0,0,0,0))
-END IF
-!
-IF(LBLOWSNOW) THEN
-  ALLOCATE(XSNWCANO(IIU,IJU,NBLOWSNOW_2D))
-  ALLOCATE(XRSNWCANOS(IIU,IJU,NBLOWSNOW_2D))
-  XSNWCANO(:,:,:) = 0.0
-  XRSNWCANOS(:,:,:) = 0.0
-ELSE
-  ALLOCATE(XSNWCANO(0,0,0))
-  ALLOCATE(XRSNWCANOS(0,0,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))
-!$acc enter data create(XDXX,XDYY,XDZZ,XDZX,XDZY)
-!
-!*       3.3   Modules MODD_REF and  MODD_REF_n
-!
-! Different reference states for Ocean and Atmosphere models
-!  For the moment, same reference states for O and A
-!IF ((KMI == 1).OR.LCOUPLES) THEN
-IF (KMI==1) THEN
-  ALLOCATE(XRHODREFZ(IKU),XTHVREFZ(IKU))
-ELSE IF (LCOUPLES) THEN
-! in coupled O-A case, need different variables for ocean
-  ALLOCATE(XRHODREFZO(IKU),XTHVREFZO(IKU))
-ELSE
-  !Do not allocate XRHODREFZ and XTHVREFZ because they are the same on all grids (not 'n' variables)
-END IF
-!
-ALLOCATE(XPHIT(IIU,IJU,IKU))
-ALLOCATE(XRHODREF(IIU,IJU,IKU))
-ALLOCATE(XTHVREF(IIU,IJU,IKU))
-ALLOCATE(XEXNREF(IIU,IJU,IKU)) 
-ALLOCATE(XRHODJ(IIU,IJU,IKU))
-!$acc enter data create(XRHODREF,XEXNREF,XTHVREF,XRHODJ)
-IF (CEQNSYS=='DUR' .AND. LUSERV) THEN
-  ALLOCATE(XRVREF(IIU,IJU,IKU))
-ELSE
-  ALLOCATE(XRVREF(0,0,0))
-END IF
-!$acc enter data create(XRVREF)
-!
-!*       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 optimisation of the
-                              ! FFT solver
-END IF
-CALL GET_DIM_EXT_ll('B',IIU_B,IJU_B)
-ALLOCATE(XBFB(IIU_B,IJU_B,IKU))
-ALLOCATE(XAF_ZS(IIU_B,IJU_B,IKU))
-ALLOCATE(XBF_ZS(IIU_B,IJU_B,IKU))
-ALLOCATE(XCF_ZS(IIU_B,IJU_B,IKU))
-ALLOCATE(XDXATH_ZS(IIU_B,IJU_B))
-ALLOCATE(XDYATH_ZS(IIU_B,IJU_B))
-ALLOCATE(XRHO_ZS(IIU_B,IJU_B,IKU))
-ALLOCATE(XA_K(IKU))
-ALLOCATE(XB_K(IKU))
-ALLOCATE(XC_K(IKU))
-ALLOCATE(XD_K(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
-ALLOCATE(XLSZWSM(IIU,IJU)) ; XLSZWSM = -1.
-!
-!  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(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(NIMAX_ll,NJMAX_ll,NRIMX,               &
-                    IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU, &
-                    IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2)
-  CALL GET_SIZEY_LB(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 "
-        call Print_msg(NVERB_FATAL,'GEN','INI_MODEL_n','')
-     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 "
-        call Print_msg(NVERB_FATAL,'GEN','INI_MODEL_n','')
-     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)))
-ELSE
-  ALLOCATE(XCOEFLIN_LBXM(0,0,0))
-  ALLOCATE(   NKLIN_LBXM(0,0,0))
-  ALLOCATE(XCOEFLIN_LBYM(0,0,0))
-  ALLOCATE(   NKLIN_LBYM(0,0,0))
-  ALLOCATE(XCOEFLIN_LBXU(0,0,0))
-  ALLOCATE(   NKLIN_LBXU(0,0,0))
-  ALLOCATE(XCOEFLIN_LBYU(0,0,0))
-  ALLOCATE(   NKLIN_LBYU(0,0,0))
-  ALLOCATE(XCOEFLIN_LBXV(0,0,0))
-  ALLOCATE(   NKLIN_LBXV(0,0,0))
-  ALLOCATE(XCOEFLIN_LBYV(0,0,0))
-  ALLOCATE(   NKLIN_LBYV(0,0,0))
-  ALLOCATE(XCOEFLIN_LBXW(0,0,0))
-  ALLOCATE(   NKLIN_LBXW(0,0,0))
-  ALLOCATE(XCOEFLIN_LBYW(0,0,0))
-  ALLOCATE(   NKLIN_LBYW(0,0,0))
-END IF
-!
-!  allocation of the LS fields for vertical relaxation and numerical diffusion
-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)))
-  ALLOCATE(XLSZWSS(SIZE(XLSZWSM,1),SIZE(XLSZWSM,2)))
-!
-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))
-  ALLOCATE(XLSZWSS(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)
-!
-! Initialization of SW bands
-NSWB_OLD = 6 ! Number of bands in ECMWF original scheme (from Fouquart et Bonnel (1980))
-             ! then modified through INI_RADIATIONS_ECMWF but remains equal to 6 practically
-
-#ifdef MNH_ECRAD
-#if ( VER_ECRAD == 140 )
-NLWB_OLD = 16 ! For XEMIS initialization (should be spectral in the future)
-#endif
-#endif
-
-NLWB_MNH = 16 ! For XEMIS initialization (should be spectral in the future)
-
-IF (CRAD == 'ECRA') THEN
-    NSWB_MNH = 14
-#ifdef MNH_ECRAD
-#if ( VER_ECRAD == 140 )
-    NLWB_MNH = 16
-#endif
-#endif
-ELSE
-    NSWB_MNH = NSWB_OLD
-#ifdef MNH_ECRAD
-#if ( VER_ECRAD == 140 )
-    NLWB_MNH = NLWB_OLD
-#endif
-#endif
-END IF
-
-ALLOCATE(XSW_BANDS (NSWB_MNH)) 
-ALLOCATE(XLW_BANDS (NLWB_MNH)) 
-ALLOCATE(XZENITH   (IIU,IJU))
-ALLOCATE(XAZIM     (IIU,IJU))
-ALLOCATE(XALBUV    (IIU,IJU))
-XALBUV(:,:) = NALBUV_DEFAULT !Set to an arbitrary low value (XALBUV is needed in CH_INTERP_JVALUES even if no radiation)
-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,NLWB_MNH))
-  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,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' .OR. CRAD == 'ECRA') 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(NCOUNTCONV(0,0))
-  ALLOCATE(XDTHCONV(0,0,0))
-  ALLOCATE(XDRVCONV(0,0,0))
-  ALLOCATE(XDRCCONV(0,0,0))
-  ALLOCATE(XDRICONV(0,0,0))
-  ALLOCATE(XPRCONV(0,0))
-  ALLOCATE(XPACCONV(0,0))
-  ALLOCATE(XPRSCONV(0,0))
-  ALLOCATE(XIC_RATE(0,0))
-  ALLOCATE(XCG_RATE(0,0))
-  ALLOCATE(XIC_TOTAL_NUMBER(0,0))
-  ALLOCATE(XCG_TOTAL_NUMBER(0,0))
-  ALLOCATE(XUMFCONV(0,0,0))
-  ALLOCATE(XDMFCONV(0,0,0))
-  ALLOCATE(XPRLFLXCONV(0,0,0))
-  ALLOCATE(XPRSFLXCONV(0,0,0))
-  ALLOCATE(XCAPE(0,0))
-  ALLOCATE(NCLTOPCONV(0,0))
-  ALLOCATE(NCLBASCONV(0,0))
-END IF
-!
-IF ((CDCONV == 'KAFR' .OR. CSCONV == 'KAFR') &
-    .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 and MODD_FRCn)
-!
-IF ( LFORCING ) THEN
-  ALLOCATE(XWTFRC(IIU,IJU,IKU)) ; XWTFRC = XUNDEF
-  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
-!
-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
-ELSE
-  !Do not allocate because they are the same on all grids (not 'n' variables)
-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.
-  ELSE
-    ALLOCATE(XRTHS_EDDY_FLUX(0,0,0))
-  ENDIF
-ELSE
-  ALLOCATE(XVTH_FLUX_M(0,0,0))
-  ALLOCATE(XWTH_FLUX_M(0,0,0))
-  ALLOCATE(XRTHS_EDDY_FLUX(0,0,0))
-END IF
-!
-IF ( LUV_FLX) THEN
-  ALLOCATE(XVU_FLUX_M(IIU,IJU,IKU)) ; XVU_FLUX_M  = 0.
-  IF (KMI /= 1) THEN
-    ALLOCATE(XRVS_EDDY_FLUX(IIU,IJU,IKU))
-    XRVS_EDDY_FLUX = 0.
-  ELSE
-    ALLOCATE(XRVS_EDDY_FLUX(0,0,0))
-  ENDIF
-ELSE
-  ALLOCATE(XVU_FLUX_M(0,0,0))
-  ALLOCATE(XRVS_EDDY_FLUX(0,0,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))
-ELSE
-   ALLOCATE(XSUPSAT(0,0,0))
-   ALLOCATE(XNACT(0,0,0))
-   ALLOCATE(XNPRO(0,0,0))
-   ALLOCATE(XSSPRO(0,0,0))
-END IF
-!
-!*      3.12   Module MODD_TURB_CLOUD
-!
-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 (.NOT.(ASSOCIATED(XPHC))) ALLOCATE(XPHC(0,0,0))
-IF (.NOT.(ASSOCIATED(XPHR))) ALLOCATE(XPHR(0,0,0))
-IF (.NOT.(ASSOCIATED(XACPHR))) ALLOCATE(XACPHR(0,0))
-IF (.NOT.(ASSOCIATED(XACPRAQ))) ALLOCATE(XACPRAQ(0,0,0))
-IF ((LUSECHEM).AND.(CPROGRAM == 'DIAG  ')) THEN
-  ALLOCATE(XCHFLX(IIU,IJU,NSV_CHEM))
-  XCHFLX(:,:,:) = 0.
-ELSE
-  ALLOCATE(XCHFLX(0,0,0))
-END IF
-!
-!*          3.14 Module MODD_DRAG
-!
-IF (LDRAG) THEN
-  ALLOCATE(XDRAG(IIU,IJU))
-ELSE
-  ALLOCATE(XDRAG(0,0))
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*       4.    INITIALIZE BUDGET VARIABLES
-!              ---------------------------
-!
-gles = lles_mean .or. lles_resolved  .or. lles_subgrid .or. lles_updraft &
-                 .or. lles_downdraft .or. lles_spectra
-!Called if budgets are enabled via NAM_BUDGET
-!or if LES budgets are enabled via NAM_LES (condition on kmi==1 to call it max once)
-if ( ( cbutype /= "NONE" .and. nbumod == kmi ) .or. ( gles .and. kmi == 1 ) .or. LCHECK ) THEN
-  call Budget_preallocate()
-end if
-
-IF ( CBUTYPE /= "NONE" .AND. NBUMOD == KMI ) THEN
-  CALL Ini_budget(ILUOUT,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, LVE_RELAX_GRD,                           &
-             LCHTRANS,LNUDGING,LDRAGTREE,LDEPOTREE,LMAIN_EOL,                 &
-             CRAD,CDCONV,CSCONV,CTURB,CTURBDIM,CCLOUD                         )
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       5.    INITIALIZE INTERPOLATION COEFFICIENTS
-!
-CALL INI_BIKHARDT_n (NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),KMI)
-!
-!-------------------------------------------------------------------------------
-!
-!*       6.     BUILT THE GENERIC OUTPUT NAME
-!               ----------------------------
-!
-IF (KMI == 1) THEN
-  DO IMI = 1 , NMODEL
-    WRITE(IO_SURF_MNH_MODEL(IMI)%COUTFILE,'(A,".",I1,".",A)') CEXP,IMI,TRIM(ADJUSTL(CSEG))
-    WRITE(YNAME, '(A,".",I1,".",A)') CEXP,IMI,TRIM(ADJUSTL(CSEG))//'.000'
-    CALL IO_File_add2list(LUNIT_MODEL(IMI)%TDIAFILE,YNAME,'MNHDIACHRONIC','WRITE', &
-                          HDIRNAME=CIO_DIR,                                        &
-                          KLFINPRAR=INT(50,KIND=LFIINT),KLFITYPE=1,KLFIVERB=NVERB, &
-                          TPDADFILE=LUNIT_MODEL(NDAD(IMI))%TDIAFILE )
-  END DO
-  !
-  TDIAFILE => LUNIT_MODEL(KMI)%TDIAFILE !Necessary because no call to GOTO_MODEL before needing it
-  !
-  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
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       7.    INITIALIZE GRIDS AND METRIC COEFFICIENTS
-!              ----------------------------------------
-!
-CALL SET_GRID(KMI,TPINIFILE,IKU,NIMAX_ll,NJMAX_ll,                       &
-              XTSTEP,XSEGLEN,                                            &
-              XLONORI,XLATORI,XLON,XLAT,                                 &
-              XXHAT,XYHAT,XDXHAT,XDYHAT, XMAP,                           &
-              XZS,XZZ,XZHAT,XZTOP,LSLEVE,XLEN1,XLEN2,XZSMT,              &
-              ZJ,                                                        &
-              TDTMOD,TDTCUR,NSTOP,NBAK_NUMB,NOUT_NUMB,TBACKUPN,TOUTPUTN)
-!
-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
-!
-!-------------------------------------------------------------------------------
-!
-!*      8.    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%nday, TDTCUR%nmonth,      &
-                         TDTCUR%nyear, ILUOUT, XCH_TUV_DOBNEW)
-!
-  IF (LORILAM) THEN
-    CALL CH_AER_MOD_INIT
-  ENDIF
-END IF
-IF (.NOT.(ASSOCIATED(XMI))) ALLOCATE(XMI(0,0,0,0))
-IF (.NOT.(ASSOCIATED(XSOLORG))) ALLOCATE(XSOLORG(0,0,0,0))
-!
-IF (CCLOUD=='LIMA') CALL INIT_AEROSOL_PROPERTIES
-!
-!-------------------------------------------------------------------------------
-!
-!*       9.    INITIALIZE THE PROGNOSTIC FIELDS
-!              --------------------------------
-!
-CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-before read_field::XUT",PRECISION)
-CALL READ_FIELD(KMI,TPINIFILE,IIU,IJU,IKU,                                    &
-                CGETTKET,CGETRVT,CGETRCT,CGETRRT,CGETRIT,CGETCIT,CGETZWS,     &
-                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,XTKET,XRTKEMS,                        &
-                XRT,XSVT,XZWS,XCIT,XDRYMASST,XDRYMASSS,                       &
-                XSIGS,XSRCT,XCLDFR,XBL_DEPTH,XSBL_DEPTH,XWTHVMF,XPHC,XPHR,    &
-                XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XLSZWSM,                      &
-                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,   &
-                ZIBM_LS,XIBM_XMUT,XUMEANW,XVMEANW,XWMEANW,XUMEANN,XVMEANN,    &
-                XWMEANN,XUMEANE,XVMEANE,XWMEANE,XUMEANS,XVMEANS,XWMEANS       )
-
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*        10.  INITIALIZE REFERENCE STATE
-!              ---------------------------
-!
-!
-CALL SET_REF(KMI,TPINIFILE,                         &
-             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 .AND. (CCONF=='START') ) THEN
-   XDRYMASSS = 0.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       12.    INITIALIZE THE MICROPHYSICS                   
-!               ----------------------------
-!
-IF (CELEC == 'NONE') THEN
-  CALL INI_MICRO_n(TPINIFILE,ILUOUT)
-!
-!-------------------------------------------------------------------------------
-!
-!*       13.    INITIALIZE THE ATMOSPHERIC ELECTRICITY                   
-!               --------------------------------------
-!
-ELSE
-  CALL INI_ELEC_n(ILUOUT, CELEC, CCLOUD, TPINIFILE, &
-                  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(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,XLSZWSM,XDRYMASST,             &
-               XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,          &
-               XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,          &
-               XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XLSZWSS,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_XLSZWSM=>XLSZWSM
-  DPTR_XLSUS=>XLSUS
-  DPTR_XLSVS=>XLSVS
-  DPTR_XLSWS=>XLSWS
-  DPTR_XLSTHS=>XLSTHS
-  DPTR_XLSRVS=>XLSRVS
-  DPTR_XLSZWSS=>XLSZWSS
-  !
-  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_XLSZWSM,         &
-       DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS,DPTR_XLSZWSS,                      &       
-       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
-  IF (CCONF=='START')  THEN
-  CALL INI_ONE_WAY_n(NDAD(KMI),KMI,                                                             &
-       DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4, &
-       DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4, &
-       NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),                                                     &
-       DPTR_CLBCX,DPTR_CLBCY,NRIMX,NRIMY,                                                       &
-       DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,                   &
-       DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,                   &
-       DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,                   &
-       DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM,                   &
-       CCLOUD, LUSECHAQ, LUSECHIC,                                                              &
-       DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM,DPTR_XLBXWM,DPTR_XLBYWM,                 &
-       DPTR_XLBXTHM,DPTR_XLBYTHM,                                                               &
-       DPTR_XLBXTKEM,DPTR_XLBYTKEM,                                                             &
-       DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM                                        )
-   ENDIF
-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.    INITIALIZE THE PARAMETERS FOR THE DYNAMICS
-!               ------------------------------------------
-!
-CALL INI_DYNAMICS(XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,            &
-             XZHAT,CLBCX,CLBCY,XTSTEP,CPRESOPT,                               &
-             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,LHORELAX_SVSNW,      &
-#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,                                             &
-             XAF_ZS,XBF_ZS,XCF_ZS,                                            &
-             XDXATH_ZS,XDYATH_ZS,XRHO_ZS,                                     &
-             XA_K,XB_K,XC_K,XD_K                                              )
-!
-!
-!*      16.1 Initialize the XDRAG array
-!              -------------
-IF (LDRAG) THEN
-   CALL INI_DRAG(LMOUNT,XZS,XHSTART,NSTART,XDRAG)
-ENDIF
-!*      16.2 Initialize the LevelSet function
-!              -------------
-IF (LIBM) THEN
-  ALLOCATE(XIBM_LS(IIU,IJU,IKU,4)) ; XIBM_LS  = -XIBM_IEPS
-  XIBM_LS(:,:,:,1)=ZIBM_LS(:,:,:)
-  DEALLOCATE(ZIBM_LS)
-ENDIF
-!-------------------------------------------------------------------------------
-!
-!*      17.    SURFACE FIELDS
-!              --------------
-!
-!*      17.1   Radiative setup
-!              ---------------
-!
-IF (CRAD   /= 'NONE') THEN
-  IF (CGETRAD =='INIT') THEN
-    GINIRAD  =.TRUE.
-  ELSE
-    GINIRAD  =.FALSE.
-  END IF
-  CALL INI_RADIATIONS(TPINIFILE,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)
-CALL INI_LW_SETUP (CRAD,NLWB_MNH,XLW_BANDS)
-!
-!
-!       17.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
-#ifdef MNH_ECRAD
-RCCO2 = 360.0E-06 * 44.0E-03 / XMD
-#endif
-!
-!
-!*      17.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,NLWB_MNH))
-ALLOCATE(ZTSRAD (IIU,IJU))
-!
-IF (LCOUPLES.AND.(KMI>1))THEN
-  CSURF ="NONE"
-ELSE
-  IF ((TPINIFILE%NMNHVERSION(1)==4 .AND. TPINIFILE%NMNHVERSION(2)>=6) .OR. TPINIFILE%NMNHVERSION(1)>4) THEN
-    CALL IO_Field_read(TPINIFILE,'SURF',CSURF)
-  ELSE
-    CSURF = "EXTE"
-  END IF
-END IF
-!
-!
-IF (CSURF=='EXTE' .AND. (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG  ')) THEN
-  ! ouverture du fichier PGD
-  IF  ( LEN_TRIM(CINIFILEPGD) > 0 ) THEN
-    CALL IO_File_add2list(TINIFILEPGD,TRIM(CINIFILEPGD),'PGD','READ',KLFITYPE=2,KLFIVERB=NVERB)
-    CALL IO_File_open(TINIFILEPGD,KRESP=IRESP)
-    LUNIT_MODEL(KMI)%TINIFILEPGD => TINIFILEPGD
-    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 PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
-    ENDIF
-  ELSE
-  ! case after a spawning
-    CINIFILEPGD = TPINIFILE%CNAME
-  END IF
-  !
-  CALL GOTO_SURFEX(KMI)
-#ifdef CPLOASIS
-  CALL SFX_OASIS_READ_NAM(CPROGRAM,XTSTEP)
-  WRITE(*,*) 'SFX-OASIS: READ NAM_SFX_SEA_CPL OK'
-#endif
-  !* initialization of surface
-  CALL INIT_GROUND_PARAM_n ('ALL',SIZE(CSV),CSV,ZCO2,                             &
-                            XZENITH,XAZIM,XSW_BANDS,XLW_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 IO_File_add2list(TINIFILEPGD,TRIM(CINIFILEPGD),'PGD','READ',KLFITYPE=2,KLFIVERB=NVERB)
-  CALL IO_File_open(TINIFILEPGD,KRESP=IRESP)
-  LUNIT_MODEL(KMI)%TINIFILEPGD => TINIFILEPGD
-  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 PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
-  ENDIF
-ENDIF
-!
-IF (.NOT.ASSOCIATED(TINIFILEPGD)) TINIFILEPGD => TFILE_DUMMY
-!
-  !* 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' .OR. CRAD  == 'ECRA') .AND. CGETRAD=='READ') THEN
-  CALL INI_SURF_RAD(TPINIFILE, XDIR_ALB, XSCA_ALB, XEMIS, XTSRAD)
-END IF
-!
-!
-!*      17.3   Mesonh fields
-!              -------------
-!
-IF (CPROGRAM/='REAL  ') CALL MNHREAD_ZS_DUMMY_n(TINIFILEPGD)
-!
-!-------------------------------------------------------------------------------
-!
-!*       18.    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
-!
-    IF ( CAOP=='EXPL' .AND. LDUST .AND. KMI==1) THEN
-      ALLOCATE( XEXT_COEFF_WVL_LKT_DUST( NMAX_RADIUS_LKT_DUST, NMAX_SIGMA_LKT_DUST, NMAX_WVL_SW_DUST ) )
-      ALLOCATE( XEXT_COEFF_550_LKT_DUST( NMAX_RADIUS_LKT_DUST, NMAX_SIGMA_LKT_DUST )                   )
-      ALLOCATE( XPIZA_LKT_DUST         ( NMAX_RADIUS_LKT_DUST, NMAX_SIGMA_LKT_DUST, NMAX_WVL_SW_DUST ) )
-      ALLOCATE( XCGA_LKT_DUST          ( NMAX_RADIUS_LKT_DUST, NMAX_SIGMA_LKT_DUST, NMAX_WVL_SW_DUST ) )
-    END IF
-!
-    IF ( CAOP=='EXPL' .AND. LSALT .AND. KMI==1) THEN
-      ALLOCATE( XEXT_COEFF_WVL_LKT_SALT( NMAX_RADIUS_LKT_SALT, NMAX_SIGMA_LKT_SALT, NMAX_WVL_SW_SALT ) )
-      ALLOCATE( XEXT_COEFF_550_LKT_SALT( NMAX_RADIUS_LKT_SALT, NMAX_SIGMA_LKT_SALT )                   )
-      ALLOCATE( XPIZA_LKT_SALT         ( NMAX_RADIUS_LKT_SALT, NMAX_SIGMA_LKT_SALT, NMAX_WVL_SW_SALT ) )
-      ALLOCATE( XCGA_LKT_SALT          ( NMAX_RADIUS_LKT_SALT, NMAX_SIGMA_LKT_SALT, NMAX_WVL_SW_SALT ) )
-    END IF
-!
-    CALL INI_RADIATIONS_ECMWF (XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP,       &
-                               CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB_OLD,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 IF (CRAD   == 'ECRA') THEN
-#ifdef MNH_ECRAD
-!* 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_ECRAD (XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP,       &
-                               CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB_OLD,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
-#endif
-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 (TPINIFILE,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
-!
-!-------------------------------------------------------------------------------
-!
-!*      21.    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)
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*      22.    DEALLOCATION
-!              -------------
-!
-DEALLOCATE(ZJ)
-!
-DEALLOCATE(XSTROATM)
-DEALLOCATE(XSMLSATM)
-DEALLOCATE(XSMLWATM)
-DEALLOCATE(XSPOSATM)
-DEALLOCATE(XSPOWATM)
-!
-!-------------------------------------------------------------------------------
-!
-!*      23.     BALLOON and AIRCRAFT initializations
-!              ------------------------------------
-!
-CALL INI_AIRCRAFT_BALLOON(TPINIFILE,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV, &
-                          IKU,CTURB=="TKEL" ,                          &
-                          XLATORI, XLONORI                             )
-!
-!-------------------------------------------------------------------------------
-!
-!*      24.     STATION initializations
-!              -----------------------
-!
-CALL INI_SURFSTATION_n(XTSTEP, XSEGLEN, NRR, NSV, &
-                       CTURB=="TKEL" , KMI,       &
-                       XLATORI, XLONORI           )
-!
-!-------------------------------------------------------------------------------
-!
-!*      25.     PROFILER initializations
-!              ------------------------
-!
-CALL INI_POSPROFILER_n(XTSTEP, XSEGLEN, NRR, NSV,  &
-                       CTURB=="TKEL",              &
-                       XLATORI, XLONORI            )
-!
-!-------------------------------------------------------------------------------
-!
-!*      26.     Prognostic aerosols          
-!              ------------------------
-!
-IF ( ( CRAD=='ECMW' .OR. CRAD=='ECRA' ) .AND. CAOP=='EXPL' .AND. LORILAM ) THEN
-  ALLOCATE(POLYTAU(6,10,8,6,13))
-  ALLOCATE(POLYSSA(6,10,8,6,13))
-  ALLOCATE(POLYG  (6,10,8,6,13))
-  CALL INI_AEROSET1
-  CALL INI_AEROSET2
-  CALL INI_AEROSET3
-  CALL INI_AEROSET4
-  CALL INI_AEROSET5
-  CALL INI_AEROSET6
-END IF
-#ifdef MNH_FOREFIRE
-! 
-!-------------------------------------------------------------------------------
-!
-!*      27.    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%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime, 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
-!-------------------------------------------------------------------------------
-!
-!*     32. Wind turbine
-!
-IF (LMAIN_EOL .AND. KMI == NMODEL_EOL) THEN
- ALLOCATE(XFX_RG(IIU,IJU,IKU))
- ALLOCATE(XFY_RG(IIU,IJU,IKU))
- ALLOCATE(XFZ_RG(IIU,IJU,IKU))
- ALLOCATE(XFX_SMR_RG(IIU,IJU,IKU))
- ALLOCATE(XFY_SMR_RG(IIU,IJU,IKU))
- ALLOCATE(XFZ_SMR_RG(IIU,IJU,IKU))
- SELECT CASE(CMETH_EOL)
-  CASE('ADNR')
-   CALL INI_EOL_ADNR
-  CASE('ALM')
-   CALL INI_EOL_ALM(XDXX,XDYY)
- END SELECT
-END IF
-!
-!*     33.  Auto-coupling Atmos-Ocean LES NH
-!
-IF (LCOUPLES) THEN
- ALLOCATE(XSSUFL_C(IIU,IJU,1)); XSSUFL_C=0.0
- ALLOCATE(XSSVFL_C(IIU,IJU,1)); XSSVFL_C=0.0
- ALLOCATE(XSSTFL_C(IIU,IJU,1)); XSSTFL_C=0.0
- ALLOCATE(XSSRFL_C(IIU,IJU,1)); XSSRFL_C=0.
-ELSE
- ALLOCATE(XSSUFL_C(0,0,0))
- ALLOCATE(XSSVFL_C(0,0,0))
- ALLOCATE(XSSTFL_C(0,0,0))
- ALLOCATE(XSSRFL_C(0,0,0))
-END IF
-!
-END SUBROUTINE INI_MODEL_n
-
diff --git a/src/ZSOLVER/ini_spectren.f90 b/src/ZSOLVER/ini_spectren.f90
deleted file mode 100644
index 2385b3f6d..000000000
--- a/src/ZSOLVER/ini_spectren.f90
+++ /dev/null
@@ -1,941 +0,0 @@
-!MNH_LIC Copyright 2015-2019 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     #######################
-      MODULE MODI_INI_SPECTRE_n
-!     #######################
-!
-INTERFACE
-!
-       SUBROUTINE INI_SPECTRE_n(KMI,TPINIFILE)
-!
-       USE MODD_IO, ONLY: TFILEDATA
-!
-       INTEGER,           INTENT(IN) :: KMI       ! Model index 
-       TYPE(TFILEDATA),   INTENT(IN) :: TPINIFILE ! Initial file
-!
-END SUBROUTINE INI_SPECTRE_n
-!
-END INTERFACE
-!
-END MODULE MODI_INI_SPECTRE_n
-!     #######################################
-      SUBROUTINE INI_SPECTRE_n(KMI,TPINIFILE)
-!     #######################################
-!
-!!****  *INI_SPECTRE_n* - routine to initialize SPECTRE (based on ini_modeln.f90)
-!!
-!!
-!!    AUTHOR
-!!    ------
-!!      J.P Chaboureau       * L.A*
-!!      10/2016 (C.Lac) Cleaning of the modules
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 08/02/2019: allocate to zero-size non associated pointers
-!  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
-!  S. Bielli      02/2019: sea salt: significant sea wave height influences salt emission; 5 salt modes
-!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!  P. Wautelet 19/04/2019: removed unused dummy arguments and variables
-!
-!---------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_ADV_n
-USE MODD_ARGSLIST_ll,   ONLY: LIST_ll
-USE MODD_BIKHARDT_n
-USE MODD_BUDGET
-USE MODD_CH_MNHC_n,     ONLY: LUSECHAQ, LUSECHIC, LCH_INIT_FIELD
-USE MODD_CH_PH_n
-USE MODD_CLOUD_MF_n
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CONF_n
-USE MODD_CTURB
-USE MODD_CURVCOR_n
-USE MODD_DEEP_CONVECTION_n
-USE MODD_DIM_n
-USE MODD_DRAGTREE_n
-USE MODD_DUST
-USE MODD_DYN
-USE MODD_DYN_n
-USE MODD_DYNZD
-USE MODD_DYNZD_n
-USE MODD_FIELD_n
-USE MODD_FRC
-USE MODD_FRC_n
-USE MODD_GET_n
-USE MODD_GRID,          ONLY: XLONORI,XLATORI
-USE MODD_GRID_n
-USE MODD_IO,            ONLY: TFILEDATA
-USE MODD_LBC_n,         only: CLBCX, CLBCY
-USE MODD_LSFIELD_n
-USE MODD_LUNIT_n,       ONLY: COUTFILE, TLUOUT
-USE MODD_MEAN_FIELD
-USE MODD_MEAN_FIELD_n
-USE MODD_METRICS_n
-USE MODD_NESTING,       only: NDAD, NDT_2_WAY, NDXRATIO_ALL, NDYRATIO_ALL
-USE MODD_NSV
-USE MODD_OUT_n
-USE MODD_PARAMETERS
-USE MODD_PARAM_KAFR_n
-USE MODD_PARAM_MFSHALL_n
-USE MODD_PARAM_n
-USE MODD_PASPOL
-USE MODD_PASPOL_n
-USE MODD_BLOWSNOW
-USE MODD_BLOWSNOW_n
-USE MODD_PAST_FIELD_n
-USE MODD_RADIATIONS_n
-USE MODD_REF
-USE MODD_REF_n
-USE MODD_SHADOWS_n
-USE MODD_SPECTRE
-USE MODD_TIME
-USE MODD_TIME_n
-USE MODD_TURB_n
-USE MODD_VAR_ll,        ONLY: IP
-!
-USE MODE_GATHER_ll
-USE MODE_INI_ONE_WAY_n
-USE MODE_IO_FIELD_READ, only: IO_Field_read
-USE MODE_ll
-USE MODE_MODELN_HANDLER
-USE MODE_MSG
-USE MODE_SPLITTINGZ_ll, ONLY: GET_DIM_EXTZ_ll
-USE MODE_TYPE_ZDIFFU
-!
-USE MODI_INI_BIKHARDT_n
-USE MODI_INI_CPL
-USE MODI_INI_DYNAMICS
-USE MODI_INI_SPAWN_LS_n
-USE MODI_GET_SIZEX_LB
-USE MODI_GET_SIZEY_LB
-USE MODI_SET_GRID
-USE MODI_METRICS
-USE MODI_SET_REF
-USE MODI_UPDATE_METRICS
-USE MODI_UPDATE_NSV
-!
-IMPLICIT NONE
-!
-!*       0.1   declarations of arguments
-!
-!
-INTEGER,           INTENT(IN) :: KMI       ! Model index 
-TYPE(TFILEDATA),   INTENT(IN) :: TPINIFILE ! Initial file
-!
-!*       0.2   declarations of local variables
-!
-INTEGER             :: ILUOUT  ! Logical unit number of output-listing
-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
-!
-!
-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
-!
-!------------------------------------------
-! 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
-REAL, DIMENSION(:,:),   POINTER ::   DPTR_XLSZWSS,DPTR_XLSZWSM
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    PROLOGUE
-!              --------
-!
-NULLIFY(TZINITHALO2D_ll)
-NULLIFY(TZINITHALO3D_ll)
-!
-!*       1.    RETRIEVE LOGICAL UNIT NUMBER
-!              ----------------------------
-!
-ILUOUT = TLUOUT%NLU
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.   END OF READING
-!             --------------
-!*       2.1  Read number of forcing fields
-!
-!*       2.2  Checks the position of vertical absorbing layer
-!
-IKU=NKMAX+2*JPVEXT
-!
-ALLOCATE(XZHAT(IKU))
-CALL IO_Field_read(TPINIFILE,'ZHAT',XZHAT)
-CALL IO_Field_read(TPINIFILE,'ZTOP',XZTOP)
-IF (XALZBOT>=XZHAT(IKU) .AND. LVE_RELAX) THEN
-  WRITE(ILUOUT,FMT=*) "INI_SPECTRE_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 PRINT_MSG(NVERB_FATAL,'GEN','INI_SPECTRE_n','')
-END IF
-IF (LVE_RELAX) THEN
- IF (XALZBOT>=XZHAT(IKU-4) ) THEN
-  WRITE(ILUOUT,FMT=*) "INI_SPECTRE_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)
-!
-NRR=1
-NRRL=0
-NRRI=0
-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.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(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))
-!
-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(NIMAX_ll,NJMAX_ll,NRIMX,               &
-                    IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU, &
-                    IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2)
-!
-  IF ( LHORELAX_UVWTH ) THEN
-    NSIZELBX_ll=2*NRIMX+2
-    NSIZELBXU_ll=2*NRIMX+2
-    ALLOCATE(XLBXUM(IISIZEXFU,IJSIZEXFU,IKU))
-    ALLOCATE(XLBXVM(IISIZEXF,IJSIZEXF,IKU))
-    ALLOCATE(XLBXWM(IISIZEXF,IJSIZEXF,IKU))
-    ALLOCATE(XLBXTHM(IISIZEXF,IJSIZEXF,IKU))
-  ELSE
-    NSIZELBX_ll=2
-    NSIZELBXU_ll=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
-      ALLOCATE(XLBXTKEM(IISIZEXF,IJSIZEXF,IKU))
-    ELSE
-      NSIZELBXTKE_ll=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
-      ALLOCATE(XLBXRM(IISIZEXF,IJSIZEXF,IKU,NRR))
-    ELSE
-      NSIZELBXR_ll=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
-      ALLOCATE(XLBXSVM(IISIZEXF,IJSIZEXF,IKU,NSV))
-    ELSE
-      NSIZELBXSV_ll=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(NIMAX_ll,NJMAX_ll,NRIMX,               &
-                    IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU, &
-                    IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2)
-  CALL GET_SIZEY_LB(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+2*JPHEXT .GE. IIU )   THEN
-        WRITE(*,'(A,I8,A/A,2I8,/A)') "Processor=", IP-1, &
-             " :: INI_SPECTRE_n ERROR:  ( NRIMX+2*JPHEXT >= IIU )  ", &
-             " Local domain to small for relaxation NRIMX+2*JPHEXT,IIU ", &
-             NRIMX+2*JPHEXT,IIU ,&
-             " change relaxation parameters or number of processors "
-        call Print_msg(NVERB_FATAL,'GEN','INI_SPECTRE_n','')
-     END IF
-  END IF
-  IF ( CLBCY(1) /= 'CYCL' ) THEN
-     IF ( NRIMY+2*JPHEXT .GE. IJU )  THEN
-        WRITE(*,'(A,I8,A/A,2I8,/A)') "Processor=", IP-1, &
-             " :: INI_SPECTRE_n ERROR:  ( NRIMY+2*JPHEXT >= IJU )  ", &
-             " Local domain to small for relaxation NRIMY+2*JPHEXT,IJU ", &
-             NRIMY+2*JPHEXT,IJU ,&
-             " change relaxation parameters or number of processors "
-        call Print_msg(NVERB_FATAL,'GEN','INI_SPECTRE_n','')
-     END IF
-  END IF
-IF ( LHORELAX_UVWTH ) THEN
-    NSIZELBX_ll=2*NRIMX+2
-    NSIZELBXU_ll=2*NRIMX+2
-    NSIZELBY_ll=2*NRIMY+2
-    NSIZELBYV_ll=2*NRIMY+2
-    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
-    NSIZELBXU_ll=4
-    NSIZELBY_ll=2
-    NSIZELBYV_ll=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
-      NSIZELBYTKE_ll=2*NRIMY+2
-      ALLOCATE(XLBXTKEM(IISIZEXF,IJSIZEXF,IKU))
-      ALLOCATE(XLBYTKEM(IISIZEYF,IJSIZEYF,IKU))
-    ELSE
-      NSIZELBXTKE_ll=2
-      NSIZELBYTKE_ll=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
-      NSIZELBYR_ll=2*NRIMY+2
-      ALLOCATE(XLBXRM(IISIZEXF,IJSIZEXF,IKU,NRR))
-      ALLOCATE(XLBYRM(IISIZEYF,IJSIZEYF,IKU,NRR))
-    ELSE
-      NSIZELBXR_ll=2
-      NSIZELBYR_ll=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
-      NSIZELBYSV_ll=2*NRIMY+2
-      ALLOCATE(XLBXSVM(IISIZEXF,IJSIZEXF,IKU,NSV))
-      ALLOCATE(XLBYSVM(IISIZEYF,IJSIZEYF,IKU,NSV))
-    ELSE
-      NSIZELBXSV_ll=2
-      NSIZELBYSV_ll=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.9   Local variables
-!
-ALLOCATE(ZJ(IIU,IJU,IKU))
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       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,TPINIFILE,IKU,NIMAX_ll,NJMAX_ll,                       &
-              XTSTEP,XSEGLEN,                                            &
-              XLONORI,XLATORI,XLON,XLAT,                                 &
-              XXHAT,XYHAT,XDXHAT,XDYHAT, XMAP,                           &
-              XZS,XZZ,XZHAT,XZTOP,LSLEVE,XLEN1,XLEN2,XZSMT,              &
-              ZJ,                                                        &
-              TDTMOD,TDTCUR,NSTOP,NBAK_NUMB,NOUT_NUMB,TBACKUPN,TOUTPUTN)
-!
-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)
-!
-!
-! grid nesting initializations
-IF ( KMI == 1 ) THEN
-  XTSTEP_MODEL1=XTSTEP
-END IF
-!
-NDT_2_WAY(KMI)=4
-!
-!-------------------------------------------------------------------------------
-!
-!*       8.    INITIALIZE THE PROGNOSTIC FIELDS
-!              --------------------------------
-!
-
-IF (LSPECTRE_U) THEN
-  ALLOCATE(XUT(IIU,IJU,IKU))      ; XUT  = 0.0
-  CALL IO_Field_read(TPINIFILE,'UT',XUT)
-END IF
-!
-IF (LSPECTRE_V) THEN
-  ALLOCATE(XVT(IIU,IJU,IKU))      ; XVT  = 0.0
-  CALL IO_Field_read(TPINIFILE,'VT',XVT)
-END IF
-!
-IF (LSPECTRE_W) THEN  
-  ALLOCATE(XWT(IIU,IJU,IKU))      ; XWT  = 0.0
-  CALL IO_Field_read(TPINIFILE,'WT',XWT)
-END IF
-!
-IF (LSPECTRE_TH) THEN
-  ALLOCATE(XTHT(IIU,IJU,IKU))     ; XTHT = 0.0
-  CALL IO_Field_read(TPINIFILE,'THT',XTHT)
-END IF
-!
-IF (LSPECTRE_RV) THEN
-  ALLOCATE(XRT(IIU,IJU,IKU,NRR))
-  CALL IO_Field_read(TPINIFILE,'RVT',XRT(:,:,:,1))
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*        9.   INITIALIZE REFERENCE STATE
-!              ---------------------------
-!
-!
-CALL SET_REF(KMI,TPINIFILE,                        &
-             XZZ,XZHAT,ZJ,XDXX,XDYY,CLBCX,CLBCY,   &
-             XREFMASS,XMASS_O_PHI0,XLINMASS,       &
-             XRHODREF,XTHVREF,XRVREF,XEXNREF,XRHODJ)
-!-------------------------------------------------------------------------------
-!
-!*       11.    INITIALIZE THE SOURCE OF TOTAL DRY MASS Md
-!               ------------------------------------------
-!
-IF((KMI==1).AND.LSTEADYLS) THEN
-  XDRYMASSS = 0.
-END IF
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*       14.   INITIALIZE THE LARGE SCALE SOURCES
-!              ----------------------------------
-!
-IF ((KMI==1).AND.(.NOT. LSTEADYLS)) THEN
-  IF (LSPECTRE_LSU.OR.LSPECTRE_LSV.OR.LSPECTRE_LSW.OR. &
-      LSPECTRE_LSRV.OR.LSPECTRE_LSTH) THEN 
-    CALL INI_CPL(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,XLSZWSM,XDRYMASST,             &
-               XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,          &
-               XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,          &
-               XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XLSZWSS,XDRYMASSS,             &
-               XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,          &
-               XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS           )
-  END IF
-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_XLSZWSM=>XLSZWSM
-  DPTR_XLSUS=>XLSUS
-  DPTR_XLSVS=>XLSVS
-  DPTR_XLSWS=>XLSWS
-  DPTR_XLSTHS=>XLSTHS
-  DPTR_XLSRVS=>XLSRVS
-  DPTR_XLSZWSS=>XLSZWSS
-  !
-  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_XLSZWSM,         &
-       DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS,DPTR_XLSZWSS,         &
-       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),KMI,                                                             &
-       DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4, &
-       DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4, &
-       NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),                                                     &
-       DPTR_CLBCX,DPTR_CLBCY,NRIMX,NRIMY,                                                       &
-       DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,                   &
-       DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,                   &
-       DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,                   &
-       DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM,                   &
-       CCLOUD, LUSECHAQ, LUSECHIC,                                                              &
-       DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM,DPTR_XLBXWM,DPTR_XLBYWM,                 &
-       DPTR_XLBXTHM,DPTR_XLBYTHM,                                                               &
-       DPTR_XLBXTKEM,DPTR_XLBYTKEM,                                                             &
-       DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM                                        )
-END IF
-!
-!
-!*       16.    BUILT THE GENERIC OUTPUT NAME
-!               ----------------------------
-!
-WRITE(COUTFILE,'(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))
-
-!-------------------------------------------------------------------------------
-!
-!*       17.    INITIALIZE THE PARAMETERS FOR THE DYNAMICS
-!               ------------------------------------------
-!
-!Allocate to zero size to not pass unallocated pointers
-ALLOCATE(XALKBAS(0))
-ALLOCATE(XALKWBAS(0))
-!
-CALL INI_DYNAMICS(XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,            &
-             XZHAT,CLBCX,CLBCY,XTSTEP,CPRESOPT,                               &
-             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,LHORELAX_SVSNW,      &
-#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,                                             &
-             XAF_ZS,XBF_ZS,XCF_ZS,                                            &
-             XDXATH_ZS,XDYATH_ZS,XRHO_ZS,                                     &
-             XA_K,XB_K,XC_K,XD_K) 
-!
-!-------------------------------------------------------------------------------
-!
-!*      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)
-!
-
-END SUBROUTINE INI_SPECTRE_n
diff --git a/src/ZSOLVER/modd_dynn.f90 b/src/ZSOLVER/modd_dynn.f90
deleted file mode 100644
index 4ac45311f..000000000
--- a/src/ZSOLVER/modd_dynn.f90
+++ /dev/null
@@ -1,406 +0,0 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     #################
-      MODULE MODD_DYN_n
-!     #################
-!
-!!****  *MODD_DYN$n* - declaration of dynamic control variables 
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this declarative module is to declare the dynamic
-!     control variables.    
-!
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-!!      None 
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation of Meso-NH (module MODD_DYNn)
-!!      Technical Specifications Report of the Meso-NH (chapters 2 and 3)
-!!          
-!!    AUTHOR
-!!    ------
-!!	V. Ducrocq   *Meteo France*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    18/05/94                      
-!!      Modifications 16/11/94   (Lafore+Pinty)  For NUM_DIFF
-!!      Modifications 06/01/95   (Lafore)        For LSTEADY_DMASS
-!!      Modifications 28/07/96   (Masson)        Supress LSTEADY_DMASS
-!!      Modifications 15/03/98   (Stein)         Add LHO_RELAX for each variables 
-!!      Modifications 22/01/01   (Gazen)         Add LHORELAX_SVC2R2, _SVCHEM, _SVLG
-!!      Modifications 29/11/02   (Pinty)         Add  LHORELAX_SVC1R3, _SVELEC
-!!      Modifications    07/05   (P.Tulet)       Add  relaxation for dust and aerosol
-!!      Modifications    05/07   (C.Lac)         Separation of num diffusion
-!!      Modifications    07/10   (M.Leriche)     Add relaxation for ice phase chemical
-!!      Modification    01/2016  (JP Pinty) Add LIMA
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!      Modification    07/2017  (V. Vionnet)    Add blowing snow variable
-!!      Modification    03/2021   (JL Redelsperger) Add logical LOCEAN
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-USE MODD_PARAMETERS, ONLY: JPMODELMAX, JPSVMAX
-IMPLICIT NONE
-
-TYPE DYN_t
-!
-  INTEGER :: NSTOP          ! Number of time step
-  REAL    :: XTSTEP         ! Time step
-  LOGICAL :: LOCEAN
-!
-!++++++++++++++++++++++++++++++++++
-!PART USED BY THE PRESSURE SOLVER
-!++++++++++++++++++++++++++++++++++
-!
-  REAL, DIMENSION(:,:,:), POINTER :: XBFY=>NULL()     ! Vectors giving the non
-  REAL, DIMENSION(:,:,:), POINTER :: XBFB=>NULL()     ! Vectors giving the non
-  REAL, DIMENSION(:,:,:), POINTER :: XBF_SXP2_YP1_Z=>NULL()     ! Vectors giving the non
-  REAL, DIMENSION(:,:,:), POINTER :: XBF=>NULL()      ! vanishing elements of the 
-  REAL, DIMENSION(:),     POINTER :: XAF=>NULL(),XCF=>NULL() ! tri-diag matrix in the pressure equation
-  REAL, DIMENSION(:,:,:), POINTER :: XAF_ZS=>NULL(),XBF_ZS=>NULL(),XCF_ZS=>NULL() ! coef for Zsolver   
-  REAL, DIMENSION(:,:)  , POINTER :: XDXATH_ZS=>NULL(),XDYATH_ZS=>NULL()
-  REAL, DIMENSION(:,:,:), POINTER :: XRHO_ZS=>NULL()
-  REAL, DIMENSION(:),     POINTER :: XA_K=>NULL(),XB_K=>NULL(),XC_K=>NULL(),XD_K=>NULL()
-!
-                                                   ! Arrays of sinus or cosinus
-                                                   ! values for the FFT 
-  REAL, DIMENSION(:),   POINTER :: XTRIGSX=>NULL()  ! in x-direction   
-  REAL, DIMENSION(:),   POINTER :: XTRIGSY=>NULL()  ! in y-direction   
-  INTEGER, DIMENSION(:),POINTER :: NIFAXX =>NULL()  ! Decomposition in prime numbers 
-  INTEGER, DIMENSION(:),POINTER :: NIFAXY =>NULL()  ! for the FFT in x and y directions 
-  CHARACTER(LEN=5)       :: CPRESOPT     ! Choice of the pressure solver
-  INTEGER                :: NITR         ! Number of iterations for the 
-                                            ! pressure solver
-  LOGICAL                :: LITRADJ      ! Choice to adjust the number of 
-                                            !solver iterations during
-                                            !the simulation
-  LOGICAL                :: LRES         ! Choice of a different residual
-                                         ! divergence limit
-  REAL                   :: XRES         ! Value of residual divergence limit
-  REAL                   :: XRELAX       ! relaxation coefficient for the
-                                         ! Richardson's method
-!
-  REAL :: XDXHATM                        ! mean grid increment in the 
-  REAL :: XDYHATM                        ! x and  y directions
-
-  REAL, DIMENSION (:), POINTER  :: XRHOM=>NULL()  !  mean of XRHODJ on the plane x y 
-                                                 !  localized at a mass level
-!
-!++++++++++++++++++++++++++++++++++
-!PART USED BY THE ABSORBING LAYERS 
-!++++++++++++++++++++++++++++++++++
-!
-  INTEGER      :: NALBOT     ! Vertical index corresponding to the     
-                                ! absorbing layer base
-!  
-  INTEGER      :: NALBAS     ! Vertical index corresponding to the     
-                                ! absorbing layer base
-!                                
-  REAL, DIMENSION(:),   POINTER :: XALK=>NULL()  ! Function of the absorbing
-                                ! layer damping coefficient defined for
-                                !   u,v,and theta
-  REAL, DIMENSION(:),   POINTER :: XALKW=>NULL() ! Idem but defined for w 
-!
-  REAL, DIMENSION(:),   POINTER :: XALKBAS=>NULL()  ! Function of the absorbing
-                                ! layer damping coefficient defined for
-                                !   u,v,and theta
-  REAL, DIMENSION(:),   POINTER :: XALKWBAS=>NULL() ! Idem but defined for w 
-!
-  LOGICAL ::  LVE_RELAX ! switch to activate the VErtical RELAXation
-  LOGICAL ::  LVE_RELAX_GRD ! switch to activate the VErtical RELAXation
-!
-!                            switch to activate the HOrizontal RELAXation
-!  LOGICAL :: LHORELAX_UVWTH
-!
-  LOGICAL :: LHORELAX_RV, LHORELAX_RC, LHORELAX_RR, LHORELAX_RI
-  LOGICAL :: LHORELAX_RS, LHORELAX_RG, LHORELAX_RH
-!
-!  LOGICAL :: LHORELAX_TKE
-!
-  LOGICAL :: LHORELAX_SVC2R2
-  LOGICAL :: LHORELAX_SVC1R3
-  LOGICAL :: LHORELAX_SVLIMA
-  LOGICAL :: LHORELAX_SVELEC
-  LOGICAL :: LHORELAX_SVCHEM
-  LOGICAL :: LHORELAX_SVCHIC
-  LOGICAL :: LHORELAX_SVLG
-  LOGICAL :: LHORELAX_SVDST
-  LOGICAL :: LHORELAX_SVSLT
-  LOGICAL :: LHORELAX_SVAER
-  LOGICAL :: LHORELAX_SVPP 
-#ifdef MNH_FOREFIRE
-  LOGICAL :: LHORELAX_SVFF
-#endif
-  LOGICAL :: LHORELAX_SVCS 
-  LOGICAL :: LHORELAX_SVSNW  
-  LOGICAL, DIMENSION(:),POINTER :: LHORELAX_SV =>NULL()
-!
-  REAL    :: XRIMKMAX   ! Max. value of the horiz. relaxation coeff.
-!  INTEGER :: NRIMX,NRIMY! Number of points in the lateral absorbing
-                           ! layer in the x and y directions 
-! sizes of the West-east total LB area
-  INTEGER :: NSIZELBX_ll,NSIZELBXU_ll      ! for T,V,W and u 
-  INTEGER :: NSIZELBXTKE_ll                ! for TKE       
-  INTEGER :: NSIZELBXR_ll,NSIZELBXSV_ll    ! for Rx and SV    
-! sizes of the North-south total LB area
-  INTEGER :: NSIZELBY_ll,NSIZELBYV_ll      ! for T,U,W  and v
-  INTEGER :: NSIZELBYTKE_ll                ! for TKE       
-  INTEGER :: NSIZELBYR_ll,NSIZELBYSV_ll    ! for Rx and SV    
-  LOGICAL, DIMENSION(:,:),  POINTER   :: LMASK_RELAX=>NULL()  ! Mask for lateral
-                           ! relaxation: True where it has to be performed
-  REAL, DIMENSION(:,:),     POINTER   :: XKURELAX=>NULL() ! Horizontal relaxation
-  REAL, DIMENSION(:,:),     POINTER   :: XKVRELAX=>NULL() ! coefficients for the
-  REAL, DIMENSION(:,:),     POINTER   :: XKWRELAX=>NULL() ! u, v and mass locations
-!
-!++++++++++++++++++++++++++++++++++++
-!PART USED BY THE NUMERICAL DIFFUSION
-!++++++++++++++++++++++++++++++++++++
-!
-  REAL              :: XT4DIFU ! Damping time scale for 2*dx wavelength
-                               ! specified for the 4nd order num. diffusion
-                               ! for momentum
-  REAL              :: XT4DIFTH! for theta and mixing ratios                  
-  REAL              :: XT4DIFSV! for scalar variables                         
-  REAL              :: XDK2U   ! 2nd order num. diffusion coef. /dx2
-                               ! for momentum
-  REAL              :: XDK4U   ! 4nd order num. diffusion coef. /dx4
-                               ! for momentum
-  REAL              :: XDK2TH  ! for theta and mixing ratios                                        
-  REAL              :: XDK4TH  ! for theta and mixing ratios           
-  REAL              :: XDK2SV  ! for scalar variables                                                               
-  REAL              :: XDK4SV  ! for scalar variables                  
-!
-END TYPE DYN_t
-
-TYPE(DYN_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: DYN_MODEL
-LOGICAL    , DIMENSION(JPMODELMAX),         SAVE :: DYN_FIRST_CALL = .TRUE.
-
-INTEGER, POINTER :: NSTOP=>NULL()
-REAL, POINTER :: XTSTEP=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XBFY=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XBFB=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XBF_SXP2_YP1_Z=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XBF=>NULL()
-REAL, DIMENSION(:),     POINTER :: XAF=>NULL(),XCF=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XAF_ZS=>NULL(),XBF_ZS=>NULL(),XCF_ZS=>NULL()
-REAL, DIMENSION(:,:)  , POINTER :: XDXATH_ZS=>NULL(),XDYATH_ZS=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: XRHO_ZS=>NULL() 
-REAL, DIMENSION(:),     POINTER :: XA_K=>NULL(),XB_K=>NULL(),XC_K=>NULL(),XD_K=>NULL()
-REAL, DIMENSION(:),   POINTER :: XTRIGSX=>NULL()
-REAL, DIMENSION(:),   POINTER :: XTRIGSY=>NULL()
-INTEGER, DIMENSION(:), POINTER :: NIFAXX=>NULL()
-INTEGER, DIMENSION(:), POINTER :: NIFAXY=>NULL()
-CHARACTER(LEN=5), POINTER :: CPRESOPT=>NULL()
-INTEGER, POINTER :: NITR=>NULL()
-LOGICAL, POINTER :: LITRADJ=>NULL()
-LOGICAL, POINTER :: LRES=>NULL()
-LOGICAL, POINTER :: LOCEAN=>NULL()
-REAL, POINTER :: XRES=>NULL()
-REAL, POINTER :: XRELAX=>NULL()
-REAL, POINTER :: XDXHATM=>NULL()
-REAL, POINTER :: XDYHATM=>NULL()
-REAL, DIMENSION (:), POINTER  :: XRHOM=>NULL()
-INTEGER, POINTER :: NALBOT=>NULL()
-REAL, DIMENSION(:),   POINTER :: XALK=>NULL()
-REAL, DIMENSION(:),   POINTER :: XALKW=>NULL()
-INTEGER, POINTER :: NALBAS=>NULL()
-REAL, DIMENSION(:),   POINTER :: XALKBAS=>NULL()
-REAL, DIMENSION(:),   POINTER :: XALKWBAS=>NULL()
-LOGICAL, POINTER :: LVE_RELAX=>NULL()
-LOGICAL, POINTER :: LVE_RELAX_GRD=>NULL()
-LOGICAL, POINTER :: LHORELAX_UVWTH=>NULL()
-LOGICAL, POINTER :: LHORELAX_RV=>NULL(), LHORELAX_RC=>NULL(), LHORELAX_RR=>NULL(), LHORELAX_RI=>NULL()
-LOGICAL, POINTER :: LHORELAX_RS=>NULL(), LHORELAX_RG=>NULL(), LHORELAX_RH=>NULL()
-LOGICAL, POINTER :: LHORELAX_TKE=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVC2R2=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVC1R3=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVLIMA=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVELEC=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVCHEM=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVCHIC=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVLG=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVDST=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVSLT=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVAER=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVPP=>NULL()
-#ifdef MNH_FOREFIRE
-LOGICAL, POINTER :: LHORELAX_SVFF=>NULL()
-#endif
-LOGICAL, POINTER :: LHORELAX_SVCS=>NULL()
-LOGICAL, POINTER :: LHORELAX_SVSNW=>NULL()
-LOGICAL, DIMENSION(:), POINTER :: LHORELAX_SV=>NULL()
-REAL, POINTER :: XRIMKMAX=>NULL()
-INTEGER, POINTER :: NRIMX=>NULL(),NRIMY=>NULL()
-INTEGER, POINTER :: NSIZELBX_ll=>NULL(),NSIZELBXU_ll=>NULL()
-INTEGER, POINTER :: NSIZELBXTKE_ll=>NULL()
-INTEGER, POINTER :: NSIZELBXR_ll=>NULL(),NSIZELBXSV_ll=>NULL()
-INTEGER, POINTER :: NSIZELBY_ll=>NULL(),NSIZELBYV_ll=>NULL()
-INTEGER, POINTER :: NSIZELBYTKE_ll=>NULL()
-INTEGER, POINTER :: NSIZELBYR_ll=>NULL(),NSIZELBYSV_ll=>NULL()
-LOGICAL, DIMENSION(:,:),  POINTER   :: LMASK_RELAX=>NULL()
-REAL, DIMENSION(:,:),     POINTER   :: XKURELAX=>NULL()
-REAL, DIMENSION(:,:),     POINTER   :: XKVRELAX=>NULL()
-REAL, DIMENSION(:,:),     POINTER   :: XKWRELAX=>NULL()
-REAL, POINTER :: XT4DIFU=>NULL()
-REAL, POINTER :: XDK2U=>NULL()
-REAL, POINTER :: XDK4U=>NULL()
-REAL, POINTER :: XT4DIFTH=>NULL()
-REAL, POINTER :: XDK2TH=>NULL()
-REAL, POINTER :: XDK4TH=>NULL()
-REAL, POINTER :: XT4DIFSV=>NULL()
-REAL, POINTER :: XDK2SV=>NULL()
-REAL, POINTER :: XDK4SV=>NULL()
-
-CONTAINS
-
-SUBROUTINE DYN_GOTO_MODEL(KFROM, KTO)
-INTEGER, INTENT(IN) :: KFROM, KTO
-!
-IF (DYN_FIRST_CALL(KTO)) THEN
-ALLOCATE (DYN_MODEL(KTO)%NIFAXX(19))
-ALLOCATE (DYN_MODEL(KTO)%NIFAXY(19))
-ALLOCATE (DYN_MODEL(KTO)%LHORELAX_SV(JPSVMAX))
-DYN_FIRST_CALL(KTO) = .FALSE.
-ENDIF
-! Save current state for allocated arrays
-DYN_MODEL(KFROM)%XBFY=>XBFY
-DYN_MODEL(KFROM)%XBFB=>XBFB
-DYN_MODEL(KFROM)%XBF_SXP2_YP1_Z=>XBF_SXP2_YP1_Z
-DYN_MODEL(KFROM)%XBF=>XBF
-DYN_MODEL(KFROM)%XAF=>XAF
-DYN_MODEL(KFROM)%XCF=>XCF
-
-DYN_MODEL(KFROM)%XAF_ZS=>XAF_ZS
-DYN_MODEL(KFROM)%XBF_ZS=>XBF_ZS
-DYN_MODEL(KFROM)%XCF_ZS=>XCF_ZS
-
-DYN_MODEL(KFROM)%XDXATH_ZS=>XDXATH_ZS
-DYN_MODEL(KFROM)%XDYATH_ZS=>XDYATH_ZS
-DYN_MODEL(KFROM)%XRHO_ZS=>XRHO_ZS
-DYN_MODEL(KFROM)%XA_K=>XA_K
-DYN_MODEL(KFROM)%XB_K=>XB_K
-DYN_MODEL(KFROM)%XC_K=>XC_K
-DYN_MODEL(KFROM)%XD_K=>XD_K
-
-DYN_MODEL(KFROM)%XTRIGSX=>XTRIGSX
-DYN_MODEL(KFROM)%XTRIGSY=>XTRIGSY
-DYN_MODEL(KFROM)%XRHOM=>XRHOM
-DYN_MODEL(KFROM)%XALK=>XALK
-DYN_MODEL(KFROM)%XALKW=>XALKW
-DYN_MODEL(KFROM)%XALKBAS=>XALKBAS
-DYN_MODEL(KFROM)%XALKWBAS=>XALKWBAS
-DYN_MODEL(KFROM)%LMASK_RELAX=>LMASK_RELAX
-DYN_MODEL(KFROM)%XKURELAX=>XKURELAX
-DYN_MODEL(KFROM)%XKVRELAX=>XKVRELAX
-DYN_MODEL(KFROM)%XKWRELAX=>XKWRELAX
-!
-! Current model is set to model KTO
-NSTOP=>DYN_MODEL(KTO)%NSTOP
-XTSTEP=>DYN_MODEL(KTO)%XTSTEP
-XBFY=>DYN_MODEL(KTO)%XBFY
-XBFB=>DYN_MODEL(KTO)%XBFB
-XBF_SXP2_YP1_Z=>DYN_MODEL(KTO)%XBF_SXP2_YP1_Z
-XBF=>DYN_MODEL(KTO)%XBF
-XAF=>DYN_MODEL(KTO)%XAF
-XCF=>DYN_MODEL(KTO)%XCF
-
-XAF_ZS=>DYN_MODEL(KTO)%XAF_ZS
-XBF_ZS=>DYN_MODEL(KTO)%XBF_ZS
-XCF_ZS=>DYN_MODEL(KTO)%XCF_ZS
-
-XDXATH_ZS=>DYN_MODEL(KFROM)%XDXATH_ZS
-XDYATH_ZS=>DYN_MODEL(KFROM)%XDYATH_ZS
-XRHO_ZS=>DYN_MODEL(KFROM)%XRHO_ZS
-XA_K=>DYN_MODEL(KFROM)%XA_K
-XB_K=>DYN_MODEL(KFROM)%XB_K
-XC_K=>DYN_MODEL(KFROM)%XC_K
-XD_K=>DYN_MODEL(KFROM)%XD_K
-
-XTRIGSX=>DYN_MODEL(KTO)%XTRIGSX
-XTRIGSY=>DYN_MODEL(KTO)%XTRIGSY
-NIFAXX=>DYN_MODEL(KTO)%NIFAXX
-NIFAXY=>DYN_MODEL(KTO)%NIFAXY
-CPRESOPT=>DYN_MODEL(KTO)%CPRESOPT
-NITR=>DYN_MODEL(KTO)%NITR
-LITRADJ=>DYN_MODEL(KTO)%LITRADJ
-LRES=>DYN_MODEL(KTO)%LRES          
-LOCEAN=>DYN_MODEL(KTO)%LOCEAN
-XRES=>DYN_MODEL(KTO)%XRES
-XRELAX=>DYN_MODEL(KTO)%XRELAX
-XDXHATM=>DYN_MODEL(KTO)%XDXHATM
-XDYHATM=>DYN_MODEL(KTO)%XDYHATM
-XRHOM=>DYN_MODEL(KTO)%XRHOM
-NALBOT=>DYN_MODEL(KTO)%NALBOT
-XALK=>DYN_MODEL(KTO)%XALK
-XALKW=>DYN_MODEL(KTO)%XALKW
-NALBAS=>DYN_MODEL(KTO)%NALBAS
-XALKBAS=>DYN_MODEL(KTO)%XALKBAS
-XALKWBAS=>DYN_MODEL(KTO)%XALKWBAS
-LVE_RELAX=>DYN_MODEL(KTO)%LVE_RELAX
-LVE_RELAX_GRD=>DYN_MODEL(KTO)%LVE_RELAX_GRD
-!LHORELAX_UVWTH=>DYN_MODEL(KTO)%LHORELAX_UVWTH !Done in FIELDLIST_GOTO_MODEL
-LHORELAX_RV=>DYN_MODEL(KTO)%LHORELAX_RV
-LHORELAX_RC=>DYN_MODEL(KTO)%LHORELAX_RC
-LHORELAX_RR=>DYN_MODEL(KTO)%LHORELAX_RR
-LHORELAX_RI=>DYN_MODEL(KTO)%LHORELAX_RI
-LHORELAX_RS=>DYN_MODEL(KTO)%LHORELAX_RS
-LHORELAX_RG=>DYN_MODEL(KTO)%LHORELAX_RG
-LHORELAX_RH=>DYN_MODEL(KTO)%LHORELAX_RH
-!LHORELAX_TKE=>DYN_MODEL(KTO)%LHORELAX_TKE !Done in FIELDLIST_GOTO_MODEL
-LHORELAX_SVC2R2=>DYN_MODEL(KTO)%LHORELAX_SVC2R2
-LHORELAX_SVC1R3=>DYN_MODEL(KTO)%LHORELAX_SVC1R3
-LHORELAX_SVLIMA=>DYN_MODEL(KTO)%LHORELAX_SVLIMA
-LHORELAX_SVELEC=>DYN_MODEL(KTO)%LHORELAX_SVELEC
-LHORELAX_SVCHEM=>DYN_MODEL(KTO)%LHORELAX_SVCHEM
-LHORELAX_SVCHIC=>DYN_MODEL(KTO)%LHORELAX_SVCHIC
-LHORELAX_SVLG=>DYN_MODEL(KTO)%LHORELAX_SVLG
-LHORELAX_SVDST=>DYN_MODEL(KTO)%LHORELAX_SVDST
-LHORELAX_SVSLT=>DYN_MODEL(KTO)%LHORELAX_SVSLT
-LHORELAX_SVAER=>DYN_MODEL(KTO)%LHORELAX_SVAER
-LHORELAX_SVPP=>DYN_MODEL(KTO)%LHORELAX_SVPP
-#ifdef MNH_FOREFIRE
-LHORELAX_SVFF=>DYN_MODEL(KTO)%LHORELAX_SVFF
-#endif
-LHORELAX_SVCS=>DYN_MODEL(KTO)%LHORELAX_SVCS
-LHORELAX_SVSNW=>DYN_MODEL(KTO)%LHORELAX_SVSNW
-LHORELAX_SV=>DYN_MODEL(KTO)%LHORELAX_SV
-XRIMKMAX=>DYN_MODEL(KTO)%XRIMKMAX
-!NRIMX=>DYN_MODEL(KTO)%NRIMX !Done in FIELDLIST_GOTO_MODEL
-!NRIMY=>DYN_MODEL(KTO)%NRIMY !Done in FIELDLIST_GOTO_MODEL
-NSIZELBX_ll=>DYN_MODEL(KTO)%NSIZELBX_ll
-NSIZELBXU_ll=>DYN_MODEL(KTO)%NSIZELBXU_ll
-NSIZELBXTKE_ll=>DYN_MODEL(KTO)%NSIZELBXTKE_ll
-NSIZELBXR_ll=>DYN_MODEL(KTO)%NSIZELBXR_ll
-NSIZELBXSV_ll=>DYN_MODEL(KTO)%NSIZELBXSV_ll
-NSIZELBY_ll=>DYN_MODEL(KTO)%NSIZELBY_ll
-NSIZELBYV_ll=>DYN_MODEL(KTO)%NSIZELBYV_ll
-NSIZELBYTKE_ll=>DYN_MODEL(KTO)%NSIZELBYTKE_ll
-NSIZELBYR_ll=>DYN_MODEL(KTO)%NSIZELBYR_ll
-NSIZELBYSV_ll=>DYN_MODEL(KTO)%NSIZELBYSV_ll
-LMASK_RELAX=>DYN_MODEL(KTO)%LMASK_RELAX
-XKURELAX=>DYN_MODEL(KTO)%XKURELAX
-XKVRELAX=>DYN_MODEL(KTO)%XKVRELAX
-XKWRELAX=>DYN_MODEL(KTO)%XKWRELAX
-XT4DIFU=>DYN_MODEL(KTO)%XT4DIFU
-XDK2U=>DYN_MODEL(KTO)%XDK2U
-XDK4U=>DYN_MODEL(KTO)%XDK4U
-XT4DIFTH=>DYN_MODEL(KTO)%XT4DIFTH
-XDK2TH=>DYN_MODEL(KTO)%XDK2TH
-XDK4TH=>DYN_MODEL(KTO)%XDK4TH
-XT4DIFSV=>DYN_MODEL(KTO)%XT4DIFSV
-XDK2SV=>DYN_MODEL(KTO)%XDK2SV
-XDK4SV=>DYN_MODEL(KTO)%XDK4SV
-
-END SUBROUTINE DYN_GOTO_MODEL
-
-END MODULE MODD_DYN_n
diff --git a/src/ZSOLVER/read_exsegn.f90 b/src/ZSOLVER/read_exsegn.f90
deleted file mode 100644
index 536ccf015..000000000
--- a/src/ZSOLVER/read_exsegn.f90
+++ /dev/null
@@ -1,2997 +0,0 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     ###################### 
-      MODULE MODI_READ_EXSEG_n
-!     ######################
-!
-INTERFACE
-!
-      SUBROUTINE READ_EXSEG_n(KMI,TPEXSEGFILE,HCONF,OFLAT,OUSERV,                  &
-                   OUSERC,OUSERR,OUSERI,OUSECI,OUSERS,OUSERG,OUSERH,               &
-                   OUSECHEM,OUSECHAQ,OUSECHIC,OCH_PH,OCH_CONV_LINOX,OSALT,         &
-                   ODEPOS_SLT, ODUST,ODEPOS_DST, OCHTRANS,                         &
-                   OORILAM,ODEPOS_AER, OLG,OPASPOL,                                &
-#ifdef MNH_FOREFIRE
-                   OFOREFIRE,                                                      &
-#endif
-                   OLNOX_EXPLICIT,                                                 &
-                   OCONDSAMP,OBLOWSNOW,                                            &
-                   KRIMX,KRIMY, KSV_USER,                                          &
-                   HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC,              &
-                   HEQNSYS,PTSTEP_ALL,HSTORAGE_TYPE,HINIFILEPGD                    )
-!
-USE MODD_IO,   ONLY: TFILEDATA
-!
-INTEGER,            INTENT(IN) :: KMI    ! Model index
-TYPE(TFILEDATA),    INTENT(IN) :: TPEXSEGFILE ! EXSEG file
-!     The following variables are read by READ_DESFM in DESFM descriptor : 
-CHARACTER (LEN=*),  INTENT(IN) :: HCONF  ! configuration var. linked to FMfile
-LOGICAL,            INTENT(IN) :: OFLAT  ! Logical for zero orography
-LOGICAL,            INTENT(IN) :: OUSERV,OUSERC,OUSERR,OUSERI,OUSERS, &
-                                  OUSERG,OUSERH  ! kind of moist variables in 
-                                                 ! FMfile
-LOGICAL,            INTENT(IN) :: OUSECI         ! ice concentration in
-                                                 ! FMfile
-LOGICAL,            INTENT(IN) :: OUSECHEM       ! Chemical FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OUSECHAQ       ! Aqueous chemical FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OUSECHIC       ! Ice chemical FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OCH_PH         ! pH FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OCH_CONV_LINOX ! LiNOx FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: ODUST          ! Dust FLAG in FMFILE
-LOGICAL,DIMENSION(:), INTENT(IN)  :: ODEPOS_DST  ! Dust wet deposition FLAG in FMFILE     
-LOGICAL,DIMENSION(:), INTENT(IN)  :: ODEPOS_SLT  ! Sea Salt wet deposition FLAG in FMFILE     
-LOGICAL,DIMENSION(:), INTENT(IN)  :: ODEPOS_AER  ! Orilam wet deposition FLAG in FMFILE     
-LOGICAL,            INTENT(IN) :: OSALT          ! Sea Salt FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OORILAM        ! Orilam FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OPASPOL        ! Passive pollutant FLAG in FMFILE
-#ifdef MNH_FOREFIRE
-LOGICAL,            INTENT(IN) :: OFOREFIRE      ! ForeFire FLAG in FMFILE
-#endif
-LOGICAL,            INTENT(IN) :: OLNOX_EXPLICIT ! explicit LNOx FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OCONDSAMP      ! Conditional sampling FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OBLOWSNOW     ! Blowing snow FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OCHTRANS       ! LCHTRANS FLAG in FMFILE
-
-LOGICAL,            INTENT(IN) :: OLG            ! lagrangian FLAG in FMFILE
-INTEGER,            INTENT(IN) :: KRIMX, KRIMY   ! number of points for the
-                       ! horizontal relaxation for the outermost verticals
-INTEGER,            INTENT(IN) :: KSV_USER    ! number of additional scalar
-                                         ! variables in FMfile 
-CHARACTER (LEN=*),  INTENT(IN) :: HTURB  ! Kind of turbulence parameterization
-                                         ! used to  produce FMFILE
-CHARACTER (LEN=*),  INTENT(IN) :: HTOM   ! Kind of third order moment
-LOGICAL,            INTENT(IN) :: ORMC01 ! flag for RMC01 SBL computations
-CHARACTER (LEN=*),  INTENT(IN) :: HRAD   ! Kind of radiation scheme
-CHARACTER (LEN=4),  INTENT(IN) :: HDCONV ! Kind of deep convection scheme
-CHARACTER (LEN=4),  INTENT(IN) :: HSCONV ! Kind of shallow convection scheme
-CHARACTER (LEN=4),  INTENT(IN) :: HCLOUD ! Kind of microphysical scheme
-CHARACTER (LEN=4),  INTENT(IN) :: HELEC  ! Kind of electrical scheme
-CHARACTER (LEN=*),  INTENT(IN) :: HEQNSYS! type of equations' system
-REAL,DIMENSION(:),  INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models
-CHARACTER (LEN=*),  INTENT(IN) :: HSTORAGE_TYPE ! type of initial file
-CHARACTER (LEN=*),  INTENT(IN) :: HINIFILEPGD ! name of PGD file
-!
-END SUBROUTINE READ_EXSEG_n
-!
-END INTERFACE
-!
-END MODULE MODI_READ_EXSEG_n
-!
-!
-!     #########################################################################
-      SUBROUTINE READ_EXSEG_n(KMI,TPEXSEGFILE,HCONF,OFLAT,OUSERV,                  &
-                   OUSERC,OUSERR,OUSERI,OUSECI,OUSERS,OUSERG,OUSERH,               &
-                   OUSECHEM,OUSECHAQ,OUSECHIC,OCH_PH,OCH_CONV_LINOX,OSALT,         &
-                   ODEPOS_SLT, ODUST,ODEPOS_DST, OCHTRANS,                         &
-                   OORILAM,ODEPOS_AER, OLG,OPASPOL,                                &
-#ifdef MNH_FOREFIRE
-                   OFOREFIRE,                                                      &
-#endif
-                   OLNOX_EXPLICIT,                                                 &
-                   OCONDSAMP, OBLOWSNOW,                                           &
-                   KRIMX,KRIMY, KSV_USER,                                          &
-                   HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC,              &
-                   HEQNSYS,PTSTEP_ALL,HSTORAGE_TYPE,HINIFILEPGD                    )
-!     #########################################################################
-!
-!!****  *READ_EXSEG_n * - routine to read  the descriptor file EXSEG
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to read the descriptor file called 
-!     EXSEG and to control the coherence with FMfile data . 
-!       
-!!
-!!**  METHOD
-!!    ------
-!!      The descriptor file is read. Namelists (NAMXXXn) which contain
-!!    variables linked to one nested model are at the beginning of the file.
-!!    Namelists (NAMXXX) which contain variables common to all models
-!!    are at the end of the file. When the  model index is different from 1, 
-!!    the end of the file (namelists NAMXXX) is not read. 
-!!
-!!      Coherence between the initial file (description read in DESFM file)
-!!    and the segment to perform (description read in EXSEG file)
-!!    is checked for segment achievement  configurations 
-!!    or  postprocessing configuration. The get indicators are set according 
-!!      to the following check :
-!!
-!!      - segment achievement and preinit configurations :
-!!
-!!       * if there is no turbulence kinetic energy in  initial
-!!      file (HTURB='NONE'), and the segment to perform requires a turbulence
-!!      parameterization (CTURB /= 'NONE'), the get indicators for turbulence 
-!!      kinetic energy variables are set to 'INIT'; i.e. these variables will be
-!!      set equal to  zero by READ_FIELD according to the get indicators.
-!!       * The same procedure is applied to the dissipation of TKE. 
-!!       * if there is no moist variables RRn  in  initial file (OUSERn=.FALSE.)
-!!      and the segment to perform requires  moist variables RRn
-!!      (LUSERn=.TRUE.),  the get indicators for moist variables RRn are set
-!!      equal to 'INIT'; i.e. these variables will be set equal to  zero by 
-!!      READ_FIELD according to the get indicators.
-!!       * if there are KSV_USER additional scalar variables in initial file and the
-!!      segment to perform needs more than KSV_USER additional variables,  the get
-!!      indicators for these (NSV_USER-KSV_USER) additional scalar variables are set 
-!!      equal to 'INIT'; i.e. these variables will be set equal to  zero by 
-!!      READ_FIELD according to the get indicators. If the segment to perform
-!!      needs less additional scalar variables than there are in initial file,
-!!      the get indicators for these (KSV_USER - NSV_USER) additional scalar variables are
-!!      set equal to 'SKIP'.      
-!!       * warning messages are printed if the fields in initial file are the
-!!      same at time t and t-dt (HCONF='START') and  a leap-frog advance 
-!!      at first time step will be used  for the segment to perform
-!!      (CCONF='RESTA'); It is likewise when HCONF='RESTA' and CCONF='START'.
-!!       * A warning message is printed if the orography in initial file is zero
-!!      (OFLAT=.TRUE.) and the segment to perform considers no-zero orography
-!!      (LFLAT=.FALSE.). It is likewise for LFLAT=.TRUE. and OFLAT=.FALSE..
-!!       If the segment to perform requires zero orography (LFLAT=.TRUE.), the
-!!       orography (XZS) will not read in initial file but  set equal to zero 
-!!       by SET_GRID.  
-!!       * check of the depths of the Lateral Damping Layer in x and y 
-!!       direction is performed
-!!       * If some coupling files are specified, LSTEADYLS is set to T
-!!       * If no coupling files are specified, LSTEADYLS is set to F
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!     Module MODN_CONF : CCONF,LTHINSHELL,LFLAT,NMODEL,NVERB     
-!!
-!!      Module MODN_DYN : LCORIO, LZDIFFU
-!!
-!!      Module MODN_NESTING : NDAD(m),NDTRATIO(m),XWAY(m)
-!!
-!!      Module MODN_BUDGET : CBUTYPE,XBULEN
-!!
-!!      Module MODN_CONF1 : LUSERV,LUSERC,LUSERR,LUSERI,LUSERS,LUSERG,LUSERH,CSEG
-!!
-!!      Module MODN_DYN1 : XTSTEP,CPRESOPT,NITR,XRELAX
-!!
-!!      Module MODD_ADV1 : CMET_ADV_SCHEME,CSV_ADV_SCHEME,CUVW_ADV_SCHEME,NLITER
-!!
-!!      Module MODN_PARAM1 : CTURB,CRAD,CDCONV,CSCONV
-!!
-!!      Module MODN_LUNIT1 : 
-!!      Module MODN_LBC1 : CLBCX,CLBCY,NLBLX,NLBLY,XCPHASE,XPOND
-!!
-!!      Module MODN_TURB_n : CTURBLEN,CTURBDIM
-!!
-!!      Module MODD_GET1: 
-!!        CGETTKEM,CGETTKET,
-!!        CGETRVM,CGETRCM,CGETRRM,CGETRIM,CGETRSM,CGETRGM,CGETRHM
-!!        CGETRVT,CGETRCT,CGETRRT,CGETRIT,CGETRST,CGETRGT,CGETRHT,CGETSVM
-!!        CGETSVT,CGETSIGS,CGETSRCM,CGETSRCT 
-!!        NCPL_NBR,NCPL_TIMES,NCPL_CUR
-!!      Module MODN_LES  : contains declaration of the control parameters
-!!                                for Large Eddy Simulations' storages
-!!                                for the forcing
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of the  documentation (routine READ_EXSEG_n)
-!!      
-!!
-!!    AUTHOR
-!!    ------
-!!  	V. Ducrocq       * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    07/06/94 
-!!      Modification   26/10/94  (Stein)  remove NAM_GET from the Namelists
-!!      present in DESFM + change the namelist names
-!!      Modification   22/11/94  (Stein)  add GET indicator for phi
-!!      Modification   21/12/94  (Stein)  add GET indicator for LS fields  
-!!      Modification   06/01/95  (Stein)  bug in the test for Scalar Var.
-!!      Modifications  09/01/95  (Stein)  add the turbulence scheme
-!!      Modifications  09/01/95  (Stein)  add the 1D switch
-!!      Modifications  10/03/95  (Mallet) add coherence in coupling case
-!!      Modifications  16/03/95  (Stein)  remove R from the historical variables
-!!      Modifications  01/03/95  (Hereil) add the budget namelists
-!!      Modifications  16/06/95  (Stein)  coherence control for the
-!!                microphysical scheme + remove the wrong messge for RESTA conf
-!!      Modifications  30/06/95  (Stein)  conditionnal reading of the fields
-!!                used by the moist turbulence scheme
-!!      Modifications  12/09/95  (Pinty)  add the radiation scheme
-!!      Modification   06/02/96  (J.Vila) implement scalar advection schemes
-!!      Modifications  24/02/96  (Stein)  change the default value for CCPLFILE
-!!      Modifications  02/05/96  (Stein Jabouille) change the Z0SEA activation
-!!      Modifications  24/05/96  (Stein)  change the SRC SIGS control
-!!      Modifications  08/09/96  (Masson) the coupling file names are reset to
-!!                               default value " " before reading in EXSEG1.nam
-!!                               to avoid extra non-existant coupling files
-!!
-!!      Modifications  25/04/95  (K.Suhre)add namelist NAM_BLANK
-!!                                        add read for LFORCING
-!!                     25/04/95  (K.Suhre)add namelist NAM_FRC
-!!                                        and switch checking
-!!                     06/08/96  (K.Suhre)add namelist NAM_CH_MNHCn
-!!                                        and NAM_CH_SOLVER
-!!      Modifications  10/10/96  (Stein)  change SRC into SRCM and SRCT
-!!      Modifications  11/04/96  (Pinty)  add the rain-ice microphysical scheme
-!!      Modifications  11/01/97  (Pinty)  add the deep convection scheme
-!!      Modifications  22/05/97  (Lafore) gridnesting implementation
-!!      Modifications  22/06/97  (Stein)  add the absolute pressure + cleaning
-!!      Modifications  25/08/97  (Masson) add tests on surface schemes
-!!                     22/10/97  (Stein) remove the RIMX /= 0 control
-!!                                       + new namelist + cleaning
-!!      Modifications  17/04/98  (Masson) add tests on character variables
-!!      Modification   15/03/99  (Masson) add tests on PROGRAM
-!!      Modification   04/01/00  (Masson) removes TSZ0 case
-!!      Modification   04/06/00  (Pinty)  add C2R2 scheme
-!!                     11/12/00  (Tomasini) add CSEA_FLUX to MODD_PARAMn
-!!                                          delete the test on SST_FRC only in 1D
-!!      Modification   22/01/01  (Gazen)  change NSV,KSV to NSV_USER,KSV_USER and add
-!!                                        NSV_* variables initialization
-!!      Modification   15/10/01  (Mallet) allow namelists in different orders
-!!      Modification   18/03/02  (Solmon)  new radiation scheme test
-!!      Modification   29/11/02 (JP Pinty) add C3R5, ICE2, ICE4, ELEC
-!!      Modification   06/11/02  (Masson)  new LES BL height diagnostic
-!!      Modification   06/11/02  (Jabouille)  remove LTHINSHELL LFORCING test
-!!      Modification   01/12/03  (Gazen)   change Chemical scheme interface
-!!      Modification   01/2004   (Masson) removes surface (externalization)
-!!      Modification   01/2005   (Masson) removes 1D and 2D switches
-!!      Modification   04/2005   (Tulet)  add dust, orilam
-!!      Modification   03/2006   (O.Geoffroy) Add KHKO scheme
-!!      Modification   04/2006   (Maric)  include 4th order advection scheme
-!!      Modification   05/2006   (Masson) add nudging
-!!      Modification   05/2006   Remove KEPS
-!!      Modification   04/2006   (Maric)  include PPM advection scheme
-!!      Modification   04/2006   (J.Escobar) Bug dollarn add CALL UPDATE_NAM_CONFN  
-!!      Modifications  01/2007   (Malardel,Pergaud)  add the MF shallow
-!!                               convection scheme MODN_PARAM_MFSHALL_n
-!!      Modification   09/2009   (J.Escobar) add more info on relaxation problems
-!!      Modification   09/2011   (J.Escobar) re-add 'ZRESI' choose
-!!      Modification   12/2011   (C.Lac) Adaptation to FIT temporal scheme 
-!!      Modification   12/2012   (S.Bielli) add NAM_NCOUT for netcdf output (removed 08/07/2016)
-!!      Modification   02/2012   (Pialat/Tulet) add ForeFire
-!!      Modification   02/2012   (T.Lunet) add of new Runge-Kutta methods
-!!      Modification   01/2015   (C. Barthe) add explicit LNOx
-!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
-!!      M.Leriche 18/12/2015 : bug chimie glace dans prep_real_case
-!!      Modification    01/2016  (JP Pinty) Add LIMA
-!!      Modification   02/2016   (M.Leriche) treat gas and aq. chemicals separately
-!!      P.Wautelet 08/07/2016 : removed MNH_NCWRIT define
-!!      Modification   10/2016    (C.LAC) Add OSPLIT_WENO + Add droplet
-!!                                deposition + Add max values
-!!      Modification   11/2016   (Ph. Wautelet) Allocate/initialise some output/backup structures
-!!      Modification   03/2017   (JP Chaboureau) Fix the initialization of
-!!                                               LUSERx-type variables for LIMA
-!!      M.Leriche      06/2017 for spawn and prep_real avoid abort if wet dep for 
-!!                             aerosol and no cloud scheme defined
-!!      Q.Libois       02/2018  ECRAD
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!      Modification   07/2017   (V. Vionnet) add blowing snow scheme
-!!      Modification   01/2019   (Q. Rodier) define XCEDIS depending on BL89 or RM17 mixing length
-!!      Modification   01/2019   (P. Wautelet) bugs correction: incorrect writes
-!!      Modification   01/2019   (R. Honnert) remove SURF in CMF_UPDRAFT
-!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
-!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!  C. Lac         11/2019: correction in the drag formula and application to building in addition to tree
-!  Q. Rodier      03/2020: add abort if use of any LHORELAX and cyclic conditions
-!  F.Auguste      02/2021: add IBM
-!  T.Nagel        02/2021: add turbulence recycling
-!  E.Jezequel     02/2021: add stations read from CSV file
-!  P. Wautelet 09/03/2021: simplify allocation of scalar variable names
-!  P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv
-!  P. Wautelet 10/03/2021: move scalar variable name initializations to ini_nsv
-!  R. Honnert  23/04/2021: add ADAP mixing length and delete HRIO and BOUT from CMF_UPDRAFT
-!  S. Riette   11/05/2021  HighLow cloud
-!------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-USE MODD_BLOWSNOW
-USE MODD_BUDGET
-USE MODD_CH_AEROSOL
-USE MODD_CH_M9_n, ONLY : NEQ
-USE MODD_CONDSAMP
-USE MODD_CONF
-USE MODD_CONF_n,  ONLY: CSTORAGE_TYPE
-USE MODD_CONFZ
-! USE MODD_DRAG_n
-USE MODD_DUST
-USE MODD_DYN
-USE MODD_DYN_n, ONLY : LHORELAX_SVLIMA
-#ifdef MNH_FOREFIRE
-USE MODD_FOREFIRE
-#endif
-USE MODD_GET_n
-USE MODD_GR_FIELD_n
-USE MODD_IO,   ONLY: TFILEDATA
-USE MODD_LUNIT_n, ONLY: TLUOUT
-USE MODD_NSV,NSV_USER_n=>NSV_USER
-USE MODD_PARAMETERS
-USE MODD_PASPOL
-USE MODD_SALT
-USE MODD_VAR_ll,  ONLY: NPROC
-USE MODD_VISCOSITY
-
-USE MODE_MSG
-USE MODE_POS
-
-USE MODI_INI_NSV
-USE MODI_TEST_NAM_VAR
-
-USE MODN_2D_FRC
-USE MODN_ADV_n      ! The final filling of these modules for the model n is
-USE MODN_BACKUP
-USE MODN_BLANK_n
-USE MODN_BLOWSNOW
-USE MODN_BLOWSNOW_n
-USE MODN_BUDGET
-USE MODN_CH_MNHC_n
-USE MODN_CH_ORILAM
-USE MODN_CH_SOLVER_n
-USE MODN_CONDSAMP
-USE MODN_CONF
-USE MODN_CONF_n
-USE MODN_CONFZ
-USE MODN_DRAGBLDG_n
-USE MODN_DRAG_n
-USE MODN_DRAGTREE_n
-USE MODN_DUST
-USE MODN_DYN
-USE MODN_DYN_n      ! to avoid the duplication of this routine for each model.
-USE MODN_ELEC
-USE MODN_EOL
-USE MODN_EOL_ADNR
-USE MODN_EOL_ALM
-#ifdef MNH_FOREFIRE
-USE MODN_FOREFIRE
-#endif
-USE MODN_FRC
-USE MODN_IBM_PARAM_n
-USE MODN_LATZ_EDFLX
-USE MODN_LBC_n      ! routine is used for each nested model. This has been done
-USE MODN_LES
-USE MODN_LUNIT_n
-USE MODN_MEAN
-USE MODN_NESTING
-USE MODN_NUDGING_n
-USE MODN_OUTPUT
-USE MODN_PARAM_C1R3, ONLY : NAM_PARAM_C1R3, CPRISTINE_ICE_C1R3,    &
-                            CHEVRIMED_ICE_C1R3
-USE MODN_PARAM_C2R2, ONLY : EPARAM_CCN=>HPARAM_CCN, EINI_CCN=>HINI_CCN, &
-                            WNUC=>XNUC, WALPHAC=>XALPHAC, NAM_PARAM_C2R2
-USE MODN_PARAM_ECRAD_n
-USE MODN_PARAM_ICE
-USE MODN_PARAM_KAFR_n
-USE MODN_PARAM_LIMA, ONLY : FINI_CCN=>HINI_CCN,NAM_PARAM_LIMA,NMOD_CCN,LSCAV, &
-                            CPRISTINE_ICE_LIMA, CHEVRIMED_ICE_LIMA, NMOD_IFN, &
-                            LCOLD, LACTI, LNUCL, XALPHAC, XNUC, LMEYERS, LHAIL,&
-                            LPTSPLIT
-USE MODN_PARAM_MFSHALL_n
-USE MODN_PARAM_n    ! realized in subroutine ini_model n
-USE MODN_PARAM_RAD_n
-USE MODN_PASPOL
-USE MODN_RECYCL_PARAM_n
-USE MODN_SALT
-USE MODN_SERIES
-USE MODN_SERIES_n
-USE MODN_STATION_n
-USE MODN_TURB
-USE MODN_TURB_CLOUD
-USE MODN_TURB_n
-USE MODN_VISCOSITY
-
-IMPLICIT NONE
-!
-!*       0.1   declarations of arguments
-!
-!
-!
-INTEGER,            INTENT(IN) :: KMI    ! Model index
-TYPE(TFILEDATA),    INTENT(IN) :: TPEXSEGFILE ! EXSEG file
-!     The following variables are read by READ_DESFM in DESFM descriptor : 
-CHARACTER (LEN=*),  INTENT(IN) :: HCONF  ! configuration var. linked to FMfile
-LOGICAL,            INTENT(IN) :: OFLAT  ! Logical for zero orography
-LOGICAL,            INTENT(IN) :: OUSERV,OUSERC,OUSERR,OUSERI,OUSERS, &
-                                  OUSERG,OUSERH  ! kind of moist variables in 
-                                                 ! FMfile
-LOGICAL,            INTENT(IN) :: OUSECI         ! ice concentration in
-                                                 ! FMfile
-LOGICAL,            INTENT(IN) :: OUSECHEM       ! Chemical FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OUSECHAQ       ! Aqueous chemical FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OUSECHIC       ! Ice chemical FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OCH_PH         ! pH FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OCH_CONV_LINOX ! LiNOx FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: ODUST          ! Dust FLAG in FMFILE
-LOGICAL,DIMENSION(:), INTENT(IN) :: ODEPOS_DST   ! Dust Deposition FLAG in FMFILE
-LOGICAL,DIMENSION(:), INTENT(IN) :: ODEPOS_SLT   ! Sea Salt wet deposition FLAG in FMFILE     
-LOGICAL,DIMENSION(:), INTENT(IN) :: ODEPOS_AER   ! Orilam wet deposition FLAG in FMFILE     
-LOGICAL,            INTENT(IN) :: OSALT          ! Sea Salt FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OORILAM        ! Orilam FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OPASPOL        ! Passive pollutant FLAG in FMFILE
-#ifdef MNH_FOREFIRE
-LOGICAL,            INTENT(IN) :: OFOREFIRE      ! ForeFire FLAG in FMFILE
-#endif
-LOGICAL,            INTENT(IN) :: OLNOX_EXPLICIT ! explicit LNOx FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OCONDSAMP      ! Conditional sampling FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OCHTRANS       ! LCHTRANS FLAG in FMFILE
-LOGICAL,            INTENT(IN) :: OBLOWSNOW     ! Blowing snow FLAG in FMFILE
-
-LOGICAL,            INTENT(IN) :: OLG            ! lagrangian FLAG in FMFILE
-INTEGER,            INTENT(IN) :: KRIMX, KRIMY   ! number of points for the
-                       ! horizontal relaxation for the outermost verticals
-INTEGER,            INTENT(IN) :: KSV_USER    ! number of additional scalar
-                                         ! variables in FMfile 
-CHARACTER (LEN=*),  INTENT(IN) :: HTURB  ! Kind of turbulence parameterization
-                                         ! used to  produce FMFILE
-CHARACTER (LEN=*),  INTENT(IN) :: HTOM   ! Kind of third order moment
-LOGICAL,            INTENT(IN) :: ORMC01 ! flag for RMC01 SBL computations
-CHARACTER (LEN=*),  INTENT(IN) :: HRAD   ! Kind of radiation scheme
-CHARACTER (LEN=4),  INTENT(IN) :: HDCONV ! Kind of deep convection scheme
-CHARACTER (LEN=4),  INTENT(IN) :: HSCONV ! Kind of shallow convection scheme
-CHARACTER (LEN=4),  INTENT(IN) :: HCLOUD ! Kind of microphysical scheme
-CHARACTER (LEN=4),  INTENT(IN) :: HELEC  ! Kind of electrical scheme
-CHARACTER (LEN=*),  INTENT(IN) :: HEQNSYS! type of equations' system
-REAL,DIMENSION(:),  INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models
-CHARACTER (LEN=*),  INTENT(IN) :: HSTORAGE_TYPE ! type of initial file
-CHARACTER (LEN=*),  INTENT(IN) :: HINIFILEPGD ! name of PGD file
-!
-!*       0.2   declarations of local variables
-!
-INTEGER :: ILUSEG,ILUOUT ! logical unit numbers of EXSEG file and outputlisting
-INTEGER :: JS,JCI,JI,JSV       ! Loop indexes 
-LOGICAL :: GRELAX              
-LOGICAL :: GFOUND              ! Return code when searching namelist
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.    READ EXSEG FILE
-!              ---------------
-!
-CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_EXSEG_n','called for '//TRIM(TPEXSEGFILE%CNAME))
-!
-ILUSEG = TPEXSEGFILE%NLU
-ILUOUT = TLUOUT%NLU
-!
-CALL INIT_NAM_LUNITN
-CCPLFILE(:)="                            "
-CALL INIT_NAM_CONFN
-CALL INIT_NAM_DYNN
-CALL INIT_NAM_ADVN
-CALL INIT_NAM_DRAGTREEN
-CALL INIT_NAM_DRAGBLDGN
-CALL INIT_NAM_PARAMN
-CALL INIT_NAM_PARAM_RADN
-#ifdef MNH_ECRAD
-CALL INIT_NAM_PARAM_ECRADN
-#endif
-CALL INIT_NAM_PARAM_KAFRN
-CALL INIT_NAM_PARAM_MFSHALLN
-CALL INIT_NAM_LBCN
-CALL INIT_NAM_NUDGINGN
-CALL INIT_NAM_TURBN
-CALL INIT_NAM_BLANKN
-CALL INIT_NAM_DRAGN
-CALL INIT_NAM_IBM_PARAMN
-CALL INIT_NAM_RECYCL_PARAMN
-CALL INIT_NAM_CH_MNHCN
-CALL INIT_NAM_CH_SOLVERN
-CALL INIT_NAM_SERIESN
-CALL INIT_NAM_BLOWSNOWN
-CALL INIT_NAM_STATIONn
-!
-WRITE(UNIT=ILUOUT,FMT="(/,'READING THE EXSEG.NAM FILE')")
-CALL POSNAM(ILUSEG,'NAM_LUNITN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LUNITn)
-CALL POSNAM(ILUSEG,'NAM_CONFN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFn)
-CALL POSNAM(ILUSEG,'NAM_DYNN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DYNn)
-CALL POSNAM(ILUSEG,'NAM_ADVN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_ADVn)
-CALL POSNAM(ILUSEG,'NAM_PARAMN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAMn)
-CALL POSNAM(ILUSEG,'NAM_PARAM_RADN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_RADn)
-#ifdef MNH_ECRAD
-CALL POSNAM(ILUSEG,'NAM_PARAM_ECRADN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_ECRADn)
-#endif
-CALL POSNAM(ILUSEG,'NAM_PARAM_KAFRN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_KAFRn)
-CALL POSNAM(ILUSEG,'NAM_PARAM_MFSHALLN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_MFSHALLn)
-CALL POSNAM(ILUSEG,'NAM_LBCN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LBCn)
-CALL POSNAM(ILUSEG,'NAM_NUDGINGN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_NUDGINGn)
-CALL POSNAM(ILUSEG,'NAM_TURBN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_TURBn)
-CALL POSNAM(ILUSEG,'NAM_DRAGN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DRAGn)
-CALL POSNAM(ILUSEG,'NAM_IBM_PARAMN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_IBM_PARAMn)
-CALL POSNAM(ILUSEG,'NAM_RECYCL_PARAMN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_RECYCL_PARAMn)
-CALL POSNAM(ILUSEG,'NAM_CH_MNHCN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CH_MNHCn)
-CALL POSNAM(ILUSEG,'NAM_CH_SOLVERN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CH_SOLVERn)
-CALL POSNAM(ILUSEG,'NAM_SERIESN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_SERIESn)
-CALL POSNAM(ILUSEG,'NAM_BLANKN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLANKn)
-CALL POSNAM(ILUSEG,'NAM_BLOWSNOWN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLOWSNOWn)
-CALL POSNAM(ILUSEG,'NAM_DRAGTREEN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DRAGTREEn)
-CALL POSNAM(ILUSEG,'NAM_DRAGBLDGN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DRAGBLDGn)
-CALL POSNAM(ILUSEG,'NAM_EOL',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL)
-CALL POSNAM(ILUSEG,'NAM_EOL_ADNR',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ADNR)
-CALL POSNAM(ILUSEG,'NAM_EOL_ALM',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ALM)
-CALL POSNAM(ILUSEG,'NAM_STATIONN',GFOUND,ILUOUT)
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_STATIONn)
-!
-IF (KMI == 1) THEN                                               
-  WRITE(UNIT=ILUOUT,FMT="(' namelists common to all the models ')")
-  CALL POSNAM(ILUSEG,'NAM_CONF',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONF)
-  CALL POSNAM(ILUSEG,'NAM_CONFZ',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFZ)
-  CALL POSNAM(ILUSEG,'NAM_DYN',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DYN)
-  CALL POSNAM(ILUSEG,'NAM_NESTING',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_NESTING)
-  CALL POSNAM(ILUSEG,'NAM_BACKUP',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    !Should have been allocated before in READ_DESFM_n
-    IF (.NOT.ALLOCATED(XBAK_TIME)) THEN
-      ALLOCATE(XBAK_TIME(NMODEL,JPOUTMAX))
-      XBAK_TIME(:,:) = XNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(XOUT_TIME)) THEN
-      ALLOCATE(XOUT_TIME(NMODEL,JPOUTMAX)) !Allocate *OUT* variables to prevent
-      XOUT_TIME(:,:) = XNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(NBAK_STEP)) THEN
-      ALLOCATE(NBAK_STEP(NMODEL,JPOUTMAX))
-      NBAK_STEP(:,:) = NNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(NOUT_STEP)) THEN
-      ALLOCATE(NOUT_STEP(NMODEL,JPOUTMAX)) !problems if NAM_OUTPUT does not exist
-      NOUT_STEP(:,:) = NNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(COUT_VAR)) THEN
-      ALLOCATE(COUT_VAR (NMODEL,JPOUTVARMAX))
-      COUT_VAR(:,:)  = ''
-    END IF
-    READ(UNIT=ILUSEG,NML=NAM_BACKUP)
-  ELSE
-    CALL POSNAM(ILUSEG,'NAM_FMOUT',GFOUND)
-    IF (GFOUND) THEN
-      CALL PRINT_MSG(NVERB_FATAL,'IO','READ_EXSEG_n','use namelist NAM_BACKUP instead of namelist NAM_FMOUT')
-    ELSE
-      IF (CPROGRAM=='MESONH') CALL PRINT_MSG(NVERB_ERROR,'IO','READ_EXSEG_n','namelist NAM_BACKUP not found')
-    END IF
-  END IF
-  CALL POSNAM(ILUSEG,'NAM_OUTPUT',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    !Should have been allocated before in READ_DESFM_n
-    IF (.NOT.ALLOCATED(XBAK_TIME)) THEN
-      ALLOCATE(XBAK_TIME(NMODEL,JPOUTMAX)) !Allocate *BAK* variables to prevent
-      XBAK_TIME(:,:) = XNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(XOUT_TIME)) THEN
-      ALLOCATE(XOUT_TIME(NMODEL,JPOUTMAX))
-      XOUT_TIME(:,:) = XNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(NBAK_STEP)) THEN
-      ALLOCATE(NBAK_STEP(NMODEL,JPOUTMAX)) !problems if NAM_BACKUP does not exist
-      NBAK_STEP(:,:) = NNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(NOUT_STEP)) THEN
-      ALLOCATE(NOUT_STEP(NMODEL,JPOUTMAX))
-      NOUT_STEP(:,:) = NNEGUNDEF
-    END IF
-    IF (.NOT.ALLOCATED(COUT_VAR)) THEN
-      ALLOCATE(COUT_VAR (NMODEL,JPOUTVARMAX))
-      COUT_VAR(:,:)  = ''
-    END IF
-    READ(UNIT=ILUSEG,NML=NAM_OUTPUT)
-  END IF
-  CALL POSNAM(ILUSEG,'NAM_BUDGET',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BUDGET)
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RU',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RU ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RU was already allocated' )
-      DEALLOCATE( CBULIST_RU )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RU(NBULISTMAXLINES) )
-    CBULIST_RU(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RU)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RU(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RV',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RV ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RV was already allocated' )
-      DEALLOCATE( CBULIST_RV )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RV(NBULISTMAXLINES) )
-    CBULIST_RV(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RV)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RV(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RW',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RW ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RW was already allocated' )
-      DEALLOCATE( CBULIST_RW )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RW(NBULISTMAXLINES) )
-    CBULIST_RW(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RW)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RW(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RTH',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RTH ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RTH was already allocated' )
-      DEALLOCATE( CBULIST_RTH )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RTH(NBULISTMAXLINES) )
-    CBULIST_RTH(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RTH)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RTH(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RTKE',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RTKE ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RTKE was already allocated' )
-      DEALLOCATE( CBULIST_RTKE )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RTKE(NBULISTMAXLINES) )
-    CBULIST_RTKE(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RTKE)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RTKE(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RRV',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RRV ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRV was already allocated' )
-      DEALLOCATE( CBULIST_RRV )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRV(NBULISTMAXLINES) )
-    CBULIST_RRV(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RRV)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRV(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RRC',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RRC ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRC was already allocated' )
-      DEALLOCATE( CBULIST_RRC )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRC(NBULISTMAXLINES) )
-    CBULIST_RRC(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RRC)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRC(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RRR',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RRR ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRR was already allocated' )
-      DEALLOCATE( CBULIST_RRR )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRR(NBULISTMAXLINES) )
-    CBULIST_RRR(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RRR)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRR(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RRI',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RRI ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRI was already allocated' )
-      DEALLOCATE( CBULIST_RRI )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRI(NBULISTMAXLINES) )
-    CBULIST_RRI(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RRI)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRI(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RRS',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RRS ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRS was already allocated' )
-      DEALLOCATE( CBULIST_RRS )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRS(NBULISTMAXLINES) )
-    CBULIST_RRS(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RRS)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRS(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RRG',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RRG ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRG was already allocated' )
-      DEALLOCATE( CBULIST_RRG )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRG(NBULISTMAXLINES) )
-    CBULIST_RRG(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RRG)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRG(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RRH',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RRH ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRH was already allocated' )
-      DEALLOCATE( CBULIST_RRH )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRH(NBULISTMAXLINES) )
-    CBULIST_RRH(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RRH)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRH(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_BU_RSV',GFOUND,ILUOUT)
-  IF (GFOUND) THEN
-    IF ( ALLOCATED( CBULIST_RSV ) ) THEN
-      CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RSV was already allocated' )
-      DEALLOCATE( CBULIST_RSV )
-    END IF
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RSV(NBULISTMAXLINES) )
-    CBULIST_RSV(:) = ''
-    READ(UNIT=ILUSEG,NML=NAM_BU_RSV)
-  ELSE
-    ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RSV(0) )
-  END IF
-
-  CALL POSNAM(ILUSEG,'NAM_LES',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LES)
-  CALL POSNAM(ILUSEG,'NAM_MEAN',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_MEAN)
-  CALL POSNAM(ILUSEG,'NAM_PDF',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PDF)
-  CALL POSNAM(ILUSEG,'NAM_FRC',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FRC)
-  CALL POSNAM(ILUSEG,'NAM_PARAM_ICE',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_ICE)
-  CALL POSNAM(ILUSEG,'NAM_PARAM_C2R2',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_C2R2)
-  CALL POSNAM(ILUSEG,'NAM_PARAM_C1R3',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_C1R3)
-  CALL POSNAM(ILUSEG,'NAM_PARAM_LIMA',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_LIMA)
-  CALL POSNAM(ILUSEG,'NAM_ELEC',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_ELEC)
-  CALL POSNAM(ILUSEG,'NAM_SERIES',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_SERIES)
-  CALL POSNAM(ILUSEG,'NAM_TURB_CLOUD',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_TURB_CLOUD)
-  CALL POSNAM(ILUSEG,'NAM_TURB',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_TURB)
-  CALL POSNAM(ILUSEG,'NAM_CH_ORILAM',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CH_ORILAM)
-  CALL POSNAM(ILUSEG,'NAM_DUST',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DUST)
-  CALL POSNAM(ILUSEG,'NAM_SALT',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_SALT)
-  CALL POSNAM(ILUSEG,'NAM_PASPOL',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PASPOL)
-#ifdef MNH_FOREFIRE
-  CALL POSNAM(ILUSEG,'NAM_FOREFIRE',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FOREFIRE)
-#endif
-  CALL POSNAM(ILUSEG,'NAM_CONDSAMP',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONDSAMP)
-  CALL POSNAM(ILUSEG,'NAM_2D_FRC',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_2D_FRC)
-  CALL POSNAM(ILUSEG,'NAM_LATZ_EDFLX',GFOUND)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LATZ_EDFLX)
-  CALL POSNAM(ILUSEG,'NAM_BLOWSNOW',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLOWSNOW)
-  CALL POSNAM(ILUSEG,'NAM_VISC',GFOUND,ILUOUT)
-  IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_VISC)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-CALL TEST_NAM_VAR(ILUOUT,'CPRESOPT',CPRESOPT,'RICHA','CGRAD','CRESI','ZRESI','ZSOLV',&
-                         'ZGRAD')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CUVW_ADV_SCHEME',CUVW_ADV_SCHEME, &
-       'CEN4TH','CEN2ND','WENO_K' ) 
-CALL TEST_NAM_VAR(ILUOUT,'CMET_ADV_SCHEME',CMET_ADV_SCHEME, &
-      &'PPM_00','PPM_01','PPM_02')
-CALL TEST_NAM_VAR(ILUOUT,'CSV_ADV_SCHEME',CSV_ADV_SCHEME,   &
-      &'PPM_00','PPM_01','PPM_02')
-CALL TEST_NAM_VAR(ILUOUT,'CTEMP_SCHEME',CTEMP_SCHEME,       &
-  &'RK11','RK21','RK33','RKC4','RK53','RK4B','RK62','RK65','NP32','SP32','LEFR')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CTURB',CTURB,'NONE','TKEL')
-CALL TEST_NAM_VAR(ILUOUT,'CRAD',CRAD,'NONE','FIXE','ECMW',&
-#ifdef MNH_ECRAD
-                 'ECRA',&
-#endif
-                 'TOPA')
-CALL TEST_NAM_VAR(ILUOUT,'CCLOUD',CCLOUD,'NONE','REVE','KESS',  &
-      & 'ICE3','ICE4','C2R2','C3R5','KHKO','LIMA')
-CALL TEST_NAM_VAR(ILUOUT,'CDCONV',CDCONV,'NONE','KAFR')
-CALL TEST_NAM_VAR(ILUOUT,'CSCONV',CSCONV,'NONE','KAFR','EDKF')
-CALL TEST_NAM_VAR(ILUOUT,'CELEC',CELEC,'NONE','ELE3','ELE4')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CAER',CAER,'TANR','TEGE','SURF','NONE')
-CALL TEST_NAM_VAR(ILUOUT,'CAOP',CAOP,'CLIM','EXPL')
-CALL TEST_NAM_VAR(ILUOUT,'CLW',CLW,'RRTM','MORC')
-CALL TEST_NAM_VAR(ILUOUT,'CEFRADL',CEFRADL,'PRES','OCLN','MART','C2R2','LIMA')
-CALL TEST_NAM_VAR(ILUOUT,'CEFRADI',CEFRADI,'FX40','LIOU','SURI','C3R5','LIMA')
-CALL TEST_NAM_VAR(ILUOUT,'COPWLW',COPWLW,'SAVI','SMSH','LILI','MALA')
-CALL TEST_NAM_VAR(ILUOUT,'COPILW',COPILW,'FULI','EBCU','SMSH','FU98')
-CALL TEST_NAM_VAR(ILUOUT,'COPWSW',COPWSW,'SLIN','FOUQ','MALA')
-CALL TEST_NAM_VAR(ILUOUT,'COPISW',COPISW,'FULI','EBCU','FU96')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CLBCX(1)',CLBCX(1),'CYCL','WALL','OPEN')
-CALL TEST_NAM_VAR(ILUOUT,'CLBCX(2)',CLBCX(2),'CYCL','WALL','OPEN')
-CALL TEST_NAM_VAR(ILUOUT,'CLBCY(1)',CLBCY(1),'CYCL','WALL','OPEN')
-CALL TEST_NAM_VAR(ILUOUT,'CLBCY(2)',CLBCY(2),'CYCL','WALL','OPEN')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CTURBDIM',CTURBDIM,'1DIM','3DIM')
-CALL TEST_NAM_VAR(ILUOUT,'CTURBLEN',CTURBLEN,'DELT','BL89','RM17','DEAR','BLKR','ADAP')
-CALL TEST_NAM_VAR(ILUOUT,'CTOM',CTOM,'NONE','TM06')
-CALL TEST_NAM_VAR(ILUOUT,'CSUBG_AUCV',CSUBG_AUCV,'NONE','CLFR','SIGM','PDF','ADJU')
-CALL TEST_NAM_VAR(ILUOUT,'CSUBG_AUCV_RI',CSUBG_AUCV_RI,'NONE','CLFR','ADJU')
-CALL TEST_NAM_VAR(ILUOUT,'CCONDENS',CCONDENS,'CB02','GAUS')
-CALL TEST_NAM_VAR(ILUOUT,'CLAMBDA3',CLAMBDA3,'CB','NONE')
-CALL TEST_NAM_VAR(ILUOUT,'CSUBG_MF_PDF',CSUBG_MF_PDF,'NONE','TRIANGLE')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CCH_TDISCRETIZATION',CCH_TDISCRETIZATION, &
-                 'SPLIT     ','CENTER    ','LAGGED    ')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CCONF',CCONF,'START','RESTA')
-CALL TEST_NAM_VAR(ILUOUT,'CEQNSYS',CEQNSYS,'LHE','DUR','MAE')
-CALL TEST_NAM_VAR(ILUOUT,'CSPLIT',CSPLIT,'BSPLITTING','XSPLITTING','YSPLITTING')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CBUTYPE',CBUTYPE,'NONE','CART','MASK')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CRELAX_HEIGHT_TYPE',CRELAX_HEIGHT_TYPE,'FIXE','THGR')
-!
-CALL TEST_NAM_VAR(ILUOUT,'CLES_NORM_TYPE',CLES_NORM_TYPE,'NONE','CONV','EKMA','MOBU')
-CALL TEST_NAM_VAR(ILUOUT,'CBL_HEIGHT_DEF',CBL_HEIGHT_DEF,'TKE','KE','WTV','FRI','DTH')
-CALL TEST_NAM_VAR(ILUOUT,'CTURBLEN_CLOUD',CTURBLEN_CLOUD,'NONE','DEAR','DELT','BL89')
-!
-!   The test on the mass flux scheme for shallow convection
-!
-CALL TEST_NAM_VAR(ILUOUT,'CMF_UPDRAFT',CMF_UPDRAFT,'NONE','EDKF','RHCJ')
-CALL TEST_NAM_VAR(ILUOUT,'CMF_CLOUD',CMF_CLOUD,'NONE','STAT','DIRE')
-!
-!   The test on the CSOLVER name is made elsewhere
-!
-CALL TEST_NAM_VAR(ILUOUT,'CPRISTINE_ICE',CPRISTINE_ICE,'PLAT','COLU','BURO')
-CALL TEST_NAM_VAR(ILUOUT,'CSEDIM',CSEDIM,'SPLI','STAT','NONE')
-IF( CCLOUD == 'C3R5' ) THEN
-  CALL TEST_NAM_VAR(ILUOUT,'CPRISTINE_ICE_C1R3',CPRISTINE_ICE_C1R3, &
-                                                'PLAT','COLU','BURO')
-  CALL TEST_NAM_VAR(ILUOUT,'CHEVRIMED_ICE_C1R3',CHEVRIMED_ICE_C1R3, &
-                                                'GRAU','HAIL')
-END IF
-!
-IF( CCLOUD == 'LIMA' ) THEN
-  CALL TEST_NAM_VAR(ILUOUT,'CPRISTINE_ICE_LIMA',CPRISTINE_ICE_LIMA, &
-                                                'PLAT','COLU','BURO')
-  CALL TEST_NAM_VAR(ILUOUT,'CHEVRIMED_ICE_LIMA',CHEVRIMED_ICE_LIMA, &
-                                                'GRAU','HAIL')
-END IF
-IF(LBLOWSNOW) THEN
-       CALL TEST_NAM_VAR(ILUOUT,'CSNOWSEDIM',CSNOWSEDIM,'NONE','MITC','CARR','TABC')
-       IF (XALPHA_SNOW .NE. 3 .AND. CSNOWSEDIM=='TABC') THEN
-         WRITE(ILUOUT,*) '*****************************************'
-         WRITE(ILUOUT,*) '* XALPHA_SNW must be set to 3 when                '
-         WRITE(ILUOUT,*) '* CSNOWSEDIM = TABC                                 '
-         WRITE(ILUOUT,*) '* Update the look-up table in BLOWSNOW_SEDIM_LKT1D    '
-         WRITE(ILUOUT,*) '* to use TABC with a different value of XEMIALPHA_SNW'
-         WRITE(ILUOUT,*) '*****************************************'
-         !callabortstop
-         CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-       ENDIF
-END IF
-!
-!-------------------------------------------------------------------------------!
-!*       2.    FIRST INITIALIZATIONS
-!              ---------------------
-!
-!*       2.1   Time step in gridnesting case
-!
-IF (KMI /= 1 .AND. NDAD(KMI) /= KMI)  THEN
-  XTSTEP = PTSTEP_ALL(NDAD(KMI)) / NDTRATIO(KMI)
-END IF
-PTSTEP_ALL(KMI) = XTSTEP
-!
-!*       2.2    Fill the global configuration module 
-!
-! Check coherence between the microphysical scheme and water species and 
-!initialize the logicals LUSERn 
-!
-SELECT CASE ( CCLOUD )
-  CASE ( 'NONE' )
-    IF (.NOT. ( (.NOT. LUSERC) .AND. (.NOT. LUSERR) .AND. (.NOT. LUSERI) .AND. &
-                (.NOT. LUSERS) .AND. (.NOT. LUSERG) .AND. (.NOT. LUSERH)       &
-              ) .AND. CPROGRAM=='MESONH' )  THEN
-!
-      LUSERC=.FALSE.
-      LUSERR=.FALSE.; LUSERI=.FALSE.
-      LUSERS=.FALSE.; LUSERG=.FALSE. 
-      LUSERH=.FALSE.
-!
-    END IF
-!
-    IF (CSUBG_AUCV == 'SIGM')  THEN
-!
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE THE SUBGRID AUTOCONVERSION SCHEME '                                         
-      WRITE(UNIT=ILUOUT,FMT=*) ' WITHOUT MICROPHYSICS'                         
-      WRITE(UNIT=ILUOUT,FMT=*) ' CSUBG_AUCV IS PUT TO "NONE"'                            
-!
-      CSUBG_AUCV = 'NONE'
-!
-    END IF
-!
-  CASE ( 'REVE' ) 
-    IF (.NOT. ( LUSERV .AND. LUSERC .AND. (.NOT. LUSERR) .AND. (.NOT. LUSERI) &
-               .AND. (.NOT. LUSERS) .AND. (.NOT. LUSERG) .AND. (.NOT. LUSERH) &
-              ) )  THEN
-!
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A REVERSIBLE MICROPHYSICAL "   ,&
-      &" SCHEME. YOU WILL ONLY HAVE VAPOR AND CLOUD WATER ",/,                 &
-      &" LUSERV AND LUSERC ARE TO TRUE AND THE OTHERS TO FALSE ")') 
-!
-      LUSERV=.TRUE. ; LUSERC=.TRUE.
-      LUSERR=.FALSE.; LUSERI=.FALSE.
-      LUSERS=.FALSE.; LUSERG=.FALSE. 
-      LUSERH=.FALSE.
-    END IF
-!
-    IF (CSUBG_AUCV == 'SIGM')  THEN
-!
-      WRITE(UNIT=ILUOUT,FMT=9003) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH A REVERSIBLE MICROPHYSICAL SCHEME '
-      WRITE(UNIT=ILUOUT,FMT=*) ' AND THE SUBGRID AUTOCONVERSION SCHEME '       
-      WRITE(UNIT=ILUOUT,FMT=*) 'BUT YOU DO NOT HAVE RAIN in the "REVE" SCHEME'
-      WRITE(UNIT=ILUOUT,FMT=*) ' CSUBG_AUCV IS PUT TO "NONE"'                            
-!
-      CSUBG_AUCV = 'NONE'
-!
-    END IF
-!
-  CASE ( 'KESS' )
-    IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. (.NOT. LUSERI) .AND. &
-              (.NOT. LUSERS) .AND. (.NOT. LUSERG) .AND. (.NOT. LUSERH)      &
-              ) )  THEN
-!
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A KESSLER MICROPHYSICAL "   , &
-      &" SCHEME. YOU WILL ONLY HAVE VAPOR, CLOUD WATER AND RAIN ",/,           &
-      &" LUSERV, LUSERC AND LUSERR ARE SET TO TRUE AND THE OTHERS TO FALSE ")') 
-!
-      LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
-      LUSERI=.FALSE.; LUSERS=.FALSE.
-      LUSERG=.FALSE.; LUSERH=.FALSE.
-    END IF
-!
-    IF (CSUBG_AUCV == 'SIGM')  THEN
-!
-      WRITE(UNIT=ILUOUT,FMT=9003) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH A KESSLER MICROPHYSICAL SCHEME '
-      WRITE(UNIT=ILUOUT,FMT=*) ' AND THE SUBGRID AUTOCONVERSION SCHEME USING'
-      WRITE(UNIT=ILUOUT,FMT=*) 'SIGMA_RC.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'SET CSUBG_AUCV TO "CLFR" or "NONE"  OR CCLOUD TO "ICE3"'
-!
- !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-    END IF
-!
-  CASE ( 'ICE3' )
-    IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. LUSERI .AND. LUSECI &
-                       .AND. LUSERS .AND. LUSERG .AND. (.NOT. LUSERH))     &
-                .AND. CPROGRAM=='MESONH' )  THEN
-      !
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE THE ice3 SIMPLE MIXED PHASE'
-      WRITE(UNIT=ILUOUT,FMT=*) 'MICROPHYSICAL SCHEME. YOU WILL ONLY HAVE VAPOR, CLOUD WATER,'
-      WRITE(UNIT=ILUOUT,FMT=*) 'RAIN WATER, CLOUD ICE (MIXING RATIO AND CONCENTRATION)'
-      WRITE(UNIT=ILUOUT,FMT=*) 'SNOW-AGGREGATES AND GRAUPELN.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'LUSERV,LUSERC,LUSERR,LUSERI,LUSECI,LUSERS,LUSERG ARE SET TO TRUE'
-      WRITE(UNIT=ILUOUT,FMT=*) 'AND LUSERH TO FALSE'
-!
-      LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
-      LUSERI=.TRUE. ; LUSECI=.TRUE.
-      LUSERS=.TRUE. ; LUSERG=.TRUE. 
-      LUSERH=.FALSE.
-    END IF    
-!
-    IF (CSUBG_AUCV == 'SIGM' .AND. .NOT. LSUBG_COND)  THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE SUBGRID AUTOCONVERSION SCHEME'
-      WRITE(UNIT=ILUOUT,FMT=*) ' WITHOUT THE SUBGRID CONDENSATION SCHEME.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: CSUBG_AUCV is SET to NONE' 
-      CSUBG_AUCV='NONE' 
-    END IF
-!
-    IF (CSUBG_AUCV == 'CLFR' .AND. CSCONV /= 'EDKF')  THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE SUBGRID AUTOCONVERSION SCHEME'
-      WRITE(UNIT=ILUOUT,FMT=*) 'WITH THE CONVECTIVE CLOUD FRACTION WITHOUT EDKF'
-      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: CSUBG_AUCV is SET to NONE' 
-      CSUBG_AUCV='NONE' 
-    END IF
-!
-  CASE ( 'ICE4' )
-    IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. LUSERI .AND. LUSECI &
-                       .AND. LUSERS .AND. LUSERG .AND. LUSERH)             &
-                .AND. CPROGRAM=='MESONH' )  THEN
-      !
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE THE ice4 SIMPLE MIXED PHASE'
-      WRITE(UNIT=ILUOUT,FMT=*) 'MICROPHYSICAL SCHEME. YOU WILL ONLY HAVE VAPOR, CLOUD WATER,'
-      WRITE(UNIT=ILUOUT,FMT=*) 'RAIN WATER, CLOUD ICE (MIXING RATIO AND CONCENTRATION)'
-      WRITE(UNIT=ILUOUT,FMT=*) 'SNOW-AGGREGATES, GRAUPELN AND HAILSTONES.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'LUSERV,LUSERC,LUSERR,LUSERI,LUSECI,LUSERS,LUSERG'
-      WRITE(UNIT=ILUOUT,FMT=*) 'AND LUSERH ARE SET TO TRUE'
-!
-      LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
-      LUSERI=.TRUE. ; LUSECI=.TRUE.
-      LUSERS=.TRUE. ; LUSERG=.TRUE. ; LUSERH=.TRUE.
-    END IF
-!
-    IF (CSUBG_AUCV /= 'NONE' .AND. .NOT. LSUBG_COND)  THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE SUBGRID AUTOCONVERSION SCHEME'
-      WRITE(UNIT=ILUOUT,FMT=*) ' WITHOUT THE SUBGRID CONDENSATION SCHEME.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: CSUBG_AUCV is SET to NONE' 
-      CSUBG_AUCV='NONE' 
-    END IF
-!
-  CASE ( 'C2R2','C3R5', 'KHKO' )
-    IF (( EPARAM_CCN == 'XXX') .OR. (EINI_CCN  == 'XXX')) THEN
-          WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A 2-MOMENT MICROPHYSICAL ",    &
-         &" SCHEME BUT YOU DIDNT FILL CORRECTLY NAM_PARAM_C2R2", &
-         &" YOU HAVE TO FILL HPARAM_CCN and HINI_CCN ")')
- !callabortstop
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-    END IF
-    IF (HCLOUD == 'NONE') THEN
-      CGETCLOUD = 'SKIP'
-    ELSE IF (HCLOUD == 'REVE' ) THEN
-      CGETCLOUD = 'INI1'
-    ELSE IF (HCLOUD == 'KESS' ) THEN
-      CGETCLOUD = 'INI2'
-    ELSE IF (HCLOUD == 'ICE3' ) THEN
-      IF (CCLOUD == 'C3R5') THEN
-        CGETCLOUD = 'INI2'
-      ELSE
-        WRITE(UNIT=ILUOUT,FMT=9003) KMI
-        WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE WARM MICROPHYSICAL ",    &
-        &" SCHEME BUT YOU WERE USING THE ICE3 SCHEME PREVIOUSLY.",/,          &
-        &" AS THIS IS A LITTLE BIT STUPID IT IS NOT AUTHORIZED !!!")')
- !callabortstop
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-      END IF
-    ELSE
-      CGETCLOUD = 'READ' ! This is automatically done
-    END IF
-!
-    IF ((CCLOUD == 'C2R2' ).OR. (CCLOUD == 'KHKO' )) THEN
-      IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. (.NOT. LUSERI) .AND. &
-                (.NOT. LUSERS) .AND. (.NOT. LUSERG) .AND. (.NOT. LUSERH)      &
-                ) )  THEN
-        WRITE(UNIT=ILUOUT,FMT=9002) KMI
-        WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE C2R2 MICROPHYSICAL ",    &
-        &" SCHEME. YOU WILL ONLY HAVE VAPOR, CLOUD WATER AND RAIN ",/,        &
-        &"LUSERV, LUSERC AND LUSERR ARE SET TO TRUE AND THE OTHERS TO FALSE ")')
-!
-        LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
-        LUSERI=.FALSE.; LUSERS=.FALSE.
-        LUSERG=.FALSE.; LUSERH=.FALSE.
-      END IF
-    ELSE IF (CCLOUD == 'C3R5') THEN
-      IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. LUSERI .AND. &
-                  LUSERS .AND. LUSERG .AND. (.NOT. LUSERH)            &
-                ) )  THEN
-        WRITE(UNIT=ILUOUT,FMT=9002) KMI
-        WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE C3R5 MICROPHYS. SCHEME.",&
-        &" YOU WILL HAVE VAPOR, CLOUD WATER/ICE, RAIN, SNOW AND GRAUPEL ",/,  &
-        &"LUSERV, LUSERC, LUSERR, LUSERI, LUSERS, LUSERG ARE SET TO TRUE")' )
-!
-        LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
-        LUSERI=.TRUE. ; LUSECI=.TRUE.
-        LUSERS=.TRUE. ; LUSERG=.TRUE.
-        LUSERH=.FALSE.
-      END IF
-    ELSE IF (CCLOUD == 'LIMA') THEN
-      IF (.NOT. ( LUSERV .AND. LUSERC .AND. LUSERR .AND. LUSERI .AND. &
-                  LUSERS .AND. LUSERG .AND. (.NOT. LUSERH)            &
-                ) )  THEN
-        WRITE(UNIT=ILUOUT,FMT=9002) KMI
-        WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE LIMA MICROPHYS. SCHEME.",&
-        &" YOU WILL HAVE VAPOR, CLOUD WATER/ICE, RAIN, SNOW AND GRAUPEL ",/,  &
-        &"LUSERV, LUSERC, LUSERR, LUSERI, LUSERS, LUSERG ARE SET TO TRUE")' )
-!
-        LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
-        LUSERI=.TRUE. ; LUSECI=.TRUE.        
-        LUSERS=.TRUE. ; LUSERG=.TRUE. 
-        LUSERH=.FALSE.
-      END IF
-    END IF
-!
-    IF (LSUBG_COND)  THEN
-      WRITE(UNIT=ILUOUT,FMT=9003) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH THE SIMPLE MIXED PHASE'
-      WRITE(UNIT=ILUOUT,FMT=*) 'MICROPHYS. SCHEME AND THE SUBGRID COND. SCHEME.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'SET LSUBG_COND TO FALSE OR CCLOUD TO "REVE", "KESS"' 
- !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-    END IF
-!
-    IF ( CEFRADL /= 'C2R2') THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) ' YOU DID NOT CHOOSE CEFRADL=C2R2 FOR RADIATION'
-      WRITE(UNIT=ILUOUT,FMT=*) ' IT IS ADVISED TO USE CEFRADL=C2R2 '                       
-      WRITE(UNIT=ILUOUT,FMT=*) ' WITH A 2-MOMENT MICROPHYSICAL SCHEME'                     
-    END IF
-!
-    IF ( CCLOUD == 'C3R5' .AND. CEFRADI /= 'C3R5') THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) ' YOU DID NOT CHOOSE CEFRADI=C3R5 FOR RADIATION'
-      WRITE(UNIT=ILUOUT,FMT=*) ' IT IS ADVISED TO USE CEFRADI=C3R5 '                       
-      WRITE(UNIT=ILUOUT,FMT=*) ' WITH A 2-MOMENT MICROPHYSICAL SCHEME'                     
-    END IF
-!
-   IF ( WALPHAC /= 3.0 .OR. WNUC /= 2.0) THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'IT IS ADVISED TO USE XALPHAC=3. and XNUC=2.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'FOR STRATOCUMULUS WITH KHKO SCHEME. '
-   END IF
-!
-   IF ( CEFRADL /= 'C2R2') THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) ' YOU DID NOT CHOOSE CEFRADL=C2R2 FOR RADIATION'
-      WRITE(UNIT=ILUOUT,FMT=*) ' IT IS ADVISED TO USE CEFRADL=C2R2 '   
-      WRITE(UNIT=ILUOUT,FMT=*) ' WITH A 2-MOMENT MICROPHYSICAL SCHEME'
-   END IF
-!
-  CASE ( 'LIMA')
-    IF ((LACTI .AND. FINI_CCN  == 'XXX')) THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A 2-MOMENT MICROPHYSICAL ",  &
-           &" SCHEME BUT YOU DIDNT FILL CORRECTLY NAM_PARAM_LIMA",             &
-           &" YOU HAVE TO FILL FINI_CCN ")')
-      call Print_msg( NVERB_FATAL, 'GEN', 'READ_EXSEG_n', '' )
-    END IF
-!
-    IF(LACTI .AND. NMOD_CCN == 0) THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT='("ACTIVATION OF AEROSOL PARTICLES IS NOT ",      &
-           &"POSSIBLE IF NMOD_CCN HAS VALUE ZERO. YOU HAVE TO SET AN UPPER ", &
-           &"VALUE OF NMOD_CCN IN ORDER TO USE LIMA WARM ACTIVATION SCHEME.")') 
-      call Print_msg( NVERB_FATAL, 'GEN', 'READ_EXSEG_n', '' )
-    END IF
-!
-    IF(LNUCL .AND. NMOD_IFN == 0 .AND. (.NOT.LMEYERS)) THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT='("NUCLEATION BY DEPOSITION AND CONTACT IS NOT ", &
-           &"POSSIBLE IF NMOD_IFN HAS VALUE ZERO. YOU HAVE TO SET AN UPPER",  &
-           &"VALUE OF NMOD_IFN IN ORDER TO USE LIMA COLD NUCLEATION SCHEME.")') 
-    END IF
-!
-    IF (HCLOUD == 'NONE') THEN
-      CGETCLOUD = 'SKIP'
-    ELSE IF (HCLOUD == 'REVE' ) THEN
-      CGETCLOUD = 'INI1'
-    ELSE IF (HCLOUD == 'KESS' ) THEN
-      CGETCLOUD = 'INI2'
-    ELSE IF (HCLOUD == 'ICE3' ) THEN
-      CGETCLOUD = 'INI2'
-    ELSE
-      CGETCLOUD = 'READ' ! This is automatically done
-    END IF
-!
-    IF (LWARM) THEN
-      LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
-      LUSERI=.FALSE.; LUSERS=.FALSE. ; LUSERG=.FALSE.; LUSERH=.FALSE.
-    END IF
-!
-    IF (LCOLD) THEN
-      LUSERV=.TRUE. ; LUSERC=.TRUE. ; LUSERR=.TRUE.
-      LUSERI=.TRUE. ; LUSERS=.TRUE. ; LUSERG=.TRUE.
-      LUSERH=LHAIL
-    END IF
-!
-!!$    IF (LSUBG_COND .AND. LCOLD)  THEN
-!!$      WRITE(UNIT=ILUOUT,FMT=9003) KMI
-!!$      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH THE SIMPLE MIXED PHASE'
-!!$      WRITE(UNIT=ILUOUT,FMT=*) 'MICROPHYS. SCHEME AND THE SUBGRID COND. SCHEME.'
-!!$      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LSUBG_COND '
-!!$      WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "REVE", "KESS" '
-!!$ !callabortstop
-!!$      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-!!$    END IF 
-!
-    IF (CCLOUD == 'LIMA' .AND. LSUBG_COND .AND. (.NOT. LPTSPLIT)) THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU MUST USE LPTSPLIT=T with CCLOUD=LIMA'
-      WRITE(UNIT=ILUOUT,FMT=*) 'AND LSUBG_COND '
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','use LPTSPLIT=T with LIMA and LSUBG_COND=T')
-    END IF
-!    
-    IF ( XALPHAC /= 3.0 .OR. XNUC /= 2.0) THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) 'IT IS ADVISED TO USE XALPHAC=3. and XNUC=2.'
-      WRITE(UNIT=ILUOUT,FMT=*) 'FOR STRATOCUMULUS. '
-    END IF
-!
-    IF ( CEFRADL /= 'LIMA') THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) ' YOU DID NOT CHOOSE CEFRADL=LIMA FOR RADIATION'
-      WRITE(UNIT=ILUOUT,FMT=*) ' IT IS ADVISED TO USE CEFRADL=LIMA '
-      WRITE(UNIT=ILUOUT,FMT=*) ' WITH A 2-MOMENT MICROPHYSICAL SCHEME "LIMA"'
-    END IF
-
-    IF (LUSECHEM )  THEN
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH LIMA MICROPHYS. SCHEME AND CHEMISTRY'
-      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LUSECHEM '
-      WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "ICE3" '
- !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-    END IF 
-    IF (LDUST )  THEN
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH LIMA MICROPHYS. SCHEME AND DUSTS '
-      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LDUST '
-      WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "ICE3" '
- !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-    END IF   
-  IF (LSALT )  THEN
-      WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH LIMA MICROPHYS. SCHEME AND SEA SALTS '
-      WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LSALT '
-      WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "ICE3" '
- !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-    END IF 
-!
-END SELECT
-!
-LUSERV_G(KMI) = LUSERV
-LUSERC_G(KMI) = LUSERC
-LUSERR_G(KMI) = LUSERR
-LUSERI_G(KMI) = LUSERI
-LUSERS_G(KMI) = LUSERS
-LUSERG_G(KMI) = LUSERG
-LUSERH_G(KMI) = LUSERH
-LUSETKE(KMI) = (CTURB /= 'NONE')
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.3     Chemical and NSV_* variables initializations
-!
-CALL UPDATE_NAM_IBM_PARAMN
-CALL UPDATE_NAM_RECYCL_PARAMN
-CALL UPDATE_NAM_PARAMN
-CALL UPDATE_NAM_DYNN
-CALL UPDATE_NAM_CONFN
-!
-IF (LORILAM .AND. .NOT. LUSECHEM) THEN
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU CANNOT USE ORILAM AEROSOL SCHEME WITHOUT  '
-  WRITE(ILUOUT,FMT=*) 'CHEMICAL GASEOUS CHEMISTRY                    '
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LUSECHEM IS SET TO TRUE    '
-  LUSECHEM=.TRUE.
-END IF
-!
-IF (LUSECHAQ.AND.(.NOT.LUSECHEM))  THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE AQUEOUS PHASE CHEMISTRY'
-  WRITE(UNIT=ILUOUT,FMT=*) 'BUT THE CHEMISTRY IS NOT ACTIVATED'
-  WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHEM TO TRUE IF YOU WANT REALLY USE CHEMISTRY' 
-  WRITE(UNIT=ILUOUT,FMT=*) 'OR SET LUSECHAQ TO FALSE IF YOU DO NOT WANT USE IT' 
- !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-IF (LUSECHAQ.AND.(.NOT.LUSERC).AND.CPROGRAM=='MESONH')  THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE AQUEOUS PHASE CHEMISTRY'
-  WRITE(UNIT=ILUOUT,FMT=*) 'BUT CLOUD MICROPHYSICS IS NOT ACTIVATED'
-  WRITE(UNIT=ILUOUT,FMT=*) 'LUSECHAQ IS SET TO FALSE' 
-  LUSECHAQ = .FALSE.
-END IF
-IF (LUSECHAQ.AND.CCLOUD(1:3) == 'ICE'.AND. .NOT. LUSECHIC) THEN
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE AQUEOUS PHASE CHEMISTRY'
-  WRITE(UNIT=ILUOUT,FMT=*) 'WITH MIXED PHASE CLOUD MICROPHYSICS'
-  WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHIC TO TRUE IF YOU WANT TO ACTIVATE'
-  WRITE(UNIT=ILUOUT,FMT=*) 'ICE PHASE CHEMICAL SPECIES'
-  IF (LCH_RET_ICE) THEN
-    WRITE(UNIT=ILUOUT,FMT=*) 'LCH_RET_ICE TRUE MEANS ALL SOLUBLE'
-    WRITE(UNIT=ILUOUT,FMT=*) 'GASES ARE RETAINED IN ICE PHASE'
-    WRITE(UNIT=ILUOUT,FMT=*) 'WHEN SUPERCOOLED WATER FREEZES'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=*) 'LCH_RET_ICE FALSE MEANS ALL SOLUBLE'
-    WRITE(UNIT=ILUOUT,FMT=*) 'GASES GO BACK TO THE GAS PHASE WHEN'
-    WRITE(UNIT=ILUOUT,FMT=*) 'SUPERCOOLED WATER FREEZES'
-  ENDIF
-ENDIF
-IF (LUSECHIC.AND. .NOT. CCLOUD(1:3) == 'ICE'.AND.CPROGRAM=='MESONH') THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE ICE PHASE CHEMISTRY'
-  WRITE(UNIT=ILUOUT,FMT=*) 'BUT MIXED PHASE CLOUD MICROPHYSICS IS NOT ACTIVATED'
-  WRITE(UNIT=ILUOUT,FMT=*) 'LUSECHIC IS SET TO FALSE'  
-  LUSECHIC= .FALSE.
-ENDIF
-IF (LCH_PH.AND. (.NOT. LUSECHAQ)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'DIAGNOSTIC PH COMPUTATION IS ACTIVATED'
-  WRITE(UNIT=ILUOUT,FMT=*) 'BUT AQUEOUS PHASE CHEMISTRY IS NOT ACTIVATED'
-  WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHAQ TO TRUE IF YOU WANT TO ACTIVATE IT'
-  WRITE(UNIT=ILUOUT,FMT=*) 'LCH_PH IS SET TO FALSE'
-  LCH_PH= .FALSE.
-ENDIF
-IF (LUSECHIC.AND.(.NOT.LUSECHAQ))  THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE ICE PHASE CHEMISTRY'
-  WRITE(UNIT=ILUOUT,FMT=*) 'BUT THE AQUEOUS PHASE CHEMISTRY IS NOT ACTIVATED'
-  WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHAQ TO TRUE IF YOU WANT REALLY USE CLOUD CHEMISTRY'
-  WRITE(UNIT=ILUOUT,FMT=*) 'OR SET LUSECHIC TO FALSE IF YOU DO NOT WANT USE IT'
-!callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-IF ((LUSECHIC).AND.(LCH_RET_ICE)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE RETENTION OF SOLUBLE GASES IN ICE'
-  WRITE(UNIT=ILUOUT,FMT=*) 'BUT THE ICE PHASE CHEMISTRY IS ACTIVATED'
-  WRITE(UNIT=ILUOUT,FMT=*) 'FLAG LCH_RET_ICE IS ONLY USES WHEN LUSECHIC IS SET'
-  WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE IE NO CHEMICAL SPECIES IN ICE' 
-ENDIF
-!
-CALL UPDATE_NAM_CH_MNHCN
-CALL INI_NSV(KMI)
-!
-! From this point, all NSV* variables contain valid values for model KMI
-! 
-DO JSV = 1,NSV
- LUSESV(JSV,KMI) = .TRUE.
-END DO
-!
-IF ( CAOP=='EXPL' .AND. .NOT.LDUST .AND. .NOT.LORILAM          &
-                  .AND. .NOT.LSALT .AND. .NOT.(CCLOUD=='LIMA') ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT=*) ' YOU WANT TO USE EXPLICIT AEROSOL OPTICAL '       
-      WRITE(UNIT=ILUOUT,FMT=*) 'PROPERTIES BUT YOU DONT HAVE DUST OR '            
-      WRITE(UNIT=ILUOUT,FMT=*) 'AEROSOL OR SALT THEREFORE CAOP=CLIM'            
-      CAOP='CLIM'
-END IF      
-!-------------------------------------------------------------------------------
-!
-!*       3.    CHECK COHERENCE BETWEEN EXSEG VARIABLES AND FMFILE ATTRIBUTES
-!              -------------------------------------------------------------
-!
-!
-!*       3.1  Turbulence variable 
-!
-IF ((CTURB /= 'NONE').AND.(HTURB == 'NONE')) THEN
-  CGETTKET ='INIT'
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT=*)'YOU WANT TO USE TURBULENCE KINETIC ENERGY TKE'
-  WRITE(UNIT=ILUOUT,FMT=*)'WHEREAS IT  IS NOT IN INITIAL FMFILE'
-  WRITE(UNIT=ILUOUT,FMT=*)'TKE WILL BE INITIALIZED TO ZERO'
-ELSE 
-  IF (CTURB /= 'NONE') THEN 
-    CGETTKET ='READ'
-    IF ((CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETTKET='INIT' 
-  ELSE
-   CGETTKET ='SKIP'
-  END IF
-END IF
-!
-!
-IF ((CTOM == 'TM06').AND.(HTOM /= 'TM06')) THEN
-  CGETBL_DEPTH ='INIT'
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT=*)'YOU WANT TO USE BL DEPTH FOR THIRD ORDER MOMENTS'
-  WRITE(UNIT=ILUOUT,FMT=*)'WHEREAS IT IS NOT IN INITIAL FMFILE'
-  WRITE(UNIT=ILUOUT,FMT=*)'IT WILL BE INITIALIZED TO ZERO'
-ELSE 
-  IF (CTOM == 'TM06') THEN 
-    CGETBL_DEPTH ='READ'
-  ELSE 
-    CGETBL_DEPTH ='SKIP'
-  END IF
-END IF
-!
-IF (LRMC01 .AND. .NOT. ORMC01) THEN
-  CGETSBL_DEPTH ='INIT'
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT=*)'YOU WANT TO USE SBL DEPTH FOR RMC01'
-  WRITE(UNIT=ILUOUT,FMT=*)'WHEREAS IT IS NOT IN INITIAL FMFILE'
-  WRITE(UNIT=ILUOUT,FMT=*)'IT WILL BE INITIALIZED TO ZERO'
-ELSE 
-  IF (LRMC01) THEN 
-    CGETSBL_DEPTH ='READ'
-  ELSE 
-    CGETSBL_DEPTH ='SKIP'
-  END IF
-END IF
-!
-!
-!*       3.2  Moist  variables 
-!
-IF (LUSERV.AND. (.NOT.OUSERV)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE VAPOR VARIABLE Rv WHEREAS IT  ", &
-                  & "IS NOT IN INITIAL FMFILE",/,                           &
-                  & "Rv WILL BE INITIALIZED TO ZERO")')
-  CGETRVT='INIT'
-ELSE                                                                
-  IF (LUSERV) THEN
-    CGETRVT='READ'
-  ELSE
-    CGETRVT='SKIP'
-  END IF
-END IF
-!
-IF (LUSERC.AND. (.NOT.OUSERC)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE CLOUD VARIABLE Rc WHEREAS IT ",  &
-                 &   " IS NOT IN INITIAL FMFILE",/,                        &
-                 &   "Rc WILL BE INITIALIZED TO ZERO")')
-  CGETRCT='INIT'
-ELSE
-  IF (LUSERC) THEN
-    CGETRCT='READ'
-!   IF(CCONF=='START') CGETRCT='INIT' 
-  ELSE
-    CGETRCT='SKIP'
-  END IF
-END IF
-!
-IF (LUSERR.AND. (.NOT.OUSERR)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE RAIN VARIABLE Rr WHEREAS IT ", &
-                  &  "IS NOT IN INITIAL FMFILE",/,                     &
-                  &  " Rr WILL BE INITIALIZED TO ZERO")')
- 
-  CGETRRT='INIT'
-ELSE
-  IF (LUSERR) THEN
-    CGETRRT='READ'
-!   IF( (CCONF=='START').AND. CPROGRAM /= 'DIAG') CGETRRT='INIT' 
-  ELSE
-    CGETRRT='SKIP'
-  END IF
-END IF
-!
-IF (LUSERI.AND. (.NOT.OUSERI)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE ICE VARIABLE Ri WHEREAS IT ", &
-               &    "IS NOT IN INITIAL FMFILE",/,                      &
-               &     " Ri WILL BE INITIALIZED TO ZERO")')
-  CGETRIT='INIT'
-ELSE
-  IF (LUSERI) THEN
-    CGETRIT='READ'
-!   IF(CCONF=='START') CGETRIT='INIT' 
-  ELSE
-    CGETRIT='SKIP'
-  END IF
-END IF
-!
-IF (LUSECI.AND. (.NOT.OUSECI)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE ICE CONC. VARIABLE Ci WHEREAS IT ",&
-               &          "IS NOT IN INITIAL FMFILE",/,                       &
-               &          "   Ci WILL BE INITIALIZED TO ZERO")')
-  CGETCIT='INIT'
-ELSE
-  IF (LUSECI) THEN
-    CGETCIT='READ'
-  ELSE
-    CGETCIT='SKIP'
-  END IF
-END IF
-!
-IF (LUSERS.AND. (.NOT.OUSERS)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE SNOW VARIABLE Rs WHEREAS IT ",&
-                  &  "IS NOT IN INITIAL FMFILE",/,                       &
-                  &  " Rs WILL BE INITIALIZED TO ZERO")')
-  CGETRST='INIT'
-ELSE
-  IF (LUSERS) THEN
-    CGETRST='READ'
-!   IF ( (CCONF=='START').AND. CPROGRAM /= 'DIAG') CGETRST='INIT' 
-  ELSE
-    CGETRST='SKIP'
-  END IF
-END IF
-!
-IF (LUSERG.AND. (.NOT.OUSERG)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE GRAUPEL VARIABLE Rg WHEREAS ",&
-                   & " IT IS NOTIN INITIAL FMFILE",/,                    &
-                   & "Rg WILL BE INITIALIZED TO ZERO")')
-  CGETRGT='INIT'
-ELSE
-  IF (LUSERG) THEN
-    CGETRGT='READ'
-!   IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETRGT='INIT' 
-  ELSE
-    CGETRGT='SKIP'
-  END IF
-END IF
-!
-IF (LUSERH.AND. (.NOT.OUSERH)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE HAIL VARIABLE Rh WHEREAS",&
-                  &  "IT IS NOT IN INITIAL FMFILE",/,                &
-                  & " Rh WILL BE INITIALIZED TO ZERO")')
-   CGETRHT='INIT'
-ELSE
-  IF (LUSERH) THEN
-    CGETRHT='READ'
-!   IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETRHT='INIT' 
-  ELSE
-    CGETRHT='SKIP'
-  END IF
-END IF
-!
-IF (LUSERC.AND. (.NOT.OUSERC)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'THE CLOUD FRACTION WILL BE INITIALIZED ACCORDING'
-  WRITE(UNIT=ILUOUT,FMT=*) 'TO CLOUD MIXING RATIO VALUE OR SET TO 0'
-  CGETCLDFR = 'INIT'
-ELSE
-  IF ( LUSERC ) THEN
-    CGETCLDFR = 'READ'
-    IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETCLDFR='INIT' 
-  ELSE
-    CGETCLDFR = 'SKIP'
-  END IF
-END IF
-!
-IF(CTURBLEN=='RM17' .OR. CTURBLEN=='ADAP') THEN
-  XCEDIS=0.34
-ELSE
-  XCEDIS=0.84
-END IF
-!
-!*       3.3  Moist turbulence
-!
-IF ( LUSERC .AND. CTURB /= 'NONE' ) THEN
-  IF ( .NOT. (OUSERC .AND. HTURB /= 'NONE') ) THEN
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE MOIST TURBULENCE WHEREAS IT ",/, &
-                 &   " WAS NOT THE CASE FOR THE INITIAL FMFILE GENERATION",/, &
-                 &    "SRC AND SIGS ARE INITIALIZED TO 0")')
-    CGETSRCT ='INIT'
-    CGETSIGS ='INIT'
-  ELSE
-    CGETSRCT ='READ'
-    IF ( (CCONF=='START') .AND. CPROGRAM /= 'DIAG') CGETSRCT ='INIT'
-    CGETSIGS ='READ'
-  END IF
-ELSE
-  CGETSRCT ='SKIP'
-  CGETSIGS ='SKIP'
-END IF
-!
-IF(NMODEL_CLOUD==KMI .AND. CTURBLEN_CLOUD/='NONE') THEN
-  IF (CTURB=='NONE' .OR. .NOT.LUSERC) THEN
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO COMPUTE A MIXING LENGTH FOR CLOUD=", &
-                 &   A4,/, &
-                 &   ", WHEREAS YOU DO NOT SPECIFY A TURBULENCE SCHEME OR ",  &
-                 &   "USE OF RC,",/," CTURBLEN_CLOUD IS SET TO NONE")')       &
-                 CTURBLEN_CLOUD
-    CTURBLEN_CLOUD='NONE'
-  END IF
-  IF( XCEI_MIN > XCEI_MAX ) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("PROBLEM OF CEI LIMITS FOR CLOUD MIXING  ",/, &
-                 &   "LENGTH COMPUTATION: XCEI_MIN=",E9.3,", XCEI_MAX=",E9.3)')&
-                 XCEI_MIN,XCEI_MAX
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-END IF
-!
-IF ( LSIGMAS ) THEN
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE SIGMA_S FROM TURBULENCE SCHEME",/, &
-                 &   " IN ICE SUBGRID CONDENSATION, SO YOUR SIGMA_S"/, &
-                 &   " MIGHT BE SMALL ABOVE PBL DEPENDING ON LENGTH SCALE")')
-END IF
-!
-IF (LSUBG_COND .AND. CTURB=='NONE' ) THEN
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE SUBGRID CONDENSATION'
-  WRITE(UNIT=ILUOUT,FMT=*) ' WITHOUT TURBULENCE '                           
-  WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT ALLOWED: LSUBG_COND is SET to FALSE'
-  LSUBG_COND=.FALSE.
-END IF
-!
-IF (L1D .AND. CTURB/='NONE' .AND. CTURBDIM == '3DIM') THEN
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE 3D TURBULENCE IN 1D CONFIGURATION '
-  WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT POSSIBLE: CTURBDIM IS SET TO 1DIM'
-  CTURBDIM = '1DIM'
-END IF
-!
-!*       3.4  Additional scalar variables 
-!
-IF (NSV_USER == KSV_USER) THEN
-  DO  JS = 1,KSV_USER             ! to read all the variables in initial file 
-    CGETSVT(JS)='READ'            ! and to initialize them 
-!   IF(CCONF=='START')CGETSVT(JS)='INIT'       ! with  these values  
-  END DO
-ELSEIF (NSV_USER > KSV_USER) THEN
- IF (KSV_USER == 0) THEN
-    CGETSVT(1:NSV_USER)='INIT'
- ELSE
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE MORE ADDITIONAL SCALAR  " ,&
-  &" VARIABLES THAN THERE ARE IN INITIAL FMFILE",/,                  &
-  & "THE SUPPLEMENTARY VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-  DO  JS = 1,KSV_USER             ! to read all the variables in initial file 
-    CGETSVT(JS)='READ'            ! and to initialize them
-!   IF(CCONF=='START')CGETSVT(JS)='INIT'        ! with  these values
-  END DO
-  DO JS = KSV_USER+1, NSV_USER    ! to initialize to zero supplementary
-    CGETSVT(JS)='INIT'            ! initial file)
-  END DO
- END IF
-ELSE
-  WRITE(UNIT=ILUOUT,FMT=9000) KMI
-  WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE LESS ADDITIONAL SCALAR  " ,&
-  &" VARIABLES THAN THERE ARE IN INITIAL FMFILE")')
-  DO  JS = 1,NSV_USER             ! to read the first NSV_USER variables in initial file 
-    CGETSVT(JS)='READ'            ! and to initialize with these values
-!   IF(CCONF=='START') CGETSVT(JS)='INIT'  
-  END DO 
-  DO  JS = NSV_USER + 1, KSV_USER ! to skip the last (KSV_USER-NSV_USER) variables
-    CGETSVT(JS)='SKIP' 
-  END DO
-END IF
-!
-! C2R2 and KHKO SV case
-!
-IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') THEN 
-  IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' .OR. HCLOUD == 'KHKO') THEN
-    CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR C2R2 &
-         & (or KHKO) SCHEME IN INITIAL FMFILE",/,&
-         & "THE C2R2 (or KHKO) VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_C2R2BEG:NSV_C2R2END)='INIT'
-  END IF
-END IF
-!
-! C3R5 SV case
-!
-IF (CCLOUD == 'C3R5') THEN 
-  IF (HCLOUD == 'C3R5') THEN
-    CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR C3R5 &
-         &SCHEME IN INITIAL FMFILE",/,&
-         & "THE C1R3 VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_C1R3BEG:NSV_C1R3END)='INIT'
-  END IF
-END IF
-!
-! LIMA SV case
-!
-IF (CCLOUD == 'LIMA') THEN
-  IF (HCLOUD == 'LIMA') THEN
-    CGETSVT(NSV_LIMA_BEG:NSV_LIMA_END)='READ'
-!!JPP    IF(HSTORAGE_TYPE=='TT') CGETSVT(NSV_LIMA_BEG:NSV_LIMA_END)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR LIMA &
-           & SCHEME IN INITIAL FMFILE",/,&
-           & "THE LIMA VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_LIMA_BEG:NSV_LIMA_END)='INIT'
-  END IF
-END IF
-!
-! Electrical SV case
-!
-IF (CELEC /= 'NONE') THEN 
-  IF (HELEC /= 'NONE') THEN
-    CGETSVT(NSV_ELECBEG:NSV_ELECEND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_ELECBEG:NSV_ELECEND)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR ELECTRICAL &
-         &SCHEME IN INITIAL FMFILE",/,&
-         & "THE ELECTRICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_ELECBEG:NSV_ELECEND)='INIT'
-  END IF
-END IF
-!
-! (explicit) LINOx SV case 
-!
-IF (CELEC /= 'NONE' .AND. LLNOX_EXPLICIT) THEN
-  IF (HELEC /= 'NONE' .AND. OLNOX_EXPLICIT) THEN
-    CGETSVT(NSV_LNOXBEG:NSV_LNOXEND)='READ' 
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR LINOX &
-         & IN INITIAL FMFILE",/,& 
-         & "THE LINOX VARIABLES HAVE BEEN INITIALIZED TO ZERO ")')  
-    CGETSVT(NSV_LNOXBEG:NSV_LNOXEND)='INIT' 
-  END IF
-END IF
-!
-! Chemical SV case (excluding aqueous chemical species)
-!
-IF (LUSECHEM) THEN
-  IF (OUSECHEM) THEN
-    CGETSVT(NSV_CHGSBEG:NSV_CHGSEND)='READ'
-    IF(CCONF=='START' .AND. LCH_INIT_FIELD ) CGETSVT(NSV_CHGSBEG:NSV_CHGSEND)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR CHEMICAL &
-         &SCHEME IN INITIAL FMFILE",/,&
-         & "THE CHEMICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_CHGSBEG:NSV_CHGSEND)='INIT'
-  END IF
-END IF
-! add aqueous chemical species
-IF (LUSECHAQ) THEN
-  IF (OUSECHAQ) THEN
-    CGETSVT(NSV_CHACBEG:NSV_CHACEND)='READ'
-!    IF(CCONF=='START') CGETSVT(NSV_CHACBEG:NSV_CHACEND)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR CHEMICAL &
-         &SCHEME IN AQUEOUS PHASE IN INITIAL FMFILE",/,&
-         & "THE AQUEOUS PHASE CHEMICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_CHACBEG:NSV_CHACEND)='INIT'
-  END IF
-END IF
-! add ice phase chemical species
-IF (LUSECHIC) THEN
-  IF (OUSECHIC) THEN
-    CGETSVT(NSV_CHICBEG:NSV_CHICEND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_CHICBEG:NSV_CHICEND)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR CHEMICAL &
-         &SPECIES IN ICE PHASE IN INITIAL FMFILE",/,&
-         & "THE ICE PHASE CHEMICAL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")')
-    CGETSVT(NSV_CHICBEG:NSV_CHICEND)='INIT'
-  END IF
-END IF
-! pH values = diagnostics
-IF (LCH_PH .AND. .NOT. OCH_PH) THEN
-  CGETPHC ='INIT'  !will be initialized to XCH_PHINIT
-  IF (LUSERR) THEN
-    CGETPHR = 'INIT' !idem
-  ELSE 
-    CGETPHR = 'SKIP'
-  ENDIF
-ELSE
-  IF (LCH_PH) THEN
-    CGETPHC ='READ'
-    IF (LUSERR) THEN
-      CGETPHR = 'READ'
-    ELSE
-      CGETPHR = 'SKIP'
-    ENDIF
-  ELSE
-    CGETPHC ='SKIP'
-    CGETPHR ='SKIP'
-  END IF
-END IF
-!
-! Dust case
-!
-IF (LDUST) THEN
-  IF (ODUST) THEN
-    CGETSVT(NSV_DSTBEG:NSV_DSTEND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_DSTBEG:NSV_DSTEND)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR DUST &
-         &SCHEME IN INITIAL FMFILE",/,&
-         & "THE DUST VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_DSTBEG:NSV_DSTEND)='INIT'
-  END IF
-  IF (LDEPOS_DST(KMI)) THEN
-
-  IF((CCLOUD /= 'ICE3').AND.(CCLOUD /= 'ICE4').AND.(CCLOUD /= 'KESS')&
-  .AND.(CCLOUD /= 'KHKO').AND.(CCLOUD /= 'C2R2').AND.                &
-       (CPROGRAM/='SPAWN').AND.(CPROGRAM/='REAL'))  THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("ERROR: WET DEPOSITION OF DUST IS ONLY CODED FOR THE",/,&
-         & "MICROPHYSICAL SCHEME as ICE3, ICE4, KESS, KHKO and C2R2")') 
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF  
-
-   IF (ODEPOS_DST(KMI) ) THEN
-    CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='INIT'    
-   ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR RAIN and CLOUD DUST &
-         &  SCHEME IN INITIAL FMFILE",/,&
-         & "THE MOIST DUST VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_DSTDEPBEG:NSV_DSTDEPEND)='INIT'    
-   END IF
-  END IF  
-
-  IF(NMODE_DST.GT.3 .OR. NMODE_DST.LT.1) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("DUST MODES MUST BE BETWEEN 1 and 3 ")') 
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF     
-END IF
-!
-! Sea Salt case
-!
-IF (LSALT) THEN
-  IF (OSALT) THEN
-    CGETSVT(NSV_SLTBEG:NSV_SLTEND)='READ'
-    CGETZWS='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_SLTBEG:NSV_SLTEND)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR SALT &
-         &SCHEME IN INITIAL FMFILE",/,&
-         & "THE SALT VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_SLTBEG:NSV_SLTEND)='INIT'
-    CGETZWS='INIT'
-  END IF
-  IF (LDEPOS_SLT(KMI)) THEN
-
-  IF((CCLOUD /= 'ICE3').AND.(CCLOUD /= 'ICE4').AND.(CCLOUD /= 'KESS')&
-  .AND.(CCLOUD /= 'KHKO').AND.(CCLOUD /= 'C2R2').AND.                &
-       (CPROGRAM/='SPAWN').AND.(CPROGRAM/='REAL'))  THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("ERROR: WET DEPOSITION OF SEA SALT AEROSOLS IS ONLY CODED FOR THE",/,&
-         & "MICROPHYSICAL SCHEME as ICE3, ICE4, KESS, KHKO and C2R2")') 
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF  
-
-   IF (ODEPOS_SLT(KMI) ) THEN
-    CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='INIT'    
-   ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR RAIN and CLOUD SEA SALT &
-         &  SCHEME IN INITIAL FMFILE",/,&
-         & "THE MOIST SEA SALT VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_SLTDEPBEG:NSV_SLTDEPEND)='INIT'    
-   END IF
-  END IF
-  IF(NMODE_SLT.GT.5 .OR. NMODE_SLT.LT.1) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("SALT MODES MUST BE BETWEEN 1 and 5 ")') 
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF     
-END IF 
-!
-! Orilam SV case
-!
-IF (LORILAM) THEN
-  IF (OORILAM) THEN
-    CGETSVT(NSV_AERBEG:NSV_AEREND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_AERBEG:NSV_AEREND)='INIT'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR AEROSOL &
-         &SCHEME IN INITIAL FMFILE",/,&
-         & "THE AEROSOLS VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_AERBEG:NSV_AEREND)='INIT'
-  END IF
-  IF (LDEPOS_AER(KMI)) THEN
-
-  IF((CCLOUD /= 'ICE3').AND.(CCLOUD /= 'ICE4').AND.(CCLOUD /= 'KESS')&
-  .AND.(CCLOUD /= 'KHKO').AND.(CCLOUD /= 'C2R2').AND.                &
-       (CPROGRAM/='SPAWN').AND.(CPROGRAM/='REAL'))  THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("ERROR: WET DEPOSITION OF ORILAM AEROSOLS IS ONLY CODED FOR THE",/,&
-         & "MICROPHYSICAL SCHEME as ICE3, ICE4, KESS, KHKO and C2R2")') 
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF  
-
-   IF (ODEPOS_AER(KMI) ) THEN
-    CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='INIT'    
-   ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR RAIN and IN CLOUD  &
-         &  AEROSOL SCHEME IN INITIAL FMFILE",/,&
-         & "THE MOIST AEROSOL VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_AERDEPBEG:NSV_AERDEPEND)='INIT'    
-   END IF
-  END IF
-END IF
-!
-! Lagrangian variables
-!
-IF (LINIT_LG .AND. .NOT.(LLG)) THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT='("IT IS INCOHERENT TO HAVE LINIT_LG=.T. AND LLG=.F.",/,&
-      & "IF YOU WANT LAGRANGIAN TRACERS CHANGE LLG TO .T. ")')
-ENDIF
-IF (LLG) THEN
-  IF (OLG .AND. .NOT.(LINIT_LG .AND. CPROGRAM=='MESONH')) THEN
-    CGETSVT(NSV_LGBEG:NSV_LGEND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_LGBEG:NSV_LGEND)='INIT'
-  ELSE
-    IF(.NOT.(LINIT_LG) .AND. CPROGRAM=='MESONH') THEN
-      WRITE(UNIT=ILUOUT,FMT=9001) KMI
-      WRITE(UNIT=ILUOUT,FMT='("THERE IS NO LAGRANGIAN VARIABLES IN INITIAL FMFILE",/,&
-                       & "THE LAGRANGIAN VARIABLES HAVE BEEN REINITIALIZED")')
-      LINIT_LG=.TRUE.
-    ENDIF
-    CGETSVT(NSV_LGBEG:NSV_LGEND)='INIT'
-  END IF
-END IF
-!
-!
-! LINOx SV case
-!
-IF (.NOT.LUSECHEM .AND. LCH_CONV_LINOX) THEN
-  IF (.NOT.OUSECHEM .AND. OCH_CONV_LINOX) THEN
-    CGETSVT(NSV_LNOXBEG:NSV_LNOXEND)='READ'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9002) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR LINOX &
-         &IN INITIAL FMFILE",/,&
-         & "THE LINOX VARIABLES HAVE BEEN INITIALIZED TO ZERO ")') 
-    CGETSVT(NSV_LNOXBEG:NSV_LNOXEND)='INIT'
-  END IF
-END IF
-!
-! Passive pollutant case
-!
-IF (LPASPOL) THEN
-  IF (OPASPOL) THEN
-    CGETSVT(NSV_PPBEG:NSV_PPEND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_PPBEG:NSV_PPEND)='INIT'    
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO PASSIVE SCALAR VARIABLES IN INITIAL FMFILE",/,&
-                       & "THE VARIABLES HAVE BEEN INITIALIZED TO ZERO")')
-    CGETSVT(NSV_PPBEG:NSV_PPEND)='INIT'
-  END IF
-END IF
-!
-#ifdef MNH_FOREFIRE
-! ForeFire
-!
-IF (LFOREFIRE) THEN
-  IF (OFOREFIRE) THEN
-    CGETSVT(NSV_FFBEG:NSV_FFEND)='READ'
-    IF(HSTORAGE_TYPE=='TT') THEN
-      CGETSVT(NSV_FFBEG:NSV_FFEND)='INIT'
-    END IF
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO FOREFIRE SCALAR VARIABLES IN INITIAL FMFILE",/,&
-                       & "THE VARIABLES HAVE BEEN INITIALIZED TO ZERO")')
-    CGETSVT(NSV_FFBEG:NSV_FFEND)='INIT'
-  END IF
-END IF
-#endif
-!
-! Conditional sampling case
-!
-IF (LCONDSAMP) THEN
-  IF (OCONDSAMP) THEN
-    CGETSVT(NSV_CSBEG:NSV_CSEND)='READ'
-!   IF(CCONF=='START') CGETSVT(NSV_CSBEG:NSV_CSEND)='INIT'       
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO PASSIVE SCALAR VARIABLES IN INITIAL FMFILE",/,&
-                       & "THE VARIABLES HAVE BEEN INITIALIZED TO ZERO")')
-    CGETSVT(NSV_CSBEG:NSV_CSEND)='INIT'
-  END IF
-END IF
-!
-! Blowing snow scheme
-!
-IF (LBLOWSNOW) THEN
-  IF (OBLOWSNOW) THEN
-    CGETSVT(NSV_SNWBEG:NSV_SNWEND)='READ'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THERE IS NO SCALAR VARIABLES FOR BLOWING SNOW &
-         &SCHEME IN INITIAL FMFILE",/,&
-         & "THE BLOWING SNOW VARIABLES HAVE BEEN INITIALIZED TO ZERO ")')
-    CGETSVT(NSV_SNWBEG:NSV_SNWEND)='INIT'
-  END IF
-END IF
-!
-!
-!
-!*       3.5  Check coherence between the radiation control parameters
-!
-IF( CRAD == 'ECMW' .AND. CPROGRAM=='MESONH' ) THEN
-  IF(CLW == 'RRTM' .AND. COPILW == 'SMSH') THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT=*) 'the SMSH parametrisation of LW optical properties for cloud ice'
-    WRITE(UNIT=ILUOUT,FMT=*) '(COPILW) can not be used with RRTM radiation scheme'
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  ENDIF
-  IF(CLW == 'MORC' .AND. COPWLW == 'LILI') THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT=*) 'the LILI parametrisation of LW optical properties for cloud water'
-    WRITE(UNIT=ILUOUT,FMT=*) '(COPWLW) can not be used with MORC radiation scheme'
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  ENDIF
-  IF( .NOT. LSUBG_COND) THEN
-    WRITE(UNIT=ILUOUT,FMT=9000) KMI
-    WRITE(UNIT=ILUOUT,FMT=*) 'YOU DO NOT WANT TO USE SUBGRID CONDENSATION'             
-    WRITE(UNIT=ILUOUT,FMT=*) 'THE OVERLAP OPTION IS NOVLP=5 IN ini_radconf.f90'
-  ELSE IF (CLW == 'MORC') THEN
-    WRITE(UNIT=ILUOUT,FMT=9000) KMI
-    WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE MORCRETTE LW SCHEME'                   
-    WRITE(UNIT=ILUOUT,FMT=*) 'THE OVERLAP OPTION IS NOVLP=5 IN ini_radconf.f90'
-  ELSE
-    WRITE(UNIT=ILUOUT,FMT=9000) KMI
-    WRITE(UNIT=ILUOUT,FMT=*) 'THE OVERLAP OPTION IS NOVLP=6 IN ini_radconf.f90'
-  ENDIF
-!
-  IF( LCLEAR_SKY .AND. XDTRAD_CLONLY /= XDTRAD) THEN
-    ! Check the validity of the LCLEAR_SKY approximation
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH THE CLEAR-SKY APPROXIMATION'
-    WRITE(UNIT=ILUOUT,FMT=*) '(i.e. AVERAGE THE WHOLE CLOUDFREE VERTICALS BUT KEEP'
-    WRITE(UNIT=ILUOUT,FMT=*) 'ALL THE CLOUDY VERTICALS) AND'
-    WRITE(UNIT=ILUOUT,FMT=*) 'THE CLOUD-ONLY APPROXIMATION (i.e. YOU CALL MORE OFTEN THE'
-    WRITE(UNIT=ILUOUT,FMT=*) 'RADIATIONS FOR THE CLOUDY VERTICALS THAN FOR CLOUDFREE ONES).'
-    WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT POSSIBLE, SO CHOOSE BETWEEN :'
-    WRITE(UNIT=ILUOUT,FMT=*) 'XDTRAD_CLONLY = XDTRAD and LCLEAR_SKY = FALSE'
-!
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-!
-  IF( XDTRAD_CLONLY > XDTRAD ) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("BAD USE OF THE CLOUD-ONLY APPROXIMATION   " ,&
-    &" XDTRAD SHOULD BE LARGER THAN XDTRAD_CLONLY                      ")')
-!
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-!
-  IF(( XDTRAD < XTSTEP ).OR. ( XDTRAD_CLONLY < XTSTEP )) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("THE RADIATION CALL XDTRAD OR XDTRAD_CLONLY " ,&
-    &" IS MORE FREQUENT THAN THE TIME STEP SO ADJUST XDTRAD OR XDTRAD_CLONLY ")')
-!
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-END IF
-!
-IF ( CRAD /= 'NONE' .AND. CPROGRAM=='MESONH' ) THEN
-  CGETRAD='READ'
-  IF( HRAD == 'NONE' .AND. CCONF=='RESTA') THEN
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT=*) 'YOU ARE PERFORMING A RESTART. FOR THIS SEGMENT, YOU ARE USING A RADIATION'
-    WRITE(UNIT=ILUOUT,FMT=*) 'SCHEME AND NO RADIATION SCHEME WAS USED FOR THE PREVIOUS SEGMENT.'
-    CGETRAD='INIT'
-  END IF
-  IF(CCONF=='START') THEN
-    CGETRAD='INIT'
-  END IF
-  IF(CCONF=='RESTA' .AND. (.NOT. LAERO_FT) .AND.  (.NOT. LORILAM) &
-                    .AND. (.NOT. LSALT)  .AND. (.NOT. LDUST)) THEN
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT=*) '!!! WARNING !!! FOR REPRODUCTIBILITY BETWEEN START and START+RESTART,'
-    WRITE(UNIT=ILUOUT,FMT=*) 'YOU MUST USE LAERO_FT=T WITH CAER=TEGE IF CCONF=RESTA IN ALL SEGMENTS'
-    WRITE(UNIT=ILUOUT,FMT=*) 'TO UPDATE THE OZONE AND AEROSOLS CLIMATOLOGY USED BY THE RADIATION CODE;'
-  END IF
-END IF
-!
-!        3.6  check the initialization of the deep convection scheme
-!
-IF ( (CDCONV /= 'KAFR') .AND. &
-      (CSCONV /= 'KAFR') .AND. LCHTRANS ) THEN
-   WRITE(UNIT=ILUOUT,FMT=9003) KMI
-   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE LCHTRANS OPTION= ",&
-    &"CONVECTIVE TRANSPORT OF TRACERS BUT  IT CAN ONLY",&
-    &"BE USED FOR THE KAIN FRITSCH SCHEME ")')
- !callabortstop
-   CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-!
-SELECT CASE ( CDCONV )
-  CASE( 'KAFR' )
-    IF (.NOT. ( LUSERV ) ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE KAIN-FRITSCH DEEP CONV. ",&
-      &" SCHEME. YOU MUST HAVE VAPOR ",/,"LUSERV IS SET TO TRUE ")')
-      LUSERV=.TRUE.
-    ELSE IF (.NOT. ( LUSERI ) ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE KAIN-FRITSCH",&
-      &" DEEP CONV. SCHEME. BUT THE DETRAINED CLOUD ICE WILL BE ADDED TO   ",&
-      &" THE CLOUD WATER  ")')
-    ELSE IF (.NOT. ( LUSERI.AND.LUSERC ) ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE KAIN-FRITSCH",&
-      &" DEEP CONV. SCHEME. BUT THE DETRAINED CLOUD WATER AND CLOUD ICE    ",&
-      &" WILL BE ADDED TO THE WATER VAPOR FIELD  ")')
-    END IF
-    IF ( LCHTRANS .AND. NSV == 0 ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE LCHTRANS OPTION= ",&
-      &"CONVECTIVE TRANSPORT OF TRACERS BUT YOUR TRACER ",&
-      &"NUMBER NSV IS ZERO ",/,"LCHTRANS IS SET TO FALSE")')
-      LCHTRANS=.FALSE.
-    END IF
-END SELECT
-!
-IF ( CDCONV == 'KAFR' .AND. LCHTRANS .AND. NSV > 0 ) THEN
-  IF( OCHTRANS ) THEN
-    CGETSVCONV='READ'
-  ELSE  
-    CGETSVCONV='INIT'
-  END IF
-END IF
-!
-SELECT CASE ( CSCONV )
-  CASE( 'KAFR' )
-    IF (.NOT. ( LUSERV ) ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE KAIN-FRITSCH SHALLOW CONV. ",&
-      &" SCHEME. YOU MUST HAVE VAPOR ",/,"LUSERV IS SET TO TRUE ")')
-      LUSERV=.TRUE.
-    ELSE IF (.NOT. ( LUSERI ) ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE KAIN-FRITSCH",&
-      &" SHALLOW CONV. SCHEME. BUT THE DETRAINED CLOUD ICE WILL BE ADDED TO   ",&
-      &" THE CLOUD WATER  ")')
-    ELSE IF (.NOT. ( LUSERI.AND.LUSERC ) ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE KAIN-FRITSCH",&
-      &" SHALLOW CONV. SCHEME. BUT THE DETRAINED CLOUD WATER AND CLOUD ICE    ",&
-      &" WILL BE ADDED TO THE WATER VAPOR FIELD  ")')
-    END IF
-    IF ( LCHTRANS .AND. NSV == 0 ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9002) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE LCHTRANS OPTION= ",&
-      &"CONVECTIVE TRANSPORT OF TRACERS BUT YOUR TRACER ",&
-      &"NUMBER NSV IS ZERO ",/,"LCHTRANS IS SET TO FALSE")')
-      LCHTRANS=.FALSE.
-    END IF
- CASE( 'EDKF' )
-    IF (CTURB == 'NONE' ) THEN
-      WRITE(UNIT=ILUOUT,FMT=9003) KMI
-      WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE THE EDKF ", & 
-      &"SHALLOW CONVECTION WITHOUT TURBULENCE SCHEME : ", &
-      &"IT IS NOT POSSIBLE")')
-!
- !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-    END IF
-END SELECT
-!
-!
-CGETCONV = 'SKIP'
-!
-IF ( (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' ) .AND. CPROGRAM=='MESONH') THEN
-  CGETCONV = 'READ'
-  IF( HDCONV == 'NONE' .AND. CCONF=='RESTA') THEN
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(UNIT=ILUOUT,FMT='(" YOU ARE PERFORMING A RESTART. FOR THIS  ",&
-     &" SEGMENT, YOU ARE USING A DEEP CONVECTION SCHEME AND NO DEEP    ",&
-     &" CONVECTION SCHEME WAS USED FOR THE PREVIOUS SEGMENT. ")')
-!
-    CGETCONV = 'INIT'
-  END IF
-  IF(CCONF=='START') THEN
-    CGETCONV = 'INIT'
-  END IF
-END IF
-!
-!*       3.7  configuration and model version
-!
-IF (KMI == 1) THEN                                                
-! 
-  IF (L1D.AND.(CLBCX(1)/='CYCL'.AND.CLBCX(2)/='CYCL' &
-          .AND.CLBCY(1)/='CYCL'.AND.CLBCY(2)/='CYCL')) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A 1D MODEL VERSION WITH NON-CYCL",&
-                & "CLBCX OR CLBCY VALUES")')
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-  IF (L2D.AND.(CLBCY(1)/='CYCL'.AND.CLBCY(2)/='CYCL')) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A 2D MODEL VERSION WITH NON-CYCL",&
-                & " CLBCY VALUES")')
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-  !
- IF ( (.NOT. LCARTESIAN) .AND. ( LCORIO) .AND. (.NOT. LGEOST_UV_FRC) ) THEN
-   WRITE(UNIT=ILUOUT,FMT=9002) KMI
-   WRITE(UNIT=ILUOUT,FMT='("BE CAREFUL YOU COULD HAVE SPURIOUS MOTIONS      " ,&
-        & " NEAR THE LBC AS LCORIO=T and  LGEOST_UV_FRC=F")')
- END IF
-  !
-  IF ((.NOT.LFLAT).AND.OFLAT) THEN                                      
-    WRITE(UNIT=ILUOUT,FMT=9002) KMI 
-    WRITE(UNIT=ILUOUT,FMT=*) 'ZERO OROGRAPHY IN INITIAL FILE'
-    WRITE(UNIT=ILUOUT,FMT=*) '***** ALL TERMS HAVE BEEN NEVERTHELESS COMPUTED WITHOUT SIMPLIFICATION*****'
-    WRITE(UNIT=ILUOUT,FMT=*) 'THIS SHOULD LEAD TO ERRORS IN THE PRESSURE COMPUTATION'     
-  END IF
-  IF (LFLAT.AND.(.NOT.OFLAT)) THEN
-    WRITE(UNIT=ILUOUT,FMT=9002) KMI
-    WRITE(UNIT=ILUOUT,FMT='(" OROGRAPHY IS NOT EQUAL TO ZERO ",            &
-          & "IN INITIAL FILE" ,/,                                          &
-          & "******* OROGRAPHY HAS BEEN SET TO ZERO *********",/,          &
-          & "ACCORDING TO ZERO OROGRAPHY, SIMPLIFICATIONS  HAVE  ",        &
-          & "BEEN MADE IN  COMPUTATIONS")')
-  END IF 
-END IF
-!
-!*       3.8  System of equations
-!
-IF ( HEQNSYS /= CEQNSYS ) THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU HAVE CHANGED THE SYSTEM OF EQUATIONS'
-  WRITE(ILUOUT,FMT=*) 'THE ANELASTIC CONSTRAINT IS PERHAPS CHANGED :'
-  WRITE(ILUOUT,FMT=*) 'FOR THE INITIAL FILE YOU HAVE USED ',HEQNSYS
-  WRITE(ILUOUT,FMT=*) 'FOR THE RUN YOU PLAN TO USE ',CEQNSYS
-  WRITE(ILUOUT,FMT=*) 'THIS CAN LEAD TO A NUMERICAL EXPLOSION IN THE FIRST TIME STEPS'
- !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-!
-!        3.9  Numerical schemes
-!
-IF ( (CUVW_ADV_SCHEME == 'CEN4TH') .AND. &
-      (CTEMP_SCHEME /= 'LEFR') .AND. (CTEMP_SCHEME /= 'RKC4') ) THEN
-   WRITE(UNIT=ILUOUT,FMT=9003) KMI
-   WRITE(UNIT=ILUOUT,FMT='("CEN4TH SCHEME HAS TO BE USED WITH ",&
-    &"CTEMP_SCHEME = LEFR of RKC4 ONLY")')   
- !callabortstop
-   CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-!
-IF ( (CUVW_ADV_SCHEME == 'WENO_K') .AND. LNUMDIFU ) THEN
-   WRITE(UNIT=ILUOUT,FMT=9002) KMI
-   WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE NUMERICAL DIFFUSION ",&
-    &"WITH WENO SCHEME ALREADY DIFFUSIVE")')   
-END IF
-!-------------------------------------------------------------------------------
-!
-!*       4.    CHECK COHERENCE BETWEEN EXSEG VARIABLES
-!              ---------------------------------------
-!        
-!*       4.1  coherence between coupling variables in EXSEG file  
-!                      
-IF (KMI == 1) THEN
-  NCPL_NBR = 0
-  DO JCI = 1,JPCPLFILEMAX
-    IF (LEN_TRIM(CCPLFILE(JCI)) /= 0) THEN        ! Finds the number 
-      NCPL_NBR = NCPL_NBR + 1                     ! of coupling files
-    ENDIF
-    IF (JCI/=JPCPLFILEMAX) THEN                   ! Deplaces the coupling files
-      IF ((LEN_TRIM(CCPLFILE(JCI)) == 0) .AND.   &! names if one missing
-          (LEN_TRIM(CCPLFILE(JCI+1)) /= 0)) THEN
-        DO JI=JCI,JPCPLFILEMAX-1
-          CCPLFILE(JI)=CCPLFILE(JI+1)
-        END DO
-        CCPLFILE(JPCPLFILEMAX)='    '
-      END IF
-    END IF
-  END DO
-!
-  IF (NCPL_NBR /= 0) THEN         
-    LSTEADYLS = .FALSE.
-  ELSE
-    LSTEADYLS = .TRUE.
-  ENDIF 
-END IF
-!        
-!*       4.3   check consistency in forcing switches
-!
-IF ( LFORCING ) THEN
-  IF ( LRELAX_THRV_FRC .AND. ( LTEND_THRV_FRC .OR. LGEOST_TH_FRC ) ) THEN
-    WRITE(UNIT=ILUOUT,FMT=9002) KMI
-    WRITE(ILUOUT,FMT=*) 'YOU CHOSE A TEMPERATURE AND HUMIDITY RELAXATION'
-    WRITE(ILUOUT,FMT=*) 'TOGETHER WITH TENDENCY OR GEOSTROPHIC FORCING'
-    WRITE(ILUOUT,FMT=*) &
-  'YOU MIGHT CHECK YOUR SWITCHES: LRELAX_THRV_FRC, LTEND_THRV_FRC, AND'
-    WRITE(ILUOUT,FMT=*) 'LGEOST_TH_FRC'
-  END IF
-!
-  IF ( LRELAX_UV_FRC .AND. LRELAX_UVMEAN_FRC) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(ILUOUT,FMT=*) 'YOU MUST CHOOSE BETWEEN A RELAXATION APPLIED TO'
-    WRITE(ILUOUT,FMT=*) 'THE 3D FULL WIND FIELD (LRELAX_UV_FRC) OR'
-    WRITE(ILUOUT,FMT=*) 'THE HORIZONTAL MEAN WIND (LRELAX_UVMEAN_FRC)'
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-!
-  IF ( (LRELAX_UV_FRC .OR. LRELAX_UVMEAN_FRC) .AND. LGEOST_UV_FRC ) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(ILUOUT,FMT=*) 'YOU MUST NOT USE A WIND RELAXATION' 
-    WRITE(ILUOUT,FMT=*) 'TOGETHER WITH A GEOSTROPHIC FORCING'
-    WRITE(ILUOUT,FMT=*) 'CHECK SWITCHES: LRELAX_UV_FRC, LRELAX_UVMEAN_FRC, LGEOST_UV_FRC'
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-!
-  IF ( CRELAX_HEIGHT_TYPE.NE."FIXE" .AND. CRELAX_HEIGHT_TYPE.NE."THGR" ) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(ILUOUT,FMT=*) 'CRELAX_HEIGHT_TYPE MUST BE EITHER "FIXE" OR "THGR"'
-    WRITE(ILUOUT,FMT=*) 'BUT IT IS "', CRELAX_HEIGHT_TYPE, '"'
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-!
-  IF ( .NOT.LCORIO .AND. LGEOST_UV_FRC ) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(ILUOUT,FMT=*) 'YOU CANNOT HAVE A GEOSTROPHIC FORCING WITHOUT'
-    WRITE(ILUOUT,FMT=*) 'ACTIVATING LCORIOLIS OPTION'
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-!
-  IF ( LPGROUND_FRC ) THEN
-    WRITE(ILUOUT,FMT=*) 'SURFACE PRESSURE FORCING NOT YET IMPLEMENTED'
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-!
-END IF
-!
-IF (LTRANS .AND. .NOT. LFLAT ) THEN
-    WRITE(UNIT=ILUOUT,FMT=9003) KMI
-    WRITE(ILUOUT,FMT=*) 'YOU ASK FOR A CONSTANT SPEED DOMAIN TRANSLATION '
-    WRITE(ILUOUT,FMT=*) 'BUT NOT IN THE FLAT TERRAIN CASE:'
-    WRITE(ILUOUT,FMT=*) 'THIS IS NOT ALLOWED ACTUALLY'
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-!
-!*       4.4  Check the coherence between the LUSERn and LHORELAX
-!
-IF (.NOT. LUSERV .AND. LHORELAX_RV) THEN
-  LHORELAX_RV=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX RV FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RV=FALSE'
-END IF
-!
-IF (.NOT. LUSERC .AND. LHORELAX_RC) THEN
-  LHORELAX_RC=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX RC FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RC=FALSE'
-END IF
-!
-IF (.NOT. LUSERR .AND. LHORELAX_RR) THEN
-  LHORELAX_RR=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX RR FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RR=FALSE'
-END IF
-!
-IF (.NOT. LUSERI .AND. LHORELAX_RI) THEN
-  LHORELAX_RI=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX RI FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RI=FALSE'
-END IF
-!
-IF (.NOT. LUSERS .AND. LHORELAX_RS) THEN
-  LHORELAX_RS=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX RS FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RS=FALSE'
-END IF
-!
-IF (.NOT. LUSERG .AND. LHORELAX_RG) THEN
-  LHORELAX_RG=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX RG FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RG=FALSE'
-END IF
-!
-IF (.NOT. LUSERH .AND. LHORELAX_RH) THEN
-  LHORELAX_RH=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX RH FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RH=FALSE'
-END IF
-!
-IF (CTURB=='NONE' .AND. LHORELAX_TKE) THEN
-  LHORELAX_TKE=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX TKE FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_TKE=FALSE'
-END IF
-!
-!
-IF (CCLOUD/='C2R2'  .AND. CCLOUD/='KHKO'  .AND. LHORELAX_SVC2R2) THEN
-  LHORELAX_SVC2R2=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX C2R2 or KHKO FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVC2R2=FALSE'
-END IF
-!
-IF (CCLOUD/='C3R5' .AND. LHORELAX_SVC1R3) THEN
-  LHORELAX_SVC1R3=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX C3R5 FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVC1R3=FALSE'
-END IF
-!
-IF (CCLOUD/='LIMA' .AND. LHORELAX_SVLIMA) THEN
-  LHORELAX_SVLIMA=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX LIMA FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVLIMA=FALSE'
-END IF
-!
-IF (CELEC(1:3) /= 'ELE' .AND. LHORELAX_SVELEC) THEN
-  LHORELAX_SVELEC=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX ELEC FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVELEC=FALSE'
-END IF
-!
-IF (.NOT. LUSECHEM .AND. LHORELAX_SVCHEM) THEN
-  LHORELAX_SVCHEM=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX CHEM FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVCHEM=FALSE'
-END IF
-!
-IF (.NOT. LUSECHIC .AND. LHORELAX_SVCHIC) THEN
-  LHORELAX_SVCHIC=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX ICE CHEM FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVCHIC=FALSE'
-END IF
-!
-IF (.NOT. LORILAM .AND. LHORELAX_SVAER) THEN
-  LHORELAX_SVAER=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX AEROSOL FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVAER=FALSE'
-END IF
-
-IF (.NOT. LDUST .AND. LHORELAX_SVDST) THEN
-  LHORELAX_SVDST=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX DUST FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVDST=FALSE'
-END IF
-
-IF (.NOT. LSALT .AND. LHORELAX_SVSLT) THEN
-  LHORELAX_SVSLT=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX SEA SALT FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVSLT=FALSE'
-END IF
-
-IF (.NOT. LPASPOL .AND. LHORELAX_SVPP) THEN
-  LHORELAX_SVPP=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX PASSIVE POLLUTANT FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVPP=FALSE'
-END IF
-#ifdef MNH_FOREFIRE
-IF (.NOT. LFOREFIRE .AND. LHORELAX_SVFF) THEN
-  LHORELAX_SVFF=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX FOREFIRE FLUXES BUT THEY DO NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVFF=FALSE'
-END IF
-#endif
-IF (.NOT. LCONDSAMP .AND. LHORELAX_SVCS) THEN
-  LHORELAX_SVCS=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX CONDITIONAL SAMPLING FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVCS=FALSE'
-END IF
-
-IF (.NOT. LBLOWSNOW .AND. LHORELAX_SVSNW) THEN
-  LHORELAX_SVSNW=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX BLOWING SNOW FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SVSNW=FALSE'
-END IF
-
-IF (ANY(LHORELAX_SV(NSV+1:))) THEN
-  LHORELAX_SV(NSV+1:)=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX SV(NSV+1:) FIELD BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SV(NSV+1:)=FALSE'
-END IF
-!
-!*       4.5   check the number of points for the horizontal relaxation
-!
-IF ( NRIMX > KRIMX .AND. .NOT.LHORELAX_SVELEC ) THEN
-  NRIMX = KRIMX 
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE A LARGER NUMBER OF POINTS '
-  WRITE(ILUOUT,FMT=*) 'FOR THE HORIZONTAL RELAXATION THAN THE '
-  WRITE(ILUOUT,FMT=*) 'CORRESPONDING NUMBER OF LARGE SCALE FIELDS:'
-  WRITE(ILUOUT,FMT=*) 'IT IS THEREFORE REDUCED TO NRIMX =',NRIMX
-END IF
-!
-IF ( L2D .AND. KRIMY>0 ) THEN
-  NRIMY = 0 
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE A 2D MODEL THEREFORE  NRIMY=0 '
-END IF
-!
-IF ( NRIMY > KRIMY .AND. .NOT.LHORELAX_SVELEC ) THEN
-  NRIMY = KRIMY 
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE A LARGER NUMBER OF POINTS '
-  WRITE(ILUOUT,FMT=*) 'FOR THE HORIZONTAL RELAXATION THAN THE '
-  WRITE(ILUOUT,FMT=*) 'CORRESPONDING NUMBER OF LARGE SCALE FIELDS:'
-  WRITE(ILUOUT,FMT=*) 'IT IS THEREFORE REDUCED TO NRIMY =',NRIMY
-END IF
-!
-IF ( (.NOT. LHORELAX_UVWTH) .AND. (.NOT.(ANY(LHORELAX_SV))) .AND.  &
-     (.NOT. LHORELAX_SVC2R2).AND. (.NOT. LHORELAX_SVC1R3)   .AND.  &
-     (.NOT. LHORELAX_SVLIMA).AND.                                  &
-     (.NOT. LHORELAX_SVELEC).AND. (.NOT. LHORELAX_SVCHEM)   .AND.  &
-     (.NOT. LHORELAX_SVLG)  .AND. (.NOT. LHORELAX_SVPP)     .AND.  &
-     (.NOT. LHORELAX_SVCS)  .AND.                                  &
-#ifdef MNH_FOREFIRE
-     (.NOT. LHORELAX_SVFF)  .AND.                                  &
-#endif
-     (.NOT. LHORELAX_RV)    .AND. (.NOT. LHORELAX_RC)       .AND.  &
-     (.NOT. LHORELAX_RR)    .AND. (.NOT. LHORELAX_RI)       .AND.  &
-     (.NOT. LHORELAX_RS)    .AND. (.NOT. LHORELAX_RG)       .AND.  &
-     (.NOT. LHORELAX_RH)    .AND. (.NOT. LHORELAX_TKE)      .AND.  &
-     (.NOT. LHORELAX_SVCHIC).AND.                                  &
-                                  (NRIMX /= 0 .OR. NRIMY /= 0))  THEN  
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU DO NOT WANT TO USE THE HORIZONTAL RELAXATION '
-  WRITE(ILUOUT,FMT=*) 'THEREFORE NRIMX=NRIMY=0     '
-  NRIMX=0
-  NRIMY=0
-END IF
-!
-IF ((LHORELAX_UVWTH  .OR. LHORELAX_SVPP   .OR.  &
-     LHORELAX_SVCS   .OR.                       &
-#ifdef MNH_FOREFIRE
-     LHORELAX_SVFF   .OR.                       &
-#endif
-     LHORELAX_SVC2R2 .OR. LHORELAX_SVC1R3 .OR.  &
-     LHORELAX_SVLIMA .OR.                       &
-     LHORELAX_SVELEC .OR. LHORELAX_SVCHEM .OR.  &
-     LHORELAX_SVLG   .OR. ANY(LHORELAX_SV) .OR. &
-     LHORELAX_RV     .OR. LHORELAX_RC .OR.      &
-     LHORELAX_RR     .OR. LHORELAX_RI .OR.      &
-     LHORELAX_RG     .OR. LHORELAX_RS .OR.      &
-     LHORELAX_RH     .OR. LHORELAX_TKE.OR.      &
-     LHORELAX_SVCHIC )                          &
-     .AND. (NRIMX==0 .OR. (NRIMY==0 .AND. .NOT.(L2D) ))) THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE THE HORIZONTAL RELAXATION '
-  WRITE(ILUOUT,FMT=*) 'BUT NRIMX OR NRIMY=0 CHANGE YOUR VALUES   '
-  WRITE(ILUOUT,FMT=*) "LHORELAX_UVWTH=",LHORELAX_UVWTH
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVC2R2=",LHORELAX_SVC2R2
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVC1R3=",LHORELAX_SVC1R3
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVLIMA=",LHORELAX_SVLIMA
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVELEC=",LHORELAX_SVELEC
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVCHEM=",LHORELAX_SVCHEM
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVCHIC=",LHORELAX_SVCHIC
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVLG=",LHORELAX_SVLG
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVPP=",LHORELAX_SVPP
-#ifdef MNH_FOREFIRE
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVFF=",LHORELAX_SVFF
-#endif
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SVCS=",LHORELAX_SVCS
-  WRITE(ILUOUT,FMT=*) "LHORELAX_SV=",LHORELAX_SV
-  WRITE(ILUOUT,FMT=*) "LHORELAX_RV=",LHORELAX_RV
-  WRITE(ILUOUT,FMT=*) "LHORELAX_RC=",LHORELAX_RC
-  WRITE(ILUOUT,FMT=*) "LHORELAX_RR=",LHORELAX_RR
-  WRITE(ILUOUT,FMT=*) "LHORELAX_RI=",LHORELAX_RI
-  WRITE(ILUOUT,FMT=*) "LHORELAX_RG=",LHORELAX_RG
-  WRITE(ILUOUT,FMT=*) "LHORELAX_RS=",LHORELAX_RS
-  WRITE(ILUOUT,FMT=*) "LHORELAX_RH=",LHORELAX_RH
-  WRITE(ILUOUT,FMT=*) "LHORELAX_TKE=", LHORELAX_TKE
-  WRITE(ILUOUT,FMT=*) "NRIMX=",NRIMX
-  WRITE(ILUOUT,FMT=*) "NRIMY=",NRIMY
-  WRITE(ILUOUT,FMT=*) "L2D=",L2D
- !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-! 
-IF ((LHORELAX_UVWTH  .OR. LHORELAX_SVPP  .OR.   &
-     LHORELAX_SVCS   .OR.                       &
-#ifdef MNH_FOREFIRE
-     LHORELAX_SVFF   .OR.                       &
-#endif
-     LHORELAX_SVC2R2 .OR. LHORELAX_SVC1R3 .OR.  &
-     LHORELAX_SVLIMA .OR.                       &
-     LHORELAX_SVELEC .OR. LHORELAX_SVCHEM .OR.  &
-     LHORELAX_SVLG   .OR. ANY(LHORELAX_SV) .OR. &
-     LHORELAX_RV     .OR. LHORELAX_RC .OR.      &
-     LHORELAX_RR     .OR. LHORELAX_RI .OR.      &
-     LHORELAX_RG     .OR. LHORELAX_RS .OR.      &
-     LHORELAX_RH     .OR. LHORELAX_TKE.OR.      &
-     LHORELAX_SVCHIC )                          &
-     .AND. (KMI /=1)) THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE THE HORIZONTAL RELAXATION '
-  WRITE(ILUOUT,FMT=*) 'FOR A NESTED MODEL BUT THE COUPLING IS ALREADY DONE' 
-  WRITE(ILUOUT,FMT=*) 'BY THE GRID NESTING. CHANGE LHORELAX TO FALSE'
- !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-!
-IF ((LHORELAX_UVWTH  .OR. LHORELAX_SVPP  .OR.   &
-     LHORELAX_SVCS   .OR.                       &
-#ifdef MNH_FOREFIRE
-     LHORELAX_SVFF   .OR.                       &
-#endif
-     LHORELAX_SVC2R2 .OR. LHORELAX_SVC1R3 .OR.  &
-     LHORELAX_SVLIMA .OR.                       &
-     LHORELAX_SVELEC .OR. LHORELAX_SVCHEM .OR.  &
-     LHORELAX_SVLG   .OR. ANY(LHORELAX_SV) .OR. &
-     LHORELAX_RV     .OR. LHORELAX_RC .OR.      &
-     LHORELAX_RR     .OR. LHORELAX_RI .OR.      &
-     LHORELAX_RG     .OR. LHORELAX_RS .OR.      &
-     LHORELAX_RH     .OR. LHORELAX_TKE.OR.      &
-     LHORELAX_SVCHIC )                          &
-     .AND. (CLBCX(1)=='CYCL'.OR.CLBCX(2)=='CYCL' &
-          .OR.CLBCY(1)=='CYCL'.OR.CLBCY(2)=='CYCL')) THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE THE HORIZONTAL RELAXATION '
-  WRITE(ILUOUT,FMT=*) 'FOR CYCLIC CLBCX OR CLBCY VALUES' 
-  WRITE(ILUOUT,FMT=*) 'CHANGE LHORELAX TO FALSE'
- !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-!
-IF (KMI==1) THEN
-  GRELAX = .NOT.(OUSERV)  .AND.  LUSERV  .AND. LHORELAX_RV
-ELSE
-  GRELAX = .NOT.(LUSERV_G(NDAD(KMI)))  .AND.  LUSERV_G(KMI).AND. LHORELAX_RV 
-END IF 
-!
-IF ( GRELAX )  THEN
-  LHORELAX_RV=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX THE RV FIELD'
-  WRITE(ILUOUT,FMT=*) 'TOWARDS THE LARGE SCALE FIELD OF MODEL',NDAD(KMI)
-  WRITE(ILUOUT,FMT=*) 'BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RV=FALSE'
-END IF
-!
-IF (KMI==1) THEN
-  GRELAX = .NOT.(OUSERC)  .AND.  LUSERC  .AND. LHORELAX_RC
-ELSE
-  GRELAX = .NOT.(LUSERC_G(NDAD(KMI)))  .AND.  LUSERC_G(KMI).AND. LHORELAX_RC 
-END IF 
-!
-IF ( GRELAX )  THEN
-  LHORELAX_RC=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX THE RC FIELD'
-  WRITE(ILUOUT,FMT=*) 'TOWARDS THE LARGE SCALE FIELD OF MODEL',NDAD(KMI)
-  WRITE(ILUOUT,FMT=*) 'BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RC=FALSE'
-END IF
-!
-IF (KMI==1) THEN
-  GRELAX = .NOT.(OUSERR)  .AND.  LUSERR  .AND. LHORELAX_RR
-ELSE
-  GRELAX = .NOT.(LUSERR_G(NDAD(KMI)))  .AND.  LUSERR_G(KMI).AND. LHORELAX_RR 
-END IF 
-!
-IF ( GRELAX )  THEN
-  LHORELAX_RR=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX THE RR FIELD'
-  WRITE(ILUOUT,FMT=*) 'TOWARDS THE LARGE SCALE FIELD OF MODEL',NDAD(KMI)
-  WRITE(ILUOUT,FMT=*) 'BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RR=FALSE'
-END IF
-!
-IF (KMI==1) THEN
-  GRELAX = .NOT.(OUSERI)  .AND.  LUSERI  .AND. LHORELAX_RI
-ELSE
-  GRELAX = .NOT.(LUSERI_G(NDAD(KMI)))  .AND.  LUSERI_G(KMI).AND. LHORELAX_RI 
-END IF 
-!
-IF ( GRELAX )  THEN
-  LHORELAX_RI=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX THE RI FIELD'
-  WRITE(ILUOUT,FMT=*) 'TOWARDS THE LARGE SCALE FIELD OF MODEL',NDAD(KMI)
-  WRITE(ILUOUT,FMT=*) 'BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RI=FALSE'
-END IF
-!
-IF (KMI==1) THEN
-  GRELAX = .NOT.(OUSERG)  .AND.  LUSERG  .AND. LHORELAX_RG
-ELSE
-  GRELAX = .NOT.(LUSERG_G(NDAD(KMI)))  .AND.  LUSERG_G(KMI).AND. LHORELAX_RG 
-END IF 
-!
-IF ( GRELAX )  THEN
-  LHORELAX_RG=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX THE RG FIELD'
-  WRITE(ILUOUT,FMT=*) 'TOWARDS THE LARGE SCALE FIELD OF MODEL',NDAD(KMI)
-  WRITE(ILUOUT,FMT=*) 'BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RG=FALSE'
-END IF
-!
-IF (KMI==1) THEN
-  GRELAX = .NOT.(OUSERH)  .AND.  LUSERH  .AND. LHORELAX_RH
-ELSE
-  GRELAX = .NOT.(LUSERH_G(NDAD(KMI)))  .AND.  LUSERH_G(KMI).AND. LHORELAX_RH 
-END IF 
-!
-IF ( GRELAX )  THEN
-  LHORELAX_RH=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX THE RH FIELD'
-  WRITE(ILUOUT,FMT=*) 'TOWARDS THE LARGE SCALE FIELD OF MODEL',NDAD(KMI)
-  WRITE(ILUOUT,FMT=*) 'BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RH=FALSE'
-END IF
-!
-IF (KMI==1) THEN
-  GRELAX = .NOT.(OUSERS)  .AND.  LUSERS  .AND. LHORELAX_RS
-ELSE
-  GRELAX = .NOT.(LUSERS_G(NDAD(KMI)))  .AND.  LUSERS_G(KMI).AND. LHORELAX_RS 
-END IF 
-!
-IF ( GRELAX )  THEN
-  LHORELAX_RS=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX THE RS FIELD'
-  WRITE(ILUOUT,FMT=*) 'TOWARDS THE LARGE SCALE FIELD OF MODEL',NDAD(KMI)
-  WRITE(ILUOUT,FMT=*) 'BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_RS=FALSE'
-END IF
-!
-IF (KMI==1) THEN
-  GRELAX = HTURB=='NONE'  .AND.  LUSETKE(1).AND. LHORELAX_TKE
-ELSE
-  GRELAX = .NOT.(LUSETKE(NDAD(KMI)))  .AND.  LUSETKE(KMI) .AND. LHORELAX_TKE 
-END IF 
-!
-IF ( GRELAX )  THEN
-  LHORELAX_TKE=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX THE TKE FIELD'
-  WRITE(ILUOUT,FMT=*) 'TOWARDS THE LARGE SCALE FIELD OF MODEL',NDAD(KMI)
-  WRITE(ILUOUT,FMT=*) 'BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_TKE=FALSE'
-END IF
-!
-!
-DO JSV = 1,NSV_USER
-!
-  IF (KMI==1) THEN
-    GRELAX = KSV_USER<JSV  .AND.  LUSESV(JSV,1).AND.  LHORELAX_SV(JSV) 
-  ELSE
-    GRELAX = .NOT.(LUSESV(JSV,NDAD(KMI))) .AND. LUSESV(JSV,KMI) .AND. LHORELAX_SV(JSV)   
-  END IF 
-  !
-  IF ( GRELAX )  THEN
-  LHORELAX_SV(JSV)=.FALSE.
-  WRITE(UNIT=ILUOUT,FMT=9001) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO RELAX THE ',JSV,'  SV FIELD'
-  WRITE(ILUOUT,FMT=*) 'TOWARDS THE LARGE SCALE FIELD OF MODEL',NDAD(KMI)
-  WRITE(ILUOUT,FMT=*) 'BUT IT DOES NOT EXIST.'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LHORELAX_SV(',JSV,')=FALSE'
- END IF
-END DO
-!
-!*       4.6   consistency in LES diagnostics choices
-!
-IF (CLES_NORM_TYPE=='EKMA' .AND. .NOT. LCORIO) THEN
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE THE EKMAN NORMALIZATION'
-  WRITE(ILUOUT,FMT=*) 'BUT CORIOLIS FORCE IS NOT USED (LCORIO=.FALSE.)'
-  WRITE(ILUOUT,FMT=*) 'THEN, NO NORMALIZATION IS PERFORMED'
-  CLES_NORM_TYPE='NONE'
-END IF
-!
-!*       4.7  Check the coherence with LNUMDIFF
-!
-IF (L1D .AND. (LNUMDIFU .OR. LNUMDIFTH .OR. LNUMDIFSV) ) THEN
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE HORIZONTAL DIFFUSION '
-  WRITE(ILUOUT,FMT=*) 'BUT YOU ARE IN A COLUMN MODEL (L1D=.TRUE.).'
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LNUMDIFU and LNUMDIFTH and LNUMDIFSV'
-  WRITE(ILUOUT,FMT=*) 'ARE SET TO FALSE'
-  LNUMDIFU=.FALSE.
-  LNUMDIFTH=.FALSE.
-  LNUMDIFSV=.FALSE.
-END IF
-!
-IF (.NOT. LNUMDIFTH .AND. LZDIFFU) THEN
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(ILUOUT,FMT=*) 'YOU DO NOT WANT TO USE HORIZONTAL DIFFUSION (LNUMDIFTH=F)'
-  WRITE(ILUOUT,FMT=*) 'BUT YOU WANT TO USE Z-NUMERICAL DIFFUSION  '
-  WRITE(ILUOUT,FMT=*) 'THEREFORE LNUMDIFTH IS SET TO TRUE'
-  LNUMDIFTH=.TRUE.
-END IF
-!
-!*       4.8  Other
-!
-IF (XTNUDGING < 4.*XTSTEP) THEN
-  XTNUDGING = 4.*XTSTEP
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(UNIT=ILUOUT,FMT='("TIME SCALE FOR NUDGING CAN NOT BE SMALLER THAN",  &
-                 &   " FOUR TIMES THE TIME STEP")')
-  WRITE(ILUOUT,FMT=*) 'XTNUDGING is SET TO ',XTNUDGING
-END IF
-!
-!
-IF (XWAY(KMI) == 3. ) THEN
-  XWAY(KMI) = 2.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(UNIT=ILUOUT,FMT='("XWAY=3 DOES NOT EXIST ANYMORE; ", &                               
-                 &   " IT IS REPLACED BY XWAY=2 ")')
-END IF
-!
-IF ( (KMI == 1) .AND. XWAY(KMI) /= 0. ) THEN
-  XWAY(KMI) = 0.
-  WRITE(UNIT=ILUOUT,FMT=9002) KMI
-  WRITE(UNIT=ILUOUT,FMT='("XWAY MUST BE EQUAL TO 0 FOR DAD MODEL")')   
-END IF
-!
-!JUANZ ZRESI solver need BSPLITTING 
-IF ( CPRESOPT == 'ZRESI' .AND. CSPLIT /= 'BSPLITTING' ) THEN
-  WRITE(UNIT=ILUOUT,FMT=9003) KMI
-  WRITE(UNIT=ILUOUT,FMT='("Paralleliez in Z solver CPRESOPT=ZRESI need also CSPLIT=BSPLITTING ")')
-  WRITE(ILUOUT,FMT=*) ' ERROR you have to set also CSPLIT=BSPLITTING '
- !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-END IF
-!
-IF ( LEN_TRIM(HINIFILEPGD)>0 ) THEN
-  IF ( CINIFILEPGD/=HINIFILEPGD ) THEN 
-    WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(ILUOUT,FMT=*) ' ERROR : in EXSEG1.nam, in NAM_LUNITn you have CINIFILEPGD= ',CINIFILEPGD
-    WRITE(ILUOUT,FMT=*) ' whereas in .des you have CINIFILEPGD= ',HINIFILEPGD
-    WRITE(ILUOUT,FMT=*) ' Please check your Namelist '
-    WRITE(ILUOUT,FMT=*) ' For example, you may have specified the un-nested PGD file instead of the nested PGD file '
-    WRITE(ILUOUT,FMT=*) 
-    WRITE(ILUOUT,FMT=*) '###############'
-    WRITE(ILUOUT,FMT=*) ' MESONH ABORTS'
-    WRITE(ILUOUT,FMT=*) '###############'
-    WRITE(ILUOUT,FMT=*) 
- !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
-  END IF
-ELSE
-  CINIFILEPGD = ''
-!* note that after a spawning, there is no value for CINIFILEPGD in the .des file,
-!  so the checking cannot be made if the user starts a simulation directly from
-!  a spawned file (without the prep_real_case stage)
-END IF
-!-------------------------------------------------------------------------------
-!
-!*       5.    WE DO NOT FORGET TO UPDATE ALL DOLLARN NAMELIST VARIABLES
-!              ---------------------------------------------------------
-!
-CALL UPDATE_NAM_LUNITN
-CALL UPDATE_NAM_CONFN
-CALL UPDATE_NAM_DRAGTREEN
-CALL UPDATE_NAM_DRAGBLDGN
-CALL UPDATE_NAM_DYNN
-CALL UPDATE_NAM_ADVN
-CALL UPDATE_NAM_PARAMN
-CALL UPDATE_NAM_PARAM_RADN
-#ifdef MNH_ECRAD
-CALL UPDATE_NAM_PARAM_ECRADN
-#endif
-CALL UPDATE_NAM_PARAM_KAFRN
-CALL UPDATE_NAM_PARAM_MFSHALLN
-CALL UPDATE_NAM_LBCN
-CALL UPDATE_NAM_NUDGINGN
-CALL UPDATE_NAM_TURBN
-CALL UPDATE_NAM_BLANKN
-CALL UPDATE_NAM_CH_MNHCN
-CALL UPDATE_NAM_CH_SOLVERN
-CALL UPDATE_NAM_SERIESN
-CALL UPDATE_NAM_BLOWSNOWN
-CALL UPDATE_NAM_STATIONn
-!-------------------------------------------------------------------------------
-WRITE(UNIT=ILUOUT,FMT='(/)')
-!-------------------------------------------------------------------------------
-!
-!*       6.    FORMATS
-!              -------
-!
-9000  FORMAT(/,'NOTE  IN READ_EXSEG FOR MODEL ', I2, ' : ',/, &
-             '--------------------------------')
-9001  FORMAT(/,'CAUTION ERROR IN READ_EXSEG FOR MODEL ', I2,' : ',/, &
-             '----------------------------------------' )
-9002  FORMAT(/,'WARNING IN READ_EXSEG FOR MODEL ', I2,' : ',/, &
-             '----------------------------------' )
-9003  FORMAT(/,'FATAL ERROR IN READ_EXSEG FOR MODEL ', I2,' : ',/, &
-             '--------------------------------------' )
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE READ_EXSEG_n
-- 
GitLab