From a994f306ef9584ffcc291b0c3b668497db9bc169 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Fri, 27 Jan 2023 18:14:23 +0100
Subject: [PATCH] Quentin 05/01/2023: adapt MESONH interfaces with PHYEX

---
 src/mesonh/ext/deallocate_model1.f90 |  703 -----
 src/mesonh/ext/default_desfmn.f90    | 1481 -----------
 src/mesonh/ext/diagnos_les_mf.f90    |  244 --
 src/mesonh/ext/ground_paramn.f90     | 1230 ---------
 src/mesonh/ext/ibm_affectv.f90       |  402 ---
 src/mesonh/ext/ice_adjust_bis.f90    |  160 --
 src/mesonh/ext/ini_lesn.f90          | 2007 ---------------
 src/mesonh/ext/ini_radar.f90         |  234 --
 src/mesonh/ext/ini_segn.f90          |  494 ----
 src/mesonh/ext/les_cloud_masksn.f90  |  419 ---
 src/mesonh/ext/les_ini_timestepn.f90 |  407 ---
 src/mesonh/ext/lesn.f90              | 3580 --------------------------
 src/mesonh/ext/modn_turbn.f90        |  167 --
 src/mesonh/ext/phys_paramn.f90       | 1694 ------------
 src/mesonh/ext/prep_ideal_case.f90   | 1950 --------------
 src/mesonh/ext/prep_real_case.f90    | 1421 ----------
 src/mesonh/ext/resolved_cloud.f90    | 1136 --------
 src/mesonh/ext/set_rsou.f90          | 1640 ------------
 src/mesonh/ext/shallow_mf_pack.f90   |  383 ---
 src/mesonh/ext/switch_sbg_lesn.f90   |  589 -----
 src/mesonh/ext/write_lesn.f90        | 1319 ----------
 21 files changed, 21660 deletions(-)
 delete mode 100644 src/mesonh/ext/deallocate_model1.f90
 delete mode 100644 src/mesonh/ext/default_desfmn.f90
 delete mode 100644 src/mesonh/ext/diagnos_les_mf.f90
 delete mode 100644 src/mesonh/ext/ground_paramn.f90
 delete mode 100644 src/mesonh/ext/ibm_affectv.f90
 delete mode 100644 src/mesonh/ext/ice_adjust_bis.f90
 delete mode 100644 src/mesonh/ext/ini_lesn.f90
 delete mode 100644 src/mesonh/ext/ini_radar.f90
 delete mode 100644 src/mesonh/ext/ini_segn.f90
 delete mode 100644 src/mesonh/ext/les_cloud_masksn.f90
 delete mode 100644 src/mesonh/ext/les_ini_timestepn.f90
 delete mode 100644 src/mesonh/ext/lesn.f90
 delete mode 100644 src/mesonh/ext/modn_turbn.f90
 delete mode 100644 src/mesonh/ext/phys_paramn.f90
 delete mode 100644 src/mesonh/ext/prep_ideal_case.f90
 delete mode 100644 src/mesonh/ext/prep_real_case.f90
 delete mode 100644 src/mesonh/ext/resolved_cloud.f90
 delete mode 100644 src/mesonh/ext/set_rsou.f90
 delete mode 100644 src/mesonh/ext/shallow_mf_pack.f90
 delete mode 100644 src/mesonh/ext/switch_sbg_lesn.f90
 delete mode 100644 src/mesonh/ext/write_lesn.f90

diff --git a/src/mesonh/ext/deallocate_model1.f90 b/src/mesonh/ext/deallocate_model1.f90
deleted file mode 100644
index 4a940c6d8..000000000
--- a/src/mesonh/ext/deallocate_model1.f90
+++ /dev/null
@@ -1,703 +0,0 @@
-!MNH_LIC Copyright 1997-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_DEALLOCATE_MODEL1
-!############################
-!
-INTERFACE
-!
-SUBROUTINE DEALLOCATE_MODEL1 (KCALL)
-!
-INTEGER, INTENT(IN) :: KCALL
-!
-END SUBROUTINE DEALLOCATE_MODEL1
-!
-END INTERFACE 
-!
-END MODULE MODI_DEALLOCATE_MODEL1
-!
-!
-!     ####################################
-      SUBROUTINE DEALLOCATE_MODEL1 (KCALL)
-!     ####################################
-!
-!!****  *DEALLOCATE_MODEL1* - deallocate all model1 fields
-!!
-!!    PURPOSE
-!!    -------
-!       deallocate all model #1 fields in order to spare memory in spawning
-!
-!!**  METHOD
-!!    ------
-!!   
-!!    KCALL = 1   --> deallocates all SOURCES, LES, FORCING and SOLVER variables
-!!
-!!    KCALL = 2   --> deallocates all METRIC, RADIATION and CORIOLIS variables
-!!
-!!    KCALL = 3   --> deallocates all other variables of model1
-!!
-!!    KCALL = 4   --> deallocates all variables common to ALL models
-!!
-!!    1 + 2         --> all variables used in spawning
-!!    1 + 2 + 3 + 4 --> in diag after a file has been treated
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    REFERENCE
-!!    ---------
-!!      
-!!
-!!    AUTHOR
-!!    ------
-!!  	V. Masson       * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original     08/12/97
-!!
-!!                   20/05/98  use the LB fields
-!!                   15/03/99 new PGD fields
-!!                   08/03/01 D.Gazen add chemical emission field
-!!                   01/2004 V. Masson surface externalization
-!!                   06/2012 M.Tomasini add 2D nesting ADVFRC
-!!                   10/2016 M.Mazoyer New KHKO output fields
-!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
-!  C. Lac         02/2019: add rain fraction as an output field
-!  P. Wautelet 07/06/2019: bugfix: deallocate XLSRVM only if allocated
-!  S. Riette      04/2020: XHL* fields
-!  A. Costes      12:2021: Blaze Fire model variables
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-USE MODD_REF
-!
-USE MODD_METRICS_n
-USE MODD_FIELD_n
-USE MODD_DUMMY_GR_FIELD_n
-USE MODD_LSFIELD_n
-USE MODD_GRID_n
-USE MODD_REF_n
-USE MODD_CURVCOR_n
-USE MODD_DYN_n
-USE MODD_DEEP_CONVECTION_n
-USE MODD_RADIATIONS_n
-USE MODD_FRC
-USE MODD_PRECIP_n
-USE MODD_ELEC_n
-USE MODD_PASPOL_n
-USE MODD_RAIN_ICE_PARAM
-USE MODD_RAIN_ICE_DESCR
-USE MODD_PARAM_n , ONLY : CCLOUD
-USE MODE_MODELN_HANDLER
-!
-! Modif 2D
-USE MODD_LATZ_EDFLX                      ! For ADVFRC and EDDY FLUXES
-USE MODD_DEF_EDDY_FLUX_n           ! For EDDY FLUXES
-USE MODD_DEF_EDDYUV_FLUX_n         ! For EDDY FLUXES
-!
-USE MODD_2D_FRC
-USE MODD_ADVFRC_n                  ! For ADVFRC and EDDY FLUXES
-USE MODD_RELFRC_n
-USE MODD_ADV_n
-USE MODD_PAST_FIELD_n
-USE MODD_TURB_n
-USE MODD_PARAM_C2R2, ONLY :LSUPSAT
-!
-IMPLICIT NONE
-!
-!*       0.1   declarations of arguments
-!
-INTEGER, INTENT(IN) :: KCALL ! number of times this routine has been called
-INTEGER :: IMI ! Current Model index
-!
-!*       0.2   declarations of local variables
-!
-!-------------------------------------------------------------------------------
-!
-! Save current Model index and switch to model 1 variables
-IMI = GET_CURRENT_MODEL_INDEX()
-CALL GOTO_MODEL(1)
-!*       1.    Module MODD_FIELD$n
-!
-IF ( KCALL==3 ) THEN
-  IF (CUVW_ADV_SCHEME(1:3)=='CEN'.AND. CTEMP_SCHEME=='LEFR') THEN
-    DEALLOCATE(XUM)
-    DEALLOCATE(XVM)
-    DEALLOCATE(XWM)
-    DEALLOCATE(XDUM)
-    DEALLOCATE(XDVM)
-    DEALLOCATE(XDWM)
-  END IF
-  DEALLOCATE(XUT)
-  DEALLOCATE(XVT)
-  DEALLOCATE(XWT)
-  DEALLOCATE(XTHT)
-  IF (L2D_ADV_FRC) THEN
-    IF (ASSOCIATED(XDTHFRC)) DEALLOCATE(XDTHFRC)
-    IF (ASSOCIATED(XDRVFRC)) DEALLOCATE(XDRVFRC)
-    IF (ASSOCIATED(TDTADVFRC)) DEALLOCATE(TDTADVFRC)
-  END IF
-    IF (L2D_REL_FRC) THEN
-    IF (ASSOCIATED(XTHREL)) DEALLOCATE(XTHREL)
-    IF (ASSOCIATED(XRVREL)) DEALLOCATE(XRVREL)
-    IF (ASSOCIATED(TDTRELFRC)) DEALLOCATE(TDTRELFRC)
-  END IF
-  ! DEALLOCATE EDDY FLUXES 
-  IF (LTH_FLX) THEN
-    DEALLOCATE(XVTH_FLUX_M)
-    DEALLOCATE(XWTH_FLUX_M)
-  END IF
-  IF (LUV_FLX) THEN
-    DEALLOCATE(XVU_FLUX_M)
-  END IF
-END IF
-IF ( KCALL==1 ) THEN
-  DEALLOCATE(XRUS)
-  DEALLOCATE(XRVS)
-  DEALLOCATE(XRWS)
-  DEALLOCATE(XRTHS)
-  DEALLOCATE(XRUS_PRES, XRVS_PRES, XRWS_PRES )                
-  DEALLOCATE(XRTHS_CLD )
-END IF
-!
-IF ( KCALL==3 ) THEN
-  IF (ASSOCIATED(XTKET)) DEALLOCATE(XTKET)
-END IF
-IF ( ASSOCIATED(XRTKES) .AND. KCALL==1 ) THEN
-  DEALLOCATE(XRTKES)
-END IF
-!
-IF ( KCALL==3 ) THEN
-  DEALLOCATE(XPABST)
-!
-  DEALLOCATE(XRT)
-END IF
-!
-IF ( KCALL==1 ) THEN
-  DEALLOCATE(XRRS)
-  DEALLOCATE(XRRS_CLD)
-END IF
-!
-IF ( ASSOCIATED(XSRCT) .AND. KCALL==3 ) THEN
-  DEALLOCATE(XSRCT)
-  DEALLOCATE(XSIGS)
-END IF   
-!
-IF ( ASSOCIATED(XHLC_HRC) .AND. KCALL==3 ) THEN
-  DEALLOCATE(XHLC_HRC)
-  DEALLOCATE(XHLC_HCF)
-  DEALLOCATE(XHLI_HRI)
-  DEALLOCATE(XHLI_HCF)
-END IF
-!
-IF ( ASSOCIATED(XCLDFR) .AND. KCALL==2 ) THEN
-  DEALLOCATE(XCLDFR)
-END IF   
-!
-IF ( ASSOCIATED(XICEFR) .AND. KCALL==2 ) THEN
-  DEALLOCATE(XICEFR)
-END IF   
-!
-IF ( ASSOCIATED(XRAINFR) .AND. KCALL==2 ) THEN
-  DEALLOCATE(XRAINFR)
-END IF   
-!
-IF ( KCALL == 3 ) THEN
-  DEALLOCATE(XSVT)
-END IF
-IF ( KCALL == 1 ) THEN
-  DEALLOCATE(XRSVS)
-  DEALLOCATE(XRSVS_CLD)
-END IF
-!
-IF ((CCLOUD == 'KHKO') .AND. LSUPSAT)  THEN
-    DEALLOCATE(XSUPSAT)
-    DEALLOCATE(XNACT)
-    DEALLOCATE(XNPRO)
-    DEALLOCATE(XSSPRO)
-END IF
-!
-IF (ASSOCIATED(XDUMMY_GR_FIELDS) .AND. KCALL==3 ) THEN
-  DEALLOCATE(XDUMMY_GR_FIELDS)
-END IF
-
-IF (ASSOCIATED(XLSPHI)) THEN
-  DEALLOCATE(XLSPHI)
-END IF
-
-IF (ASSOCIATED(XBMAP)) THEN
-  DEALLOCATE(XBMAP)
-END IF
-
-IF (ASSOCIATED(XFMRFA)) THEN
-  DEALLOCATE(XFMRFA)
-END IF
-
-IF (ASSOCIATED(XFMWF0)) THEN
-  DEALLOCATE(XFMWF0)
-END IF
-
-IF (ASSOCIATED(XFMR0)) THEN
-  DEALLOCATE(XFMR0)
-END IF
-
-IF (ASSOCIATED(XFMR00)) THEN
-  DEALLOCATE(XFMR00)
-END IF
-
-IF (ASSOCIATED(XFMIGNITION)) THEN
-  DEALLOCATE(XFMIGNITION)
-END IF
-
-IF (ASSOCIATED(XFMFUELTYPE)) THEN
-  DEALLOCATE(XFMFUELTYPE)
-END IF
-
-IF (ASSOCIATED(XFIRETAU)) THEN
-  DEALLOCATE(XFIRETAU)
-END IF
-
-IF (ASSOCIATED(XFLUXPARAMH)) THEN
-  DEALLOCATE(XFLUXPARAMH)
-END IF
-
-IF (ASSOCIATED(XFLUXPARAMW)) THEN
-  DEALLOCATE(XFLUXPARAMW)
-END IF
-
-IF (ASSOCIATED(XFIRERW)) THEN
-  DEALLOCATE(XFIRERW)
-END IF
-
-IF (ASSOCIATED(XFMASE)) THEN
-  DEALLOCATE(XFMASE)
-END IF
-
-IF (ASSOCIATED(XFMAWC)) THEN
-  DEALLOCATE(XFMAWC)
-END IF
-
-IF (ASSOCIATED(XFMWALKIG)) THEN
-  DEALLOCATE(XFMWALKIG)
-END IF
-
-IF (ASSOCIATED(XFMFLUXHDH)) THEN
-  DEALLOCATE(XFMFLUXHDH)
-END IF
-
-IF (ASSOCIATED(XFMFLUXHDW)) THEN
-  DEALLOCATE(XFMFLUXHDW)
-END IF
-
-IF (ASSOCIATED(XFMHWS)) THEN
-  DEALLOCATE(XFMHWS)
-END IF
-
-IF (ASSOCIATED(XFMWINDU)) THEN
-  DEALLOCATE(XFMWINDU)
-END IF
-
-IF (ASSOCIATED(XFMWINDV)) THEN
-  DEALLOCATE(XFMWINDV)
-END IF
-
-IF (ASSOCIATED(XFMWINDW)) THEN
-  DEALLOCATE(XFMWINDW)
-END IF
-
-IF (ASSOCIATED(XFMGRADOROX)) THEN
-  DEALLOCATE(XFMGRADOROX)
-END IF
-
-IF (ASSOCIATED(XFMGRADOROY)) THEN
-  DEALLOCATE(XFMGRADOROY)
-END IF
-
-IF (ASSOCIATED(XGRADLSPHIX)) THEN
-  DEALLOCATE(XGRADLSPHIX)
-END IF
-
-IF (ASSOCIATED(XGRADLSPHIY)) THEN
-  DEALLOCATE(XGRADLSPHIY)
-END IF
-
-IF (ASSOCIATED(XFIREWIND)) THEN
-  DEALLOCATE(XFIREWIND)
-END IF
-
-IF (ASSOCIATED(XLSPHI2D)) THEN
-  DEALLOCATE(XLSPHI2D)
-END IF
-
-IF (ASSOCIATED(XGRADLSPHIX2D)) THEN
-  DEALLOCATE(XGRADLSPHIX2D)
-END IF
-
-IF (ASSOCIATED(XGRADLSPHIY2D)) THEN
-  DEALLOCATE(XGRADLSPHIY2D)
-END IF
-
-IF (ASSOCIATED(XGRADMASKX)) THEN
-  DEALLOCATE(XGRADMASKX)
-END IF
-
-IF (ASSOCIATED(XGRADMASKY)) THEN
-  DEALLOCATE(XGRADMASKY)
-END IF
-
-IF (ASSOCIATED(XSURFRATIO2D)) THEN
-  DEALLOCATE(XSURFRATIO2D)
-END IF
-
-IF (ASSOCIATED(XLSDIFFUX2D)) THEN
-  DEALLOCATE(XLSDIFFUX2D)
-END IF
-
-IF (ASSOCIATED(XLSDIFFUY2D)) THEN
-  DEALLOCATE(XLSDIFFUY2D)
-END IF
-
-IF (ASSOCIATED(XFIRERW2D)) THEN
-  DEALLOCATE(XFIRERW2D)
-END IF
-!
-!*       3.    Module MODD_GRID$n
-!
-IF ( ASSOCIATED(XLON) .AND. KCALL == 3 ) THEN
-  DEALLOCATE(XLON)
-  DEALLOCATE(XLAT)
-  DEALLOCATE(XMAP)
-END IF
-!
-IF ( KCALL == 3 ) THEN
-  !Philippe W.: do not deallocate XXHAT, XYHAT and XZHAT because they are needed later on
-  !As they are 1D, their memory footprint is negligible
-  ! DEALLOCATE(XXHAT)
-  DEALLOCATE(XDXHAT)
-  ! DEALLOCATE(XYHAT)
-  DEALLOCATE(XDYHAT)
-  DEALLOCATE(XZS)
-  DEALLOCATE(XZSMT)
-  DEALLOCATE(XZZ)
-  ! DEALLOCATE(XZHAT)
-END IF
-!
-IF ( KCALL == 2 ) THEN
-  DEALLOCATE(XDIRCOSZW)
-  DEALLOCATE(XDIRCOSXW)
-  DEALLOCATE(XDIRCOSYW)
-  DEALLOCATE(XCOSSLOPE)
-  DEALLOCATE(XSINSLOPE)
-END IF
-
-IF ( KCALL == 2 ) THEN
-  DEALLOCATE(XDXX)
-  DEALLOCATE(XDYY)
-  DEALLOCATE(XDZX)
-  DEALLOCATE(XDZY)
-  DEALLOCATE(XDZZ)
-END IF
-!
-!*       4.    Modules MODD_REF and  MODD_REF$n
-!
-IF ( KCALL == 4 ) THEN
-  DEALLOCATE(XRHODREFZ)
-  DEALLOCATE(XTHVREFZ)
-END IF
-!
-IF ( KCALL == 3 ) THEN
-  DEALLOCATE(XRHODREF)
-  DEALLOCATE(XTHVREF)
-  DEALLOCATE(XEXNREF)
-  DEALLOCATE(XRHODJ)
-  IF ( ASSOCIATED(XRVREF) ) THEN
-    DEALLOCATE(XRVREF)  
-  END IF
-END IF
-!
-!*       5.    Module MODD_CURVCOR$n
-!
-IF ( ASSOCIATED(XCORIOX) .AND. KCALL == 2 ) THEN
-  DEALLOCATE(XCORIOX)
-  DEALLOCATE(XCORIOY)
-END IF
-IF ( KCALL == 2 ) THEN
-  DEALLOCATE(XCORIOZ)
-END IF
-IF ( ASSOCIATED(XCURVX) .AND. KCALL == 2) THEN
-  DEALLOCATE(XCURVX)
-  DEALLOCATE(XCURVY)
-END IF
-!
-!*       6.    Module MODD_DYN$n
-!
-IF ( KCALL == 1 ) THEN
-  DEALLOCATE(XBFY)
-  DEALLOCATE(XAF,XCF)
-  DEALLOCATE(XTRIGSX)
-  DEALLOCATE(XTRIGSY)
-  DEALLOCATE(XRHOM)
-  DEALLOCATE(XALK)
-  DEALLOCATE(XALKW)
-  DEALLOCATE(XALKBAS)
-  DEALLOCATE(XALKWBAS)
-  IF ( ASSOCIATED(XKURELAX) ) THEN
-    DEALLOCATE(XKURELAX)
-    DEALLOCATE(XKVRELAX)
-    DEALLOCATE(XKWRELAX)
-    DEALLOCATE(LMASK_RELAX)
-  END IF
-END IF
-!
-!*       7.    Larger Scale variables (Module MODD_LSFIELD$n)
-!
-IF ( KCALL == 3 ) THEN
-  DEALLOCATE(XLSUM)
-  DEALLOCATE(XLSVM)
-  DEALLOCATE(XLSWM)
-  DEALLOCATE(XLSTHM)
-  IF(ASSOCIATED(XLSRVM)) DEALLOCATE(XLSRVM)
-  IF (ASSOCIATED(XLBXUM)) THEN
-    DEALLOCATE(XLBXUM)
-    DEALLOCATE(XLBYUM)
-    DEALLOCATE(XLBXVM)
-    DEALLOCATE(XLBYVM)
-    DEALLOCATE(XLBXWM)
-    DEALLOCATE(XLBYWM)
-    DEALLOCATE(XLBXTHM)
-    DEALLOCATE(XLBYTHM)
-  END IF
-  IF (ASSOCIATED(XLBXTKEM)) THEN
-    DEALLOCATE(XLBXTKEM)
-    DEALLOCATE(XLBYTKEM)
-  END IF
-  IF (ASSOCIATED(XLBXRM)) THEN
-    DEALLOCATE(XLBXRM)
-    DEALLOCATE(XLBYRM)
-  END IF
-  IF (ASSOCIATED(XLBXSVM)) THEN
-    DEALLOCATE(XLBXSVM)
-    DEALLOCATE(XLBYSVM)
-  END IF
-END IF
-!
-                  ! steady LS fields only for model 1 or independent models
-!
-IF( ASSOCIATED(XLSUS) .AND. KCALL == 3 ) THEN
-    DEALLOCATE(XLSUS)
-    DEALLOCATE(XLSVS)
-    DEALLOCATE(XLSWS)
-    DEALLOCATE(XLSTHS)
-    IF(ASSOCIATED(XLSRVS))  DEALLOCATE(XLSRVS)
-!
-    IF ( ASSOCIATED(XLBXUS) ) THEN
-      DEALLOCATE(XLBXUS)
-      DEALLOCATE(XLBYUS)
-      DEALLOCATE(XLBXVS)
-      DEALLOCATE(XLBYVS)
-      DEALLOCATE(XLBXWS)
-      DEALLOCATE(XLBYWS)
-      DEALLOCATE(XLBXTHS)
-      DEALLOCATE(XLBYTHS)
-    END IF
-    IF ( ASSOCIATED(XLBXTKES) ) THEN
-      DEALLOCATE(XLBXTKES)
-      DEALLOCATE(XLBYTKES)
-    END IF
-!
-    IF ( ASSOCIATED(XLBXRS) ) THEN
-      DEALLOCATE(XLBXRS)
-      DEALLOCATE(XLBYRS)
-    END IF
-!
-    IF ( ASSOCIATED(XLBXSVS) ) THEN
-      DEALLOCATE(XLBXSVS)
-      DEALLOCATE(XLBYSVS)
-    END IF
-!
-    IF ( ASSOCIATED(XCOEFLIN_LBXM) ) THEN
-      DEALLOCATE(XCOEFLIN_LBXM)
-      DEALLOCATE(NKLIN_LBXM)
-    END IF
-
-    IF ( ASSOCIATED(XCOEFLIN_LBYM) ) THEN
-      DEALLOCATE(XCOEFLIN_LBYM)
-      DEALLOCATE(NKLIN_LBYM)
-    END IF
-
-    IF ( ASSOCIATED(XCOEFLIN_LBXU) ) THEN
-      DEALLOCATE(XCOEFLIN_LBXU)
-      DEALLOCATE(NKLIN_LBXU)
-      DEALLOCATE(XCOEFLIN_LBYU)
-      DEALLOCATE(NKLIN_LBYU)
-      DEALLOCATE(XCOEFLIN_LBXV)
-      DEALLOCATE(NKLIN_LBXV)
-      DEALLOCATE(XCOEFLIN_LBYV)
-      DEALLOCATE(NKLIN_LBYV)
-      DEALLOCATE(XCOEFLIN_LBXW)
-      DEALLOCATE(NKLIN_LBXW)
-      DEALLOCATE(XCOEFLIN_LBYW)
-      DEALLOCATE(NKLIN_LBYW)
-    END IF 
-END IF
-!
-!*       8.    L.E.S. variables 
-!
-
-!
-!*       9.    Module MODD_RADIATIONS$n
-!
-!
-IF ( ASSOCIATED(XSLOPANG) .AND. KCALL == 2 ) THEN
-  DEALLOCATE(XSLOPANG)
-  DEALLOCATE(XSLOPAZI)
-  DEALLOCATE(XDTHRAD)
-  DEALLOCATE(XFLALWD)
-  DEALLOCATE(XDIRFLASWD)
-  DEALLOCATE(XSCAFLASWD)
-  DEALLOCATE(XDIRSRFSWD)
-  DEALLOCATE(XSWU)
-  DEALLOCATE(XSWD)
-  DEALLOCATE(XLWU)
-  DEALLOCATE(XLWD)
-  DEALLOCATE(XDTHRADSW)
-  DEALLOCATE(XDTHRADLW)
-  DEALLOCATE(XRADEFF)
-  DEALLOCATE(NCLEARCOL_TM1)
-END IF
-IF (ASSOCIATED(XSTATM)) DEALLOCATE(XSTATM)
-!
-!*      10.    Module MODD_DEEP_CONVECTION$n
-!
-IF ( ASSOCIATED(XDTHCONV) .AND. KCALL == 2 ) THEN
-  DEALLOCATE(NCOUNTCONV)
-  DEALLOCATE(XDTHCONV)
-  DEALLOCATE(XDRVCONV)
-  DEALLOCATE(XDRCCONV)
-  DEALLOCATE(XDRICONV)
-END IF
-!
-IF ( ASSOCIATED(XPRCONV) .AND. KCALL == 2 ) THEN
-  DEALLOCATE(XPRCONV)
-  DEALLOCATE(XPACCONV)
-END IF
-IF ( ASSOCIATED(XPRSCONV) .AND. KCALL == 2  ) THEN
-  DEALLOCATE(XPRSCONV)
-END IF
-!
-IF ( ASSOCIATED(XDSVCONV) .AND. KCALL == 2 ) THEN
-  DEALLOCATE(XDSVCONV)
-END IF
-!
-!*     11.   Forcing variables (Module MODD_FRC)
-!
-IF ( ALLOCATED(XUFRC) .AND. KCALL == 4 ) THEN
-    DEALLOCATE(TDTFRC)
-    DEALLOCATE(XUFRC)
-    DEALLOCATE(XVFRC)
-    DEALLOCATE(XWFRC)
-    DEALLOCATE(XTHFRC)
-    DEALLOCATE(XRVFRC)
-    DEALLOCATE(XTENDTHFRC)
-    DEALLOCATE(XTENDRVFRC)
-    DEALLOCATE(XGXTHFRC)
-    DEALLOCATE(XGYTHFRC)
-    DEALLOCATE(XPGROUNDFRC)
-END IF
-!
-!*     12.     Module MODD_ICE_CONC$n
-!
-IF ( ASSOCIATED(XCIT) .AND. KCALL == 2 ) THEN
-  DEALLOCATE(XCIT)
-END IF
-!
-!*     13.     Module MODD_PRECIP$n
-!
-IF ( ASSOCIATED(XINPRC) .AND. KCALL == 3 ) THEN
-  DEALLOCATE(XINPRC)
-  DEALLOCATE(XACPRC)
-END IF
-!
-IF ( ASSOCIATED(XINPRR) .AND. KCALL == 3 ) THEN
-  DEALLOCATE(XINPRR)
-  DEALLOCATE(XACPRR)
-END IF
-!
-IF ( ASSOCIATED(XINPRR3D) .AND. KCALL == 3 ) THEN
-  DEALLOCATE(XINPRR3D)
-  DEALLOCATE(XEVAP3D)
-END IF
-!
-IF ( ASSOCIATED(XINPRS) .AND. KCALL == 3 ) THEN
-  DEALLOCATE(XINPRS)
-  DEALLOCATE(XACPRS)
-  DEALLOCATE(XINPRG)
-  DEALLOCATE(XACPRG)
-END IF
-!
-IF ( ASSOCIATED(XINPRH) .AND. KCALL == 3 ) THEN
-  DEALLOCATE(XINPRH)
-  DEALLOCATE(XACPRH)
-END IF
-!
-!*     13b.     Module MODD_ELEC$n
-!
-IF ( ASSOCIATED(XNI_SDRYG) .AND. KCALL == 3 ) THEN
-  DEALLOCATE(XNI_SDRYG)
-  DEALLOCATE(XNI_IDRYG)
-  DEALLOCATE(XNI_IAGGS)
-  DEALLOCATE(XEW)
-  DEALLOCATE(XIND_RATE)
-END IF
-!
-IF ( ASSOCIATED(XEFIELDU) .AND. KCALL == 3 ) THEN
-  DEALLOCATE(XEFIELDU)
-  DEALLOCATE(XEFIELDV)
-  DEALLOCATE(XEFIELDW)
-  DEALLOCATE(XESOURCEFW)
-  DEALLOCATE(XIONSOURCEFW)
-  DEALLOCATE(XCION_POS_FW)
-  DEALLOCATE(XCION_NEG_FW)
-  DEALLOCATE(XMOBIL_POS)  
-  DEALLOCATE(XMOBIL_NEG)  
-END IF
-!
-IF ( ASSOCIATED(XRHOM_E) .AND. KCALL == 3 ) THEN
-  DEALLOCATE (XRHOM_E)
-  DEALLOCATE (XAF_E)
-  DEALLOCATE (XCF_E)
-  DEALLOCATE (XBFY_E)
-END IF
-!
-!*     14.     Modules RAIN_ICE_DESCR and MODD_RAIN_ICE_PARAM
-!
-IF (  ASSOCIATED(XRTMIN) .AND. KCALL == 4 ) THEN
-  CALL RAIN_ICE_DESCR_DEALLOCATE()
-  CALL RAIN_ICE_PARAM_DEALLOCATE()
-END IF
-!
-!*     15.     Module PASPOLn           
-!
-IF ( ASSOCIATED(XATC) .AND. KCALL == 3 ) THEN
-  DEALLOCATE(XATC)
-END IF
-!
-!*     16.     Module TURBn           
-!
-IF ( KCALL==3 ) THEN
-  IF (ASSOCIATED(XDYP)) DEALLOCATE(XDYP)
-  IF (ASSOCIATED(XTHP)) DEALLOCATE(XTHP)
-  IF (ASSOCIATED(XTR)) DEALLOCATE(XTR)
-  IF (ASSOCIATED(XDISS)) DEALLOCATE(XDISS)
-  IF (ASSOCIATED(XLEM)) DEALLOCATE(XLEM)
-END IF
-!-------------------------------------------------------------------------------
-!
-CALL GOTO_MODEL(IMI)
-!
-END SUBROUTINE DEALLOCATE_MODEL1
diff --git a/src/mesonh/ext/default_desfmn.f90 b/src/mesonh/ext/default_desfmn.f90
deleted file mode 100644
index ade773022..000000000
--- a/src/mesonh/ext/default_desfmn.f90
+++ /dev/null
@@ -1,1481 +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_DEFAULT_DESFM_n
-!     ###########################
-!
-INTERFACE
-!
-SUBROUTINE DEFAULT_DESFM_n(KMI)
-INTEGER,         INTENT(IN)  :: KMI       ! Model index
-END SUBROUTINE DEFAULT_DESFM_n
-!
-END INTERFACE
-!
-END MODULE MODI_DEFAULT_DESFM_n
-!
-!
-!
-!     ###############################
-      SUBROUTINE DEFAULT_DESFM_n(KMI)
-!     ###############################
-!
-!!****  *DEFAULT_DESFM_n * - set default values for descriptive variables of
-!!                         model KMI
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to set default values for the variables
-!     in descriptor files by filling the corresponding variables which
-!     are stored in modules.
-!
-!
-!!**  METHOD
-!!    ------
-!!      Each variable in modules, which can be initialized by  reading its
-!!    value in the descriptor file is set to a default value.
-!!     When this routine is used during INIT, the modules of the first model
-!!   are used to temporarily store  the variables associated with a nested
-!!   model.
-!!     When this routine is used during  SPAWNING, the modules of a second
-!!   model must be initialized.
-!!     Default values for variables common to all models are set only
-!!   at the first call of DEFAULT_DESFM_n (i.e. when KMI=1)
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!     NONE
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_PARAMETERS : JPHEXT,JPVEXT
-!!
-!!      Module MODD_CONF       : CCONF,L2D,L1D,LFLAT,NMODEL,NVERB
-!!
-!!      Module MODD_DYN        : XSEGLEN,XASSELIN,LCORIO,LNUMDIFF
-!!                               XALKTOP,XALZBOT
-!!
-!!      Module MODD_BAKOUT
-!!
-!!      Module MODD_NESTING    : NDAD(m),NDTRATIO(m),XWAY(m)
-!!
-!!      Module MODD_CONF_n    : LUSERV,LUSERC,LUSERR,LUSERI,LUSERS
-!!                              LUSERG,LUSERH,CSEG,CEXP
-!!
-!!      Module MODD_LUNIT_n   : CINIFILE,CCPLFILE
-!!
-!!
-!!      Module MODD_DYN_n     : XTSTEP,CPRESOPT,NITR,XRELAX,LHO_RELAX
-!!         LVE_RELAX,XRIMKMAX,NRIMX,NRIMY
-!!
-!!      Module MODD_ADV_n : CUVW_ADV_SCHEME,CMET_ADV_SCHEME,CSV_ADV_SCHEME,NLITER
-!!
-!!      Module MODD_PARAM_n : CTURB,CRAD,CDCONV,CSCONV
-!!
-!!      Module MODD_LBC_n : CLBCX, CLBCY,NLBLX,NLBLY,XCPHASE,XCPHASE_PBL,XPOND
-!!
-!!      Module MODD_TURB_n : XIMPL,CTURBLEN,CTURBDIM,LTURB_FLX,LTURB_DIAG,LSUBG_COND
-!!                           LTGT_FLX
-!!
-!!
-!!      Module MODD_PARAM_RAD_n:
-!!          XDTRAD,XDTRAD_CLONLY,LCLEAR_SKY,NRAD_COLNBR, NRAD_DIAG
-!!
-!!      Module MODD_BUDGET : CBUTYPE,NBUMOD,XBULEN,NBUKL, NBUKH,LBU_KCP,XBUWRI
-!!         NBUIL, NBUIH,NBUJL, NBUJH,LBU_ICP,LBU_JCP,NBUMASK
-!!
-!!      Module MODD_BLANK_n:
-!!
-!!          XDUMMYi, NDUMMYi, LDUMMYi, CDUMMYi
-!!
-!!      Module MODD_FRC :
-!!
-!!          LGEOST_UV_FRC,LGEOST_TH_FRC,LTEND_THRV_FRC
-!!          LVERT_MOTION_FRC,LRELAX_THRV_FRC,LRELAX_UV_FRC,LRELAX_UVMEAN_FRC,
-!!          XRELAX_TIME_FRC
-!!          XRELAX_HEIGHT_FRC,CRELAX_HEIGHT_TYPE,LTRANS,XUTRANS,XVTRANS,
-!!          LPGROUND_FRC
-!!
-!!      Module MODD_PARAM_ICE :
-!!
-!!          LWARM,CPRISTINE_ICE
-!!
-!!      Module MODD_PARAM_KAFR_n :
-!!
-!!          XDTCONV,LREFRESH_ALL,LDOWN,NICE,LCHTRANS
-!!
-!!      Module MODD_PARAM_MFSHALL_n :
-!!
-!!         CMF_UPDRAFT,LMIXUV,CMF_CLOUD,XIMPL_MF,LMF_FLX              
-!!
-!!
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of the documentation (routine DEFAULT_DESFM_n)
-!!
-!!
-!!    AUTHOR
-!!    ------
-!!      V. Ducrocq       * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original      02/06/94
-!!      Modifications 17/10/94  (Stein)  For LCORIO
-!!      Modifications 06/12/94  (Stein)  remove LBOUSS+add LABSLAYER, LNUMDIFF
-!!                                       ,LSTEADYLS
-!!      Modifications 06/12/94  (Stein)  remove LABSLAYER, add LHO_RELAX,
-!!                                       LVE_RELAX, NRIMX, NRIMY, XRIMKMAX
-!!      Modifications 09/01/95  (Lafore) add LSTEADY_DMASS
-!!      Modifications 09/01/95  (Stein)  add the turbulence scheme namelist
-!!      Modifications 09/01/95  (Stein)  add the 1D switch
-!!      Modifications 10/03/95  (Mallet) add the coupling files
-!!                    29/06/95  ( Stein, Nicolau, Hereil) add the budgets
-!!      Modifications 25/09/95  ( Stein )add the LES tools
-!!      Modifications 25/10/95  ( Stein )add the radiations
-!!      Modifications 23/10/95  (Vila, lafore) new scalar advection scheme
-!!      Modifications 24/02/96  (Stein)  change the default value for CCPLFILE
-!!      Modifications 12/02/96  (Lafore) transformation to DEFAULT_DESFM_n for
-!!                                       spawning
-!!      Modifications 25/04/96  (Suhre)  add the blank module
-!!      Modifications 29/07/96  (Pinty&Suhre) add module MODD_FRC
-!!      Modifications 11/04/96  (Pinty)  add the rain-ice scheme and modify
-!!                                       the split arrays in MODD_PARAM_RAD_n
-!!      Modifications 11/01/97  (Pinty)  add the deep convection scheme
-!!      Modifications 24/11/96  (Masson)  add LREFRESH_ALL in deep convection
-!!      Modifications 12/02/96  (Lafore) transformation to DEFAULT_DESFM_n for spawning
-!!      Modifications 22/07/96  (Lafore) gridnesting implementation
-!!      Modifications 29/07/96  (Lafore) add the module MODD_FMOUT (renamed MODD_BAKOUT)
-!!      Modifications 23/06/97  (Stein)  add the equation system name
-!!      Modifications 10/07/97  (Masson) add MODD_PARAM_GROUNDn : CROUGH
-!!      Modifications 28/07/97  (Masson) remove LREFRESH_ALL and LSTEADY_DMASS
-!!      Modifications 08/10/97  (Stein)  switch (_n=1) to initialize the
-!!                                       parameters common to all models
-!!      Modifications 24/01/98 (Bechtold) add LREFRESH_ALL, LCHTRANS,
-!!                                         LTEND_THRV_FR and LSST_FRC
-!!      Modifications 18/07/99  (Stein)  add LRAD_DIAG
-!!      Modification  15/03/99 (Masson)  use of XUNDEF
-!!      Modification  11/12/00 (Tomasini) Add CSEA_FLUX to MODD_PARAMn
-!!      Modification  22/01/01 (Gazen) delete NSV and add LHORELAX_SVC2R2
-!!                                     LHORELAX_SVCHEM,LHORELAX_SVLG
-!!      Modification 15/03/02 (Solmon) radiation scheme: remove NSPOT and add
-!!                                   default for aerosol and cloud rad. prop. control
-!!      Modification 22/05/02 (Jabouille) put chimical default here
-!!      Modification 01/2004  (Masson) removes surface (externalization)
-!!                      09/04 (M. Tomasini) New namelist to modify the
-!!                                             Cloud mixing length
-!!                   07/05 (P.Tulet) New namelists for dust and aerosol
-!!      Modification 01/2007  (Malardel, Pergaud) Add MODD_PARAM_MFSHALL_n
-!!      Modification 10/2009  (Aumond) Add user multimasks for LES
-!!      Modification 10/2009  (Aumond) Add MEAN_FIELD              
-!!      Modification 12/04/07 (Leriche) add LUSECHAQ for aqueous chemistry
-!!      Modification 30/05/07 (Leriche) add LCH_PH and XCH_PHINIT for pH
-!!      Modification 25/04/08 (Leriche) add XRTMIN_AQ LWC threshold for aq. chemistry
-!!                   16/07/10           add LHORELAX_SVIC
-!!                   16/09/10           add LUSECHIC
-!!                   13/01/11           add LCH_RET_ICE
-!!                   01/07/11 (F.Couvreux) Add CONDSAMP
-!!                   01/07/11 (B.Aouizerats) Add CAOP    
-!!                   07/2013  (C.Lac) add WENO, LCHECK              
-!!                   07/2013  (Bosseur & Filippi) adds Forefire
-!!                   08/2015  (Redelsperger & Pianezze) add XPOND coefficient for LBC
-!!      Modification 24/03/16 (Leriche) remove LCH_SURFACE_FLUX 
-!!                                      put NCH_VEC_LENGTH = 50 instead of 1000
-!!
-!!                   04/2016 (C.LAC) negative contribution to the budget split between advection, turbulence and microphysics for KHKO/C2R2
-!!      Modification    01/2016  (JP Pinty) Add LIMA
-!!      Modification 24/03/16 (Leriche) remove LCH_SURFACE_FLUX 
-!!                                      put NCH_VEC_LENGTH = 50 instead of 1000
-!!                   10/2016 (C.Lac) VSIGQSAT change from 0 to 0.02 for coherence with AROME
-!!                    10/2016 (C.Lac) Add droplet deposition
-!!                   10/2016  (R.Honnert and S.Riette) : Improvement of EDKF and adaptation to the grey zone
-!!                   10/2016  (F Brosse) add prod/loss terms computation for chemistry
-!!                   07/2017  (V. Masson) adds time step for output files writing.
-!!                   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
-!!                   01/2018  (S. Riette) new budgets and variables for ICE3/ICE4
-!!                   01/2018 (J.Colin) add VISC and DRAG
-!!                   07/2017 (V. Vionnet) add blowing snow variables
-!!                   01/2019 (R. Honnert) add reduction of the mass-flux surface closure with the resolution
-!!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
-!!                   05/2019 F.Brient add tracer emission from the top of the boundary-layer
-!!                   11/2019 C.Lac correction in the drag formula and application to building in addition to tree
-!  P. Wautelet 17/04/2020: move budgets switch values into modd_budget
-!  P. Wautelet 30/06/2020: add NNETURSV, NNEADVSV and NNECONSV variables
-!  F. Auguste, T. Nagel 02/2021: add IBM defaults parameters
-!  T. Nagel       02/2021: add turbulence recycling defaults parameters
-!  P-A Joulin  21/05/2021: add Wind turbines
-!  S. Riette   21/05/2021: add options to PDF subgrid scheme
-!  D. Ricard      05/2021: add the contribution of Leonard terms in the turbulence scheme
-!  JL Redelsperger 06/2021: add parameters allowing to active idealized oceanic convection
-!  B. Vie         06/2021: add prognostic supersaturation for LIMA
-!  Q. Rodier      06/2021: modify default value to LGZ=F (grey-zone corr.), LSEDI and OSEDC=T (LIMA sedimentation)
-!  F. Couvreux    06/2021: add LRELAX_UVMEAN_FRC
-!  Q. Rodier      07/2021: modify XPOND=1
-!  A. Costes      12/2021: Blaze fire model
-!  C. Barthe      03/2022: add CIBU and RDSF options in LIMA
-!  Delbeke/Vie    03/2022 : KHKO option in LIMA
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-USE MODD_PARAMETERS
-USE MODD_CONF             !        For INIT only DEFAULT_DESFM1
-USE MODD_CONFZ
-USE MODD_DYN
-USE MODD_NESTING
-USE MODD_BAKOUT
-USE MODD_SERIES
-USE MODD_CONF_n           ! modules used to set the default values is only
-USE MODD_LUNIT_n          ! the one corresponding to model 1. These memory
-USE MODD_DIM_n            ! addresses will then be filled by the values read in
-USE MODD_DYN_n            ! the DESFM corresponding to model n which may have
-USE MODD_ADV_n            ! missing values. This is why we affect default values.
-USE MODD_PARAM_n          !      For SPAWNING DEFAULT_DESFM2 is also used
-USE MODD_LBC_n
-USE MODD_OUT_n
-USE MODD_TURB_n
-USE MODD_BUDGET
-USE MODD_LES
-USE MODD_PARAM_RAD_n
-#ifdef MNH_ECRAD
-USE MODD_PARAM_ECRAD_n
-#if ( VER_ECRAD == 140 ) 
-USE MODD_RADIATIONS_n , ONLY : NSWB_MNH, NLWB_MNH
-#endif
-#endif
-USE MODD_BLANK_n
-USE MODD_FRC
-USE MODD_PARAM_ICE
-USE MODD_PARAM_C2R2
-USE MODD_TURB_CLOUD
-USE MODD_PARAM_KAFR_n
-USE MODD_PARAM_MFSHALL_n
-USE MODD_CH_MNHC_n
-USE MODD_SERIES_n
-USE MODD_NUDGING_n
-USE MODD_CH_AEROSOL
-USE MODD_DUST
-USE MODD_SALT
-USE MODD_PASPOL
-USE MODD_CONDSAMP
-USE MODD_MEAN_FIELD
-USE MODD_DRAGTREE_n
-USE MODD_DRAGBLDG_n
-USE MODD_EOL_MAIN
-USE MODD_EOL_ADNR
-USE MODD_EOL_ALM
-USE MODD_EOL_SHARED_IO
-USE MODD_ALLSTATION_n
-!
-!
-USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LSEDI, LHHONI, LSNOW, LHAIL, LMEYERS,         &
-                            NMOM_I, NMOM_S, NMOM_G, NMOM_H,                             &
-                            NMOD_IFN, XIFN_CONC, LIFN_HOM, CIFN_SPECIES,                &
-                            CINT_MIXING, NMOD_IMM, NIND_SPECIE, LMURAKAMI,              &
-                            YSNOW_T=>LSNOW_T, CPRISTINE_ICE_LIMA, CHEVRIMED_ICE_LIMA,   &
-                            XFACTNUC_DEP, XFACTNUC_CON,                                 &
-                            OWARM=>LWARM, LACTI, ORAIN=>LRAIN, OSEDC=>LSEDC,            &
-                            OACTIT=>LACTIT, LBOUND, LSPRO, LADJ, LKHKO, NMOM_C, NMOM_R, &
-                            NMOD_CCN, XCCN_CONC, LKESSLERAC,                            &
-                            LCCN_HOM, CCCN_MODES,                                       &
-                            YALPHAR=>XALPHAR, YNUR=>XNUR,                               &
-                            YALPHAC=>XALPHAC, YNUC=>XNUC, CINI_CCN=>HINI_CCN,           &
-                            CTYPE_CCN=>HTYPE_CCN, YFSOLUB_CCN=>XFSOLUB_CCN,             &
-                            YACTEMP_CCN=>XACTEMP_CCN, YAERDIFF=>XAERDIFF,               &
-                            YAERHEIGHT=>XAERHEIGHT,                                     &
-                            LSCAV, LAERO_MASS, NPHILLIPS,                               &
-                            LCIBU, XNDEBRIS_CIBU, LRDSF,                                &
-                            ODEPOC=>LDEPOC, OVDEPOC=>XVDEPOC, OACTTKE=>LACTTKE,         &
-                            LPTSPLIT, L_LFEEDBACKT=>LFEEDBACKT, L_NMAXITER=>NMAXITER,   &
-                            L_XMRSTEP=>XMRSTEP, L_XTSTEP_TS=>XTSTEP_TS
-!
-USE MODD_LATZ_EDFLX
-USE MODD_2D_FRC
-USE MODD_BLOWSNOW
-USE MODD_BLOWSNOW_n
-USE MODD_DRAG_n
-USE MODD_VISCOSITY
-USE MODD_RECYCL_PARAM_n
-USE MODD_IBM_PARAM_n
-USE MODD_IBM_LSF
-#ifdef MNH_FOREFIRE
-USE MODD_FOREFIRE
-#endif
-USE MODD_FIRE
-!
-IMPLICIT NONE
-!
-!*       0.1   declarations of arguments
-!
-INTEGER,         INTENT(IN)  :: KMI       ! Model index
-!
-!*       0.2   declaration of local variables
-!
-INTEGER             :: JM      ! loop index
-!
-!-------------------------------------------------------------------------------
-!
-!*      1.    SET DEFAULT VALUES FOR MODD_LUNIT_n :
-!             ----------------------------------
-!
-! CINIFILE='INIFILE'
-CINIFILEPGD='' !Necessary to keep this line to prevent problems with spawning
-CCPLFILE(:)='    '
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.    SET DEFAULT VALUES FOR MODD_CONF AND MODD_CONF_n :
-!             ------------------------------------------------
-!
-IF (KMI == 1) THEN
-  CCONF      ='START'
-  LTHINSHELL = .FALSE.
-  L2D        = .FALSE.
-  L1D        = .FALSE.
-  LFLAT      = .FALSE.
-  NMODEL     = 1
-  CEQNSYS    = 'DUR'
-  NVERB      = 5
-  CEXP       = 'EXP01'
-  CSEG       = 'SEG01'
-  LFORCING   = .FALSE.
-  L2D_ADV_FRC= .FALSE.
-  L2D_REL_FRC= .FALSE. 
-  XRELAX_HEIGHT_BOT = 0.
-  XRELAX_HEIGHT_TOP = 30000.
-  XRELAX_TIME = 864000.
-  LPACK      = .TRUE.
-  NHALO      = 1
-#ifdef MNH_SX5
-  CSPLIT     ='YSPLITTING'   ! NEC vectoriel architecture , low number of PROC
-#else
-  CSPLIT     ='BSPLITTING'   ! Scalaire architecture , high number of PROC
-#endif
-  NZ_PROC    = 0               !JUAN Z_SPLITTING :: number of proc in Z splitting
-  NZ_SPLITTING = 10            !JUAN Z_SPLITTING :: for debug NZ=1=flat_inv;  NZ=10=flat_invz; NZ=1+2 the two
-  LLG        = .FALSE.
-  LINIT_LG   = .FALSE.
-  CINIT_LG   = 'FMOUT'
-  LNOMIXLG   = .FALSE.
-  LCHECK     = .FALSE.
-END IF
-!
-CCLOUD    = 'NONE'
-LUSERV    = .TRUE.
-LUSERC    = .FALSE.
-LUSERR    = .FALSE.
-LUSERI    = .FALSE.
-LUSERS    = .FALSE.
-LUSERG    = .FALSE.
-LUSERH    = .FALSE.
-LOCEAN    = .FALSE.
-!NSV      = 0
-!NSV_USER = 0
-LUSECI    = .FALSE.
-!
-!-------------------------------------------------------------------------------
-!
-!*      3.    SET DEFAULT VALUES FOR MODD_DYN AND MODD_DYN_n :
-!             -----------------------------------------------
-!
-IF (KMI == 1) THEN
-  XSEGLEN   = 43200.
-  XASSELIN  = 0.2
-  XASSELIN_SV = 0.02
-  LCORIO    = .TRUE.
-  LNUMDIFU  = .TRUE.
-  LNUMDIFTH = .FALSE.
-  LNUMDIFSV = .FALSE.
-  XALZBOT   = 4000.
-  XALKTOP   = 0.01
-  XALKGRD   = 0.01
-  XALZBAS   = 0.01
-END IF
-!
-XTSTEP    = 60.
-CPRESOPT  = 'CRESI'
-NITR      = 4
-LITRADJ   = .TRUE.
-LRES      = .FALSE.
-XRES      = 1.E-07
-XRELAX    = 1.
-LVE_RELAX = .FALSE.
-LVE_RELAX_GRD = .FALSE.
-XRIMKMAX  = 0.01 / XTSTEP
-XT4DIFU   = 1800.          
-XT4DIFTH  = 1800.           
-XT4DIFSV  = 1800.           
-!
-IF (KMI == 1) THEN   ! for model 1 we have a Large scale information
-  NRIMX = JPRIMMAX   ! for U,V,W,TH,Rv used for the hor. relaxation
-  NRIMY = JPRIMMAX
-ELSE
-  NRIMX = 0          ! for inner models we use only surfacic fields to
-  NRIMY = 0          ! give the lbc and no hor. relaxation is used
-END IF
-!
-LHORELAX_UVWTH = .FALSE.
-LHORELAX_RV = .FALSE.
-LHORELAX_RC = .FALSE. ! for all these fields, no large scale is usally available
-LHORELAX_RR = .FALSE. ! for model 1 and for inner models, we only use surfacic
-LHORELAX_RS = .FALSE. ! fiels ( no hor. relax. )
-LHORELAX_RI = .FALSE.
-LHORELAX_RG = .FALSE.
-LHORELAX_RH = .FALSE.
-LHORELAX_TKE = .FALSE.
-LHORELAX_SV(:) = .FALSE.
-LHORELAX_SVC2R2 = .FALSE.
-LHORELAX_SVC1R3 = .FALSE.
-LHORELAX_SVELEC = .FALSE.
-LHORELAX_SVLG   = .FALSE.
-LHORELAX_SVCHEM = .FALSE.
-LHORELAX_SVCHIC = .FALSE.
-LHORELAX_SVDST  = .FALSE.
-LHORELAX_SVSLT  = .FALSE.
-LHORELAX_SVPP   = .FALSE.
-LHORELAX_SVCS   = .FALSE.
-LHORELAX_SVAER  = .FALSE.
-!
-LHORELAX_SVLIMA = .FALSE.
-!
-#ifdef MNH_FOREFIRE
-LHORELAX_SVFF   = .FALSE.
-#endif
-LHORELAX_SVSNW  = .FALSE.
-LHORELAX_SVFIRE = .FALSE.
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*      4.    SET DEFAULT VALUES FOR MODD_NESTING :
-!             -----------------------------------
-!
-IF (KMI == 1) THEN
-  NDAD(1)=1
-  DO JM=2,JPMODELMAX
-    NDAD(JM)  = JM - 1
-  END DO
-  NDTRATIO(:) = 1
-  XWAY(:)     = 2.      ! two-way interactive gridnesting
-  XWAY(1)     = 0.      ! except for model 1
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      5.    SET DEFAULT VALUES FOR MODD_ADV_n :
-!             ----------------------------------
-!
-CUVW_ADV_SCHEME =  'CEN4TH'
-CMET_ADV_SCHEME =  'PPM_01'
-CSV_ADV_SCHEME  =  'PPM_01'
-CTEMP_SCHEME    =  'RKC4'        
-NWENO_ORDER = 3
-NSPLIT      = 1
-LSPLIT_CFL  = .TRUE.
-LSPLIT_WENO = .TRUE.
-XSPLIT_CFL  = 0.8
-LCFL_WRIT   = .FALSE.
-!
-!-------------------------------------------------------------------------------
-!
-!*      6.    SET DEFAULT VALUES FOR MODD_PARAM_n :
-!             -----------------------------------
-!
-CTURB   = 'NONE'
-CRAD    = 'NONE'
-CDCONV  = 'NONE'
-CSCONV  = 'NONE'
-CELEC   = 'NONE'
-CACTCCN = 'NONE'
-!
-!-------------------------------------------------------------------------------
-!
-!*      7.    SET DEFAULT VALUES FOR MODD_LBC_n :
-!             ---------------------------------
-!
-CLBCX(1) ='CYCL'
-CLBCX(2) ='CYCL'
-CLBCY(1) ='CYCL'
-CLBCY(2) ='CYCL'
-NLBLX(:) = 1
-NLBLY(:) = 1
-XCPHASE = 20.
-XCPHASE_PBL = 0.
-XCARPKMAX = XUNDEF
-XPOND = 1.0
-!
-!-------------------------------------------------------------------------------
-!
-!*      8.    SET DEFAULT VALUES FOR MODD_NUDGING_n :
-!             ---------------------------------
-!
-LNUDGING = .FALSE.
-XTNUDGING = 21600.
-!
-!-------------------------------------------------------------------------------
-!
-!*      9.    SET DEFAULT VALUES FOR MODD_BAKOUT and MODD_OUT_n :
-!             ------------------------------------------------
-!
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*      10.   SET DEFAULT VALUES FOR MODD_TURB_n :
-!             ----------------------------------
-!
-XIMPL     = 1.
-XKEMIN    = 0.01
-XCEDIS    = 0.84
-XCADAP    = 0.5
-CTURBLEN  = 'BL89'
-CTURBDIM  = '1DIM'
-LTURB_FLX =.FALSE.
-LTURB_DIAG=.FALSE.
-LSUBG_COND=.FALSE.
-CSUBG_AUCV='NONE' 
-CSUBG_AUCV_RI='NONE'
-LSIGMAS   =.TRUE.
-LSIG_CONV =.FALSE.
-LRMC01    =.FALSE.
-CTOM      ='NONE'
-VSIGQSAT  = 0.02
-CCONDENS='CB02'
-CLAMBDA3='CB'
-CSUBG_MF_PDF='TRIANGLE'
-LLEONARD =.FALSE.
-XCOEFHGRADTHL = 1.0
-XCOEFHGRADRM = 1.0
-XALTHGRAD = 2000.0
-XCLDTHOLD = -1.0
-
-!-------------------------------------------------------------------------------
-!
-!*      10b.   SET DEFAULT VALUES FOR MODD_DRAGTREE :
-!             ----------------------------------
-!
-LDRAGTREE = .FALSE.
-LDEPOTREE = .FALSE.
-XVDEPOTREE = 0.02 ! 2 cm/s 
-!------------------------------------------------------------------------------
-!
-!*      10c.   SET DEFAULT VALUES FOR MODD_DRAGB
-!             ----------------------------------
-!
-LDRAGBLDG = .FALSE.
-!
-!*      10d.   SET DEFAULT VALUES FOR MODD_EOL* :
-!             ----------------------------------
-!
-!       10d.i) MODD_EOL_MAIN
-!
-LMAIN_EOL  = .FALSE.
-CMETH_EOL  = 'ADNR'
-CSMEAR     = '3LIN'
-NMODEL_EOL = 1
-!
-!       10d.ii) MODD_EOL_SHARED_IO
-!
-CFARM_CSVDATA     = 'data_farm.csv'
-CTURBINE_CSVDATA  = 'data_turbine.csv'
-CBLADE_CSVDATA    = 'data_blade.csv' 
-CAIRFOIL_CSVDATA  = 'data_airfoil.csv'
-!
-CINTERP           = 'CLS'
-!
-!       10d.iii) MODD_EOL_ALM
-!
-NNB_BLAELT        =  42
-LTIMESPLIT        = .FALSE.
-LTIPLOSSG         = .TRUE.
-LTECOUTPTS        = .FALSE.
-!
-!------------------------------------------------------------------------------
-!*      10.e   SET DEFAULT VALUES FOR MODD_ALLSTATION_n :
-!             ----------------------------------
-!
-NNUMB_STAT    = 0
-XSTEP_STAT    = 60.0
-XX_STAT(:)    = XUNDEF
-XY_STAT(:)    = XUNDEF
-XZ_STAT(:)    = XUNDEF
-XLAT_STAT(:)  = XUNDEF
-XLON_STAT(:)  = XUNDEF
-CNAME_STAT(:) = ''
-CTYPE_STAT(:) = ''
-CFILE_STAT    = 'NO_INPUT_CSV'
-LDIAG_SURFRAD = .TRUE.
-!
-!-------------------------------------------------------------------------------
-!
-!*      11.   SET DEFAULT VALUES FOR MODD_BUDGET :
-!             ------------------------------------
-!
-!       11.1 General  budget variables
-!
-IF (KMI == 1) THEN
-  CBUTYPE = 'NONE'
-  NBUMOD = 1
-  XBULEN = XSEGLEN
-  XBUWRI = XSEGLEN
-  NBUKL  = 1
-  NBUKH  = 0        
-  LBU_KCP = .TRUE.
-!
-!       11.2 Variables for the cartesian box
-!
-  NBUIL = 1
-  NBUIH = 0      
-  NBUJL = 1
-  NBUJH = 0          
-  LBU_ICP = .TRUE.
-  LBU_JCP = .TRUE.
-!
-!       11.3 Variables for the mask
-!
-  NBUMASK = 1
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      12.    SET DEFAULT VALUES FOR MODD_LES :
-!             ---------------------------------
-!
-IF (KMI == 1) THEN
-  LLES_MEAN               = .FALSE.
-  LLES_RESOLVED           = .FALSE.
-  LLES_SUBGRID            = .FALSE.
-  LLES_UPDRAFT            = .FALSE.
-  LLES_DOWNDRAFT          = .FALSE.
-  LLES_SPECTRA            = .FALSE.
-!
-  NLES_LEVELS             = NUNDEF
-  XLES_ALTITUDES          = XUNDEF
-  NSPECTRA_LEVELS         = NUNDEF
-  XSPECTRA_ALTITUDES      = XUNDEF
-  NLES_TEMP_SERIE_I       = NUNDEF
-  NLES_TEMP_SERIE_J       = NUNDEF
-  NLES_TEMP_SERIE_Z       = NUNDEF
-  CLES_NORM_TYPE          = 'NONE'
-  CBL_HEIGHT_DEF          = 'KE'
-  XLES_TEMP_SAMPLING      = XUNDEF
-  XLES_TEMP_MEAN_START    = XUNDEF
-  XLES_TEMP_MEAN_END      = XUNDEF
-  XLES_TEMP_MEAN_STEP     = 3600.
-  LLES_CART_MASK          = .FALSE.
-  NLES_IINF               = NUNDEF
-  NLES_ISUP               = NUNDEF
-  NLES_JINF               = NUNDEF
-  NLES_JSUP               = NUNDEF
-  LLES_NEB_MASK           = .FALSE.
-  LLES_CORE_MASK          = .FALSE.
-  LLES_MY_MASK            = .FALSE.
-  NLES_MASKS_USER         = NUNDEF
-  LLES_CS_MASK            = .FALSE.
-
-  LLES_PDF               = .FALSE.
-  NPDF                   = 1
-  XTH_PDF_MIN            = 270.
-  XTH_PDF_MAX            = 350.
-  XW_PDF_MIN             = -10.
-  XW_PDF_MAX             = 10.
-  XTHV_PDF_MIN           = 270.
-  XTHV_PDF_MAX           = 350.
-  XRV_PDF_MIN            = 0.
-  XRV_PDF_MAX            = 20.
-  XRC_PDF_MIN            = 0.
-  XRC_PDF_MAX            = 1.
-  XRR_PDF_MIN            = 0.
-  XRR_PDF_MAX            = 1.
-  XRI_PDF_MIN            = 0.
-  XRI_PDF_MAX            = 1.
-  XRS_PDF_MIN            = 0.
-  XRS_PDF_MAX            = 1.
-  XRG_PDF_MIN            = 0.
-  XRG_PDF_MAX            = 1.
-  XRT_PDF_MIN            = 0.
-  XRT_PDF_MAX            = 20.
-  XTHL_PDF_MIN           = 270.
-  XTHL_PDF_MAX           = 350.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      13.   SET DEFAULT VALUES FOR MODD_PARAM_RAD_n :
-!             ---------------------------------------
-!
-XDTRAD        = XTSTEP
-XDTRAD_CLONLY = XTSTEP
-LCLEAR_SKY    =.FALSE.
-NRAD_COLNBR   = 1000
-NRAD_DIAG     = 0
-CLW ='RRTM'
-CAER='SURF'
-CAOP='CLIM'
-CEFRADL='MART'
-CEFRADI='LIOU'
-COPWSW = 'FOUQ'
-COPISW = 'EBCU'
-COPWLW = 'SMSH'
-COPILW = 'EBCU'
-XFUDG = 1.
-LAERO_FT=.FALSE.
-LFIX_DAT=.FALSE.
-!
-#ifdef MNH_ECRAD
-!*      13bis.   SET DEFAULT VALUES FOR MODD_PARAM_ECRAD_n :
-!             ---------------------------------------
-!
-#if ( VER_ECRAD == 101 )
-NSWSOLVER = 0           ! 0: 'McICA 1: 'SPARTACUS' 2: 'SPARTACUS' + 3D effect                            
-NLWSOLVER = 0           ! 0: 'McICA 1: 'SPARTACUS' 2: 'SPARTACUS' + 3D effect 
-#endif
-#if ( VER_ECRAD == 140 )
-LSPEC_ALB = .FALSE.
-LSPEC_EMISS = .FALSE.
-
-
-!ALLOCATE(USER_ALB_DIFF(NSWB_MNH))
-!ALLOCATE(USER_ALB_DIR(NSWB_MNH))
-!ALLOCATE(USER_EMISS(NLWB_MNH))
-!PRINT*,USER_ALB_DIFF
-!USER_ALB_DIFF = (/0,0,0,0,0,0,0,0,0,0,0,0,0,0/)
-!USER_ALB_DIR = (/0,0,0,0,0,0,0,0,0,0,0,0,0,0/)
-!USER_EMISS = (/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/)
-SURF_TYPE="SNOW"
-
-NLWSOLVER = 1           ! 0: 'McICA 1: 'SPARTACUS' 2: 'SPARTACUS' + 3D effect 
-NSWSOLVER = 1          ! 0: 'McICA 1: 'SPARTACUS' 2: 'SPARTACUS' + 3D effect                            
-#endif
-! LEFF3D         = .TRUE.
-! LSIDEM         = .TRUE.
-NREG           = 3            ! Number of cloudy regions (3=TripleClouds)
-! LLWCSCA        = .TRUE.       ! LW cloud scattering
-! LLWASCA        = .TRUE.       ! LW aerosols scattering
-NLWSCATTERING = 2
-NAERMACC = 0
-! CGAS           = 'RRTMG-IFS'  ! Gas optics model
-NOVLP          = 1     ! overlap assumption ; 0= 'Max-Ran' ; 1= 'Exp-Ran'; 2 = 'Exp-Exp'
-NLIQOPT        = 3            ! 1: 'Monochromatic', 2: 'HuStamnes', 3: 'SOCRATES', 4: 'Slingo' 
-NICEOPT        = 3            ! 1: 'Monochromatic', 2: 'Fu-PSRAD', 3: 'Fu-IFS', 4: 'Baran', 5: 'Baran2016', 6: 'Baran2017' 
-! LSW_ML_E       = .FALSE.
-! LLW_ML_E       = .FALSE.
-! LPSRAD         = .FALSE.
-! 
-NRADLP = 1                    ! 0: ERA-15, 1: Zhang and Rossow, 2: Martin (1994) et Woods (2000)
-NRADIP = 1                    ! 0: 40 mum, 1: Liou and Ou (1994), 2: Liou and Ou (1994) improved, 3: Sun and Rikus (1999)
-XCLOUD_FRAC_STD = 1.0_JPRB ! change to 0.75 for more realistic distribution
-#endif
-!-------------------------------------------------------------------------------
-!
-!*      14.   SET DEFAULT VALUES FOR MODD_BLANK_n :
-!             -----------------------------------
-!
-XDUMMY1       = 0.
-XDUMMY2       = 0.
-XDUMMY3       = 0.
-XDUMMY4       = 0.
-XDUMMY5       = 0.
-XDUMMY6       = 0.
-XDUMMY7       = 0.
-XDUMMY8       = 0.
-!
-NDUMMY1       = 0
-NDUMMY2       = 0
-NDUMMY3       = 0
-NDUMMY4       = 0
-NDUMMY5       = 0
-NDUMMY6       = 0
-NDUMMY7       = 0
-NDUMMY8       = 0
-!
-LDUMMY1       = .TRUE.
-LDUMMY2       = .TRUE.
-LDUMMY3       = .TRUE.
-LDUMMY4       = .TRUE.
-LDUMMY5       = .TRUE.
-LDUMMY6       = .TRUE.
-LDUMMY7       = .TRUE.
-LDUMMY8       = .TRUE.
-!
-CDUMMY1       = ' '
-CDUMMY2       = ' '
-CDUMMY3       = ' '
-CDUMMY4       = ' '
-CDUMMY5       = ' '
-CDUMMY6       = ' '
-CDUMMY7       = ' '
-CDUMMY8       = ' '
-!
-!------------------------------------------------------------------------------
-!
-!*      15.   SET DEFAULT VALUES FOR MODD_FRC :
-!             ---------------------------------
-!
-IF (KMI == 1) THEN
-  LGEOST_UV_FRC      = .FALSE.
-  LGEOST_TH_FRC      = .FALSE.
-  LTEND_THRV_FRC      = .FALSE.
-  LTEND_UV_FRC       = .FALSE. 
-  LVERT_MOTION_FRC   = .FALSE.
-  LRELAX_THRV_FRC    = .FALSE.
-  LRELAX_UV_FRC      = .FALSE.
-  LRELAX_UVMEAN_FRC  = .FALSE.
-  XRELAX_TIME_FRC    = 10800.
-  XRELAX_HEIGHT_FRC  = 0.
-  CRELAX_HEIGHT_TYPE = "FIXE"
-  LTRANS             = .FALSE.
-  XUTRANS            = 0.0
-  XVTRANS            = 0.0
-  LPGROUND_FRC       = .FALSE.
-  LDEEPOC   = .FALSE.
-  XCENTX_OC = 16000.
-  XCENTY_OC = 16000.
-  XRADX_OC  =  8000.  
-  XRADY_OC  =  8000.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*      16.   SET DEFAULT VALUES FOR MODD_PARAM_ICE :
-!             ---------------------------------------
-!
-IF (KMI == 1) THEN
-  LRED    = .TRUE.
-  LWARM = .TRUE.
-  CPRISTINE_ICE = 'PLAT'
-  LSEDIC  = .TRUE.
-  LCONVHG = .FALSE.
-  CSEDIM  = 'SPLI'
-  LFEEDBACKT = .TRUE.
-  LEVLIMIT = .TRUE.
-  LNULLWETG = .TRUE.
-  LWETGPOST = .TRUE.
-  LNULLWETH = .TRUE.
-  LWETHPOST = .TRUE.
-  CSNOWRIMING = 'M90 '
-  CSUBG_RC_RR_ACCR = 'NONE'
-  CSUBG_RR_EVAP = 'NONE'
-  CSUBG_PR_PDF = 'SIGM'
-  XFRACM90 = 0.1
-  LCRFLIMIT = .TRUE.
-  NMAXITER = 5
-  XMRSTEP = 0.00005
-  XTSTEP_TS = 0.
-  LADJ_BEFORE = .TRUE.
-  LADJ_AFTER = .TRUE.
-  CFRAC_ICE_ADJUST = 'S'
-  XSPLIT_MAXCFL = 0.8
-  CFRAC_ICE_SHALLOW_MF = 'S'
-  LSEDIM_AFTER = .FALSE.
-  LDEPOSC = .FALSE.
-  XVDEPOSC= 0.02 ! 2 cm/s
-  LSNOW_T=.FALSE.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*      17.   SET DEFAULT VALUES FOR MODD_PARAM_KAFR_n :
-!             --------------------------------------------
-!
-XDTCONV       = MAX( 300.0,XTSTEP )
-NICE          = 1
-LREFRESH_ALL  = .TRUE.
-LCHTRANS      = .FALSE.
-LDOWN         = .TRUE.
-LSETTADJ      = .FALSE.
-XTADJD        = 3600.
-XTADJS        = 10800.
-LDIAGCONV     = .FALSE.
-NENSM         = 0
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*      18.   SET DEFAULT VALUES FOR MODD_PARAM_MFSHALL_n :
-!             --------------------------------------------
-!
-XIMPL_MF    = 1.
-CMF_UPDRAFT = 'EDKF'
-CMF_CLOUD   = 'DIRE'
-LMIXUV      = .TRUE. 
-LMF_FLX     = .FALSE.
-!
-XALP_PERT   = 0.3  
-XABUO       = 1.     
-XBENTR      = 1.   
-XBDETR      = 0.   
-XCMF        = 0.065 
-XENTR_MF    = 0.035
-XCRAD_MF    = 50.  
-XENTR_DRY   = 0.55 
-XDETR_DRY   = 10.  
-XDETR_LUP   = 1.  
-XKCF_MF     = 2.75
-XKRC_MF     = 1.   
-XTAUSIGMF   = 600.  
-XPRES_UV    = 0.5  
-XFRAC_UP_MAX= 0.33
-XALPHA_MF = 2.     
-XSIGMA_MF = 20.  
-!
-XA1    =  2./3.  
-XB     =  0.002       
-XC     =  0.012     
-XBETA1 =  0.9 
-XR     =  2.
-XLAMBDA_MF=  0.
-LGZ    =  .FALSE.
-XGZ    =  1.83 ! between 1.83 and 1.33
-!
-!-------------------------------------------------------------------------------
-!
-!*      19.   SET DEFAULT VALUES FOR MODD_PARAM_C2R2 :
-!             ----------------------------------------
-!
-IF (KMI == 1) THEN
-  XNUC    = 1.0
-  XALPHAC = 3.0
-  XNUR    = 2.0
-  XALPHAR = 1.0
-!
-  LRAIN   = .TRUE.
-  LSEDC   = .TRUE.
-  LACTIT  = .FALSE.
-  LSUPSAT = .FALSE.
-  LDEPOC  = .FALSE.
-  XVDEPOC = 0.02 ! 2 cm/s
-  LACTTKE = .TRUE.
-!
-  HPARAM_CCN = 'XXX'
-  HINI_CCN   = 'XXX'
-  HTYPE_CCN  = 'X'
-!
-  XCHEN      = 0.0
-  XKHEN      = 0.0
-  XMUHEN     = 0.0
-  XBETAHEN   = 0.0
-!
-  XCONC_CCN   = 0.0
-  XAERDIFF    = 0.0
-  XAERHEIGHT  = 2000
-  XR_MEAN_CCN = 0.0
-  XLOGSIG_CCN = 0.0
-  XFSOLUB_CCN = 1.0
-  XACTEMP_CCN = 280.
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*      19.BIS   SET DEFAULT VALUES FOR MODD_PARAM_LIMA :
-!                ----------------------------------------
-!
-IF (KMI == 1) THEN
-   LPTSPLIT     = .FALSE.
-   L_LFEEDBACKT = .TRUE.
-   L_NMAXITER   = 1
-   L_XMRSTEP    = 0.
-   L_XTSTEP_TS  = 0.
-!
-   YNUC    = 1.0
-   YALPHAC = 3.0
-   YNUR    = 2.0
-   YALPHAR = 1.0
-!
-   OWARM  = .TRUE.
-   LACTI  = .TRUE.
-   ORAIN  = .TRUE.
-   OSEDC  = .TRUE.
-   OACTIT = .FALSE.
-   LADJ   = .TRUE.
-   LSPRO  = .FALSE.
-   LKHKO  = .FALSE.
-   ODEPOC = .TRUE.
-   LBOUND = .FALSE.
-   OACTTKE = .TRUE.
-   LKESSLERAC = .FALSE.
-!
-   NMOM_C = 2
-   NMOM_R = 2
-!
-   OVDEPOC = 0.02 ! 2 cm/s
-!
-   CINI_CCN   = 'AER'
-   CTYPE_CCN(:) = 'M'
-!
-   YAERDIFF    = 0.0
-   YAERHEIGHT  = 2000.
-!  YR_MEAN_CCN = 0.0   ! In case of 'CCN' initialization
-!  YLOGSIG_CCN = 0.0
-   YFSOLUB_CCN = 1.0
-   YACTEMP_CCN = 280.
-!
-   NMOD_CCN = 1
-!
-!* AP Scavenging
-!
-   LSCAV      = .FALSE.
-   LAERO_MASS = .FALSE.
-!
-   LCCN_HOM = .TRUE.
-   CCCN_MODES = 'COPT'
-   XCCN_CONC(:)=300.
-!
-   LHHONI = .FALSE.
-   LCOLD  = .TRUE.
-   LNUCL  = .TRUE.
-   LSEDI  = .TRUE.
-   LSNOW  = .TRUE.
-   LHAIL  = .FALSE.
-   YSNOW_T = .FALSE.
-   LMURAKAMI = .TRUE.
-   CPRISTINE_ICE_LIMA = 'PLAT'
-   CHEVRIMED_ICE_LIMA = 'GRAU'
-   XFACTNUC_DEP = 1.0  
-   XFACTNUC_CON = 1.0
-   NMOM_I = 2
-   NMOM_S = 1
-   NMOM_G = 1
-   NMOM_H = 1
-   NMOD_IFN = 1
-   NIND_SPECIE = 1
-   LMEYERS = .FALSE.
-   LIFN_HOM = .TRUE.
-   CIFN_SPECIES = 'PHILLIPS'
-   CINT_MIXING = 'DM2'
-   XIFN_CONC(:) = 100.
-   NMOD_IMM = 0
-   NPHILLIPS=8
-   LCIBU = .FALSE.
-   XNDEBRIS_CIBU = 50.0
-   LRDSF = .FALSE.
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*      20.   SET DEFAULT VALUES FOR MODD_CH_MNHC_n
-!             -------------------------------------
-!
-LUSECHEM            = .FALSE.
-LUSECHAQ            = .FALSE.
-LUSECHIC            = .FALSE.
-LCH_INIT_FIELD      = .FALSE.
-LCH_CONV_SCAV       = .FALSE.
-LCH_CONV_LINOX      = .FALSE.
-LCH_PH              = .FALSE.
-LCH_RET_ICE         = .FALSE.
-XCH_PHINIT          = 5.2
-XRTMIN_AQ           = 5.e-8
-CCHEM_INPUT_FILE    = 'EXSEG1.nam'
-CCH_TDISCRETIZATION = 'SPLIT'
-NCH_SUBSTEPS        = 1
-LCH_TUV_ONLINE      = .FALSE.
-CCH_TUV_LOOKUP      = 'PHOTO.TUV39'
-CCH_TUV_CLOUDS      = 'NONE'
-XCH_TUV_ALBNEW      = -1.
-XCH_TUV_DOBNEW      = -1.
-XCH_TUV_TUPDATE     = 600.
-CCH_VEC_METHOD      = 'MAX'
-NCH_VEC_LENGTH      = 50
-XCH_TS1D_TSTEP      = 600.
-CCH_TS1D_COMMENT    = 'no comment'
-CCH_TS1D_FILENAME   = 'IO1D'
-CSPEC_PRODLOSS      = ''
-CSPEC_BUDGET        = ''
-!
-!-------------------------------------------------------------------------------
-!
-!*      21.   SET DEFAULT VALUES FOR MODD_SERIES AND MODD_SERIE_n
-!             ---------------------------------------------------
-!
-IF (KMI == 1) THEN
-  LSERIES      = .FALSE.
-  LMASKLANDSEA = .FALSE.
-  LWMINMAX     = .FALSE.
-  LSURF        = .FALSE.
-ENDIF
-!
-NIBOXL = 1 !+ JPHEXT
-NIBOXH = 1 !+ 2*JPHEXT
-NJBOXL = 1 !+ JPHEXT
-NJBOXH = 1 !+ 2*JPHEXT
-NKCLS  = 1 !+ JPVEXT
-NKLOW  = 1 !+ JPVEXT
-NKMID  = 1 !+ JPVEXT
-NKUP   = 1 !+ JPVEXT
-NKCLA  = 1 !+ JPVEXT
-NBJSLICE = 1
-NJSLICEL(:) = 1 !+ JPHEXT
-NJSLICEH(:) = 1 !+ 2*JPHEXT
-NFREQSERIES  = INT(XSEGLEN /(100.*XTSTEP) )
-NFREQSERIES  = MAX(NFREQSERIES,1)
-!
-!-------------------------------------------------------------------------------
-!
-!*      22.   SET DEFAULT VALUES FOR MODD_TURB_CLOUD
-!             --------------------------------------
-!
-IF (KMI == 1) THEN
-  NMODEL_CLOUD = NUNDEF
-  CTURBLEN_CLOUD = 'DELT'
-  XCOEF_AMPL_SAT = 5.
-  XCEI_MIN = 0.001E-06
-  XCEI_MAX = 0.01E-06
-ENDIF
-!-------------------------------------------------------------------------------
-!
-!*      22.   SET DEFAULT VALUES FOR MODD_MEAN_FIELD
-!             --------------------------------------
-!
-IF (KMI == 1) THEN
-  LMEAN_FIELD = .FALSE.
-  LCOV_FIELD  = .FALSE.
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*      22.   SET DEFAULT VALUES FOR MODD_AEROSOL
-!             -----------------------------------
-IF (KMI == 1) THEN ! other values are defined in modd_ch_aerosol
-!
-! aerosol lognormal parameterization
-
-LVARSIGI  = .FALSE.   ! switch to active pronostic dispersion for I mode
-LVARSIGJ  = .FALSE.   ! switch to active pronostic dispersion for J mode
-LHETEROSO4 = .FALSE.  ! switch to active sulfates heteronegeous
-                      ! production
-LSEDIMAERO = .FALSE.  ! switch to active aerosol sedimentation
-LAERINIT   = .FALSE.  ! switch to initialize aerosol in arome
-CMINERAL      = "NONE"   ! mineral equilibrium scheme
-CORGANIC      = "NONE"   ! mineral equilibrium scheme
-CNUCLEATION   = "NONE" ! sulfates nucleation scheme
-LDEPOS_AER(:) = .FALSE.
-
-ENDIF
-
-!*      23.   SET DEFAULT VALUES FOR MODD_DUST and MODD_SALT
-!             ----------------------------------------------
-!
-IF (KMI == 1) THEN ! other values initialized in modd_dust
-  LDUST      = .FALSE.
-  NMODE_DST  = 3
-  LVARSIG    = .FALSE.
-  LSEDIMDUST = .FALSE.
-  LDEPOS_DST(:) = .FALSE.
-
-  LSALT      = .FALSE.
-  LVARSIG_SLT= .FALSE.
-  LSEDIMSALT = .FALSE.
-  LDEPOS_SLT(:)     = .FALSE.
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*      24.   SET DEFAULT VALUES FOR MODD_PASPOL           
-!             ----------------------------------
-!
-! other values initialized in modd_paspol
-!
-IF (KMI == 1) THEN 
-  LPASPOL    = .FALSE.
-  NRELEASE   = 0
-  CPPINIT(:) ='1PT'
-  XPPLAT(:)  = 0.
-  XPPLON (:) = 0.
-  XPPMASS(:) = 0.
-  XPPBOT(:)  = 0.
-  XPPTOP(:)  = 0.
-  CPPT1(:)   = "20010921090000"
-  CPPT2(:)   = "20010921090000"
-  CPPT3(:)   = "20010921091500"
-  CPPT4(:)   = "20010921091500"
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*      25.   SET DEFAULT VALUES FOR MODD_CONDSAMP         
-!             ----------------------------------
-!
-! other values initialized in modd_condsamp
-!
-IF (KMI == 1) THEN 
-  LCONDSAMP  = .FALSE.
-  NCONDSAMP  = 3
-  XRADIO(:)  = 900.
-  XSCAL(:)   = 1.
-  XHEIGHT_BASE = 100.
-  XDEPTH_BASE  = 100.
-  XHEIGHT_TOP  = 100.
-  XDEPTH_TOP   = 100.
-  NFINDTOP     = 0
-  XTHVP        = 0.25
-  LTPLUS       = .TRUE.
-ENDIF  
-!-------------------------------------------------------------------------------
-!
-!
-!*      26.   SET DEFAULT VALUES FOR MODD_LATZ_EDFLX      
-!             ----------------------------------
-!
-IF (KMI == 1) THEN 
-  LUV_FLX=.FALSE.
-  XUV_FLX1=3.E+14
-  XUV_FLX2=0.
-  LTH_FLX=.FALSE.
-  XTH_FLX=0.75
-ENDIF  
-#ifdef MNH_FOREFIRE
-!-------------------------------------------------------------------------------
-!
-!*      27.   SET DEFAULT VALUES FOR MODD_FOREFIRE         
-!             ----------------------------------
-!
-! other values initialized in modd_forefire
-!
-IF (KMI == 1) THEN 
-  LFOREFIRE = .FALSE.
-  LFFCHEM = .FALSE.
-  COUPLINGRES = 100.
-  NFFSCALARS = 0
-ENDIF  
-#endif                 
-!-------------------------------------------------------------------------------
-!
-!*      28.   SET DEFAULT VALUES FOR MODD_BLOWSNOW AND  MODD_BLOWSNOW_n       
-!             ----------------------------------------
-! 
-IF (KMI == 1) THEN
-   LBLOWSNOW  = .FALSE.
-   XALPHA_SNOW  = 3.
-   XRSNOW       = 4.
-   CSNOWSEDIM  = 'TABC'
-END IF
-LSNOWSUBL = .FALSE.
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*      29.   SET DEFAULT VALUES FOR MODD_VISC           
-!             ----------------------------------
-!
-! other values initialized in modd_VISC
-!
-IF (KMI == 1) THEN
-  LVISC    = .FALSE.
-  LVISC_UVW    = .FALSE.
-  LVISC_TH    = .FALSE.
-  LVISC_SV    = .FALSE.
-  LVISC_R    = .FALSE.
-  XMU_V   = 0.
-  XPRANDTL = 0.
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*      30.   SET DEFAULT VALUES FOR MODD_DRAG           
-!             ----------------------------------
-!
-! other values initialized in modd_DRAG
-!
-IF (KMI == 1) THEN
-  LDRAG    = .FALSE.
-  LMOUNT   = .FALSE.
-  NSTART = 1
-  XHSTART = 0.
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*      31.   SET DEFAULT VALUES FOR MODD_IBM_PARAMn         
-!             --------------------------------------
-!                                                           
-  LIBM           = .FALSE.
-  LIBM_TROUBLE   = .FALSE.
-  CIBM_ADV       = 'NOTHIN'
-  XIBM_EPSI      = 1.E-9
-  XIBM_IEPS      = 1.E+9
-  NIBM_ITR       = 8  
-  XIBM_RUG       = 0.01    ! (m^1.s^-0)
-  XIBM_VISC      = 1.56e-5 ! (m^2.s^-1)
-  XIBM_CNU       = 0.06    ! (m^0.s^-0)  
-
-  NIBM_LAYER_P = 2
-  NIBM_LAYER_Q = 2
-  NIBM_LAYER_R = 2
-  NIBM_LAYER_S = 2
-  NIBM_LAYER_T = 2
-  NIBM_LAYER_E = 2
-  NIBM_LAYER_V = 2
-
-  XIBM_RADIUS_P = 2.
-  XIBM_RADIUS_Q = 2.
-  XIBM_RADIUS_R = 2.
-  XIBM_RADIUS_S = 2.
-  XIBM_RADIUS_T = 2.
-  XIBM_RADIUS_E = 2.
-  XIBM_RADIUS_V = 2.
-
-  XIBM_POWERS_P = 1.
-  XIBM_POWERS_Q = 1.
-  XIBM_POWERS_R = 1.
-  XIBM_POWERS_S = 1.
-  XIBM_POWERS_T = 1.
-  XIBM_POWERS_E = 1.
-  XIBM_POWERS_V = 1.
-
-  CIBM_MODE_INTE3_P = 'LAI'
-  CIBM_MODE_INTE3_Q = 'LAI'
-  CIBM_MODE_INTE3_R = 'LAI'
-  CIBM_MODE_INTE3_S = 'LAI'
-  CIBM_MODE_INTE3_T = 'LAI'
-  CIBM_MODE_INTE3_E = 'LAI'
-  CIBM_MODE_INTE3_V = 'LAI'
-
-  CIBM_MODE_INTE1_P = 'CL2'
-  CIBM_MODE_INTE1_Q = 'CL2'
-  CIBM_MODE_INTE1_R = 'CL2'
-  CIBM_MODE_INTE1_S = 'CL2'
-  CIBM_MODE_INTE1_T = 'CL2'
-  CIBM_MODE_INTE1_E = 'CL2'
-  CIBM_MODE_INTE1NV = 'CL2'
-  CIBM_MODE_INTE1TV = 'CL2'
-  CIBM_MODE_INTE1CV = 'CL2'
-
-  CIBM_MODE_BOUND_P = 'SYM'
-  CIBM_MODE_BOUND_Q = 'SYM'
-  CIBM_MODE_BOUND_R = 'SYM'
-  CIBM_MODE_BOUND_S = 'SYM'
-  CIBM_MODE_BOUND_T = 'SYM'
-  CIBM_MODE_BOUND_E = 'SYM'
-  CIBM_MODE_BOUNT_V = 'ASY'
-  CIBM_MODE_BOUNN_V = 'ASY'
-  CIBM_MODE_BOUNC_V = 'ASY'
-
-  XIBM_FORC_BOUND_P = 0.
-  XIBM_FORC_BOUND_Q = 0.
-  XIBM_FORC_BOUND_R = 0.
-  XIBM_FORC_BOUND_S = 0. 
-  XIBM_FORC_BOUND_T = 0.
-  XIBM_FORC_BOUND_E = 0.
-  XIBM_FORC_BOUNN_V = 0.
-  XIBM_FORC_BOUNT_V = 0.
-  XIBM_FORC_BOUNC_V = 0.
-
-  CIBM_TYPE_BOUND_P = 'NEU'
-  CIBM_TYPE_BOUND_Q = 'NEU'
-  CIBM_TYPE_BOUND_R = 'NEU'
-  CIBM_TYPE_BOUND_S = 'NEU'
-  CIBM_TYPE_BOUND_T = 'NEU'
-  CIBM_TYPE_BOUND_E = 'NEU'
-  CIBM_TYPE_BOUNT_V = 'DIR'
-  CIBM_TYPE_BOUNN_V = 'DIR'
-  CIBM_TYPE_BOUNC_V = 'DIR'
-
-  CIBM_FORC_BOUND_P = 'CST'
-  CIBM_FORC_BOUND_Q = 'CST'
-  CIBM_FORC_BOUND_R = 'CST'
-  CIBM_FORC_BOUND_S = 'CST'
-  CIBM_FORC_BOUND_T = 'CST'
-  CIBM_FORC_BOUND_E = 'CST'
-  CIBM_FORC_BOUNN_V = 'CST'
-  CIBM_FORC_BOUNT_V = 'CST'
-  CIBM_FORC_BOUNC_V = 'CST'
-  CIBM_FORC_BOUNR_V = 'CST'
-
-!
-!-------------------------------------------------------------------------------
-!
-!*      32.   SET DEFAULT VALUES FOR MODD_RECYCL_PARAMn         
-!             --------------------------------------
-!
-  LRECYCL  = .FALSE.
-  LRECYCLN = .FALSE.
-  LRECYCLW = .FALSE.
-  LRECYCLE = .FALSE.
-  LRECYCLS = .FALSE.
-  XDRECYCLN  = 0.
-  XARECYCLN  = 0.
-  XDRECYCLW  = 0.
-  XARECYCLW  = 0.
-  XDRECYCLS  = 0.
-  XARECYCLS  = 0.
-  XDRECYCLE  = 0.
-  XARECYCLE  = 0.
-  XTMOY      = 0.
-  XTMOYCOUNT = 0.
-  XNUMBELT   = 28.
-  XRCOEFF    = 0.2
-  XTBVTOP    = 500.
-  XTBVBOT    = 300.
-!
-!-------------------------------------------------------------------------------
-!
-!*      33.   SET DEFAULT VALUES FOR MODD_FIRE
-!             --------------------------------
-!
-! Blaze fire model namelist
-!
-IF (KMI == 1) THEN
-  LBLAZE = .FALSE.	            ! Flag for Fire model use, default FALSE
-  !
-  CPROPAG_MODEL = 'SANTONI2011' ! Fire propagation model (default SANTONI2011)
-  !
-  CHEAT_FLUX_MODEL   = 'EXS'	  ! Sensible heat flux injection model (default EXS)
-  CLATENT_FLUX_MODEL = 'EXP'	  ! latent heat flux injection model (default EXP)
-  XFERR = 0.8                   ! Energy released in flamming stage (only for EXP)
-  !
-  CFIRE_CPL_MODE = '2WAYCPL'    ! Coupling mode (default 2way coupled)
-  CBMAPFILE = CINIFILE          ! File name of BMAP for FIR2ATM mode
-  LINTERPWIND = .TRUE.          ! Horizontal interpolation of wind
-  LSGBAWEIGHT = .FALSE.         ! Flag for use of weighted average method for SubGrid Burning Area computation
-  !
-  NFIRE_WENO_ORDER = 3	        ! Weno order (1,3,5)
-  NFIRE_RK_ORDER = 3	          ! Runge Kutta order (1,2,3,4)
-  !
-  NREFINX = 1	                  ! Refinement ratio X
-  NREFINY	= 1                   ! Refinement ratio Y
-  !
-  XCFLMAXFIRE = 0.8             ! Max CFL on fire mesh
-  XLSDIFFUSION = 0.1            ! Numerical diffusion of LevelSet
-  XROSDIFFUSION = 0.05          ! Numerical diffusion of ROS
-  !
-  XFLUXZEXT = 3.                ! Flux distribution on vertical caracteristic length
-  XFLUXZMAX = 4. * XFLUXZEXT    ! Flux distribution on vertical max injetion height
-  !
-  XFLXCOEFTMP = 1.              ! Flux multiplicator. For testing
-  !
-  LWINDFILTER = .FALSE.         ! Fire wind filtering flag
-  CWINDFILTER = 'EWAM'	        ! Wind filter method (EWAM or WLIM)
-  XEWAMTAU    = 20.             ! Time averaging constant for EWAM method (s)
-  XWLIMUTH    = 8.              ! Thresehold wind value for WLIM method (m/s)
-  XWLIMUTMAX  = 9.              ! Maximum wind value for WLIM method (m/s) (needs to be >= XWLIMUTH )
-  !
-  NNBSMOKETRACER = 1            ! Nb of smoke tracers
-  !
-  NWINDSLOPECPLMODE = 0         ! Flag for use of wind/slope in ROS (0 = wind + slope, 1 = wind only, 2 = slope only (U0=0))
-  !
-  !
-  !
-  !! DO NOT CHANGE BELOW PARAMETERS
-  XFIREMESHSIZE(:) = 0.         ! Fire mesh size (dxf,dyf)
-  LRESTA_ASE = .FALSE.          ! Flag for using ASE in RESTA file
-  LRESTA_AWC = .FALSE.          ! Flag for using AWC in RESTA file
-  LRESTA_EWAM = .FALSE.         ! Flag for using EWAM in RESTA file
-  LRESTA_WLIM = .FALSE.         ! Flag for using WLIM in RESTA file
-ENDIF
-
-!-------------------------------------------------------------------------------
-END SUBROUTINE DEFAULT_DESFM_n
diff --git a/src/mesonh/ext/diagnos_les_mf.f90 b/src/mesonh/ext/diagnos_les_mf.f90
deleted file mode 100644
index 665d1ea76..000000000
--- a/src/mesonh/ext/diagnos_les_mf.f90
+++ /dev/null
@@ -1,244 +0,0 @@
-!MNH_LIC Copyright 2009-2020 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_DIAGNOS_LES_MF
-!    ###########################
-!
-INTERFACE
-!
-!     #################################################################
-      SUBROUTINE DIAGNOS_LES_MF(KIU,KJU,KKU,PTIME_LES,               &
-                                PTHL_UP,PRT_UP,PRV_UP,PRC_UP,PRI_UP, &
-                                PU_UP, PV_UP, PTHV_UP, PW_UP,        &
-                                PFRAC_UP,PEMF,PDETR,PENTR,           &
-                                PWTHMF,PWTHVMF,PWRTMF,               &
-                                PWUMF,PWVMF,                         &
-                                KKLCL,KKETL,KKCTL)
-!     #################################################################
-!
-!*                    1.1  Declaration of Arguments
-!
-use modd_precision, only: MNHTIME
-!
-INTEGER,                INTENT(IN)  :: KIU, KJU, KKU ! 3D grid size
-REAL(kind=MNHTIME), DIMENSION(2), INTENT(OUT) :: PTIME_LES
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHL_UP,PRT_UP,PRV_UP,&
-                                       PRC_UP,PRI_UP   ! updraft properties
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PU_UP, PV_UP
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHV_UP,PW_UP,&
-                                       PFRAC_UP,PEMF,PDETR,PENTR
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PWTHMF,PWTHVMF,PWRTMF, &
-                                       PWUMF,PWVMF
-INTEGER, DIMENSION(:),  INTENT(IN)  :: KKLCL,KKETL,KKCTL
-                                           
-
-END SUBROUTINE DIAGNOS_LES_MF
-
-END INTERFACE
-!
-END MODULE MODI_DIAGNOS_LES_MF
-!
-!     #################################################################
-      SUBROUTINE DIAGNOS_LES_MF(KIU,KJU,KKU,PTIME_LES,               &
-                                PTHL_UP,PRT_UP,PRV_UP,PRC_UP,PRI_UP, &
-                                PU_UP, PV_UP, PTHV_UP, PW_UP,        &
-                                PFRAC_UP,PEMF,PDETR,PENTR,           &
-                                PWTHMF,PWTHVMF,PWRTMF,               &
-                                PWUMF,PWVMF,                         &
-                                KKLCL,KKETL,KKCTL)
-!     #################################################################
-!!
-!!****  *DIAGNOS_LES_MF* - Edit in File the updraft properties as
-!!                         LES diagnostics 
-!!
-!!    PURPOSE
-!!    -------
-!!****  The purpose of this routine is to write updraft variable as
-!!       LES diagnostics         
-!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!      
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!     REFERENCE
-!!     ---------
-!!      
-!!
-!!     AUTHOR
-!!     ------
-!!     J.pergaud
-!
-! Modifications:
-!  V. Masson      09/2010: Optimization
-!  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_LES
-use modd_precision, only: MNHTIME
-!
-USE MODE_MNH_TIMING
-!
-USE MODI_LES_VER_INT
-USE MODI_LES_MEAN_ll
-USE MODI_SHUMAN
-!
-IMPLICIT NONE
-
-!*                    0.1  Declaration of Arguments
-!
-!
-INTEGER,                INTENT(IN)  :: KIU, KJU, KKU ! 3D grid size
-REAL(kind=MNHTIME), DIMENSION(2), INTENT(OUT) :: PTIME_LES
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHL_UP,PRT_UP,PRV_UP,&
-                                       PRC_UP,PRI_UP   ! updraft properties
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PU_UP, PV_UP
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHV_UP,PW_UP,&
-                                       PFRAC_UP,PEMF,PDETR,PENTR
-REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PWTHMF,PWTHVMF,PWRTMF, &
-                                       PWUMF,PWVMF
-INTEGER, DIMENSION(:),  INTENT(IN)  :: KKLCL,KKETL,KKCTL
-                                           
-!
-!
-!                     0.2  Declaration of local variables
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZTHLMFFLX_LES,ZRTMFFLX_LES, &
-                                         ZTHVMFFLX_LES,ZUMFFLX_LES, &
-                                         ZVMFFLX_LES
-REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZTHLUP_MF_LES,ZRTUP_MF_LES, &
-                                         ZRCUP_MF_LES,ZEMF_MF_LES,   &
-                                         ZDETR_MF_LES, ZENTR_MF_LES, & 
-                                         ZWUP_MF_LES,ZFRACUP_MF_LES, &
-                                         ZTHVUP_MF_LES,ZRVUP_MF_LES, &
-                                         ZRIUP_MF_LES
-REAL(kind=MNHTIME), DIMENSION(2) :: ZTIME1, ZTIME2
-!------------------------------------------------------------------------
-!
-
-CALL SECOND_MNH2(ZTIME1)
-
- IF (LLES_CALL) THEN
-
-    ALLOCATE( ZTHLUP_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZRTUP_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZRVUP_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZRCUP_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZRIUP_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZEMF_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZDETR_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZENTR_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZWUP_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZFRACUP_MF_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZTHVUP_MF_LES(KIU,KJU,NLES_K) )
-
-    ALLOCATE( ZTHLMFFLX_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZRTMFFLX_LES (KIU,KJU,NLES_K) )
-    ALLOCATE( ZTHVMFFLX_LES(KIU,KJU,NLES_K) )
-    ALLOCATE( ZUMFFLX_LES  (KIU,KJU,NLES_K) )
-    ALLOCATE( ZVMFFLX_LES  (KIU,KJU,NLES_K) )
-
-    
-    CALL LES_VER_INT(MZF(PWTHMF)  ,ZTHLMFFLX_LES  )
-    CALL LES_MEAN_ll(ZTHLMFFLX_LES,LLES_CURRENT_CART_MASK, &
-                    X_LES_SUBGRID_WTHLMF(:,NLES_CURRENT_TCOUNT,1))
-    
-    CALL LES_VER_INT( MZF(PWRTMF)  ,ZRTMFFLX_LES  )
-    CALL LES_MEAN_ll (ZRTMFFLX_LES , LLES_CURRENT_CART_MASK,          &
-                    X_LES_SUBGRID_WRTMF(:,NLES_CURRENT_TCOUNT,1)     )
-                    
-    CALL LES_VER_INT( MZF(PWUMF)  ,ZUMFFLX_LES  )
-    CALL LES_MEAN_ll (ZUMFFLX_LES , LLES_CURRENT_CART_MASK,              &
-                    X_LES_SUBGRID_WUMF(:,NLES_CURRENT_TCOUNT,1)     )
-                    
-    CALL LES_VER_INT( MZF(PWVMF)  ,ZVMFFLX_LES  )
-    CALL LES_MEAN_ll (ZVMFFLX_LES , LLES_CURRENT_CART_MASK,                   &
-                    X_LES_SUBGRID_WVMF(:,NLES_CURRENT_TCOUNT,1)     )
-                    
-    CALL LES_VER_INT( MZF(PWTHVMF)  ,ZTHVMFFLX_LES  )
-    CALL LES_MEAN_ll (ZTHVMFFLX_LES , LLES_CURRENT_CART_MASK,    &
-                    X_LES_SUBGRID_WTHVMF(:,NLES_CURRENT_TCOUNT,1)     )
-                    
-
-    CALL LES_VER_INT( MZF(PTHL_UP)  ,ZTHLUP_MF_LES  )
-    CALL LES_MEAN_ll (ZTHLUP_MF_LES , LLES_CURRENT_CART_MASK,    &
-                   X_LES_SUBGRID_THLUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
-                   
-    CALL LES_VER_INT( MZF(PRT_UP)  ,ZRTUP_MF_LES  )
-    CALL LES_MEAN_ll (ZRTUP_MF_LES , LLES_CURRENT_CART_MASK,       &
-                    X_LES_SUBGRID_RTUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
-                    
-    CALL LES_VER_INT( MZF(PRV_UP)  ,ZRVUP_MF_LES  )
-    CALL LES_MEAN_ll (ZRVUP_MF_LES , LLES_CURRENT_CART_MASK,       &
-                    X_LES_SUBGRID_RVUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
-                    
-    CALL LES_VER_INT( MZF(PRC_UP)  ,ZRCUP_MF_LES  )
-    CALL LES_MEAN_ll (ZRCUP_MF_LES , LLES_CURRENT_CART_MASK,        &
-                    X_LES_SUBGRID_RCUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
-                    
-    CALL LES_VER_INT( MZF(PRI_UP)  ,ZRIUP_MF_LES  )
-    CALL LES_MEAN_ll (ZRIUP_MF_LES , LLES_CURRENT_CART_MASK,        &
-                    X_LES_SUBGRID_RIUP_MF(:,NLES_CURRENT_TCOUNT,1)     )            
-                    
-    CALL LES_VER_INT( MZF(PEMF)  ,ZEMF_MF_LES  )
-    CALL LES_MEAN_ll (ZEMF_MF_LES , LLES_CURRENT_CART_MASK,       &
-                   X_LES_SUBGRID_MASSFLUX(:,NLES_CURRENT_TCOUNT,1)     )
-                   
-    CALL LES_VER_INT( MZF(PDETR)  ,ZDETR_MF_LES  )
-    CALL LES_MEAN_ll (ZDETR_MF_LES , LLES_CURRENT_CART_MASK,       &
-                   X_LES_SUBGRID_DETR(:,NLES_CURRENT_TCOUNT,1)         )
-                   
-    CALL LES_VER_INT( MZF(PENTR)  ,ZENTR_MF_LES  )
-    CALL LES_MEAN_ll (ZENTR_MF_LES , LLES_CURRENT_CART_MASK,       &
-                   X_LES_SUBGRID_ENTR(:,NLES_CURRENT_TCOUNT,1)     )
-                   
-    CALL LES_VER_INT( MZF(PW_UP)  ,ZWUP_MF_LES  )
-    CALL LES_MEAN_ll (ZWUP_MF_LES , LLES_CURRENT_CART_MASK,       &
-                   X_LES_SUBGRID_WUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
-                   
-    CALL LES_VER_INT( MZF(PFRAC_UP)  ,ZFRACUP_MF_LES  )
-    CALL LES_MEAN_ll (ZFRACUP_MF_LES , LLES_CURRENT_CART_MASK,       &
-                   X_LES_SUBGRID_FRACUP(:,NLES_CURRENT_TCOUNT,1)     )
-                   
-    CALL LES_VER_INT( MZF(PTHV_UP)  ,ZTHVUP_MF_LES  )
-    CALL LES_MEAN_ll (ZTHVUP_MF_LES , LLES_CURRENT_CART_MASK,       &
-                   X_LES_SUBGRID_THVUP_MF(:,NLES_CURRENT_TCOUNT,1)     )
-                   
-     
-        
-    DEALLOCATE( ZTHLMFFLX_LES )
-    DEALLOCATE( ZRTMFFLX_LES )
-    DEALLOCATE( ZTHVMFFLX_LES )
-    DEALLOCATE( ZUMFFLX_LES  )
-    DEALLOCATE( ZVMFFLX_LES  )
-
-    
-    DEALLOCATE( ZTHLUP_MF_LES )
-    DEALLOCATE( ZRTUP_MF_LES )
-    DEALLOCATE( ZRVUP_MF_LES )    
-    DEALLOCATE( ZRCUP_MF_LES )
-    DEALLOCATE( ZRIUP_MF_LES )
-    DEALLOCATE( ZENTR_MF_LES )
-    DEALLOCATE( ZDETR_MF_LES )
-    DEALLOCATE( ZEMF_MF_LES )
-    DEALLOCATE( ZWUP_MF_LES )
-    DEALLOCATE( ZFRACUP_MF_LES )
-    DEALLOCATE( ZTHVUP_MF_LES )
-    
-ENDIF
-
-CALL SECOND_MNH2(ZTIME2)
-PTIME_LES =             ZTIME2 - ZTIME1
-XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-
-END SUBROUTINE DIAGNOS_LES_MF           
diff --git a/src/mesonh/ext/ground_paramn.f90 b/src/mesonh/ext/ground_paramn.f90
deleted file mode 100644
index 5d872413b..000000000
--- a/src/mesonh/ext/ground_paramn.f90
+++ /dev/null
@@ -1,1230 +0,0 @@
-!MNH_LIC Copyright 1994-2020 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_GROUND_PARAM_n
-!     ##########
-!
-INTERFACE 
-!
-      SUBROUTINE GROUND_PARAM_n(D, PSFTH, PSFRV, PSFSV, PSFCO2, PSFU, PSFV, &
-                                 PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, KTCOUNT, TPFILE )
-!
-USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
-!* surface fluxes
-!  --------------
-!
-USE MODD_IO,      ONLY: TFILEDATA
-!
-TYPE(DIMPHYEX_t),     INTENT(IN)   :: D
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFTH ! surface flux of potential temperature (Km/s)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFRV ! surface flux of water vapor           (m/s*kg/kg)
-REAL, DIMENSION(:,:,:),INTENT(OUT):: PSFSV ! surface flux of scalar                (m/s*kg/kg)
-                                           ! flux of chemical var.                 (ppp.m/s)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFCO2! surface flux of CO2                   (m/s*kg/kg)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFU  ! surface fluxes of horizontal   
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFV  ! momentum in x and y directions        (m2/s2)
-!
-!* Radiative parameters
-!  --------------------
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDIR_ALB  ! direct  albedo for each spectral band (-)
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSCA_ALB  ! diffuse albedo for each spectral band (-)
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PEMIS     ! surface emissivity                    (-)
-REAL, DIMENSION(:,:),   INTENT(OUT) :: PTSRAD    ! surface radiative temperature         (K)
-!
-INTEGER,                INTENT(IN)  :: KTCOUNT   ! temporal iteration count
-TYPE(TFILEDATA),        INTENT(IN)  :: TPFILE    ! Synchronous output file
-END SUBROUTINE GROUND_PARAM_n
-!
-END INTERFACE
-!
-END MODULE MODI_GROUND_PARAM_n
-!
-!     ######################################################################
-      SUBROUTINE GROUND_PARAM_n(D, PSFTH, PSFRV, PSFSV, PSFCO2, PSFU, PSFV, &
-                                 PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, KTCOUNT, TPFILE )
-!     #######################################################################
-!
-!
-!!****  *GROUND_PARAM*  
-!!
-!!    PURPOSE
-!!    -------
-!       Monitor to call the externalized surface
-!     
-!!**  METHOD
-!!    ------
-!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    Noilhan and Planton (1989)
-!!      
-!!    AUTHOR
-!!    ------
-!!	S. Belair           * Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    10/03/95 
-!!      (J.Stein)   25/10/95  add the rain flux computation at the ground
-!!                            and the lbc
-!!      (J.Stein)   15/11/95  include the strong slopes cases
-!!      (J.Stein)   06/02/96  bug correction for the precipitation flux writing 
-!!      (J.Stein)   20/05/96  set the right IGRID value for the rain rate
-!!      (J.Viviand) 04/02/97  add cold and convective precipitation rate
-!!      (J.Stein)   22/06/97  use the absolute pressure    
-!!      (V.Masson)  09/07/97  add directional z0 computations and RESA correction     
-!!      (V.Masson)  13/02/98  merge the ISBA and TSZ0 routines,
-!!                            rename the routine as a monitor, called by PHYS_PARAMn
-!!                            add the town parameterization
-!!                            recomputes z0 where snow is.
-!!                            pack and unpack of 2D fields into 1D fields
-!!      (V.Masson)  04/01/00  removes the TSZ0 case
-!       (F.Solmon/V.Masson)   adapatation for patch approach
-!                             modification of internal subroutine pack/ allocation in function 
-!                              of patch indices
-!                             calling of isba for each defined patch
-!                             averaging of patch fluxes to get nat fluxes 
-!       (P. Tulet/G.Guenais)  04/02/01  separation of vegetatives class
-!                                           for friction velocity and 
-!                                           aerodynamical resistance
-!      (S Donnier)            09/12/02  add specific humidity at 2m for diagnostic
-!      (V.Masson)             01/03/03  externalisation of the surface schemes!
-!      (P.Tulet )             01/11/03  externalisation of the surface chemistry!
-!!     (D.Gazen)              01/12/03  change emissions handling for surf. externalization
-!!     (J.escobar)            18/10/2012 missing USE MODI_COUPLING_SURF_ATM_n & MODI_DIAG_SURF_ATM_n
-!      (J.escobar)            02/2014 add Forefire coupling
-!!     (G.Delautier)          06/2016 phasage surfex 8
-!!     (B.Vie)                2016 LIMA
-!!     (J.Pianezze)           08/2016 add send/recv oasis functions
-!!      (M.Leriche)            24/03/16 remove flag for chemical surface fluxes
-!!      (M.Leriche)           01/07/2017 Add DIAG chimical surface fluxes
-!!  01/2018      (G.Delautier) SURFEX 8.1
-!!                   02/2018 Q.Libois ECRAD
-!!     (P.Wautelet) 28/03/2018 replace TEMPORAL_DIST by DATETIME_DISTANCE
-
-!!     (V. Vionnet)           18/07/2017 add coupling for blowing snow module 
-!!     (Bielli S.) 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!  P. Wautelet 09/02/2022: bugfix: add missing XCURRENT_LEI computation
-!  A. Costes      12/2021: Blaze Fire model
-!-------------------------------------------------------------------------------
-!
-!*       0.     DECLARATIONS
-!               ------------
-!
-! 
-#ifdef CPLOASIS
-USE MODI_GET_HALO
-USE MODI_MNH_OASIS_RECV
-USE MODI_MNH_OASIS_SEND
-USE MODD_SFX_OASIS, ONLY : LOASIS
-USE MODD_DYN,       ONLY : XSEGLEN
-USE MODD_DYN_n,     ONLY : DYN_MODEL
-#endif
-!
-USE MODD_LUNIT_n, ONLY: TLUOUT
-USE MODD_CST,        ONLY : XP00, XCPD, XRD, XRV,XRHOLW, XDAY, XPI, XLVTT, XMD, XAVOGADRO
-USE MODD_DIMPHYEX,   ONLY : DIMPHYEX_t
-USE MODD_PARAMETERS, ONLY : JPVEXT, XUNDEF
-USE MODD_DYN_n,      ONLY : XTSTEP
-USE MODD_CH_MNHC_n,  ONLY : LUSECHEM
-USE MODD_CH_M9_n,   ONLY : CNAMES
-USE MODD_FIELD_n,    ONLY : XUT, XVT, XWT, XTHT, XRT, XPABST, XSVT, XTKET, XZWS,&
-XLSPHI, XBMAP, XFMR0, XFMRFA, XFMWF0, XFMR00, XFMIGNITION, XFMFUELTYPE,&
-XFIRETAU, XFLUXPARAMH, XFLUXPARAMW, XFIRERW, XFMASE, XFMAWC, XFMWALKIG,&
-XFMFLUXHDH, XFMFLUXHDW, XRTHS, XRRS, XFMHWS, XFMWINDU, XFMWINDV, XFMWINDW, XGRADLSPHIX, &
-XGRADLSPHIY, XFIREWIND, XFMGRADOROX, XFMGRADOROY
-USE MODD_METRICS_n,  ONLY : XDXX, XDYY, XDZZ
-USE MODD_DIM_n,      ONLY : NKMAX
-USE MODD_GRID_n,     ONLY : XLON, XZZ, XDIRCOSXW, XDIRCOSYW, XDIRCOSZW, &
-                            XCOSSLOPE, XSINSLOPE, XZS
-USE MODD_REF_n,      ONLY : XRHODREF,XRHODJ,XEXNREF
-USE MODD_CONF_n,     ONLY : NRR
-USE MODD_PARAM_n,    ONLY : CDCONV,CCLOUD, CRAD
-USE MODD_PRECIP_n,   ONLY : XINPRC, XINPRR, XINPRS, XINPRG, XINPRH
-USE MODD_DEEP_CONVECTION_n, ONLY : XPRCONV, XPRSCONV
-USE MODD_CONF,       ONLY : LCARTESIAN, CPROGRAM
-USE MODD_TIME_n,     ONLY : TDTCUR
-USE MODD_RADIATIONS_n,   ONLY : XFLALWD, XCCO2, XTSIDER, &
-                                XSW_BANDS, XDIRSRFSWD, XSCAFLASWD, &
-                                XZENITH, XAZIM, XAER, XSWU, XLWU
-USE MODD_NSV
-USE MODD_GRID,       ONLY : XLON0, XRPK, XBETA
-USE MODD_PARAM_ICE,  ONLY : LSEDIC
-USE MODD_PARAM_C2R2, ONLY : LSEDC
-USE MODD_DIAG_IN_RUN
-USE MODD_DUST,       ONLY : LDUST 
-USE MODD_SALT,       ONLY : LSALT
-USE MODD_BLOWSNOW
-USE MODD_BLOWSNOW_n
-USE MODD_CH_AEROSOL, ONLY : LORILAM
-USE MODD_CSTS_DUST,  ONLY : XMOLARWEIGHT_DUST
-USE MODD_CSTS_SALT,  ONLY : XMOLARWEIGHT_SALT
-USE MODD_CH_FLX_n, ONLY : XCHFLX
-USE MODD_DIAG_FLAG, ONLY : LCHEMDIAG
-!
-USE MODI_NORMAL_INTERPOL
-USE MODE_ROTATE_WIND, ONLY : ROTATE_WIND
-USE MODI_SHUMAN
-USE MODI_MNHGET_SURF_PARAM_n
-USE MODI_COUPLING_SURF_ATM_n
-USE MODI_DIAG_SURF_ATM_n
-USE MODD_MNH_SURFEX_n
-!
-USE MODE_DATETIME
-USE MODE_ll
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-#ifdef MNH_FOREFIRE
-!** MODULES FOR FOREFIRE **!
-USE MODD_FOREFIRE
-USE MODD_FOREFIRE_n
-USE MODI_COUPLING_FOREFIRE_n
-#endif
-!
-USE MODD_TIME_n
-USE MODD_TIME
-!
-USE MODD_PARAM_LIMA, ONLY : MSEDC=>LSEDC
-!
-USE MODD_FIRE
-USE MODD_FIELD
-USE MODI_FIRE_MODEL
-USE MODD_CONF, ONLY : NVERB, NHALO
-USE MODE_MNH_TIMING, ONLY : SECOND_MNH2
-USE MODE_MSG
-USE MODD_IO,      ONLY: TFILEDATA
-!
-IMPLICIT NONE
-!
-!
-!
-!*      0.1    declarations of arguments
-!
-!* surface fluxes
-!  --------------
-!
-TYPE(DIMPHYEX_t),     INTENT(IN)   :: D
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFTH ! surface flux of potential temperature (Km/s)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFRV ! surface flux of water vapor           (m/s*kg/kg)
-REAL, DIMENSION(:,:,:),INTENT(OUT):: PSFSV ! surface flux of scalar                (m/s*kg/kg)
-                                           ! flux of chemical var.                 (ppp.m/s)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFCO2! surface flux of CO2                   (m/s*kg/kg)
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFU  ! surface fluxes of horizontal   
-REAL, DIMENSION(:,:), INTENT(OUT) :: PSFV  ! momentum in x and y directions        (m2/s2)
-!
-!* Radiative parameters
-!  --------------------
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDIR_ALB  ! direct  albedo for each spectral band (-)
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSCA_ALB  ! diffuse albedo for each spectral band (-)
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PEMIS     ! surface emissivity                    (-)
-REAL, DIMENSION(:,:),   INTENT(OUT) :: PTSRAD    ! surface radiative temperature         (K)
-!
-INTEGER,                INTENT(IN)  :: KTCOUNT   ! temporal iteration count
-TYPE(TFILEDATA),        INTENT(IN)  :: TPFILE    ! Synchronous output file
-!
-!-------------------------------------------------------------------------------
-!
-!
-!
-!*      0.2    declarations of local variables
-!              -------------------------------
-!
-!
-!* Atmospheric variables
-!  ---------------------
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE         :: ZRV    ! vapor mixing ratio
-!
-!            suffix 'A' stands for atmospheric variable at first model level
-!
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZZREF  ! Forcing height
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZTA    ! Temperature
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZRVA   ! vapor mixing ratio
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZQA    ! humidity (kg/m3)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZPA    ! Pressure
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZPS    ! Pressure
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZEXNA  ! Exner function
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZEXNS  ! Exner function
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZTHA   ! potential temperature
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZRAIN  ! liquid precipitation (kg/m2/s)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSNOW  ! solid precipitation  (kg/m2/s)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZTSUN  ! solar time           (s since midnight)
-!
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZUA    ! u component of the wind
-!                                                       ! parallel to the orography
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZVA    ! v component of the wind
-!                                                       ! parallel to the orography
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZU     ! zonal wind
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZV     ! meridian wind
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZWIND  ! wind parallel to the orography
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZRHOA  ! air density
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZDIR   ! wind direction (rad from N clockwise)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFU   ! zonal momentum flux
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFV   ! meridian momentum flux
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZCO2   ! CO2 concentration (kg/kg)
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZALFA  ! angle between the wind
-!                                                       ! and the x axis
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2),1):: ZU2D   ! u and v component of the
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2),1):: ZV2D   ! wind at mass point
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFTH  ! Turbulent flux of heat
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFTQ  ! Turbulent flux of water
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2))  :: ZSFCO2 ! Turbulent flux of CO2
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2),NSV):: ZSFTS! Turbulent flux of scalar
-!
-REAL, DIMENSION(SIZE(PSFTH,1),SIZE(PSFTH,2),NBLOWSNOW_2D)  :: ZBLOWSNOW_2D  ! 2D blowing snow variables
-                                                                            ! after advection
-                                  ! They refer to the 2D fields advected by MNH including:
-                                  !             - total number concentration in Canopy
-                                  !             - total mass concentration in Canopy
-                                  !             - equivalent concentration in the saltation layer
-!
-!* Dimensions
-!  ----------
-!
-INTEGER :: IIB  ! physical boundary
-INTEGER :: IIE  ! physical boundary
-INTEGER :: IJB  ! physical boundary
-INTEGER :: IJE  ! physical boundary
-INTEGER :: IKB  ! physical boundary
-INTEGER :: IKE  ! physical boundary
-INTEGER :: IKU  ! vertical array sizes
-!
-INTEGER :: JLAYER ! loop counter
-INTEGER :: JSV    ! loop counter
-INTEGER :: JI,JJ,JK ! loop index
-!
-INTEGER :: IDIM1 ! X physical dimension
-INTEGER :: IDIM2 ! Y physical dimension
-INTEGER :: IDIM1D! total physical dimension
-INTEGER :: IKRAD
-!
-INTEGER :: KSV_SURF  ! Number of scalar variables sent to SURFEX
-!
-!* Arrays put in 1D vectors
-!  ------------------------
-!
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_TSUN     ! solar time
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZENITH   ! zenithal angle
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_AZIM     ! azimuthal angle
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZREF     ! forcing height
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZS       ! orography
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_U        ! zonal wind
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_V        ! meridian wind
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_QA       ! air humidity  (kg/m3)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_TA       ! air temperature
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_RHOA     ! air density
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SV       ! scalar at first atmospheric level
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_CO2      ! air CO2 concentration
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_RAIN     ! liquid precipitation
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SNOW     ! solid precipitation
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_LW       ! incoming longwave
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_DIR_SW   ! direct incoming shortwave
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SCA_SW   ! diffuse incoming shortwave
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PS       ! surface pressure
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PA       ! pressure at first atmospheric level
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZWS      ! significant wave height (m)
-
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFTQ     ! water vapor flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFTH     ! potential temperature flux
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SFTS     ! scalar flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFCO2    ! CO2 flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFU      ! zonal momentum flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_SFV      ! meridian momentum flux
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_TSRAD    ! radiative surface temperature
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_DIR_ALB  ! direct albedo
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZP_SCA_ALB  ! diffuse albedo
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_EMIS     ! emissivity
-
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_TSURF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_Z0
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_Z0H
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_QSURF
-
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PEW_A_COEF ! coefficients for
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PEW_B_COEF ! implicit coupling
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PET_A_COEF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PEQ_A_COEF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PET_B_COEF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_PEQ_B_COEF
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_RN        ! net radiation           (W/m2)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_H         ! sensible heat flux      (W/m2)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_LE        ! Total latent heat flux  (W/m2)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_LEI       ! Solid Latent heat flux  (W/m2)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_GFLUX     ! ground flux             (W/m2)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_T2M       ! Air temperature at 2 meters (K)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_Q2M       ! Air humidity at 2 meters    (kg/kg)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_HU2M      ! Air relative humidity at 2 meters (-)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_ZON10M    ! zonal Wind at 10 meters     (m/s)
-REAL, DIMENSION(:),   ALLOCATABLE :: ZP_MER10M    ! meridian Wind at 10 meters  (m/s)
-TYPE(LIST_ll), POINTER            :: TZFIELDSURF_ll    ! list of fields to exchange
-INTEGER                           :: IINFO_ll       ! return code of parallel routine
-!
-!
-CHARACTER(LEN=6), DIMENSION(:), ALLOCATABLE :: YSV_SURF ! name of the scalar variables
-                                                        ! sent to SURFEX
-!                                                        
-REAL                              :: ZTIMEC
-INTEGER           :: ILUOUT         ! logical unit
-!
-! Fire model
-REAL, DIMENSION(2)                    :: ZFIRETIME1, ZFIRETIME2           ! CPU time for Blaze perf profiling
-REAL, DIMENSION(2)                    :: ZGRADTIME1, ZGRADTIME2           ! CPU time for Blaze perf profiling
-REAL, DIMENSION(2)                    :: ZPROPAGTIME1, ZPROPAGTIME2       ! CPU time for Blaze perf profiling
-REAL, DIMENSION(2)                    :: ZFLUXTIME1, ZFLUXTIME2           ! CPU time for Blaze perf profiling
-REAL, DIMENSION(2)                    :: ZROSWINDTIME1, ZROSWINDTIME2     ! CPU time for Blaze perf profiling
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZFIREFUELMAP                     ! Fuel map
-CHARACTER(LEN=7)                      :: YFUELMAPFILE                     ! Fuel Map file name
-TYPE(LIST_ll), POINTER                :: TZFIELDFIRE_ll                   ! list of fields to exchange
-
-!-------------------------------------------------------------------------------
-!
-!
-ILUOUT=TLUOUT%NLU
-IKB= 1+JPVEXT
-IKU=NKMAX + 2* JPVEXT
-IKE=IKU-JPVEXT
-!
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-!
-PSFTH    = XUNDEF
-PSFRV    = XUNDEF
-PSFSV    = XUNDEF
-PSFCO2   = XUNDEF
-PSFU     = XUNDEF
-PSFV     = XUNDEF
-PDIR_ALB = XUNDEF
-PSCA_ALB = XUNDEF
-PEMIS    = XUNDEF
-PTSRAD   = XUNDEF
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.     CONVERSION OF THE ATMOSPHERIC VARIABLES
-!               --------------------------------------- 
-!
-!        1.1    water vapor
-!               -----------
-
-!
-ALLOCATE(ZRV(SIZE(PSFTH,1),SIZE(PSFTH,2),IKU))
-!
-IF(NRR>0) THEN
-  ZRV(:,:,:)=XRT(:,:,:,1)
-ELSE
-  ZRV(:,:,:)=0.
-END IF
-!
-!        1.2    Horizontal wind direction (rad from N clockwise)
-!               -------------------------
-!
-ZU2D(:,:,:)=MXF(XUT(:,:,IKB:IKB))
-ZV2D(:,:,:)=MYF(XVT(:,:,IKB:IKB))
-!
-!* angle between Y axis and wind (rad., clockwise)
-!
-ZALFA = 0.
-WHERE(ZU2D(:,:,1)/=0. .OR. ZV2D(:,:,1)/=0.)
-  ZALFA(:,:)=ATAN2(ZU2D(:,:,1),ZV2D(:,:,1))
-END WHERE
-WHERE(ZALFA(:,:)<0.) ZALFA(:,:) = ZALFA(:,:) + 2. * XPI
-!
-!* angle between North and wind (rad., clockwise)
-!
-IF (.NOT. LCARTESIAN) THEN
-  ZDIR =   ( (XRPK*(XLON(:,:)-XLON0)) - XBETA ) * XPI/180.  + ZALFA
-ELSE
-  ZDIR =                              - XBETA   * XPI/180.  + ZALFA
-END IF
-!
-!
-!        1.3    Rotate the wind
-!               ---------------
-!
-CALL ROTATE_WIND(D,XUT,XVT,XWT,           &
-     XDIRCOSXW, XDIRCOSYW, XDIRCOSZW,   &
-     XCOSSLOPE,XSINSLOPE,               &
-     XDXX,XDYY,XDZZ,                    &
-     ZUA,ZVA                            )
-
-!
-!        1.4    zonal and meridian components of the wind parallel to the slope
-!               ---------------------------------------------------------------
-!
-ZWIND(:,:) = SQRT( ZUA**2 + ZVA**2 )
-!
-ZU(:,:) = ZWIND(:,:) * SIN(ZDIR)
-ZV(:,:) = ZWIND(:,:) * COS(ZDIR)
-!
-!        1.5   Horizontal interpolation the thermodynamic fields
-!              -------------------------------------------------
-!
-CALL NORMAL_INTERPOL(XTHT,ZRV,XPABST,                    &
-     XDIRCOSXW, XDIRCOSYW, XDIRCOSZW,                    &
-     XCOSSLOPE,XSINSLOPE,                                &
-     XDXX,XDYY,XDZZ,                                     &
-     ZTHA,ZRVA,ZEXNA                                     )
-!
-DEALLOCATE(ZRV)
-!
-!
-!        1.6    Pressure and Exner function
-!               ---------------------------
-!
-!
-ZPA(:,:) = XP00 * ZEXNA(:,:) **(XCPD/XRD)
-!
-ZEXNS(:,:) = 0.5 * ( (XPABST(:,:,IKB-1)/XP00)**(XRD/XCPD)  &
-                    +(XPABST(:,:,IKB  )/XP00)**(XRD/XCPD)  &
-                   )
-ZPS(:,:) = XP00 * ZEXNS(:,:) **(XCPD/XRD)
-!
-!        1.7    humidity in kg/m3 from the mixing ratio
-!               ---------------------------------------
-!
-!
-ZQA(:,:) = ZRVA(:,:) * XRHODREF(:,:,IKB)
-!
-!
-!        1.8    Temperature from the potential temperature
-!               ------------------------------------------
-!
-!
-ZTA(:,:) = ZTHA(:,:) * ZEXNA(:,:)
-!
-!
-!        1.9    Air density
-!               -----------
-!
-ZRHOA(:,:) = ZPA(:,:)/(XRD * ZTA(:,:) * ((1. + (XRD/XRV)*ZRVA(:,:))/ &
-                                         (1. + ZRVA(:,:))))
-!
-!
-!        1.10   Precipitations
-!               --------------
-!
-ZRAIN=0.
-ZSNOW=0.
-IF (NRR>2 .AND. SIZE(XINPRR)>0 ) THEN
-  IF (( CCLOUD(1:3) == 'ICE'                                          .AND. LSEDIC) .OR. &
-      ((CCLOUD == 'C2R2' .OR. CCLOUD == 'C3R5' .OR. CCLOUD == 'KHKO') .AND. LSEDC)  .OR. &
-      ( CCLOUD=='LIMA'                                                .AND. MSEDC))   THEN
-    ZRAIN = ZRAIN + XINPRR * XRHOLW + XINPRC * XRHOLW
-  ELSE
-    ZRAIN = ZRAIN + XINPRR * XRHOLW
-  END IF
-END IF
-IF (CDCONV == 'KAFR')  THEN
-  ZRAIN = ZRAIN + (XPRCONV - XPRSCONV)  * XRHOLW
-  ZSNOW = ZSNOW + XPRSCONV * XRHOLW
-END IF
-IF( NRR    >= 5    .AND. SIZE(XINPRS)>0 ) ZSNOW = ZSNOW + XINPRS * XRHOLW
-IF( NRR    >= 6    .AND. SIZE(XINPRG)>0 ) ZSNOW = ZSNOW + XINPRG * XRHOLW
-IF( NRR    >= 7    .AND. SIZE(XINPRH)>0 ) ZSNOW = ZSNOW + XINPRH * XRHOLW
-!
-!
-!        1.11   Solar time
-!               ----------
-!
-IF (.NOT. LCARTESIAN) THEN
-  ZTSUN(:,:) = MOD(TDTCUR%xtime -XTSIDER*3600. +XLON(:,:)*240., XDAY)
-ELSE
-  ZTSUN(:,:) = MOD(TDTCUR%xtime -XTSIDER*3600. +XLON0    *240., XDAY)
-END IF
-!
-!        1.12   Forcing level
-!               -------------
-!
-ZZREF(:,:) = 0.5*( XZZ(:,:,IKB+1)-XZZ(:,:,IKB) )*XDIRCOSZW(:,:)
-!
-!
-!        1.13   CO2 concentration (kg/m3)
-!               -----------------
-!
-ZCO2(:,:) = XCCO2 * XRHODREF(:,:,IKB)
-!
-!
-!
-!        1.14   Blowing snow scheme (optional)
-!               -----------------
-!
-ZBLOWSNOW_2D=0.
-
-IF(LBLOWSNOW) THEN
-    KSV_SURF = NSV+NBLOWSNOW_2D ! When blowing snow scheme is used
-                  ! NBLOWSN0W_2D variables are sent to SURFEX through ZP_SV.
-                  ! They refer to the 2D fields advected by MNH including:
-                  !             - total number concentration in Canopy
-                  !             - total mass concentration in Canopy
-                  !             - equivalent concentration in the saltation layer
-    ! Initialize array of scalar to be sent to SURFEX including 2D blowing snow fields
-    ALLOCATE(YSV_SURF(KSV_SURF))
-    YSV_SURF(1:NSV)          = CSV(:)
-    YSV_SURF(NSV+1:KSV_SURF) = YPBLOWSNOW_2D(:)
-
-
-    DO JSV=1,NBLOWSNOW_2D 
-       ZBLOWSNOW_2D(:,:,JSV) = XRSNWCANOS(:,:,JSV)*XTSTEP/XRHODJ(:,:,IKB)
-    END DO
-
-ELSE
-    KSV_SURF = NSV
-    ALLOCATE(YSV_SURF(KSV_SURF))
-    YSV_SURF(:)     = CSV(:)
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.     Call to surface monitor with 2D variables
-!               -----------------------------------------
-!
-!
-! initial values:
-!
-IDIM1       = IIE-IIB+1
-IDIM2       = IJE-IJB+1
-IDIM1D      = IDIM1*IDIM2
-!
-!
-! Transform 2D input fields into 1D:
-!
-CALL RESHAPE_SURF(IDIM1D)
-!
-! call to have the cumulated time since beginning of simulation
-!
-CALL DATETIME_DISTANCE(TDTSEG,TDTCUR,ZTIMEC)
-
-#ifdef CPLOASIS
-IF (LOASIS) THEN
-  IF ( MOD(ZTIMEC,1.0) .LE. 1E-2 .OR. (1.0 - MOD(ZTIMEC,1.0)) .LE. 1E-2 ) THEN
-    IF ( NINT(ZTIMEC-(XSEGLEN-DYN_MODEL(1)%XTSTEP)) .LT. 0 ) THEN
-      WRITE(ILUOUT,*) '----------------------------'
-      WRITE(ILUOUT,*) ' Reception des champs avec OASIS'
-      WRITE(ILUOUT,*) 'NINT(ZTIMEC)=', NINT(ZTIMEC)
-      CALL MNH_OASIS_RECV(CPROGRAM,IDIM1D,SIZE(XSW_BANDS),ZTIMEC+XTSTEP,XTSTEP,         &
-                        ZP_ZENITH,XSW_BANDS                                         ,         &
-                        ZP_TSRAD,ZP_DIR_ALB,ZP_SCA_ALB,ZP_EMIS,ZP_TSURF)
-      WRITE(ILUOUT,*) '----------------------------'
-    END IF
-  END IF
-END IF
-#endif
-!
-! Call to surface schemes
-!                       
-CALL COUPLING_SURF_ATM_n(YSURF_CUR,'MESONH', 'E',ZTIMEC,                                            &
-               XTSTEP, TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime,                      &
-               IDIM1D,KSV_SURF,SIZE(XSW_BANDS),                                                     &
-               ZP_TSUN, ZP_ZENITH,ZP_ZENITH, ZP_AZIM,                                               &
-               ZP_ZREF, ZP_ZREF, ZP_ZS, ZP_U, ZP_V, ZP_QA, ZP_TA, ZP_RHOA, ZP_SV, ZP_CO2, YSV_SURF, &
-               ZP_RAIN, ZP_SNOW, ZP_LW, ZP_DIR_SW, ZP_SCA_SW, XSW_BANDS, ZP_PS, ZP_PA,              &
-               ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV,                                 &
-               ZP_TSRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H, ZP_QSURF,        &
-               ZP_PEW_A_COEF, ZP_PEW_B_COEF,                                                        &
-               ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,ZP_ZWS,                   &
-               'OK'                                                                                 )
-!
-#ifdef CPLOASIS
-IF (LOASIS) THEN
-  IF ( MOD(ZTIMEC,1.0) .LE. 1E-2 .OR. (1.0 - MOD(ZTIMEC,1.0)) .LE. 1E-2 ) THEN
-    IF (NINT(ZTIMEC-(XSEGLEN-DYN_MODEL(1)%XTSTEP)) .LT. 0) THEN
-      WRITE(ILUOUT,*) '----------------------------'
-      WRITE(ILUOUT,*) ' Envoi des champs avec OASIS'
-      WRITE(ILUOUT,*) 'NINT(ZTIMEC)=', NINT(ZTIMEC)
-      CALL MNH_OASIS_SEND(CPROGRAM,IDIM1D,ZTIMEC+XTSTEP,XTSTEP)
-      WRITE(ILUOUT,*) '----------------------------'
-    END IF
-  END IF
-END IF
-#endif
-!
-IF (CPROGRAM=='DIAG  ' .OR. LDIAG_IN_RUN) THEN
-  CALL DIAG_SURF_ATM_n(YSURF_CUR,'MESONH')
-  CALL  MNHGET_SURF_PARAM_n( PRN = ZP_RN,         PH = ZP_H,           PLE = ZP_LE,   PLEI = ZP_LEI,   &
-                             PGFLUX = ZP_GFLUX,   PT2M = ZP_T2M,       PQ2M = ZP_Q2M, PHU2M = ZP_HU2M, &
-                             PZON10M = ZP_ZON10M, PMER10M = ZP_MER10M                                  )
-END IF
-!
-! Transform 1D output fields into 2D:
-!
-CALL UNSHAPE_SURF(IDIM1,IDIM2)
-#ifdef MNH_FOREFIRE
-!------------------------!
-! COUPLING WITH FOREFIRE !
-!------------------------!
-	
-IF ( LFOREFIRE ) THEN
-	CALL FOREFIRE_DUMP_FIELDS_n(XUT, XVT, XWT, XSVT&
-	           , XTHT, XRT(:,:,:,1), XPABST, XTKET&
-	           , IDIM1+2, IDIM2+2, NKMAX+2)
-END IF
-
-IF ( FFCOUPLING ) THEN
-
-	CALL SEND_GROUND_WIND_n(XUT, XVT, IKB, IINFO_ll)
-	
-	CALL FOREFIRE_RECEIVE_PARAL_n()
-   
-   CALL COUPLING_FOREFIRE_n(XTSTEP, ZSFTH, ZSFTQ, ZSFTS)
-	
-	CALL FOREFIRE_SEND_PARAL_n(IINFO_ll)
-   
-END IF
-
-FF_TIME = FF_TIME + XTSTEP
-#endif
-!
-! Friction of components along slope axes (U: largest local slope axis, V: zero slope axis)
-!
-! 
-PSFU(:,:) = 0.
-PSFV(:,:) = 0.
-!
-WHERE (ZSFU(:,:)/=XUNDEF .AND. ZWIND(:,:)>0.)
-  PSFU(:,:) = - SQRT(ZSFU**2+ZSFV**2) * ZUA(:,:) / ZWIND(:,:) / XRHODREF(:,:,IKB)
-  PSFV(:,:) = - SQRT(ZSFU**2+ZSFV**2) * ZVA(:,:) / ZWIND(:,:) / XRHODREF(:,:,IKB)
-END WHERE
-!
-
-!*       2.1    Blaze Fire Model
-!               ----------------
-!
-IF (LBLAZE) THEN
-  ! get start time
-  CALL SECOND_MNH2( ZFIRETIME1 )
-
-  !*       2.1.1  Local variables allocation
-  !               --------------------------
-  !
-
-  ! Parallel fuel
-  NULLIFY(TZFIELDFIRE_ll)
-  IF (KTCOUNT <= 1) THEN
-    ! fuelmap
-    SELECT CASE (CPROPAG_MODEL)
-    CASE('SANTONI2011')
-      !
-      ALLOCATE( ZFIREFUELMAP(SIZE(XLSPHI,1), SIZE(XLSPHI,2), SIZE(XLSPHI,3), 22) );
-      ! Parallel fuel
-      CALL ADD4DFIELD_ll( TZFIELDFIRE_ll, ZFIREFUELMAP(:,:,:,1::22), 'MODEL_n::ZFIREFUELMAP' )
-      ! Default value
-      ZFIREFUELMAP(:,:,:,:) = 0.
-    END SELECT
-
-    !*       2.1.2  Read fuel map file
-    !               ------------------
-    !
-    ! Fuel map file name
-    YFUELMAPFILE = 'FuelMap'
-    !
-    CALL FIRE_READFUEL( TPFILE, ZFIREFUELMAP, XFMIGNITION, XFMWALKIG )
-
-    !*       2.1.3  Ignition LS function with ignition map
-    !               --------------------------------------
-    !
-    SELECT CASE (CFIRE_CPL_MODE)
-    CASE('2WAYCPL', 'ATM2FIR')
-      ! force ignition
-      WHERE (XFMIGNITION <= TDTCUR%XTIME ) XLSPHI = 1.
-      ! walking ignition
-      CALL FIRE_LS_RECONSTRUCTION_FROM_BMAP( XLSPHI, XFMWALKIG, 0.)
-      !
-      !*       2.1.4  Update BMAP
-      !               -----------
-      !
-      WHERE (XLSPHI >= .5 .AND. XBMAP < 0) XBMAP = TDTCUR%XTIME
-      !
-    CASE('FIR2ATM')
-      CALL FIRE_READBMAP(TPFILE,XBMAP)
-      
-    END SELECT
-    !
-    !*       2.1.5  Compute R0, A, Wf0, R00
-    !               -----------------------
-    !
-    SELECT CASE (CPROPAG_MODEL)
-    CASE('SANTONI2011')
-      CALL FIRE_NOWINDROS( ZFIREFUELMAP, XFMR0, XFMRFA, XFMWF0, XFMR00, XFMFUELTYPE, XFIRETAU, XFLUXPARAMH, &
-                           XFLUXPARAMW, XFMASE, XFMAWC )
-    END SELECT
-    !
-    !*       2.1.6  Compute orographic gradient
-    !               ---------------------------
-    CALL FIRE_GRAD_OROGRAPHY( XZS, XFMGRADOROX, XFMGRADOROY )
-    !
-    !*       2.1.7  Test halo size
-    !               --------------
-    IF (NHALO < 2 .AND. NFIRE_WENO_ORDER == 3) THEN
-      WRITE(ILUOUT,'(A/A)') 'ERROR BLAZE-FIRE : WENO3 fire gradient calculation needs NHALO >= 2'
-      !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','GROUND_PARAM_n','')
-    ELSEIF (NHALO < 3 .AND. NFIRE_WENO_ORDER == 5) THEN
-      WRITE(ILUOUT,'(A/A)') 'ERROR : WENO5 fire gradient calculation needs NHALO >= 3'
-      !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','GROUND_PARAM_n','')
-    END IF
-    !
-  END IF
-  !
-  !*       2.1.6  Compute grad of level set function phi
-  !               --------------------------------------
-  !
-  SELECT CASE (CFIRE_CPL_MODE)
-  CASE('2WAYCPL', 'ATM2FIR')
-    ! get time 1
-    CALL SECOND_MNH2( ZGRADTIME1 )
-    CALL FIRE_GRADPHI( XLSPHI, XGRADLSPHIX, XGRADLSPHIY )
-
-    ! get time 2
-    CALL SECOND_MNH2( ZGRADTIME2 )
-    XGRADPERF = XGRADPERF + ZGRADTIME2 - ZGRADTIME1
-    !
-    !*       2.1.7  Get horizontal wind speed projected on LS gradient direction
-    !               ------------------------------------------------------------
-    !
-    CALL FIRE_GETWIND( XUT, XVT, XWT, XGRADLSPHIX, XGRADLSPHIY, XFIREWIND, KTCOUNT, XTSTEP, XFMGRADOROX, XFMGRADOROY )
-    !
-    !*       2.1.8  Compute ROS XFIRERW with wind
-    !               -----------------------------
-    !
-    !
-    SELECT CASE (CPROPAG_MODEL)
-    CASE('SANTONI2011')
-      CALL FIRE_RATEOFSPREAD( XFMFUELTYPE, XFMR0, XFMRFA, XFMWF0, XFMR00, XFIREWIND, XGRADLSPHIX, XGRADLSPHIY, &
-                              XFMGRADOROX, XFMGRADOROY, XFIRERW )
-    END SELECT
-    CALL SECOND_MNH2( ZROSWINDTIME2 )
-    XROSWINDPERF = XROSWINDPERF + ZROSWINDTIME2 - ZGRADTIME2
-    !
-    !*       2.1.8  Integrate model on atm time step to propagate
-    !               ---------------------------------------------
-    !
-    SELECT CASE (CPROPAG_MODEL)
-    CASE('SANTONI2011')
-      CALL FIRE_PROPAGATE( XLSPHI, XBMAP, XFMIGNITION, XFMWALKIG, XGRADLSPHIX, XGRADLSPHIY, XTSTEP, XFIRERW )
-    END SELECT
-    CALL SECOND_MNH2( ZPROPAGTIME2 )
-    XPROPAGPERF = XPROPAGPERF + ZPROPAGTIME2 - ZROSWINDTIME2
-    !
-  CASE('FIR2ATM')
-    !
-    CALL SECOND_MNH2( ZPROPAGTIME1 )
-    CALL FIRE_LS_RECONSTRUCTION_FROM_BMAP( XLSPHI, XBMAP, XTSTEP )
-    CALL SECOND_MNH2( ZPROPAGTIME2 )
-    XPROPAGPERF = XPROPAGPERF + ZPROPAGTIME2 - ZPROPAGTIME1
-    XGRADPERF(:) = 0.
-    !
-  END SELECT
-  !
-  !*       2.1.8  Compute fluxes
-  !               --------------
-  !
-  SELECT CASE (CFIRE_CPL_MODE)
-  CASE('2WAYCPL','FIR2ATM')
-    CALL SECOND_MNH2( ZFLUXTIME1 )
-    ! 2 way coupling
-    CALL FIRE_HEATFLUXES( XLSPHI, XBMAP, XFIRETAU, XTSTEP, XFLUXPARAMH, XFLUXPARAMW, XFMFLUXHDH, XFMFLUXHDW, XFMASE, XFMAWC )
-    ! vertical distribution of fire heat fluxes
-    CALL FIRE_VERTICALFLUXDISTRIB( XFMFLUXHDH, XFMFLUXHDW, XRTHS, XRRS, ZSFTS, XEXNREF, XRHODJ, XRT, XRHODREF )
-    !
-    CALL SECOND_MNH2( ZFLUXTIME2 )
-    XFLUXPERF = XFLUXPERF + ZFLUXTIME2 - ZFLUXTIME1
-  CASE DEFAULT
-    XFLUXPERF(:) = 0.
-  END SELECT
-  ! get end time
-  CALL SECOND_MNH2( ZFIRETIME2 )
-  ! add to Blaze time
-  XFIREPERF = XFIREPERF + ZFIRETIME2 - ZFIRETIME1
-END IF
-!* conversion from H (W/m2) to w'Theta'
-!
-PSFTH(:,:) = ZSFTH(:,:) /  XCPD / XRHODREF(:,:,IKB)
-!
-!
-!* conversion from water flux (kg/m2/s) to w'rv'
-!
-PSFRV(:,:) = ZSFTQ(:,:) / XRHODREF(:,:,IKB)
-!
-!
-!* conversion from scalar flux (kg/m2/s) to w'rsv'
-!
-IF(NSV .GT. 0) THEN
-   DO JSV=1,NSV
-     PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) / XRHODREF(:,:,IKB)
-   END DO
-END IF
-!
-!* conversion from chemistry flux (molec/m2/s) to (ppp.m.s-1)
-!
-IF (LUSECHEM) THEN
-   DO JSV=NSV_CHEMBEG,NSV_CHEMEND
-      PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / ( XAVOGADRO * XRHODREF(:,:,IKB))
-      IF ((LCHEMDIAG).AND.(CPROGRAM == 'DIAG  ')) XCHFLX(:,:,JSV-NSV_CHEMBEG+1) = PSFSV(:,:,JSV)    
-   END DO
-ELSE
-  PSFSV(:,:,NSV_CHEMBEG:NSV_CHEMEND) = 0.
-END IF
-!
-!* conversion from dust flux (kg/m2/s) to (ppp.m.s-1)
-!
-IF (LDUST) THEN
-  DO JSV=NSV_DSTBEG,NSV_DSTEND
-     PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / (XMOLARWEIGHT_DUST * XRHODREF(:,:,IKB))
-  END DO
-ELSE
-  PSFSV(:,:,NSV_DSTBEG:NSV_DSTEND) = 0.
-END IF
-!
-!* conversion from sea salt flux (kg/m2/s) to (ppp.m.s-1)
-!
-IF (LSALT) THEN
-  DO JSV=NSV_SLTBEG,NSV_SLTEND
-     PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / (XMOLARWEIGHT_SALT * XRHODREF(:,:,IKB))
-  END DO
-ELSE
-  PSFSV(:,:,NSV_SLTBEG:NSV_SLTEND) = 0.
-END IF
-!
-!* conversion from aerosol flux (molec/m2/s) to (ppp.m.s-1)
-!
-IF (LORILAM) THEN
-  DO JSV=NSV_AERBEG,NSV_AEREND
-    PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / ( XAVOGADRO * XRHODREF(:,:,IKB))
-  END DO
-ELSE
-  PSFSV(:,:,NSV_AERBEG:NSV_AEREND) = 0.
-END IF
-!
-!* conversion from blowing snow flux (kg/m2/s) to [kg(snow)/kg(dry air).m.s-1]
-!
-IF (LBLOWSNOW) THEN
-  DO JSV=NSV_SNWBEG,NSV_SNWEND
-     PSFSV(:,:,JSV) = ZSFTS(:,:,JSV)/ (ZRHOA(:,:))
-  END DO
-  !* Update tendency for blowing snow 2D fields
-  DO JSV=1,(NBLOWSNOW_2D)
-     XRSNWCANOS(:,:,JSV) = ZBLOWSNOW_2D(:,:,JSV)*XRHODJ(:,:,IKB)/(XTSTEP*ZRHOA(:,:))
-  END DO
-
-ELSE
-  PSFSV(:,:,NSV_SNWBEG:NSV_SNWEND) = 0.
-END IF
-!
-!* conversion from CO2 flux (kg/m2/s) to w'CO2'
-!
-PSFCO2(:,:) = ZSFCO2(:,:) / XRHODREF(:,:,IKB)
-!
-!
-!*  Diagnostics
-!   -----------
-!
-!
-IF (LDIAG_IN_RUN) THEN
-  !
-  XCURRENT_SFCO2(:,:) = ZSFCO2(:,:)
-  XCURRENT_DSTAOD(:,:)=0.0
-  XCURRENT_SLTAOD(:,:)=0.0
-  IF (CRAD/='NONE') THEN
-  XCURRENT_LWD  (:,:) = XFLALWD(:,:)
-  XCURRENT_SWD  (:,:) = SUM(XDIRSRFSWD(:,:,:)+XSCAFLASWD(:,:,:),DIM=3)
-  XCURRENT_LWU  (:,:) = XLWU(:,:,IKB) 
-  XCURRENT_SWU  (:,:) = XSWU(:,:,IKB) 
-  XCURRENT_SWDIR(:,:) = SUM(XDIRSRFSWD,DIM=3)
-  XCURRENT_SWDIFF(:,:) = SUM(XSCAFLASWD(:,:,:),DIM=3) 
-  DO JK=IKB,IKE
-    IKRAD = JK - 1 
-    DO JJ=IJB,IJE
-       DO JI=IIB,IIE
-         XCURRENT_DSTAOD(JI,JJ)=XCURRENT_DSTAOD(JI,JJ)+XAER(JI,JJ,IKRAD,3)
-         XCURRENT_SLTAOD(JI,JJ)=XCURRENT_SLTAOD(JI,JJ)+XAER(JI,JJ,IKRAD,2)
-       ENDDO
-    ENDDO
-  ENDDO
-  END IF
-!
-  NULLIFY(TZFIELDSURF_ll)
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_RN,     'GROUND_PARAM_n::XCURRENT_RN'     )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_H,      'GROUND_PARAM_n::XCURRENT_H'      )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_LE,     'GROUND_PARAM_n::XCURRENT_LE'     )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_GFLUX,  'GROUND_PARAM_n::XCURRENT_GFLUX'  )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_SWD,    'GROUND_PARAM_n::XCURRENT_SWD'    )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_SWU,    'GROUND_PARAM_n::XCURRENT_SWU'    )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_LWD,    'GROUND_PARAM_n::XCURRENT_LWD'    )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_LWU,    'GROUND_PARAM_n::XCURRENT_LWU'    )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_T2M,    'GROUND_PARAM_n::XCURRENT_T2M'    )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_Q2M,    'GROUND_PARAM_n::XCURRENT_Q2M'    )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_HU2M,   'GROUND_PARAM_n::XCURRENT_HU2M'   )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_ZON10M, 'GROUND_PARAM_n::XCURRENT_ZON10M' )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_MER10M, 'GROUND_PARAM_n::XCURRENT_MER10M' )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_DSTAOD, 'GROUND_PARAM_n::XCURRENT_DSTAOD' )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_SLTAOD, 'GROUND_PARAM_n::XCURRENT_SLTAOD' )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_ZWS,    'GROUND_PARAM_n::XCURRENT_ZWS'    )
-  CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_SFCO2,  'GROUND_PARAM_n::XCURRENT_SFCO2'  )
-
-  CALL UPDATE_HALO_ll(TZFIELDSURF_ll,IINFO_ll)
-  CALL CLEANLIST_ll(TZFIELDSURF_ll)
-END IF
-!
-IF (LBLAZE) THEN
-  IF (KTCOUNT <= 1) THEN
-      DEALLOCATE(ZFIREFUELMAP)
-  END IF
-  CALL CLEANLIST_ll(TZFIELDFIRE_ll)
-END IF
-!==================================================================================
-!
-CONTAINS
-!
-!==================================================================================
-!
-SUBROUTINE RESHAPE_SURF(KDIM1D)
-!
-INTEGER, INTENT(IN)   :: KDIM1D
-INTEGER, DIMENSION(1) :: ISHAPE_1
-!
-ISHAPE_1 = (/KDIM1D/)
-!
-ALLOCATE(ZP_TSUN    (KDIM1D))
-ALLOCATE(ZP_ZENITH  (KDIM1D))
-ALLOCATE(ZP_AZIM    (KDIM1D))
-ALLOCATE(ZP_ZREF    (KDIM1D))
-ALLOCATE(ZP_ZS      (KDIM1D))
-ALLOCATE(ZP_U       (KDIM1D))
-ALLOCATE(ZP_V       (KDIM1D))
-ALLOCATE(ZP_QA      (KDIM1D))
-ALLOCATE(ZP_TA      (KDIM1D))
-ALLOCATE(ZP_RHOA    (KDIM1D))
-ALLOCATE(ZP_SV      (KDIM1D,KSV_SURF))
-ALLOCATE(ZP_CO2     (KDIM1D))
-ALLOCATE(ZP_RAIN    (KDIM1D))
-ALLOCATE(ZP_SNOW    (KDIM1D))
-ALLOCATE(ZP_LW      (KDIM1D))
-ALLOCATE(ZP_DIR_SW  (KDIM1D,SIZE(XDIRSRFSWD,3)))
-ALLOCATE(ZP_SCA_SW  (KDIM1D,SIZE(XSCAFLASWD,3)))
-ALLOCATE(ZP_PS      (KDIM1D))
-ALLOCATE(ZP_PA      (KDIM1D))
-ALLOCATE(ZP_ZWS     (KDIM1D))
-
-ALLOCATE(ZP_SFTQ    (KDIM1D))
-ALLOCATE(ZP_SFTH    (KDIM1D))
-ALLOCATE(ZP_SFU     (KDIM1D))
-ALLOCATE(ZP_SFV     (KDIM1D))
-ALLOCATE(ZP_SFTS    (KDIM1D,KSV_SURF))
-ALLOCATE(ZP_SFCO2   (KDIM1D))
-ALLOCATE(ZP_TSRAD   (KDIM1D))
-ALLOCATE(ZP_DIR_ALB (KDIM1D,SIZE(PDIR_ALB,3)))
-ALLOCATE(ZP_SCA_ALB (KDIM1D,SIZE(PSCA_ALB,3)))
-ALLOCATE(ZP_EMIS    (KDIM1D))
-ALLOCATE(ZP_TSURF   (KDIM1D))
-ALLOCATE(ZP_Z0      (KDIM1D))
-ALLOCATE(ZP_Z0H     (KDIM1D))
-ALLOCATE(ZP_QSURF   (KDIM1D))
-ALLOCATE(ZP_RN      (KDIM1D))
-ALLOCATE(ZP_H       (KDIM1D))
-ALLOCATE(ZP_LE      (KDIM1D))
-ALLOCATE(ZP_LEI     (KDIM1D))
-ALLOCATE(ZP_GFLUX   (KDIM1D))
-ALLOCATE(ZP_T2M     (KDIM1D))
-ALLOCATE(ZP_Q2M     (KDIM1D))
-ALLOCATE(ZP_HU2M    (KDIM1D))
-ALLOCATE(ZP_ZON10M  (KDIM1D))
-ALLOCATE(ZP_MER10M  (KDIM1D))
-
-!* explicit coupling only
-ALLOCATE(ZP_PEW_A_COEF  (KDIM1D))
-ALLOCATE(ZP_PEW_B_COEF  (KDIM1D))
-ALLOCATE(ZP_PET_A_COEF  (KDIM1D))
-ALLOCATE(ZP_PEQ_A_COEF  (KDIM1D))
-ALLOCATE(ZP_PET_B_COEF  (KDIM1D))
-ALLOCATE(ZP_PEQ_B_COEF  (KDIM1D))
-
-ZP_TSUN(:)        = RESHAPE(ZTSUN(IIB:IIE,IJB:IJE),        ISHAPE_1)
-ZP_TA(:)          = RESHAPE(ZTA(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_QA(:)          = RESHAPE(ZQA(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_RHOA(:)        = RESHAPE(ZRHOA(IIB:IIE,IJB:IJE),        ISHAPE_1)
-ZP_U(:)           = RESHAPE(ZU(IIB:IIE,IJB:IJE),           ISHAPE_1)
-ZP_V(:)           = RESHAPE(ZV(IIB:IIE,IJB:IJE),           ISHAPE_1)
-ZP_PS(:)          = RESHAPE(ZPS(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_PA(:)          = RESHAPE(ZPA(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_ZS(:)          = RESHAPE(XZS(IIB:IIE,IJB:IJE),          ISHAPE_1)
-ZP_CO2(:)         = RESHAPE(ZCO2(IIB:IIE,IJB:IJE),         ISHAPE_1)
-ZP_SNOW(:)        = RESHAPE(ZSNOW(IIB:IIE,IJB:IJE),        ISHAPE_1)
-ZP_RAIN(:)        = RESHAPE(ZRAIN(IIB:IIE,IJB:IJE),        ISHAPE_1)
-ZP_ZREF(:)        = RESHAPE(ZZREF(IIB:IIE,IJB:IJE),        ISHAPE_1)
-ZP_ZWS(:)         = RESHAPE(XZWS(IIB:IIE,IJB:IJE),         ISHAPE_1)
-
-DO JLAYER=1,NSV
-  ZP_SV(:,JLAYER) = RESHAPE(XSVT(IIB:IIE,IJB:IJE,IKB,JLAYER), ISHAPE_1)
-END DO
-!
-IF(LBLOWSNOW) THEN
-  DO JLAYER=1,NBLOWSNOW_2D
-      ZP_SV(:,NSV+JLAYER) = RESHAPE(ZBLOWSNOW_2D(IIB:IIE,IJB:IJE,JLAYER), ISHAPE_1)
-  END DO
-END IF
-!
-!chemical conversion : from part/part to molec./m3
-DO JLAYER=NSV_CHEMBEG,NSV_CHEMEND
-  ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) * XAVOGADRO * ZP_RHOA(:) / XMD
-END DO
-DO JLAYER=NSV_AERBEG,NSV_AEREND
-  ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) * XAVOGADRO * ZP_RHOA(:) / XMD
-END DO
-!dust  conversion : from part/part to kg/m3
-DO JLAYER=NSV_DSTBEG,NSV_DSTEND
- ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) *  XMOLARWEIGHT_DUST* ZP_RHOA(:) / XMD
-END DO
-!sea salt  conversion : from part/part to kg/m3
-DO JLAYER=NSV_SLTBEG,NSV_SLTEND
- ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) *  XMOLARWEIGHT_SALT* ZP_RHOA(:) / XMD
-END DO
-!
-!blowing snow conversion : from kg(snow)/kg(dry air) to kg(snow)/m3
-DO JLAYER=NSV_SNWBEG,NSV_SNWEND
- ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) * ZP_RHOA(:)
-END DO
-
-IF(LBLOWSNOW) THEN ! Convert 2D blowing snow fields
-                    ! from kg(snow)/kg(dry air) to kg(snow)/m3
-  DO JLAYER=(NSV+1),KSV_SURF
-     ZP_SV(:,JLAYER) = ZP_SV(:,JLAYER) * ZP_RHOA(:)
-  END DO
-END IF
-!
-ZP_ZENITH(:)      = RESHAPE(XZENITH(IIB:IIE,IJB:IJE),      ISHAPE_1)
-ZP_AZIM  (:)      = RESHAPE(XAZIM  (IIB:IIE,IJB:IJE),      ISHAPE_1)
-ZP_LW(:)          = RESHAPE(XFLALWD(IIB:IIE,IJB:IJE),      ISHAPE_1)
-DO JLAYER=1,SIZE(XDIRSRFSWD,3)
-  ZP_DIR_SW(:,JLAYER)  = RESHAPE(XDIRSRFSWD(IIB:IIE,IJB:IJE,JLAYER),  ISHAPE_1)
-  ZP_SCA_SW(:,JLAYER)  = RESHAPE(XSCAFLASWD(IIB:IIE,IJB:IJE,JLAYER),  ISHAPE_1)
-END DO
-!
-ZP_PEW_A_COEF = 0.
-ZP_PEW_B_COEF = 0.
-ZP_PET_A_COEF = 0.
-ZP_PEQ_A_COEF = 0.
-ZP_PET_B_COEF = 0.
-ZP_PEQ_B_COEF = 0.
-!
-END SUBROUTINE RESHAPE_SURF
-!================================================i=================================
-SUBROUTINE UNSHAPE_SURF(KDIM1,KDIM2)
-!
-INTEGER, INTENT(IN)   :: KDIM1, KDIM2
-INTEGER, DIMENSION(2) :: ISHAPE_2
-!
-ISHAPE_2 = (/KDIM1,KDIM2/)
-!
-! Arguments in call to surface:
-!
-ZSFTH = XUNDEF
-ZSFTQ = XUNDEF
-IF (NSV>0) ZSFTS = XUNDEF
-ZSFCO2 = XUNDEF
-ZSFU = XUNDEF
-ZSFV = XUNDEF
-!
-ZSFTH   (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFTH(:),       ISHAPE_2)
-ZSFTQ   (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFTQ(:),       ISHAPE_2)
-DO JLAYER=1,SIZE(PSFSV,3)
-  ZSFTS   (IIB:IIE,IJB:IJE,JLAYER) = RESHAPE(ZP_SFTS(:,JLAYER),  ISHAPE_2)
-END DO
-ZSFCO2  (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFCO2(:),    ISHAPE_2)
-ZSFU    (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFU(:),      ISHAPE_2)
-ZSFV    (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_SFV(:),      ISHAPE_2)
-DO JLAYER=1,SIZE(PEMIS,3)
-    PEMIS   (IIB:IIE,IJB:IJE,JLAYER)     = RESHAPE(ZP_EMIS(:),     ISHAPE_2)
-END DO
-PTSRAD  (IIB:IIE,IJB:IJE)       = RESHAPE(ZP_TSRAD(:),    ISHAPE_2)
-IF(LBLOWSNOW) THEN
-  DO JLAYER=1,NBLOWSNOW_2D
-    ZBLOWSNOW_2D(IIB:IIE,IJB:IJE,JLAYER)  =  RESHAPE(ZP_SFTS(:,NSV+JLAYER),  ISHAPE_2)
-  END DO
-END IF
-!
-IF (LDIAG_IN_RUN) THEN
-  XCURRENT_RN      (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_RN(:),     ISHAPE_2)
-  XCURRENT_H       (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_H (:),     ISHAPE_2)
-  XCURRENT_LE      (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_LE(:),     ISHAPE_2)
-  XCURRENT_LEI     (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_LEI(:),    ISHAPE_2)
-  XCURRENT_GFLUX   (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_GFLUX(:),  ISHAPE_2)
-  XCURRENT_T2M     (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_T2M(:),    ISHAPE_2)
-  XCURRENT_Q2M     (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_Q2M(:),    ISHAPE_2)
-  XCURRENT_HU2M    (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_HU2M(:),   ISHAPE_2)
-  XCURRENT_ZON10M  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_ZON10M(:), ISHAPE_2)
-  XCURRENT_MER10M  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_MER10M(:), ISHAPE_2)
-  XCURRENT_ZWS  (IIB:IIE,IJB:IJE)  = RESHAPE(ZP_ZWS(:), ISHAPE_2)
-ENDIF
-!
-DO JLAYER=1,SIZE(PDIR_ALB,3)
-  PDIR_ALB(IIB:IIE,IJB:IJE,JLAYER) = RESHAPE(ZP_DIR_ALB(:,JLAYER), ISHAPE_2)
-  PSCA_ALB(IIB:IIE,IJB:IJE,JLAYER) = RESHAPE(ZP_SCA_ALB(:,JLAYER), ISHAPE_2)
-END DO
-!
-DEALLOCATE(ZP_TSUN    )
-DEALLOCATE(ZP_ZENITH  )
-DEALLOCATE(ZP_AZIM    )
-DEALLOCATE(ZP_ZREF    )
-DEALLOCATE(ZP_ZS      )
-DEALLOCATE(ZP_U       )
-DEALLOCATE(ZP_V       )
-DEALLOCATE(ZP_QA      )
-DEALLOCATE(ZP_TA      )
-DEALLOCATE(ZP_RHOA    )
-DEALLOCATE(ZP_SV      )
-DEALLOCATE(ZP_CO2     )
-DEALLOCATE(ZP_RAIN    )
-DEALLOCATE(ZP_SNOW    )
-DEALLOCATE(ZP_LW      )
-DEALLOCATE(ZP_DIR_SW  )
-DEALLOCATE(ZP_SCA_SW  )
-DEALLOCATE(ZP_PS      )
-DEALLOCATE(ZP_PA      )
-DEALLOCATE(ZP_ZWS     )
-
-DEALLOCATE(ZP_SFTQ    )
-DEALLOCATE(ZP_SFTH    )
-DEALLOCATE(ZP_SFTS    )
-DEALLOCATE(ZP_SFCO2   )
-DEALLOCATE(ZP_SFU     )
-DEALLOCATE(ZP_SFV     )
-DEALLOCATE(ZP_TSRAD   )
-DEALLOCATE(ZP_DIR_ALB )
-DEALLOCATE(ZP_SCA_ALB )
-DEALLOCATE(ZP_EMIS    )
-DEALLOCATE(ZP_RN      )
-DEALLOCATE(ZP_H       )
-DEALLOCATE(ZP_LE      )
-DEALLOCATE(ZP_LEI     )
-DEALLOCATE(ZP_GFLUX   )
-DEALLOCATE(ZP_T2M     )
-DEALLOCATE(ZP_Q2M     )
-DEALLOCATE(ZP_HU2M     )
-DEALLOCATE(ZP_ZON10M  )
-DEALLOCATE(ZP_MER10M  )
-
-DEALLOCATE(ZP_PEW_A_COEF  )
-DEALLOCATE(ZP_PEW_B_COEF  )
-DEALLOCATE(ZP_PET_A_COEF  )
-DEALLOCATE(ZP_PEQ_A_COEF  )
-DEALLOCATE(ZP_PET_B_COEF  )
-DEALLOCATE(ZP_PEQ_B_COEF  )
-!
-END SUBROUTINE UNSHAPE_SURF
-!==================================================================================
-!
-END SUBROUTINE GROUND_PARAM_n
diff --git a/src/mesonh/ext/ibm_affectv.f90 b/src/mesonh/ext/ibm_affectv.f90
deleted file mode 100644
index 74df9a13d..000000000
--- a/src/mesonh/ext/ibm_affectv.f90
+++ /dev/null
@@ -1,402 +0,0 @@
-!MNH_LIC Copyright 2019-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_IBM_AFFECTV  
-  !    ####################### 
-  !
-  INTERFACE
-     !
-     SUBROUTINE IBM_AFFECTV(PVAR,PVAR2,PVAR3,HVAR,KIBM_LAYER,HIBM_MODE_INTE3,&
-          HIBM_FORC_BOUNR,PRADIUS,PPOWERS,&
-          HIBM_MODE_INT1N,HIBM_TYPE_BOUNN,HIBM_MODE_BOUNN,HIBM_FORC_BOUNN,PIBM_FORC_BOUNN,&
-          HIBM_MODE_INT1T,HIBM_TYPE_BOUNT,HIBM_MODE_BOUNT,HIBM_FORC_BOUNT,PIBM_FORC_BOUNT,&
-          HIBM_MODE_INT1C,HIBM_TYPE_BOUNC,HIBM_MODE_BOUNC,HIBM_FORC_BOUNC,PIBM_FORC_BOUNC,PXMU,PDIV)
-       !
-       REAL, DIMENSION(:,:,:)   ,INTENT(INOUT) :: PVAR
-       REAL, DIMENSION(:,:,:,:) ,INTENT(IN)    :: PVAR2,PVAR3
-       CHARACTER(LEN=1)         ,INTENT(IN)    :: HVAR
-       INTEGER                  ,INTENT(IN)    :: KIBM_LAYER
-       REAL                     ,INTENT(IN)    :: PRADIUS
-       REAL                     ,INTENT(IN)    :: PPOWERS
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_FORC_BOUNR
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_INTE3
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_INT1N
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_TYPE_BOUNN
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_BOUNN 
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_FORC_BOUNN
-       REAL                     ,INTENT(IN)    :: PIBM_FORC_BOUNN
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_INT1T
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_TYPE_BOUNT
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_BOUNT
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_FORC_BOUNT
-       REAL                     ,INTENT(IN)    :: PIBM_FORC_BOUNT
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_INT1C
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_TYPE_BOUNC
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_BOUNC
-       CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_FORC_BOUNC
-       REAL                     ,INTENT(IN)    :: PIBM_FORC_BOUNC
-       REAL, DIMENSION(:,:,:)   ,INTENT(IN)    :: PXMU
-       REAL, DIMENSION(:,:,:)   ,INTENT(IN)    :: PDIV
-       !
-     END SUBROUTINE IBM_AFFECTV
-     !
-  END INTERFACE
-  !
-END MODULE MODI_IBM_AFFECTV
-!
-!     ########################################################
-SUBROUTINE IBM_AFFECTV(PVAR,PVAR2,PVAR3,HVAR,KIBM_LAYER,HIBM_MODE_INTE3,&
-     HIBM_FORC_BOUNR,PRADIUS,PPOWERS,&
-     HIBM_MODE_INT1N,HIBM_TYPE_BOUNN,HIBM_MODE_BOUNN,HIBM_FORC_BOUNN,PIBM_FORC_BOUNN,&
-     HIBM_MODE_INT1T,HIBM_TYPE_BOUNT,HIBM_MODE_BOUNT,HIBM_FORC_BOUNT,PIBM_FORC_BOUNT,&
-     HIBM_MODE_INT1C,HIBM_TYPE_BOUNC,HIBM_MODE_BOUNC,HIBM_FORC_BOUNC,PIBM_FORC_BOUNC,PXMU,PDIV)
-  !     ########################################################
-  !
-  !
-  !****  IBM_AFFECTV computes the variable PVAR on desired ghost points :
-  !                 - the V type of the ghost/image 
-  !                 - the 3D interpolation mode (HIBM_MODE_INTE3)
-  !                 - the 1D interpolation mode (HIBM_MODE_INTE1)
-  !                 - the boundary condition    (HIBM_TYPE_BOUND)  
-  !                 - the symmetry character    (HIBM_MODE_BOUND)
-  !                 - the forcing type          (HIBM_FORC_BOUND)    
-  !                 - the forcing term          (HIBM_FORC_BOUND)
-  !       Choice of forcing type is depending on 
-  !                 the normal, binormal, tangent vectors (N,C,T)
-  !                   
-  !                
-  !    PURPOSE
-  !    -------
-  !****  Ghosts (resp. Images) locations are stored in KIBM_STOR_GHOST (resp. KIBM_STOR_IMAGE).
-  !      Solutions are computed in regard of the symmetry character of the solution:
-  !                                      HIBM_MODE_BOUND = 'SYM' (Symmetrical)
-  !                                      HIBM_MODE_BOUND = 'ASY' (Anti-symmetrical)
-  !      The ghost value is depending on the variable value at the interface:
-  !                                      HIBM_TYPE_BOUND = "CST" (constant value)
-  !                                      HIBM_TYPE_BOUND = "LAW" (wall models)
-  !                                      HIBM_TYPE_BOUND = "LIN" (linear evolution, only IMAGE2 type)
-  !                                      HIBM_TYPE_BOUND = "LOG" (logarithmic evol, only IMAGE2 type)
-  !      Three 3D interpolations exists  HIBM_MODE_INTE3 = "IDW" (Inverse  Distance Weighting)
-  !                                      HIBM_MODE_INTE3 = "MDW" (Modified Distance Weighting)
-  !                                      HIBM_MODE_INTE3 = "LAG" (Trilinear Lagrange interp. )
-  !      Three 1D interpolations exists  HIBM_MODE_INTE1 = "CL0" (Lagrange Polynomials - 1 points - MIRROR)
-  !                                      HIBM_MODE_INTE1 = "CL1" (Lagrange Polynomials - 2 points - IMAGE1)
-  !                                      HIBM_MODE_INTE1 = "CL2" (Lagrange Polynomials - 3 points - IMAGE2)
-  !    METHOD
-  !    ------
-  !      - loop on ghosts
-  !      - functions storage
-  !      - computations of the location of the corners cell containing MIRROR/IMAGE1/IMAGE2
-  !      - 3D interpolation (IDW, MDW, CLI)  to obtain the MIRROR/IMAGE1/IMAGE2 values
-  !      - computation of the value at the interface 
-  !      - 1D interpolation (CLI1,CLI2,CLI3) to obtain the GHOSTS values
-  !      - Affectation
-  !
-  !    EXTERNAL
-  !    --------
-  !      SUBROUTINE ?
-  !
-  !    IMPLICIT ARGUMENTS
-  !    ------------------
-  !       MODD_?   
-  !
-  !    REFERENCE
-  !    ---------
-  !
-  !    AUTHOR
-  !    ------
-  !      Franck Auguste (CERFACS-AE)
-  !
-  !    MODIFICATIONS
-  !    -------------
-  !      Original         01/01/2019
-  !
-  !------------------------------------------------------------------------------
-  !       
-  !**** 0. DECLARATIONS
-  !     ---------------
-  ! module
-  USE MODE_POS
-  USE MODE_ll
-  USE MODE_IO
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-  !
-  ! declaration
-  USE MODD_IBM_PARAM_n
-  USE MODD_FIELD_n
-  USE MODD_PARAM_n, ONLY: CTURB
-  USE MODD_GRID_n, ONLY: XXHAT,XYHAT,XZZ
-  USE MODD_VAR_ll,  ONLY: IP
-  USE MODD_LBC_n
-  USE MODD_REF_n, ONLY: XRHODJ,XRHODREF
-  !
-  ! interface
-  USE MODI_IBM_VALUECORN
-  USE MODI_IBM_LOCATCORN
-  USE MODI_IBM_3DINT
-  USE MODI_IBM_1DINT
-  USE MODI_IBM_0DINT
-  USE MODI_IBM_VALUEMAT1
-  USE MODI_IBM_VALUEMAT2
-  USE MODI_SHUMAN
-  USE MODD_DYN_n
-  USE MODD_FIELD_n
-  USE MODD_CST
-  USE MODD_CTURB
-  USE MODD_RADIATIONS_n
-  !
-  IMPLICIT NONE
-  !
-  !------------------------------------------------------------------------------
-  !
-  !       0.1  declarations of arguments
-  !
-  REAL, DIMENSION(:,:,:)   ,INTENT(INOUT) :: PVAR
-  REAL, DIMENSION(:,:,:,:) ,INTENT(IN)    :: PVAR2,PVAR3
-  CHARACTER(LEN=1)         ,INTENT(IN)    :: HVAR
-  INTEGER                  ,INTENT(IN)    :: KIBM_LAYER
-  REAL                     ,INTENT(IN)    :: PRADIUS
-  REAL                     ,INTENT(IN)    :: PPOWERS
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_FORC_BOUNR
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_INTE3
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_INT1N
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_TYPE_BOUNN
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_BOUNN
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_FORC_BOUNN
-  REAL                     ,INTENT(IN)    :: PIBM_FORC_BOUNN
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_INT1T
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_TYPE_BOUNT
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_BOUNT
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_FORC_BOUNT
-  REAL                     ,INTENT(IN)    :: PIBM_FORC_BOUNT
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_INT1C
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_TYPE_BOUNC
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_MODE_BOUNC
-  CHARACTER(LEN=3)         ,INTENT(IN)    :: HIBM_FORC_BOUNC
-  REAL                     ,INTENT(IN)    :: PIBM_FORC_BOUNC
-  REAL, DIMENSION(:,:,:)   ,INTENT(IN)    :: PXMU
-  REAL, DIMENSION(:,:,:)   ,INTENT(IN)    :: PDIV
-  !
-  !------------------------------------------------------------------------------
-  !
-  !       0.2  declaration of local variables
-  !
-  INTEGER                                    :: JI,JJ,JK,JL,JM,JMM,JN,JNN,JH,JLL         ! loop index
-  INTEGER, DIMENSION(:)  , ALLOCATABLE       :: I_INDEX_CORN                             ! reference corner index 
-  INTEGER                                    :: I_GHOST_NUMB                             ! ghost number per layer
-  REAL   , DIMENSION(:,:), ALLOCATABLE       :: Z_LOCAT_CORN,Z_LOCAT_IMAG                ! corners coordinates
-  REAL   , DIMENSION(:)  , ALLOCATABLE       :: Z_TESTS_CORN                             ! interface distance dependence 
-  REAL   , DIMENSION(:)  , ALLOCATABLE       :: Z_VALUE_CORN                             ! value variables at corners
-  REAL   , DIMENSION(:,:), ALLOCATABLE       :: Z_VALUE_IMAG,Z_VALUE_TEMP,Z_VALUE_ZLKE   ! value at mirror/image1/image2 
-  REAL   , DIMENSION(:)  , ALLOCATABLE       :: Z_LOCAT_BOUN,Z_LOCAT_GHOS,Z_TEMP_ZLKE    ! location of bound and ghost
-  REAL                                       :: Z_DELTA_IMAG,ZIBM_VISC,ZIBM_DIVK
-  CHARACTER(LEN=3),DIMENSION(:), ALLOCATABLE :: Y_TYPE_BOUND,Y_FORC_BOUND,Y_MODE_BOUND,Y_MODE_INTE1
-  REAL   , DIMENSION(:)  , ALLOCATABLE       :: Z_FORC_BOUND,Z_VALUE_GHOS
-  REAL   , DIMENSION(:,:), ALLOCATABLE       :: Z_VALUE_MAT1,Z_VALUE_MAT2
-  REAL                                       :: ZIBM_HALO
-  !
-  !------------------------------------------------------------------------------
-  !
-  !       0.3  Allocation
-  !
-  ALLOCATE(I_INDEX_CORN(3))
-  ALLOCATE(Z_LOCAT_CORN(8,3))
-  ALLOCATE(Z_VALUE_CORN(8))
-  ALLOCATE(Z_TESTS_CORN(8))
-  ALLOCATE(Z_LOCAT_IMAG(3,3))
-  ALLOCATE(Z_VALUE_IMAG(4,3))
-  ALLOCATE(Z_VALUE_TEMP(4,3))
-  ALLOCATE(Z_LOCAT_BOUN(3))
-  ALLOCATE(Z_LOCAT_GHOS(3))
-  ALLOCATE(Z_VALUE_GHOS(3))
-  ALLOCATE(Y_TYPE_BOUND(3),Y_FORC_BOUND(3))
-  ALLOCATE(Y_MODE_BOUND(3),Y_MODE_INTE1(3))
-  ALLOCATE(Z_FORC_BOUND(3))
-  ALLOCATE(Z_VALUE_MAT1(3,3))
-  ALLOCATE(Z_VALUE_MAT2(3,3))
-  !
-  !------------------------------------------------------------------------------
-  !
-  !**** 1. PRELIMINARIES
-  !     ----------------
-  I_INDEX_CORN(:)    = 0
-  Z_LOCAT_CORN(:,:)  = 0.
-  Z_VALUE_CORN(:)    = 0.
-  Z_TESTS_CORN(:)    = 0.
-  Z_LOCAT_IMAG(:,:)  = 0.
-  Z_VALUE_IMAG(:,:)  = 0.
-  Z_VALUE_TEMP(:,:)  = 0.
-  Z_LOCAT_GHOS(:)    = 0.
-  Z_LOCAT_BOUN(:)    = 0.
-  Z_VALUE_GHOS(:)    = 0.
-  Z_VALUE_MAT1(:,:)  = 0.
-  Z_VALUE_MAT2(:,:)  = 0.
-  IF (HVAR=='U') JH = 1
-  IF (HVAR=='V') JH = 2
-  IF (HVAR=='W') JH = 3
-  Y_TYPE_BOUND(1) = HIBM_TYPE_BOUNN
-  Y_TYPE_BOUND(2) = HIBM_TYPE_BOUNT
-  Y_TYPE_BOUND(3) = HIBM_TYPE_BOUNC
-  Y_FORC_BOUND(1) = HIBM_FORC_BOUNN
-  Y_FORC_BOUND(2) = HIBM_FORC_BOUNT
-  Y_FORC_BOUND(3) = HIBM_FORC_BOUNC
-  Y_MODE_BOUND(1) = HIBM_MODE_BOUNN
-  Y_MODE_BOUND(2) = HIBM_MODE_BOUNT
-  Y_MODE_BOUND(3) = HIBM_MODE_BOUNC
-  Y_MODE_INTE1(1) = HIBM_MODE_INT1N
-  Y_MODE_INTE1(2) = HIBM_MODE_INT1T
-  Y_MODE_INTE1(3) = HIBM_MODE_INT1C
-  Z_FORC_BOUND(1) = PIBM_FORC_BOUNN
-  Z_FORC_BOUND(2) = PIBM_FORC_BOUNT
-  Z_FORC_BOUND(3) = PIBM_FORC_BOUNC
-  !
-  ALLOCATE(Z_VALUE_ZLKE(4,3))
-  ALLOCATE(Z_TEMP_ZLKE(3))
-  Z_VALUE_ZLKE(:,:) = 0.
-  Z_TEMP_ZLKE(:)  = 0.
-  !
-  DO JMM=1,KIBM_LAYER
-     !
-     ! searching number of ghosts 
-     JM = size(NIBM_GHOST_V,1)
-     JI = 0
-     JJ = 0
-     JK = 0
-     DO WHILE ((JI==0.and.JJ==0.and.JK==0).and.JM>0)
-        JI = NIBM_GHOST_V(JM,JMM,JH,1)
-        JJ = NIBM_GHOST_V(JM,JMM,JH,2)
-        JK = NIBM_GHOST_V(JM,JMM,JH,3)
-        IF (JI==0.and.JJ==0.and.JK==0) JM = JM - 1
-     ENDDO
-     I_GHOST_NUMB = JM
-     !
-     ! Loop on each P Ghosts 
-     IF (I_GHOST_NUMB<=0) GO TO 666
-     DO JM = 1,I_GHOST_NUMB
-        !
-        ! ghost index/ls
-        JI = NIBM_GHOST_V(JM,JMM,JH,1)
-        JJ = NIBM_GHOST_V(JM,JMM,JH,2)
-        JK = NIBM_GHOST_V(JM,JMM,JH,3)
-        IF (JI==0.or.JJ==0.or.JK==0) GO TO 777 
-        Z_LOCAT_GHOS(:) =  XIBM_GHOST_V(JM,JMM,JH,:)
-        Z_LOCAT_BOUN(:) = 2.0*XIBM_IMAGE_V(JM,JMM,JH,1,:)-1.0*XIBM_IMAGE_V(JM,JMM,JH,2,:) 
-        ZIBM_HALO = 1.
-        !
-        DO JN = 1,3
-           !
-           Z_LOCAT_IMAG(JN,:)= XIBM_IMAGE_V(JM,JMM,JH  ,JN,:)
-           Z_DELTA_IMAG      = ((XXHAT(JI+1)-XXHAT(JI))*(XYHAT(JJ+1)-XYHAT(JJ)))**0.5
-           !
-           DO JLL=1,3
-              I_INDEX_CORN(:)       = NIBM_IMAGE_V(JM,JMM,JH,JLL,JN,:)
-              IF (I_INDEX_CORN(1)==0.AND.JN==2) ZIBM_HALO=0.
-              IF (I_INDEX_CORN(2)==0.AND.JN==2) ZIBM_HALO=0.
-              Z_LOCAT_CORN(:,:)     = IBM_LOCATCORN(I_INDEX_CORN,JLL+1)
-              Z_TESTS_CORN(:)       = XIBM_TESTI_V(JM,JMM,JH,JLL,JN,:)
-              Z_VALUE_CORN(:)       = IBM_VALUECORN(PVAR2(:,:,:,JLL),I_INDEX_CORN)          
-              Z_VALUE_IMAG(JN,JLL)  = IBM_3DINT(JN,Z_VALUE_IMAG(:,JLL),Z_LOCAT_BOUN,Z_TESTS_CORN,&
-                   Z_LOCAT_CORN,Z_VALUE_CORN,Z_LOCAT_IMAG(JN,:),&
-                   HIBM_MODE_INTE3,PRADIUS,PPOWERS)
-           ENDDO
-           !
-        ENDDO
-        ZIBM_VISC = PXMU(JI,JJ,JK)
-        ZIBM_DIVK = PDIV(JI,JJ,JK)
-        !
-        ! projection step
-        Z_VALUE_MAT1(:,:) = IBM_VALUEMAT1(Z_LOCAT_IMAG(1,:),Z_LOCAT_BOUN,Z_VALUE_IMAG,HIBM_FORC_BOUNR)
-        DO JN=1,3 
-           Z_VALUE_TEMP(JN,:)= Z_VALUE_MAT1(:,1)*Z_VALUE_IMAG(JN,1) +&
-                Z_VALUE_MAT1(:,2)*Z_VALUE_IMAG(JN,2) +&
-                Z_VALUE_MAT1(:,3)*Z_VALUE_IMAG(JN,3) 
-        ENDDO
-        !
-        ! === BOUND computation ===
-        !
-        JN=4
-        DO JLL=1,3
-           Z_VALUE_TEMP(JN,JLL)  = IBM_0DINT(Z_DELTA_IMAG,Z_VALUE_TEMP(:,JLL),Y_TYPE_BOUND(JLL),Y_FORC_BOUND(JLL), & 
-                Z_FORC_BOUND(JLL),ZIBM_VISC,ZIBM_DIVK)
-        ENDDO
-        !
-        ! inverse projection step
-        Z_VALUE_MAT2(:,:) = IBM_VALUEMAT2(Z_VALUE_MAT1)
-        Z_VALUE_IMAG(JN,:)= Z_VALUE_MAT2(:,1)*Z_VALUE_TEMP(JN,1) +&
-             Z_VALUE_MAT2(:,2)*Z_VALUE_TEMP(JN,2) +&
-             Z_VALUE_MAT2(:,3)*Z_VALUE_TEMP(JN,3)
-        !
-        ! === GHOST computation ===
-        !
-        ! functions storage
-        Z_LOCAT_IMAG(1,3) = ((XIBM_GHOST_V(JM,JMM,JH,1)-Z_LOCAT_BOUN(1))**2.+&
-             (XIBM_GHOST_V(JM,JMM,JH,2)-Z_LOCAT_BOUN(2))**2.+&
-             (XIBM_GHOST_V(JM,JMM,JH,3)-Z_LOCAT_BOUN(3))**2.)**0.5
-        IF (Z_LOCAT_IMAG(1,3)>Z_DELTA_IMAG.AND.ZIBM_HALO>0.5) THEN
-           Z_LOCAT_IMAG(1,1) = ((XIBM_IMAGE_V(JM,JMM,JH,1,1)-Z_LOCAT_BOUN(1))**2.+&
-                (XIBM_IMAGE_V(JM,JMM,JH,1,2)-Z_LOCAT_BOUN(2))**2.+&
-                (XIBM_IMAGE_V(JM,JMM,JH,1,3)-Z_LOCAT_BOUN(3))**2.)**0.5
-           Z_LOCAT_IMAG(1,2) = ((XIBM_IMAGE_V(JM,JMM,JH,2,1)-Z_LOCAT_BOUN(1))**2.+&
-                (XIBM_IMAGE_V(JM,JMM,JH,2,2)-Z_LOCAT_BOUN(2))**2.+&
-                (XIBM_IMAGE_V(JM,JMM,JH,2,3)-Z_LOCAT_BOUN(3))**2.)**0.5
-        ELSE
-           Z_LOCAT_IMAG(1,1) = ((XIBM_IMAGE_V(JM,JMM,JH,3,1)-Z_LOCAT_BOUN(1))**2.+&
-                (XIBM_IMAGE_V(JM,JMM,JH,3,2)-Z_LOCAT_BOUN(2))**2.+&
-                (XIBM_IMAGE_V(JM,JMM,JH,3,3)-Z_LOCAT_BOUN(3))**2.)**0.5
-           Z_LOCAT_IMAG(1,2) = ((XIBM_IMAGE_V(JM,JMM,JH,1,1)-Z_LOCAT_BOUN(1))**2.+&
-                (XIBM_IMAGE_V(JM,JMM,JH,1,2)-Z_LOCAT_BOUN(2))**2.+&
-                (XIBM_IMAGE_V(JM,JMM,JH,1,3)-Z_LOCAT_BOUN(3))**2.)**0.5
-           Z_VALUE_TEMP(2,:) = Z_VALUE_TEMP(1,:)
-           Z_VALUE_TEMP(1,:) = Z_VALUE_TEMP(3,:)
-        ENDIF
-        ! 
-        DO JLL=1,3
-           Z_VALUE_GHOS(JLL) = IBM_1DINT(Z_LOCAT_IMAG(1,:),Z_VALUE_TEMP(:,JLL),Y_MODE_INTE1(JLL))
-           IF (Y_MODE_BOUND(JLL)=='SYM') Z_VALUE_GHOS(JLL) = +Z_VALUE_GHOS(JLL)
-           IF (Y_MODE_BOUND(JLL)=='ASY') Z_VALUE_GHOS(JLL) = -Z_VALUE_GHOS(JLL) + 2.*Z_VALUE_TEMP(4,JLL)
-           IF (Y_MODE_BOUND(JLL)=='CST') Z_VALUE_GHOS(JLL) = Z_VALUE_TEMP(4,JLL) 
-        ENDDO
-        !
-        PVAR(JI,JJ,JK) =  Z_VALUE_MAT2(JH,1)*Z_VALUE_GHOS(1) +&
-             Z_VALUE_MAT2(JH,2)*Z_VALUE_GHOS(2) +&
-             Z_VALUE_MAT2(JH,3)*Z_VALUE_GHOS(3)
-        !
-        IF ((JH==3).AND.(JK==2)) THEN
-           PVAR(JI,JJ,JK) = 0.
-        ENDIF
-        !
-777     CONTINUE
-        !
-     ENDDO
-  ENDDO
-  !
-666 CONTINUE
-  !
-  !**** X. DEALLOCATIONS/CLOSES
-  !     -----------------------
-  !
-  DEALLOCATE(I_INDEX_CORN)
-  DEALLOCATE(Z_LOCAT_CORN)
-  DEALLOCATE(Z_VALUE_CORN)
-  DEALLOCATE(Z_LOCAT_IMAG)
-  DEALLOCATE(Z_VALUE_IMAG)
-  DEALLOCATE(Z_VALUE_TEMP)
-  DEALLOCATE(Z_LOCAT_BOUN)
-  DEALLOCATE(Z_LOCAT_GHOS)
-  DEALLOCATE(Z_VALUE_GHOS)
-  DEALLOCATE(Z_TESTS_CORN)
-  DEALLOCATE(Y_TYPE_BOUND,Y_FORC_BOUND)
-  DEALLOCATE(Y_MODE_BOUND,Y_MODE_INTE1)
-  DEALLOCATE(Z_FORC_BOUND)
-  DEALLOCATE(Z_VALUE_MAT1)
-  DEALLOCATE(Z_VALUE_MAT2)
-  DEALLOCATE(Z_VALUE_ZLKE)
-  DEALLOCATE(Z_TEMP_ZLKE)
-  ! 
-  RETURN
-  !
-END SUBROUTINE IBM_AFFECTV
diff --git a/src/mesonh/ext/ice_adjust_bis.f90 b/src/mesonh/ext/ice_adjust_bis.f90
deleted file mode 100644
index 44ab0c680..000000000
--- a/src/mesonh/ext/ice_adjust_bis.f90
+++ /dev/null
@@ -1,160 +0,0 @@
-!MNH_LIC Copyright 2012-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.
-!-----------------------------------------------------------------
-!     ######spl
-     MODULE MODI_ICE_ADJUST_BIS
-!    ###############################
-!
-INTERFACE
-!
-!     #################################################################
-      SUBROUTINE ICE_ADJUST_BIS(PP,PTH,PR)
-!     #################################################################
-!
-!!               
-!*               1.1  Declaration of Arguments
-!! 
-
-REAL, DIMENSION(:,:,:),  INTENT(IN)     :: PP     ! Pressure
-REAL, DIMENSION(:,:,:),  INTENT(INOUT)  :: PTH    ! thetal to transform into th
-REAL, DIMENSION(:,:,:,:),INTENT(INOUT)  :: PR     ! Total mixing ratios to transform into rv,rc and ri
-!
-END SUBROUTINE ICE_ADJUST_BIS
-
-END INTERFACE
-!
-END MODULE MODI_ICE_ADJUST_BIS
-!     ######spl
-      SUBROUTINE ICE_ADJUST_BIS(PP,PTH,PR)
-!     #################################################################
-!
-!
-!!****  *ICE_ADJUST_BIS* - computes an adjusted state of thermodynamical variables
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!**  METHOD
-!!    ------
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      Valery Masson & C. Lac * Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         09/2012
-!!      M.Moge           08/2015 UPDATE_HALO_ll on PTH, ZRV, ZRC, ZRI
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!!
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST, ONLY : XCPD, XRD, XP00, CST
-USE MODD_NEB, ONLY : NEB
-!
-USE MODI_COMPUTE_FUNCTION_THERMO
-USE MODI_THLRT_FROM_THRVRCRI
-!
-USE MODE_ll
-!
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-REAL, DIMENSION(:,:,:),  INTENT(IN)     :: PP    ! Pressure
-REAL, DIMENSION(:,:,:),  INTENT(INOUT)  :: PTH   ! thetal to transform into th
-REAL, DIMENSION(:,:,:,:),INTENT(INOUT)  :: PR    ! Total mixing ratios to transform into rv,rc and ri
-!
-!-------------------------------------------------------------------------------
-!
-!       0.2  declaration of local variables
-REAL, DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) :: ZTHL, ZRW, ZRV, ZRC, &
-                                                        ZRI, ZWORK
-REAL, DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) :: ZFRAC_ICE, ZRSATW, ZRSATI
-REAL, DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) :: ZT, ZEXN, ZLVOCPEXN,ZLSOCPEXN
-REAL, DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3), 16) :: ZBUF
-INTEGER :: IRR
-CHARACTER(LEN=1) :: YFRAC_ICE
-!
-INTEGER :: IINFO_ll
-TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL()   ! list of fields to exchange
-!----------------------------------------------------------------------------
-!
-!*      1 Initialisation
-!         --------------
-!
-IRR = SIZE(PR,4)
-!
-ZRV(:,:,:)=0.
-IF (IRR>=1) &
-ZRV(:,:,:)=PR(:,:,:,1)
-ZRC(:,:,:)=0.
-IF (IRR>=2) &
-ZRC(:,:,:)=PR(:,:,:,2)
-ZRI(:,:,:)=0.
-IF (IRR>=4) &
-ZRI(:,:,:)=PR(:,:,:,4)
-!
-YFRAC_ICE='T'
-ZFRAC_ICE(:,:,:) = 0.
-!
-!*      2 Computation
-!         -----------
-!
-ZEXN(:,:,:)=(PP(:,:,:)/XP00)**(XRD/XCPD)
-!
-CALL COMPUTE_FUNCTION_THERMO( IRR,                                &
-                              PTH, PR, ZEXN, PP,                  &
-                              ZT,ZLVOCPEXN,ZLSOCPEXN              )
-
-!
-CALL THLRT_FROM_THRVRCRI( IRR, PTH, PR, ZLVOCPEXN, ZLSOCPEXN,&
-                          ZTHL, ZRW                          )
-!
-CALL TH_R_FROM_THL_RT(CST, NEB, SIZE(ZFRAC_ICE), YFRAC_ICE,ZFRAC_ICE(:,:,:),PP(:,:,:), &
-                         ZTHL(:,:,:), ZRW(:,:,:), PTH(:,:,:),  &
-                         ZRV(:,:,:), ZRC(:,:,:), ZRI(:,:,:),   &
-                         ZRSATW(:,:,:), ZRSATI(:,:,:),OOCEAN=.FALSE.,&
-                         PBUF=ZBUF)
-CALL ADD3DFIELD_ll( TZFIELDS_ll, PTH, 'ICE_ADJUST_BIS::PTH')
-IF (IRR>=1) THEN
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, ZRV, 'ICE_ADJUST_BIS::ZRV' )
-ENDIF
-IF (IRR>=2) THEN
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, ZRC, 'ICE_ADJUST_BIS::ZRC' )
-ENDIF
-IF (IRR>=4) THEN
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, ZRI, 'ICE_ADJUST_BIS::ZRI' )
-ENDIF
-CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-CALL CLEANLIST_ll(TZFIELDS_ll)
-!
-
-IF (IRR>=1) &
-PR(:,:,:,1) = ZRV(:,:,:)
-IF (IRR>=2) &
-PR(:,:,:,2) = ZRC(:,:,:)
-IF (IRR>=4) &
-PR(:,:,:,4) = ZRI(:,:,:)
-!
-CONTAINS
-INCLUDE "th_r_from_thl_rt.func.h"
-INCLUDE "compute_frac_ice.func.h"
-END SUBROUTINE ICE_ADJUST_BIS
diff --git a/src/mesonh/ext/ini_lesn.f90 b/src/mesonh/ext/ini_lesn.f90
deleted file mode 100644
index 378e43f53..000000000
--- a/src/mesonh/ext/ini_lesn.f90
+++ /dev/null
@@ -1,2007 +0,0 @@
-!MNH_LIC Copyright 2000-2022 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.
-!-----------------------------------------------------------------
-!     ####################
-      SUBROUTINE  INI_LES_n
-!     ####################
-!
-!
-!!****  *INI_LES_n* initializes the LES variables for model _n
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      V. Masson
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         07/02/00
-!!      Modification     01/02/01 (D.Gazen) add module MODD_NSV for NSV variable
-!!                       06/11/02 (V. Masson) add LES budgets
-!!                    10/2016 (C.Lac) Add droplet deposition
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!                     02/2019 (C. Lac) Add rain fraction as a LES diagnostic
-!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!  P. Wautelet 13/09/2019: budget: simplify and modernize date/time management
-!  P. Wautelet 12/08/2020: bugfix: use NUNDEF instead of XUNDEF for integer variables
-!  P. Wautelet 04/01/2021: bugfix: nles_k was used instead of nspectra_k for a loop index
-!  P. Wautelet 30/03/2021: budgets: LES cartesian subdomain limits are defined in the physical domain
-!  P. Wautelet 09/07/2021: bugfix: altitude levels are on the correct grid position (mass point)
-!  P. Wautelet 22/03/2022: LES averaging periods are more reliable (compute with integers instead of reals)
-! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODE_ll
-USE MODE_GATHER_ll
-USE MODE_MSG
-USE MODE_MODELN_HANDLER
-!
-USE MODD_LES
-USE MODD_LES_BUDGET
-USE MODD_LES_n
-!
-USE MODD_CONF
-USE MODD_PARAMETERS
-USE MODD_NESTING
-!
-USE MODD_LUNIT_n
-USE MODD_GRID_n
-USE MODD_DYN_n
-USE MODD_TIME_n
-USE MODD_DIM_n
-USE MODD_TURB_n
-USE MODD_CONF_n
-USE MODD_LBC_n
-USE MODD_PARAM_n
-USE MODD_DYN
-USE MODD_NSV, ONLY: NSV ! update_nsv is done in INI_MODEL
-USE MODD_CONDSAMP, ONLY : LCONDSAMP
-!
-USE MODI_INI_LES_CART_MASKn
-USE MODI_COEF_VER_INTERP_LIN
-USE MODI_SHUMAN
-!
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-!
-!
-!
-!       0.2  declaration of local variables
-!
-!
-!      
-INTEGER :: ILUOUT, IRESP
-INTEGER :: JI,JJ, JK ! loop counters
-INTEGER :: IIU_ll    ! total domain I size
-INTEGER :: IJU_ll    ! total domain J size
-INTEGER :: IIMAX_ll  ! total physical domain I size
-INTEGER :: IJMAX_ll  ! total physical domain J size
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZZ_LES ! LES altitudes 3D array
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZZ_SPEC! " for spectra
-!
-!
-REAL, DIMENSION(:), ALLOCATABLE :: ZXHAT_ll ! father model coordinates
-REAL, DIMENSION(:), ALLOCATABLE :: ZYHAT_ll !
-INTEGER :: IMI
-!
-!-------------------------------------------------------------------------------
-IMI = GET_CURRENT_MODEL_INDEX()
-!
-CALL GET_GLOBALDIMS_ll(IIMAX_ll,IJMAX_ll)
-IIU_ll = IIMAX_ll+2*JPHEXT
-IJU_ll = IJMAX_ll+2*JPHEXT
-!
-ILUOUT = TLUOUT%NLU
-!
-!-------------------------------------------------------------------------------
-!
-!*      1.   Does LES computations are used?
-!            ------------------------------
-!
-LLES = LLES_MEAN .OR. LLES_RESOLVED  .OR. LLES_SUBGRID .OR. LLES_UPDRAFT &
-                 .OR. LLES_DOWNDRAFT .OR. LLES_SPECTRA
-!
-!
-IF (.NOT. LLES) RETURN
-!
-IF (L1D) THEN
-  LLES_RESOLVED    = .FALSE.
-  LLES_UPDRAFT     = .FALSE.
-  LLES_DOWNDRAFT   = .FALSE.
-  LLES_SPECTRA     = .FALSE.
-  LLES_NEB_MASK    = .FALSE.
-  LLES_CORE_MASK   = .FALSE.
-  LLES_CS_MASK     = .FALSE.
-  LLES_MY_MASK     = .FALSE.
-END IF
-!
-IF (LLES_RESOLVED )  LLES_MEAN = .TRUE.
-IF (LLES_SUBGRID  )  LLES_MEAN = .TRUE.
-IF (LLES_UPDRAFT  )  LLES_MEAN = .TRUE.
-IF (LLES_DOWNDRAFT)  LLES_MEAN = .TRUE.
-IF (LLES_SPECTRA  )  LLES_MEAN = .TRUE.
-!
-IF (CTURB=='NONE') THEN
-  WRITE(ILUOUT,FMT=*) 'LES diagnostics cannot be done without subgrid turbulence.'
-  WRITE(ILUOUT,FMT=*) 'You have chosen CTURB="NONE". You must choose a turbulence scheme.'
-  call Print_msg( NVERB_FATAL, 'GEN', 'WRITE_LB_n', 'LES diagnostics cannot be done without subgrid turbulence' )
-END IF
-!-------------------------------------------------------------------------------
-!
-!*      2.   Number and definition of masks
-!            ------------------------------
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.1  Cartesian (sub-)domain
-!            ----------------------
-!
-!* updates number of masks
-!  -----------------------
-!
-NLES_MASKS = 1
-!
-!* For model 1, set default values of cartesian mask, and defines cartesian mask
-!  -----------------------------------------------------------------------------
-!
-IF (IMI==1) THEN
-  IF ( LLES_CART_MASK ) THEN
-    !Compute LES diagnostics inside a cartesian mask
-
-    !Set default values to physical domain boundaries
-    IF ( NLES_IINF == NUNDEF ) NLES_IINF = 1
-    IF ( NLES_JINF == NUNDEF ) NLES_JINF = 1
-    IF ( NLES_ISUP == NUNDEF ) NLES_ISUP = NIMAX_ll
-    IF ( NLES_JSUP == NUNDEF ) NLES_JSUP = NJMAX_ll
-
-    !Check that selected indices are in physical domain
-    IF ( NLES_IINF < 1 )         CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_IINF too small (<1)' )
-    IF ( NLES_IINF > NIMAX_ll )  CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_IINF too large (>NIMAX)' )
-    IF ( NLES_ISUP < 1 )         CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_ISUP too small (<1)' )
-    IF ( NLES_ISUP > NIMAX_ll )  CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_ISUP too large (>NIMAX)' )
-    IF ( NLES_ISUP < NLES_IINF ) CALL Print_msg( NVERB_ERROR, 'BUD', 'INI_LES_n', 'NLES_ISUP < NLES_IINF' )
-
-    IF ( NLES_JINF < 1 )         CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_JINF too small (<1)' )
-    IF ( NLES_JINF > NJMAX_ll )  CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_JINF too large (>NJMAX)' )
-    IF ( NLES_JSUP < 1 )         CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_JSUP too small (<1)' )
-    IF ( NLES_JSUP > NJMAX_ll )  CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_JSUP too large (>NJMAX)' )
-    IF ( NLES_JSUP < NLES_JINF ) CALL Print_msg( NVERB_ERROR, 'BUD', 'INI_LES_n', 'NLES_JSUP < NLES_JINF' )
-
-    !Set LLES_CART_MASK to false if whole domain is selected
-    IF (       NLES_IINF == 1        .AND. NLES_JINF == 1        &
-         .AND. NLES_ISUP == NIMAX_ll .AND. NLES_ISUP == NJMAX_ll ) THEN
-      LLES_CART_MASK = .FALSE.
-    END IF
-  ELSE
-    !Compute LES diagnostics on whole physical domain
-    NLES_IINF = 1
-    NLES_JINF = 1
-    NLES_ISUP = NIMAX_ll
-    NLES_JSUP = NJMAX_ll
-  END IF
-  !
-  NLESn_IINF(1)= NLES_IINF
-  NLESn_ISUP(1)= NLES_ISUP
-  NLESn_JINF(1)= NLES_JINF
-  NLESn_JSUP(1)= NLES_JSUP
-!
-!* For other models, fits cartesian mask on model 1 mask
-!  -----------------------------------------------------
-!
-ELSE
-  ALLOCATE(ZXHAT_ll(IIU_ll))
-  ALLOCATE(ZYHAT_ll(IJU_ll))
-  CALL GATHERALL_FIELD_ll('XX',XXHAT,ZXHAT_ll,IRESP)
-  CALL GATHERALL_FIELD_ll('YY',XYHAT,ZYHAT_ll,IRESP)
-!
-  CALL GOTO_MODEL(NDAD(IMI))
-  CALL INI_LES_CART_MASK_n(IMI,ZXHAT_ll,ZYHAT_ll,          &
-                         NLESn_IINF(IMI),NLESn_JINF(IMI), &
-                         NLESn_ISUP(IMI),NLESn_JSUP(IMI)  )
-  CALL GOTO_MODEL(IMI)
-! 
-  DEALLOCATE(ZXHAT_ll)
-  DEALLOCATE(ZYHAT_ll)
-END IF
-!
-!* in non cyclic boundary conditions, limitiation of masks due to u and v grids
-!  ----------------------------------------------------------------------------
-!
-IF ( (.NOT. L1D) .AND. CLBCX(1)/='CYCL') THEN
-  NLESn_IINF(IMI) = MAX(NLESn_IINF(IMI),2)
-END IF
-IF ( (.NOT. L1D) .AND. (.NOT. L2D) .AND. CLBCY(1)/='CYCL') THEN
-  NLESn_JINF(IMI) = MAX(NLESn_JINF(IMI),2)
-END IF
-!
-!* X boundary conditions for 2points correlations computations
-!  -----------------------------------------------------------
-!
-IF ( CLBCX(1) == 'CYCL' .AND. NLESn_IINF(IMI) == 1 .AND. NLESn_ISUP(IMI) == NIMAX_ll ) THEN
-  CLES_LBCX(:,IMI) = 'CYCL'
-ELSE
-  CLES_LBCX(:,IMI) = 'OPEN'
-END IF
-!
-!* Y boundary conditions for 2points correlations computations
-!  -----------------------------------------------------------
-!
-IF ( CLBCY(1) == 'CYCL' .AND. NLESn_JINF(IMI) == 1 .AND. NLESn_JSUP(IMI) == NJMAX_ll ) THEN
-  CLES_LBCY(:,IMI) = 'CYCL'
-ELSE
-  CLES_LBCY(:,IMI) = 'OPEN'
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.2  Nebulosity mask
-!            ---------------
-!
-IF (.NOT. LUSERC .AND. .NOT. LUSERI) LLES_NEB_MASK = .FALSE.
-!
-IF (LLES_NEB_MASK) NLES_MASKS = NLES_MASKS + 2
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.3  Cloud core mask
-!            ---------------
-!
-IF (.NOT. LUSERC .AND. .NOT. LUSERI) LLES_CORE_MASK = .FALSE.
-!
-IF (LLES_CORE_MASK) NLES_MASKS = NLES_MASKS + 2
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.4  Conditional sampling mask
-!            -------------------------
-!
-IF (.NOT. LUSERC .AND. .NOT. LCONDSAMP) LLES_CS_MASK = .FALSE.
-!
-IF (LLES_CS_MASK) NLES_MASKS = NLES_MASKS + 3
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.5  User mask
-!            ---------
-!
-IF (LLES_MY_MASK) NLES_MASKS = NLES_MASKS + NLES_MASKS_USER
-!
-!-------------------------------------------------------------------------------
-!
-!*      3.   Number of temporal LES samplings
-!            --------------------------------
-!
-!*      3.1  Default value
-!            -------------
-!
-IF (XLES_TEMP_SAMPLING == XUNDEF) THEN
-  IF (CTURBDIM=='3DIM') THEN
-    XLES_TEMP_SAMPLING =  60.
-  ELSE
-    XLES_TEMP_SAMPLING = 300.
-  END IF
-END IF
-!
-!*      3.2  Number of time steps between two calls
-!            --------------------------------------
-!
-NLES_DTCOUNT = MAX( NINT( XLES_TEMP_SAMPLING / XTSTEP ) , 1)
-
-!
-!*      3.3  Redefinition of the LES sampling time coherent with model time-step
-!            -------------------------------------------------------------------
-!
-! Note that this modifies XLES_TEMP_SAMPLING only for father model (model number 1)
-! For nested models (for which integration time step is an integer part of  father model)
-! the following operation does not change XLES_TEMP_SAMPLING. This way, LEs
-! sampling is done at the same instants for all models.
-!
-XLES_TEMP_SAMPLING = XTSTEP * NLES_DTCOUNT
-!
-!
-!*      3.4  number of temporal calls to LES routines
-!            ----------------------------------------
-!
-!
-NLES_TIMES = ( NINT( ( XSEGLEN - DYN_MODEL(1)%XTSTEP ) / XTSTEP ) ) / NLES_DTCOUNT
-!
-!*      3.5  current LES time counter
-!            ------------------------
-!
-NLES_TCOUNT = 0
-!
-!*      3.6  dates array for diachro
-!            ----------------------
-!
-allocate( tles_dates( nles_times ) )
-allocate( xles_times( nles_times ) )
-!
-!*      3.7  No data
-!            -------
-!
-IF (NLES_TIMES==0) THEN
-  LLES=.FALSE.
-  RETURN
-END IF
-!
-!*     3.8  Averaging
-!           ---------
-IF (     XLES_TEMP_MEAN_END   == XUNDEF &
-    .OR. XLES_TEMP_MEAN_START == XUNDEF &
-    .OR. XLES_TEMP_MEAN_STEP  == XUNDEF ) THEN
-  !No LES temporal averaging
-  NLES_MEAN_TIMES = 0
-  NLES_MEAN_STEP  = NNEGUNDEF
-  NLES_MEAN_START = NNEGUNDEF
-  NLES_MEAN_END   = NNEGUNDEF
-ELSE
-  !LES temporal averaging is enabled
-  !Ensure that XLES_TEMP_MEAN_END is not after segment end
-  XLES_TEMP_MEAN_END = MIN( XLES_TEMP_MEAN_END, XSEGLEN - DYN_MODEL(1)%XTSTEP )
-
-  NLES_MEAN_START = NINT( XLES_TEMP_MEAN_START / XTSTEP )
-
-  IF ( MODULO( NLES_MEAN_START, NLES_DTCOUNT ) /= 0 ) THEN
-    CMNHMSG(1) = 'XLES_TEMP_MEAN_START is not a multiple of XLES_TEMP_SAMPLING'
-    CMNHMSG(2) = 'LES averaging periods could be wrong'
-    CALL Print_msg( NVERB_WARNING, 'IO', 'INI_LES_n' )
-  END IF
-
-  NLES_MEAN_END = NINT( XLES_TEMP_MEAN_END / XTSTEP )
-
-  NLES_MEAN_STEP = NINT( XLES_TEMP_MEAN_STEP / XTSTEP )
-
-  IF ( NLES_MEAN_STEP < NLES_DTCOUNT ) &
-    CALL Print_msg( NVERB_ERROR, 'IO', 'INI_LES_n', 'XLES_TEMP_MEAN_STEP < XLES_TEMP_SAMPLING not allowed' )
-
-  IF ( MODULO( NLES_MEAN_STEP, NLES_DTCOUNT ) /= 0 ) THEN
-    CMNHMSG(1) = 'XLES_TEMP_MEAN_STEP is not a multiple of XLES_TEMP_SAMPLING'
-    CMNHMSG(2) = 'LES averaging periods could be wrong'
-    CALL Print_msg( NVERB_WARNING, 'IO', 'INI_LES_n' )
-  END IF
-
-  NLES_MEAN_TIMES = ( NLES_MEAN_END - NLES_MEAN_START ) / NLES_MEAN_STEP
-  !Add 1 averaging period if the last one is incomplete (for example: start=0., end=10., step=3.)
-  IF ( MODULO( NLES_MEAN_END - NLES_MEAN_START, NLES_MEAN_STEP ) > 0 ) NLES_MEAN_TIMES = NLES_MEAN_TIMES + 1
-END IF
-!-------------------------------------------------------------------------------
-!
-!*      4.   Number of vertical levels for local diagnostics
-!            -----------------------------------------------
-!
-NLES_K = 0
-!
-!*      4.1  Case of altitude levels (lowest priority)
-!            -----------------------
-!
-IF (ANY(XLES_ALTITUDES(:)/=XUNDEF)) THEN
-  NLES_K = COUNT (XLES_ALTITUDES(:)/=XUNDEF)
-  CLES_LEVEL_TYPE='Z'
-  !
-  ALLOCATE(XCOEFLIN_LES(SIZE(XZZ,1),SIZE(XZZ,2),NLES_K))
-  ALLOCATE(NKLIN_LES   (SIZE(XZZ,1),SIZE(XZZ,2),NLES_K))
-  !
-  ALLOCATE(ZZ_LES      (SIZE(XZZ,1),SIZE(XZZ,2),NLES_K))
-  DO JK=1,NLES_K
-    DO JJ=1,SIZE(XZZ,2)
-      DO JI=1,SIZE(XZZ,1)
-        ZZ_LES(JI,JJ,JK) = XLES_ALTITUDES(JK)
-      END DO
-    END DO
-  END DO
-  CALL COEF_VER_INTERP_LIN(MZF(XZZ),ZZ_LES,NKLIN_LES,XCOEFLIN_LES)
-  !
-  DEALLOCATE(ZZ_LES)
-END IF
-!
-!
-!*      4.2  Case of model levels (highest priority)
-!            --------------------
-!
-IF (ANY(NLES_LEVELS(:)/=NUNDEF)) THEN
-  DO JK = 1, SIZE( NLES_LEVELS )
-    IF ( NLES_LEVELS(JK) /= NUNDEF ) THEN
-      IF ( NLES_LEVELS(JK) < 1 )     CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_LEVELS too small (<1)' )
-      IF ( NLES_LEVELS(JK) > NKMAX ) CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NLES_LEVELS too large (>NKMAX)' )
-    END IF
-  END DO
-
-  NLES_K = COUNT (NLES_LEVELS(:)/=NUNDEF)
-  CLES_LEVEL_TYPE='K'
-ELSE
-  IF (NLES_K==0) THEN
-    NLES_K = MIN(SIZE(NLES_LEVELS),NKMAX)
-    CLES_LEVEL_TYPE='K'
-    DO JK=1,NLES_K
-      NLES_LEVELS(JK) = JK
-    END DO
-  END IF
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      5.   Number of vertical levels for non-local diagnostics
-!            ---------------------------------------------------
-!
-NSPECTRA_K = 0
-CSPECTRA_LEVEL_TYPE='N'
-!
-!
-!*      5.1  Case of altitude levels (medium priority)
-!            -----------------------
-!
-IF (ANY(XSPECTRA_ALTITUDES(:)/=XUNDEF)) THEN
-  NSPECTRA_K = COUNT (XSPECTRA_ALTITUDES(:)/=XUNDEF)
-  CSPECTRA_LEVEL_TYPE='Z'
-  !
-  ALLOCATE(XCOEFLIN_SPEC(SIZE(XZZ,1),SIZE(XZZ,2),NSPECTRA_K))
-  ALLOCATE(NKLIN_SPEC   (SIZE(XZZ,1),SIZE(XZZ,2),NSPECTRA_K))
-  !
-  ALLOCATE(ZZ_SPEC      (SIZE(XZZ,1),SIZE(XZZ,2),NSPECTRA_K))
-  DO JK=1,NSPECTRA_K
-    DO JJ=1,SIZE(XZZ,2)
-      DO JI=1,SIZE(XZZ,1)
-        ZZ_SPEC(JI,JJ,JK) = XSPECTRA_ALTITUDES(JK)
-      END DO
-    END DO
-  END DO
-  CALL COEF_VER_INTERP_LIN(XZZ,ZZ_SPEC,NKLIN_SPEC,XCOEFLIN_SPEC)
-  !
-  DEALLOCATE(ZZ_SPEC)
-END IF
-!
-!
-!*      5.2  Case of model levels (highest priority)
-!            --------------------
-!
-IF (ANY(NSPECTRA_LEVELS(:)/=NUNDEF)) THEN
-  DO JK = 1, SIZE( NSPECTRA_LEVELS )
-    IF ( NSPECTRA_LEVELS(JK) /= NUNDEF ) THEN
-      IF ( NSPECTRA_LEVELS(JK) < 1 )     CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NSPECTRA_LEVELS too small (<1)' )
-      IF ( NSPECTRA_LEVELS(JK) > NKMAX ) CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_LES_n', 'NSPECTRA_LEVELS too large (>NKMAX)' )
-    END IF
-  END DO
-
-  NSPECTRA_K = COUNT (NSPECTRA_LEVELS(:)/=NUNDEF)
-  CSPECTRA_LEVEL_TYPE='K'
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      6.   Number of horizontal wavelengths for non-local diagnostics
-!            ----------------------------------------------------------
-!
-NSPECTRA_NI = NLESn_ISUP(IMI) - NLESn_IINF(IMI) + 1
-NSPECTRA_NJ = NLESn_JSUP(IMI) - NLESn_JINF(IMI) + 1
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*      7.   Allocations of temporal series of local diagnostics
-!            ---------------------------------------------------
-!
-!*      7.0  Altitude levels
-!            ---------------
-!
-ALLOCATE(XLES_Z  (NLES_K))
-!
-!*      7.1  Averaging control variables
-!            ---------------------------
-!
-ALLOCATE(NLES_AVG_PTS_ll (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(NLES_UND_PTS_ll (NLES_K,NLES_TIMES,NLES_MASKS))
-!
-NLES_AVG_PTS_ll = NUNDEF
-NLES_UND_PTS_ll = NUNDEF
-!
-!
-!*      7.2  Horizontally mean variables
-!            ---------------------------
-!
-ALLOCATE(XLES_MEAN_U  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_V  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_W  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_P  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_DP  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_TP  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_TR  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_DISS(NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_LM  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_RHO(NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_Th (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_Mf (NLES_K,NLES_TIMES,NLES_MASKS))  
-IF (LUSERC ) THEN
-  ALLOCATE(XLES_MEAN_Thl(NLES_K,NLES_TIMES,NLES_MASKS))
-  ALLOCATE(XLES_MEAN_Rt (NLES_K,NLES_TIMES,NLES_MASKS))
-  ALLOCATE(XLES_MEAN_KHt(NLES_K,NLES_TIMES,NLES_MASKS))
-  ALLOCATE(XLES_MEAN_KHr(NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Thl(0,0,0))
-  ALLOCATE(XLES_MEAN_Rt (0,0,0))
-  ALLOCATE(XLES_MEAN_KHt(0,0,0))
-  ALLOCATE(XLES_MEAN_KHr(0,0,0))
-END IF
-IF (LUSERV) THEN
-  ALLOCATE(XLES_MEAN_Thv(NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Thv(0,0,0))
-END IF
-!
-IF (LUSERV ) THEN 
-  ALLOCATE(XLES_MEAN_Rv (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Rv (0,0,0))
-END IF
-IF (LUSERV ) THEN 
-   ALLOCATE(XLES_MEAN_Rehu (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Rehu (0,0,0))
-ENDIF
-IF (LUSERV ) THEN 
-   ALLOCATE(XLES_MEAN_Qs (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Qs (0,0,0))  
-END IF
-IF (LUSERC ) THEN
-  ALLOCATE(XLES_MEAN_Rc (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Rc (0,0,0))
-END IF
-IF (LUSERC ) THEN
-  ALLOCATE(XLES_MEAN_Cf (NLES_K,NLES_TIMES,NLES_MASKS))
-  ALLOCATE(XLES_MEAN_INDCf (NLES_K,NLES_TIMES,NLES_MASKS))
-  ALLOCATE(XLES_MEAN_INDCf2 (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Cf (0,0,0))
-  ALLOCATE(XLES_MEAN_INDCf (0,0,0))
-  ALLOCATE(XLES_MEAN_INDCf2(0,0,0))  
-END IF
-IF (LUSERR ) THEN
-  ALLOCATE(XLES_MEAN_Rr (NLES_K,NLES_TIMES,NLES_MASKS))
-  ALLOCATE(XLES_MEAN_RF (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Rr (0,0,0))
-  ALLOCATE(XLES_MEAN_RF (0,0,0))
-END IF
-IF (LUSERI ) THEN
-  ALLOCATE(XLES_MEAN_Ri (NLES_K,NLES_TIMES,NLES_MASKS))
-  ALLOCATE(XLES_MEAN_If (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Ri (0,0,0))
-  ALLOCATE(XLES_MEAN_If (0,0,0))
-END IF
-IF (LUSERS ) THEN
-  ALLOCATE(XLES_MEAN_Rs (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Rs (0,0,0))
-END IF
-IF (LUSERG ) THEN
-  ALLOCATE(XLES_MEAN_Rg (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Rg (0,0,0))
-END IF
-IF (LUSERH ) THEN
-  ALLOCATE(XLES_MEAN_Rh (NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_Rh (0,0,0))
-END IF
-IF (NSV>0  ) THEN
-  ALLOCATE(XLES_MEAN_Sv (NLES_K,NLES_TIMES,NLES_MASKS,NSV))
-ELSE
-  ALLOCATE(XLES_MEAN_Sv (0,0,0,0))
-END IF
-ALLOCATE(XLES_MEAN_WIND  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_dUdz  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_dVdz  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_dWdz  (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(XLES_MEAN_dThldz(NLES_K,NLES_TIMES,NLES_MASKS))
-IF (LUSERV) THEN
-  ALLOCATE(XLES_MEAN_dRtdz(NLES_K,NLES_TIMES,NLES_MASKS))
-ELSE
-  ALLOCATE(XLES_MEAN_dRtdz(0,0,0))
-END IF
-IF (NSV>0) THEN
-  ALLOCATE(XLES_MEAN_dSvdz(NLES_K,NLES_TIMES,NLES_MASKS,NSV))
-ELSE
-  ALLOCATE(XLES_MEAN_dSvdz(0,0,0,0))
-END IF
-!
-IF (LLES_PDF) THEN
-!pdf distributions and jpdf distributions
-  CALL LES_ALLOCATE('XLES_PDF_TH ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-  CALL LES_ALLOCATE('XLES_PDF_W ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-  CALL LES_ALLOCATE('XLES_PDF_THV ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-  IF (LUSERV) THEN
-   CALL LES_ALLOCATE('XLES_PDF_RV ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-  ELSE
-   CALL LES_ALLOCATE('XLES_PDF_RV ',(/0,0,0,0/))
-  END IF
-  IF (LUSERC) THEN 
-   CALL LES_ALLOCATE('XLES_PDF_RC ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-   CALL LES_ALLOCATE('XLES_PDF_RT ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-   CALL LES_ALLOCATE('XLES_PDF_THL',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-  ELSE
-   CALL LES_ALLOCATE('XLES_PDF_RC ',(/0,0,0,0/))
-   CALL LES_ALLOCATE('XLES_PDF_RT ',(/0,0,0,0/))
-   CALL LES_ALLOCATE('XLES_PDF_THL',(/0,0,0,0/))
-  ENDIF
-  IF (LUSERR) THEN
-   CALL LES_ALLOCATE('XLES_PDF_RR ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-  ELSE
-   CALL LES_ALLOCATE('XLES_PDF_RR ',(/0,0,0,0/))
-  ENDIF
-  IF (LUSERI) THEN 
-   CALL LES_ALLOCATE('XLES_PDF_RI ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-  ELSE
-   CALL LES_ALLOCATE('XLES_PDF_RI ',(/0,0,0,0/))
-  END IF
-  IF (LUSERS) THEN
-   CALL LES_ALLOCATE('XLES_PDF_RS ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-  ELSE
-   CALL LES_ALLOCATE('XLES_PDF_RS ',(/0,0,0,0/))
-  END IF
-  IF (LUSERG) THEN 
-   CALL LES_ALLOCATE('XLES_PDF_RG ',(/NLES_K,NLES_TIMES,NLES_MASKS,NPDF/))
-  ELSE
-   CALL LES_ALLOCATE('XLES_PDF_RG ',(/0,0,0,0/))
-  END IF
-ENDIF
-!  
-XLES_MEAN_U  = XUNDEF
-XLES_MEAN_V  = XUNDEF
-XLES_MEAN_W  = XUNDEF
-XLES_MEAN_P  = XUNDEF
-XLES_MEAN_DP  = XUNDEF
-XLES_MEAN_TP  = XUNDEF
-XLES_MEAN_TR  = XUNDEF
-XLES_MEAN_DISS= XUNDEF
-XLES_MEAN_LM  = XUNDEF
-XLES_MEAN_RHO= XUNDEF
-XLES_MEAN_Th = XUNDEF
-XLES_MEAN_Mf = XUNDEF
-IF (LUSERC ) XLES_MEAN_Thl= XUNDEF
-IF (LUSERV ) XLES_MEAN_Thv= XUNDEF
-IF (LUSERV ) XLES_MEAN_Rv  = XUNDEF
-IF (LUSERV ) XLES_MEAN_Rehu  = XUNDEF  
-IF (LUSERV ) XLES_MEAN_Qs  = XUNDEF
-IF (LUSERC ) XLES_MEAN_KHr = XUNDEF
-IF (LUSERC ) XLES_MEAN_KHt = XUNDEF
-IF (LUSERC ) XLES_MEAN_Rt  = XUNDEF
-IF (LUSERC ) XLES_MEAN_Rc  = XUNDEF
-IF (LUSERC ) XLES_MEAN_Cf  = XUNDEF
-IF (LUSERC ) XLES_MEAN_RF  = XUNDEF
-IF (LUSERC ) XLES_MEAN_INDCf  = XUNDEF
-IF (LUSERC ) XLES_MEAN_INDCf2 = XUNDEF
-IF (LUSERR ) XLES_MEAN_Rr  = XUNDEF
-IF (LUSERI ) XLES_MEAN_Ri  = XUNDEF
-IF (LUSERI ) XLES_MEAN_If  = XUNDEF
-IF (LUSERS ) XLES_MEAN_Rs  = XUNDEF
-IF (LUSERG ) XLES_MEAN_Rg  = XUNDEF
-IF (LUSERH ) XLES_MEAN_Rh  = XUNDEF
-IF (NSV>0  ) XLES_MEAN_Sv  = XUNDEF
-XLES_MEAN_WIND  = XUNDEF
-XLES_MEAN_WIND  = XUNDEF
-XLES_MEAN_dUdz  = XUNDEF
-XLES_MEAN_dVdz  = XUNDEF
-XLES_MEAN_dWdz  = XUNDEF
-XLES_MEAN_dThldz= XUNDEF
-IF (LUSERV) XLES_MEAN_dRtdz = XUNDEF
-IF (NSV>0)  XLES_MEAN_dSvdz = XUNDEF
-!
-IF (LLES_PDF) THEN
- XLES_PDF_TH   = XUNDEF
- XLES_PDF_W    = XUNDEF
- XLES_PDF_THV  = XUNDEF
- IF (LUSERV) THEN
-  XLES_PDF_RV   = XUNDEF
- END IF
- IF (LUSERC) THEN
-  XLES_PDF_RC    = XUNDEF
-  XLES_PDF_RT    = XUNDEF
-  XLES_PDF_THL   = XUNDEF
- END IF
- IF (LUSERR) THEN
-  XLES_PDF_RR   = XUNDEF
- END IF
- IF (LUSERI) THEN
-  XLES_PDF_RI   = XUNDEF
- END IF
- IF (LUSERS) THEN
-  XLES_PDF_RS   = XUNDEF
- END IF
- IF (LUSERG) THEN
-  XLES_PDF_RG   = XUNDEF
- END IF
-END IF
-!
-!
-!
-!*      7.3  Resolved quantities
-!            -------------------
-!
-ALLOCATE(XLES_RESOLVED_U2    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'2>
-ALLOCATE(XLES_RESOLVED_V2    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'2>
-ALLOCATE(XLES_RESOLVED_W2    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'2>
-ALLOCATE(XLES_RESOLVED_P2    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <p'2>
-ALLOCATE(XLES_RESOLVED_Th2   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Th'2>
-IF (LUSERV) THEN
-  ALLOCATE(XLES_RESOLVED_ThThv (NLES_K,NLES_TIMES,NLES_MASKS))   ! <Th'Thv'>
-ELSE
-  ALLOCATE(XLES_RESOLVED_ThThv (0,0,0))
-END IF
-IF (LUSERC) THEN
-  ALLOCATE(XLES_RESOLVED_Thl2  (NLES_K,NLES_TIMES,NLES_MASKS))   ! <Thl'2>
-  ALLOCATE(XLES_RESOLVED_ThlThv(NLES_K,NLES_TIMES,NLES_MASKS))   ! <Thl'Thv'>
-ELSE
-  ALLOCATE(XLES_RESOLVED_Thl2  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThlThv(0,0,0))
-END IF
-ALLOCATE(XLES_RESOLVED_Ke    (NLES_K,NLES_TIMES,NLES_MASKS))     ! 0.5 <u'2+v'2+w'2>
-ALLOCATE(XLES_RESOLVED_UV    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'v'>
-ALLOCATE(XLES_RESOLVED_WU    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'u'>
-ALLOCATE(XLES_RESOLVED_WV    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'v'>
-ALLOCATE(XLES_RESOLVED_UP    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'p'>
-ALLOCATE(XLES_RESOLVED_VP    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'p'>
-ALLOCATE(XLES_RESOLVED_WP    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'p'>
-ALLOCATE(XLES_RESOLVED_UTh   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'Th'>
-ALLOCATE(XLES_RESOLVED_VTh   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'Th'>
-ALLOCATE(XLES_RESOLVED_WTh   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Th'>
-IF (LUSERC) THEN
-  ALLOCATE(XLES_RESOLVED_UThl  (NLES_K,NLES_TIMES,NLES_MASKS))   ! <u'Thl'>
-  ALLOCATE(XLES_RESOLVED_VThl  (NLES_K,NLES_TIMES,NLES_MASKS))   ! <v'Thl'>
-  ALLOCATE(XLES_RESOLVED_WThl  (NLES_K,NLES_TIMES,NLES_MASKS))   ! <w'Thl'>
-ELSE
-  ALLOCATE(XLES_RESOLVED_UThl(0,0,0))
-  ALLOCATE(XLES_RESOLVED_VThl(0,0,0))
-  ALLOCATE(XLES_RESOLVED_WThl(0,0,0))
-END IF
-IF (LUSERV) THEN
-  ALLOCATE(XLES_RESOLVED_UThv  (NLES_K,NLES_TIMES,NLES_MASKS))   ! <u'Thv'>
-  ALLOCATE(XLES_RESOLVED_VThv  (NLES_K,NLES_TIMES,NLES_MASKS))   ! <v'Thv'>
-  ALLOCATE(XLES_RESOLVED_WThv  (NLES_K,NLES_TIMES,NLES_MASKS))   ! <w'Thv'>
-ELSE
-  ALLOCATE(XLES_RESOLVED_UThv(0,0,0))
-  ALLOCATE(XLES_RESOLVED_VThv(0,0,0))
-  ALLOCATE(XLES_RESOLVED_WThv(0,0,0))
-END IF
-ALLOCATE(XLES_RESOLVED_U3    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'3>
-ALLOCATE(XLES_RESOLVED_V3    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'3>
-ALLOCATE(XLES_RESOLVED_W3    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'3>
-ALLOCATE(XLES_RESOLVED_U4    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'4>
-ALLOCATE(XLES_RESOLVED_V4    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'4>
-ALLOCATE(XLES_RESOLVED_W4    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'4>
-ALLOCATE(XLES_RESOLVED_ThlPz (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Thv'dp'/dz>
-ALLOCATE(XLES_RESOLVED_WThl2 (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Thl'2>
-ALLOCATE(XLES_RESOLVED_W2Thl (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'2Thl'>
-ALLOCATE(XLES_RESOLVED_MASSFX(NLES_K,NLES_TIMES,NLES_MASKS))     ! <upward mass flux>
-ALLOCATE(XLES_RESOLVED_UKe   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'(u'2+v'2+w'2)>
-ALLOCATE(XLES_RESOLVED_VKe   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'(u'2+v'2+w'2)>
-ALLOCATE(XLES_RESOLVED_WKe   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'(u'2+v'2+w'2)>
-
-IF (LUSERV ) THEN
-  ALLOCATE(XLES_RESOLVED_Rv2   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rv'2>
-  ALLOCATE(XLES_RESOLVED_ThRv  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Th'Rv'>
-  ALLOCATE(XLES_RESOLVED_ThvRv (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Thv'Rv'>
-  ALLOCATE(XLES_RESOLVED_URv   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'Rv'>
-  ALLOCATE(XLES_RESOLVED_VRv   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'Rv'>
-  ALLOCATE(XLES_RESOLVED_WRv   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rv'>
-  ALLOCATE(XLES_RESOLVED_WRv2  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rv'2>
-  ALLOCATE(XLES_RESOLVED_W2Rv  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'2Rv'>  
-  ALLOCATE(XLES_RESOLVED_W2Rt  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'2Rt'> 
-  ALLOCATE(XLES_RESOLVED_WRt2  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rt2'>    
-  ALLOCATE(XLES_RESOLVED_RvPz  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rv'dp'/dz>
-  ALLOCATE(XLES_RESOLVED_WThlRv(NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Thl'Rv'>
-  ALLOCATE(XLES_RESOLVED_WThlRt(NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Thl'Rt'>  
-ELSE
-  ALLOCATE(XLES_RESOLVED_Rv2   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThRv  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThvRv (0,0,0))
-  ALLOCATE(XLES_RESOLVED_URv   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_VRv   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRv   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRv2  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_W2Rv  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_W2Rt  (0,0,0)) 
-  ALLOCATE(XLES_RESOLVED_WRt2  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_RvPz  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WThlRv(0,0,0))
-  ALLOCATE(XLES_RESOLVED_WThlRt(0,0,0))
-END IF
-IF (LUSERC ) THEN
-  ALLOCATE(XLES_RESOLVED_ThlRv (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Thl'Rv'>
-  !
-  ALLOCATE(XLES_RESOLVED_Rc2   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rc'2>
-  ALLOCATE(XLES_RESOLVED_ThRc  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Th'Rc'>
-  ALLOCATE(XLES_RESOLVED_ThlRc (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Thl'Rc'>
-  ALLOCATE(XLES_RESOLVED_ThvRc (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Thv'Rc'>
-  ALLOCATE(XLES_RESOLVED_URc   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'Rc'>
-  ALLOCATE(XLES_RESOLVED_VRc   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'Rc'>
-  ALLOCATE(XLES_RESOLVED_WRc   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rc'>
-  ALLOCATE(XLES_RESOLVED_WRc2  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rc'2>
-  ALLOCATE(XLES_RESOLVED_W2Rc  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'2Rc'>
-  ALLOCATE(XLES_RESOLVED_RcPz  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rc'dp'/dz>
-  ALLOCATE(XLES_RESOLVED_WThlRc(NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Thl'Rc'>
-  ALLOCATE(XLES_RESOLVED_WRvRc (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rv'Rc'>
-  ALLOCATE(XLES_RESOLVED_WRt   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rt'>
-  ALLOCATE(XLES_RESOLVED_Rt2   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rt'2>
-  ALLOCATE(XLES_RESOLVED_RtPz  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rv'dp'/dz>
-ELSE
-  ALLOCATE(XLES_RESOLVED_ThlRv (0,0,0))
-  !
-  ALLOCATE(XLES_RESOLVED_Rc2   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThRc  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThlRc (0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThvRc (0,0,0))
-  ALLOCATE(XLES_RESOLVED_URc   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_VRc   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRc   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRc2  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_W2Rc  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_RcPz  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WThlRc(0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRvRc (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRt   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_Rt2  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_RtPz  (0,0,0))
-END IF
-IF (LUSERI ) THEN
-  ALLOCATE(XLES_RESOLVED_Ri2   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Ri'2>
-  ALLOCATE(XLES_RESOLVED_ThRi  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Th'Ri'>
-  ALLOCATE(XLES_RESOLVED_ThlRi (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Thl'Ri'>
-  ALLOCATE(XLES_RESOLVED_ThvRi (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Thv'Ri'>
-  ALLOCATE(XLES_RESOLVED_URi   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'Ri'>
-  ALLOCATE(XLES_RESOLVED_VRi   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'Ri'>
-  ALLOCATE(XLES_RESOLVED_WRi   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Ri'>
-  ALLOCATE(XLES_RESOLVED_WRi2  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Ri'2>
-  ALLOCATE(XLES_RESOLVED_W2Ri  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'2Ri'>
-  ALLOCATE(XLES_RESOLVED_RiPz  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Ri'dp'/dz>
-  ALLOCATE(XLES_RESOLVED_WThlRi(NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Thl'Ri'>
-  ALLOCATE(XLES_RESOLVED_WRvRi (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rv'Ri'>
-ELSE
-  ALLOCATE(XLES_RESOLVED_Ri2   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThRi  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThlRi (0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThvRi (0,0,0))
-  ALLOCATE(XLES_RESOLVED_URi   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_VRi   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRi   (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRi2  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_W2Ri  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_RiPz  (0,0,0))
-  ALLOCATE(XLES_RESOLVED_WThlRi(0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRvRi (0,0,0))
-END IF
-!
-IF (LUSERR) THEN
-  ALLOCATE(XLES_RESOLVED_WRr   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rr'>
-  ALLOCATE(XLES_INPRR3D        (NLES_K,NLES_TIMES,NLES_MASKS)) !precip flux
-  ALLOCATE(XLES_MAX_INPRR3D        (NLES_K,NLES_TIMES,NLES_MASKS)) !precip flux
-  ALLOCATE(XLES_EVAP3D        (NLES_K,NLES_TIMES,NLES_MASKS)) ! evap
-ELSE
-  ALLOCATE(XLES_RESOLVED_WRr   (0,0,0))
-  ALLOCATE(XLES_INPRR3D        (0,0,0))
-  ALLOCATE(XLES_MAX_INPRR3D        (0,0,0))
-  ALLOCATE(XLES_EVAP3D         (0,0,0))
-END IF
-IF (NSV>0  ) THEN
-  ALLOCATE(XLES_RESOLVED_Sv2   (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Sv'2>
-  ALLOCATE(XLES_RESOLVED_ThSv  (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Th'Sv>
-  ALLOCATE(XLES_RESOLVED_USv   (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <u'Sv'>
-  ALLOCATE(XLES_RESOLVED_VSv   (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <v'Sv'>
-  ALLOCATE(XLES_RESOLVED_WSv   (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Sv'>
-  ALLOCATE(XLES_RESOLVED_WSv2  (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Sv'2>
-  ALLOCATE(XLES_RESOLVED_W2Sv  (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'2Sv'>
-  ALLOCATE(XLES_RESOLVED_SvPz  (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Sv'dp'/dz>
-  ALLOCATE(XLES_RESOLVED_WThlSv(NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Thl'Sv'>
-  IF (LUSERV) THEN
-    ALLOCATE(XLES_RESOLVED_ThvSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Thv'Sv>
-    ALLOCATE(XLES_RESOLVED_WRvSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Rv'Sv'>
-  ELSE
-    ALLOCATE(XLES_RESOLVED_ThvSv (0,0,0,0))
-    ALLOCATE(XLES_RESOLVED_WRvSv (0,0,0,0))
-  END IF
-  IF (LUSERC) THEN
-    ALLOCATE(XLES_RESOLVED_ThlSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Thl'Sv>
-  ELSE
-    ALLOCATE(XLES_RESOLVED_ThlSv (0,0,0,0))
-  END IF
-ELSE
-  ALLOCATE(XLES_RESOLVED_Sv2   (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThSv  (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_USv   (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_VSv   (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_WSv   (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_WSv2  (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_W2Sv  (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_SvPz  (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThvSv (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_ThlSv (0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_WThlSv(0,0,0,0))
-  ALLOCATE(XLES_RESOLVED_WRvSv (0,0,0,0))
-END IF
-!
-!
-XLES_RESOLVED_U2  = XUNDEF
-XLES_RESOLVED_V2  = XUNDEF
-XLES_RESOLVED_W2  = XUNDEF
-XLES_RESOLVED_P2  = XUNDEF
-XLES_RESOLVED_Th2 = XUNDEF
-IF( LUSERC) THEN
-  XLES_RESOLVED_Thl2= XUNDEF
-  XLES_RESOLVED_ThlThv= XUNDEF
-END IF
-IF (LUSERV) THEN
-  XLES_RESOLVED_ThThv = XUNDEF
-END IF
-XLES_RESOLVED_Ke  = XUNDEF
-XLES_RESOLVED_UV  = XUNDEF
-XLES_RESOLVED_WU  = XUNDEF
-XLES_RESOLVED_WV  = XUNDEF
-XLES_RESOLVED_UP  = XUNDEF
-XLES_RESOLVED_VP  = XUNDEF
-XLES_RESOLVED_WP  = XUNDEF
-XLES_RESOLVED_UTh = XUNDEF
-XLES_RESOLVED_VTh = XUNDEF
-XLES_RESOLVED_WTh = XUNDEF
-IF (LUSERC) THEN
-  XLES_RESOLVED_UThl= XUNDEF
-  XLES_RESOLVED_VThl= XUNDEF
-  XLES_RESOLVED_WThl= XUNDEF
-END IF
-IF (LUSERV) THEN
-  XLES_RESOLVED_UThv= XUNDEF
-  XLES_RESOLVED_VThv= XUNDEF
-  XLES_RESOLVED_WThv= XUNDEF
-END IF
-XLES_RESOLVED_U3  = XUNDEF
-XLES_RESOLVED_V3  = XUNDEF
-XLES_RESOLVED_W3  = XUNDEF
-XLES_RESOLVED_U4  = XUNDEF
-XLES_RESOLVED_V4  = XUNDEF
-XLES_RESOLVED_W4  = XUNDEF
-XLES_RESOLVED_WThl2  = XUNDEF
-XLES_RESOLVED_W2Thl  = XUNDEF
-XLES_RESOLVED_ThlPz  = XUNDEF
-!
-XLES_RESOLVED_MASSFX = XUNDEF
-XLES_RESOLVED_UKe = XUNDEF
-XLES_RESOLVED_VKe = XUNDEF
-XLES_RESOLVED_WKe = XUNDEF
-IF (LUSERV ) THEN
-  XLES_RESOLVED_Rv2  = XUNDEF
-  XLES_RESOLVED_ThRv = XUNDEF
-  IF (LUSERC) XLES_RESOLVED_ThlRv= XUNDEF
-  XLES_RESOLVED_ThvRv= XUNDEF
-  XLES_RESOLVED_URv = XUNDEF
-  XLES_RESOLVED_VRv = XUNDEF
-  XLES_RESOLVED_WRv = XUNDEF
-  XLES_RESOLVED_WRv2  = XUNDEF
-  XLES_RESOLVED_W2Rv  = XUNDEF
-  XLES_RESOLVED_WRt2 = XUNDEF
-  XLES_RESOLVED_W2Rt  = XUNDEF
-  XLES_RESOLVED_WThlRv= XUNDEF
-  XLES_RESOLVED_WThlRt= XUNDEF  
-  XLES_RESOLVED_RvPz  = XUNDEF
-END IF
-IF (LUSERC ) THEN
-  XLES_RESOLVED_Rc2  = XUNDEF
-  XLES_RESOLVED_ThRc = XUNDEF
-  XLES_RESOLVED_ThlRc= XUNDEF
-  XLES_RESOLVED_ThvRc= XUNDEF
-  XLES_RESOLVED_URc  = XUNDEF
-  XLES_RESOLVED_VRc  = XUNDEF
-  XLES_RESOLVED_WRc  = XUNDEF
-  XLES_RESOLVED_WRc2  = XUNDEF
-  XLES_RESOLVED_W2Rc  = XUNDEF
-  XLES_RESOLVED_WThlRc= XUNDEF
-  XLES_RESOLVED_WRvRc = XUNDEF
-  XLES_RESOLVED_RcPz  = XUNDEF
-  XLES_RESOLVED_RtPz  = XUNDEF
-  XLES_RESOLVED_WRt  = XUNDEF
-  XLES_RESOLVED_Rt2  = XUNDEF
-END IF
-IF (LUSERI ) THEN
-  XLES_RESOLVED_Ri2  = XUNDEF
-  XLES_RESOLVED_ThRi = XUNDEF
-  XLES_RESOLVED_ThlRi= XUNDEF
-  XLES_RESOLVED_ThvRi= XUNDEF
-  XLES_RESOLVED_URi  = XUNDEF
-  XLES_RESOLVED_VRi  = XUNDEF
-  XLES_RESOLVED_WRi  = XUNDEF
-  XLES_RESOLVED_WRi2  = XUNDEF
-  XLES_RESOLVED_W2Ri  = XUNDEF
-  XLES_RESOLVED_WThlRi= XUNDEF
-  XLES_RESOLVED_WRvRi = XUNDEF
-  XLES_RESOLVED_RiPz  = XUNDEF
-END IF
-!
-IF (LUSERR) XLES_RESOLVED_WRr = XUNDEF
-IF (LUSERR) XLES_MAX_INPRR3D = XUNDEF
-IF (LUSERR) XLES_INPRR3D = XUNDEF
-IF (LUSERR) XLES_EVAP3D = XUNDEF
-IF (NSV>0  ) THEN
-  XLES_RESOLVED_Sv2  = XUNDEF
-  XLES_RESOLVED_ThSv = XUNDEF
-  IF (LUSERC) XLES_RESOLVED_ThlSv= XUNDEF
-  IF (LUSERV) XLES_RESOLVED_ThvSv= XUNDEF
-  XLES_RESOLVED_USv = XUNDEF
-  XLES_RESOLVED_VSv = XUNDEF
-  XLES_RESOLVED_WSv = XUNDEF
-  XLES_RESOLVED_WSv2  = XUNDEF
-  XLES_RESOLVED_W2Sv  = XUNDEF
-  XLES_RESOLVED_WThlSv= XUNDEF
-  IF (LUSERV) XLES_RESOLVED_WRvSv = XUNDEF
-  XLES_RESOLVED_SvPz  = XUNDEF
-END IF
-!
-!
-!*      7.4  interactions of resolved and subgrid quantities
-!            -----------------------------------------------
-!
-ALLOCATE(XLES_RES_U_SBG_Tke         (NLES_K,NLES_TIMES,NLES_MASKS))! <u'Tke>
-ALLOCATE(XLES_RES_V_SBG_Tke         (NLES_K,NLES_TIMES,NLES_MASKS))! <v'Tke>
-ALLOCATE(XLES_RES_W_SBG_Tke         (NLES_K,NLES_TIMES,NLES_MASKS))! <w'Tke>
-!                                                                        ______
-ALLOCATE(XLES_RES_W_SBG_WThl        (NLES_K,NLES_TIMES,NLES_MASKS))!  <w'w'Thl'>
-!                                                                        _____
-ALLOCATE(XLES_RES_W_SBG_Thl2        (NLES_K,NLES_TIMES,NLES_MASKS))!  <w'Thl'2>
-!                                                                              _____
-ALLOCATE(XLES_RES_ddxa_U_SBG_UaU    (NLES_K,NLES_TIMES,NLES_MASKS))!  <du'/dxa ua'u'>
-!                                                                              _____
-ALLOCATE(XLES_RES_ddxa_V_SBG_UaV    (NLES_K,NLES_TIMES,NLES_MASKS))!  <dv'/dxa ua'v'>
-!                                                                              _____
-ALLOCATE(XLES_RES_ddxa_W_SBG_UaW    (NLES_K,NLES_TIMES,NLES_MASKS))!  <dw'/dxa ua'w'>
-!                                                                              _______
-ALLOCATE(XLES_RES_ddxa_W_SBG_UaThl  (NLES_K,NLES_TIMES,NLES_MASKS))!  <dw'/dxa ua'Thl'>
-!                                                                                _____
-ALLOCATE(XLES_RES_ddxa_Thl_SBG_UaW  (NLES_K,NLES_TIMES,NLES_MASKS))!  <dThl'/dxa ua'w'>
-!                                                                               ___
-ALLOCATE(XLES_RES_ddz_Thl_SBG_W2    (NLES_K,NLES_TIMES,NLES_MASKS))!  <dThl'/dz w'2>
-!                                                                                _______
-ALLOCATE(XLES_RES_ddxa_Thl_SBG_UaThl(NLES_K,NLES_TIMES,NLES_MASKS))!  <dThl'/dxa ua'Thl'>
-!
-IF (LUSERV) THEN
-!                                                                          _____
-  ALLOCATE(XLES_RES_W_SBG_WRt         (NLES_K,NLES_TIMES,NLES_MASKS))!  <w'w'Rt'>
-!                                                                           ____
-  ALLOCATE(XLES_RES_W_SBG_Rt2         (NLES_K,NLES_TIMES,NLES_MASKS))!  <w'Rt'2>
-!                                                                          _______
-  ALLOCATE(XLES_RES_W_SBG_ThlRt       (NLES_K,NLES_TIMES,NLES_MASKS))!  <w'Thl'Rt'>
-!                                                                                ______
-  ALLOCATE(XLES_RES_ddxa_W_SBG_UaRt   (NLES_K,NLES_TIMES,NLES_MASKS))!  <dw'/dxa ua'Rt'>
-!                                                                                 _____
-  ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaW   (NLES_K,NLES_TIMES,NLES_MASKS))!  <dRt'/dxa ua'w'>
-!                                                                                ___
-  ALLOCATE(XLES_RES_ddz_Rt_SBG_W2     (NLES_K,NLES_TIMES,NLES_MASKS))!  <dRt'/dz w'2>
-!                                                                                  ______
-  ALLOCATE(XLES_RES_ddxa_Thl_SBG_UaRt (NLES_K,NLES_TIMES,NLES_MASKS))!  <dThl'/dxa ua'Rt'>
-!                                                                                 _______
-  ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaThl (NLES_K,NLES_TIMES,NLES_MASKS))!  <dRt'/dxa ua'Thl'>
-!                                                                                  ______
-  ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaRt  (NLES_K,NLES_TIMES,NLES_MASKS)) !  <dRt'/dxa ua'Rt'>
-ELSE
-  ALLOCATE(XLES_RES_W_SBG_WRt         (0,0,0))
-  ALLOCATE(XLES_RES_W_SBG_Rt2         (0,0,0))
-  ALLOCATE(XLES_RES_W_SBG_ThlRt       (0,0,0))
-  ALLOCATE(XLES_RES_ddxa_W_SBG_UaRt   (0,0,0))
-  ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaW   (0,0,0))
-  ALLOCATE(XLES_RES_ddz_Rt_SBG_W2     (0,0,0))
-  ALLOCATE(XLES_RES_ddxa_Thl_SBG_UaRt (0,0,0))
-  ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaThl (0,0,0))
-  ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaRt  (0,0,0))
-END IF
-!
-!                                                                                  ______
-ALLOCATE(XLES_RES_ddxa_W_SBG_UaSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  !  <dw'/dxa ua'Sv'>
-!                                                                                   _____
-ALLOCATE(XLES_RES_ddxa_Sv_SBG_UaW (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  !  <dSv'/dxa ua'w'>
-!                                                                                   ___
-ALLOCATE(XLES_RES_ddz_Sv_SBG_W2   (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  !  <dSv'/dz w'2>
-!                                                                                  ______
-ALLOCATE(XLES_RES_ddxa_Sv_SBG_UaSv(NLES_K,NLES_TIMES,NLES_MASKS,NSV))  !  <dSv'/dxa ua'Sv'>
-!                                                                            _____
-ALLOCATE(XLES_RES_W_SBG_WSv       (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  !  <w'w'Sv'>
-!                                                                            ____
-ALLOCATE(XLES_RES_W_SBG_Sv2       (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  !  <w'Sv'2>
-!
-XLES_RES_U_SBG_Tke= XUNDEF
-XLES_RES_V_SBG_Tke= XUNDEF
-XLES_RES_W_SBG_Tke= XUNDEF
-XLES_RES_W_SBG_WThl         = XUNDEF
-XLES_RES_W_SBG_Thl2         = XUNDEF
-XLES_RES_ddxa_U_SBG_UaU     = XUNDEF
-XLES_RES_ddxa_V_SBG_UaV     = XUNDEF
-XLES_RES_ddxa_W_SBG_UaW     = XUNDEF
-XLES_RES_ddxa_W_SBG_UaThl   = XUNDEF
-XLES_RES_ddxa_Thl_SBG_UaW   = XUNDEF
-XLES_RES_ddz_Thl_SBG_W2     = XUNDEF
-XLES_RES_ddxa_Thl_SBG_UaThl = XUNDEF
-IF (LUSERV) THEN
-  XLES_RES_W_SBG_WRt        = XUNDEF
-  XLES_RES_W_SBG_Rt2        = XUNDEF
-  XLES_RES_W_SBG_ThlRt      = XUNDEF
-  XLES_RES_ddxa_W_SBG_UaRt  = XUNDEF
-  XLES_RES_ddxa_Rt_SBG_UaW  = XUNDEF
-  XLES_RES_ddz_Rt_SBG_W2    = XUNDEF
-  XLES_RES_ddxa_Thl_SBG_UaRt= XUNDEF
-  XLES_RES_ddxa_Rt_SBG_UaThl= XUNDEF
-  XLES_RES_ddxa_Rt_SBG_UaRt = XUNDEF
-END IF
-IF (NSV>0) THEN
-  XLES_RES_ddxa_W_SBG_UaSv = XUNDEF
-  XLES_RES_ddxa_Sv_SBG_UaW = XUNDEF
-  XLES_RES_ddz_Sv_SBG_W2   = XUNDEF
-  XLES_RES_ddxa_Sv_SBG_UaSv= XUNDEF
-  XLES_RES_W_SBG_WSv       = XUNDEF
-  XLES_RES_W_SBG_Sv2       = XUNDEF
-END IF
-!
-!
-!*      7.5  subgrid quantities
-!            ------------------
-!
-ALLOCATE(XLES_SUBGRID_U2    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'2>
-ALLOCATE(XLES_SUBGRID_V2    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'2>
-ALLOCATE(XLES_SUBGRID_W2    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'2>
-ALLOCATE(XLES_SUBGRID_Tke   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <e>
-ALLOCATE(XLES_SUBGRID_Thl2  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Thl'2>
-ALLOCATE(XLES_SUBGRID_UV    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'v'>
-ALLOCATE(XLES_SUBGRID_WU    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'u'>
-ALLOCATE(XLES_SUBGRID_WV    (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'v'>
-ALLOCATE(XLES_SUBGRID_UThl  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'Thl'>
-ALLOCATE(XLES_SUBGRID_VThl  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'Thl'>
-ALLOCATE(XLES_SUBGRID_WThl  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Thl'>
-ALLOCATE(XLES_SUBGRID_WThv     (NLES_K,NLES_TIMES,NLES_MASKS))  ! <w'Thv'>
-ALLOCATE(XLES_SUBGRID_ThlThv   (NLES_K,NLES_TIMES,NLES_MASKS))  ! <Thl'Thv'>
-ALLOCATE(XLES_SUBGRID_W2Thl    (NLES_K,NLES_TIMES,NLES_MASKS))  ! <w'2Thl>
-ALLOCATE(XLES_SUBGRID_WThl2    (NLES_K,NLES_TIMES,NLES_MASKS))  ! <w'Thl'2>
-ALLOCATE(XLES_SUBGRID_DISS_Tke (NLES_K,NLES_TIMES,NLES_MASKS))  ! <epsilon>
-ALLOCATE(XLES_SUBGRID_DISS_Thl2(NLES_K,NLES_TIMES,NLES_MASKS))  ! <epsilon_Thl2>
-ALLOCATE(XLES_SUBGRID_WP       (NLES_K,NLES_TIMES,NLES_MASKS))  ! <w'p'>
-ALLOCATE(XLES_SUBGRID_PHI3     (NLES_K,NLES_TIMES,NLES_MASKS))  ! phi3
-ALLOCATE(XLES_SUBGRID_LMix     (NLES_K,NLES_TIMES,NLES_MASKS))  ! mixing length
-ALLOCATE(XLES_SUBGRID_LDiss    (NLES_K,NLES_TIMES,NLES_MASKS))  ! dissipative length
-ALLOCATE(XLES_SUBGRID_Km       (NLES_K,NLES_TIMES,NLES_MASKS))  ! Km
-ALLOCATE(XLES_SUBGRID_Kh       (NLES_K,NLES_TIMES,NLES_MASKS))  ! Kh
-ALLOCATE(XLES_SUBGRID_ThlPz    (NLES_K,NLES_TIMES,NLES_MASKS))  ! <Thl'dp'/dz>
-ALLOCATE(XLES_SUBGRID_UTke  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'Tke>
-ALLOCATE(XLES_SUBGRID_VTke  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'Tke>
-ALLOCATE(XLES_SUBGRID_WTke  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Tke>
-ALLOCATE(XLES_SUBGRID_ddz_WTke  (NLES_K,NLES_TIMES,NLES_MASKS)) ! <dw'Tke/dz>
-
-ALLOCATE(XLES_SUBGRID_THLUP_MF(NLES_K,NLES_TIMES,NLES_MASKS))  ! Thl of the Updraft
-ALLOCATE(XLES_SUBGRID_RTUP_MF (NLES_K,NLES_TIMES,NLES_MASKS))  ! Rt of the Updraft
-ALLOCATE(XLES_SUBGRID_RVUP_MF (NLES_K,NLES_TIMES,NLES_MASKS))  ! Rv of the Updraft
-ALLOCATE(XLES_SUBGRID_RCUP_MF (NLES_K,NLES_TIMES,NLES_MASKS))  ! Rc of the Updraft
-ALLOCATE(XLES_SUBGRID_RIUP_MF (NLES_K,NLES_TIMES,NLES_MASKS))  ! Ri of the Updraft
-ALLOCATE(XLES_SUBGRID_WUP_MF  (NLES_K,NLES_TIMES,NLES_MASKS))  ! Thl of the Updraft
-ALLOCATE(XLES_SUBGRID_MASSFLUX(NLES_K,NLES_TIMES,NLES_MASKS))  ! Mass Flux
-ALLOCATE(XLES_SUBGRID_DETR    (NLES_K,NLES_TIMES,NLES_MASKS))  ! Detrainment
-ALLOCATE(XLES_SUBGRID_ENTR    (NLES_K,NLES_TIMES,NLES_MASKS))  ! Entrainment
-ALLOCATE(XLES_SUBGRID_FRACUP  (NLES_K,NLES_TIMES,NLES_MASKS))  ! Updraft Fraction 
-ALLOCATE(XLES_SUBGRID_THVUP_MF(NLES_K,NLES_TIMES,NLES_MASKS))  ! Thv of the Updraft
-ALLOCATE(XLES_SUBGRID_WTHLMF  (NLES_K,NLES_TIMES,NLES_MASKS))  ! Flux of thl   
-ALLOCATE(XLES_SUBGRID_WRTMF   (NLES_K,NLES_TIMES,NLES_MASKS)) ! Flux of rt
-ALLOCATE(XLES_SUBGRID_WTHVMF  (NLES_K,NLES_TIMES,NLES_MASKS)) ! Flux of thv 
-ALLOCATE(XLES_SUBGRID_WUMF    (NLES_K,NLES_TIMES,NLES_MASKS))! Flux of u
-ALLOCATE(XLES_SUBGRID_WVMF    (NLES_K,NLES_TIMES,NLES_MASKS))! Flux of v
-
-IF (LUSERV ) THEN
-  ALLOCATE(XLES_SUBGRID_Rt2   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rt'2>
-  ALLOCATE(XLES_SUBGRID_ThlRt (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Thl'Rt'>
-  ALLOCATE(XLES_SUBGRID_URt   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'Rt'>
-  ALLOCATE(XLES_SUBGRID_VRt   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'Rt'>
-  ALLOCATE(XLES_SUBGRID_WRt   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rt'>
-  ALLOCATE(XLES_SUBGRID_RtThv (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rt'Thv'>
-  ALLOCATE(XLES_SUBGRID_W2Rt  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'2Rt'>
-  ALLOCATE(XLES_SUBGRID_WThlRt(NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Thl'Rt'>
-  ALLOCATE(XLES_SUBGRID_WRt2  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rt'2>
-  ALLOCATE(XLES_SUBGRID_DISS_Rt2 (NLES_K,NLES_TIMES,NLES_MASKS))  ! <epsilon_Rt2>
-  ALLOCATE(XLES_SUBGRID_DISS_ThlRt(NLES_K,NLES_TIMES,NLES_MASKS)) ! <epsilon_ThlRt>
-  ALLOCATE(XLES_SUBGRID_RtPz  (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rt'dp'/dz>
-  ALLOCATE(XLES_SUBGRID_PSI3  (NLES_K,NLES_TIMES,NLES_MASKS))     ! psi3
-ELSE
-  ALLOCATE(XLES_SUBGRID_Rt2   (0,0,0))
-  ALLOCATE(XLES_SUBGRID_ThlRt (0,0,0))
-  ALLOCATE(XLES_SUBGRID_URt   (0,0,0))
-  ALLOCATE(XLES_SUBGRID_VRt   (0,0,0))
-  ALLOCATE(XLES_SUBGRID_WRt   (0,0,0))
-  ALLOCATE(XLES_SUBGRID_RtThv (0,0,0))
-  ALLOCATE(XLES_SUBGRID_W2Rt  (0,0,0))
-  ALLOCATE(XLES_SUBGRID_WThlRt(0,0,0))
-  ALLOCATE(XLES_SUBGRID_WRt2  (0,0,0))
-  ALLOCATE(XLES_SUBGRID_DISS_Rt2 (0,0,0))
-  ALLOCATE(XLES_SUBGRID_DISS_ThlRt(0,0,0))
-  ALLOCATE(XLES_SUBGRID_RtPz  (0,0,0))
-  ALLOCATE(XLES_SUBGRID_PSI3  (0,0,0))
-END IF
-IF (LUSERC ) THEN
-  ALLOCATE(XLES_SUBGRID_Rc2   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Rc'2>
-  ALLOCATE(XLES_SUBGRID_URc   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <u'Rc'>
-  ALLOCATE(XLES_SUBGRID_VRc   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <v'Rc'>
-  ALLOCATE(XLES_SUBGRID_WRc   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <w'Rc'>
-ELSE
-  ALLOCATE(XLES_SUBGRID_Rc2   (0,0,0))
-  ALLOCATE(XLES_SUBGRID_URc   (0,0,0))
-  ALLOCATE(XLES_SUBGRID_VRc   (0,0,0))
-  ALLOCATE(XLES_SUBGRID_WRc   (0,0,0))
-END IF
-IF (LUSERI ) THEN
-  ALLOCATE(XLES_SUBGRID_Ri2   (NLES_K,NLES_TIMES,NLES_MASKS))     ! <Ri'2>
-ELSE
-  ALLOCATE(XLES_SUBGRID_Ri2   (0,0,0))
-END IF
-IF (NSV>0  ) THEN
-  ALLOCATE(XLES_SUBGRID_USv   (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <u'Sv'>
-  ALLOCATE(XLES_SUBGRID_VSv   (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <v'Sv'>
-  ALLOCATE(XLES_SUBGRID_WSv   (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Sv'>
-  ALLOCATE(XLES_SUBGRID_Sv2      (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  ! <Sv'2>
-  ALLOCATE(XLES_SUBGRID_SvThv    (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  ! <Sv'Thv'>
-  ALLOCATE(XLES_SUBGRID_W2Sv     (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  ! <w'2Sv'>
-  ALLOCATE(XLES_SUBGRID_WSv2     (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  ! <w'Sv'2>
-  ALLOCATE(XLES_SUBGRID_DISS_Sv2 (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  ! <epsilon_Sv2>
-  ALLOCATE(XLES_SUBGRID_SvPz     (NLES_K,NLES_TIMES,NLES_MASKS,NSV))  ! <Sv'dp'/dz>
-ELSE
-  ALLOCATE(XLES_SUBGRID_USv   (0,0,0,0))
-  ALLOCATE(XLES_SUBGRID_VSv   (0,0,0,0))
-  ALLOCATE(XLES_SUBGRID_WSv   (0,0,0,0))
-  ALLOCATE(XLES_SUBGRID_Sv2     (0,0,0,0))
-  ALLOCATE(XLES_SUBGRID_SvThv   (0,0,0,0))
-  ALLOCATE(XLES_SUBGRID_W2Sv    (0,0,0,0))
-  ALLOCATE(XLES_SUBGRID_WSv2    (0,0,0,0))
-  ALLOCATE(XLES_SUBGRID_DISS_Sv2(0,0,0,0))
-  ALLOCATE(XLES_SUBGRID_SvPz    (0,0,0,0))
-END IF
-!
-XLES_SUBGRID_U2  = XUNDEF
-XLES_SUBGRID_V2  = XUNDEF
-XLES_SUBGRID_W2  = XUNDEF
-XLES_SUBGRID_Tke = XUNDEF
-XLES_SUBGRID_Thl2= XUNDEF
-XLES_SUBGRID_UV  = XUNDEF
-XLES_SUBGRID_WU  = XUNDEF
-XLES_SUBGRID_WV  = XUNDEF
-XLES_SUBGRID_UThl= XUNDEF
-XLES_SUBGRID_VThl= XUNDEF
-XLES_SUBGRID_WThl= XUNDEF
-XLES_SUBGRID_WThv= XUNDEF
-XLES_SUBGRID_ThlThv= XUNDEF
-XLES_SUBGRID_W2Thl= XUNDEF
-XLES_SUBGRID_WThl2    = XUNDEF
-XLES_SUBGRID_DISS_Tke = XUNDEF
-XLES_SUBGRID_DISS_Thl2= XUNDEF
-XLES_SUBGRID_WP       = XUNDEF
-XLES_SUBGRID_PHI3     = XUNDEF
-XLES_SUBGRID_LMix     = XUNDEF
-XLES_SUBGRID_LDiss    = XUNDEF
-XLES_SUBGRID_Km       = XUNDEF
-XLES_SUBGRID_Kh       = XUNDEF
-XLES_SUBGRID_ThlPz    = XUNDEF
-XLES_SUBGRID_UTke= XUNDEF
-XLES_SUBGRID_VTke= XUNDEF
-XLES_SUBGRID_WTke= XUNDEF
-XLES_SUBGRID_ddz_WTke  = XUNDEF
-
-XLES_SUBGRID_THLUP_MF = XUNDEF
-XLES_SUBGRID_RTUP_MF  = XUNDEF
-XLES_SUBGRID_RVUP_MF  = XUNDEF
-XLES_SUBGRID_RCUP_MF  = XUNDEF
-XLES_SUBGRID_RIUP_MF  = XUNDEF
-XLES_SUBGRID_WUP_MF   = XUNDEF
-XLES_SUBGRID_MASSFLUX = XUNDEF
-XLES_SUBGRID_DETR     = XUNDEF
-XLES_SUBGRID_ENTR     = XUNDEF
-XLES_SUBGRID_FRACUP   = XUNDEF
-XLES_SUBGRID_THVUP_MF = XUNDEF
-XLES_SUBGRID_WTHLMF   = XUNDEF  
-XLES_SUBGRID_WRTMF    = XUNDEF
-XLES_SUBGRID_WTHVMF   = XUNDEF
-XLES_SUBGRID_WUMF     = XUNDEF
-XLES_SUBGRID_WVMF     = XUNDEF
-
-IF (LUSERV ) THEN
-  XLES_SUBGRID_Rt2 = XUNDEF
-  XLES_SUBGRID_ThlRt= XUNDEF
-  XLES_SUBGRID_URt = XUNDEF
-  XLES_SUBGRID_VRt = XUNDEF
-  XLES_SUBGRID_WRt = XUNDEF
-  XLES_SUBGRID_RtThv   = XUNDEF
-  XLES_SUBGRID_W2Rt    = XUNDEF
-  XLES_SUBGRID_WThlRt  = XUNDEF
-  XLES_SUBGRID_WRt2    = XUNDEF
-  XLES_SUBGRID_DISS_Rt2= XUNDEF
-  XLES_SUBGRID_DISS_ThlRt= XUNDEF
-  XLES_SUBGRID_RtPz    = XUNDEF
-  XLES_SUBGRID_PSI3     = XUNDEF
-END IF
-IF (LUSERC ) THEN
-  XLES_SUBGRID_Rc2 = XUNDEF
-  XLES_SUBGRID_URc = XUNDEF
-  XLES_SUBGRID_VRc = XUNDEF
-  XLES_SUBGRID_WRc = XUNDEF
-END IF
-IF (LUSERI ) THEN
-  XLES_SUBGRID_Ri2 = XUNDEF
-END IF
-IF (NSV>0  ) THEN
-  XLES_SUBGRID_USv = XUNDEF
-  XLES_SUBGRID_VSv = XUNDEF
-  XLES_SUBGRID_WSv = XUNDEF
-  XLES_SUBGRID_Sv2     = XUNDEF
-  XLES_SUBGRID_SvThv   = XUNDEF
-  XLES_SUBGRID_W2Sv    = XUNDEF
-  XLES_SUBGRID_WSv2    = XUNDEF
-  XLES_SUBGRID_DISS_Sv2= XUNDEF
-  XLES_SUBGRID_SvPz    = XUNDEF
-END IF
-!
-!
-!*      7.6  updraft quantities (only on the cartesian mask)
-!            ------------------
-!
-ALLOCATE(XLES_UPDRAFT       (NLES_K,NLES_TIMES))    ! updraft fraction
-ALLOCATE(XLES_UPDRAFT_W     (NLES_K,NLES_TIMES))    ! <w>
-ALLOCATE(XLES_UPDRAFT_Th    (NLES_K,NLES_TIMES))    ! <theta>
-ALLOCATE(XLES_UPDRAFT_Ke    (NLES_K,NLES_TIMES))    ! <E>
-ALLOCATE(XLES_UPDRAFT_WTh   (NLES_K,NLES_TIMES))    ! <w'theta'>
-ALLOCATE(XLES_UPDRAFT_Th2   (NLES_K,NLES_TIMES))    ! <th'2>
-ALLOCATE(XLES_UPDRAFT_Tke   (NLES_K,NLES_TIMES))    ! <e>
-
-IF (LUSERV) THEN
-  ALLOCATE(XLES_UPDRAFT_Thv   (NLES_K,NLES_TIMES))    ! <thetav>
-  ALLOCATE(XLES_UPDRAFT_WThv  (NLES_K,NLES_TIMES))    ! <w'thv'>
-  ALLOCATE(XLES_UPDRAFT_ThThv (NLES_K,NLES_TIMES))    ! <th'thv'>
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Thv   (0,0))
-  ALLOCATE(XLES_UPDRAFT_WThv  (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThThv (0,0))
-END IF
-!
-IF (LUSERC) THEN
-  ALLOCATE(XLES_UPDRAFT_Thl   (NLES_K,NLES_TIMES))    ! <thetal>
-  ALLOCATE(XLES_UPDRAFT_WThl  (NLES_K,NLES_TIMES))    ! <w'thetal'>
-  ALLOCATE(XLES_UPDRAFT_Thl2  (NLES_K,NLES_TIMES))    ! <thl'2>
-  ALLOCATE(XLES_UPDRAFT_ThlThv(NLES_K,NLES_TIMES))    ! <thl'thv'>
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Thl   (0,0))
-  ALLOCATE(XLES_UPDRAFT_WThl  (0,0))
-  ALLOCATE(XLES_UPDRAFT_Thl2  (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThlThv(0,0))
-END IF
-
-IF (LUSERV ) THEN
-  ALLOCATE(XLES_UPDRAFT_Rv    (NLES_K,NLES_TIMES))    ! <Rv>
-  ALLOCATE(XLES_UPDRAFT_WRv   (NLES_K,NLES_TIMES))    ! <w'Rv'>
-  ALLOCATE(XLES_UPDRAFT_Rv2   (NLES_K,NLES_TIMES))    ! <Rv'2>
-  ALLOCATE(XLES_UPDRAFT_ThRv  (NLES_K,NLES_TIMES))    ! <Th'Rv'>
-  ALLOCATE(XLES_UPDRAFT_ThvRv (NLES_K,NLES_TIMES))    ! <Thv'Rv'>
-  IF (LUSERC) THEN
-    ALLOCATE(XLES_UPDRAFT_ThlRv (NLES_K,NLES_TIMES))    ! <Thl'Rv'>
-  ELSE
-    ALLOCATE(XLES_UPDRAFT_ThlRv (0,0))
-  END IF
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Rv    (0,0))
-  ALLOCATE(XLES_UPDRAFT_WRv   (0,0))
-  ALLOCATE(XLES_UPDRAFT_Rv2   (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThRv  (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThvRv (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThlRv (0,0))
-END IF
-IF (LUSERC ) THEN
-  ALLOCATE(XLES_UPDRAFT_Rc    (NLES_K,NLES_TIMES))    ! <Rc>
-  ALLOCATE(XLES_UPDRAFT_WRc   (NLES_K,NLES_TIMES))    ! <w'Rc'>
-  ALLOCATE(XLES_UPDRAFT_Rc2   (NLES_K,NLES_TIMES))    ! <Rc'2>
-  ALLOCATE(XLES_UPDRAFT_ThRc  (NLES_K,NLES_TIMES))    ! <Th'Rc'>
-  ALLOCATE(XLES_UPDRAFT_ThvRc (NLES_K,NLES_TIMES))    ! <Thv'Rc'>
-  ALLOCATE(XLES_UPDRAFT_ThlRc (NLES_K,NLES_TIMES))    ! <Thl'Rc'>
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Rc    (0,0))
-  ALLOCATE(XLES_UPDRAFT_WRc   (0,0))
-  ALLOCATE(XLES_UPDRAFT_Rc2   (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThRc  (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThvRc (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThlRc (0,0))
-END IF
-IF (LUSERR ) THEN
-  ALLOCATE(XLES_UPDRAFT_Rr    (NLES_K,NLES_TIMES))    ! <Rr>
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Rr    (0,0))
-END IF
-IF (LUSERI ) THEN
-  ALLOCATE(XLES_UPDRAFT_Ri    (NLES_K,NLES_TIMES))    ! <Ri>
-  ALLOCATE(XLES_UPDRAFT_WRi   (NLES_K,NLES_TIMES))    ! <w'Ri'>
-  ALLOCATE(XLES_UPDRAFT_Ri2   (NLES_K,NLES_TIMES))    ! <Ri'2>
-  ALLOCATE(XLES_UPDRAFT_ThRi  (NLES_K,NLES_TIMES))    ! <Th'Ri'>
-  ALLOCATE(XLES_UPDRAFT_ThvRi (NLES_K,NLES_TIMES))    ! <Thv'Ri'>
-  ALLOCATE(XLES_UPDRAFT_ThlRi (NLES_K,NLES_TIMES))    ! <Thl'Ri'>
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Ri    (0,0))
-  ALLOCATE(XLES_UPDRAFT_WRi   (0,0))
-  ALLOCATE(XLES_UPDRAFT_Ri2   (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThRi  (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThvRi (0,0))
-  ALLOCATE(XLES_UPDRAFT_ThlRi (0,0))
-END IF
-IF (LUSERS ) THEN
-  ALLOCATE(XLES_UPDRAFT_Rs    (NLES_K,NLES_TIMES))    ! <Rs>
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Rs    (0,0))
-END IF
-IF (LUSERG ) THEN
-  ALLOCATE(XLES_UPDRAFT_Rg    (NLES_K,NLES_TIMES))    ! <Rg>
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Rg    (0,0))
-END IF
-IF (LUSERH ) THEN
-  ALLOCATE(XLES_UPDRAFT_Rh    (NLES_K,NLES_TIMES))    ! <Rh>
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Rh    (0,0))
-END IF
-IF (NSV>0  ) THEN
-  ALLOCATE(XLES_UPDRAFT_Sv    (NLES_K,NLES_TIMES,NSV))! <Sv>
-  ALLOCATE(XLES_UPDRAFT_WSv   (NLES_K,NLES_TIMES,NSV))! <w'Sv'>
-  ALLOCATE(XLES_UPDRAFT_Sv2   (NLES_K,NLES_TIMES,NSV))! <Sv'2>
-  ALLOCATE(XLES_UPDRAFT_ThSv  (NLES_K,NLES_TIMES,NSV))! <Th'Sv'>
-  IF (LUSERV) THEN
-    ALLOCATE(XLES_UPDRAFT_ThvSv  (NLES_K,NLES_TIMES,NSV))! <Thv'Sv'>
-  ELSE
-    ALLOCATE(XLES_UPDRAFT_ThvSv  (0,0,0))
-  END IF
-  IF (LUSERC) THEN
-    ALLOCATE(XLES_UPDRAFT_ThlSv  (NLES_K,NLES_TIMES,NSV))! <Thl'Sv'>
-  ELSE
-    ALLOCATE(XLES_UPDRAFT_ThlSv  (0,0,0))
-  END IF
-ELSE
-  ALLOCATE(XLES_UPDRAFT_Sv    (0,0,0))
-  ALLOCATE(XLES_UPDRAFT_WSv   (0,0,0))
-  ALLOCATE(XLES_UPDRAFT_Sv2   (0,0,0))
-  ALLOCATE(XLES_UPDRAFT_ThSv  (0,0,0))
-  ALLOCATE(XLES_UPDRAFT_ThvSv (0,0,0))
-  ALLOCATE(XLES_UPDRAFT_ThlSv (0,0,0))
-END IF
-!
-!
-XLES_UPDRAFT     = XUNDEF
-XLES_UPDRAFT_W   = XUNDEF
-XLES_UPDRAFT_Th  = XUNDEF
-XLES_UPDRAFT_Thl = XUNDEF
-XLES_UPDRAFT_Tke  = XUNDEF
-IF (LUSERV ) XLES_UPDRAFT_Thv = XUNDEF
-IF (LUSERC ) XLES_UPDRAFT_Thl = XUNDEF
-IF (LUSERV ) XLES_UPDRAFT_Rv  = XUNDEF
-IF (LUSERC ) XLES_UPDRAFT_Rc  = XUNDEF
-IF (LUSERR ) XLES_UPDRAFT_Rr  = XUNDEF
-IF (LUSERI ) XLES_UPDRAFT_Ri  = XUNDEF
-IF (LUSERS ) XLES_UPDRAFT_Rs  = XUNDEF
-IF (LUSERG ) XLES_UPDRAFT_Rg  = XUNDEF
-IF (LUSERH ) XLES_UPDRAFT_Rh  = XUNDEF
-IF (NSV>0  ) XLES_UPDRAFT_Sv  = XUNDEF
-XLES_UPDRAFT_Ke   = XUNDEF
-XLES_UPDRAFT_WTh  = XUNDEF
-IF (LUSERV ) XLES_UPDRAFT_WThv = XUNDEF
-IF (LUSERC ) XLES_UPDRAFT_WThl = XUNDEF
-IF (LUSERV ) XLES_UPDRAFT_WRv  = XUNDEF
-IF (LUSERC ) XLES_UPDRAFT_WRc  = XUNDEF
-IF (LUSERI ) XLES_UPDRAFT_WRi  = XUNDEF
-IF (NSV>0  ) XLES_UPDRAFT_WSv  = XUNDEF
-XLES_UPDRAFT_Th2  = XUNDEF
-IF (LUSERV ) THEN
-  XLES_UPDRAFT_ThThv  = XUNDEF
-END IF
-IF (LUSERC ) THEN
-  XLES_UPDRAFT_Thl2   = XUNDEF
-  XLES_UPDRAFT_ThlThv = XUNDEF
-END IF
-IF (LUSERV ) XLES_UPDRAFT_Rv2  = XUNDEF
-IF (LUSERC ) XLES_UPDRAFT_Rc2  = XUNDEF
-IF (LUSERI ) XLES_UPDRAFT_Ri2  = XUNDEF
-IF (NSV>0  ) XLES_UPDRAFT_Sv2  = XUNDEF
-IF (LUSERV ) XLES_UPDRAFT_ThRv = XUNDEF
-IF (LUSERC ) XLES_UPDRAFT_ThRc = XUNDEF
-IF (LUSERI ) XLES_UPDRAFT_ThRi = XUNDEF
-IF (LUSERC ) XLES_UPDRAFT_ThlRv= XUNDEF
-IF (LUSERC ) XLES_UPDRAFT_ThlRc= XUNDEF
-IF (LUSERI ) XLES_UPDRAFT_ThlRi= XUNDEF
-IF (NSV>0  ) XLES_UPDRAFT_ThSv = XUNDEF
-IF (LUSERV ) XLES_UPDRAFT_ThvRv= XUNDEF
-IF (LUSERC ) XLES_UPDRAFT_ThvRc= XUNDEF
-IF (LUSERI ) XLES_UPDRAFT_ThvRi= XUNDEF
-IF (NSV>0 .AND. LUSERV) XLES_UPDRAFT_ThvSv = XUNDEF
-IF (NSV>0 .AND. LUSERC) XLES_UPDRAFT_ThlSv = XUNDEF
-!
-!
-!*      7.7  downdraft quantities (only on the cartesian mask)
-!            --------------------
-!
-ALLOCATE(XLES_DOWNDRAFT       (NLES_K,NLES_TIMES))    ! updraft fraction
-ALLOCATE(XLES_DOWNDRAFT_W     (NLES_K,NLES_TIMES))    ! <w>
-ALLOCATE(XLES_DOWNDRAFT_Th    (NLES_K,NLES_TIMES))    ! <theta>
-ALLOCATE(XLES_DOWNDRAFT_Ke    (NLES_K,NLES_TIMES))    ! <E>
-ALLOCATE(XLES_DOWNDRAFT_WTh   (NLES_K,NLES_TIMES))    ! <w'theta'>
-ALLOCATE(XLES_DOWNDRAFT_Th2   (NLES_K,NLES_TIMES))    ! <th'2>
-ALLOCATE(XLES_DOWNDRAFT_Tke   (NLES_K,NLES_TIMES))    ! <e>
-
-IF (LUSERV) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Thv   (NLES_K,NLES_TIMES))    ! <thetav>
-  ALLOCATE(XLES_DOWNDRAFT_WThv  (NLES_K,NLES_TIMES))    ! <w'thv'>
-  ALLOCATE(XLES_DOWNDRAFT_ThThv (NLES_K,NLES_TIMES))    ! <th'thv'>
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Thv   (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_WThv  (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThThv (0,0))
-END IF
-!
-IF (LUSERC) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Thl   (NLES_K,NLES_TIMES))    ! <thetal>
-  ALLOCATE(XLES_DOWNDRAFT_WThl  (NLES_K,NLES_TIMES))    ! <w'thetal'>
-  ALLOCATE(XLES_DOWNDRAFT_Thl2  (NLES_K,NLES_TIMES))    ! <thl'2>
-  ALLOCATE(XLES_DOWNDRAFT_ThlThv(NLES_K,NLES_TIMES))    ! <thl'thv'>
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Thl   (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_WThl  (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_Thl2  (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThlThv(0,0))
-END IF
-
-IF (LUSERV ) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Rv    (NLES_K,NLES_TIMES))    ! <Rv>
-  ALLOCATE(XLES_DOWNDRAFT_WRv   (NLES_K,NLES_TIMES))    ! <w'Rv'>
-  ALLOCATE(XLES_DOWNDRAFT_Rv2   (NLES_K,NLES_TIMES))    ! <Rv'2>
-  ALLOCATE(XLES_DOWNDRAFT_ThRv  (NLES_K,NLES_TIMES))    ! <Th'Rv'>
-  ALLOCATE(XLES_DOWNDRAFT_ThvRv (NLES_K,NLES_TIMES))    ! <Thv'Rv'>
-  IF (LUSERC) THEN
-    ALLOCATE(XLES_DOWNDRAFT_ThlRv (NLES_K,NLES_TIMES))    ! <Thl'Rv'>
-  ELSE
-    ALLOCATE(XLES_DOWNDRAFT_ThlRv (0,0))
-  END IF
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Rv    (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_WRv   (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_Rv2   (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThRv  (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThvRv (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThlRv (0,0))
-END IF
-IF (LUSERC ) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Rc    (NLES_K,NLES_TIMES))    ! <Rc>
-  ALLOCATE(XLES_DOWNDRAFT_WRc   (NLES_K,NLES_TIMES))    ! <w'Rc'>
-  ALLOCATE(XLES_DOWNDRAFT_Rc2   (NLES_K,NLES_TIMES))    ! <Rc'2>
-  ALLOCATE(XLES_DOWNDRAFT_ThRc  (NLES_K,NLES_TIMES))    ! <Th'Rc'>
-  ALLOCATE(XLES_DOWNDRAFT_ThvRc (NLES_K,NLES_TIMES))    ! <Thv'Rc'>
-  ALLOCATE(XLES_DOWNDRAFT_ThlRc (NLES_K,NLES_TIMES))    ! <Thl'Rc'>
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Rc    (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_WRc   (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_Rc2   (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThRc  (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThvRc (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThlRc (0,0))
-END IF
-IF (LUSERR ) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Rr    (NLES_K,NLES_TIMES))    ! <Rr>
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Rr    (0,0))
-END IF
-IF (LUSERI ) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Ri    (NLES_K,NLES_TIMES))    ! <Ri>
-  ALLOCATE(XLES_DOWNDRAFT_WRi   (NLES_K,NLES_TIMES))    ! <w'Ri'>
-  ALLOCATE(XLES_DOWNDRAFT_Ri2   (NLES_K,NLES_TIMES))    ! <Ri'2>
-  ALLOCATE(XLES_DOWNDRAFT_ThRi  (NLES_K,NLES_TIMES))    ! <Th'Ri'>
-  ALLOCATE(XLES_DOWNDRAFT_ThvRi (NLES_K,NLES_TIMES))    ! <Thv'Ri'>
-  ALLOCATE(XLES_DOWNDRAFT_ThlRi (NLES_K,NLES_TIMES))    ! <Thl'Ri'>
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Ri    (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_WRi   (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_Ri2   (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThRi  (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThvRi (0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThlRi (0,0))
-END IF
-IF (LUSERS ) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Rs    (NLES_K,NLES_TIMES))    ! <Rs>
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Rs    (0,0))
-END IF
-IF (LUSERG ) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Rg    (NLES_K,NLES_TIMES))    ! <Rg>
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Rg    (0,0))
-END IF
-IF (LUSERH ) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Rh    (NLES_K,NLES_TIMES))    ! <Rh>
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Rh    (0,0))
-END IF
-IF (NSV>0  ) THEN
-  ALLOCATE(XLES_DOWNDRAFT_Sv    (NLES_K,NLES_TIMES,NSV))! <Sv>
-  ALLOCATE(XLES_DOWNDRAFT_WSv   (NLES_K,NLES_TIMES,NSV))! <w'Sv'>
-  ALLOCATE(XLES_DOWNDRAFT_Sv2   (NLES_K,NLES_TIMES,NSV))! <Sv'2>
-  ALLOCATE(XLES_DOWNDRAFT_ThSv  (NLES_K,NLES_TIMES,NSV))! <Th'Sv'>
-  IF (LUSERV) THEN
-    ALLOCATE(XLES_DOWNDRAFT_ThvSv  (NLES_K,NLES_TIMES,NSV))! <Thv'Sv'>
-  ELSE
-    ALLOCATE(XLES_DOWNDRAFT_ThvSv  (0,0,0))
-  END IF
-  IF (LUSERC) THEN
-    ALLOCATE(XLES_DOWNDRAFT_ThlSv  (NLES_K,NLES_TIMES,NSV))! <Thl'Sv'>
-  ELSE
-    ALLOCATE(XLES_DOWNDRAFT_ThlSv  (0,0,0))
-  END IF
-ELSE
-  ALLOCATE(XLES_DOWNDRAFT_Sv    (0,0,0))
-  ALLOCATE(XLES_DOWNDRAFT_WSv   (0,0,0))
-  ALLOCATE(XLES_DOWNDRAFT_Sv2   (0,0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThSv  (0,0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThvSv (0,0,0))
-  ALLOCATE(XLES_DOWNDRAFT_ThlSv (0,0,0))
-END IF
-!
-!
-XLES_DOWNDRAFT     = XUNDEF
-XLES_DOWNDRAFT_W   = XUNDEF
-XLES_DOWNDRAFT_Th  = XUNDEF
-XLES_DOWNDRAFT_Thl = XUNDEF
-XLES_DOWNDRAFT_Tke  = XUNDEF
-IF (LUSERV ) XLES_DOWNDRAFT_Thv = XUNDEF
-IF (LUSERC ) XLES_DOWNDRAFT_Thl = XUNDEF
-IF (LUSERV ) XLES_DOWNDRAFT_Rv  = XUNDEF
-IF (LUSERC ) XLES_DOWNDRAFT_Rc  = XUNDEF
-IF (LUSERR ) XLES_DOWNDRAFT_Rr  = XUNDEF
-IF (LUSERI ) XLES_DOWNDRAFT_Ri  = XUNDEF
-IF (LUSERS ) XLES_DOWNDRAFT_Rs  = XUNDEF
-IF (LUSERG ) XLES_DOWNDRAFT_Rg  = XUNDEF
-IF (LUSERH ) XLES_DOWNDRAFT_Rh  = XUNDEF
-IF (NSV>0  ) XLES_DOWNDRAFT_Sv  = XUNDEF
-XLES_DOWNDRAFT_Ke   = XUNDEF
-XLES_DOWNDRAFT_WTh  = XUNDEF
-IF (LUSERV ) XLES_DOWNDRAFT_WThv = XUNDEF
-IF (LUSERC ) XLES_DOWNDRAFT_WThl = XUNDEF
-IF (LUSERV ) XLES_DOWNDRAFT_WRv  = XUNDEF
-IF (LUSERC ) XLES_DOWNDRAFT_WRc  = XUNDEF
-IF (LUSERI ) XLES_DOWNDRAFT_WRi  = XUNDEF
-IF (NSV>0  ) XLES_DOWNDRAFT_WSv  = XUNDEF
-XLES_DOWNDRAFT_Th2  = XUNDEF
-IF (LUSERV ) THEN
-  XLES_DOWNDRAFT_ThThv  = XUNDEF
-END IF
-IF (LUSERC ) THEN
-  XLES_DOWNDRAFT_Thl2   = XUNDEF
-  XLES_DOWNDRAFT_ThlThv = XUNDEF
-END IF
-IF (LUSERV ) XLES_DOWNDRAFT_Rv2  = XUNDEF
-IF (LUSERC ) XLES_DOWNDRAFT_Rc2  = XUNDEF
-IF (LUSERI ) XLES_DOWNDRAFT_Ri2  = XUNDEF
-IF (NSV>0  ) XLES_DOWNDRAFT_Sv2  = XUNDEF
-IF (LUSERV ) XLES_DOWNDRAFT_ThRv = XUNDEF
-IF (LUSERC ) XLES_DOWNDRAFT_ThRc = XUNDEF
-IF (LUSERI ) XLES_DOWNDRAFT_ThRi = XUNDEF
-IF (LUSERC ) XLES_DOWNDRAFT_ThlRv= XUNDEF
-IF (LUSERC ) XLES_DOWNDRAFT_ThlRc= XUNDEF
-IF (LUSERI ) XLES_DOWNDRAFT_ThlRi= XUNDEF
-IF (NSV>0  ) XLES_DOWNDRAFT_ThSv = XUNDEF
-IF (LUSERV ) XLES_DOWNDRAFT_ThvRv= XUNDEF
-IF (LUSERC ) XLES_DOWNDRAFT_ThvRc= XUNDEF
-IF (LUSERI ) XLES_DOWNDRAFT_ThvRi= XUNDEF
-IF (NSV>0 .AND. LUSERV) XLES_DOWNDRAFT_ThvSv = XUNDEF
-IF (NSV>0 .AND. LUSERC) XLES_DOWNDRAFT_ThlSv = XUNDEF
-!
-!*      7.8  production terms
-!            ----------------
-!
-ALLOCATE(XLES_BU_RES_KE   (NLES_K,NLES_TIMES,NLES_TOT))
-ALLOCATE(XLES_BU_RES_WThl (NLES_K,NLES_TIMES,NLES_TOT))
-ALLOCATE(XLES_BU_RES_Thl2 (NLES_K,NLES_TIMES,NLES_TOT))
-ALLOCATE(XLES_BU_SBG_TKE  (NLES_K,NLES_TIMES,NLES_TOT))
-XLES_BU_RES_KE    = 0.
-XLES_BU_RES_WThl  = 0.
-XLES_BU_RES_Thl2  = 0.
-XLES_BU_SBG_TKE   = 0.
-IF (LUSERV) THEN
-  ALLOCATE(XLES_BU_RES_WRt  (NLES_K,NLES_TIMES,NLES_TOT))
-  ALLOCATE(XLES_BU_RES_Rt2  (NLES_K,NLES_TIMES,NLES_TOT))
-  ALLOCATE(XLES_BU_RES_ThlRt(NLES_K,NLES_TIMES,NLES_TOT))
-  XLES_BU_RES_WRt   = 0.
-  XLES_BU_RES_Rt2   = 0.
-  XLES_BU_RES_ThlRt = 0.
-END IF
-ALLOCATE(XLES_BU_RES_WSv (NLES_K,NLES_TIMES,NLES_TOT,NSV))
-ALLOCATE(XLES_BU_RES_Sv2 (NLES_K,NLES_TIMES,NLES_TOT,NSV))
-IF (NSV>0) THEN
-  XLES_BU_RES_WSv = 0.
-  XLES_BU_RES_Sv2 = 0.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      8.   Allocations of the normalization variables temporal series
-!            ----------------------------------------------------------
-!
-ALLOCATE(XLES_UW0       (NLES_TIMES))
-ALLOCATE(XLES_VW0       (NLES_TIMES))
-ALLOCATE(XLES_USTAR     (NLES_TIMES))
-ALLOCATE(XLES_WSTAR     (NLES_TIMES))
-ALLOCATE(XLES_Q0        (NLES_TIMES))
-ALLOCATE(XLES_E0        (NLES_TIMES))
-ALLOCATE(XLES_SV0       (NLES_TIMES,NSV))
-ALLOCATE(XLES_BL_HEIGHT (NLES_TIMES))
-ALLOCATE(XLES_MO_LENGTH (NLES_TIMES))
-ALLOCATE(XLES_ZCB       (NLES_TIMES))
-ALLOCATE(XLES_CFtot     (NLES_TIMES))
-ALLOCATE(XLES_CF2tot    (NLES_TIMES))
-ALLOCATE(XLES_LWP       (NLES_TIMES))
-ALLOCATE(XLES_LWPVAR    (NLES_TIMES))
-ALLOCATE(XLES_RWP       (NLES_TIMES))
-ALLOCATE(XLES_IWP       (NLES_TIMES))
-ALLOCATE(XLES_SWP       (NLES_TIMES))
-ALLOCATE(XLES_GWP       (NLES_TIMES))
-ALLOCATE(XLES_HWP       (NLES_TIMES))
-ALLOCATE(XLES_INT_TKE   (NLES_TIMES))
-ALLOCATE(XLES_ZMAXCF    (NLES_TIMES))
-ALLOCATE(XLES_ZMAXCF2   (NLES_TIMES))  
-ALLOCATE(XLES_INPRR     (NLES_TIMES))
-ALLOCATE(XLES_INPRC     (NLES_TIMES))
-ALLOCATE(XLES_INDEP     (NLES_TIMES))
-ALLOCATE(XLES_RAIN_INPRR(NLES_TIMES))
-ALLOCATE(XLES_ACPRR     (NLES_TIMES))
-ALLOCATE(XLES_PRECFR    (NLES_TIMES))
-ALLOCATE(XLES_SWU       (NLES_K,NLES_TIMES))
-ALLOCATE(XLES_SWD       (NLES_K,NLES_TIMES))
-ALLOCATE(XLES_LWU       (NLES_K,NLES_TIMES))
-ALLOCATE(XLES_LWD       (NLES_K,NLES_TIMES))
-ALLOCATE(XLES_DTHRADSW  (NLES_K,NLES_TIMES))
-ALLOCATE(XLES_DTHRADLW  (NLES_K,NLES_TIMES))
-ALLOCATE(XLES_RADEFF    (NLES_K,NLES_TIMES))
-!
-XLES_UW0       = XUNDEF
-XLES_VW0       = XUNDEF
-XLES_USTAR     = XUNDEF
-XLES_WSTAR     = XUNDEF
-XLES_Q0        = XUNDEF
-XLES_E0        = XUNDEF
-XLES_SV0       = XUNDEF
-XLES_BL_HEIGHT = XUNDEF
-XLES_MO_LENGTH = XUNDEF
-XLES_ZCB       = XUNDEF
-XLES_CFtot     = XUNDEF
-XLES_CF2tot    = XUNDEF  
-XLES_LWP       = XUNDEF
-XLES_LWPVAR    = XUNDEF
-XLES_RWP       = XUNDEF
-XLES_IWP       = XUNDEF
-XLES_SWP       = XUNDEF
-XLES_GWP       = XUNDEF
-XLES_HWP       = XUNDEF
-XLES_INT_TKE   = XUNDEF
-XLES_ZMAXCF    = XUNDEF
-XLES_ZMAXCF2   = XUNDEF  
-XLES_PRECFR    = XUNDEF
-XLES_ACPRR     = XUNDEF
-XLES_INPRR     = XUNDEF
-XLES_INPRC     = XUNDEF
-XLES_INDEP     = XUNDEF
-XLES_RAIN_INPRR = XUNDEF
-XLES_SWU        = XUNDEF
-XLES_SWD        = XUNDEF
-XLES_LWU        = XUNDEF
-XLES_LWD        = XUNDEF
-XLES_DTHRADSW   = XUNDEF
-XLES_DTHRADLW   = XUNDEF
-XLES_RADEFF     = XUNDEF
-!
-!-------------------------------------------------------------------------------
-!
-!*      9.   Allocations of the normalization variables temporal series
-!            ----------------------------------------------------------
-!
-!       9.1  Two-points correlations in I direction
-!            --------------------------------------
-!
-ALLOCATE(XCORRi_UU    (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))    ! between u and u
-ALLOCATE(XCORRi_VV    (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))    ! between v and v
-ALLOCATE(XCORRi_UV    (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))    ! between u and v
-ALLOCATE(XCORRi_WU    (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))    ! between w and u
-ALLOCATE(XCORRi_WV    (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))    ! between w and v
-ALLOCATE(XCORRi_WW    (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))    ! between w and w
-ALLOCATE(XCORRi_WTh   (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))    ! between w and theta
-ALLOCATE(XCORRi_ThTh  (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))    ! between theta and theta
-IF (LUSERC) THEN
-  ALLOCATE(XCORRi_WThl  (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))    ! between w and thetal
-  ALLOCATE(XCORRi_ThlThl(NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))   ! between thetal and thetal
-ELSE
-  ALLOCATE(XCORRi_WThl  (0,0,0))
-  ALLOCATE(XCORRi_ThlThl(0,0,0))
-END IF
-
-
-IF (LUSERV ) THEN
-  ALLOCATE(XCORRi_WRv  (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between w and Rv
-  ALLOCATE(XCORRi_ThRv (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between theta and Rv
-  IF (LUSERC) THEN
-    ALLOCATE(XCORRi_ThlRv(NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between thetal and Rv
-  ELSE
-    ALLOCATE(XCORRi_ThlRv(0,0,0))
-  END IF
-  ALLOCATE(XCORRi_RvRv (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between Rv and Rv
-ELSE
-  ALLOCATE(XCORRi_WRv  (0,0,0))
-  ALLOCATE(XCORRi_ThRv (0,0,0))
-  ALLOCATE(XCORRi_ThlRv(0,0,0))
-  ALLOCATE(XCORRi_RvRv (0,0,0))
-END IF
-
-IF (LUSERC ) THEN
-  ALLOCATE(XCORRi_WRc  (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between w and Rc
-  ALLOCATE(XCORRi_ThRc (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between theta and Rc
-  ALLOCATE(XCORRi_ThlRc(NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between thetal and Rc
-  ALLOCATE(XCORRi_RcRc (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between Rc and Rc
-ELSE
-  ALLOCATE(XCORRi_WRc  (0,0,0))
-  ALLOCATE(XCORRi_ThRc (0,0,0))
-  ALLOCATE(XCORRi_ThlRc(0,0,0))
-  ALLOCATE(XCORRi_RcRc (0,0,0))
-END IF
-
-IF (LUSERI ) THEN
-  ALLOCATE(XCORRi_WRi  (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between w and Ri
-  ALLOCATE(XCORRi_ThRi (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between theta and Rc
-  ALLOCATE(XCORRi_ThlRi(NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between thetal and Rc
-  ALLOCATE(XCORRi_RiRi (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES))     ! between Rc and Rc
-ELSE
-  ALLOCATE(XCORRi_WRi  (0,0,0))
-  ALLOCATE(XCORRi_ThRi (0,0,0))
-  ALLOCATE(XCORRi_ThlRi(0,0,0))
-  ALLOCATE(XCORRi_RiRi (0,0,0))
-END IF
-
-IF (NSV>0  ) THEN
-  ALLOCATE(XCORRi_WSv  (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES,NSV)) ! between w and Sv
-  ALLOCATE(XCORRi_SvSv (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES,NSV)) ! between Sv and Sv
-ELSE
-  ALLOCATE(XCORRi_WSv  (0,0,0,0))
-  ALLOCATE(XCORRi_SvSv (0,0,0,0))
-END IF
-!
-!
-XCORRi_UU  = XUNDEF
-XCORRi_VV  = XUNDEF
-XCORRi_UV  = XUNDEF
-XCORRi_WU  = XUNDEF
-XCORRi_WV  = XUNDEF
-XCORRi_WW  = XUNDEF
-XCORRi_WTh = XUNDEF
-IF (LUSERC ) XCORRi_WThl= XUNDEF
-IF (LUSERV ) XCORRi_WRv = XUNDEF
-IF (LUSERC ) XCORRi_WRc = XUNDEF
-IF (LUSERI ) XCORRi_WRi = XUNDEF
-IF (NSV>0  ) XCORRi_WSv = XUNDEF
-XCORRi_ThTh  = XUNDEF
-IF (LUSERC ) XCORRi_ThlThl= XUNDEF
-IF (LUSERV ) XCORRi_ThRv = XUNDEF
-IF (LUSERC ) XCORRi_ThRc = XUNDEF
-IF (LUSERI ) XCORRi_ThRi = XUNDEF
-IF (LUSERC ) XCORRi_ThlRv= XUNDEF
-IF (LUSERC ) XCORRi_ThlRc= XUNDEF
-IF (LUSERI ) XCORRi_ThlRi= XUNDEF
-IF (LUSERV ) XCORRi_RvRv = XUNDEF
-IF (LUSERC ) XCORRi_RcRc = XUNDEF
-IF (LUSERI ) XCORRi_RiRi = XUNDEF
-IF (NSV>0  ) XCORRi_SvSv = XUNDEF
-!
-!
-!       9.2  Two-points correlations in J direction
-!            --------------------------------------
-!
-ALLOCATE(XCORRj_UU    (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))    ! between u and u
-ALLOCATE(XCORRj_VV    (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))    ! between v and v
-ALLOCATE(XCORRj_UV    (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))    ! between u and v
-ALLOCATE(XCORRj_WU    (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))    ! between w and u
-ALLOCATE(XCORRj_WV    (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))    ! between w and v
-ALLOCATE(XCORRj_WW    (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))    ! between w and w
-ALLOCATE(XCORRj_WTh   (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))    ! between w and theta
-ALLOCATE(XCORRj_ThTh  (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))    ! between theta and theta
-IF (LUSERC) THEN
-  ALLOCATE(XCORRj_WThl  (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))    ! between w and thetal
-  ALLOCATE(XCORRj_ThlThl(NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))   ! between thetal and thetal
-ELSE
-  ALLOCATE(XCORRj_WThl  (0,0,0))
-  ALLOCATE(XCORRj_ThlThl(0,0,0))
-END IF
-
-IF (LUSERV ) THEN
-  ALLOCATE(XCORRj_WRv  (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between w and Rv
-  ALLOCATE(XCORRj_ThRv (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between theta and Rv
-  IF (LUSERC) THEN
-    ALLOCATE(XCORRj_ThlRv(NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between thetal and Rv
-  ELSE
-    ALLOCATE(XCORRj_ThlRv(0,0,0))
-  END IF
-  ALLOCATE(XCORRj_RvRv (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between Rv and Rv
-ELSE
-  ALLOCATE(XCORRj_WRv  (0,0,0))
-  ALLOCATE(XCORRj_ThRv (0,0,0))
-  ALLOCATE(XCORRj_ThlRv(0,0,0))
-  ALLOCATE(XCORRj_RvRv (0,0,0))
-END IF
-
-IF (LUSERC ) THEN
-  ALLOCATE(XCORRj_WRc  (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between w and Rc
-  ALLOCATE(XCORRj_ThRc (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between theta and Rc
-  ALLOCATE(XCORRj_ThlRc(NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between thetal and Rc
-  ALLOCATE(XCORRj_RcRc (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between Rc and Rc
-ELSE
-  ALLOCATE(XCORRj_WRc  (0,0,0))
-  ALLOCATE(XCORRj_ThRc (0,0,0))
-  ALLOCATE(XCORRj_ThlRc(0,0,0))
-  ALLOCATE(XCORRj_RcRc (0,0,0))
-END IF
-
-IF (LUSERI ) THEN
-  ALLOCATE(XCORRj_WRi  (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between w and Ri
-  ALLOCATE(XCORRj_ThRi (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between theta and Rc
-  ALLOCATE(XCORRj_ThlRi(NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between thetal and Rc
-  ALLOCATE(XCORRj_RiRi (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES))     ! between Rc and Rc
-ELSE
-  ALLOCATE(XCORRj_WRi  (0,0,0))
-  ALLOCATE(XCORRj_ThRi (0,0,0))
-  ALLOCATE(XCORRj_ThlRi(0,0,0))
-  ALLOCATE(XCORRj_RiRi (0,0,0))
-END IF
-
-IF (NSV>0  ) THEN
-  ALLOCATE(XCORRj_WSv  (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES,NSV)) ! between w and Sv
-  ALLOCATE(XCORRj_SvSv (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES,NSV)) ! between Sv and Sv
-ELSE
-  ALLOCATE(XCORRj_WSv  (0,0,0,0))
-  ALLOCATE(XCORRj_SvSv (0,0,0,0))
-END IF
-!
-!
-XCORRj_UU  = XUNDEF
-XCORRj_VV  = XUNDEF
-XCORRj_UV  = XUNDEF
-XCORRj_WU  = XUNDEF
-XCORRj_WV  = XUNDEF
-XCORRj_WW  = XUNDEF
-XCORRj_WTh = XUNDEF
-IF (LUSERC ) XCORRj_WThl= XUNDEF
-IF (LUSERV ) XCORRj_WRv = XUNDEF
-IF (LUSERC ) XCORRj_WRc = XUNDEF
-IF (LUSERI ) XCORRj_WRi = XUNDEF
-IF (NSV>0  ) XCORRj_WSv = XUNDEF
-XCORRj_ThTh  = XUNDEF
-IF (LUSERC ) XCORRj_ThlThl= XUNDEF
-IF (LUSERV ) XCORRj_ThRv = XUNDEF
-IF (LUSERC ) XCORRj_ThRc = XUNDEF
-IF (LUSERI ) XCORRj_ThRi = XUNDEF
-IF (LUSERC ) XCORRj_ThlRv= XUNDEF
-IF (LUSERC ) XCORRj_ThlRc= XUNDEF
-IF (LUSERI ) XCORRj_ThlRi= XUNDEF
-IF (LUSERV ) XCORRj_RvRv = XUNDEF
-IF (LUSERC ) XCORRj_RcRc = XUNDEF
-IF (LUSERI ) XCORRj_RiRi = XUNDEF
-IF (NSV>0  ) XCORRj_SvSv = XUNDEF
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE INI_LES_n
diff --git a/src/mesonh/ext/ini_radar.f90 b/src/mesonh/ext/ini_radar.f90
deleted file mode 100644
index dbc94a726..000000000
--- a/src/mesonh/ext/ini_radar.f90
+++ /dev/null
@@ -1,234 +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 BUG1 2007/06/15 17:47:18
-!-----------------------------------------------------------------
-!      ########################
-       MODULE MODI_INI_RADAR
-!      ########################
-!
-INTERFACE
-      SUBROUTINE INI_RADAR (HPRISTINE_ICE  )
-!
-CHARACTER (LEN=4), INTENT(IN) :: HPRISTINE_ICE ! Indicator of ice crystal characteristics
-!
-!
-END SUBROUTINE INI_RADAR
-!
-END INTERFACE
-!
-END MODULE MODI_INI_RADAR
-!     ###########################################################
-      SUBROUTINE INI_RADAR ( HPRISTINE_ICE )
-!     ###########################################################
-!
-!!****  *INI_RADAR * 
-!!
-!!    PURPOSE
-!!    -------
-!!      The purpose of this routine is to initialize the constants used to 
-!!    compute radar reflectivity (radar_rain_ice.f90 or radar_simulator.f90)
-!!    for DIAG after PREP_REAL_CASE with AROME file (CCLOUD=NONE)
-!!
-!!**  METHOD
-!!    ------
-!!      The constants useful to radar are initialized to their 
-!!      numerical values as in ini_rain_ice.f90 for ICE3 
-!!
-!!    EXTERNAL
-!!    --------
-!!      GAMMA    :  gamma function
-!!     
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_CST
-!!        XPI                  !
-!!        XP00                 ! Reference pressure
-!!        XRD                  ! Gaz constant for dry air
-!!        XRHOLW               ! Liquid water density
-!!      Module MODD_RAIN_ICE_DESCR
-!!
-!!
-!!    AUTHOR
-!!    ------
-!!      G. TANGUY * CNRM *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    27/10/2009
-!!      P.Scheffknecht 22/04/2015: test missing on already allocated XRTMIN 
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_CST
-USE MODD_RAIN_ICE_DESCR
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-!
-CHARACTER (LEN=4), INTENT(IN)       :: HPRISTINE_ICE    ! Indicator of ice crystal caracteristics
-!
-!-------------------------------------------------------------------------------
-!
-!
-!
-!*      1.1    Raindrop characteristics
-!
-!
-!
-XAR = (XPI/6.0)*XRHOLW
-XBR = 3.0
-XCR = 842.
-XDR = 0.8
-XCCR = 8.E6   
-!
-!*       1.2    Ice crystal characteristics
-!
-!
-SELECT CASE (HPRISTINE_ICE)
-  CASE('PLAT')
-    XAI = 0.82      ! Plates
-    XBI = 2.5       ! Plates 
-    XC_I = 800.     ! Plates
-    XDI = 1.0       ! Plates
-  CASE('COLU')
-    XAI = 2.14E-3   ! Columns
-    XBI = 1.7       ! Columns
-    XC_I = 2.1E5    ! Columns
-    XDI = 1.585     ! Columns
-  CASE('BURO')
-    XAI = 44.0      ! Bullet rosettes
-    XBI = 3.0       ! Bullet rosettes
-    XC_I = 4.3E5    ! Bullet rosettes
-    XDI = 1.663     ! Bullet rosettes
-END SELECT
-!
-!
-!*       1.3    Snowflakes/aggregates characteristics
-!
-!
-XAS = 0.02
-XBS = 1.9
-XCS = 5.1
-XDS = 0.27
-XCCS = 5.0
-XCXS = 1.0
-!
-!*      1.4    Graupel/Frozen drop characteristics
-!
-!
-XAG = 19.6 
-XBG = 2.8 
-XCG = 124. 
-XDG = 0.66 
-XCCG = 5.E5
-XCXG = -0.5
-!
-!*       1.5    Hailstone characteristics
-!
-!
-XAH = 470.
-XBH = 3.0
-XCH = 207.
-XDH = 0.64
-XCCH = 4.E4 
-XCXH = -1.0 
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.     DIMENSIONAL DISTRIBUTIONS OF THE SPECIES
-!	            ----------------------------------------
-!
-!*       2.1    Raindrops distribution
-!
-XALPHAR = 1.0  ! Exponential law
-XNUR    = 1.0  ! Exponential law
-!
-!*       2.2    Ice crystal distribution
-!
-XALPHAI = 3.0  ! Gamma law for the ice crystal volume
-XNUI    = 3.0  ! Gamma law with little dispersion
-!
-XALPHAS = 1.0  ! Exponential law
-XNUS    = 1.0  ! Exponential law
-!
-XALPHAG = 1.0  ! Exponential law
-XNUG    = 1.0  ! Exponential law
-!
-XALPHAH = 1.0  ! Gamma law
-XNUH    = 8.0  ! Gamma law with little dispersion
-!
-!*       2.3    Constants for shape parameter
-!
-XLBEXR = 1.0/(-1.0-XBR)
-XLBR   = ( XAR*XCCR*MOMG(XALPHAR,XNUR,XBR) )**(-XLBEXR)
-!
-XLBEXI = 1.0/(-XBI)
-XLBI   = ( XAI*MOMG(XALPHAI,XNUI,XBI) )**(-XLBEXI)
-!
-XNS   = 1.0/(XAS*MOMG(XALPHAS,XNUS,XBS))
-XLBEXS = 1.0/(XCXS-XBS)
-XLBS   = ( XAS*XCCS*MOMG(XALPHAS,XNUS,XBS) )**(-XLBEXS)
-!
-XLBEXG = 1.0/(XCXG-XBG)
-XLBG   = ( XAG*XCCG*MOMG(XALPHAG,XNUG,XBG) )**(-XLBEXG)
-!
-XLBEXH = 1.0/(XCXH-XBH)
-XLBH   = ( XAH*XCCH*MOMG(XALPHAH,XNUH,XBH) )**(-XLBEXH)
-!
-!*       2.4    Minimal values allowed for the mixing ratios
-! ICE3
-IF(.NOT.ASSOCIATED(XRTMIN)) THEN
- CALL RAIN_ICE_DESCR_ALLOCATE(6)
-END IF
-!
-XRTMIN(1) = 1.0E-20
-XRTMIN(2) = 1.0E-20
-XRTMIN(3) = 1.0E-20
-XRTMIN(4) = 1.0E-20
-XRTMIN(5) = 1.0E-15
-XRTMIN(6) = 1.0E-15
-
-!
-CONTAINS
-!
-!------------------------------------------------------------------------------
-!
-  FUNCTION MOMG (PALPHA,PNU,PP) RESULT (PMOMG)
-!
-! auxiliary routine used to compute the Pth moment order of the generalized
-! gamma law
-!
-  USE MODI_GAMMA
-
-  IMPLICIT NONE
-
-  REAL     :: PALPHA ! first shape parameter of the dimensionnal distribution
-  REAL     :: PNU    ! second shape parameter of the dimensionnal distribution
-  REAL     :: PP     ! order of the moment
-  REAL     :: PMOMG  ! result: moment of order ZP
-
-!------------------------------------------------------------------------------
-
-
-  PMOMG = GAMMA(PNU+PP/PALPHA)/GAMMA(PNU)
-
-  END FUNCTION MOMG
-
-!-------------------------------------------------------------------------------
-!
-!
-END SUBROUTINE INI_RADAR
-
-
diff --git a/src/mesonh/ext/ini_segn.f90 b/src/mesonh/ext/ini_segn.f90
deleted file mode 100644
index c581f7c01..000000000
--- a/src/mesonh/ext/ini_segn.f90
+++ /dev/null
@@ -1,494 +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_SEG_n
-!     ###################
-!
-INTERFACE
-!
-SUBROUTINE INI_SEG_n(KMI,TPINIFILE,HINIFILEPGD,PTSTEP_ALL)
-!
-USE MODD_IO, ONLY : TFILEDATA
-!
-INTEGER,                    INTENT(IN)    :: KMI          !Model index
-TYPE(TFILEDATA),   POINTER, INTENT(OUT)   :: TPINIFILE    !Initial file
-CHARACTER (LEN=28),         INTENT(OUT)   :: HINIFILEPGD
-REAL,DIMENSION(:),          INTENT(INOUT) :: PTSTEP_ALL   ! Time STEP of ALL models
-!
-END SUBROUTINE INI_SEG_n
-!
-END INTERFACE
-!
-END MODULE MODI_INI_SEG_n
-!
-!
-!
-!
-!     #############################################################
-      SUBROUTINE INI_SEG_n(KMI,TPINIFILE,HINIFILEPGD,PTSTEP_ALL)
-!     #############################################################
-!
-!!****  *INI_SEG_n * - routine to read and update the descriptor files for
-!!                   model KMI
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to read the descriptor files in the
-!     following order :
-!         - DESFM file which gives informations about the initial file
-!     (i.e. the description of the segment that produced the initial file
-!     or the description of the preinitialisation that created the initial file)
-!         - EXSEG file which gives informations about the segment to perform.
-!
-!      Informations in EXSEG file are completed by DESFM file informations
-!      and if the informations are not in DESFM file, they are  set
-!      to default values.
-!
-!        The descriptor file EXSEG corresponding to the segment of simulation
-!      to be performed, is then updated with the combined informations.
-!      We also store in the updated EXSEG file, the informations on the status
-!      of the different variables ( skip, init, read) in the namelist NAM_GETn,
-!      which will be read in the INI_MODELn routine to properly initiliaze the
-!      model n. Except this last namelist, the informations written in this
-!      EXSEG file, will be identical to the NAMELIST section of the descriptive
-!      part of the FM files containing the model outputs.
-!
-!        In order not to duplicate the routines called by ini_seg, we use the
-!      modules modd, corresponding to the first model to store the informations
-!      read on the different files ( DESFM and EXSEG ). The final filling of
-!      the modules modd (MODD_CONFn ....) will be realized in the subroutine
-!      INI_MODELn. The goal of the INI_SEG_n part of the initialization is to
-!      built the final EXSEG, which will be associated to the LFI files
-!      generated during the segment ( and therefore not to fill the modd).
-!
-!
-!!**  METHOD
-!!    ------
-!!      For a nested model of index KMI :
-!!         - Logical unit numbers  are associated to output-listing file and
-!!      descriptor EXSEG  file by FMATTR. Then these files are   opened.
-!!      The  name of the initial file is read in EXSEG file.
-!!         - Default values are supplied for variables in descriptor files
-!!      (by DEFAULT_DESFM).
-!!         - The Initial file (LFIFM + DESFM) is opened by IO_File_open.
-!!         - The descriptor DESFM file is read (by READ_DESFM_n).
-!!         - The descriptor file EXSEG is read (by READ_EXSEG_n) and coherence
-!!      between the initial file and the description of segment is also checked
-!!      in this routine.
-!!         - If there is more than one model the EXSEG file is updated
-!!     (by WRITE_DESFM$n).  This routine prints also EXSEG content on
-!!     output-listing.
-!!         - If there is only one model (i.e. no grid-nesting),
-!!      EXSEG  file is also closed (logical unit number associated with this
-!!      file is also released by FMFREE).
-!!
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!      FMATTR        : to associate a logical unit number to a file
-!!      IO_File_open : to open descriptor file or LFI file
-!!      DEFAULT_DESFM1: to set default values
-!!      READ_DESFM_n    : to read a DESFM file
-!!      READ_EXSEG_n    : to read a EXSEG file
-!!      WRITE_DESFM1   : to write the DESFM part of the future outputs
-!!      FMFREE        : to release a logical unit number linked to a file
-!!
-!!      Module MODI_DEFAULT_DESFM    : Interface for routine DEFAULT_DESFM
-!!      Module MODI_READ_DESFM_n    : Interface for routine  READ_DESFM_n
-!!      Module MODI_READ_EXSEG_n    : Interface for routine  READ_EXSEG_n
-!!      Module MODI_WRITE_DESFM1   : Interface for routine  WRITE_DESFM1
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_LUNIT  : contains names and logical unit numbers
-!!
-!!      Module MODD_CONF   : contains configuration variables
-!!         CCONF      : Configuration of models
-!!         NMODEL     : Number of nested models
-!!         NVERB      : Level of informations on output-listing
-!!                          0 for minimum of prints
-!!                          5 for intermediate level of prints
-!!                         10 for maximum of prints
-!!
-!!      Module MODN_LUNIT1 : contains declarations of namelist NAMLUNITMN
-!!                           and module MODD_LUNIT1
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation (routine INI_SEG)
-!!
-!!
-!!    AUTHOR
-!!    ------
-!!	V. Ducrocq       * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         07/06/94
-!!      Modification     26/10/94  remove the NAM_GETn from the namelist present
-!!                                 in the EXSEG file  (J.Stein)
-!!                       11/01/95  change the read_exseg and desfm CALLS to add
-!!                                 the G1D switch
-!!                       15/02/95  add the HTURBLEN information (J. Cuxart)
-!!                       18/08/95  Time STEP change          (J. P. Lafore)
-!!                       02/10/95  add the radiation control (J. Stein)
-!!                       18/03/96  remove the no write option for WRITE_DESFM
-!!                                  (J. Stein)
-!!                       11/04/96  add the ice conc. control (J.-P. Pinty)
-!!                       11/01/97  add the deep convection control (J.-P. Pinty)
-!!                       17/07/96  correction for WRITE_DESFM1 call (J. P. Lafore)
-!!                       22/07/96  PTSTEP_ALL introduction for nesting (J. P. Lafore)
-!!                        7/08/98    //     (V. Ducrocq)
-!!                       02/08/99  remove unused argument for read_desfm (J. Stein)
-!!                       15/03/99  test on execution program (V. Masson)
-!!                       15/11/00  Add YCLOUD (J.-P. Pinty)
-!!                       01/03/01  Add GUSECHEM (D. Gazen)
-!!                       15/10/01  namelists in different orders (I.Mallet)
-!!                       25/11/02  Add YELEC (P. Jabouille)
-!!                       01/2004   externalization of surface (V. Masson)
-!!                       01/2005   add GDUST, GSALT, and GORILAM (P. Tulet)
-!!                       04/2010   add GUSECHAQ, GCH_PH (M. Leriche)
-!!                       09/2010   add GUSECHIC (M. Leriche)
-!!                       02/2012   add GFOREFIRE (Pialat/Tulet)
-!!                       05/2014   missing reading of IMASDEV before COUPLING
-!!                                 test (Escobar)
-!!                       10/02/15  remove ABORT in parallel case for SPAWNING
-!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
-!!                       01/2015   add GLNOX_EXPLICIT (C. Barthe)
-!!                       04/2016   add ABORT if CINIFILEPGD is not specified (G.Delautier)
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!                       07/2017   add GBLOWSNOW (V. Vionnet)
-!  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
-!  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
-!  P. Wautelet 19/06/2019: add Fieldlist_nmodel_resize subroutine + provide KMODEL to INI_FIELD_LIST when known
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-USE MODD_CONF
-USE MODD_CONF_n,           ONLY: CSTORAGE_TYPE
-USE MODN_CONFZ
-USE MODD_DYN_n,            ONLY : LOCEAN
-USE MODD_DYN
-USE MODD_IO,               ONLY: NVERB_FATAL, NVERB_WARNING, TFILE_OUTPUTLISTING, TFILEDATA
-USE MODD_LES,              ONLY: LES_ASSOCIATE
-USE MODD_LUNIT
-USE MODD_LUNIT_n,          ONLY: CINIFILE_n=> CINIFILE, TINIFILE_n => TINIFILE, CINIFILEPGD_n=> CINIFILEPGD, TLUOUT, LUNIT_MODEL
-USE MODD_PARAM_n,          ONLY: CSURF
-USE MODD_PARAM_ICE
-USE MODD_PARAMETERS
-USE MODD_REF,              ONLY: LBOUSS
-!
-use mode_field,            only: Fieldlist_nmodel_resize, Ini_field_list, Ini_field_scalars
-USE MODE_IO_FIELD_READ,    only: IO_Field_read
-USE MODE_IO_FILE,          ONLY: IO_File_close, IO_File_open
-USE MODE_IO,               only: IO_Config_set
-USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list
-USE MODE_MSG
-USE MODE_POS
-!
-USE MODI_DEFAULT_DESFM_n
-USE MODI_READ_DESFM_n
-USE MODI_READ_EXSEG_n
-USE MODI_WRITE_DESFM_n
-!
-USE MODN_CONFIO,           ONLY: NAM_CONFIO
-USE MODN_LUNIT_n
-USE MODN_FIRE
-!
-IMPLICIT NONE
-!
-!*       0.1   declarations of arguments
-!
-INTEGER,                    INTENT(IN)    :: KMI          !Model index
-TYPE(TFILEDATA),   POINTER, INTENT(OUT)   :: TPINIFILE    !Initial file
-CHARACTER (LEN=28),         INTENT(OUT)   :: HINIFILEPGD
-REAL,DIMENSION(:),          INTENT(INOUT) :: PTSTEP_ALL   ! Time STEP of ALL models
-!
-!*       0.1   declarations of local variables
-!
-LOGICAL            :: GFOUND              ! Return code when searching namelist
-CHARACTER (LEN=28) :: YINIFILE                    ! name of initial file
-CHARACTER (LEN=2)  :: YMI                         ! string for model index
-INTEGER            :: ILUOUT                      ! Logical unit number
-                                                  ! associated with TLUOUT
-                                                  !
-INTEGER            :: IRESP,ILUSEG                ! File management variables
-CHARACTER (LEN=5)  :: YCONF                       ! Local variables which have
-LOGICAL            :: GFLAT                       ! the same definition as the
-LOGICAL            :: GUSERV,GUSERC,GUSERR,GUSERI ! variables in module MODD_CONF,
-LOGICAL            :: GUSERS,GUSERG,GUSERH,GUSECI ! MODD_CONFn, MODD_PARAMn,
-LOGICAL            :: GUSECHEM                    ! flag for chemistry
-LOGICAL            :: GUSECHAQ                    ! flag for aq. phase chemistry
-LOGICAL            :: GUSECHIC                    ! flag for ice phase chemistry
-LOGICAL            :: GCH_PH                      ! flag for pH
-LOGICAL            :: GCH_CONV_LINOX
-LOGICAL            :: GDUST
-LOGICAL,DIMENSION(JPMODELMAX) :: GDEPOS_DST, GDEPOS_SLT, GDEPOS_AER
-LOGICAL            :: GSALT
-LOGICAL            :: GORILAM
-LOGICAL            :: GLG
-LOGICAL            :: GPASPOL
-LOGICAL            :: GFIRE
-#ifdef MNH_FOREFIRE
-LOGICAL            :: GFOREFIRE
-#endif
-LOGICAL            :: GCONDSAMP
-LOGICAL            :: GBLOWSNOW
-LOGICAL            :: GCHTRANS
-LOGICAL            :: GLNOX_EXPLICIT              ! flag for LNOx
-                                                  ! These variables
-                                                  ! are used to locally store
-INTEGER            :: ISV                         ! the value read in DESFM
-INTEGER            :: IRIMX,IRIMY                 ! number of points for the
-                                                  ! horizontal relaxation
-CHARACTER (LEN=4)  :: YTURB                       ! file in order to check the
-CHARACTER (LEN=4)  :: YRAD                        ! corresponding informations
-CHARACTER (LEN=4)  :: YTOM                        ! read in EXSEG file.
-LOGICAL            :: GRMC01
-CHARACTER (LEN=4)  :: YDCONV
-CHARACTER (LEN=4)  :: YSCONV
-CHARACTER (LEN=4)  :: YCLOUD
-CHARACTER (LEN=4)  :: YELEC
-CHARACTER (LEN=3)  :: YEQNSYS
-TYPE(TFILEDATA),POINTER :: TZFILE_DES
-!
-TPINIFILE  => NULL()
-TZFILE_DES => NULL()
-!-------------------------------------------------------------------------------
-!
-!*       1.    OPEN OUPTUT-LISTING FILE AND EXSEG FILE
-!              ---------------------------------------
-!
-WRITE(YMI,'(I2.0)') KMI
-CALL IO_File_add2list(LUNIT_MODEL(KMI)%TLUOUT,'OUTPUT_LISTING'//ADJUSTL(YMI),'OUTPUTLISTING','WRITE')
-TLUOUT => LUNIT_MODEL(KMI)%TLUOUT !Necessary because TLUOUT was initially pointing to NULL
-CALL IO_File_open(TLUOUT)
-!
-!Set output file for PRINT_MSG
-TFILE_OUTPUTLISTING => TLUOUT
-!
-ILUOUT=TLUOUT%NLU
-!
-WRITE(UNIT=ILUOUT,FMT='(50("*"),/,"*",17X,"MODEL ",I1," LISTING",16X,"*",/,  &
-            & 50("*"))') KMI
-!
-IF (CPROGRAM=='MESONH') THEN
-  CALL IO_File_add2list(TZFILE_DES,'EXSEG'//TRIM(ADJUSTL(YMI))//'.nam','NML','READ')
-  CALL IO_File_open(TZFILE_DES)
-!
-!*       1.3   SPAWNING or SPEC or REAL program case
-!              ---------------------
-!
-ELSE IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='REAL  '.OR. CPROGRAM=='SPEC  ') THEN
-  YINIFILE    = CINIFILE_n
-  HINIFILEPGD = CINIFILEPGD_n
-  CALL IO_File_add2list(TPINIFILE,TRIM(YINIFILE),'MNH','READ',KLFITYPE=2,KLFIVERB=NVERB)
-  CALL IO_File_open(TPINIFILE)
-  TZFILE_DES => TPINIFILE%TDESFILE
-!
-!*       1.3bis   DIAG program case
-!
-ELSE IF (CPROGRAM=='DIAG  ') THEN
-  YINIFILE    = CINIFILE_n
-  HINIFILEPGD = CINIFILEPGD_n
-  CALL IO_File_add2list(TINIFILE_n,TRIM(YINIFILE),'MNH','READ',KLFITYPE=2,KLFIVERB=NVERB)
-  CALL IO_File_open(TINIFILE_n)
-  TPINIFILE  => TINIFILE_n
-  TZFILE_DES => TPINIFILE%TDESFILE
-!
-!*       1.4   Other program cases
-!              -------------------
-!
-ELSE
-!callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SEG_n','should not be called for CPROGRAM='//TRIM(CPROGRAM))
-ENDIF
-!
-ILUSEG = TZFILE_DES%NLU
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.    SET DEFAULT VALUES
-!             ------------------
-!
-CALL PARAM_ICE_ASSOCIATE()
-CALL LES_ASSOCIATE()
-CALL DEFAULT_DESFM_n(KMI)
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.    READ INITIAL FILE NAME AND OPEN INITIAL FILE
-!              --------------------------------------------
-!
-CALL POSNAM(ILUSEG,'NAM_LUNITN',GFOUND)
-IF (GFOUND) THEN
-  CALL INIT_NAM_LUNITn
-  READ(UNIT=ILUSEG,NML=NAM_LUNITn)
-  CALL UPDATE_NAM_LUNITn
-  IF (LEN_TRIM(CINIFILEPGD)==0 .AND. CSURF=='EXTE') THEN
-    !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SEG_n','error in namelist NAM_LUNITn: you need to specify CINIFILEPGD')
-  ENDIF
-END IF
-
-IF (CPROGRAM=='MESONH') THEN
-   IF (KMI.EQ.1) THEN
-      CALL POSNAM(ILUSEG,'NAM_CONFZ',GFOUND,ILUOUT)
-      IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFZ)
-      CALL POSNAM(ILUSEG,'NAM_CONFIO',GFOUND,ILUOUT)
-      IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFIO)
-      CALL IO_Config_set()
-      ! read Blaze namelist to get NREFINX and NREFINY before INI_FIELD_LIST
-      CALL POSNAM(ILUSEG,'NAM_FIRE',GFOUND,ILUOUT)
-      IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FIRE)
-   END IF
-  HINIFILEPGD=CINIFILEPGD_n
-  YINIFILE=CINIFILE_n
-
-  CALL IO_File_add2list(TPINIFILE,TRIM(YINIFILE),'MNH','READ',KLFITYPE=2,KLFIVERB=NVERB)
-  TINIFILE_n => TPINIFILE !Necessary because TINIFILE was initially pointing to NULL
-  CALL IO_File_open(TPINIFILE)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      4.    READ DESFM FILE
-!             ---------------
-!
-CALL READ_DESFM_n(KMI,TPINIFILE,YCONF,GFLAT,GUSERV,GUSERC,                  &
-                GUSERR,GUSERI,GUSECI,GUSERS,GUSERG,GUSERH,GUSECHEM,GUSECHAQ,&
-                GUSECHIC,GCH_PH,GCH_CONV_LINOX,GSALT,GDEPOS_SLT,GDUST,      &
-                GDEPOS_DST, GCHTRANS, GORILAM,                              &
-                GDEPOS_AER, GLG, GPASPOL,GFIRE,                             &
-#ifdef MNH_FOREFIRE
-                GFOREFIRE,                                                  &
-#endif
-                GLNOX_EXPLICIT,                                             &
-                GCONDSAMP,GBLOWSNOW, IRIMX,IRIMY,ISV,                       &
-                YTURB,YTOM,GRMC01,YRAD,YDCONV,YSCONV,YCLOUD,YELEC,YEQNSYS   )
-!
-!-------------------------------------------------------------------------------
-!
-!*      5.    Initialize fieldlist
-!             --------------------
-!
-IF (KMI==1) THEN !Do this only 1 time
-  IF (CPROGRAM=='SPAWN ') THEN
-    CALL INI_FIELD_LIST(2)
-  ELSE IF (CPROGRAM=='DIAG  ' .OR. CPROGRAM=='SPEC  ') THEN
-    CALL INI_FIELD_LIST(1)
-  ELSE IF (CPROGRAM/='REAL  ' .AND. CPROGRAM/='IDEAL ' ) THEN
-    CALL INI_FIELD_LIST()
-  END IF
-  IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='DIAG  ' .OR. CPROGRAM=='SPEC  ' .OR. CPROGRAM=='MESONH') THEN
-    CALL INI_FIELD_SCALARS()
-  END IF
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      6.    READ in the LFI file SOME VARIABLES of MODD_CONF
-!             ------------------------------------------------
-!
-IF (CPROGRAM=='MESONH' .OR. CPROGRAM=='SPAWN ') THEN
-  IF ((TPINIFILE%NMNHVERSION(1)==4 .AND. TPINIFILE%NMNHVERSION(2)>9) .OR. TPINIFILE%NMNHVERSION(1)>4) THEN
-    CALL IO_Field_read(TPINIFILE,'COUPLING',LCOUPLING)
-    IF (LCOUPLING) THEN
-      WRITE(ILUOUT,*) 'Error with the initial file'
-      WRITE(ILUOUT,*) 'The file',YINIFILE,' was created with LCOUPLING=.TRUE.'
-      WRITE(ILUOUT,*) 'You can not use it as initial file, only as coupling file'
-      WRITE(ILUOUT,*) 'Run PREP_REAL_CASE with LCOUPLING=.FALSE.'
-      !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SEG_n','')
-    ENDIF
-  ENDIF
-END IF
-!
-! Read the storage type
-  CALL IO_Field_read(TPINIFILE,'STORAGE_TYPE',CSTORAGE_TYPE,IRESP)
-  IF (IRESP /= 0) THEN
-    WRITE(ILUOUT,FMT=9002) 'STORAGE_TYPE',IRESP
-!callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SEG_n','')
-  END IF
-IF (KMI == 1) THEN
-! Read the geometry kind
-  CALL IO_Field_read(TPINIFILE,'CARTESIAN',LCARTESIAN)
-! Read the thinshell approximation
-  CALL IO_Field_read(TPINIFILE,'THINSHELL',LTHINSHELL)
-!
-  IF ((TPINIFILE%NMNHVERSION(1)==4 .AND. TPINIFILE%NMNHVERSION(2)>=6) .OR. TPINIFILE%NMNHVERSION(1)>4) THEN
-   CALL IO_Field_read(TPINIFILE,'L1D',L1D,IRESP)
-   IF (IRESP/=0)  L1D=.FALSE.
-!
-   CALL IO_Field_read(TPINIFILE,'L2D',L2D,IRESP)
-   IF (IRESP/=0)  L2D=.FALSE.
-!
-   CALL IO_Field_read(TPINIFILE,'PACK',LPACK,IRESP)
-   IF (IRESP/=0) LPACK=.TRUE.
-  ELSE
-   L1D=.FALSE.
-   L2D=.FALSE.
-   LPACK=.TRUE.
-  END IF
-  IF ((TPINIFILE%NMNHVERSION(1)==4 .AND. TPINIFILE%NMNHVERSION(2)>=10) .OR. TPINIFILE%NMNHVERSION(1)>4) THEN
-   CALL IO_Field_read(TPINIFILE,'LBOUSS',LBOUSS)
-  END IF
-!
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      7.    READ EXSEG FILE
-!             ---------------
-!   We pass by arguments the informations read in DESFM descriptor to the
-! routine which read related informations in the EXSEG descriptor in order to
-! check coherence between both informations.
-!
-CALL IO_Field_read(TPINIFILE,'LOCEAN',LOCEAN,IRESP)
-IF ( IRESP /= 0 ) LOCEAN = .FALSE.
-!
-CALL READ_EXSEG_n(KMI,TZFILE_DES,YCONF,GFLAT,GUSERV,GUSERC,                 &
-                GUSERR,GUSERI,GUSECI,GUSERS,GUSERG,GUSERH,GUSECHEM,         &
-                GUSECHAQ,GUSECHIC,GCH_PH,                                   &
-                GCH_CONV_LINOX,GSALT,GDEPOS_SLT,GDUST,GDEPOS_DST,GCHTRANS,  &
-                GORILAM,GDEPOS_AER,GLG,GPASPOL,GFIRE,                       &
-#ifdef MNH_FOREFIRE
-                GFOREFIRE, &
-#endif
-                GLNOX_EXPLICIT,                                             &
-                GCONDSAMP,GBLOWSNOW, IRIMX,IRIMY,ISV, &
-                YTURB,YTOM,GRMC01,YRAD,YDCONV,YSCONV,YCLOUD,YELEC,YEQNSYS,  &
-                PTSTEP_ALL,CSTORAGE_TYPE,CINIFILEPGD_n                      )
-!
-if ( cprogram == 'MESONH' .and. kmi == 1 ) then !Do this only once
-  call Fieldlist_nmodel_resize(NMODEL)
-end if
-!
-IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='DIAG  ' .OR. CPROGRAM=='SPEC  '      &
-     .OR. CPROGRAM=='REAL  ') THEN
-  CINIFILE_n    = YINIFILE
-  CCPLFILE(:) = '                            '
-  NMODEL=1
-  LSTEADYLS=.TRUE.
-END IF
-!
-IF (CPROGRAM=='MESONH') THEN
-  HINIFILEPGD=CINIFILEPGD_n
-END IF
-!-------------------------------------------------------------------------------
-!
-!*      7.    CLOSE  FILES
-!             ------------
-!
-IF (CPROGRAM=='MESONH') CALL IO_File_close(TZFILE_DES)
-!
-!-------------------------------------------------------------------------------
-9002  FORMAT(/,'FATAL ERROR IN INI_SEG_n: pb to read ',A16,' IRESP=',I3)
-!
-END SUBROUTINE INI_SEG_n
diff --git a/src/mesonh/ext/les_cloud_masksn.f90 b/src/mesonh/ext/les_cloud_masksn.f90
deleted file mode 100644
index 10e9e4093..000000000
--- a/src/mesonh/ext/les_cloud_masksn.f90
+++ /dev/null
@@ -1,419 +0,0 @@
-!MNH_LIC Copyright 2006-2020 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.
-!-----------------------------------------------------------------
-!     #######################
-      SUBROUTINE  LES_CLOUD_MASKS_n
-!     #######################
-!
-!
-!!****  *LES_MASKS_n* initializes the masks for clouds
-!!                         
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      V. Masson
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         07/2006
-!!      P. Aumond        10/2009 Add possibility of user maskS
-!!       F.Couvreux      06/2011 : Conditional sampling
-!!       C.Lac           10/2014 : Correction on user masks   
-!!       Q.Rodier        05/2019 : Missing parallelization 
-!!
-!! --------------------------------------------------------------------------
-!       
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_LES
-USE MODD_LES_n
-USE MODD_FIELD_n
-USE MODD_CONF_n
-USE MODD_CST    , ONLY : XRD, XRV
-USE MODD_NSV    , ONLY : NSV_CSBEG, NSV_CSEND, NSV_CS
-USE MODD_GRID_n , ONLY : XZHAT
-USE MODD_CONDSAMP
-!
-USE MODE_ll
-!
-USE MODI_LES_VER_INT
-USE MODI_LES_MEAN_ll
-USE MODI_SHUMAN
-!
-IMPLICIT NONE
-!
-!
-!       0.2  declaration of local variables
-!
-INTEGER :: JK                                  ! vertical loop counter
-INTEGER :: JI                                  ! loop index on masks  
-INTEGER :: IIU, IJU,IIB,IJB,IIE,IJE            ! hor. indices
-INTEGER :: IKU, KBASE, KTOP                    ! ver. index
-INTEGER :: IRR, IRRC, IRRR, IRRI, IRRS, IRRG   ! moist variables indices
-INTEGER :: JSV                                  ! ind of scalars
-!
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRT  ! total water
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHV ! Virtual potential temperature
-!
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZW_LES    ! W     on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRC_LES   ! Rc    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRI_LES   ! Ri    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRT_LES   ! Rt    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHV_LES  ! thv   on LES vertical grid
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSV_LES  ! thv   on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHV_ANOM ! thv-thv_mean   on LES vertical grid
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSV_ANOM ! sv-sv_mean
-REAL, DIMENSION(:,:),     ALLOCATABLE :: ZSTD_SV
-REAL, DIMENSION(:,:),     ALLOCATABLE :: ZSTD_SVTRES ! threshold of sv
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZWORK3D,ZWORK3DB
-REAL, DIMENSION(:),       ALLOCATABLE :: ZWORK1D
-REAL, DIMENSION(:),       ALLOCATABLE :: ZMEANRC
-!
-!
-!-------------------------------------------------------------------------------
-!
-CALL GET_DIM_EXT_ll('B',IIU,IJU)
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-!
-IKU = SIZE(XTHT,3)
-!
-!-------------------------------------------------------------------------------
-!
-!*      1.0  Thermodynamical computations
-!            ----------------------------
-!
-ALLOCATE(ZRT      (IIU,IJU,IKU))
-ALLOCATE(ZMEANRC (IKU))
-ZRT = 0.
-!
-IRR=0
-IF (LUSERV) THEN
-  IRR=IRR+1
-  ZRT = ZRT + XRT(:,:,:,1)
-END IF
-IF (LUSERC) THEN
-  IRR=IRR+1
-  IRRC=IRR
-  ZRT = ZRT + XRT(:,:,:,IRRC)
-END IF
-IF (LUSERR) THEN
-  IRR=IRR+1
-  IRRR=IRR
-  ZRT = ZRT + XRT(:,:,:,IRRR)
-END IF
-IF (LUSERI) THEN
-  IRR=IRR+1
-  IRRI=IRR
-  ZRT = ZRT + XRT(:,:,:,IRRI)
-END IF
-IF (LUSERS) THEN
-  IRR=IRR+1
-  IRRS=IRR
-  ZRT = ZRT + XRT(:,:,:,IRRS)
-END IF
-IF (LUSERG) THEN
-  IRR=IRR+1
-  IRRG=IRR
-  ZRT = ZRT + XRT(:,:,:,IRRG)
-END IF
-!
-!
-!* computes fields on the LES grid in order to compute masks
-!
-ALLOCATE(ZTHV     (IIU,IJU,IKU))
-ZTHV = XTHT
-IF (LUSERV) ZTHV=ZTHV*(1.+XRV/XRD*XRT(:,:,:,1))/(1.+ZRT(:,:,:))
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.0  Fields on LES grid
-!            ------------------
-!
-!* allocates fields on the LES grid
-!
-!
-ALLOCATE(ZW_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZRC_LES  (IIU,IJU,NLES_K))
-ALLOCATE(ZRI_LES  (IIU,IJU,NLES_K))
-ALLOCATE(ZRT_LES  (IIU,IJU,NLES_K))
-ALLOCATE(ZTHV_LES (IIU,IJU,NLES_K))
-ALLOCATE(ZTHV_ANOM(IIU,IJU,NLES_K))
-ALLOCATE(ZSV_LES (IIU,IJU,NLES_K,NSV_CS))
-ALLOCATE(ZSV_ANOM(IIU,IJU,NLES_K,NSV_CS))
-ALLOCATE(ZSTD_SV(NLES_K,NSV_CS))
-ALLOCATE(ZSTD_SVTRES(NLES_K,NSV_CS))
-ALLOCATE(ZWORK1D(NLES_K))
-ALLOCATE(ZWORK3D(IIU,IJU,IKU))
-ALLOCATE(ZWORK3DB(IIU,IJU,NLES_K))
-!
-ZWORK1D=0.
-ZWORK3D=0.  
-ZWORK3DB=0.
-!
-CALL LES_VER_INT(MZF(XWT), ZW_LES)
-IF (NSV_CS>0) THEN
-  DO JSV=NSV_CSBEG, NSV_CSEND
-    CALL LES_VER_INT(  XSVT(:,:,:,JSV),  &
-                       ZSV_LES(:,:,:,JSV-NSV_CSBEG+1) )
-  END DO
-END IF
-IF (LUSERC) THEN
-  CALL LES_VER_INT(XRT(:,:,:,IRRC), ZRC_LES)
-ELSE
-  ZRC_LES = 0.
-END IF
-IF (LUSERI) THEN
-  CALL LES_VER_INT(XRT(:,:,:,IRRI), ZRI_LES)
-ELSE
-  ZRI_LES = 0.
-END IF
-CALL LES_VER_INT(ZRT, ZRT_LES)
-CALL LES_VER_INT(ZTHV, ZTHV_LES)
-CALL LES_ANOMALY_FIELD(ZTHV,ZTHV_ANOM)
-!
-IF (NSV_CS>0) THEN
- DO JSV=NSV_CSBEG, NSV_CSEND
-  ZWORK3D(:,:,:)=XSVT(:,:,:,JSV)
-  CALL LES_ANOMALY_FIELD(ZWORK3D,ZWORK3DB)
-  ZSV_ANOM(:,:,:,JSV-NSV_CSBEG+1)=ZWORK3DB(:,:,:)
-  CALL LES_STDEV(ZWORK3DB,ZWORK1D)
-  ZSTD_SV(:,JSV-NSV_CSBEG+1)=ZWORK1D(:)
-  DO JK=1,NLES_K
-       ZSTD_SVTRES(JK,JSV-NSV_CSBEG+1)=SUM(ZSTD_SV(1:JK,JSV-NSV_CSBEG+1))/(1.*JK)
-  END DO
- END DO
-END IF
-!
-DEALLOCATE(ZTHV     )
-DEALLOCATE(ZWORK3D)
-DEALLOCATE(ZWORK3DB)
-DEALLOCATE(ZWORK1D)
-!
-!-------------------------------------------------------------------------------
-!
-!*      3.0  Cloud mask
-!            ----------
-!
-IF (LLES_NEB_MASK) THEN
-  CALL LES_ALLOCATE('LLES_CURRENT_NEB_MASK',(/IIU,IJU,NLES_K/))
-  LLES_CURRENT_NEB_MASK (:,:,:) = .FALSE.
-  WHERE ((ZRC_LES(IIB:IIE,IJB:IJE,:)>1.E-6 .OR. ZRI_LES(IIB:IIE,IJB:IJE,:)>1.E-6) .AND. ZW_LES(IIB:IIE,IJB:IJE,:)>0.)
-    LLES_CURRENT_NEB_MASK (IIB:IIE,IJB:IJE,:) = .TRUE.
-  END WHERE
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      4.0  Cloud core mask
-!            ---------------
-!
-IF (LLES_CORE_MASK) THEN
-  CALL LES_ALLOCATE('LLES_CURRENT_CORE_MASK',(/IIU,IJU,NLES_K/))
-  LLES_CURRENT_CORE_MASK (:,:,:) = .FALSE.
-  WHERE ((ZRC_LES(IIB:IIE,IJB:IJE,:)>1.E-6 .OR. ZRI_LES(IIB:IIE,IJB:IJE,:)>1.E-6) &
-         .AND. ZW_LES(IIB:IIE,IJB:IJE,:)>0. .AND. ZTHV_ANOM(IIB:IIE,IJB:IJE,:)>0.)  
-    LLES_CURRENT_CORE_MASK (IIB:IIE,IJB:IJE,:) = .TRUE.
-  END WHERE
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      4.0  Conditional sampling mask
-!            -------------------------
-!
-IF (LLES_CS_MASK) THEN
-!
-  CALL LES_MEAN_ll(ZRC_LES, LLES_CURRENT_CART_MASK, ZMEANRC  )
-  CALL LES_ALLOCATE('LLES_CURRENT_CS1_MASK',(/IIU,IJU,NLES_K/))
-  LLES_CURRENT_CS1_MASK(:,:,:) = .FALSE.
-  IF (NSV_CS >= 2) THEN
-    CALL LES_ALLOCATE('LLES_CURRENT_CS2_MASK',(/IIU,IJU,NLES_K/))
-    LLES_CURRENT_CS2_MASK(:,:,:) = .FALSE.
-    IF (NSV_CS == 3) THEN
-      CALL LES_ALLOCATE('LLES_CURRENT_CS3_MASK',(/IIU,IJU,NLES_K/))
-      LLES_CURRENT_CS3_MASK (:,:,:) = .FALSE.
-    END IF
-  END IF
-
-!
-! Cloud top and base computation                   
-!
-  KBASE=2
-  KTOP=NLES_K
-  DO JK=2,NLES_K
-   IF ((ZMEANRC(JK) > 1.E-7) .AND. (KBASE == 2)) KBASE=JK
-   IF ((ZMEANRC(JK) < 1.E-7) .AND. (KBASE > 2) .AND. (KTOP == NLES_K)) &
-              KTOP=JK-1
-  END DO
-!
- DO JSV=NSV_CSBEG, NSV_CSEND
-  DO JK=2,NLES_K
-    IF (ZSTD_SV(JK,JSV-NSV_CSBEG+1) < 0.05*ZSTD_SVTRES(JK,JSV-NSV_CSBEG+1)) &
-       ZSTD_SV(JK,JSV-NSV_CSBEG+1)=0.05*ZSTD_SVTRES(JK,JSV-NSV_CSBEG+1)
-! case no cloud top and base                    
-    IF (JSV == NSV_CSBEG) THEN
-     IF ((KBASE ==2) .AND. (KTOP == NLES_K)) THEN
-      WHERE (ZW_LES(IIB:IIE,IJB:IJE,JK)>0. .AND. ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) >  &
-             XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS1_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
-      END WHERE       
-     END IF
-!
-! case cloud top and base defined                    
-!
-     IF (XZHAT(JK) < XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN      
-      WHERE (ZW_LES(IIB:IIE,IJB:IJE,JK)>0. .AND. ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
-             XSCAL(JSV-NSV_CSBEG+1) *ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS1_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
-      END WHERE
-     END IF     
-!
-     IF (XZHAT(JK) >= XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN
-      WHERE (ZW_LES(IIB:IIE,IJB:IJE,JK)>0. .AND. ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
-             XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1) .AND. &
-          ZRC_LES(IIB:IIE,IJB:IJE,JK)>1.E-6)
-          LLES_CURRENT_CS1_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
-      END WHERE  
-     END IF
-    ELSE IF ( JSV == NSV_CSBEG + 1 ) THEN
-     IF ((KBASE ==2) .AND. (KTOP == NLES_K)) THEN
-      WHERE ( ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
-              XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS2_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
-      END WHERE       
-     END IF
-!
-! case cloud top and base defined                    
-!
-     IF (XZHAT(JK) < XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN      
-      WHERE (ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) >  &
-             XSCAL(JSV-NSV_CSBEG+1) *ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS2_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
-      END WHERE
-     END IF     
-!
-     IF (XZHAT(JK) >= XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN
-      WHERE (ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
-             XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1)) 
-          LLES_CURRENT_CS2_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
-      END WHERE  
-     END IF
-!
-    ELSE 
-     IF ((KBASE ==2) .AND. (KTOP == NLES_K)) THEN
-      WHERE ( ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
-              XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS3_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
-      END WHERE       
-     END IF
-!
-! case cloud top and base defined                    
-!
-     IF (XZHAT(JK) < XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN      
-      WHERE (ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
-             XSCAL(JSV-NSV_CSBEG+1) *ZSTD_SV(JK,JSV-NSV_CSBEG+1))
-          LLES_CURRENT_CS3_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
-      END WHERE
-     END IF     
-!
-     IF (XZHAT(JK) >= XZHAT(KBASE)+(XZHAT(KTOP)-XZHAT(KBASE))/4.) THEN
-      WHERE (ZSV_ANOM(IIB:IIE,IJB:IJE,JK,JSV-NSV_CSBEG+1) > &
-             XSCAL(JSV-NSV_CSBEG+1) * ZSTD_SV(JK,JSV-NSV_CSBEG+1)) 
-          LLES_CURRENT_CS3_MASK (IIB:IIE,IJB:IJE,JK) = .TRUE.
-      END WHERE  
-     END IF
-    END IF
-  END DO
- END DO
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      5.0  User mask
-!            ---------
-!
-IF (LLES_MY_MASK) THEN
-  CALL LES_ALLOCATE('LLES_CURRENT_MY_MASKS',(/IIU,IJU,NLES_K,NLES_MASKS_USER/))
-  DO JI=1,NLES_MASKS_USER
-    LLES_CURRENT_MY_MASKS (IIB:IIE,IJB:IJE,:,JI) = .FALSE.
-  END DO
-! WHERE ((ZRC_LES + ZRI_LES) > 1.E-06) 
-!    LLES_CURRENT_MY_MASKS (:,:,:,1) = .TRUE.
-! END WHERE
-!
-END IF
-!-------------------------------------------------------------------------------
-!
-DEALLOCATE(ZW_LES   )
-DEALLOCATE(ZRC_LES  )
-DEALLOCATE(ZRI_LES  )
-DEALLOCATE(ZRT_LES  )
-DEALLOCATE(ZTHV_LES )
-DEALLOCATE(ZSV_LES  )
-DEALLOCATE(ZTHV_ANOM)
-DEALLOCATE(ZSV_ANOM)
-DEALLOCATE(ZSTD_SV)
-DEALLOCATE(ZSTD_SVTRES)
-!-------------------------------------------------------------------------------
-DEALLOCATE(ZRT )
-DEALLOCATE(ZMEANRC)
-!--------------------------------------------------------------------------------
-!
-CONTAINS
-!
-!--------------------------------------------------------------------------------
-!
-SUBROUTINE LES_ANOMALY_FIELD(PF,PF_ANOM)
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PF
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PF_ANOM
-
-REAL, DIMENSION(SIZE(PF_ANOM,3)) :: ZMEAN
-INTEGER :: JI, JJ
-
-CALL LES_VER_INT(PF, PF_ANOM)
-CALL LES_MEAN_ll(PF_ANOM, LLES_CURRENT_CART_MASK, ZMEAN  )
-DO JJ=1,SIZE(PF_ANOM,2)
-  DO JI=1,SIZE(PF_ANOM,1)
-    PF_ANOM(JI,JJ,:) = PF_ANOM(JI,JJ,:) - ZMEAN(:)
-  END DO
-END DO
-
-END SUBROUTINE LES_ANOMALY_FIELD
-!--------------------------------------------------------------------------------
-!
-!--------------------------------------------------------------------------------
-!
-SUBROUTINE LES_STDEV(PF_ANOM,PF_STD)
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PF_ANOM
-REAL, DIMENSION(:), INTENT(OUT) :: PF_STD
-
-REAL, DIMENSION(SIZE(PF_ANOM,1),SIZE(PF_ANOM,2),SIZE(PF_ANOM,3)) :: Z2
-INTEGER :: JK
-
-Z2(:,:,:)=PF_ANOM(:,:,:)*PF_ANOM(:,:,:)
-CALL LES_MEAN_ll(Z2, LLES_CURRENT_CART_MASK, PF_STD  )
-DO JK=1,SIZE(PF_ANOM,3)
-     PF_STD(JK)=SQRT(PF_STD(JK))
-END DO
-
-END SUBROUTINE LES_STDEV
-!-------------------------------------------------------------------------------  
-!
-END SUBROUTINE LES_CLOUD_MASKS_n   
diff --git a/src/mesonh/ext/les_ini_timestepn.f90 b/src/mesonh/ext/les_ini_timestepn.f90
deleted file mode 100644
index 98c5cd306..000000000
--- a/src/mesonh/ext/les_ini_timestepn.f90
+++ /dev/null
@@ -1,407 +0,0 @@
-!MNH_LIC Copyright 2002-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_LES_INI_TIMESTEP_n
-!      #######################
-!
-!
-INTERFACE LES_INI_TIMESTEP_n
-!
-      SUBROUTINE LES_INI_TIMESTEP_n(KTCOUNT)
-!
-INTEGER, INTENT(IN) :: KTCOUNT ! current model time-step
-!
-END SUBROUTINE LES_INI_TIMESTEP_n
-!
-END INTERFACE
-!
-END MODULE MODI_LES_INI_TIMESTEP_n
-
-!     ##############################
-      SUBROUTINE  LES_INI_TIMESTEP_n(KTCOUNT)
-!     ##############################
-!
-!
-!!****  *LES_INI_TIMESTEP_n* initializes the LES variables for
-!!                    the current time-step of model _n
-!!
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      V. Masson
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         06/11/02
-!  P. Wautelet 13/09/2019: budget: simplify and modernize date/time management
-!  P. Wautelet 30/03/2021: budgets: LES cartesian subdomain limits are defined in the physical domain
-! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_NSV
-USE MODD_LES
-USE MODD_LES_n
-USE MODD_FIELD_n
-USE MODD_METRICS_n
-USE MODD_REF_n
-USE MODD_CONF_n
-USE MODD_TIME_n
-USE MODD_DYN_n
-USE MODD_TIME
-USE MODD_CONF
-USE MODD_LES_BUDGET
-!
-use mode_datetime,       only: Datetime_distance
-USE MODE_ll
-USE MODE_MODELN_HANDLER
-!
-USE MODI_LES_VER_INT
-USE MODI_THL_RT_FROM_TH_R
-USE MODI_LES_MEAN_ll
-USE MODI_SHUMAN
-!
-USE MODI_SECOND_MNH
-USE MODI_LES_CLOUD_MASKS_N
-!
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-!
-INTEGER, INTENT(IN) :: KTCOUNT ! current model time-step
-!
-!
-!       0.2  declaration of local variables
-!
-INTEGER :: IXOR_ll, IYOR_ll                    ! origine point coordinates
-!                                              ! of current processor domain
-!                                              ! on model domain on all
-!                                              ! processors
-INTEGER :: IIB_ll, IJB_ll                      ! SO point coordinates of
-!                                              ! current processor phys. domain
-!                                              ! on model domain on all
-!                                              ! processors
-INTEGER :: IIE_ll, IJE_ll                      ! NE point coordinates of
-!                                              ! current processor phys. domain
-!                                              ! on model domain on all
-!                                              ! processors
-INTEGER :: IIINF_MASK, IISUP_MASK              ! cart. mask local proc. limits
-INTEGER :: IJINF_MASK, IJSUP_MASK              ! cart. mask local proc. limits
-!
-INTEGER :: JK                                  ! vertical loop counter
-INTEGER :: IIB, IJB, IIE, IJE                  ! hor. indices
-INTEGER :: IIU, IJU                            ! hor. indices
-INTEGER :: IKU                                 ! ver. index
-INTEGER :: IRR, IRRC, IRRR, IRRI, IRRS, IRRG   ! moist variables indices
-!
-INTEGER :: JSV                                 ! scalar variables counter
-!
-REAL    :: ZTIME1, ZTIME2                      ! CPU time counters
-!
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHL ! theta_l
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRT  ! total water
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZL   ! Latent heat of vaporization
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZCP  ! Cp
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZEXN ! Exner function
-INTEGER                               :: IMI  ! current model index
-!-------------------------------------------------------------------------------
-!
-!*      1.   Does current time-step is a LES time-step?
-!            -----------------------------------------
-!
-LLES_CALL= .FALSE.
-!
-CALL SECOND_MNH(ZTIME1)
-!
-IF (NLES_TCOUNT==NLES_TIMES) LLES_CALL=.FALSE.
-!
-IF ( KTCOUNT>1 .AND. MOD (KTCOUNT-1,NLES_DTCOUNT)==0) LLES_CALL=.TRUE.
-!
-IF (.NOT. LLES_CALL) RETURN
-!
-CALL BUDGET_FLAGS(LUSERV, LUSERC, LUSERR,         &
-                  LUSERI, LUSERS, LUSERG, LUSERH  )
-!
-NLES_TCOUNT = NLES_TCOUNT + 1
-!
-NLES_CURRENT_TCOUNT = NLES_TCOUNT
-!
-tles_dates(nles_tcount) = tdtcur
-call Datetime_distance( tdtseg, tdtcur, xles_times(nles_tcount) )
-!
-!* forward-in-time time-step
-!
-XCURRENT_TSTEP = XTSTEP
-!
-!-------------------------------------------------------------------------------
-!
-CALL GET_OR_ll     ('B',IXOR_ll,IYOR_ll)
-CALL GET_DIM_EXT_ll('B',IIU,IJU)
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-!
-IIB_ll=IXOR_ll+IIB-1
-IJB_ll=IYOR_ll+IJB-1
-IIE_ll=IXOR_ll+IIE-1
-IJE_ll=IYOR_ll+IJE-1
-!
-IKU = SIZE(XTHT,3)
-!
-IMI = GET_CURRENT_MODEL_INDEX()
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.   Definition of masks
-!            -------------------
-!
-!*      2.1  Cartesian (sub-)domain (on local processor)
-!            ----------------------
-!
-CALL LES_ALLOCATE('LLES_CURRENT_CART_MASK',(/IIU,IJU,NLES_K/))
-!
-IIINF_MASK = MAX(IIB, NLESn_IINF(IMI)+JPHEXT-(IIB_ll-1-JPHEXT))
-IJINF_MASK = MAX(IJB, NLESn_JINF(IMI)+JPHEXT-(IJB_ll-1-JPHEXT))
-IISUP_MASK = MIN(IIE, NLESn_ISUP(IMI)+JPHEXT-(IIB_ll-1-JPHEXT))
-IJSUP_MASK = MIN(IJE, NLESn_JSUP(IMI)+JPHEXT-(IJB_ll-1-JPHEXT))
-!
-!
-LLES_CURRENT_CART_MASK(:,:,:) = .FALSE.
-LLES_CURRENT_CART_MASK(IIINF_MASK:IISUP_MASK,IJINF_MASK:IJSUP_MASK,:) = .TRUE.
-!
-CLES_CURRENT_LBCX(:) = CLES_LBCX(:,IMI)
-CLES_CURRENT_LBCY(:) = CLES_LBCY(:,IMI)
-!
-!-------------------------------------------------------------------------------
-!
-!*      3.   Definition of LES vertical grid for this model
-!            ----------------------------------------------
-!
-IF (CLES_LEVEL_TYPE=='Z') THEN
-  IF (ASSOCIATED(XCOEFLIN_CURRENT_LES)) CALL LES_DEALLOCATE('XCOEFLIN_CURRENT_LES')
-  IF (ASSOCIATED(NKLIN_CURRENT_LES   )) CALL LES_DEALLOCATE('NKLIN_CURRENT_LES')
-  !
-  CALL LES_ALLOCATE('XCOEFLIN_CURRENT_LES',(/IIU,IJU,NLES_K/))
-  CALL LES_ALLOCATE('NKLIN_CURRENT_LES',(/IIU,IJU,NLES_K/))
-  !
-  XCOEFLIN_CURRENT_LES(:,:,:) = XCOEFLIN_LES(:,:,:)
-  NKLIN_CURRENT_LES   (:,:,:) = NKLIN_LES   (:,:,:)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      4.   Definition of variables used in budgets for current model
-!            ---------------------------------------------------------
-!
-IF (LUSERC) THEN
-  ALLOCATE(XCURRENT_L_O_EXN_CP (IIU,IJU,IKU))
-ELSE
-  ALLOCATE(XCURRENT_L_O_EXN_CP (0,0,0))
-END IF
-ALLOCATE(XCURRENT_RHODJ      (IIU,IJU,IKU))
-!
-!* coefficients for Th to Thl conversion
-!
-IF (LUSERC) THEN
-  ALLOCATE(ZL  (IIU,IJU,IKU))
-  ALLOCATE(ZEXN(IIU,IJU,IKU))
-  ALLOCATE(ZCP (IIU,IJU,IKU))
-  !
-  !* Exner function
-  !
-  ZEXN(:,:,:) = (XPABST/XP00)**(XRD/XCPD)
-  !
-  !* Latent heat of vaporization
-  !
-  ZL(:,:,:) = XLVTT + (XCPD-XCL) * (XTHT(:,:,:)*ZEXN(:,:,:)-XTT)
-  !
-  !* heat capacity at constant pressure of the humid air
-  !
-  ZCP(:,:,:) = XCPD
-  IRR=2
-  ZCP(:,:,:) = ZCP(:,:,:) + XCPV * XRT(:,:,:,1)
-  ZCP(:,:,:) = ZCP(:,:,:) + XCL  * XRT(:,:,:,2)
-  IF (LUSERR) THEN
-    IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCL  * XRT(:,:,:,IRR)
-  END IF
-  IF (LUSERI) THEN
-    IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRT(:,:,:,IRR)
-  END IF
-  IF (LUSERS) THEN
-    IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRT(:,:,:,IRR)
-  END IF
-  IF (LUSERG) THEN
-    IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRT(:,:,:,IRR)
-  END IF
-  IF (LUSERH) THEN
-    IRR=IRR+1
-    ZCP(:,:,:) = ZCP(:,:,:) + XCI  * XRT(:,:,:,IRR)
-  END IF
-  !
-  !* L / (Exn * Cp)
-  !
-  XCURRENT_L_O_EXN_CP(:,:,:) = ZL(:,:,:) / ZEXN(:,:,:) / ZCP(:,:,:)
-  !
-  DEALLOCATE(ZL  )
-  DEALLOCATE(ZEXN)
-  DEALLOCATE(ZCP )
-END IF
-!
-!* other initializations
-!
-XCURRENT_RHODJ=XRHODJ
-!
-LCURRENT_USERV=LUSERV
-LCURRENT_USERC=LUSERC
-LCURRENT_USERR=LUSERR
-LCURRENT_USERI=LUSERI
-LCURRENT_USERS=LUSERS
-LCURRENT_USERG=LUSERG
-LCURRENT_USERH=LUSERH
-!
-NCURRENT_RR = NRR
-!
-ALLOCATE(XCURRENT_RUS  (IIU,IJU,IKU))
-ALLOCATE(XCURRENT_RVS  (IIU,IJU,IKU))
-ALLOCATE(XCURRENT_RWS  (IIU,IJU,IKU))
-ALLOCATE(XCURRENT_RTHS (IIU,IJU,IKU))
-ALLOCATE(XCURRENT_RTKES(IIU,IJU,IKU))
-ALLOCATE(XCURRENT_RRS  (IIU,IJU,IKU,NRR))
-ALLOCATE(XCURRENT_RSVS (IIU,IJU,IKU,NSV))
-ALLOCATE(XCURRENT_RTHLS(IIU,IJU,IKU))
-ALLOCATE(XCURRENT_RRTS (IIU,IJU,IKU))
-!
-XCURRENT_RUS  =XRUS
-XCURRENT_RVS  =XRVS
-XCURRENT_RWS  =XRWS
-XCURRENT_RTHS =XRTHS
-XCURRENT_RTKES=XRTKES
-XCURRENT_RRS  =XRRS
-XCURRENT_RSVS =XRSVS
-CALL THL_RT_FROM_TH_R(LUSERV, LUSERC, LUSERR,             &
-                      LUSERI, LUSERS, LUSERG, LUSERH,     &
-                      XCURRENT_L_O_EXN_CP,                &
-                      XCURRENT_RTHS, XCURRENT_RRS,        &
-                      XCURRENT_RTHLS, XCURRENT_RRTS       )
-
-ALLOCATE(X_LES_BU_RES_KE   (NLES_K,NLES_TOT))
-ALLOCATE(X_LES_BU_RES_WThl (NLES_K,NLES_TOT))
-ALLOCATE(X_LES_BU_RES_Thl2 (NLES_K,NLES_TOT))
-ALLOCATE(X_LES_BU_SBG_Tke  (NLES_K,NLES_TOT))
-ALLOCATE(X_LES_BU_RES_WRt  (NLES_K,NLES_TOT))
-ALLOCATE(X_LES_BU_RES_Rt2  (NLES_K,NLES_TOT))
-ALLOCATE(X_LES_BU_RES_ThlRt(NLES_K,NLES_TOT))
-ALLOCATE(X_LES_BU_RES_Sv2  (NLES_K,NLES_TOT,NSV))
-ALLOCATE(X_LES_BU_RES_WSv  (NLES_K,NLES_TOT,NSV))
-
-X_LES_BU_RES_KE   = 0.
-X_LES_BU_RES_WThl = 0.
-X_LES_BU_RES_Thl2 = 0.
-X_LES_BU_SBG_Tke  = 0.
-X_LES_BU_RES_WRt  = 0.
-X_LES_BU_RES_Rt2  = 0.
-X_LES_BU_RES_ThlRt= 0.
-X_LES_BU_RES_Sv2  = 0.
-X_LES_BU_RES_WSv  = 0.
-!
-!-------------------------------------------------------------------------------
-!
-!*      4.   Definition of anomaly fields
-!            ----------------------------
-!
-ALLOCATE (XU_ANOM  (IIU,IJU,NLES_K))
-ALLOCATE (XV_ANOM  (IIU,IJU,NLES_K))
-ALLOCATE (XW_ANOM  (IIU,IJU,NLES_K))
-ALLOCATE (XTHL_ANOM(IIU,IJU,NLES_K))
-IF (LUSERV) THEN
-  ALLOCATE (XRT_ANOM (IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE (XRT_ANOM (0,0,0))
-END IF
-ALLOCATE (XSV_ANOM (IIU,IJU,NLES_K,NSV))
-!
-!*      4.1  conservative variables
-!            ----------------------
-!
-ALLOCATE(ZTHL(IIU,IJU,IKU))
-ALLOCATE(ZRT (IIU,IJU,IKU))
-CALL THL_RT_FROM_TH_R(LUSERV, LUSERC, LUSERR,             &
-                      LUSERI, LUSERS, LUSERG, LUSERH,     &
-                      XCURRENT_L_O_EXN_CP,                &
-                      XTHT, XRT,                          &
-                      ZTHL, ZRT                           )
-!
-!*      4.2  anomaly fields on the LES grid
-!            ------------------------------
-!
-CALL LES_ANOMALY_FIELD(MXF(XUT),XU_ANOM)
-CALL LES_ANOMALY_FIELD(MYF(XVT),XV_ANOM)
-CALL LES_ANOMALY_FIELD(MZF(XWT),XW_ANOM)
-CALL LES_ANOMALY_FIELD(ZTHL,XTHL_ANOM)
-IF (LUSERV) CALL LES_ANOMALY_FIELD(ZRT,XRT_ANOM)
-DO JSV=1,NSV
-  CALL LES_ANOMALY_FIELD(XSVT(:,:,:,JSV),XSV_ANOM(:,:,:,JSV))
-END DO
-!
-!-------------------------------------------------------------------------------
-!
-DEALLOCATE(ZTHL)
-DEALLOCATE(ZRT )
-!-------------------------------------------------------------------------------
-!
-!*      6.0  Nebulosity masks
-!            ----------------
-!
-CALL LES_CLOUD_MASKS_n
-!
-!-------------------------------------------------------------------------------
-CALL SECOND_MNH(ZTIME2)
-XTIME_LES_BU = XTIME_LES_BU + ZTIME2 - ZTIME1
-!--------------------------------------------------------------------------------
-!
-CONTAINS
-!
-!--------------------------------------------------------------------------------
-!
-SUBROUTINE LES_ANOMALY_FIELD(PF,PF_ANOM)
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PF
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PF_ANOM
-
-REAL, DIMENSION(SIZE(PF_ANOM,3)) :: ZMEAN
-INTEGER :: JI, JJ
-
-CALL LES_VER_INT(PF, PF_ANOM)
-CALL LES_MEAN_ll(PF_ANOM, LLES_CURRENT_CART_MASK, ZMEAN  )
-DO JJ=1,SIZE(PF_ANOM,2)
-  DO JI=1,SIZE(PF_ANOM,1)
-    PF_ANOM(JI,JJ,:) = PF_ANOM(JI,JJ,:) - ZMEAN(:)
-  END DO
-END DO
-
-END SUBROUTINE LES_ANOMALY_FIELD
-!--------------------------------------------------------------------------------
-!
-END SUBROUTINE LES_INI_TIMESTEP_n   
-
diff --git a/src/mesonh/ext/lesn.f90 b/src/mesonh/ext/lesn.f90
deleted file mode 100644
index f66f89eae..000000000
--- a/src/mesonh/ext/lesn.f90
+++ /dev/null
@@ -1,3580 +0,0 @@
-!MNH_LIC Copyright 2000-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.
-!-----------------------------------------------------------------
-!     #################
-      SUBROUTINE  LES_n
-!     #################
-!
-!
-!!****  *LES_n* computes the current time-step LES diagnostics for model _n
-!!
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      V. Masson
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original  07/02/00
-!!                01/02/01 (D. Gazen) add module MODD_NSV for NSV variable
-!!                06/11/02 (V. Masson) add LES budgets and use of anomalies
-!!                         in LES quantities computations
-!!                01/04/03 (V. Masson and F. Couvreux) bug in BL height loop
-!!                   10/07 (J.Pergaud) Add mass flux diagnostics
-!!                06/08    (O.Thouron) Add radiative diagnostics
-!!                12/10    (R.Honnert) Add EDKF mass flux in BL height
-!!                10/09    (P. Aumond) Add possibility of user maskS
-!!                10/14    (C.Lac) Correction on user masks
-!!                10/16    (C.Lac) Add ground droplet deposition amount
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!                     02/2019 (C. Lac) Add rain fraction as a LES diagnostic
-!!
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_CTURB, ONLY : XFTOP_O_FSURF
-!
-USE MODD_LES
-USE MODD_LES_BUDGET
-USE MODD_CONF
-USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
-USE MODD_LES_n
-USE MODD_RADIATIONS_n
-USE MODD_GRID_n
-USE MODD_REF_n
-USE MODD_FIELD_n
-USE MODD_CONF_n
-USE MODD_PARAM_n
-USE MODD_TURB_n
-USE MODD_METRICS_n
-USE MODD_LUNIT_n, ONLY: TLUOUT
-USE MODD_PARAM_n, ONLY: CCLOUD
-USE MODD_PRECIP_n, ONLY: XINPRR,XACPRR,XINPRR3D,XEVAP3D,XINPRC,XINDEP
-USE MODD_NSV, ONLY : NSV, NSV_CS
-USE MODD_PARAM_ICE, ONLY: LDEPOSC,LSEDIC
-USE MODD_PARAM_C2R2, ONLY: LDEPOC,LSEDC
-USE MODD_PARAM_LIMA, ONLY : MSEDC=>LSEDC
-!
-USE MODI_SHUMAN
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
-USE MODI_GRADIENT_W
-USE MODI_LES_VER_INT
-USE MODI_SPEC_VER_INT
-USE MODI_LES_MEAN_ll
-USE MODI_THL_RT_FROM_TH_R
-USE MODI_LES_RES_TR
-USE MODI_BUDGET_FLAGS
-USE MODI_LES_BUDGET_TEND_n
-USE MODE_BL_DEPTH_DIAG
-!
-USE MODE_ll
-USE MODE_MODELN_HANDLER
-USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
-!
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-!
-!       0.2  declaration of local variables
-!
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZEXN      ! Exner function
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHL      ! liquid potential temperature
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHV      ! virtual potential temperature
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRHO      ! air density
-!
-REAL, DIMENSION(:,:,:),    ALLOCATABLE :: CHAMPXY1    !tableau intermediaire
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTEMP     ! Temperature
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZEW
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZINDCLD   !indice cloud si rc>0
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZINDCLD2  !indice cloud rc>1E-5
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZCLDFR_LES! CLDFR    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZICEFR_LES! ICEFR    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRAINFR_LES! RAINFR   on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZMASSF    ! massflux=rho*w
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZREHU     ! relative humidity
-
-
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZZ_LES    ! alt.  on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE ::ZZZ_LES
-REAL, DIMENSION(:,:,:),   ALLOCATABLE ::ZINPRR3D_LES   ! precipitation flux 3D
-REAL, DIMENSION(:,:,:),   ALLOCATABLE ::ZEVAP3D_LES !evaporation 3D
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZP_LES    ! pres. on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDP_LES   ! dynamical production TKE   
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTP_LES   ! thermal production TKE    
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTR_LES   ! transport production TKE    
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDISS_LES ! dissipation TKE    
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZLM_LES    ! mixing length
-
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDPDZ_LES   ! dp/dz on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDTHLDZ_LES ! dThl/dz on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDTHDZ_LES ! dTh/dz on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDRTDZ_LES  ! dRt/dz  on LES vertical grid
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZDSvDZ_LES  ! dSv/dz  on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDUDZ_LES ! du/dz on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDVDZ_LES ! dv/dz on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDWDZ_LES ! dw/dz on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZEXN_LES  ! Exner on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRHO_LES  ! rho   on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZU_LES    ! U     on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZV_LES    ! V     on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZW_LES    ! W     on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZMF_LES   ! mass flux on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTH_LES   ! Theta on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHV_LES  ! thv   on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHL_LES  ! thl   on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTKE_LES  ! tke   on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZKE_LES   ! ke   on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRV_LES   ! Rv    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZREHU_LES ! Rehu  on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRC_LES   ! Rc    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRR_LES   ! Rr    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRI_LES   ! Ri    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRS_LES   ! Rs    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRG_LES   ! Rg    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRH_LES   ! Rh    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRT_LES   ! Rt    on LES vertical grid
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSV_LES   ! Sv    on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTH_ANOM  ! Theta anomaly on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHV_ANOM ! thv   anomaly on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRV_ANOM  ! Rv    anomaly on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRC_ANOM  ! Rc    anomaly on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRI_ANOM  ! Ri    anomaly on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRR_ANOM  ! Rr    anomaly on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZP_ANOM   ! p     anomaly on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRHO_ANOM ! rho   anomaly on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDPDZ_ANOM! dp/dz anomaly on LES vertical grid
-REAL, DIMENSION(:),       ALLOCATABLE :: ZMEAN_DPDZ! dp/dz mean    on LES vertical grid
-REAL, DIMENSION(:),       ALLOCATABLE :: ZLES_MEAN_DRtDZ! drt/dz mean    on LES vertical grid
-REAL, DIMENSION(:),       ALLOCATABLE :: ZLES_MEAN_DTHDZ! dth/dz mean    on LES vertical grid
-REAL, DIMENSION(:,:),     ALLOCATABLE :: ZLES_MEAN_DSVDZ! drt/dz mean    on LES vertical grid
-REAL, DIMENSION(:,:),     ALLOCATABLE :: ZLWP_LES, ZRWP_LES, ZTKET_LES
-REAL, DIMENSION(:,:),     ALLOCATABLE :: ZIWP_LES, ZSWP_LES, ZGWP_LES, ZHWP_LES
-REAL, DIMENSION(:,:),     ALLOCATABLE :: ZINDCLD2D  !
-REAL, DIMENSION(:,:),     ALLOCATABLE :: ZINDCLD2D2 !
-REAL, DIMENSION(:,:),     ALLOCATABLE :: ZLWP_ANOM ! lwp anomaly
-REAL, DIMENSION(:,:),     ALLOCATABLE :: ZMAXWRR2D ! maxwrr2D
-!
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZU_SPEC   ! U     on SPEC vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZV_SPEC   ! V     on SPEC vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZW_SPEC   ! W     on SPEC vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTH_SPEC  ! Theta on SPEC vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZTHL_SPEC ! thl   on SPEC vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRV_SPEC  ! Rv    on SPEC vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRC_SPEC  ! Rc    on SPEC vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRI_SPEC  ! Ri    on SPEC vertical grid
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSV_SPEC  ! Sv    on SPEC vertical grid
-!
-REAL, DIMENSION(:,:,:),   ALLOCATABLE  :: ZRT      ! rv+rc+rr+ri+rs+rg+rh
-REAL, DIMENSION(:),       ALLOCATABLE  :: ZWORK1D,ZWORK1DT
-REAL, DIMENSION(:,:),     ALLOCATABLE  :: ZWORK2D
-REAL :: ZINPRRm,ZCOUNT
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZRADEFF_LES   ! Re on LES vertical grid
-!!fl sw, lw, dthrad on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZSWU_LES   ! SWU on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZSWD_LES   ! SWD on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZLWU_LES   ! LWU on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZLWD_LES   ! LWD on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDTHRADSW_LES   ! DTHRADSW on LES vertical grid
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZDTHRADLW_LES   ! DTHRADLW on LES vertical grid
-!
-REAL, DIMENSION(:),   ALLOCATABLE :: ZWORK   ! 
-!
-INTEGER :: IRR      ! moist variables counter
-INTEGER :: JSV      ! scalar variables counter
-INTEGER :: IIU, IJU ! array sizes
-INTEGER :: IKE,IKB
-INTEGER :: JI, JJ, JK   ! loop counters
-INTEGER :: IIU_ll, IJU_ll    ! total domain I size (fin)
-INTEGER :: IIA_ll, IJA_ll    ! total domain I size (debut)
-INTEGER :: IINFO_ll      ! return code of parallel routine
-INTEGER :: IIMAX_ll, IJMAX_ll  ! total physical domain I size
-INTEGER :: JLOOP
-!
-INTEGER :: IMASK    ! mask counter
-INTEGER :: IMASKUSER! mask user number 
-!
-INTEGER :: IRESP, ILUOUT
-INTEGER :: IMI      ! Current model index
-TYPE(DIMPHYEX_t) :: YLDIMPHYEX
-!-------------------------------------------------------------------------------
-!
-IMI = GET_CURRENT_MODEL_INDEX()
-!
-IF (.NOT. LLES_CALL) RETURN
-!
-CALL GET_GLOBALDIMS_ll(IIMAX_ll,IJMAX_ll)
-IIU_ll = IIMAX_ll+JPHEXT
-IJU_ll = IJMAX_ll+JPHEXT
-IIA_ll=JPHEXT+1
-IJA_ll=JPHEXT+1
-IKE=SIZE(XVT,3)-JPVEXT
-IKB=1+JPVEXT
-CALL GET_DIM_EXT_ll('B',IIU,IJU)
-CALL FILL_DIMPHYEX(YLDIMPHYEX, SIZE(XTHT,1), SIZE(XTHT,2), SIZE(XTHT,3),.TRUE.)
-!
-ILUOUT = TLUOUT%NLU
-!
-!-------------------------------------------------------------------------------
-!
-!* interpolation coefficients for Z type grid
-!
-IF (CSPECTRA_LEVEL_TYPE=='Z') THEN
-  IF (ASSOCIATED(XCOEFLIN_CURRENT_SPEC)) CALL LES_DEALLOCATE('XCOEFLIN_CURRENT_SPEC')
-  IF (ASSOCIATED(NKLIN_CURRENT_SPEC   )) CALL LES_DEALLOCATE('NKLIN_CURRENT_SPEC')
-  !
-  CALL LES_ALLOCATE('XCOEFLIN_CURRENT_SPEC',(/IIU,IJU,NSPECTRA_K/))
-  CALL LES_ALLOCATE('NKLIN_CURRENT_SPEC',(/IIU,IJU,NSPECTRA_K/))
-  !
-  XCOEFLIN_CURRENT_SPEC(:,:,:) = XCOEFLIN_SPEC(:,:,:)
-  NKLIN_CURRENT_SPEC   (:,:,:) = NKLIN_SPEC   (:,:,:)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      1.   Allocations
-!            -----------
-!
-ALLOCATE(ZP_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZDP_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZTP_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZTR_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZDISS_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZLM_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZDTHLDZ_LES(IIU,IJU,NLES_K))
-ALLOCATE(ZDTHDZ_LES(IIU,IJU,NLES_K))
-ALLOCATE(ZDRTDZ_LES(IIU,IJU,NLES_K))
-ALLOCATE(ZDUDZ_LES(IIU,IJU,NLES_K))
-ALLOCATE(ZDVDZ_LES(IIU,IJU,NLES_K))
-ALLOCATE(ZDWDZ_LES(IIU,IJU,NLES_K))
-ALLOCATE(ZDSVDZ_LES(IIU,IJU,NLES_K,NSV))
-
-ALLOCATE(ZDPDZ_LES(IIU,IJU,NLES_K))
-ALLOCATE(ZEXN_LES (IIU,IJU,NLES_K))
-ALLOCATE(ZRHO_LES (IIU,IJU,NLES_K))
-ALLOCATE(ZU_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZV_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZW_LES   (IIU,IJU,NLES_K))
-ALLOCATE(ZMF_LES  (IIU,IJU,NLES_K))
-ALLOCATE(ZTH_LES  (IIU,IJU,NLES_K))
-IF (CRAD /= 'NONE') THEN
-  ALLOCATE(ZRADEFF_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZSWU_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZSWD_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZLWU_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZLWD_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZDTHRADSW_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZDTHRADLW_LES  (IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE(ZRADEFF_LES  (0,0,0))
-  ALLOCATE(ZSWU_LES  (0,0,0))
-  ALLOCATE(ZSWD_LES  (0,0,0))
-  ALLOCATE(ZLWU_LES  (0,0,0))
-  ALLOCATE(ZLWD_LES  (0,0,0))
-  ALLOCATE(ZDTHRADSW_LES  (0,0,0))
-  ALLOCATE(ZDTHRADLW_LES  (0,0,0))
-END IF
-IF (LUSERV) THEN
-  ALLOCATE(ZTHV_LES (IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE(ZTHV_LES (0,0,0))
-END IF
-ALLOCATE(ZTHL_LES (IIU,IJU,NLES_K))
-ALLOCATE(ZTKE_LES (IIU,IJU,NLES_K))
-ALLOCATE(ZKE_LES(IIU,IJU,NLES_K))
-ALLOCATE(ZTKET_LES(IIU,IJU))
-ALLOCATE(ZWORK1D (NLES_K))
-ALLOCATE(ZWORK1DT (NLES_K))
-ALLOCATE(ZZZ_LES(IIU,IJU,NLES_K))
-IF (LUSERV) THEN
-  ALLOCATE(ZRV_LES    (IIU,IJU,NLES_K))
-  ALLOCATE(ZRT_LES    (IIU,IJU,NLES_K))
-  ALLOCATE(ZREHU_LES  (IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE(ZRV_LES    (0,0,0))
-  ALLOCATE(ZRT_LES    (0,0,0))
-  ALLOCATE(ZREHU_LES  (0,0,0))
-END IF
-IF (LUSERC) THEN
-  ALLOCATE(ZRC_LES    (IIU,IJU,NLES_K))
-  ALLOCATE(ZLWP_LES(IIU,IJU))
-  ALLOCATE(ZINDCLD2D(IIU,IJU))
-  ALLOCATE(ZINDCLD2D2(IIU,IJU))
-  ALLOCATE(ZCLDFR_LES(IIU,IJU,NLES_K))
-  ALLOCATE(ZWORK2D(IIU,IJU))
-  ALLOCATE(ZLWP_ANOM(IIU,IJU))
-ELSE
-  ALLOCATE(ZRC_LES    (0,0,0))
-  ALLOCATE(ZLWP_LES(0,0))
-  ALLOCATE(ZINDCLD2D(0,0))
-  ALLOCATE(ZINDCLD2D2(0,0))
-  ALLOCATE(ZCLDFR_LES(0,0,0))
-  ALLOCATE(ZWORK2D(0,0))
-  ALLOCATE(ZLWP_ANOM(0,0))
-END IF
-IF (LUSERR) THEN
-  ALLOCATE(ZRR_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZMAXWRR2D(IIU,IJU))
-  ALLOCATE(ZRWP_LES(IIU,IJU))
-  ALLOCATE(ZINPRR3D_LES (IIU,IJU,NLES_K))
-  ALLOCATE(ZEVAP3D_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZRAINFR_LES(IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE(ZRR_LES  (0,0,0))
-  ALLOCATE(ZMAXWRR2D(0,0))
-  ALLOCATE(ZRWP_LES(0,0))
-  ALLOCATE(ZINPRR3D_LES(0,0,0))
-  ALLOCATE(ZEVAP3D_LES(0,0,0))
-  ALLOCATE(ZRAINFR_LES(0,0,0))
-END IF
-IF (LUSERI) THEN
-  ALLOCATE(ZRI_LES    (IIU,IJU,NLES_K))
-  ALLOCATE(ZIWP_LES(IIU,IJU))
-  ALLOCATE(ZICEFR_LES(IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE(ZRI_LES    (0,0,0))
-  ALLOCATE(ZIWP_LES(0,0))
-  ALLOCATE(ZICEFR_LES(0,0,0))
-END IF
-IF (LUSERS) THEN
-  ALLOCATE(ZRS_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZSWP_LES(IIU,IJU))
-ELSE
-  ALLOCATE(ZRS_LES  (0,0,0))
-  ALLOCATE(ZSWP_LES(0,0))
-END IF
-IF (LUSERG) THEN
-  ALLOCATE(ZRG_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZGWP_LES(IIU,IJU))
-ELSE
-  ALLOCATE(ZRG_LES  (0,0,0))
-  ALLOCATE(ZGWP_LES(0,0))
-END IF
-IF (LUSERH) THEN
-  ALLOCATE(ZRH_LES  (IIU,IJU,NLES_K))
-  ALLOCATE(ZHWP_LES(IIU,IJU))
-ELSE
-  ALLOCATE(ZRH_LES  (0,0,0))
-  ALLOCATE(ZHWP_LES(0,0))
-END IF
-IF (NSV>0) THEN
-  ALLOCATE(ZSV_LES  (IIU,IJU,NLES_K,NSV))
-ELSE
-  ALLOCATE(ZSV_LES  (0,0,0,0))
-END IF
-!
-ALLOCATE(ZP_ANOM   (IIU,IJU,NLES_K))
-ALLOCATE(ZRHO_ANOM (IIU,IJU,NLES_K))
-ALLOCATE(ZTH_ANOM  (IIU,IJU,NLES_K))
-ALLOCATE(ZDPDZ_ANOM(IIU,IJU,NLES_K))
-IF (LUSERV) THEN
-  ALLOCATE(ZTHV_ANOM(IIU,IJU,NLES_K))
-  ALLOCATE(ZRV_ANOM (IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE(ZTHV_ANOM(0,0,0))
-  ALLOCATE(ZRV_ANOM (0,0,0))
-END IF
-IF (LUSERC) THEN
-  ALLOCATE(ZRC_ANOM (IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE(ZRC_ANOM (0,0,0))
-END IF
-IF (LUSERI) THEN
-  ALLOCATE(ZRI_ANOM (IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE(ZRI_ANOM (0,0,0))
-END IF
-IF (LUSERR) THEN
-  ALLOCATE(ZRR_ANOM (IIU,IJU,NLES_K))
-ELSE
-  ALLOCATE(ZRR_ANOM (0,0,0))
-END IF
-ALLOCATE(ZMEAN_DPDZ(NLES_K))
-ALLOCATE(ZLES_MEAN_DTHDZ(NLES_K))
-!
-!
-ALLOCATE(ZU_SPEC  (NSPECTRA_NI,NSPECTRA_NJ,NSPECTRA_K))
-ALLOCATE(ZV_SPEC  (NSPECTRA_NI,NSPECTRA_NJ,NSPECTRA_K))
-ALLOCATE(ZW_SPEC  (NSPECTRA_NI,NSPECTRA_NJ,NSPECTRA_K))
-ALLOCATE(ZTH_SPEC (NSPECTRA_NI,NSPECTRA_NJ,NSPECTRA_K))
-IF (LUSERC) THEN
-  ALLOCATE(ZTHL_SPEC(NSPECTRA_NI,NSPECTRA_NJ,NSPECTRA_K))
-ELSE
-  ALLOCATE(ZTHL_SPEC(0,0,0))
-END IF
-IF (LUSERV) THEN
-  ALLOCATE(ZRV_SPEC  (NSPECTRA_NI,NSPECTRA_NJ,NSPECTRA_K))
-ELSE
-  ALLOCATE(ZRV_SPEC  (0,0,0))
-END IF
-IF (LUSERC) THEN
-  ALLOCATE(ZRC_SPEC  (NSPECTRA_NI,NSPECTRA_NJ,NSPECTRA_K))
-ELSE
-  ALLOCATE(ZRC_SPEC  (0,0,0))
-END IF
-IF (LUSERI) THEN
-  ALLOCATE(ZRI_SPEC  (NSPECTRA_NI,NSPECTRA_NJ,NSPECTRA_K))
-ELSE
-  ALLOCATE(ZRI_SPEC  (0,0,0))
-END IF
-IF (NSV>0) THEN
-  ALLOCATE(ZSV_SPEC  (NSPECTRA_NI,NSPECTRA_NJ,NSPECTRA_K,NSV))
-ELSE
-  ALLOCATE(ZSV_SPEC  (0,0,0,0))
-END IF
-!
-!
-ALLOCATE(ZEXN (IIU,IJU,SIZE(XTHT,3)))
-ALLOCATE(ZRHO (IIU,IJU,SIZE(XTHT,3)))
-ALLOCATE(ZRT  (IIU,IJU,SIZE(XTHT,3)))
-ALLOCATE(ZTHV (IIU,IJU,SIZE(XTHT,3)))
-ALLOCATE(ZTHL (IIU,IJU,SIZE(XTHT,3)))
-ALLOCATE(ZEW  (IIU,IJU,SIZE(XTHT,3)))
-ALLOCATE(ZMASSF (IIU,IJU,SIZE(XTHT,3)))
-ALLOCATE(ZTEMP (IIU,IJU,SIZE(XTHT,3)))
-ALLOCATE(ZREHU (IIU,IJU,SIZE(XTHT,3)))
-ALLOCATE(CHAMPXY1 (IIU,IJU,1))
-!
-!-------------------------------------------------------------------------------
-!
-!*      1.2  preliminary calculations
-!            ------------------------
-!
-ZEXN(:,:,:) = (XPABST/XP00)**(XRD/XCPD)
-!
-!
-!* computation of relative humidity
-ZTEMP=XTHT*ZEXN
-ZEW=EXP (XALPW -XBETAW/ZTEMP-XGAMW*ALOG(ZTEMP))
-IF (LUSERV) THEN
-  ZREHU(:,:,:)=100.*XRT(:,:,:,1)*XPABST(:,:,:)/((XRD/XRV+XRT(:,:,:,1))*ZEW(:,:,:))
-ELSE
-  ZREHU(:,:,:)=0.
-END IF
-!
-CALL THL_RT_FROM_TH_R(LUSERV, LUSERC, LUSERR,             &
-                      LUSERI, LUSERS, LUSERG, LUSERH,     &
-                      XCURRENT_L_O_EXN_CP,                &
-                      XTHT, XRT,                          &
-                      ZTHL, ZRT                           )
-!
-!* computation of density and virtual potential temperature
-!
-ZTHV=XTHT
-IF (LUSERV) ZTHV=ZTHV*(1.+XRV/XRD*XRT(:,:,:,1))/(1.+ZRT(:,:,:))
-!
-IF (CEQNSYS=='DUR') THEN
-  ZRHO=XPABST/(XRD*ZTHV*ZEXN)
-ELSE
-  ZRHO=XRHODREF*( 1. + (XCPD-XRD)/XRD*(ZEXN/XEXNREF - 1.) - (ZTHV/XTHVREF - 1.) )
-END IF
-!
-! computation of mass flux
-ZMASSF=MZM(ZRHO)*XWT
-!
-!-------------------------------------------------------------------------------
-!
-!*      2.   Vertical interpolations to LES vertical grid
-!            --------------------------------------------
-!
-!* note that velocity fields are first localized on the MASS points
-!
-!
-IF (CRAD /= 'NONE') THEN
-  CALL LES_VER_INT(   XRADEFF, ZRADEFF_LES)
-  CALL LES_VER_INT(   XSWU, ZSWU_LES)
-  CALL LES_VER_INT(   XSWD, ZSWD_LES)
-  CALL LES_VER_INT(   XLWU, ZLWU_LES)
-  CALL LES_VER_INT(   XLWD, ZLWD_LES)
-  CALL LES_VER_INT(   XDTHRADSW, ZDTHRADSW_LES)
-  CALL LES_VER_INT(   XDTHRADLW, ZDTHRADLW_LES)
-END IF
-!
-CALL LES_VER_INT( XZZ   , ZZZ_LES)
-CALL LES_VER_INT( XPABST, ZP_LES )
-CALL LES_VER_INT( XDYP, ZDP_LES )
-CALL LES_VER_INT( XTHP, ZTP_LES )
-CALL LES_VER_INT( XTR, ZTR_LES )
-CALL LES_VER_INT( XDISS, ZDISS_LES )
-CALL LES_VER_INT( XLEM, ZLM_LES )
-CALL LES_VER_INT( GZ_M_M(XPABST,XDZZ), ZDPDZ_LES )
-!
-CALL LES_VER_INT( MXF(XUT)  ,ZU_LES  )
-CALL LES_VER_INT( MYF(XVT)  ,ZV_LES  )
-CALL LES_VER_INT( MZF(XWT)  ,ZW_LES  )
-CALL LES_VER_INT( MZF(ZMASSF) ,ZMF_LES)
-CALL LES_VER_INT(     XTHT  ,ZTH_LES )
-CALL LES_VER_INT( MXF(MZF(GZ_U_UW(XUT,XDZZ))), ZDUDZ_LES )
-CALL LES_VER_INT( MYF(MZF(GZ_V_VW(XVT,XDZZ))), ZDVDZ_LES )
-CALL LES_VER_INT( GZ_W_M(XWT,XDZZ), ZDWDZ_LES )
-CALL LES_VER_INT( ZEXN, ZEXN_LES)  
-!
-CALL LES_VER_INT( GZ_M_M(XTHT,XDZZ), ZDTHDZ_LES )
-!
-CALL LES_VER_INT(ZRHO, ZRHO_LES)
-!
-IF (LUSERV) CALL LES_VER_INT(ZTHV, ZTHV_LES)
-CALL LES_VER_INT(ZTHL, ZTHL_LES)
-CALL LES_VER_INT( GZ_M_M(ZTHL,XDZZ), ZDTHLDZ_LES )
-!
-CALL LES_VER_INT(     XTKET ,ZTKE_LES)
-IRR = 0
-IF (LUSERV) THEN
-  IRR = IRR + 1
-  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRV_LES )
-  CALL LES_VER_INT(     ZRT(:,:,:)      ,ZRT_LES )
-  CALL LES_VER_INT( GZ_M_M(ZRT,XDZZ), ZDRTDZ_LES )
-  CALL LES_VER_INT(   ZREHU(:,:,:)     ,ZREHU_LES)
-END IF
-IF (LUSERC) THEN
-  IRR = IRR + 1
-  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRC_LES )
-  ALLOCATE(ZINDCLD (IIU,IJU,NLES_K))
-  ALLOCATE(ZINDCLD2(IIU,IJU,NLES_K))
-  ZINDCLD = CEILING(ZRC_LES-1.E-6)
-  ZINDCLD2 = CEILING(ZRC_LES-1.E-5)
-  CALL LES_VER_INT( XCLDFR(:,:,:)  ,ZCLDFR_LES )
-ELSE
-  ALLOCATE(ZINDCLD (0,0,0))
-  ALLOCATE(ZINDCLD2(0,0,0))
-END IF
-IF (LUSERR) THEN
-  IRR = IRR + 1
-  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRR_LES )
-  CALL LES_VER_INT(     XINPRR3D(:,:,:), ZINPRR3D_LES)
-  CALL LES_VER_INT(    XEVAP3D(:,:,:), ZEVAP3D_LES)
-  CALL LES_VER_INT( XRAINFR(:,:,:)  ,ZRAINFR_LES )
-END IF
-IF (LUSERC) THEN
-    DO JJ=1,IJU
-     DO JI=1,IIU
-      ZINDCLD2D(JI,JJ) = maxval(ZINDCLD(JI,JJ,:))
-      ZINDCLD2D2(JI,JJ)= maxval(ZINDCLD2(JI,JJ,:))
-     END DO
-    END DO
-  !* integration of rho rc
-  !!!ZLWP_LES only for cloud water           
-    ZLWP_LES(:,:)  = 0.
-      DO JK=1,NLES_K-1
-    ZLWP_LES(:,:) = ZLWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
-                      * (ZRC_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
-      END DO
-  CALL LES_MEAN_ll ( ZLWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
-                    XLES_LWP(NLES_CURRENT_TCOUNT)     )    
-!
-END IF
-
-  !!!ZRWP_LES only for rain water   
-IF (LUSERR) THEN
-   ZRWP_LES(:,:)=0.
-  DO JK=1,NLES_K-1
-    ZRWP_LES(:,:) = ZRWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
-                    * (ZRR_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
-  END DO
-  CALL LES_MEAN_ll ( ZRWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
-                    XLES_RWP(NLES_CURRENT_TCOUNT)     )
-ENDIF
-!                    
-IF (LUSERI) THEN
-  IRR = IRR + 1
-  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRI_LES )
-  ZIWP_LES(:,:)=0.
-  DO JK=1,NLES_K-1
-    ZIWP_LES(:,:) = ZIWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
-                    * (ZRI_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
-  END DO
-  CALL LES_MEAN_ll ( ZIWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
-                    XLES_IWP(NLES_CURRENT_TCOUNT)     )
-  CALL LES_VER_INT( XICEFR(:,:,:)  ,ZICEFR_LES )
-END IF
-IF (LUSERS) THEN
-  IRR = IRR + 1
-  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRS_LES )
-  ZSWP_LES(:,:)=0.
-  DO JK=1,NLES_K-1
-    ZSWP_LES(:,:) = ZSWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
-                    * (ZRS_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
-  END DO
-  CALL LES_MEAN_ll ( ZSWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
-                    XLES_SWP(NLES_CURRENT_TCOUNT)     )
-END IF
-IF (LUSERG) THEN
-  IRR = IRR + 1
-  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRG_LES )
-  ZGWP_LES(:,:)=0.
-  DO JK=1,NLES_K-1
-    ZGWP_LES(:,:) = ZGWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
-                    * (ZRG_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
-  END DO
-  CALL LES_MEAN_ll ( ZGWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
-                    XLES_GWP(NLES_CURRENT_TCOUNT)     )
-END IF
-IF (LUSERH) THEN
-  IRR = IRR + 1
-  CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRH_LES )
-  ZHWP_LES(:,:)=0.
-  DO JK=1,NLES_K-1
-    ZHWP_LES(:,:) = ZHWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
-                    * (ZRH_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
-  END DO
-  CALL LES_MEAN_ll ( ZHWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
-                    XLES_HWP(NLES_CURRENT_TCOUNT)     )
-END IF
-IF (NSV>0) THEN
-  DO JSV=1,NSV
-    CALL LES_VER_INT(  XSVT(:,:,:,JSV), ZSV_LES(:,:,:,JSV) )
-    CALL LES_VER_INT( GZ_M_M(XSVT(:,:,:,JSV),XDZZ), ZDSVDZ_LES(:,:,:,JSV) )
-  END DO
-END IF
-!
-!*mean sw and lw fluxes  
-  CALL LES_MEAN_ll ( ZSWU_LES, LLES_CURRENT_CART_MASK,               &
-                    XLES_SWU(:,NLES_CURRENT_TCOUNT)     )
-  CALL LES_MEAN_ll ( ZSWD_LES, LLES_CURRENT_CART_MASK,               &
-                    XLES_SWD(:,NLES_CURRENT_TCOUNT)     )
-  CALL LES_MEAN_ll ( ZLWU_LES, LLES_CURRENT_CART_MASK,               &
-                    XLES_LWU(:,NLES_CURRENT_TCOUNT)     )
-  CALL LES_MEAN_ll ( ZLWD_LES, LLES_CURRENT_CART_MASK,               &
-                    XLES_LWD(:,NLES_CURRENT_TCOUNT)     )
-  CALL LES_MEAN_ll ( ZDTHRADSW_LES, LLES_CURRENT_CART_MASK,          &
-                    XLES_DTHRADSW(:,NLES_CURRENT_TCOUNT)     )
-  CALL LES_MEAN_ll ( ZDTHRADLW_LES, LLES_CURRENT_CART_MASK,          &
-                    XLES_DTHRADLW(:,NLES_CURRENT_TCOUNT)     )
-  CALL LES_MEAN_ll ( ZRADEFF_LES, LLES_CURRENT_CART_MASK,             &
-                    XLES_RADEFF(:,NLES_CURRENT_TCOUNT)     )
-!* mean vertical profiles on the LES grid
-!
-  CALL LES_MEAN_ll ( ZU_LES, LLES_CURRENT_CART_MASK,                   &
-                     XLES_MEAN_U(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  CALL LES_MEAN_ll ( ZV_LES, LLES_CURRENT_CART_MASK,                   &
-                     XLES_MEAN_V(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  CALL LES_MEAN_ll ( ZW_LES, LLES_CURRENT_CART_MASK,                   &
-                     XLES_MEAN_W(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  CALL LES_MEAN_ll ( ZP_LES, LLES_CURRENT_CART_MASK,                   &
-                     XLES_MEAN_P(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  CALL LES_MEAN_ll ( ZDP_LES, LLES_CURRENT_CART_MASK,                   &
-                     XLES_MEAN_DP(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  CALL LES_MEAN_ll ( ZTP_LES, LLES_CURRENT_CART_MASK,                   &
-                     XLES_MEAN_TP(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  CALL LES_MEAN_ll ( ZTR_LES, LLES_CURRENT_CART_MASK,                   &
-                     XLES_MEAN_TR(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  CALL LES_MEAN_ll ( ZDISS_LES, LLES_CURRENT_CART_MASK,                   &
-                     XLES_MEAN_DISS(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  CALL LES_MEAN_ll ( ZLM_LES, LLES_CURRENT_CART_MASK,                   &
-                     XLES_MEAN_LM(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  CALL LES_MEAN_ll ( ZRHO_LES, LLES_CURRENT_CART_MASK,                 &
-                     XLES_MEAN_RHO(:,NLES_CURRENT_TCOUNT,1)   )
-!
-  CALL LES_MEAN_ll ( ZMF_LES, LLES_CURRENT_CART_MASK,                  &
-                     XLES_MEAN_Mf(:,NLES_CURRENT_TCOUNT,1)     )                             
-!
-  CALL LES_MEAN_ll ( ZTH_LES*ZEXN_LES, LLES_CURRENT_CART_MASK,         &
-                     ZWORK1DT(:)                                 )                    
-!                     
-!computation of es
-  ZWORK1D(:)=EXP(XALPW -                                          &
-                  XBETAW/ZWORK1DT(:)         &
-                  -XGAMW*ALOG(ZWORK1DT(:)))
-!computation of qs
-
-  IF (LUSERV)                                                          &
-  XLES_MEAN_Qs(:,NLES_CURRENT_TCOUNT,1)=XRD/XRV*ZWORK1D(:)/        &
-  (XLES_MEAN_P(:,NLES_CURRENT_TCOUNT,1)-ZWORK1D(:)*(1-XRD/XRV))   
-! qs is determined from the temperature average over the current_mask
-!
-  CALL LES_MEAN_ll ( ZTH_LES, LLES_CURRENT_CART_MASK,                  &
-                     XLES_MEAN_Th(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  IF (LUSERV)                                                          &
-  CALL LES_MEAN_ll ( ZTHV_LES, LLES_CURRENT_CART_MASK,                 &
-                     XLES_MEAN_Thv(:,NLES_CURRENT_TCOUNT,1)    )
-!
-  IF (LUSERC)                                                       &
-  CALL LES_MEAN_ll ( ZTHL_LES, LLES_CURRENT_CART_MASK,              &
-                     XLES_MEAN_Thl(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  IF (LUSERC)                                                       &
-  CALL LES_MEAN_ll ( ZRT_LES, LLES_CURRENT_CART_MASK,               &
-                     XLES_MEAN_Rt(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  IF (LUSERV) &
-  CALL LES_MEAN_ll ( ZRV_LES, LLES_CURRENT_CART_MASK,               &
-                     XLES_MEAN_Rv(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  IF (LUSERV) &
-  CALL LES_MEAN_ll ( ZREHU_LES, LLES_CURRENT_CART_MASK,             &
-                   XLES_MEAN_Rehu(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  IF (LUSERC) &
-  CALL LES_MEAN_ll ( ZRC_LES, LLES_CURRENT_CART_MASK,               &
-                    XLES_MEAN_Rc(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  IF (LUSERC) THEN 
-     CALL LES_MEAN_ll ( ZINDCLD, LLES_CURRENT_CART_MASK,               &
-                    XLES_MEAN_INDCf(:,NLES_CURRENT_TCOUNT,1)     )
-     CALL LES_MEAN_ll ( ZINDCLD2, LLES_CURRENT_CART_MASK,              &
-                    XLES_MEAN_INDCf2(:,NLES_CURRENT_TCOUNT,1)    )
-     CALL LES_MEAN_ll ( ZCLDFR_LES, LLES_CURRENT_CART_MASK,            &
-                    XLES_MEAN_Cf(:,NLES_CURRENT_TCOUNT,1)        )
-!
-!* cf total
-     CALL LES_MEAN_ll( ZINDCLD2D, LLES_CURRENT_CART_MASK(:,:,1) ,      & 
-                   XLES_CFtot(NLES_CURRENT_TCOUNT)      ) 
-     CALL LES_MEAN_ll( ZINDCLD2D2, LLES_CURRENT_CART_MASK(:,:,1),      &
-                    XLES_CF2tot(NLES_CURRENT_TCOUNT)    )
-  ENDIF
-!
-  IF (LUSERR) THEN
-
-    CALL LES_MEAN_ll ( XINPRR, LLES_CURRENT_CART_MASK(:,:,1),    &
-                     XLES_INPRR(NLES_CURRENT_TCOUNT)    )
-    ZINPRRm=0.
-    ZCOUNT=0.
-    ZINDCLD2D(:,:)=0.
-    DO JJ=1,IJU
-     DO JI=1,IIU
-       IF (ZRR_LES(JI,JJ,1) .GT. 1.E-6) ZINPRRm = ZINPRRm+XINPRR(JI,JJ)
-       IF (ZRR_LES(JI,JJ,1) .GT. 1.E-6) ZINDCLD2D(JI,JJ)=1.
-       IF (ZRR_LES(JI,JJ,1) .GT. 1.E-6) ZCOUNT=ZCOUNT+1.
-     END DO
-    END DO                 
-    IF (ZCOUNT .GE. 1) ZINPRRm=ZINPRRm/ZCOUNT
-    XLES_RAIN_INPRR(NLES_CURRENT_TCOUNT)=ZINPRRm
-    CALL  LES_MEAN_ll ( ZINDCLD2D, LLES_CURRENT_CART_MASK(:,:,1),  &
-                     XLES_PRECFR(NLES_CURRENT_TCOUNT)         )   
-    CALL LES_MEAN_ll ( ZINPRR3D_LES, LLES_CURRENT_CART_MASK,  &
-                     XLES_INPRR3D(:,NLES_CURRENT_TCOUNT,1)  )
-    CALL LES_MEAN_ll ( ZEVAP3D_LES, LLES_CURRENT_CART_MASK,  &
-                     XLES_EVAP3D(:,NLES_CURRENT_TCOUNT,1)   )         
-    DO JK=1,NLES_K
-     CHAMPXY1(:,:,1)=ZINPRR3D_LES(:,:,JK)                
-     XLES_MAX_INPRR3D(JK,NLES_CURRENT_TCOUNT,1)=MAX_ll (CHAMPXY1,IINFO_ll, &
-                         IIA_ll,IJA_ll,1,IIU_ll,IJU_ll,1)
-    END DO
-!
-
-!   conversion de m/s en mm/day
- XLES_RAIN_INPRR(NLES_CURRENT_TCOUNT)=XLES_RAIN_INPRR(NLES_CURRENT_TCOUNT)*3.6E6*24.
-    XLES_INPRR(NLES_CURRENT_TCOUNT)=XLES_INPRR(NLES_CURRENT_TCOUNT)*3.6E6*24.
-
-    CALL LES_MEAN_ll ( XACPRR, LLES_CURRENT_CART_MASK(:,:,1),    &
-                     XLES_ACPRR(NLES_CURRENT_TCOUNT)    )
-!   conversion de m en mm
-    XLES_ACPRR(NLES_CURRENT_TCOUNT)=XLES_ACPRR(NLES_CURRENT_TCOUNT)*1000.
-    CALL LES_MEAN_ll ( ZRAINFR_LES, LLES_CURRENT_CART_MASK,            &
-                    XLES_MEAN_RF(:,NLES_CURRENT_TCOUNT,1)        )
-
-  ENDIF
-!
-  IF (LUSERC ) THEN
-    IF (( CCLOUD(1:3) == 'ICE'                                   .AND.LSEDIC) .OR. &
-    ((CCLOUD=='C2R2' .OR. CCLOUD=='C3R5' .OR. CCLOUD=='KHKO').AND.LSEDC)  .OR. &
-    ( CCLOUD=='LIMA'                                         .AND.MSEDC))  THEN
-      CALL LES_MEAN_ll ( XINPRC, LLES_CURRENT_CART_MASK(:,:,1),    &
-                     XLES_INPRC(NLES_CURRENT_TCOUNT)    )
-!     conversion from m/s to mm/day
-      XLES_INPRC(NLES_CURRENT_TCOUNT)=XLES_INPRC(NLES_CURRENT_TCOUNT)*3.6E6*24.
-    ENDIF
-    IF ( (((CCLOUD == 'KHKO') .OR.(CCLOUD == 'C2R2')) .AND. LDEPOC) &
-         .OR. ( (CCLOUD(1:3) == 'ICE') .AND. LDEPOSC) ) THEN
-        CALL LES_MEAN_ll ( XINDEP, LLES_CURRENT_CART_MASK(:,:,1),    &
-                     XLES_INDEP(NLES_CURRENT_TCOUNT)    )
-!       conversion from m/s to mm/day
-        XLES_INDEP(NLES_CURRENT_TCOUNT)=XLES_INDEP(NLES_CURRENT_TCOUNT)*3.6E6*24.
-    ENDIF
-  ENDIF
-!
-  IF (LUSERR) &
-  CALL LES_MEAN_ll ( ZRR_LES, LLES_CURRENT_CART_MASK,               &
-                     XLES_MEAN_Rr(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  IF (LUSERI) &
-  CALL LES_MEAN_ll ( ZRI_LES, LLES_CURRENT_CART_MASK,               &
-                     XLES_MEAN_Ri(:,NLES_CURRENT_TCOUNT,1)     )
-  CALL LES_MEAN_ll ( ZICEFR_LES, LLES_CURRENT_CART_MASK,            &
-                    XLES_MEAN_If(:,NLES_CURRENT_TCOUNT,1)        )
-!
-  IF (LUSERS) &
-  CALL LES_MEAN_ll ( ZRS_LES, LLES_CURRENT_CART_MASK,               &
-                   XLES_MEAN_Rs(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  IF (LUSERG) &
-  CALL LES_MEAN_ll ( ZRG_LES, LLES_CURRENT_CART_MASK,               &
-                   XLES_MEAN_Rg(:,NLES_CURRENT_TCOUNT,1)     )
-!
-  IF (LUSERH) &
-  CALL LES_MEAN_ll ( ZRH_LES, LLES_CURRENT_CART_MASK,               &
-                     XLES_MEAN_Rh(:,NLES_CURRENT_TCOUNT,1)   )
-!
-  DO JSV=1,NSV
-    CALL LES_MEAN_ll ( ZSV_LES(:,:,:,JSV), LLES_CURRENT_CART_MASK,   &
-                       XLES_MEAN_Sv(:,NLES_CURRENT_TCOUNT,1,JSV)     )
-  END DO
-!
-  CALL LES_MEAN_ll ( ZDPDZ_LES, LLES_CURRENT_CART_MASK,      &
-                     ZMEAN_DPDZ(:)                           )
-  CALL LES_MEAN_ll ( ZDTHDZ_LES, LLES_CURRENT_CART_MASK,      &
-                     ZLES_MEAN_DTHDZ(:)                      )
-                     
-!
-!* build the 3D resolved turbulent fields by removing the mean field
-!
-DO JJ=1,IJU
-  DO JI=1,IIU
-    ZP_ANOM(JI,JJ,:) = ZP_LES(JI,JJ,:) - XLES_MEAN_P(:,NLES_CURRENT_TCOUNT,1)
-    ZDPDZ_ANOM(JI,JJ,:) = ZDPDZ_LES(JI,JJ,:) - ZMEAN_DPDZ(:)
-    ZTH_ANOM(JI,JJ,:) = ZTH_LES(JI,JJ,:) - XLES_MEAN_Th(:,NLES_CURRENT_TCOUNT,1)
-    ZRHO_ANOM(JI,JJ,:) = ZRHO_LES(JI,JJ,:) - XLES_MEAN_Rho(:,NLES_CURRENT_TCOUNT,1)
-    IF (LUSERV) THEN
-      ZTHV_ANOM(JI,JJ,:) = ZTHV_LES(JI,JJ,:) - XLES_MEAN_Thv(:,NLES_CURRENT_TCOUNT,1)
-      ZRV_ANOM(JI,JJ,:) = ZRV_LES(JI,JJ,:) - XLES_MEAN_Rv(:,NLES_CURRENT_TCOUNT,1)
-    END IF
-    IF (LUSERC) THEN
-      ZRC_ANOM(JI,JJ,:) = ZRC_LES(JI,JJ,:) - XLES_MEAN_Rc(:,NLES_CURRENT_TCOUNT,1)
-      ZLWP_ANOM(JI,JJ) =ZLWP_LES(JI,JJ)-XLES_LWP(NLES_CURRENT_TCOUNT)
-    END IF
-    IF (LUSERI) THEN
-      ZRI_ANOM(JI,JJ,:) = ZRI_LES(JI,JJ,:) - XLES_MEAN_Ri(:,NLES_CURRENT_TCOUNT,1)
-    END IF
-    IF (LUSERR) THEN
-      ZRR_ANOM(JI,JJ,:) = ZRR_LES(JI,JJ,:) - XLES_MEAN_Rr(:,NLES_CURRENT_TCOUNT,1)
-    END IF
-  END DO
-END DO
-!
-!
-!--------------------------------------------------------------------------------
-!
-!* vertical grid computed at first LES call for this model
-!
-IF (NLES_CURRENT_TCOUNT==1) THEN
-  ALLOCATE(ZZ_LES    (IIU,IJU,NLES_K))
-  CALL LES_VER_INT( MZF(XZZ)  ,ZZ_LES   )
-  CALL LES_MEAN_ll ( ZZ_LES, LLES_CURRENT_CART_MASK, XLES_Z  )
-  DEALLOCATE(ZZ_LES)
-  CALL LES_MEAN_ll ( XZS,    LLES_CURRENT_CART_MASK(:,:,1), XLES_ZS )
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      3.   Vertical interpolations to SECTRA computations vertical grid
-!            ------------------------------------------------------------
-!
-!* note that velocity fields are previously localized on the MASS points
-!
-CALL SPEC_VER_INT(IMI, MXF(XUT)  ,ZU_SPEC  )
-CALL SPEC_VER_INT(IMI, MYF(XVT)  ,ZV_SPEC  )
-CALL SPEC_VER_INT(IMI, MZF(XWT)  ,ZW_SPEC  )
-CALL SPEC_VER_INT(IMI,     XTHT  ,ZTH_SPEC )
-IF (LUSERC) CALL SPEC_VER_INT(IMI,     ZTHL  ,ZTHL_SPEC)
-IRR = 0
-IF (LUSERV) THEN
-  IRR = IRR + 1
-  CALL SPEC_VER_INT(IMI,     XRT(:,:,:,IRR)  ,ZRV_SPEC )
-END IF
-IF (LUSERC) THEN
-  IRR = IRR + 1
-  CALL SPEC_VER_INT(IMI,     XRT(:,:,:,IRR)  ,ZRC_SPEC )
-END IF
-IF (LUSERR) THEN
-  IRR = IRR + 1
-END IF
-IF (LUSERI) THEN
-  IRR = IRR + 1
-  CALL SPEC_VER_INT(IMI,     XRT(:,:,:,IRR)  ,ZRI_SPEC )
-END IF
-IF (NSV>0) THEN
-  DO JSV=1,NSV
-    CALL SPEC_VER_INT(IMI,  XSVT(:,:,:,JSV), ZSV_SPEC(:,:,:,JSV) )
-  END DO
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      4.   Call to LES computations on cartesian (sub-)domain
-!            --------------------------------------------------
-!
-IMASK=1
-!
-CALL LES(LLES_CURRENT_CART_MASK)
-!
-!-------------------------------------------------------------------------------
-!
-!*      5.   Call to LES computations on nebulosity mask
-!            -------------------------------------------
-!
-IF (LLES_NEB_MASK) THEN
-  IMASK=IMASK+1
-  CALL LES(LLES_CURRENT_NEB_MASK .AND. LLES_CURRENT_CART_MASK)
-!
-  IMASK=IMASK+1
-  CALL LES((.NOT. LLES_CURRENT_NEB_MASK) .AND. LLES_CURRENT_CART_MASK)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      6.   Call to LES computations on cloud core mask
-!            -------------------------------------------
-!
-IF (LLES_CORE_MASK) THEN
-  IMASK=IMASK+1
-  CALL LES(LLES_CURRENT_CORE_MASK .AND. LLES_CURRENT_CART_MASK)
-!
-  IMASK=IMASK+1
-  CALL LES((.NOT. LLES_CURRENT_CORE_MASK) .AND. LLES_CURRENT_CART_MASK)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      7.   Call to LES computations on user mask
-!            -------------------------------------
-!
-IF (LLES_MY_MASK) THEN
- DO JI=1,NLES_MASKS_USER
-  IMASK=IMASK+1
-  CALL LES(LLES_CURRENT_MY_MASKS(:,:,:,JI))
- END DO
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      7b.  Call to LES computations on conditional sampling mask
-!            -----------------------------------------------------
-!
-IF (LLES_CS_MASK) THEN
-  IMASK=IMASK+1
-  CALL LES(LLES_CURRENT_CS1_MASK)
-  IMASK=IMASK+1
-  CALL LES(LLES_CURRENT_CS2_MASK)
-  IMASK=IMASK+1
-  CALL LES(LLES_CURRENT_CS3_MASK)
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*      8.   budgets
-!            -------
-!
-!*      8.1  tendencies
-!            ----------
-!
-!
-!*      8.2  dynamical production, transport and mean advection
-!            --------------------------------------------------
-!
-ALLOCATE(ZLES_MEAN_DRtDZ(NLES_K))
-ALLOCATE(ZLES_MEAN_DSVDZ(NLES_K,NSV))
-!
-IF (LUSERV) THEN
-  ZLES_MEAN_DRtDZ(:) = XLES_MEAN_DRtDZ(:,NLES_CURRENT_TCOUNT,1)
-ELSE
-  ZLES_MEAN_DRtDZ(:) = XUNDEF
-END IF
-!
-ZLES_MEAN_DSVDZ = 0.
-DO JSV=1,NSV
-  ZLES_MEAN_DSvDZ(:,JSV) = XLES_MEAN_DSvDZ(:,NLES_CURRENT_TCOUNT,1,JSV)
-END DO
-!
-CALL LES_RES_TR(LUSERV,                                    &
-                XLES_MEAN_DUDZ(:,NLES_CURRENT_TCOUNT,1),   &
-                XLES_MEAN_DVDZ(:,NLES_CURRENT_TCOUNT,1),   &
-                XLES_MEAN_DWDZ(:,NLES_CURRENT_TCOUNT,1),   &
-                XLES_MEAN_DThlDZ(:,NLES_CURRENT_TCOUNT,1), &
-                ZLES_MEAN_DRtDZ(:),                        &
-                ZLES_MEAN_DSvDZ(:,:)                       )
-!
-DEALLOCATE(ZLES_MEAN_DRtDZ)
-DEALLOCATE(ZLES_MEAN_DSVDZ)
-!
-CALL LES_BUDGET_TEND_n
-!*      8.3  end of LES budgets computations
-!            -------------------------------
-!
-DO JLOOP=1,NLES_TOT
-  XLES_BU_RES_KE   (:,NLES_CURRENT_TCOUNT,JLOOP) = X_LES_BU_RES_KE   (:,JLOOP)
-  XLES_BU_RES_WThl (:,NLES_CURRENT_TCOUNT,JLOOP) = X_LES_BU_RES_WThl (:,JLOOP)
-  XLES_BU_RES_Thl2 (:,NLES_CURRENT_TCOUNT,JLOOP) = X_LES_BU_RES_Thl2 (:,JLOOP)
-  XLES_BU_SBG_Tke  (:,NLES_CURRENT_TCOUNT,JLOOP) = X_LES_BU_SBG_Tke  (:,JLOOP)
-  IF (LUSERV) THEN
-    XLES_BU_RES_WRt  (:,NLES_CURRENT_TCOUNT,JLOOP) = X_LES_BU_RES_WRt  (:,JLOOP)
-    XLES_BU_RES_Rt2  (:,NLES_CURRENT_TCOUNT,JLOOP) = X_LES_BU_RES_Rt2  (:,JLOOP)
-    XLES_BU_RES_ThlRt(:,NLES_CURRENT_TCOUNT,JLOOP) = X_LES_BU_RES_ThlRt(:,JLOOP)
-  END IF
-  DO JSV=1,NSV
-    XLES_BU_RES_Sv2  (:,NLES_CURRENT_TCOUNT,JLOOP,JSV) = X_LES_BU_RES_Sv2  (:,JLOOP,JSV)
-    XLES_BU_RES_WSv  (:,NLES_CURRENT_TCOUNT,JLOOP,JSV) = X_LES_BU_RES_WSv  (:,JLOOP,JSV)
-  END DO
-END DO
-!
-!-------------------------------------------------------------------------------
-!
-!*      9.   Deallocations
-!            -------------
-!
-!*      9.1  local variables
-!            ---------------
-!
-DEALLOCATE(ZEXN      )
-DEALLOCATE(ZTHL)
-DEALLOCATE(ZRT       )
-DEALLOCATE(ZTHV      )
-DEALLOCATE(ZRHO      )
-DEALLOCATE(ZEW       )
-
-DEALLOCATE(ZINDCLD   )
-DEALLOCATE(ZINDCLD2  )
-DEALLOCATE(ZINDCLD2D )
-DEALLOCATE(ZINDCLD2D2)
-DEALLOCATE(ZCLDFR_LES)
-DEALLOCATE(ZICEFR_LES)
-DEALLOCATE(ZRAINFR_LES)
-DEALLOCATE(ZMASSF    )  
-DEALLOCATE(ZTEMP     )
-DEALLOCATE(ZREHU     )
-DEALLOCATE(CHAMPXY1  )
-!
-DEALLOCATE(ZU_LES)
-DEALLOCATE(ZV_LES)
-DEALLOCATE(ZW_LES)
-DEALLOCATE(ZTHL_LES)
-DEALLOCATE(ZRT_LES)
-DEALLOCATE(ZSV_LES)
-DEALLOCATE(ZP_LES   )
-DEALLOCATE(ZDP_LES   )
-DEALLOCATE(ZTP_LES   )
-DEALLOCATE(ZTR_LES   )
-DEALLOCATE(ZDISS_LES   )
-DEALLOCATE(ZLM_LES   )
-DEALLOCATE(ZDPDZ_LES)
-DEALLOCATE(ZLWP_ANOM)
-DEALLOCATE(ZWORK2D)
-DEALLOCATE(ZWORK1D)
-DEALLOCATE(ZWORK1DT)
-DEALLOCATE(ZMAXWRR2D)
-DEALLOCATE(ZDTHLDZ_LES)
-DEALLOCATE(ZDTHDZ_LES)
-DEALLOCATE(ZDRTDZ_LES)
-DEALLOCATE(ZDSVDZ_LES)
-DEALLOCATE(ZDUDZ_LES)
-DEALLOCATE(ZDVDZ_LES)
-DEALLOCATE(ZDWDZ_LES)
-DEALLOCATE(ZRHO_LES )
-DEALLOCATE(ZEXN_LES )
-DEALLOCATE(ZTH_LES  )
-DEALLOCATE(ZMF_LES  )
-DEALLOCATE(ZTHV_LES )
-DEALLOCATE(ZTKE_LES )
-DEALLOCATE(ZKE_LES )
-DEALLOCATE(ZTKET_LES)
-DEALLOCATE(ZRV_LES  )
-DEALLOCATE(ZREHU_LES  )
-DEALLOCATE(ZRC_LES  )
-DEALLOCATE(ZRR_LES  )
-DEALLOCATE(ZZZ_LES)
-DEALLOCATE(ZLWP_LES )
-DEALLOCATE(ZRWP_LES )
-DEALLOCATE(ZIWP_LES )
-DEALLOCATE(ZSWP_LES )
-DEALLOCATE(ZGWP_LES )
-DEALLOCATE(ZHWP_LES )
-DEALLOCATE(ZINPRR3D_LES)
-DEALLOCATE(ZEVAP3D_LES)
-DEALLOCATE(ZRI_LES  )
-DEALLOCATE(ZRS_LES  )
-DEALLOCATE(ZRG_LES  )
-DEALLOCATE(ZRH_LES  )
-DEALLOCATE(ZP_ANOM  )
-DEALLOCATE(ZRHO_ANOM)
-DEALLOCATE(ZTH_ANOM )
-DEALLOCATE(ZTHV_ANOM)
-DEALLOCATE(ZRV_ANOM )
-DEALLOCATE(ZRC_ANOM )
-DEALLOCATE(ZRI_ANOM )
-DEALLOCATE(ZRR_ANOM )
-DEALLOCATE(ZDPDZ_ANOM)
-DEALLOCATE(ZMEAN_DPDZ)
-DEALLOCATE(ZLES_MEAN_DTHDZ)
-!
-DEALLOCATE(ZU_SPEC   )
-DEALLOCATE(ZV_SPEC   )
-DEALLOCATE(ZW_SPEC   )
-DEALLOCATE(ZTH_SPEC  )
-DEALLOCATE(ZTHL_SPEC )
-DEALLOCATE(ZRV_SPEC  )
-DEALLOCATE(ZRC_SPEC  )
-DEALLOCATE(ZRI_SPEC  )
-DEALLOCATE(ZSV_SPEC  )
-!
-DEALLOCATE(ZRADEFF_LES  )
-DEALLOCATE(ZSWU_LES  )
-DEALLOCATE(ZSWD_LES  )
-DEALLOCATE(ZLWD_LES  )
-DEALLOCATE(ZLWU_LES  )
-DEALLOCATE(ZDTHRADSW_LES  )
-DEALLOCATE(ZDTHRADLW_LES  )
-!
-!*      9.2  current time-step LES masks (in MODD_LES)
-!            ---------------------------
-!
-CALL LES_DEALLOCATE('LLES_CURRENT_CART_MASK')
-IF (LLES_NEB_MASK)     CALL LES_DEALLOCATE('LLES_CURRENT_NEB_MASK')
-IF (LLES_CORE_MASK)    CALL LES_DEALLOCATE('LLES_CURRENT_CORE_MASK')
-IF (LLES_MY_MASK)   THEN
-   CALL LES_DEALLOCATE('LLES_CURRENT_MY_MASKS')
-END IF
-IF (LLES_CS_MASK)   THEN
-    CALL LES_DEALLOCATE('LLES_CURRENT_CS1_MASK')
-    IF (NSV_CS >= 2) CALL LES_DEALLOCATE('LLES_CURRENT_CS2_MASK')
-    IF (NSV_CS == 3) CALL LES_DEALLOCATE('LLES_CURRENT_CS3_MASK')
-END IF
-!
-!
-!*      9.3  variables in MODD_LES_BUDGET
-!            ----------------------------
-!
-
-DEALLOCATE(XU_ANOM  )
-DEALLOCATE(XV_ANOM  )
-DEALLOCATE(XW_ANOM  )
-DEALLOCATE(XTHL_ANOM)
-DEALLOCATE(XRT_ANOM )
-DEALLOCATE(XSV_ANOM )
-!
-DEALLOCATE(XCURRENT_L_O_EXN_CP)
-DEALLOCATE(XCURRENT_RHODJ     )
-!
-DEALLOCATE(XCURRENT_RUS  )
-DEALLOCATE(XCURRENT_RVS  )
-DEALLOCATE(XCURRENT_RWS  )
-DEALLOCATE(XCURRENT_RTHS )
-DEALLOCATE(XCURRENT_RTKES)
-DEALLOCATE(XCURRENT_RRS  )
-DEALLOCATE(XCURRENT_RSVS )
-DEALLOCATE(XCURRENT_RTHLS)
-DEALLOCATE(XCURRENT_RRTS )
-
-DEALLOCATE(X_LES_BU_RES_KE   )
-DEALLOCATE(X_LES_BU_RES_WThl )
-DEALLOCATE(X_LES_BU_RES_Thl2 )
-DEALLOCATE(X_LES_BU_RES_WRt  )
-DEALLOCATE(X_LES_BU_RES_Rt2  )
-DEALLOCATE(X_LES_BU_RES_ThlRt)
-DEALLOCATE(X_LES_BU_RES_Sv2  )
-DEALLOCATE(X_LES_BU_RES_WSv  )
-DEALLOCATE(X_LES_BU_SBG_TKE  )
-!-------------------------------------------------------------------------------
-!
-!*      10.  end of LES computations for this time-step
-!            ------------------------------------------
-!
-LLES_CALL=.FALSE.
-CALL BUDGET_FLAGS(LUSERV, LUSERC, LUSERR,         &
-                  LUSERI, LUSERS, LUSERG, LUSERH  )
-!
-!-------------------------------------------------------------------------------
-!
-CONTAINS
-!
-!     ##########################################################################
-      SUBROUTINE  LES(OMASK)
-!     ##########################################################################
-!
-!
-!!****  *LES* computes the current time-step LES diagnostics for one mask.
-!!
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      V. Masson
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         07/02/00
-!!
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_PARAMETERS
-!
-USE MODI_LES_FLUX_ll
-USE MODI_LES_3RD_MOMENT_ll
-USE MODI_LES_4TH_MOMENT_ll
-USE MODI_LES_MEAN_1PROC
-USE MODI_LES_MEAN_MPROC
-USE MODI_LES_PDF_ll
-!
-USE MODI_LES_HOR_CORR
-!
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-LOGICAL, DIMENSION(:,:,:),   INTENT(IN) :: OMASK     ! 2D mask for computations
-!
-!
-!
-!       0.2  declaration of local variables
-!
-INTEGER :: JSV      ! scalar variables counter
-INTEGER :: JI
-INTEGER :: JK       ! vertical loop counter
-INTEGER :: JPDF     ! pdf counter
-!
-LOGICAL, DIMENSION(SIZE(ZW_LES,1),SIZE(ZW_LES,2),SIZE(ZW_LES,3)) :: GUPDRAFT_MASK
-LOGICAL, DIMENSION(SIZE(ZW_LES,1),SIZE(ZW_LES,2),SIZE(ZW_LES,3)) :: GDOWNDRAFT_MASK
-REAL,    DIMENSION(SIZE(ZW_LES,1),SIZE(ZW_LES,2),SIZE(ZW_LES,3)) :: ZUPDRAFT
-REAL,    DIMENSION(SIZE(ZW_LES,1),SIZE(ZW_LES,2),SIZE(ZW_LES,3)) :: ZDOWNDRAFT
-REAL,    DIMENSION(SIZE(ZW_LES,1),SIZE(ZW_LES,2),SIZE(ZW_LES,3)) :: ZW_UP
-REAL,    DIMENSION(SIZE(ZW_LES,1),SIZE(ZW_LES,2),SIZE(ZW_LES,3)) :: ZWORK_LES
-!
-INTEGER, DIMENSION(SIZE(ZW_LES,3)) :: IAVG_PTS
-INTEGER, DIMENSION(SIZE(ZW_LES,3)) :: IUND_PTS
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZAVG
-!
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_RESOLVED_U3
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_RESOLVED_UV2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_RESOLVED_UW2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_RESOLVED_VU2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_RESOLVED_V3
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_RESOLVED_VW2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_RESOLVED_WU2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_RESOLVED_WV2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_UPDRAFT_U2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_UPDRAFT_V2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_UPDRAFT_W2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_DOWNDRAFT_U2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_DOWNDRAFT_V2
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZLES_DOWNDRAFT_W2
-REAL,    DIMENSION(SIZE(ZW_LES,3),NPDF) :: ZPDF
-!
-INTEGER, DIMENSION(1)               :: IKMIN_FLUX ! vertical index of min. W'thl'
-INTEGER, DIMENSION(1)               :: IKMAX_TH !vertical index maxdth
-INTEGER, DIMENSION(1)               :: IKMAX_CF   ! vertical index of max. Cf
-!
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZKE_TOT    ! total turbulent kinetic energy
-REAL                               :: ZINT_KE_TOT! integral of KE_TOT
-REAL                               :: ZINT_RHOKE! integral of RHO*KE
-REAL                               :: ZFRIC_SURF ! surface friction
-REAL,    DIMENSION(SIZE(ZW_LES,3)) :: ZFRIC_LES  ! friction at all LES levels
-!
-!-------------------------------------------------------------------------------
-!
-!       1.   local diagnostics (for any mask type)
-!            -----------------
-!
-!
-!       1.2  Number of points used for averaging on current processor
-!            --------------------------------------------------------
-!
-!* to be sure to be coherent with other computations,
-!  a field on LES vertical grid (and horizontal mass point grid) is used.
-!  This information is necessary for the subgrid fluxes computations, because
-!  half of the work is already done, but the number of averaging points was
-!  not kept.
-!
-CALL LES_MEAN_1PROC ( XW_ANOM, OMASK,                              &
-                      ZAVG(:),                                     &
-                      IAVG_PTS(:),                                 &
-                      IUND_PTS(:)                                  )
-!
-!
-!       1.3  Number of points used for averaging on all processor
-!            ----------------------------------------------------
-!
-CALL LES_MEAN_ll ( XW_ANOM, OMASK,                                  &
-                   ZAVG(:),                                         &
-                   NLES_AVG_PTS_ll(:,NLES_CURRENT_TCOUNT,IMASK),    &
-                   NLES_UND_PTS_ll(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!
-!       1.4  Mean quantities
-!            ---------------
-!
-IF (LLES_MEAN .AND. IMASK > 1) THEN
-!
-!* horizontal wind velocities
-!
-  CALL LES_MEAN_ll ( ZU_LES, OMASK,                               &
-                     XLES_MEAN_U(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-  CALL LES_MEAN_ll ( ZV_LES, OMASK,                               &
-                     XLES_MEAN_V(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* vertical wind velocity
-!
-  CALL LES_MEAN_ll ( ZW_LES, OMASK,                               &
-                     XLES_MEAN_W(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* pressure
-!
-  CALL LES_MEAN_ll ( ZP_LES, OMASK,                               &
-                     XLES_MEAN_P(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* dynamical production TKE
-!
-  CALL LES_MEAN_ll ( ZDP_LES, OMASK,                               &
-                     XLES_MEAN_DP(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* thermal production TKE
-!
-  CALL LES_MEAN_ll ( ZTP_LES, OMASK,                               &
-                     XLES_MEAN_TP(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* transport TKE
-!
-  CALL LES_MEAN_ll ( ZTR_LES, OMASK,                               &
-                     XLES_MEAN_TR(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* dissipation TKE
-!
-  CALL LES_MEAN_ll ( ZDISS_LES, OMASK,                               &
-                     XLES_MEAN_DISS(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* mixing length            
-!
-  CALL LES_MEAN_ll ( ZLM_LES, OMASK,                               &
-                     XLES_MEAN_LM(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* density
-!
-  CALL LES_MEAN_ll ( ZRHO_LES, OMASK,                             &
-                     XLES_MEAN_RHO(:,NLES_CURRENT_TCOUNT,IMASK)   )
-!
-!
-!* potential temperature
-!
-  CALL LES_MEAN_ll ( ZTH_LES, OMASK,                               &
-                     XLES_MEAN_Th(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* mass flux
-  CALL LES_MEAN_ll ( ZMF_LES, OMASK,                               &
-                     XLES_MEAN_Mf(:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!
-!* virtual potential temperature
-!
-  IF (LUSERV)                                                      &
-  CALL LES_MEAN_ll ( ZTHV_LES, OMASK,                              &
-                     XLES_MEAN_Thv(:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* liquid potential temperature
-!
-  IF (LUSERC) THEN
-    CALL LES_MEAN_ll ( ZTHL_LES, OMASK,                               &
-                       XLES_MEAN_Thl(:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-!* vapor mixing ratio
-!
-  IF (LUSERV) THEN
-    CALL LES_MEAN_ll ( ZRV_LES, OMASK,                               &
-                       XLES_MEAN_Rv(:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-!*relative humidity
-!
-  IF (LUSERV) THEN
-    CALL LES_MEAN_ll ( ZREHU_LES, OMASK,                               &
-                       XLES_MEAN_Rehu(:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!  
-!* cloud mixing ratio
-!
-  IF (LUSERC) THEN
-    CALL LES_MEAN_ll ( ZRC_LES, OMASK,                              &
-                      XLES_MEAN_Rc(:,NLES_CURRENT_TCOUNT,IMASK)     )
-    CALL LES_MEAN_ll ( ZRT_LES, OMASK,                               &
-                      XLES_MEAN_Rt(:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-!* rain mixing ratio
-!
-  IF (LUSERR) THEN
-    CALL LES_MEAN_ll ( ZRR_LES, OMASK,                               &
-                       XLES_MEAN_Rr(:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-!* ice mixing ratio
-!
-  IF (LUSERI) THEN
-    CALL LES_MEAN_ll ( ZRI_LES, OMASK,                               &
-                       XLES_MEAN_Ri(:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-!* snow mixing ratio
-!
-  IF (LUSERS) THEN
-    CALL LES_MEAN_ll ( ZRS_LES, OMASK,                             &
-                     XLES_MEAN_Rs(:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-!* graupel mixing ratio
-!
-  IF (LUSERG) THEN
-    CALL LES_MEAN_ll ( ZRG_LES, OMASK,                             &
-                     XLES_MEAN_Rg(:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-!* hail mixing ratio
-!
-  IF (LUSERH) THEN
-    CALL LES_MEAN_ll ( ZRH_LES, OMASK,                             &
-                       XLES_MEAN_Rh(:,NLES_CURRENT_TCOUNT,IMASK)   )
-  END IF
-!
-!* scalar variables mixing ratio
-!
-  DO JSV=1,NSV
-    CALL LES_MEAN_ll ( ZSV_LES(:,:,:,JSV), OMASK,                        &
-                       XLES_MEAN_Sv(:,NLES_CURRENT_TCOUNT,IMASK,JSV)     )
-  END DO
-END IF
-!
-!* wind modulus
-!
-IF (LLES_MEAN) THEN
-!
-  ZWORK_LES =SQRT( ZU_LES**2 +ZV_LES**2 )
-  CALL LES_MEAN_ll ( ZWORK_LES, OMASK,                           &
-                     XLES_MEAN_WIND(:,NLES_CURRENT_TCOUNT,IMASK) )
-!
-!* vertical speed larger than mean vertical speed (updraft)
-!
-  DO JK=1,NLES_K
-    ZW_UP(:,:,JK) =  MAX(ZW_LES(:,:,JK), XLES_MEAN_W(JK,NLES_CURRENT_TCOUNT,IMASK))
-  END DO
-!
-!* upward mass flux
-!
-  ZWORK_LES = ZW_UP * ZRHO_LES
-  CALL LES_MEAN_ll ( ZWORK_LES, OMASK,                                 &
-                     XLES_RESOLVED_MASSFX(:,NLES_CURRENT_TCOUNT,IMASK) )
-!
-!* pdf calculation
-!
- IF (LLES_PDF) THEN
-  CALL LES_PDF_ll  ( ZTH_LES,OMASK,XTH_PDF_MIN,XTH_PDF_MAX,    &
-                        ZPDF(:,:) )
-  DO JSV=1,NPDF
-       XLES_PDF_TH(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-  END DO
-                        
-  CALL LES_PDF_ll  ( ZW_LES,OMASK,XW_PDF_MIN,XW_PDF_MAX,    &
-                        ZPDF(:,:) )
-  DO JSV=1,NPDF
-       XLES_PDF_W(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-  END DO
-  CALL LES_PDF_ll  ( ZTHV_LES,OMASK,XTHV_PDF_MIN,XTHV_PDF_MAX,    &
-                        ZPDF(:,:) )
-  DO JSV=1,NPDF
-       XLES_PDF_THV(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-  END DO
-  IF (LUSERV) THEN
-   CALL LES_PDF_ll  ( ZRV_LES,OMASK,XRV_PDF_MIN,XRV_PDF_MAX,    &
-                        ZPDF(:,:) )
-   DO JSV=1,NPDF
-       XLES_PDF_RV(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-   END DO
-  END IF
-  IF (LUSERC) THEN
-    CALL LES_PDF_ll  ( ZRC_LES,OMASK,XRC_PDF_MIN,XRC_PDF_MAX,    &
-                        ZPDF(:,:) )
-    DO JSV=1,NPDF
-       XLES_PDF_RC(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-    END DO
-    CALL LES_PDF_ll  ( ZRT_LES,OMASK,XRT_PDF_MIN,XRT_PDF_MAX,    &
-                        ZPDF(:,:) )
-    DO JSV=1,NPDF
-       XLES_PDF_RT(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-    END DO
-    CALL LES_PDF_ll  ( ZTHL_LES,OMASK,XTHL_PDF_MIN,XTHL_PDF_MAX,    &
-                        ZPDF(:,:) )
-    DO JSV=1,NPDF
-       XLES_PDF_THL(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-    END DO
-  END IF
-  IF (LUSERR) THEN
-    CALL LES_PDF_ll  ( ZRR_LES,OMASK,XRR_PDF_MIN,XRR_PDF_MAX,    &
-                        ZPDF(:,:) )
-    DO JSV=1,NPDF
-       XLES_PDF_RR(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-    END DO
-  END IF
-  IF (LUSERI) THEN
-    CALL LES_PDF_ll  ( ZRI_LES,OMASK,XRI_PDF_MIN,XRI_PDF_MAX,    &
-                        ZPDF(:,:) )
-    DO JSV=1,NPDF
-       XLES_PDF_RI(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-    END DO
-  END IF
-  IF (LUSERS) THEN
-    CALL LES_PDF_ll  ( ZRS_LES,OMASK,XRS_PDF_MIN,XRS_PDF_MAX,    &
-                        ZPDF(:,:) )
-    DO JSV=1,NPDF
-       XLES_PDF_RS(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-    END DO
-  END IF
-  IF (LUSERG) THEN
-    CALL LES_PDF_ll  ( ZRG_LES,OMASK,XRG_PDF_MIN,XRG_PDF_MAX,    &
-                        ZPDF(:,:) )
-    DO JSV=1,NPDF
-       XLES_PDF_RG(:,NLES_CURRENT_TCOUNT,IMASK,JSV)=ZPDF(:,JSV)
-    END DO
-  END IF
- END IF
-!
-!* mean vertical gradients
-!
-  CALL LES_MEAN_ll ( ZDTHLDZ_LES, OMASK, XLES_MEAN_DTHLDZ(:,NLES_CURRENT_TCOUNT,IMASK) )
-  CALL LES_MEAN_ll ( ZDUDZ_LES, OMASK, XLES_MEAN_DUDZ(:,NLES_CURRENT_TCOUNT,IMASK) )
-  CALL LES_MEAN_ll ( ZDVDZ_LES, OMASK, XLES_MEAN_DVDZ(:,NLES_CURRENT_TCOUNT,IMASK) )
-  CALL LES_MEAN_ll ( ZDWDZ_LES, OMASK, XLES_MEAN_DWDZ(:,NLES_CURRENT_TCOUNT,IMASK) )
-  IF (LUSERV) CALL LES_MEAN_ll ( ZDRtDZ_LES, OMASK, XLES_MEAN_DRtDZ(:,NLES_CURRENT_TCOUNT,IMASK) )
-  DO JSV=1,NSV
-    CALL LES_MEAN_ll ( ZDSVDZ_LES(:,:,:,JSV), OMASK, XLES_MEAN_DSVDZ(:,NLES_CURRENT_TCOUNT,IMASK,JSV) )
-  END DO
-
-END IF
-!-------------------------------------------------------------------------------
-!
-!       1.5  Resolved quantities
-!            -------------------
-!
-!* horizontal wind variances
-!
-  CALL LES_FLUX_ll ( XU_ANOM, XU_ANOM,                                 &
-                     OMASK,                                            &
-                     XLES_RESOLVED_U2 (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-  CALL LES_FLUX_ll ( XV_ANOM, XV_ANOM,                                 &
-                     OMASK,                                            &
-                     XLES_RESOLVED_V2 (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* vertical wind variance
-!
-  CALL LES_FLUX_ll ( XW_ANOM, XW_ANOM,                                 &
-                     OMASK,                                            &
-                     XLES_RESOLVED_W2 (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* pressure variance
-!
-  CALL LES_FLUX_ll ( ZP_ANOM, ZP_ANOM,                                 &
-                     OMASK,                                            &
-                     XLES_RESOLVED_P2 (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* potential temperature variance
-!
-  CALL LES_FLUX_ll ( ZTH_ANOM, ZTH_ANOM,                               &
-                     OMASK,                                            &
-                     XLES_RESOLVED_TH2(:,NLES_CURRENT_TCOUNT,IMASK)    )
-
-!
-!* resolved turbulent kinetic energy
-!
-  XLES_RESOLVED_Ke(:,NLES_CURRENT_TCOUNT,IMASK) = XUNDEF
-!
-  WHERE(XLES_RESOLVED_U2 (:,NLES_CURRENT_TCOUNT,IMASK) /= XUNDEF) &
-  XLES_RESOLVED_Ke(:,NLES_CURRENT_TCOUNT,IMASK) = 0.5*(           &
-                   XLES_RESOLVED_U2 (:,NLES_CURRENT_TCOUNT,IMASK) &
-                 + XLES_RESOLVED_V2 (:,NLES_CURRENT_TCOUNT,IMASK) &
-                 + XLES_RESOLVED_W2 (:,NLES_CURRENT_TCOUNT,IMASK))
-!
-!* potential temperature - virtual potential temperature covariance
-!
-  IF (LUSERV) THEN
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZTHV_ANOM,                              &
-                       OMASK,                                            &
-                       XLES_RESOLVED_THTHV(:,NLES_CURRENT_TCOUNT,IMASK)  )
-
-!
-!* vapor mixing ratio variance
-!
-    CALL LES_FLUX_ll ( ZRV_ANOM, ZRV_ANOM,                               &
-                       OMASK,                                            &
-                       XLES_RESOLVED_Rv2(:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!
-!* potential temperature - vapor mixing ratio correlation
-!
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZRV_ANOM,                               &
-                       OMASK,                                            &
-                       XLES_RESOLVED_ThRv(:,NLES_CURRENT_TCOUNT,IMASK)   )
-!
-!* virtual potential temperature - vapor mixing ratio correlation
-!
-    CALL LES_FLUX_ll ( ZTHV_ANOM, ZRV_ANOM,                              &
-                       OMASK,                                            &
-                       XLES_RESOLVED_ThvRv(:,NLES_CURRENT_TCOUNT,IMASK)  )
-  END IF
-!
-!
-!* liquid potential temperature - virtual potential temperature covariance
-!
-  IF (LUSERC) THEN
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZTHV_ANOM,                             &
-                       OMASK,                                            &
-                       XLES_RESOLVED_THLTHV(:,NLES_CURRENT_TCOUNT,IMASK) )
-!
-!* liquid potential temperature variance
-!
-    CALL LES_FLUX_ll ( XTHL_ANOM, XTHL_ANOM,                             &
-                       OMASK,                                            &
-                       XLES_RESOLVED_THL2(:,NLES_CURRENT_TCOUNT,IMASK)   )
-!
-!* total water mixing ratio variance
-!
-    CALL LES_FLUX_ll ( XRT_ANOM, XRT_ANOM,                               &
-                       OMASK,                                            &
-                       XLES_RESOLVED_Rt2(:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* cloud mixing ratio variance
-!
-    CALL LES_FLUX_ll ( ZRC_ANOM, ZRC_ANOM,                               &
-                       OMASK,                                            &
-                       XLES_RESOLVED_Rc2(:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* potential temperature - cloud mixing ratio correlation
-!
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZRC_ANOM,                               &
-                       OMASK,                                            &
-                       XLES_RESOLVED_ThRc(:,NLES_CURRENT_TCOUNT,IMASK)   )
-!
-!* liquid potential temperature - vapor mixing ratio correlation
-!
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZRV_ANOM,                               &
-                       OMASK,                                             &
-                       XLES_RESOLVED_ThlRv(:,NLES_CURRENT_TCOUNT,IMASK)   )
-!
-!* liquid potential temperature - cloud mixing ratio correlation
-!
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZRC_ANOM,                               &
-                       OMASK,                                             &
-                       XLES_RESOLVED_ThlRc(:,NLES_CURRENT_TCOUNT,IMASK)   )
-!
-!* virtual potential temperature - cloud mixing ratio correlation
-!
-    CALL LES_FLUX_ll ( ZTHV_ANOM, ZRC_ANOM,                              &
-                       OMASK,                                            &
-                       XLES_RESOLVED_ThvRc(:,NLES_CURRENT_TCOUNT,IMASK)  )
-!
-! variance of lwp 
-!
-    IF (IMASK .EQ. 1) THEN
-    CALL LES_FLUX_ll (ZLWP_ANOM, ZLWP_ANOM,                           &
-                      OMASK(:,:,1),                                   &
-                       XLES_LWPVAR(NLES_CURRENT_TCOUNT)  ) 
-    END IF
-  END IF
-!
-!* ice mixing ratio variance
-!
-  IF (LUSERI) THEN
-    CALL LES_FLUX_ll ( ZRI_ANOM, ZRI_ANOM,                               &
-                       OMASK,                                            &
-                       XLES_RESOLVED_Ri2(:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* potential temperature - ice mixing ratio correlation
-!
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZRI_ANOM,                               &
-                       OMASK,                                            &
-                       XLES_RESOLVED_ThRi(:,NLES_CURRENT_TCOUNT,IMASK)   )
-!
-!* liquid potential temperature - ice mixing ratio correlation
-!
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZRI_ANOM,                               &
-                       OMASK,                                             &
-                       XLES_RESOLVED_ThlRi(:,NLES_CURRENT_TCOUNT,IMASK)   )
-!
-!* virtual potential temperature - ice mixing ratio correlation
-!
-    CALL LES_FLUX_ll ( ZTHV_ANOM, ZRI_ANOM,                              &
-                       OMASK,                                            &
-                       XLES_RESOLVED_ThvRi(:,NLES_CURRENT_TCOUNT,IMASK)  )
-  END IF
-!
-!* scalar variable mixing ratio variances
-!
-  DO JSV=1,NSV
-    CALL LES_FLUX_ll ( XSV_ANOM(:,:,:,JSV), XSV_ANOM(:,:,:,JSV),             &
-                       OMASK,                                                &
-                       XLES_RESOLVED_Sv2(:,NLES_CURRENT_TCOUNT,IMASK,JSV)    )
-!
-!* potential temperature - scalar variables ratio correlation
-!
-    CALL LES_FLUX_ll ( ZTH_ANOM, XSV_ANOM(:,:,:,JSV),                      &
-                       OMASK,                                              &
-                       XLES_RESOLVED_ThSv(:,NLES_CURRENT_TCOUNT,IMASK,JSV) )
-!
-!* liquid potential temperature - scalar variables ratio correlation
-!
-    IF (LUSERC) THEN
-      CALL LES_FLUX_ll ( XTHL_ANOM, XSV_ANOM(:,:,:,JSV),                     &
-                         OMASK,                                              &
-                         XLES_RESOLVED_ThlSv(:,NLES_CURRENT_TCOUNT,IMASK,JSV) )
-    END IF
-!
-!* virtual potential temperature - scalar variables ratio correlation
-!
-    IF (LUSERV) THEN
-      CALL LES_FLUX_ll ( ZTHV_ANOM, XSV_ANOM(:,:,:,JSV),                      &
-                         OMASK,                                               &
-                         XLES_RESOLVED_ThvSv(:,NLES_CURRENT_TCOUNT,IMASK,JSV) )
-    END IF
-  END DO
-!
-!
-!* wind fluxes
-!
-  CALL LES_FLUX_ll ( XU_ANOM, XV_ANOM,                                 &
-                     OMASK,                                            &
-                     XLES_RESOLVED_UV (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-  CALL LES_FLUX_ll ( XW_ANOM, XU_ANOM,                                 &
-                     OMASK,                                            &
-                     XLES_RESOLVED_WU (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-  CALL LES_FLUX_ll ( XW_ANOM, XV_ANOM,                                 &
-                     OMASK,                                            &
-                     XLES_RESOLVED_WV (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* pressure fluxes
-!
-  CALL LES_FLUX_ll ( XU_ANOM, ZDPDZ_ANOM,                               &
-                     OMASK,                                             &
-                     XLES_RESOLVED_UP  (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-  CALL LES_FLUX_ll ( XV_ANOM, ZDPDZ_ANOM,                               &
-                     OMASK,                                             &
-                     XLES_RESOLVED_VP  (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-  CALL LES_FLUX_ll ( XW_ANOM, ZDPDZ_ANOM,                               &
-                     OMASK,                                             &
-                     XLES_RESOLVED_WP  (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* theta fluxes
-!
-  CALL LES_FLUX_ll ( XU_ANOM, ZTH_ANOM,                                 &
-                     OMASK,                                             &
-                     XLES_RESOLVED_UTh (:,NLES_CURRENT_TCOUNT,IMASK)    )
-
-  CALL LES_FLUX_ll ( XV_ANOM, ZTH_ANOM,                                 &
-                     OMASK,                                             &
-                     XLES_RESOLVED_VTh (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-  CALL LES_FLUX_ll ( XW_ANOM, ZTH_ANOM,                                 &
-                     OMASK,                                             &
-                     XLES_RESOLVED_WTh (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* virtual theta fluxes
-!
-  IF (LUSERV) THEN
-    CALL LES_FLUX_ll ( XU_ANOM, ZTHV_ANOM,                                 &
-                       OMASK,                                              &
-                       XLES_RESOLVED_UThv (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-    CALL LES_FLUX_ll ( XV_ANOM, ZTHV_ANOM,                                 &
-                       OMASK,                                              &
-                       XLES_RESOLVED_VThv (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-    CALL LES_FLUX_ll ( XW_ANOM, ZTHV_ANOM,                                 &
-                       OMASK,                                              &
-                       XLES_RESOLVED_WThv (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* vapor mixing ratio fluxes
-!
-    CALL LES_FLUX_ll ( XU_ANOM, ZRV_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_URv (:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-    CALL LES_FLUX_ll ( XV_ANOM, ZRV_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_VRv (:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-    CALL LES_FLUX_ll ( XW_ANOM, ZRV_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_WRv (:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-!* cloud water mixing ratio fluxes
-!
-  IF (LUSERC) THEN
-    CALL LES_FLUX_ll ( XU_ANOM, ZRC_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_URc (:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-    CALL LES_FLUX_ll ( XV_ANOM, ZRC_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_VRc (:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-    CALL LES_FLUX_ll ( XW_ANOM, ZRC_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_WRc (:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-!* liquid theta fluxes
-!
-    CALL LES_FLUX_ll ( XU_ANOM, XTHL_ANOM,                                 &
-                       OMASK,                                              &
-                       XLES_RESOLVED_UThl (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-    CALL LES_FLUX_ll ( XV_ANOM, XTHL_ANOM,                                 &
-                       OMASK,                                              &
-                       XLES_RESOLVED_VThl (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-    CALL LES_FLUX_ll ( XW_ANOM, XTHL_ANOM,                                 &
-                       OMASK,                                              &
-                       XLES_RESOLVED_WThl (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* total water mixing ratio fluxes
-!
-    CALL LES_FLUX_ll ( XW_ANOM, XRT_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_WRt (:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-!* cloud ice mixing ratio fluxes
-!
-  IF (LUSERI) THEN
-    CALL LES_FLUX_ll ( XU_ANOM, ZRI_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_URi (:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-  CALL LES_FLUX_ll ( XV_ANOM, ZRI_ANOM,                                  &
-                     OMASK,                                              &
-                     XLES_RESOLVED_VRi (:,NLES_CURRENT_TCOUNT,IMASK)     )
-!
-    CALL LES_FLUX_ll ( XW_ANOM, ZRI_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_WRi (:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-  IF (LUSERR) THEN
-     CALL LES_FLUX_ll ( XW_ANOM, ZRR_ANOM,                                  &
-                       OMASK,                                              &
-                       XLES_RESOLVED_WRr (:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-!
-
-!
-!* scalar variables fluxes
-!
-  DO JSV=1,NSV
-    CALL LES_FLUX_ll ( XU_ANOM, XSV_ANOM(:,:,:,JSV),                           &
-                       OMASK,                                                  &
-                       XLES_RESOLVED_USv (:,NLES_CURRENT_TCOUNT,IMASK,JSV)     )
-!
-   CALL LES_FLUX_ll ( XV_ANOM, XSV_ANOM(:,:,:,JSV),                            &
-                       OMASK,                                                  &
-                       XLES_RESOLVED_VSv (:,NLES_CURRENT_TCOUNT,IMASK,JSV)     )
-!
-    CALL LES_FLUX_ll ( XW_ANOM, XSV_ANOM(:,:,:,JSV),                           &
-                       OMASK,                                                  &
-                       XLES_RESOLVED_WSv (:,NLES_CURRENT_TCOUNT,IMASK,JSV)     )
-  END DO
-!
-!* skewness
-!
-  CALL LES_3RD_MOMENT_ll ( XU_ANOM, XU_ANOM, XU_ANOM,                       &
-                          OMASK,                                            &
-                          XLES_RESOLVED_U3 (:,NLES_CURRENT_TCOUNT,IMASK)    )
- 
-  CALL LES_3RD_MOMENT_ll ( XV_ANOM, XV_ANOM, XV_ANOM,                       &
-                          OMASK,                                            &
-                          XLES_RESOLVED_V3 (:,NLES_CURRENT_TCOUNT,IMASK)    )
- 
-  CALL LES_3RD_MOMENT_ll ( XW_ANOM, XW_ANOM, XW_ANOM,                       &
-                          OMASK,                                            &
-                          XLES_RESOLVED_W3 (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* kurtosis
-!
-  CALL LES_4TH_MOMENT_ll ( XU_ANOM, XU_ANOM, XU_ANOM,  XU_ANOM,              &
-                          OMASK,                                            &
-                          XLES_RESOLVED_U4 (:,NLES_CURRENT_TCOUNT,IMASK)    )
- 
-  CALL LES_4TH_MOMENT_ll ( XV_ANOM, XV_ANOM, XV_ANOM,  XV_ANOM,             &
-                          OMASK,                                            &
-                          XLES_RESOLVED_V4 (:,NLES_CURRENT_TCOUNT,IMASK)    )
- 
-  CALL LES_4TH_MOMENT_ll ( XW_ANOM, XW_ANOM, XW_ANOM,   XW_ANOM,            &
-                          OMASK,                                            &
-                          XLES_RESOLVED_W4 (:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-!* third moments of liquid potential temperature
-!
-  IF (LUSERC) THEN
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XTHL_ANOM, XTHL_ANOM,                    &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WThl2(:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XW_ANOM, XTHL_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_W2Thl(:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-  ELSE
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZTH_ANOM, ZTH_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WThl2(:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XW_ANOM, ZTH_ANOM,                       &
-                            OMASK,                                             &
-                            XLES_RESOLVED_W2Thl(:,NLES_CURRENT_TCOUNT,IMASK)   )
-  END IF
-!
-!* third moments of water vapor
-!
-  IF (LUSERV) THEN
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZRV_ANOM, ZRV_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WRv2 (:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XW_ANOM, ZRV_ANOM,                       &
-                            OMASK,                                             &
-                            XLES_RESOLVED_W2Rv (:,NLES_CURRENT_TCOUNT,IMASK)   )
-  END IF
-
-  IF (LUSERC) THEN
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XTHL_ANOM, ZRV_ANOM,                     &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WThlRv(:,NLES_CURRENT_TCOUNT,IMASK)  )
-  ELSE IF (LUSERV) THEN
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZTH_ANOM, ZRV_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WThlRv(:,NLES_CURRENT_TCOUNT,IMASK)  )
-  END IF
-!
-!* third moments of total water
-! 
-  IF (LUSERC) THEN
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XRT_ANOM, XRT_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WRt2 (:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XW_ANOM, XRT_ANOM,                       &
-                            OMASK,                                             &
-                            XLES_RESOLVED_W2Rt (:,NLES_CURRENT_TCOUNT,IMASK)   )
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XTHL_ANOM, XRT_ANOM,                       &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WThlRt (:,NLES_CURRENT_TCOUNT,IMASK)   )                        
-  ELSE IF (LUSERV) THEN
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZRV_ANOM, ZRV_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WRt2 (:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XW_ANOM, ZRV_ANOM,                       &
-                            OMASK,                                             &
-                            XLES_RESOLVED_W2Rt (:,NLES_CURRENT_TCOUNT,IMASK)   )
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZTH_ANOM, ZRV_ANOM,                       &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WThlRt (:,NLES_CURRENT_TCOUNT,IMASK)   )                        
-  END IF                            
-!
-!* third moments of cloud water
-!
-  IF (LUSERC) THEN
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZRC_ANOM, ZRC_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WRc2 (:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XW_ANOM, ZRC_ANOM,                       &
-                            OMASK,                                             &
-                            XLES_RESOLVED_W2Rc (:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XTHL_ANOM, ZRC_ANOM,                     &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WThlRc(:,NLES_CURRENT_TCOUNT,IMASK)  )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZRV_ANOM, ZRC_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WRvRc (:,NLES_CURRENT_TCOUNT,IMASK)  )
-  END IF
-!
-!* third moments of cloud ice
-!
-  IF (LUSERI) THEN
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZRI_ANOM, ZRI_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WRi2 (:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XW_ANOM, ZRI_ANOM,                      &
-                           OMASK,                                             &
-                           XLES_RESOLVED_W2Ri (:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XTHL_ANOM, ZRI_ANOM,                     &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WThlRi(:,NLES_CURRENT_TCOUNT,IMASK)  )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZRV_ANOM, ZRI_ANOM,                      &
-                            OMASK,                                             &
-                            XLES_RESOLVED_WRvRi (:,NLES_CURRENT_TCOUNT,IMASK)  )
-  END IF
-!
-!* third moments of scalar variables
-!
-  DO JSV=1,NSV
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XSV_ANOM(:,:,:,JSV), XSV_ANOM(:,:,:,JSV),    &
-                            OMASK,                                                 &
-                            XLES_RESOLVED_WSv2 (:,NLES_CURRENT_TCOUNT,IMASK,JSV)   )
-
-    CALL LES_3RD_MOMENT_ll ( XW_ANOM, XW_ANOM, XSV_ANOM(:,:,:,JSV),                &
-                            OMASK,                                                 &
-                            XLES_RESOLVED_W2Sv (:,NLES_CURRENT_TCOUNT,IMASK,JSV)   )
-    IF (LUSERC) THEN
-      CALL LES_3RD_MOMENT_ll ( XW_ANOM, XTHL_ANOM, XSV_ANOM(:,:,:,JSV),              &
-                              OMASK,                                                 &
-                              XLES_RESOLVED_WThlSv(:,NLES_CURRENT_TCOUNT,IMASK,JSV)  )
-    ELSE
-      CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZTH_ANOM, XSV_ANOM(:,:,:,JSV),               &
-                              OMASK,                                                 &
-                              XLES_RESOLVED_WThlSv(:,NLES_CURRENT_TCOUNT,IMASK,JSV)  )
-    END IF
-
-    IF (LUSERV) THEN
-      CALL LES_3RD_MOMENT_ll ( XW_ANOM, ZRV_ANOM, XSV_ANOM(:,:,:,JSV),               &
-                              OMASK,                                                 &
-                              XLES_RESOLVED_WRvSv (:,NLES_CURRENT_TCOUNT,IMASK,JSV)  )
-    END IF
-  END DO
-!
-!* presso-correlations
-!
-!
-  CALL LES_FLUX_ll ( XTHL_ANOM, ZDPDZ_ANOM,                              &
-                     OMASK,                                              &
-                     XLES_RESOLVED_ThlPz(:,NLES_CURRENT_TCOUNT,IMASK)    )
-
-  IF (LUSERV) &
-  CALL LES_FLUX_ll ( ZRV_ANOM, ZDPDZ_ANOM,                               &
-                     OMASK,                                              &
-                     XLES_RESOLVED_RvPz(:,NLES_CURRENT_TCOUNT,IMASK)     )
-
-  IF (LUSERC) THEN
-    CALL LES_FLUX_ll ( XRT_ANOM, ZDPDZ_ANOM,                               &
-                       OMASK,                                              &
-                       XLES_RESOLVED_RtPz(:,NLES_CURRENT_TCOUNT,IMASK)     )
-
-    CALL LES_FLUX_ll ( ZRC_ANOM, ZDPDZ_ANOM,                               &
-                       OMASK,                                              &
-                       XLES_RESOLVED_RcPz(:,NLES_CURRENT_TCOUNT,IMASK)     )
-  END IF
-
-  IF (LUSERI) &
-  CALL LES_FLUX_ll ( ZRI_ANOM, ZDPDZ_ANOM,                               &
-                     OMASK,                                              &
-                     XLES_RESOLVED_RiPz(:,NLES_CURRENT_TCOUNT,IMASK)     )
-
-!
-!
-!* resolved turbulent kinetic energy fluxes
-!
-
-  CALL LES_3RD_MOMENT_ll ( XU_ANOM, XU_ANOM, XU_ANOM,                        &
-                          OMASK,                                             &
-                          ZLES_RESOLVED_U3  (:)                              )
-
-  CALL LES_3RD_MOMENT_ll ( XU_ANOM, XV_ANOM, XV_ANOM,                        &
-                          OMASK,                                             &
-                          ZLES_RESOLVED_UV2 (:)                              )
-
-  CALL LES_3RD_MOMENT_ll ( XU_ANOM, XW_ANOM, XW_ANOM,                        &
-                          OMASK,                                             &
-                          ZLES_RESOLVED_UW2 (:)                              )
-
-  XLES_RESOLVED_UKe(:,NLES_CURRENT_TCOUNT,IMASK) = 0.5*(  ZLES_RESOLVED_U3  &
-                                                        + ZLES_RESOLVED_UV2 &
-                                                        + ZLES_RESOLVED_UW2 )
-
-
-
-  CALL LES_3RD_MOMENT_ll ( XV_ANOM, XU_ANOM, XU_ANOM,                        &
-                          OMASK,                                             &
-                          ZLES_RESOLVED_VU2 (:)                              )
-
-  CALL LES_3RD_MOMENT_ll ( XV_ANOM, XV_ANOM, XV_ANOM,                        &
-                          OMASK,                                             &
-                          ZLES_RESOLVED_V3  (:)                              )
-
-  CALL LES_3RD_MOMENT_ll ( XV_ANOM, XW_ANOM, XW_ANOM,                        &
-                          OMASK,                                             &
-                          ZLES_RESOLVED_VW2 (:)                              )
-
-  XLES_RESOLVED_VKe(:,NLES_CURRENT_TCOUNT,IMASK) = 0.5*(  ZLES_RESOLVED_VU2 &
-                                                        + ZLES_RESOLVED_V3  &
-                                                        + ZLES_RESOLVED_VW2 )
-
-
-  CALL LES_3RD_MOMENT_ll ( XW_ANOM, XU_ANOM, XU_ANOM,                        &
-                          OMASK,                                             &
-                          ZLES_RESOLVED_WU2 (:)                              )
-
-  CALL LES_3RD_MOMENT_ll ( XW_ANOM, XV_ANOM, XV_ANOM,                        &
-                          OMASK,                                             &
-                          ZLES_RESOLVED_WV2 (:)                              )
-
-  XLES_RESOLVED_WKe(:,NLES_CURRENT_TCOUNT,IMASK) = 0.5*(  ZLES_RESOLVED_WU2  &
-                                                        + ZLES_RESOLVED_WV2  &
-                           + XLES_RESOLVED_W3(:,NLES_CURRENT_TCOUNT,IMASK)   )
-
-!
-!
-!-------------------------------------------------------------------------------
-!
-!       1.6  Subgrid quantities
-!            ------------------
-!
-IF (LLES_SUBGRID) THEN
-!
-!* wind fluxes and variances
-!
-  CALL LES_MEAN_ll ( ZTKE_LES, OMASK,                                  &
-                     XLES_SUBGRID_Tke(:,NLES_CURRENT_TCOUNT,IMASK)     )
-
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_UV(:,NLES_CURRENT_TCOUNT,IMASK),   &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WU(:,NLES_CURRENT_TCOUNT,IMASK),   &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WV(:,NLES_CURRENT_TCOUNT,IMASK),   &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_U2(:,NLES_CURRENT_TCOUNT,IMASK),   &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_V2(:,NLES_CURRENT_TCOUNT,IMASK),   &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_W2(:,NLES_CURRENT_TCOUNT,IMASK),   &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-!
-!* liquid potential temperature fluxes
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_UThl(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_VThl(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WThl(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-
-!* liquid potential temperature variance
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_Thl2(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )
-!
-!* Mass flux scheme of shallow convection
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_THLUP_MF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )  
-                        
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_RTUP_MF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )   
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_RVUP_MF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )   
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_RCUP_MF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )   
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_RIUP_MF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )   
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WUP_MF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )    
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_MASSFLUX(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )  
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_DETR(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )      
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_ENTR(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )      
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_FRACUP(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )     
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_THVUP_MF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )  
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WTHLMF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )    
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WRTMF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )  
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WTHVMF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        ) 
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WUMF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )   
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WVMF(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                        )   
-
-                        
-!* total water mixing ratio fluxes, correlation and variance
-!
-  IF (LUSERV) THEN
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_URt(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                        )
-    !
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_VRt(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                        )
-    !
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_WRt(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                        )
-    !
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_ThlRt(:,NLES_CURRENT_TCOUNT,IMASK),&
-                          IAVG_PTS(:), IUND_PTS(:)                        )
-    !
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_Rt2(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                        )
-  END IF
-!
-!* scalar variances
-!
-  DO JSV=1,NSV
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_Sv2(:,NLES_CURRENT_TCOUNT,IMASK,JSV), &
-                          IAVG_PTS(:), IUND_PTS(:)                           )
-  END DO
-!
-!* cloud water mixing ratio fluxes
-!
-  IF (LUSERC) THEN
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_URc(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                        )
-    !
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_VRc(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                        )
-    !
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_WRc(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                        )
-  END IF
-!
-!* scalar variables fluxes
-!
-  DO JSV=1,NSV
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_USv(:,NLES_CURRENT_TCOUNT,IMASK,JSV),  &
-                          IAVG_PTS(:), IUND_PTS(:)                            )
-    !
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_VSv(:,NLES_CURRENT_TCOUNT,IMASK,JSV),  &
-                          IAVG_PTS(:), IUND_PTS(:)                            )
-    !
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_WSv(:,NLES_CURRENT_TCOUNT,IMASK,JSV),  &
-                          IAVG_PTS(:), IUND_PTS(:)                            )
-  END DO
-!
-!* subgrid turbulent kinetic energy fluxes
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_UTke(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                        IAVG_PTS(:), IUND_PTS(:)                         )
-  !
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_VTke(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                        IAVG_PTS(:), IUND_PTS(:)                         )
-  !
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WTke(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                        IAVG_PTS(:), IUND_PTS(:)                         )
-
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_ddz_WTke(:,NLES_CURRENT_TCOUNT,IMASK),&
-                        IAVG_PTS(:), IUND_PTS(:)                           )
-!
-!* fluxes and correlations with virtual potential temperature
-!
-  IF (LUSERV) THEN
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_WThv(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_ThlThv(:,NLES_CURRENT_TCOUNT,IMASK),&
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_RtThv(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-    DO JSV=1,NSV
-      CALL LES_MEAN_MPROC ( XLES_SUBGRID_SvThv(:,NLES_CURRENT_TCOUNT,IMASK,JSV),  &
-                            IAVG_PTS(:), IUND_PTS(:)                              )
-   END DO
-  END IF
-!
-!* third order fluxes
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_W2Thl(:,NLES_CURRENT_TCOUNT,IMASK),   &
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WThl2(:,NLES_CURRENT_TCOUNT,IMASK),   &
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-  IF (LUSERV) THEN
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_W2Rt(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_WThlRt(:,NLES_CURRENT_TCOUNT,IMASK),&
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_WRt2(:,NLES_CURRENT_TCOUNT,IMASK),  &
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-  END IF
-    DO JSV=1,NSV
-      CALL LES_MEAN_MPROC ( XLES_SUBGRID_W2Sv(:,NLES_CURRENT_TCOUNT,IMASK,JSV),  &
-                            IAVG_PTS(:), IUND_PTS(:)                             )
-
-      CALL LES_MEAN_MPROC ( XLES_SUBGRID_WSv2(:,NLES_CURRENT_TCOUNT,IMASK,JSV),  &
-                            IAVG_PTS(:), IUND_PTS(:)                             )
-   END DO
-!
-!* dissipative terms
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_DISS_Tke(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                          )
-
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_DISS_Thl2(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                           )
-
-  IF (LUSERV) THEN
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_DISS_Rt2(:,NLES_CURRENT_TCOUNT,IMASK),&
-                          IAVG_PTS(:), IUND_PTS(:)                           )
-
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_DISS_ThlRt(:,NLES_CURRENT_TCOUNT,IMASK),&
-                          IAVG_PTS(:), IUND_PTS(:)                             )
-  END IF
-
-  DO JSV=1,NSV
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_DISS_Sv2(:,NLES_CURRENT_TCOUNT,IMASK,JSV), &
-                          IAVG_PTS(:), IUND_PTS(:)                                )
-  END DO
-!
-!* presso-correlation terms
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_WP(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                    )
-
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_ThlPz(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                       )
-
-  IF (LUSERV) THEN
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_RtPz(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                        )
-
-  END IF
-
-  DO JSV=1,NSV
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_SvPz(:,NLES_CURRENT_TCOUNT,IMASK,JSV), &
-                          IAVG_PTS(:), IUND_PTS(:)                            )
-  END DO
-
-!* phi3 and psi3 terms
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_PHI3(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                    )
-
-  IF (LUSERV) THEN
-    CALL LES_MEAN_MPROC ( XLES_SUBGRID_PSI3(:,NLES_CURRENT_TCOUNT,IMASK), &
-                            IAVG_PTS(:), IUND_PTS(:)                    )
-  END IF 
-!
-!* subgrid mixing length
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_LMix(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                      )
-!
-!* subgrid dissipative length
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_LDiss(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                       )
-!
-!* eddy diffusivities
-!
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_Km(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                    )
-
-  CALL LES_MEAN_MPROC ( XLES_SUBGRID_Kh(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                    )
-  
-END IF
-!
-! computation of KHT and KHR depending on LLES
-  IF (LUSERC) THEN 
-   IF (LLES_RESOLVED) THEN 
-    XLES_MEAN_KHt(:,NLES_CURRENT_TCOUNT,IMASK)=0.       
-    WHERE(XLES_MEAN_DTHLDZ(:,NLES_CURRENT_TCOUNT,IMASK)/=0)              &
-          XLES_MEAN_KHt(:,NLES_CURRENT_TCOUNT,IMASK)=-1.                 &
-                      *XLES_RESOLVED_WThl (:,NLES_CURRENT_TCOUNT,IMASK)/ &
-                       XLES_MEAN_DTHLDZ(:,NLES_CURRENT_TCOUNT,IMASK)
-    XLES_MEAN_KHr(:,NLES_CURRENT_TCOUNT,IMASK)=0.                   
-    WHERE(XLES_MEAN_DRtDZ(:,NLES_CURRENT_TCOUNT,IMASK)/=0)               &
-          XLES_MEAN_KHr(:,NLES_CURRENT_TCOUNT,IMASK)=-1.*                &
-                        XLES_RESOLVED_WRt (:,NLES_CURRENT_TCOUNT,IMASK)/ &
-                       XLES_MEAN_DRtDZ(:,NLES_CURRENT_TCOUNT,IMASK)
-   END IF                    
-   IF (LLES_SUBGRID) THEN 
-    XLES_MEAN_KHt(:,NLES_CURRENT_TCOUNT,IMASK)=0.       
-    WHERE(XLES_MEAN_DTHLDZ(:,NLES_CURRENT_TCOUNT,IMASK)/=0)              & 
-          XLES_MEAN_KHt(:,NLES_CURRENT_TCOUNT,IMASK)=-1.                 &
-                      *XLES_SUBGRID_WThl (:,NLES_CURRENT_TCOUNT,IMASK) /  &
-                       XLES_MEAN_DTHLDZ(:,NLES_CURRENT_TCOUNT,IMASK)
-    XLES_MEAN_KHr(:,NLES_CURRENT_TCOUNT,IMASK)=0.                   
-    WHERE(XLES_MEAN_DRtDZ(:,NLES_CURRENT_TCOUNT,IMASK)/=0)               &
-          XLES_MEAN_KHr(:,NLES_CURRENT_TCOUNT,IMASK)=-1.*                &
-                     XLES_SUBGRID_WRt (:,NLES_CURRENT_TCOUNT,IMASK) / &
-                       XLES_MEAN_DRtDZ(:,NLES_CURRENT_TCOUNT,IMASK)
-   END IF
-   IF (LLES_RESOLVED .AND. LLES_SUBGRID) THEN 
-    XLES_MEAN_KHt(:,NLES_CURRENT_TCOUNT,IMASK)=0.       
-    WHERE(XLES_MEAN_DTHLDZ(:,NLES_CURRENT_TCOUNT,IMASK)/=0)              &
-          XLES_MEAN_KHt(:,NLES_CURRENT_TCOUNT,IMASK)=-1.                 &
-                      *(XLES_RESOLVED_WThl (:,NLES_CURRENT_TCOUNT,IMASK)+ &
-                        XLES_SUBGRID_WThl (:,NLES_CURRENT_TCOUNT,IMASK))/ &
-                       XLES_MEAN_DTHLDZ(:,NLES_CURRENT_TCOUNT,IMASK)
-    XLES_MEAN_KHr(:,NLES_CURRENT_TCOUNT,IMASK)=0.                   
-    WHERE(XLES_MEAN_DRtDZ(:,NLES_CURRENT_TCOUNT,IMASK)/=0)               &
-          XLES_MEAN_KHr(:,NLES_CURRENT_TCOUNT,IMASK)=-1.*                &
-                        (XLES_RESOLVED_WRt (:,NLES_CURRENT_TCOUNT,IMASK)+ &
-                     XLES_SUBGRID_WRt (:,NLES_CURRENT_TCOUNT,IMASK)) / &
-                       XLES_MEAN_DRtDZ(:,NLES_CURRENT_TCOUNT,IMASK)
-   END IF
-  END IF
-!-------------------------------------------------------------------------------
-!
-!       1.7  Interaction of subgrid and resolved quantities
-!            ----------------------------------------------
-!
-!* WARNING: these terms also contain the term due to the mean flow.
-!           this mean flow contribution will be removed from them
-!           when treated in write_les_budgetn.f90
-!
-!
-!* subgrid turbulent kinetic energy fluxes
-!
-IF (LLES_RESOLVED) THEN
-  CALL LES_FLUX_ll ( XU_ANOM, ZTKE_LES,                                 &
-                     OMASK,                                             &
-                     XLES_RES_U_SBG_Tke(:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-  CALL LES_FLUX_ll ( XV_ANOM, ZTKE_LES,                                 &
-                     OMASK,                                             &
-                     XLES_RES_V_SBG_Tke(:,NLES_CURRENT_TCOUNT,IMASK)    )
-!
-  CALL LES_FLUX_ll ( XW_ANOM, ZTKE_LES,                                 &
-                     OMASK,                                             &
-                     XLES_RES_W_SBG_Tke(:,NLES_CURRENT_TCOUNT,IMASK)    )
-END IF
-!
-!* WARNING: these terms also contain the term due to the mean flow.
-!           this mean flow contribution will be removed from them
-!           when treated in write_les_budgetn.f90
-!
-!* production terms for subgrid quantities
-!
-IF (LLES_RESOLVED .AND. LLES_SUBGRID) THEN
-  CALL LES_MEAN_MPROC ( XLES_RES_ddxa_U_SBG_UaU(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                              )
-
-  CALL LES_MEAN_MPROC ( XLES_RES_ddxa_V_SBG_UaV(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                              )
-
-  CALL LES_MEAN_MPROC ( XLES_RES_ddxa_W_SBG_UaW(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                              )
-
-  CALL LES_MEAN_MPROC ( XLES_RES_ddxa_W_SBG_UaThl(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                                )
-
-  CALL LES_MEAN_MPROC ( XLES_RES_ddxa_Thl_SBG_UaW(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                                )
-
-  CALL LES_MEAN_MPROC ( XLES_RES_ddz_Thl_SBG_W2  (:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                                )
-
-  CALL LES_MEAN_MPROC ( XLES_RES_ddxa_Thl_SBG_UaThl(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                                  )
-
-  IF (LUSERV) THEN
-    CALL LES_MEAN_MPROC ( XLES_RES_ddxa_W_SBG_UaRt(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                               )
-
-    CALL LES_MEAN_MPROC ( XLES_RES_ddxa_Rt_SBG_UaW(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                               )
-
-    CALL LES_MEAN_MPROC ( XLES_RES_ddz_Rt_SBG_W2  (:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                               )
-
-    CALL LES_MEAN_MPROC ( XLES_RES_ddxa_Thl_SBG_UaRt(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                                 )
-
-    CALL LES_MEAN_MPROC ( XLES_RES_ddxa_Rt_SBG_UaThl(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                                 )
-
-    CALL LES_MEAN_MPROC ( XLES_RES_ddxa_Rt_SBG_UaRt(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                                )
-
-  END IF
-!
-!* WARNING: these terms also contain the term due to the mean flow.
-!           this mean flow contribution will be removed from them
-!           when treated in write_les_budgetn.f90
-!
-!* turbulent transport and advection terms for subgrid quantities
-!
-  CALL LES_MEAN_MPROC ( XLES_RES_W_SBG_WThl(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                          )
-
-  CALL LES_MEAN_MPROC ( XLES_RES_W_SBG_Thl2(:,NLES_CURRENT_TCOUNT,IMASK), &
-                        IAVG_PTS(:), IUND_PTS(:)                          )
-
-  IF (LUSERV) THEN
-    CALL LES_MEAN_MPROC ( XLES_RES_W_SBG_WRt(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-    CALL LES_MEAN_MPROC ( XLES_RES_W_SBG_Rt2(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                         )
-
-    CALL LES_MEAN_MPROC ( XLES_RES_W_SBG_ThlRt(:,NLES_CURRENT_TCOUNT,IMASK), &
-                          IAVG_PTS(:), IUND_PTS(:)                           )
-
-  END IF
-
-  DO JSV=1,NSV
-    CALL LES_MEAN_MPROC ( XLES_RES_W_SBG_WSv(:,NLES_CURRENT_TCOUNT,IMASK,JSV), &
-                          IAVG_PTS(:), IUND_PTS(:)                             )
-
-    CALL LES_MEAN_MPROC ( XLES_RES_W_SBG_Sv2(:,NLES_CURRENT_TCOUNT,IMASK,JSV), &
-                          IAVG_PTS(:), IUND_PTS(:)                             )
-  END DO
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!       2.   The following is for cartesian mask only
-!            ----------------------------------------
-!
-IF (IMASK>1) RETURN
-!
-!-------------------------------------------------------------------------------
-!
-!       3.   Updraft diagnostics
-!            -------------------
-!
-IF (LLES_UPDRAFT) THEN
-!
-  DO JK=1,NLES_K
-    GUPDRAFT_MASK(:,:,JK) = (XW_ANOM(:,:,JK) > 0.) .AND. LLES_CURRENT_CART_MASK(:,:,JK)
-  END DO
-!
-!
-!       3.1  Updraft fraction
-!            ----------------
-!
-  ZUPDRAFT(:,:,:) = 0.
-  WHERE (GUPDRAFT_MASK(:,:,:))
-    ZUPDRAFT(:,:,:) = 1.
-  END WHERE
-!
-  CALL LES_MEAN_ll ( ZUPDRAFT, OMASK,                        &
-                     XLES_UPDRAFT(:,NLES_CURRENT_TCOUNT)     )
-!
-!
-!       3.2  Updraft mean quantities
-!            -----------------------
-!
-!* vertical wind velocity
-!
-  CALL LES_MEAN_ll ( ZW_LES, GUPDRAFT_MASK,                    &
-                     XLES_UPDRAFT_W(:,NLES_CURRENT_TCOUNT)     )
-!
-!* potential temperature
-!
-  CALL LES_MEAN_ll ( ZTH_LES, GUPDRAFT_MASK,                   &
-                     XLES_UPDRAFT_Th(:,NLES_CURRENT_TCOUNT)    )
-!
-!* liquid potential temperature
-!
-  IF (LUSERC) &
-  CALL LES_MEAN_ll ( ZTHL_LES, GUPDRAFT_MASK,                   &
-                     XLES_UPDRAFT_Thl(:,NLES_CURRENT_TCOUNT)    )
-!
-!* virtual potential temperature
-!
-  IF (LUSERV) &
-  CALL LES_MEAN_ll ( ZTHV_LES, GUPDRAFT_MASK,                   &
-                     XLES_UPDRAFT_Thv(:,NLES_CURRENT_TCOUNT)    )
-!
-!* vapor mixing ratio
-!
-  IF (LUSERV) &
-  CALL LES_MEAN_ll ( ZRV_LES, GUPDRAFT_MASK,                    &
-                     XLES_UPDRAFT_Rv(:,NLES_CURRENT_TCOUNT)     )
-!
-!* cloud water mixing ratio
-!
-  IF (LUSERC) &
-  CALL LES_MEAN_ll ( ZRC_LES, GUPDRAFT_MASK,                    &
-                     XLES_UPDRAFT_Rc(:,NLES_CURRENT_TCOUNT)     )
-!
-!* rain mixing ratio
-!
-  IF (LUSERR) &
-  CALL LES_MEAN_ll ( ZRR_LES, GUPDRAFT_MASK,                    &
-                     XLES_UPDRAFT_Rr(:,NLES_CURRENT_TCOUNT)     )
-!
-!* cloud ice mixing ratio
-!
-  IF (LUSERI) &
-  CALL LES_MEAN_ll ( ZRI_LES, GUPDRAFT_MASK,                    &
-                     XLES_UPDRAFT_Ri(:,NLES_CURRENT_TCOUNT)     )
-!
-!* snow mixing ratio
-!
-  IF (LUSERS) &
-  CALL LES_MEAN_ll ( ZRS_LES, GUPDRAFT_MASK,                    &
-                     XLES_UPDRAFT_Rs(:,NLES_CURRENT_TCOUNT)     )
-!
-!* graupel mixing ratio
-!
-  IF (LUSERG) &
-  CALL LES_MEAN_ll ( ZRG_LES, GUPDRAFT_MASK,                    &
-                     XLES_UPDRAFT_Rg(:,NLES_CURRENT_TCOUNT)     )
-!
-!* hail mixing ratio
-!
-  IF (LUSERH) &
-  CALL LES_MEAN_ll ( ZRG_LES, GUPDRAFT_MASK,                    &
-                     XLES_UPDRAFT_Rh(:,NLES_CURRENT_TCOUNT)     )
-!
-!* scalar variables
-!
-  DO JSV=1,NSV
-    CALL LES_MEAN_ll ( ZSV_LES(:,:,:,JSV), GUPDRAFT_MASK,             &
-                       XLES_UPDRAFT_Sv(:,NLES_CURRENT_TCOUNT,JSV)     )
-  END DO
-!
-!* subgrid turbulent kinetic energy
-!
-  CALL LES_MEAN_ll ( ZTKE_LES, GUPDRAFT_MASK,                    &
-                     XLES_UPDRAFT_Tke(:,NLES_CURRENT_TCOUNT)     )
-!
-!
-!       3.3  Updraft resolved quantities
-!            ---------------------------
-!
-!
-!* resolved turbulent kinetic energy
-!
-  CALL LES_FLUX_ll ( XU_ANOM, XU_ANOM,                           &
-                     GUPDRAFT_MASK,                              &
-                     ZLES_UPDRAFT_U2(:)                          )
-
-  CALL LES_FLUX_ll ( XV_ANOM, XV_ANOM,                           &
-                     GUPDRAFT_MASK,                              &
-                     ZLES_UPDRAFT_V2(:)                          )
-
-  CALL LES_FLUX_ll ( XW_ANOM, XW_ANOM,                           &
-                     GUPDRAFT_MASK,                              &
-                     ZLES_UPDRAFT_W2(:)                          )
-
-  XLES_UPDRAFT_Ke(:,NLES_CURRENT_TCOUNT)  = 0.5 * (  ZLES_UPDRAFT_U2(:) &
-                                                   + ZLES_UPDRAFT_V2(:) &
-                                                   + ZLES_UPDRAFT_W2(:) )
-!
-!* vertical potential temperature flux
-!
-  CALL LES_FLUX_ll ( XW_ANOM, ZTH_ANOM,                          &
-                     GUPDRAFT_MASK,                              &
-                     XLES_UPDRAFT_WTh(:,NLES_CURRENT_TCOUNT)     )
-!
-!* vertical liquid potential temperature flux
-!
-  IF (LUSERC) &
-  CALL LES_FLUX_ll ( XW_ANOM, XTHL_ANOM,                          &
-                     GUPDRAFT_MASK,                               &
-                     XLES_UPDRAFT_WThl(:,NLES_CURRENT_TCOUNT)     )
-!
-!* vertical virtual potential temperature flux
-!
-  IF (LUSERV) &
-  CALL LES_FLUX_ll ( XW_ANOM, ZTHV_ANOM,                          &
-                     GUPDRAFT_MASK,                               &
-                     XLES_UPDRAFT_WThv(:,NLES_CURRENT_TCOUNT)     )
-!
-!* potential temperature variance
-!
-  CALL LES_FLUX_ll ( ZTH_ANOM, ZTH_ANOM,                          &
-                     GUPDRAFT_MASK,                               &
-                     XLES_UPDRAFT_Th2(:,NLES_CURRENT_TCOUNT)      )
-!
-!* liquid potential temperature variance
-!
-  IF (LUSERC) &
-  CALL LES_FLUX_ll ( XTHL_ANOM, XTHL_ANOM,                         &
-                     GUPDRAFT_MASK,                                &
-                     XLES_UPDRAFT_Thl2(:,NLES_CURRENT_TCOUNT)      )
-!
-!* potential temperature - virtual potential temperature covariance
-!
-  IF (LUSERV) &
-  CALL LES_FLUX_ll ( ZTH_ANOM, ZTHV_ANOM,                          &
-                     GUPDRAFT_MASK,                                &
-                     XLES_UPDRAFT_ThThv (:,NLES_CURRENT_TCOUNT)    )
-!
-!* liquid potential temperature - virtual potential temperature covariance
-!
-  IF (LUSERC) &
-  CALL LES_FLUX_ll ( XTHL_ANOM, ZTHV_ANOM,                         &
-                     GUPDRAFT_MASK,                                &
-                     XLES_UPDRAFT_ThlThv(:,NLES_CURRENT_TCOUNT)    )
-!
-!* water vapor mixing ratio flux, variance and correlations
-!
-  IF (LUSERV) THEN
-    CALL LES_FLUX_ll ( XW_ANOM, ZRV_ANOM,                           &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_WRv(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZRV_ANOM, ZRV_ANOM,                          &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_Rv2(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZRV_ANOM,                          &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_ThRv (:,NLES_CURRENT_TCOUNT)    )
-    !
-    IF (LUSERC) &
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZRV_ANOM,                         &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_ThlRv(:,NLES_CURRENT_TCOUNT)    )
-
-    CALL LES_FLUX_ll ( ZTHV_ANOM, ZRV_ANOM,                         &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_ThvRv(:,NLES_CURRENT_TCOUNT)    )
-  END IF
-!
-!* cloud water mixing ratio flux
-!
-  IF (LUSERC) THEN
-    CALL LES_FLUX_ll ( XW_ANOM, ZRC_ANOM,                           &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_WRc(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZRC_ANOM, ZRC_ANOM,                          &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_Rc2(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZRC_ANOM,                          &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_ThRc (:,NLES_CURRENT_TCOUNT)    )
-    !
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZRC_ANOM,                         &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_ThlRc(:,NLES_CURRENT_TCOUNT)    )
-    !
-    CALL LES_FLUX_ll ( ZTHV_ANOM, ZRC_ANOM,                         &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_ThvRc(:,NLES_CURRENT_TCOUNT)    )
-  END IF
-!
-!* cloud ice mixing ratio flux
-!
-  IF (LUSERI) THEN
-    CALL LES_FLUX_ll ( XW_ANOM, ZRI_ANOM,                           &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_WRi(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZRI_ANOM, ZRI_ANOM,                          &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_Ri2(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZRI_ANOM,                          &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_ThRi (:,NLES_CURRENT_TCOUNT)    )
-    !
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZRI_ANOM,                         &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_ThlRi(:,NLES_CURRENT_TCOUNT)    )
-    !
-    CALL LES_FLUX_ll ( ZTHV_ANOM, ZRI_ANOM,                         &
-                       GUPDRAFT_MASK,                               &
-                       XLES_UPDRAFT_ThvRi(:,NLES_CURRENT_TCOUNT)    )
-  END IF
-!
-!* scalar variables flux
-!
-  DO JSV=1,NSV
-    CALL LES_FLUX_ll ( XW_ANOM, XSV_ANOM(:,:,:,JSV),                    &
-                       GUPDRAFT_MASK,                                   &
-                       XLES_UPDRAFT_WSv(:,NLES_CURRENT_TCOUNT,JSV)      )
-    !
-    CALL LES_FLUX_ll ( XSV_ANOM(:,:,:,JSV), XSV_ANOM(:,:,:,JSV),        &
-                       GUPDRAFT_MASK,                                   &
-                       XLES_UPDRAFT_Sv2(:,NLES_CURRENT_TCOUNT,JSV)      )
-    !
-    CALL LES_FLUX_ll ( ZTH_ANOM, XSV_ANOM(:,:,:,JSV),                   &
-                       GUPDRAFT_MASK,                                   &
-                       XLES_UPDRAFT_ThSv(:,NLES_CURRENT_TCOUNT,JSV)     )
-    !
-    IF (LUSERC) &
-    CALL LES_FLUX_ll ( XTHL_ANOM, XSV_ANOM(:,:,:,JSV),                  &
-                       GUPDRAFT_MASK,                                   &
-                       XLES_UPDRAFT_ThlSv(:,NLES_CURRENT_TCOUNT,JSV)    )
-    !
-    IF (LUSERV) &
-    CALL LES_FLUX_ll ( ZTHV_ANOM, XSV_ANOM(:,:,:,JSV),                  &
-                       GUPDRAFT_MASK,                                   &
-                       XLES_UPDRAFT_ThvSv(:,NLES_CURRENT_TCOUNT,JSV)    )
-  END DO
-!
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!       4.   Downdraft diagnostics
-!            ---------------------
-!
-IF (LLES_DOWNDRAFT) THEN
-!
-  DO JK=1,NLES_K
-    GDOWNDRAFT_MASK(:,:,JK) = (XW_ANOM(:,:,JK) <= 0.) .AND. LLES_CURRENT_CART_MASK(:,:,JK)
-  END DO
-!
-!
-!       4.1  Downdraft fraction
-!            ------------------
-!
-  ZDOWNDRAFT(:,:,:) = 0.
-  WHERE (GDOWNDRAFT_MASK(:,:,:))
-    ZDOWNDRAFT(:,:,:) = 1.
-  END WHERE
-!
-  CALL LES_MEAN_ll ( ZDOWNDRAFT, OMASK,                        &
-                     XLES_DOWNDRAFT(:,NLES_CURRENT_TCOUNT)     )
-!
-!
-!       4.2  Downdraft mean quantities
-!            -------------------------
-!
-!* vertical wind velocity
-!
-  CALL LES_MEAN_ll ( ZW_LES, GDOWNDRAFT_MASK,                    &
-                     XLES_DOWNDRAFT_W(:,NLES_CURRENT_TCOUNT)     )
-!
-!* potential temperature
-!
-  CALL LES_MEAN_ll ( ZTH_LES, GDOWNDRAFT_MASK,                   &
-                     XLES_DOWNDRAFT_Th(:,NLES_CURRENT_TCOUNT)    )
-!
-!* liquid potential temperature
-!
-  IF (LUSERC) &
-  CALL LES_MEAN_ll ( ZTHL_LES, GDOWNDRAFT_MASK,                   &
-                     XLES_DOWNDRAFT_Thl(:,NLES_CURRENT_TCOUNT)    )
-!
-!* virtual potential temperature
-!
-  IF (LUSERV) &
-  CALL LES_MEAN_ll ( ZTHV_LES, GDOWNDRAFT_MASK,                   &
-                     XLES_DOWNDRAFT_Thv(:,NLES_CURRENT_TCOUNT)    )
-!
-!* vapor mixing ratio
-!
-  IF (LUSERV) &
-  CALL LES_MEAN_ll ( ZRV_LES, GDOWNDRAFT_MASK,                    &
-                     XLES_DOWNDRAFT_Rv(:,NLES_CURRENT_TCOUNT)     )
-!
-!* cloud water mixing ratio
-!
-  IF (LUSERC) &
-  CALL LES_MEAN_ll ( ZRC_LES, GDOWNDRAFT_MASK,                    &
-                     XLES_DOWNDRAFT_Rc(:,NLES_CURRENT_TCOUNT)     )
-!
-!* rain mixing ratio
-!
-  IF (LUSERR) &
-  CALL LES_MEAN_ll ( ZRR_LES, GDOWNDRAFT_MASK,                    &
-                     XLES_DOWNDRAFT_Rr(:,NLES_CURRENT_TCOUNT)     )
-!
-!* cloud ice mixing ratio
-!
-  IF (LUSERI) &
-  CALL LES_MEAN_ll ( ZRI_LES, GDOWNDRAFT_MASK,                    &
-                     XLES_DOWNDRAFT_Ri(:,NLES_CURRENT_TCOUNT)     )
-!
-!* snow mixing ratio
-!
-  IF (LUSERS) &
-  CALL LES_MEAN_ll ( ZRS_LES, GDOWNDRAFT_MASK,                    &
-                     XLES_DOWNDRAFT_Rs(:,NLES_CURRENT_TCOUNT)     )
-!
-!* graupel mixing ratio
-!
-  IF (LUSERG) &
-  CALL LES_MEAN_ll ( ZRG_LES, GDOWNDRAFT_MASK,                    &
-                     XLES_DOWNDRAFT_Rg(:,NLES_CURRENT_TCOUNT)     )
-!
-!* hail mixing ratio
-!
-  IF (LUSERH) &
-  CALL LES_MEAN_ll ( ZRG_LES, GDOWNDRAFT_MASK,                    &
-                     XLES_DOWNDRAFT_Rh(:,NLES_CURRENT_TCOUNT)     )
-!
-!* scalar variables
-!
-  DO JSV=1,NSV
-    CALL LES_MEAN_ll ( ZSV_LES(:,:,:,JSV), GDOWNDRAFT_MASK,            &
-                       XLES_DOWNDRAFT_Sv(:,NLES_CURRENT_TCOUNT,JSV)    )
-  END DO
-!
-!* subgrid turbulent kinetic energy
-!
-  CALL LES_MEAN_ll ( ZTKE_LES, GDOWNDRAFT_MASK,                    &
-                     XLES_DOWNDRAFT_Tke(:,NLES_CURRENT_TCOUNT)     )
-!
-!
-!       4.3  Downdraft resolved quantities
-!            -----------------------------
-!
-!* resolved turbulent kinetic energy
-!
-  CALL LES_FLUX_ll ( XU_ANOM, XU_ANOM,                             &
-                     GDOWNDRAFT_MASK,                              &
-                     ZLES_DOWNDRAFT_U2(:)                          )
-
-  CALL LES_FLUX_ll ( XV_ANOM, XV_ANOM,                             &
-                     GDOWNDRAFT_MASK,                              &
-                     ZLES_DOWNDRAFT_V2(:)                          )
-
-  CALL LES_FLUX_ll ( XW_ANOM, XW_ANOM,                             &
-                     GDOWNDRAFT_MASK,                              &
-                     ZLES_DOWNDRAFT_W2(:)                          )
-
-  XLES_DOWNDRAFT_Ke(:,NLES_CURRENT_TCOUNT)  = 0.5 * (  ZLES_DOWNDRAFT_U2(:) &
-                                                     + ZLES_DOWNDRAFT_V2(:) &
-                                                     + ZLES_DOWNDRAFT_W2(:) )
-!
-!* vertical potential temperature flux
-!
-  CALL LES_FLUX_ll ( XW_ANOM, ZTH_ANOM,                            &
-                     GDOWNDRAFT_MASK,                              &
-                     XLES_DOWNDRAFT_WTh(:,NLES_CURRENT_TCOUNT)     )
-!
-!* vertical liquid potential temperature flux
-!
-  IF (LUSERC) &
-  CALL LES_FLUX_ll ( XW_ANOM, XTHL_ANOM,                            &
-                     GDOWNDRAFT_MASK,                               &
-                     XLES_DOWNDRAFT_WThl(:,NLES_CURRENT_TCOUNT)     )
-!
-!* vertical virtual potential temperature flux
-!
-  IF (LUSERV) &
-  CALL LES_FLUX_ll ( XW_ANOM, ZTHV_ANOM,                            &
-                     GDOWNDRAFT_MASK,                               &
-                     XLES_DOWNDRAFT_WThv(:,NLES_CURRENT_TCOUNT)     )
-!
-!* potential temperature variance
-!
-  CALL LES_FLUX_ll ( ZTH_ANOM, ZTH_ANOM,                            &
-                     GDOWNDRAFT_MASK,                               &
-                     XLES_DOWNDRAFT_Th2(:,NLES_CURRENT_TCOUNT)      )
-!
-!* liquid potential temperature variance
-!
-  IF (LUSERC) &
-  CALL LES_FLUX_ll ( XTHL_ANOM, XTHL_ANOM,                           &
-                     GDOWNDRAFT_MASK,                                &
-                     XLES_DOWNDRAFT_Thl2(:,NLES_CURRENT_TCOUNT)      )
-!
-!* potential temperature - virtual potential temperature covariance
-!
-  IF (LUSERV) &
-  CALL LES_FLUX_ll ( ZTH_ANOM, ZTHV_ANOM,                            &
-                     GDOWNDRAFT_MASK,                                &
-                     XLES_DOWNDRAFT_ThThv (:,NLES_CURRENT_TCOUNT)    )
-!
-!* liquid potential temperature - virtual potential temperature covariance
-!
-  IF (LUSERC) &
-  CALL LES_FLUX_ll ( XTHL_ANOM, ZTHV_ANOM,                           &
-                     GDOWNDRAFT_MASK,                                &
-                     XLES_DOWNDRAFT_ThlThv(:,NLES_CURRENT_TCOUNT)    )
-!
-!
-!* water vapor mixing ratio flux, variance and correlations
-!
-  IF (LUSERV) THEN
-    CALL LES_FLUX_ll ( XW_ANOM, ZRV_ANOM,                             &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_WRv(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZRV_ANOM, ZRV_ANOM,                            &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_Rv2(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZRV_ANOM,                            &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_ThRv (:,NLES_CURRENT_TCOUNT)    )
-    !
-    CALL LES_FLUX_ll ( ZTHV_ANOM, ZRV_ANOM,                           &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_ThvRv(:,NLES_CURRENT_TCOUNT)    )
-    !
-    IF (LUSERC) &
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZRV_ANOM,                           &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_ThlRv(:,NLES_CURRENT_TCOUNT)    )
-  END IF
-!
-!* cloud water mixing ratio flux
-!
-  IF (LUSERC) THEN
-    CALL LES_FLUX_ll ( XW_ANOM, ZRC_ANOM,                             &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_WRc(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZRC_ANOM, ZRC_ANOM,                            &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_Rc2(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZRC_ANOM,                            &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_ThRc (:,NLES_CURRENT_TCOUNT)    )
-    !
-    CALL LES_FLUX_ll ( ZTHV_ANOM, ZRC_ANOM,                           &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_ThvRc(:,NLES_CURRENT_TCOUNT)    )
-    !
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZRC_ANOM,                           &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_ThlRc(:,NLES_CURRENT_TCOUNT)    )
-  END IF
-!
-!* cloud ice mixing ratio flux
-!
-  IF (LUSERI) THEN
-    CALL LES_FLUX_ll ( XW_ANOM, ZRI_ANOM,                             &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_WRi(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZRI_ANOM, ZRI_ANOM,                            &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_Ri2(:,NLES_CURRENT_TCOUNT)      )
-    !
-    CALL LES_FLUX_ll ( ZTH_ANOM, ZRI_ANOM,                            &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_ThRi (:,NLES_CURRENT_TCOUNT)    )
-    !
-    CALL LES_FLUX_ll ( ZTHV_ANOM, ZRI_ANOM,                           &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_ThvRi(:,NLES_CURRENT_TCOUNT)    )
-    !
-    CALL LES_FLUX_ll ( XTHL_ANOM, ZRI_ANOM,                           &
-                       GDOWNDRAFT_MASK,                               &
-                       XLES_DOWNDRAFT_ThlRi(:,NLES_CURRENT_TCOUNT)    )
-  END IF
-!
-!* scalar variables flux
-!
-  DO JSV=1,NSV
-    CALL LES_FLUX_ll ( XW_ANOM, XSV_ANOM(:,:,:,JSV),                      &
-                       GDOWNDRAFT_MASK,                                   &
-                       XLES_DOWNDRAFT_WSv(:,NLES_CURRENT_TCOUNT,JSV)      )
-    !
-    CALL LES_FLUX_ll ( XSV_ANOM(:,:,:,JSV), XSV_ANOM(:,:,:,JSV),          &
-                       GDOWNDRAFT_MASK,                                   &
-                       XLES_DOWNDRAFT_Sv2(:,NLES_CURRENT_TCOUNT,JSV)      )
-    !
-    CALL LES_FLUX_ll ( ZTH_ANOM, XSV_ANOM(:,:,:,JSV),                     &
-                       GDOWNDRAFT_MASK,                                   &
-                       XLES_DOWNDRAFT_ThSv(:,NLES_CURRENT_TCOUNT,JSV)     )
-    !
-    IF (LUSERC) &
-    CALL LES_FLUX_ll ( XTHL_ANOM, XSV_ANOM(:,:,:,JSV),                    &
-                       GDOWNDRAFT_MASK,                                   &
-                       XLES_DOWNDRAFT_ThlSv(:,NLES_CURRENT_TCOUNT,JSV)    )
-    !
-    IF (LUSERV) &
-    CALL LES_FLUX_ll ( ZTHV_ANOM, XSV_ANOM(:,:,:,JSV),                    &
-                       GDOWNDRAFT_MASK,                                   &
-                       XLES_DOWNDRAFT_ThvSv(:,NLES_CURRENT_TCOUNT,JSV)    )
-  END DO
-!
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!       5.   surface or 2D variables (only for the cartesian mask)
-!            -----------------------
-!
-!* surface flux of temperature Qo
-!
-CALL LES_MEAN_MPROC ( XLES_Q0   (NLES_CURRENT_TCOUNT), IAVG_PTS(1), IUND_PTS(1) )
-!
-!* surface flux of water vapor Eo
-!
-CALL LES_MEAN_MPROC ( XLES_E0   (NLES_CURRENT_TCOUNT), IAVG_PTS(1), IUND_PTS(1) )
-!
-!* surface flux for scalar variables
-!
-DO JSV=1,NSV
-  CALL LES_MEAN_MPROC ( XLES_SV0  (NLES_CURRENT_TCOUNT,JSV), IAVG_PTS(1), IUND_PTS(1) )
-END DO
-!
-!* surface flux of U wind component
-!
-CALL LES_MEAN_MPROC ( XLES_UW0  (NLES_CURRENT_TCOUNT), IAVG_PTS(1), IUND_PTS(1) )
-!
-!* surface flux of V wind component
-!
-CALL LES_MEAN_MPROC ( XLES_VW0  (NLES_CURRENT_TCOUNT), IAVG_PTS(1), IUND_PTS(1) )
-!
-!* friction velocity u*
-!
-!* average of local u*
-!!CALL LES_MEAN_MPROC ( XLES_USTAR(NLES_CURRENT_TCOUNT), IAVG_PTS(1), IUND_PTS(1) )
-!* or true global u*
-XLES_USTAR(NLES_CURRENT_TCOUNT) = SQRT(SQRT(XLES_UW0(NLES_CURRENT_TCOUNT)**2  &
-                                           +XLES_VW0(NLES_CURRENT_TCOUNT)**2 ))
-!
-!* Boundary layer height
-!
-IF (CBL_HEIGHT_DEF=='WTV') THEN
-!
-!* level where temperature flux is minimum
-!
-ALLOCATE(ZWORK(SIZE(XLES_SUBGRID_WTHVMF(:,NLES_CURRENT_TCOUNT,IMASK),1)))
-ZWORK=XLES_SUBGRID_WTHVMF(:,NLES_CURRENT_TCOUNT,IMASK)
-WHERE(ZWORK==XUNDEF) ZWORK=0.
-
-  IF (LUSERC) THEN
-    IKMIN_FLUX = MINLOC(  XLES_RESOLVED_WThv(:,NLES_CURRENT_TCOUNT,1)  &
-                        + XLES_SUBGRID_WThl (:,NLES_CURRENT_TCOUNT,1)  &
-                        + ZWORK                                        & ! flux if EDKF   
-      + (XRV/XRD - 1.) *( XLES_SUBGRID_WRt  (:,NLES_CURRENT_TCOUNT,1)  &
-                         -XLES_SUBGRID_WRc  (:,NLES_CURRENT_TCOUNT,1)) )
-  ELSE IF (LUSERV) THEN
-    IKMIN_FLUX = MINLOC(  XLES_RESOLVED_WThv(:,NLES_CURRENT_TCOUNT,1) &
-                        + ZWORK                                       & ! flux if EDKF 
-                        + XLES_SUBGRID_WThl (:,NLES_CURRENT_TCOUNT,1) &
-      + (XRV/XRD - 1.) *  XLES_SUBGRID_WRt  (:,NLES_CURRENT_TCOUNT,1) )
-  ELSE
-    IKMIN_FLUX = MINLOC(  XLES_RESOLVED_WTh(:,NLES_CURRENT_TCOUNT,1) &
-                        + ZWORK                                      & ! flux if EDKF
-                        + XLES_SUBGRID_WThl(:,NLES_CURRENT_TCOUNT,1) )
-  END IF
-DEALLOCATE(ZWORK)
-!
-!* boundary layer height
-!
-  XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT) = XLES_Z(IKMIN_FLUX(1)) - XLES_ZS
-!
-ELSE IF (CBL_HEIGHT_DEF=='DTH') THEN
-  IKMAX_TH=MAXLOC( ZLES_MEAN_DTHDZ(:)) 
-  XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT) = XLES_Z(IKMAX_TH(1)) - XLES_ZS
-!  
-ELSE IF (CBL_HEIGHT_DEF=='KE ') THEN
-
-  XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT) = XLES_Z(NLES_K) - XLES_ZS
-!
-!* total Turbulent Kinetic Energy
-!
-  ZKE_TOT(:) = 0.
-!
-  ZKE_TOT(:) = ZKE_TOT(:) + XLES_SUBGRID_TKE   (:,NLES_CURRENT_TCOUNT,1)
-!
-  IF (CTURBLEN/='BL89' .AND. CTURBLEN/='RM17' .AND. LLES_RESOLVED) &
-  ZKE_TOT(:) = ZKE_TOT(:) + XLES_RESOLVED_KE(:,NLES_CURRENT_TCOUNT,1)
-!
-  ZINT_KE_TOT = 0.
-!
-!* integration of total kinetic energy on boundary layer depth
-!
-  ZINT_KE_TOT = ZINT_KE_TOT +XLES_Z(1)*ZKE_TOT(1)
-  DO JK=1,NLES_K-1
-    ZINT_KE_TOT = ZINT_KE_TOT + (XLES_Z(JK+1)-XLES_Z(JK))                     &
-                              * 0.5 *( ZKE_TOT(JK+1) + ZKE_TOT(JK) )
-!
-!* test of total kinetic energy smaller than 5% of the averaged value below
-!
-    IF ( ZKE_TOT(JK+1) < 0.05 * ZINT_KE_TOT / (XLES_Z(JK+1)-XLES_Z(1)) ) THEN
-      XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT) = XLES_Z(JK) - XLES_ZS
-      EXIT
-    END IF
-!
-  END DO
-!
-ELSE IF (CBL_HEIGHT_DEF=='TKE') THEN
-
-  XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT) = XLES_Z(NLES_K) - XLES_ZS
-!
-!* subgrid Turbulent Kinetic Energy
-!
-  ZKE_TOT(:) = XLES_SUBGRID_TKE   (:,NLES_CURRENT_TCOUNT,1)
-!
-  ZINT_KE_TOT = 0.
-!
-!* integration of subgrid kinetic energy on boundary layer depth
-!
-  DO JK=1,NLES_K-1
-    ZINT_KE_TOT = ZINT_KE_TOT + (XLES_Z(JK+1)-XLES_Z(JK))                     &
-                              * 0.5 *( ZKE_TOT(JK+1) + ZKE_TOT(JK) )
-!
-!* test of subgrid kinetic energy smaller than 0.1% of the averaged value below
-!
-    IF ( ZKE_TOT(JK+1) < 0.001 * ZINT_KE_TOT / (XLES_Z(JK+1)-XLES_Z(1)) ) THEN
-      XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT) = XLES_Z(JK) - XLES_ZS
-      EXIT
-    END IF
-  END DO
-ELSE IF (CBL_HEIGHT_DEF=='FRI') THEN
-  ZFRIC_LES = SQRT( ( XLES_SUBGRID_WU (:,NLES_CURRENT_TCOUNT,1)      &
-                     +XLES_RESOLVED_WU(:,NLES_CURRENT_TCOUNT,1))**2  &
-                   +( XLES_SUBGRID_WV (:,NLES_CURRENT_TCOUNT,1)      &
-                     +XLES_RESOLVED_WV(:,NLES_CURRENT_TCOUNT,1))**2 )
-  ZFRIC_SURF = XLES_USTAR(NLES_CURRENT_TCOUNT)**2
-  CALL BL_DEPTH_DIAG(YLDIMPHYEX,ZFRIC_SURF, XLES_ZS, &
-                     ZFRIC_LES,  XLES_Z,  &
-                     XFTOP_O_FSURF,XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT))
-END IF
-!
-!
-!* integration of total kinetic energy on boundary layer depth
-!
-XLES_INT_TKE(NLES_CURRENT_TCOUNT)=ZINT_KE_TOT
-    !* integration of tke 
-    ZTKET_LES(:,:)  = 0.
-      DO JK=1,NLES_K-1
-      ZKE_LES(:,:,JK)=0.5*(XU_ANOM(:,:,JK)*XU_ANOM(:,:,JK)+&
-      XV_ANOM(:,:,JK)*XV_ANOM(:,:,JK)+XW_ANOM(:,:,JK)*XW_ANOM(:,:,JK))
-
-    ZTKET_LES(:,:) = ZTKET_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
-                      * (ZTKE_LES(:,:,JK)+ZKE_LES(:,:,JK)) 
-      END DO
-  CALL LES_MEAN_ll ( ZTKET_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
-                    XLES_INT_TKE(NLES_CURRENT_TCOUNT)     )    
-!
-!* convective velocity
-!
-XLES_WSTAR(NLES_CURRENT_TCOUNT) = 0.
-!
-IF (               XLES_Q0(NLES_CURRENT_TCOUNT)                  &
-    + (XRV/XRD-1.)*XLES_E0(NLES_CURRENT_TCOUNT) >0.) THEN
-  IF (LUSERV) THEN
-    XLES_WSTAR(NLES_CURRENT_TCOUNT) =                            &
-     ( XG / XLES_MEAN_Thv (1,NLES_CURRENT_TCOUNT,1)              &
-          * (                    XLES_Q0( NLES_CURRENT_TCOUNT )  &
-              + (XRV/XRD - 1.) * XLES_E0( NLES_CURRENT_TCOUNT )) &
-          * XLES_BL_HEIGHT(  NLES_CURRENT_TCOUNT  )              &
-     ) ** (1./3.)
-  ELSE
-    XLES_WSTAR(NLES_CURRENT_TCOUNT) =                            &
-     ( XG / XLES_MEAN_Th  (1,NLES_CURRENT_TCOUNT,1)              &
-          * (                    XLES_Q0( NLES_CURRENT_TCOUNT )  &
-              + (XRV/XRD - 1.) * XLES_E0( NLES_CURRENT_TCOUNT )) &
-          * XLES_BL_HEIGHT( NLES_CURRENT_TCOUNT  )               &
-     ) ** (1./3.)
-  END IF
-END IF
-!
-!* cloud base height
- IF (LUSERC) THEN
-  ZINT_RHOKE =0.
-  JJ=1
-  DO JI=1,NLES_K
-  IF ((ZINT_RHOKE .EQ. 0) .AND.  &
-      (XLES_MEAN_RC(JI,NLES_CURRENT_TCOUNT,1) .GT. 1.E-6)) THEN
-     ZINT_RHOKE=1.
-     JJ=JI 
-   END IF
-  END DO
-  XLES_ZCB(NLES_CURRENT_TCOUNT)= XLES_Z(JJ)-XLES_ZS
- ENDIF
-!
-!* height of max of cf
- IF (LUSERC) THEN
-  IKMAX_CF= MAXLOC(  XLES_MEAN_INDCf(:,NLES_CURRENT_TCOUNT,1))
-  XLES_ZMAXCF(NLES_CURRENT_TCOUNT) = XLES_Z(IKMAX_CF(1)) - XLES_ZS
-  IKMAX_CF= MAXLOC(  XLES_MEAN_INDCf2(:,NLES_CURRENT_TCOUNT,1))
-  XLES_ZMAXCF2(NLES_CURRENT_TCOUNT) = XLES_Z(IKMAX_CF(1)) - XLES_ZS
- ENDIF
-!
-!* Monin-Obukhov length
-!
-XLES_MO_LENGTH(NLES_CURRENT_TCOUNT) = 0.
-!
-IF (LUSERV) THEN
-  IF ( XLES_Q0(NLES_CURRENT_TCOUNT)+(XRV/XRD-1.)*XLES_E0(NLES_CURRENT_TCOUNT) /=0. )&
-  XLES_MO_LENGTH(NLES_CURRENT_TCOUNT) = (- (XLES_USTAR(NLES_CURRENT_TCOUNT))**3)  &
-                    / (XKARMAN*(  XLES_Q0(NLES_CURRENT_TCOUNT)                    &
-                                +(XRV/XRD-1.)*XLES_E0(NLES_CURRENT_TCOUNT))       &
-                              *XG/XLES_MEAN_Thv(1,NLES_CURRENT_TCOUNT,1) )
-ELSE
-   IF ( XLES_Q0(NLES_CURRENT_TCOUNT) /=0. )                                       &
-   XLES_MO_LENGTH(NLES_CURRENT_TCOUNT) = (- (XLES_USTAR(NLES_CURRENT_TCOUNT))**3) &
-                    / (XKARMAN*XLES_Q0(NLES_CURRENT_TCOUNT)                       &
-                              *XG/XLES_MEAN_Th(1,NLES_CURRENT_TCOUNT,1) )
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!       6.   correlations along x and y axes
-!            -------------------------------
-!
-!*  u * u
-!
-DO JK=1,NSPECTRA_K
-  CALL LES_HOR_CORR( ZU_SPEC(:,:,JK), ZU_SPEC(:,:,JK),          &
-                     CLES_LBCX , CLES_LBCY,                     &
-                     XCORRi_UU(:,JK,NLES_CURRENT_TCOUNT),       &
-                     XCORRj_UU(:,JK,NLES_CURRENT_TCOUNT)        )
-END DO
-!
-!*  v * v
-!
-DO JK=1,NSPECTRA_K
-  CALL LES_HOR_CORR( ZV_SPEC(:,:,JK), ZV_SPEC(:,:,JK),          &
-                     CLES_LBCX , CLES_LBCY,                     &
-                     XCORRi_VV(:,JK,NLES_CURRENT_TCOUNT),       &
-                     XCORRj_VV(:,JK,NLES_CURRENT_TCOUNT)        )
-END DO
-!
-!*  u * v
-!
-DO JK=1,NSPECTRA_K
-  CALL LES_HOR_CORR( ZU_SPEC(:,:,JK), ZV_SPEC(:,:,JK),          &
-                     CLES_LBCX , CLES_LBCY,                     &
-                     XCORRi_UV(:,JK,NLES_CURRENT_TCOUNT),       &
-                     XCORRj_UV(:,JK,NLES_CURRENT_TCOUNT)        )
-END DO
-!
-!*  w * u
-!
-DO JK=1,NSPECTRA_K
-  CALL LES_HOR_CORR( ZW_SPEC(:,:,JK), ZU_SPEC(:,:,JK),          &
-                     CLES_LBCX , CLES_LBCY,                     &
-                     XCORRi_WU(:,JK,NLES_CURRENT_TCOUNT),       &
-                     XCORRj_WU(:,JK,NLES_CURRENT_TCOUNT)        )
-END DO
-!
-!*  w * v
-!
-DO JK=1,NSPECTRA_K
-  CALL LES_HOR_CORR( ZW_SPEC(:,:,JK), ZV_SPEC(:,:,JK),          &
-                     CLES_LBCX , CLES_LBCY,                     &
-                     XCORRi_WV(:,JK,NLES_CURRENT_TCOUNT),       &
-                     XCORRj_WV(:,JK,NLES_CURRENT_TCOUNT)        )
-END DO
-!
-!*  w * w
-!
-DO JK=1,NSPECTRA_K
-  CALL LES_HOR_CORR( ZW_SPEC(:,:,JK), ZW_SPEC(:,:,JK),          &
-                     CLES_LBCX , CLES_LBCY,                     &
-                     XCORRi_WW(:,JK,NLES_CURRENT_TCOUNT),       &
-                     XCORRj_WW(:,JK,NLES_CURRENT_TCOUNT)        )
-END DO
-!
-!*  w * th
-!
-DO JK=1,NSPECTRA_K
-  CALL LES_HOR_CORR( ZW_SPEC(:,:,JK), ZTH_SPEC(:,:,JK),         &
-                     CLES_LBCX , CLES_LBCY,                     &
-                     XCORRi_WTh(:,JK,NLES_CURRENT_TCOUNT),      &
-                     XCORRj_WTh(:,JK,NLES_CURRENT_TCOUNT)       )
-END DO
-!
-!*  w * thl
-!
-DO JK=1,NSPECTRA_K
-  IF (LUSERC) &
-  CALL LES_HOR_CORR( ZW_SPEC(:,:,JK), ZTHL_SPEC(:,:,JK),         &
-                     CLES_LBCX , CLES_LBCY,                      &
-                     XCORRi_WThl(:,JK,NLES_CURRENT_TCOUNT),      &
-                     XCORRj_WThl(:,JK,NLES_CURRENT_TCOUNT)       )
-END DO
-!
-!*  th * th
-!
-DO JK=1,NSPECTRA_K
-  CALL LES_HOR_CORR( ZTH_SPEC(:,:,JK), ZTH_SPEC(:,:,JK),          &
-                     CLES_LBCX , CLES_LBCY,                       &
-                     XCORRi_ThTh(:,JK,NLES_CURRENT_TCOUNT),       &
-                     XCORRj_ThTh(:,JK,NLES_CURRENT_TCOUNT)        )
-END DO
-!
-!*  thl * thl
-!
-DO JK=1,NSPECTRA_K
-  IF (LUSERC) &
-  CALL LES_HOR_CORR( ZTHL_SPEC(:,:,JK), ZTHL_SPEC(:,:,JK),        &
-                     CLES_LBCX , CLES_LBCY,                       &
-                     XCORRi_ThlThl(:,JK,NLES_CURRENT_TCOUNT),     &
-                     XCORRj_ThlThl(:,JK,NLES_CURRENT_TCOUNT)      )
-END DO
-!
-!* correlations with water vapor
-!
-IF (LUSERV) THEN
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZW_SPEC(:,:,JK), ZRV_SPEC(:,:,JK),        &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_WRv(:,JK,NLES_CURRENT_TCOUNT),     &
-                       XCORRj_WRv(:,JK,NLES_CURRENT_TCOUNT)      )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZTH_SPEC(:,:,JK), ZRV_SPEC(:,:,JK),       &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_ThRv(:,JK,NLES_CURRENT_TCOUNT),    &
-                       XCORRj_ThRv(:,JK,NLES_CURRENT_TCOUNT)     )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    IF (LUSERC) &
-    CALL LES_HOR_CORR( ZTHL_SPEC(:,:,JK), ZRV_SPEC(:,:,JK),      &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_ThlRv(:,JK,NLES_CURRENT_TCOUNT),   &
-                       XCORRj_ThlRv(:,JK,NLES_CURRENT_TCOUNT)    )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZRV_SPEC(:,:,JK), ZRV_SPEC(:,:,JK),       &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_RvRv(:,JK,NLES_CURRENT_TCOUNT),    &
-                       XCORRj_RvRv(:,JK,NLES_CURRENT_TCOUNT)     )
-  END DO
-END IF
-!
-!
-!* correlations with cloud water
-!
-IF (LUSERC) THEN
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZW_SPEC(:,:,JK), ZRC_SPEC(:,:,JK),        &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_WRc(:,JK,NLES_CURRENT_TCOUNT),     &
-                       XCORRj_WRc(:,JK,NLES_CURRENT_TCOUNT)      )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZTH_SPEC(:,:,JK), ZRC_SPEC(:,:,JK),       &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_ThRc(:,JK,NLES_CURRENT_TCOUNT),    &
-                       XCORRj_ThRc(:,JK,NLES_CURRENT_TCOUNT)     )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZTHL_SPEC(:,:,JK), ZRC_SPEC(:,:,JK),      &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_ThlRc(:,JK,NLES_CURRENT_TCOUNT),   &
-                       XCORRj_ThlRc(:,JK,NLES_CURRENT_TCOUNT)    )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZRC_SPEC(:,:,JK), ZRC_SPEC(:,:,JK),       &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_RcRc(:,JK,NLES_CURRENT_TCOUNT),    &
-                       XCORRj_RcRc(:,JK,NLES_CURRENT_TCOUNT)     )
-  END DO
-END IF
-!
-!* correlations with cloud ice
-!
-IF (LUSERI) THEN
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZW_SPEC(:,:,JK), ZRI_SPEC(:,:,JK),        &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_WRi(:,JK,NLES_CURRENT_TCOUNT),     &
-                       XCORRj_WRi(:,JK,NLES_CURRENT_TCOUNT)      )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZTH_SPEC(:,:,JK), ZRI_SPEC(:,:,JK),       &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_ThRi(:,JK,NLES_CURRENT_TCOUNT),    &
-                       XCORRj_ThRi(:,JK,NLES_CURRENT_TCOUNT)     )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZTHL_SPEC(:,:,JK), ZRI_SPEC(:,:,JK),      &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_ThlRi(:,JK,NLES_CURRENT_TCOUNT),   &
-                       XCORRj_ThlRi(:,JK,NLES_CURRENT_TCOUNT)    )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZRI_SPEC(:,:,JK), ZRI_SPEC(:,:,JK),       &
-                       CLES_LBCX , CLES_LBCY,                    &
-                       XCORRi_RiRi(:,JK,NLES_CURRENT_TCOUNT),    &
-                       XCORRj_RiRi(:,JK,NLES_CURRENT_TCOUNT)     )
-  END DO
-END IF
-!
-!* correlations with scalar variables
-!
-DO JSV=1,NSV
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZW_SPEC(:,:,JK), ZSV_SPEC(:,:,JK,JSV),       &
-                       CLES_LBCX , CLES_LBCY,                       &
-                       XCORRi_WSv(:,JK,NLES_CURRENT_TCOUNT,JSV),    &
-                       XCORRj_WSv(:,JK,NLES_CURRENT_TCOUNT,JSV)     )
-  END DO
-  !
-  DO JK=1,NSPECTRA_K
-    CALL LES_HOR_CORR( ZSV_SPEC(:,:,JK,JSV), ZSV_SPEC(:,:,JK,JSV),  &
-                       CLES_LBCX , CLES_LBCY,                       &
-                       XCORRi_SvSv(:,JK,NLES_CURRENT_TCOUNT,JSV),   &
-                       XCORRj_SvSv(:,JK,NLES_CURRENT_TCOUNT,JSV)    )
-  END DO
-END DO
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE LES
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE LES_n
diff --git a/src/mesonh/ext/modn_turbn.f90 b/src/mesonh/ext/modn_turbn.f90
deleted file mode 100644
index 35b271f9c..000000000
--- a/src/mesonh/ext/modn_turbn.f90
+++ /dev/null
@@ -1,167 +0,0 @@
-!MNH_LIC Copyright 1995-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 MODN_TURB_n
-!     ###################
-!
-!!****  *MODN_TURB$n* - declaration of namelist NAM_TURBn
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this module is to specify  the namelist NAM_TURBn
-!     which concern the parameters of the turbulence scheme for one nested
-!     model.   
-!
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_TURB$n : contains declaration of turbulence scheme
-!!    variables entering by a namelist
-!! 
-!!          XIMPL,CTURBLEN,CTURBDIM,LTURB_FLX
-!!          LTURB_DIAG,LSUBG_COND,LTGT_FLX
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation of Meso-NH (module MODD_TURBn)
-!!          
-!!    AUTHOR
-!!    ------
-!!	    J. Cuxart and J. Stein     * I.N.M. and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    January 9, 1995               
-!!      J.Cuxart    February 15, 1995 add the switches for diagnostic storages
-!!      J. Stein    June 14, 1995   add the subgrid condensation switch
-!!      J. Stein    October, 1999   add the tangential fluxes switch
-!!      M. Tomasini Jul  05, 2001   add the subgrid autoconversion
-!!      P. Bechtold Feb 11, 2002    add switch for Sigma_s computation
-!!      P. Jabouille Apr 4, 2002    add switch for Sigma_s convection
-!!      V. Masson    Nov 13 2002    add switch for SBL lengths
-!!      D. Ricard    May, 2021      add switch for Leonard Terms
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-USE MODD_TURB_n, ONLY: &
-         XIMPL_n => XIMPL, &
-         XKEMIN_n => XKEMIN, &
-         XCEDIS_n => XCEDIS, &
-         XCADAP_n => XCADAP, &
-         CTURBLEN_n => CTURBLEN, &
-         CTURBDIM_n => CTURBDIM, &
-         LTURB_FLX_n => LTURB_FLX, &
-         LTURB_DIAG_n => LTURB_DIAG, &
-         LSUBG_COND_n => LSUBG_COND, &
-         LSIGMAS_n => LSIGMAS, &
-         LSIG_CONV_n => LSIG_CONV, &
-         LRMC01_n => LRMC01, &
-         CTOM_n => CTOM, &
-         CSUBG_AUCV_n => CSUBG_AUCV, &
-         VSIGQSAT_n => VSIGQSAT, &
-         CSUBG_AUCV_RI_n => CSUBG_AUCV_RI, &
-         CCONDENS_n => CCONDENS, &
-         CLAMBDA3_n => CLAMBDA3, &
-         CSUBG_MF_PDF_n => CSUBG_MF_PDF, &
-         LLEONARD_n => LLEONARD, &
-         XCOEFHGRADTHL_n => XCOEFHGRADTHL, &
-         XCOEFHGRADRM_n => XCOEFHGRADRM, &
-         XALTHGRAD_n => XALTHGRAD, &
-         XCLDTHOLD_n => XCLDTHOLD
-!
-IMPLICIT NONE
-!
-REAL,SAVE  :: XIMPL
-REAL,SAVE :: XKEMIN
-REAL,SAVE :: XCEDIS
-REAL,SAVE :: XCADAP
-CHARACTER (LEN=4),SAVE  :: CTURBLEN
-CHARACTER (LEN=4),SAVE  :: CTURBDIM
-LOGICAL,SAVE  :: LTURB_FLX
-LOGICAL,SAVE  :: LTURB_DIAG
-LOGICAL,SAVE  :: LSUBG_COND
-LOGICAL,SAVE  :: LSIGMAS
-LOGICAL,SAVE  :: LSIG_CONV
-LOGICAL,SAVE  :: LRMC01
-CHARACTER (LEN=4),SAVE  :: CTOM
-CHARACTER (LEN=4),SAVE  :: CSUBG_AUCV
-CHARACTER (LEN=80),SAVE  :: CSUBG_AUCV_RI
-CHARACTER (LEN=80),SAVE  :: CCONDENS
-CHARACTER (LEN=4),SAVE  :: CLAMBDA3
-CHARACTER (LEN=80),SAVE  :: CSUBG_MF_PDF
-REAL,SAVE :: VSIGQSAT
-LOGICAL,SAVE  :: LLEONARD
-REAL,SAVE :: XCOEFHGRADTHL
-REAL,SAVE :: XCOEFHGRADRM
-REAL,SAVE :: XALTHGRAD
-REAL,SAVE :: XCLDTHOLD
-!
-NAMELIST/NAM_TURBn/XIMPL,CTURBLEN,CTURBDIM,LTURB_FLX,LTURB_DIAG,  &
-                   LSUBG_COND,LSIGMAS,LSIG_CONV,LRMC01,CTOM,CSUBG_AUCV,&
-                   XKEMIN,VSIGQSAT,XCEDIS,XCADAP,CSUBG_AUCV_RI,CCONDENS,&
-                   CLAMBDA3,CSUBG_MF_PDF,LLEONARD,XCOEFHGRADTHL, XCOEFHGRADRM, &
-                   XALTHGRAD, XCLDTHOLD
-
-!
-CONTAINS
-!
-SUBROUTINE INIT_NAM_TURBn
-  XIMPL = XIMPL_n
-  XKEMIN = XKEMIN_n
-  XCEDIS = XCEDIS_n
-  XCADAP = XCADAP_n
-  CTURBLEN = CTURBLEN_n
-  CTURBDIM = CTURBDIM_n
-  LTURB_FLX = LTURB_FLX_n
-  LTURB_DIAG = LTURB_DIAG_n
-  LSUBG_COND = LSUBG_COND_n
-  LSIGMAS = LSIGMAS_n
-  LSIG_CONV = LSIG_CONV_n
-  LRMC01 = LRMC01_n
-  CTOM = CTOM_n
-  CSUBG_AUCV = CSUBG_AUCV_n
-  VSIGQSAT = VSIGQSAT_n  
-  CSUBG_AUCV_RI = CSUBG_AUCV_RI_n
-  CCONDENS = CCONDENS_n
-  CLAMBDA3 = CLAMBDA3_n
-  CSUBG_MF_PDF = CSUBG_MF_PDF_n
-  LLEONARD = LLEONARD_n
-  XCOEFHGRADTHL = XCOEFHGRADTHL_n
-  XCOEFHGRADRM = XCOEFHGRADRM_n
-  XALTHGRAD = XALTHGRAD_n
-  XCLDTHOLD = XCLDTHOLD_n
-END SUBROUTINE INIT_NAM_TURBn
-
-SUBROUTINE UPDATE_NAM_TURBn
-  XIMPL_n = XIMPL
-  XKEMIN_n = XKEMIN
-  XCEDIS_n = XCEDIS
-  XCADAP_n = XCADAP
-  CTURBLEN_n = CTURBLEN
-  CTURBDIM_n = CTURBDIM
-  LTURB_FLX_n = LTURB_FLX
-  LTURB_DIAG_n = LTURB_DIAG
-  LSUBG_COND_n = LSUBG_COND
-  LSIGMAS_n = LSIGMAS
-  LSIG_CONV_n = LSIG_CONV
-  LRMC01_n = LRMC01
-  CTOM_n = CTOM
-  CSUBG_AUCV_n = CSUBG_AUCV
-  VSIGQSAT_n = VSIGQSAT
-  CSUBG_AUCV_RI_n = CSUBG_AUCV_RI
-  CCONDENS_n = CCONDENS
-  CLAMBDA3_n = CLAMBDA3
-  CSUBG_MF_PDF_n = CSUBG_MF_PDF
-  LLEONARD_n = LLEONARD
-  XCOEFHGRADTHL_n = XCOEFHGRADTHL
-  XCOEFHGRADRM_n = XCOEFHGRADRM
-  XALTHGRAD_n = XALTHGRAD
-  XCLDTHOLD_n = XCLDTHOLD
-END SUBROUTINE UPDATE_NAM_TURBn
-
-END MODULE MODN_TURB_n
diff --git a/src/mesonh/ext/phys_paramn.f90 b/src/mesonh/ext/phys_paramn.f90
deleted file mode 100644
index 241166607..000000000
--- a/src/mesonh/ext/phys_paramn.f90
+++ /dev/null
@@ -1,1694 +0,0 @@
-!MNH_LIC Copyright 1995-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_PHYS_PARAM_n
-!    ########################
-!
-!
-INTERFACE
-!
-      SUBROUTINE PHYS_PARAM_n( KTCOUNT, TPFILE,                                              &
-                               PRAD, PSHADOWS, PKAFR, PGROUND, PMAFL, PDRAG,PEOL, PTURB,     &
-                               PTRACER, PTIME_BU, PWETDEPAER, OMASKkids, OCLOUD_ONLY         )
-!
-USE MODD_IO,        ONLY: TFILEDATA
-use modd_precision, only: MNHTIME
-!
-INTEGER,           INTENT(IN)     :: KTCOUNT   ! temporal iteration count
-TYPE(TFILEDATA),   INTENT(IN)     :: TPFILE    ! Synchronous output file
-! advection schemes
-REAL(kind=MNHTIME), DIMENSION(2), INTENT(INOUT) :: PRAD,PSHADOWS,PKAFR,PGROUND,PTURB,PMAFL,PDRAG,PTRACER,PEOL ! to store CPU
-                                                                                                         ! time for computing time
-REAL(kind=MNHTIME), DIMENSION(2), INTENT(INOUT) :: PTIME_BU  ! time used in budget&LES budgets statistics
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT)  :: PWETDEPAER
-LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASKkids ! kids domains mask
-LOGICAL, INTENT(OUT) :: OCLOUD_ONLY ! conditionnal radiation computations for
-                                !      the only cloudy columns
-                                !
-END SUBROUTINE PHYS_PARAM_n
-!
-END INTERFACE
-!
-END MODULE MODI_PHYS_PARAM_n
-!
-!     ########################################################################################
-      SUBROUTINE PHYS_PARAM_n( KTCOUNT, TPFILE,                                              &
-                               PRAD, PSHADOWS, PKAFR, PGROUND, PMAFL, PEOL, PDRAG, PTURB,    &
-                               PTRACER, PTIME_BU, PWETDEPAER, OMASKkids, OCLOUD_ONLY         )
-!     ########################################################################################
-!
-!!****  *PHYS_PARAM_n * -monitor of the parameterizations used by model _n
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to update the sources by adding the
-!     parameterized terms. This is realized by sequentially calling the
-!     specialized routines.
-!    
-!!**  METHOD
-!!    ------
-!!      The first parametrization is the radiation scheme:
-!!                                       ----------------
-!!     *  CRAD = 'FIXE'
-!!     In this case, a temporal interpolation  is performed for the downward
-!!     surface fluxes XFLALWD and XFLASWD.
-!!     *  CRAD = 'ECMWF'
-!!     Several tests are performed before calling the radiation computations
-!!     interface with the ECMWF radiation scheme code. A control is made to
-!!     ensure that:
-!!         - the full radiation code is called at the first model timestep
-!!         - there is a priority for calling the full radiation instead of the
-!!           cloud-only approximation if both must be called at the current
-!!           timestep
-!!         - the cloud-only option (approximation) is coherent with the
-!!           occurence of one cloudy vertical column at least
-!!      If all the above conditions are fulfilled (GRAD is .TRUE.) then the
-!!     position of the sun is computed in routine SUNPOS_n and the interfacing
-!!     routine RADIATIONS is called to update the radiative tendency XDTHRAD
-!!     and the downward surface fluxes XFLALWD and XFLASWD. Finally, the
-!!     radiative tendency is integrated as a source term in the THETA prognostic
-!!     equation.
-!!
-!!      The second parameterization is the soil scheme:
-!!                                         -----------
-!!
-!!     externalized surface
-!!
-!!       The third parameterization is the turbulence scheme:
-!!                                         -----------------
-!!     * CTURB='NONE'
-!!     no turbulent mixing is taken into account
-!!     * CTURB='TKEL'
-!!     The turbulent fluxes are computed according to a one and half order
-!!     closure of the hydrodynamical equations. This scheme is based on a
-!!     prognostic for the turbulent kinetic energy and a mixing length
-!!     computation ( the mesh size or a physically based length). Other
-!!     turbulent moments are diagnosed according to a stationarization of the
-!!     second order turbulent moments. This turbulent scheme forecasts
-!!     either a purely vertical turbulent mixing or 3-dimensional mixing
-!!     according to its internal degrees of freedom.
-!!
-!!
-!!       The LAST parameterization is the chemistry scheme:
-!!                                        -----------------
-!!     The chemistry part of MesoNH has two namelists, NAM_SOLVER for the
-!!     parameters concerning the stiff solver, and NAM_MNHCn concerning the
-!!     configuration and options of the chemistry module itself.
-!!     The switch LUSECHEM in NAM_CONF acitvates or deactivates the chemistry.
-!!     The only variables of MesoNH that are modified by chemistry are the
-!!     scalar variables. If calculation of chemical surface fluxes is
-!!     requested, those fluxes are calculated before
-!!     entering the turbulence scheme, since those fluxes are taken into
-!!     account by TURB as surface boundary conditions.
-!!     CAUTION: chemistry has allways to be called AFTER ALL OTHER TERMS
-!!     that affect the scalar variables (dynamical terms, forcing,
-!!     parameterizations (like TURB, CONVECTION), since it uses the variables
-!!     XRSVS as input in case of the time-split option.
-!!
-!!    EXTERNAL
-!!    --------
-!!      Subroutine SUNPOS_n     : computes the position of the sun
-!!      Subroutine RADIATIONS   : computes the radiative tendency and fluxes
-!!      Subroutine TSZ0         : computes the surface from temporally
-!!                                interpolated Ts and given z0
-!!      Subroutine ISBA         : computes the surface fluxes from a soil scheme
-!!      Subroutine TURB         : computes the turbulence source terms
-!!      Subroutine CONVECTION   : computes the convection source term
-!!      Subroutine CH_SURFACE_FLUX_n: computes the surface flux for chemical
-!!                                species
-!!      Subroutine CH_MONITOR_n : computes the chemistry source terms
-!!                                that are applied to the scalar variables
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      USE MODD_DYN
-!!      USE MODD_CONF
-!!      USE MODD_CONF_n
-!!      USE MODD_CURVCOR_n
-!!      USE MODD_DYN_n
-!!      USE MODD_FIELD_n
-!!      USE MODD_GR_FIELD_n
-!!      USE MODD_LSFIELD_n
-!!      USE MODD_GRID_n
-!!      USE MODD_LBC_n
-!!      USE MODD_PARAM_RAD_n
-!!      USE MODD_RADIATIONS_n
-!!      USE MODD_REF_n
-!!      USE MODD_LUNIT_n
-!!      USE MODD_TIME_n
-!!      USE MODD_CH_MNHC_n
-!!
-!!    REFERENCE
-!!    ---------
-!!      None
-!!
-!!    AUTHOR
-!!    ------
-!!      J. Stein           * Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    05/01/95
-!!      Modifications  Feb 14, 1995 (J.Cuxart)  add the I/O arguments,
-!!             the director cosinus and change the names of the surface fluxes
-!!      Modifications March 21, 1995 (J.M.Carriere) take into account liquid
-!!                                             water
-!!                    June 30,1995  (J.Stein)  initialize at 0 the surf. fluxes
-!!      Modifications Sept. 1, 1995 (S.Belair) ISBA scheme
-!!      Modifications Sept.25, 1995 (J.Stein)  switch on the radiation scheme
-!!      Modifications Sept. 11, 1995 (J.-P. Pinty) radiation scheme
-!!                    Nov.  15, 1995 (J.Stein) cleaning + change the temporal
-!!                                   algorithm for the soil scheme-turbulence
-!!                    Jan.  23, 1996 (J.Stein) add a new option for the surface
-!!                                   fluxes where Ts and z0 are given
-!!                    March 18, 1996 (J.Stein) add the cloud fraction
-!!                    March 28, 1996 (J.Stein) the soil scheme gives energy
-!!                                             fluxes + cleaning
-!!                    June  17, 1996 (Lafore)  statistics of computing time
-!!                    August 4, 1996 (K. Suhre) add chemistry
-!!                    Oct.  12, 1996 (J.Stein) use XSRCM in the turbulence
-!!                                             scheme
-!!                    Nov.  18, 1996 (J.-P. Pinty) add domain translation
-!!                                                 change arg. in radiations
-!!                    Fev.   4, 1997 (J.Viviand) change isba's calling for ice
-!!                    Jun.  22, 1997 (J.Stein) change the equation system and use
-!!                                             the absolute pressure
-!!                    Jul.  09, 1997 (V.Masson) add directional z0
-!!                    Jan.  24, 1998 (P.Bechtold) add convective transport for tracers
-!!                    Jan.  24, 1998 (J.-P. Pinty) split SW and LW part for radiation
-!!                    Mai.  10, 1999 (P.Bechtold) shallow convection
-!!                    Oct.  20, 1999 (P.Jabouille) domain translation for turbulence
-!!                    Jan.  04, 2000 (V.Masson) removes TSZ0 case
-!!                    Jan.  04, 2000 (V.Masson) modifies albedo computation
-!                     Jul   02, 2000 (F.Solmon/V.Masson) adaptation for patch approach
-!!                    Nov.  15, 2000 (V.Masson) LES routines
-!!                    Nov.  15, 2000 (V.Masson) effect of slopes on surface fluxes
-!!                    Feb.  02, 2001 (P.Tulet) add friction velocities and aerodynamical
-!!                                             resistance (patch approach)
-!!                    Jan.  04, 2000 (V.Masson) modify surf_rad_modif computation
-!!                    Mar.  04, 2002 (F.Solmon) new interface for radiation call
-!!                    Nov.  06, 2002 (V.Masson) LES budgets & budget time counters
-!!                    Jan. 2004      (V.Masson) surface externalization
-!!                    Jan.  13, 2004 (J.Escobar) bug correction : compute "GRAD" in parallel
-!!                    Jan.  20, 2005 (P. Tulet)  add dust sedimentation 
-!!                    Jan.  20, 2005 (P. Tulet)  climatologic SSA
-!!                    Jan.  20, 2005 (P. Tulet)  add aerosol / dust scavenging
-!!                    Jul. 2005       (N. Asencio) use the two-way result-fields
-!!                                  before ground_param call
-!!                    May 2006        Remove EPS
-!!                    Oct. 2007      (J.Pergaud) Add shallow_MF
-!!                    Oct. 2009     (C.Lac) Introduction of different PTSTEP according to the
-!!                              advection schemes
-!!                    Oct. 2009     (V. MAsson) optimization of Pergaud et al massflux scheme
-!!                    Aug. 2010     (V.Masson, C.Lac) Exchange of SBL_DEPTH for
-!!                                  reproducibility
-!!                    Oct. 2010   (J.Escobar) init  ZTIME_LES_MF ( pb detected with g95 )
-!!                    Feb. 2011 (V.Masson, C.Lac) SBL_DEPTH values on outer pts
-!!                               for RMC01
-!!                    Sept.2011 (J.Escobar) init YINST_SFU ='M'
-!!
-!!                        Specific for 2D modeling : 
-!! 
-!!                    06/2010    (P.Peyrille)  add Call to aerozon.f90 if LAERO_FT=T
-!!                                to update 
-!!                                aerosols and ozone climatology at each call to
-!!                                phys_param otherwise it is constant to monthly average
-!!                    03/2013  (C.Lac) FIT temporal scheme
-!!                    01/2014 (C.Lac) correction for the nesting of 2D surface
-!!                           fields if the number of the son model does not
-!!                           follow the number of the dad model
-!!      J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test
-!!                       2014  (M.Faivre)
-!!  06/2016     (G.Delautier) phasage surfex 8
-!!  2016 B.VIE LIMA
-!!      M. Leriche 02/2017 Avoid negative fluxes if sv=0 outside the physics domain
-!!      C.Lac  10/2017 : ch_monitor and aer_monitor extracted from phys_param
-!!                       to be called directly by modeln as the last process 
-!!                   02/2018 Q.Libois ECRAD
-!  P. Wautelet 28/03/2018: replace TEMPORAL_DIST by DATETIME_DISTANCE
-!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
-!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!  P. Wautelet 21/11/2019: ZRG_HOUR and ZRAT_HOUR are now parameter arrays
-!  C. Lac         11/2019: correction in the drag formula and application to building in addition to tree
-!  F. Auguste     02/2021: add IBM
-!  JL Redelsperger 03/2021: add the SW flux penetration for Ocean model case
-!  A. Costes      12/2021: add Blaze fire model
-!!-------------------------------------------------------------------------------
-!
-!*       0.     DECLARATIONS
-!               ------------
-!
-USE MODD_ADV_n,       ONLY : XRTKEMS
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-USE MODD_BLOWSNOW,    ONLY : LBLOWSNOW,XRSNOW
-USE MODD_BUDGET,      ONLY: NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RI, NBUDGET_SV1, &
-                            TBUDGETS, xtime_bu_process, TBUCONF
-USE MODD_CH_AEROSOL
-USE MODD_CH_MNHC_n, ONLY : LUSECHEM,         &! indicates if chemistry is used
-                           LCH_CONV_SCAV,    &
-                           LCH_CONV_LINOX
-USE MODD_CLOUD_MF_n
-USE MODD_CONDSAMP
-USE MODD_CONF
-USE MODD_CONF_n
-USE MODD_CST, ONLY : CST
-USE MODD_CTURB, ONLY : CSTURB
-USE MODD_CURVCOR_n
-USE MODD_DEEP_CONVECTION_n
-USE MODD_DEF_EDDY_FLUX_n           ! Ajout PP
-USE MODD_DEF_EDDYUV_FLUX_n         ! Ajout PP
-USE MODD_DIAG_IN_RUN, ONLY: LDIAG_IN_RUN, XCURRENT_TKE_DISS
-USE MODD_DIM_n, ONLY: NIMAX_ll, NJMAX_ll
-USE MODD_DRAGBLDG_n
-USE MODD_DRAGTREE_n
-USE MODD_DUST
-USE MODD_DYN
-USE MODD_DYN_n
-USE MODD_EOL_MAIN, ONLY: LMAIN_EOL, CMETH_EOL, NMODEL_EOL
-USE MODD_FIELD_n
-USE MODD_FRC
-USE MODD_FRC_n
-USE MODD_GRID
-USE MODD_GRID_n
-USE MODD_IBM_PARAM_n,      ONLY: LIBM, XIBM_EPSI, XIBM_LS, XIBM_XMUT
-USE MODD_ICE_C1R3_DESCR,  ONLY : XRTMIN_C1R3=>XRTMIN
-USE MODD_IO, ONLY: TFILEDATA
-USE MODD_LATZ_EDFLX
-USE MODD_LBC_n
-USE MODD_LES
-USE MODD_LES_BUDGET
-USE MODD_LSFIELD_n
-USE MODD_LUNIT_n
-USE MODD_METRICS_n
-USE MODD_MNH_SURFEX_n
-USE MODD_NESTING, ONLY : XWAY,NDAD, NDXRATIO_ALL, NDYRATIO_ALL
-USE MODD_NSV, ONLY : NSV, NSV_LGBEG, NSV_LGEND, &
-                     NSV_SLTBEG,NSV_SLTEND,NSV_SLT,&
-                     NSV_AERBEG,NSV_AEREND, &
-                     NSV_DSTBEG,NSV_DSTEND, NSV_DST,&
-                     NSV_LIMA_NR,NSV_LIMA_NS,NSV_LIMA_NG,NSV_LIMA_NH
-USE MODD_OCEANH
-USE MODD_OUT_n
-USE MODD_PARAM_C2R2,       ONLY : LSEDC
-USE MODD_PARAMETERS
-USE MODD_PARAM_ICE,        ONLY : LSEDIC
-USE MODD_PARAM_KAFR_n
-USE MODD_PARAM_LIMA,       ONLY : MSEDC => LSEDC, XRTMIN_LIMA=>XRTMIN
-USE MODD_PARAM_MFSHALL_n
-USE MODD_PARAM_n
-USE MODD_PARAM_RAD_n
-USE MODD_PASPOL
-USE MODD_PASPOL_n
-USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
-USE MODD_PRECIP_n
-use modd_precision,        only: MNHTIME
-USE MODD_RADIATIONS_n
-USE MODD_RAIN_ICE_DESCR,   ONLY: XRTMIN
-USE MODD_REF,              ONLY: LCOUPLES
-USE MODD_REF_n
-USE MODD_SALT
-USE MODD_SHADOWS_n
-USE MODD_SUB_PHYS_PARAM_n
-USE MODD_TIME_n
-USE MODD_TIME_n
-USE MODD_TIME, ONLY : TDTEXP  ! Ajout PP
-USE MODD_TURB_CLOUD, ONLY : CTURBLEN_CLOUD,NMODEL_CLOUD, &
-                            XCEI,XCEI_MIN,XCEI_MAX,XCOEF_AMPL_SAT
-USE MODD_TURB_FLUX_AIRCRAFT_BALLOON, ONLY : XTHW_FLUX, XRCW_FLUX, XSVW_FLUX
-USE MODD_TURB_n
-
-USE MODE_AERO_PSD
-use mode_budget,            only: Budget_store_end, Budget_store_init
-USE MODE_DATETIME
-USE MODE_DUST_PSD
-USE MODE_ll
-USE MODE_GATHER_ll
-USE MODE_MNH_TIMING
-USE MODE_MODELN_HANDLER
-USE MODE_MPPDB
-USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
-USE MODE_SALT_PSD
-
-USE MODI_AEROZON          ! Ajout PP
-USE MODI_CONDSAMP
-USE MODI_CONVECTION
-USE MODI_DRAG_BLD
-USE MODI_DRAG_VEG
-USE MODI_DUST_FILTER
-USE MODI_EDDY_FLUX_n               ! Ajout PP
-USE MODI_EDDY_FLUX_ONE_WAY_n       ! Ajout PP
-USE MODI_EDDYUV_FLUX_n             ! Ajout PP
-USE MODI_EDDYUV_FLUX_ONE_WAY_n     ! Ajout PP
-USE MODI_EOL_MAIN
-USE MODI_GROUND_PARAM_n
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_W
-USE MODI_PASPOL
-USE MODI_RADIATIONS
-USE MODI_SALT_FILTER
-USE MODI_SEDIM_DUST
-USE MODI_SEDIM_SALT
-USE MODI_SHALLOW_MF_PACK
-USE MODI_SUNPOS_n
-USE MODI_SURF_RAD_MODIF
-USE MODI_SWITCH_SBG_LES_N
-USE MODI_TURB
-
-IMPLICIT NONE
-!
-!*      0.1    declarations of arguments
-!
-INTEGER,           INTENT(IN)     :: KTCOUNT   ! temporal iteration count
-TYPE(TFILEDATA),   INTENT(IN)     :: TPFILE    ! Synchronous output file
-! advection schemes
-REAL(kind=MNHTIME), DIMENSION(2), INTENT(INOUT) :: PRAD,PSHADOWS,PKAFR,PGROUND,PTURB,PMAFL,PDRAG,PTRACER,PEOL ! to store CPU
-                                                                                                         ! time for computing time
-REAL(kind=MNHTIME), DIMENSION(2), INTENT(INOUT) :: PTIME_BU  ! time used in budget&LES budgets statistics
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT)  :: PWETDEPAER
-LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASKkids ! kids domains mask
-LOGICAL, INTENT(OUT) :: OCLOUD_ONLY ! conditionnal radiation computations for
-                                !      the only cloudy columns
-                                !
-!
-!*      0.2    declarations of local variables
-!
-REAL, DIMENSION(:,:), ALLOCATABLE     :: ZSFU  ! surface flux of x and
-REAL, DIMENSION(:,:), ALLOCATABLE     :: ZSFV  ! y component of wind
-REAL, DIMENSION(:,:), ALLOCATABLE     :: ZSFTH ! surface flux of theta
-REAL, DIMENSION(:,:), ALLOCATABLE     :: ZSFRV ! surface flux of vapor
-REAL, DIMENSION(:,:,:), ALLOCATABLE   :: ZSFSV ! surface flux of scalars
-REAL, DIMENSION(:,:), ALLOCATABLE     :: ZSFCO2! surface flux of CO2
-!
-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  :: ZRGDST,ZSIGDST,ZNDST,ZSVDST
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE  :: ZRGSLT,ZSIGSLT,ZNSLT,ZSVSLT
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE  :: ZRGAER,ZSIGAER,ZNAER,ZSVAER
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE  :: ZSVT
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZEXN   ! Atmospheric density and Exner
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZSIGMF   ! MF contribution to XSIGS
-!
-REAL, DIMENSION(0:24), parameter :: ZRG_HOUR =  (/ 0., 0., 0., 0., 0., 32.04, 114.19, &
-                                                   228.01, 351.25, 465.49, 557.24,    &
-                                                   616.82, 638.33, 619.43, 566.56,    &
-                                                   474.71, 359.20, 230.87, 115.72,    &
-                                                   32.48, 0., 0., 0., 0., 0. /)
-!
-REAL, DIMENSION(0:24), parameter :: ZRAT_HOUR = (/ 326.00, 325.93, 325.12, 324.41, &
-                                                   323.16, 321.95, 322.51, 325.16, &
-                                                   328.01, 331.46, 335.58, 340.00, &
-                                                   345.20, 350.32, 354.20, 356.58, &
-                                                   356.56, 355.33, 352.79, 351.34, &
-                                                   347.00, 342.00, 337.00, 332.00, &
-                                                   326.00     /)
-!
-!
-character(len=6) :: ynum
-INTEGER  :: IHOUR               ! parameters necessary for the temporal
-REAL     :: ZTIME, ZDT          ! interpolation
-REAL     :: ZTEMP_DIST          ! time between 2 instants (in seconds)
-!
-LOGICAL :: GRAD                 ! conditionnal call for the full radiation
-                                !         computations
-REAL    :: ZRAD_GLOB_ll         ! 'real' global parallel mask of 'GRAD'
-INTEGER :: INFO_ll              ! error report of parallel routines
-                                !      the only cloudy columns
-!
-REAL(kind=MNHTIME), DIMENSION(2) :: ZTIME1, ZTIME2, ZTIME3, ZTIME4 ! for computing time analysis
-REAL(kind=MNHTIME), DIMENSION(2) :: ZTIME_LES_MF                   ! time spent in LES computation in shallow conv.
-LOGICAL :: GDCONV               ! conditionnal call for the deep convection
-                                !         computations
-REAL, DIMENSION(:,:,:), ALLOCATABLE  :: ZRC, ZRI, ZWT ! additional dummies
-REAL, DIMENSION(:,:),   ALLOCATABLE  :: ZDXDY         ! grid area
-                    ! for rc, ri, w required if main variables not allocated
-!
-INTEGER :: IIU, IJU, IKU                              ! dimensional indexes
-!
-INTEGER     :: JSV              ! Loop index for Scalar Variables
-INTEGER     :: JSWB             ! loop on SW spectral bands
-INTEGER     :: IIB,IIE,IJB,IJE, IKB, IKE, JI,JJ
-INTEGER     :: IMODEIDX
-              ! index values for the Beginning or the End of the physical
-              ! domain in x and y directions
-TYPE(LIST_ll), POINTER :: TZFIELDS_ll   ! list of fields to exchange
-INTEGER                :: IINFO_ll       ! return code of parallel routine
-!
-!* variables for writing in a fm file
-!
-INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
-                                    !in LFI subroutines at the open of the file
-INTEGER           :: ILUOUT         ! logical unit numbers of output-listing
-INTEGER           :: IMI            ! model index
-INTEGER           :: JKID           ! loop index to look for the KID models
-REAL              :: ZINIRADIUSI, ZINIRADIUSJ ! ORILAM initial radius
-REAL, DIMENSION(NMODE_DST)    :: ZINIRADIUS  ! DUST initial radius
-REAL, DIMENSION(NMODE_SLT)    :: ZINIRADIUS_SLT  ! Sea Salt initial radius
-REAL, DIMENSION(SIZE(XRSVS,1), SIZE(XRSVS,2), SIZE(XRSVS,3), SIZE(XRSVS,4))  :: ZRSVS
-LOGICAL :: GCLD                     ! conditionnal call for dust wet deposition
-! * arrays to store the surface fields before radiation and convection scheme
-!  calls
-INTEGER           :: IMODSON        ! Number of son models of IMI with XWAY=2
-INTEGER           :: IKIDM          ! index loop                                 
-INTEGER           :: IGRADIENTS     ! Number of horizontal gradients in turb
-REAL, DIMENSION(:,:,:),   ALLOCATABLE  :: ZSAVE_INPRR,ZSAVE_INPRS,ZSAVE_INPRG,ZSAVE_INPRH
-REAL, DIMENSION(:,:,:),   ALLOCATABLE  :: ZSAVE_INPRC,ZSAVE_PRCONV,ZSAVE_PRSCONV
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE  :: ZSAVE_DIRFLASWD, ZSAVE_SCAFLASWD,ZSAVE_DIRSRFSWD
-! for ocean model
-INTEGER           :: JKM , JSW         ! vertical index loop                                 
-REAL :: ZSWA,TINTSW     ! index for SW interpolation and int time betwenn forcings (ocean model)
-REAL, DIMENSION(:), ALLOCATABLE :: ZIZOCE(:) ! Solar flux penetrating in ocean
-REAL, DIMENSION(:), ALLOCATABLE :: ZPROSOL1(:),ZPROSOL2(:) ! Funtions for penetrating solar flux
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZLENGTHM, ZLENGTHH, ZMFMOIST !OHARAT turb option from AROME (not allocated in MNH)
-                                                                    ! to be moved as optional args for turb
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTDIFF, ZTDISS
-REAL, DIMENSION(:),ALLOCATABLE  :: ZXHAT_ll,ZYHAT_ll  !  Position x/y in the conformal
-                                                 ! plane (array on the complete domain)
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZDIST ! distance from the center of the cooling 
-!
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZHGRAD ! horizontal gradient used in turb
-TYPE(DIMPHYEX_t) :: YLDIMPHYEX
-LOGICAL :: GCOMPUTE_SRC ! flag to define dimensions of SIGS and SRCT variables 
-!-----------------------------------------------------------------------------
-
-NULLIFY(TZFIELDS_ll)
-IMI=GET_CURRENT_MODEL_INDEX()
-!
-ILUOUT = TLUOUT%NLU
-CALL GET_DIM_EXT_ll ('B',IIU,IJU)
-IKU=SIZE(XTHT,3)
-IKB = 1 + JPVEXT
-IKE = IKU - JPVEXT
-!
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-CALL FILL_DIMPHYEX(YLDIMPHYEX, SIZE(XTHT,1), SIZE(XTHT,2), SIZE(XTHT,3),.TRUE.)
-!
-ZTIME1 = 0.0_MNHTIME
-ZTIME2 = 0.0_MNHTIME
-ZTIME3 = 0.0_MNHTIME
-ZTIME4 = 0.0_MNHTIME
-PTIME_BU = 0._MNHTIME
-ZTIME_LES_MF = 0.0_MNHTIME
-PWETDEPAER(:,:,:,:) = 0.
-!
-!* allocation of variables used in more than one parameterization
-!
-ALLOCATE(ZSFU  (IIU,IJU))         ! surface schemes + turbulence
-ALLOCATE(ZSFV  (IIU,IJU))
-ALLOCATE(ZSFTH (IIU,IJU))
-ALLOCATE(ZSFRV (IIU,IJU))
-ALLOCATE(ZSFSV (IIU,IJU,NSV))
-ALLOCATE(ZSFCO2(IIU,IJU))
-!
-!* if XWAY(son)=2 save surface fields before radiation or convective scheme
-!  calls
-!
-IMODSON = 0
-DO JKID = IMI+1,NMODEL  ! min value of the possible kids
- IF (IMI == NDAD(JKID) .AND. XWAY(JKID) == 2. .AND. CPROGRAM=='MESONH' &
-  .AND. (CCONF == 'RESTA' .OR. (CCONF == 'START' .AND. KTCOUNT /= 1))) THEN
-  IMODSON = IMODSON + 1
- END IF
-END DO
-!
- IF (IMODSON /= 0 ) THEN
-   IF (LUSERC .AND. (                                               &
-       (LSEDIC .AND. CCLOUD(1:3) == 'ICE')                     .OR. &
-       (LSEDC  .AND. (CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO')) .OR. &
-       (MSEDC  .AND. CCLOUD=='LIMA')                                &
-      )) THEN
-     ALLOCATE( ZSAVE_INPRC(SIZE(XINPRC,1),SIZE(XINPRC,2),IMODSON))
-   ELSE
-     ALLOCATE( ZSAVE_INPRC(0,0,0))
-   END IF
-   IF (LUSERR) THEN
-     ALLOCATE( ZSAVE_INPRR(SIZE(XINPRR,1),SIZE(XINPRR,2),IMODSON))
-   ELSE
-     ALLOCATE( ZSAVE_INPRR(0,0,0))
-   END IF
-   IF (LUSERS) THEN
-     ALLOCATE( ZSAVE_INPRS(SIZE(XINPRS,1),SIZE(XINPRS,2),IMODSON))
-   ELSE
-     ALLOCATE( ZSAVE_INPRS(0,0,0))                              
-   END IF
-   IF (LUSERG) THEN
-     ALLOCATE( ZSAVE_INPRG(SIZE(XINPRG,1),SIZE(XINPRG,2),IMODSON))
-   ELSE
-     ALLOCATE( ZSAVE_INPRG(0,0,0))                                
-   END IF
-   IF (LUSERH) THEN
-     ALLOCATE( ZSAVE_INPRH(SIZE(XINPRH,1),SIZE(XINPRH,2),IMODSON))
-   ELSE
-     ALLOCATE( ZSAVE_INPRH(0,0,0))                               
-   END IF
-   IF (CDCONV /= 'NONE') THEN
-     ALLOCATE( ZSAVE_PRCONV(SIZE(XPRCONV,1),SIZE(XPRCONV,2),IMODSON))
-     ALLOCATE( ZSAVE_PRSCONV(SIZE(XPRSCONV,1),SIZE(XPRSCONV,2),IMODSON))
-   ELSE
-     ALLOCATE( ZSAVE_PRCONV(0,0,0))                                
-     ALLOCATE( ZSAVE_PRSCONV(0,0,0))                                    
-   END IF
-   IF (CRAD /= 'NONE') THEN
-     ALLOCATE( ZSAVE_DIRFLASWD(SIZE(XDIRFLASWD,1),SIZE(XDIRFLASWD,2),SIZE(XDIRFLASWD,3),IMODSON))
-     ALLOCATE( ZSAVE_SCAFLASWD(SIZE(XSCAFLASWD,1),SIZE(XSCAFLASWD,2),SIZE(XSCAFLASWD,3),IMODSON))
-     ALLOCATE( ZSAVE_DIRSRFSWD(SIZE(XDIRSRFSWD,1),SIZE(XDIRSRFSWD,2),SIZE(XDIRSRFSWD,3),IMODSON))
-   ELSE
-     ALLOCATE( ZSAVE_DIRFLASWD(0,0,0,0))
-     ALLOCATE( ZSAVE_SCAFLASWD(0,0,0,0))
-     ALLOCATE( ZSAVE_DIRSRFSWD(0,0,0,0)) 
-   END IF
- ENDIF
-!
-IKIDM=0
-DO JKID = IMI+1,NMODEL  ! min value of the possible kids
- IF (IMI == NDAD(JKID) .AND. XWAY(JKID) == 2. .AND. CPROGRAM=='MESONH' &
-  .AND. (CCONF == 'RESTA' .OR. (CCONF == 'START' .AND. KTCOUNT /= 1))) THEN
-! BUG if number of the son does not follow the number of the dad
-! IKIDM = JKID-IMI
-  IKIDM = IKIDM + 1
-   IF (LUSERC .AND. (                                               &
-       (LSEDIC .AND. CCLOUD(1:3) == 'ICE')                     .OR. &
-       (LSEDC  .AND. (CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO')) .OR. &
-       (MSEDC  .AND. CCLOUD=='LIMA')                                &
-      )) THEN
-     ZSAVE_INPRC(:,:,IKIDM) = XINPRC(:,:)
-   END IF
-   IF (LUSERR) THEN
-     ZSAVE_INPRR(:,:,IKIDM) = XINPRR(:,:)
-   END IF
-   IF (LUSERS) THEN
-     ZSAVE_INPRS(:,:,IKIDM) = XINPRS(:,:)
-   END IF
-   IF (LUSERG) THEN
-     ZSAVE_INPRG(:,:,IKIDM) = XINPRG(:,:)
-   END IF
-   IF (LUSERH) THEN
-     ZSAVE_INPRH(:,:,IKIDM) = XINPRH(:,:)
-   END IF
-   IF (CDCONV /= 'NONE') THEN
-     ZSAVE_PRCONV(:,:,IKIDM) = XPRCONV(:,:)
-     ZSAVE_PRSCONV(:,:,IKIDM) = XPRSCONV(:,:)
-   END IF
-   IF (CRAD /= 'NONE') THEN
-     ZSAVE_DIRFLASWD(:,:,:,IKIDM) = XDIRFLASWD(:,:,:)
-     ZSAVE_SCAFLASWD(:,:,:,IKIDM) = XSCAFLASWD(:,:,:)
-     ZSAVE_DIRSRFSWD(:,:,:,IKIDM) = XDIRSRFSWD(:,:,:)
-   END IF
- ENDIF
-END DO
-!
-!-----------------------------------------------------------------------------
-!
-!*        1.    RADIATION SCHEME
-!               ----------------
-!
-!
-XTIME_BU_PROCESS = 0.
-XTIME_LES_BU_PROCESS = 0.
-!
-CALL SECOND_MNH2(ZTIME1)
-!
-!
-!*        1.1   Tests to control how the radiation package should be called (at the current timestep)
-!               -----------------------------------------------------------
-!
-!
-GRAD = .FALSE.
-OCLOUD_ONLY = .FALSE.
-!
-IF (CRAD /='NONE') THEN
-!
-!  test to see if the partial radiations for cloudy must be called
-!
-  IF (CRAD =='ECMW' .OR. CRAD =='ECRA') THEN
-    CALL DATETIME_DISTANCE(TDTRAD_CLONLY,TDTCUR,ZTEMP_DIST)
-    IF( MOD(NINT(ZTEMP_DIST/XTSTEP),NINT(XDTRAD_CLONLY/XTSTEP))==0 ) THEN
-      TDTRAD_CLONLY = TDTCUR
-      GRAD = .TRUE.
-      OCLOUD_ONLY = .TRUE.
-    END IF
-  END IF
-!   
-! test to see if the full radiations must be called
-!   
-  CALL DATETIME_DISTANCE(TDTCUR,TDTRAD_FULL,ZTEMP_DIST)
-  IF( MOD(NINT(ZTEMP_DIST/XTSTEP),NINT(XDTRAD/XTSTEP))==0 ) THEN
-    TDTRAD_FULL = TDTCUR
-    GRAD = .TRUE.
-    OCLOUD_ONLY = .FALSE.
-  END IF
-!
-! tests to see if any cloud exists
-!   
-  IF (CRAD =='ECMW' .OR. CRAD =='ECRA') THEN
-    IF (GRAD .AND. NRR.LE.3 ) THEN 
-      IF( MAX(MAXVAL(XCLDFR(:,:,:)),MAXVAL(XICEFR(:,:,:))).LE. 1.E-10 .AND. OCLOUD_ONLY ) THEN
-          GRAD = .FALSE.                ! only the cloudy verticals would be 
-                                        ! refreshed but there is no clouds 
-      END IF
-    END IF
-!
-    IF (GRAD .AND. NRR.GE.4 ) THEN 
-      IF( CCLOUD(1:3)=='ICE' )THEN
-        IF( MAXVAL(XRT(:,:,:,2)).LE.XRTMIN(2) .AND.             &
-            MAXVAL(XRT(:,:,:,4)).LE.XRTMIN(4) .AND. OCLOUD_ONLY ) THEN
-            GRAD = .FALSE.            ! only the cloudy verticals would be 
-                                      ! refreshed but there is no cloudwater and ice
-        END IF
-      END IF
-      IF( CCLOUD=='C3R5' )THEN
-        IF( MAXVAL(XRT(:,:,:,2)).LE.XRTMIN_C1R3(2) .AND.             &
-            MAXVAL(XRT(:,:,:,4)).LE.XRTMIN_C1R3(4) .AND. OCLOUD_ONLY ) THEN
-            GRAD = .FALSE.            ! only the cloudy verticals would be 
-                                      ! refreshed but there is no cloudwater and ice
-        END IF
-      END IF
-      IF( CCLOUD=='LIMA' )THEN
-        IF( MAXVAL(XRT(:,:,:,2)).LE.XRTMIN_LIMA(2) .AND.             &
-            MAXVAL(XRT(:,:,:,4)).LE.XRTMIN_LIMA(4) .AND. OCLOUD_ONLY ) THEN
-            GRAD = .FALSE.            ! only the cloudy verticals would be 
-                                      ! refreshed but there is no cloudwater and ice
-        END IF
-      END IF      
-    END IF
-  END IF
-!
-END IF
-!
-! global parallel mask for 'GRAD'
-ZRAD_GLOB_ll = 0.0
-IF (GRAD) ZRAD_GLOB_ll = 1.0
-CALL REDUCESUM_ll(ZRAD_GLOB_ll,INFO_ll)
-if (ZRAD_GLOB_ll .NE. 0.0 ) GRAD = .TRUE.
-!
-!
-IF( GRAD ) THEN                                 
-  ALLOCATE(ZCOSZEN(IIU,IJU))
-  ALLOCATE(ZSINZEN(IIU,IJU))
-  ALLOCATE(ZAZIMSOL(IIU,IJU))
-!
-!
-!*        1.2.  Astronomical computations
-!               -------------------------
-!
-! Ajout PP
-IF (.NOT. OCLOUD_ONLY .AND. KTCOUNT /= 1)  THEN 
- IF (LAERO_FT) THEN 
-  CALL AEROZON (XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP,   &
-         NDLON,NFLEV,CAER,NAER,NSTATM,                             &
-         XSINDEL,XCOSDEL,XTSIDER,XCORSOL,                          &
-         XSTATM,XOZON, XAER)
-  XAER_CLIM = XAER
- END IF
-END IF
-!
-CALL SUNPOS_n   ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL )
-!
-!*        1.3   Call to radiation scheme
-!               ------------------------
-!
-  SELECT CASE ( CRAD )
-!
-!*        1.3.1 TOP of Atmposphere radiation
-!               ----------------------------
-    CASE('TOPA')
-!
-      XFLALWD   (:,:)   = 300.
-      DO JSWB=1,NSWB_MNH
-        XDIRFLASWD(:,:,JSWB) = CST%XI0 * MAX(COS(XZENITH(:,:)),0.)/REAL(NSWB_MNH)
-        XSCAFLASWD(:,:,JSWB) = 0.
-      END DO
-      XDTHRAD(:,:,:) = 0.
-     
-!
-!*        1.3.1 FIXEd radiative surface fluxes
-!               ------------------------------
-!
-    CASE('FIXE')
-      ZTIME = MOD(TDTCUR%xtime +XLON0*240., CST%XDAY)
-      IHOUR = INT( ZTIME/3600. )
-      IF (IHOUR < 0) IHOUR=IHOUR + 24
-      ZDT = ZTIME/3600. - REAL(IHOUR)
-      XDIRFLASWD(:,:,:) =(( ZRG_HOUR(IHOUR+1)-ZRG_HOUR(IHOUR) )*ZDT + ZRG_HOUR(IHOUR)) / REAL(NSWB_MNH)
-      XFLALWD   (:,:)   = (ZRAT_HOUR(IHOUR+1)-ZRAT_HOUR(IHOUR))*ZDT + ZRAT_HOUR(IHOUR)
-      DO JSWB=1,NSWB_MNH
-        WHERE(ZCOSZEN(:,:)<0.) XDIRFLASWD(:,:,JSWB) = 0.
-      END DO
-
-      XSCAFLASWD(:,:,:) = XDIRFLASWD(:,:,:) * 0.2
-      XDIRFLASWD(:,:,:) = XDIRFLASWD(:,:,:) * 0.8
-      XDTHRAD(:,:,:) = 0.
-      !
-!
-!*        1.3.2 ECMWF or ECRAD radiative surface and atmospheric fluxes
-!               ----------------------------------------------
-!
-    CASE('ECMW' , 'ECRA')
-      IF (LLES_MEAN) OCLOUD_ONLY=.FALSE.
-      XRADEFF(:,:,:)=0.0
-      XSWU(:,:,:)=0.0
-      XSWD(:,:,:)=0.0
-      XLWU(:,:,:)=0.0
-      XLWD(:,:,:)=0.0
-      XDTHRADSW(:,:,:)=0.0
-      XDTHRADLW(:,:,:)=0.0
-      CALL RADIATIONS( TPFILE,                                                                   &
-                       LCLEAR_SKY, OCLOUD_ONLY, NCLEARCOL_TM1, CEFRADL, CEFRADI, COPWSW, COPISW, &
-                       COPWLW, COPILW, XFUDG,                                                    &
-                       NDLON, NFLEV, NRAD_DIAG, NFLUX, NRAD, NAER, NSWB_OLD, NSWB_MNH, NLWB_MNH, &
-                       NSTATM, NRAD_COLNBR, ZCOSZEN, XSEA, XCORSOL,                              &
-                       XDIR_ALB, XSCA_ALB, XEMIS, MAX(XCLDFR,XICEFR), XCCO2, XTSRAD, XSTATM, XTHT, XRT,      &
-                       XPABST, XOZON, XAER,XDST_WL, XAER_CLIM, XSVT,                             &
-                       XDTHRAD, XFLALWD, XDIRFLASWD, XSCAFLASWD, XRHODREF, XZZ ,                 &
-                       XRADEFF, XSWU, XSWD, XLWU, XLWD, XDTHRADSW, XDTHRADLW                     )
-!
-
-      WRITE(UNIT=ILUOUT,FMT='("  RADIATIONS called for KTCOUNT=",I6,       &
-         &  "with the CLOUD_ONLY option set ",L2)')   KTCOUNT,OCLOUD_ONLY
-!
-      !
-      WHERE (XDIRFLASWD.LT.0.0)
-         XDIRFLASWD=0.0
-      ENDWHERE
-      !
-      WHERE (XDIRFLASWD.GT.1500.0)
-         XDIRFLASWD=1500.0
-      ENDWHERE
-      !
-      WHERE (XSCAFLASWD.LT.0.0) 
-         XSCAFLASWD=0.0
-      ENDWHERE
-      !
-      WHERE (XSCAFLASWD.GT.1500.0) 
-         XSCAFLASWD=1500.0
-      ENDWHERE
-      !
-      WHERE( XDIRFLASWD(:,:,1) + XSCAFLASWD(:,:,1) >0. )
-        XALBUV(:,:) = (  XDIR_ALB(:,:,1) * XDIRFLASWD(:,:,1)   &
-                       + XSCA_ALB(:,:,1) * XSCAFLASWD(:,:,1) ) &
-                    / (XDIRFLASWD(:,:,1) + XSCAFLASWD(:,:,1) )
-      ELSEWHERE
-        XALBUV(:,:) = XDIR_ALB(:,:,1)
-      END WHERE
-!
-  END SELECT
-!
-  CALL SECOND_MNH2(ZTIME2)
-!
-  PRAD = PRAD + ZTIME2 - ZTIME1
-!
-  ZTIME1 = ZTIME2
-!
-  CALL SURF_RAD_MODIF (XMAP, XXHAT, XYHAT,                 &
-                  ZCOSZEN, ZSINZEN, ZAZIMSOL, XZS, XZS_XY, &
-                  XDIRFLASWD, XDIRSRFSWD                   )
-!
-!* Azimuthal angle to be sent later to surface processes
-!  Defined in radian, clockwise, from North
-!
-  XAZIM = ZAZIMSOL
-!
-  CALL SECOND_MNH2(ZTIME2)
-!
-  PSHADOWS = PSHADOWS + ZTIME2 - ZTIME1
-!
-  ZTIME1 = ZTIME2
-!
-  DEALLOCATE(ZCOSZEN)
-  DEALLOCATE(ZSINZEN)
-  DEALLOCATE(ZAZIMSOL)
-!
-END IF
-!
-!
-!*        1.4   control prints
-!               --------------
-!
-!*        1.5   Radiative tendency integration
-!               ------------------------------
-!
-IF (CRAD /='NONE') THEN
-  if ( TBUCONF%LBUDGET_th ) call Budget_store_init( TBUDGETS(NBUDGET_TH), 'RAD', xrths(:, :, :) )
-  XRTHS(:,:,:) = XRTHS(:,:,:) + XRHODJ(:,:,:)*XDTHRAD(:,:,:)
-  if ( TBUCONF%LBUDGET_th ) call Budget_store_end ( TBUDGETS(NBUDGET_TH), 'RAD', xrths(:, :, :) )
-END IF
-!
-!
-!*        1.6   Ocean case:
-! Sfc turbulent fluxes & Radiative tendency due to SW penetrating ocean
-! 
-IF (LCOUPLES) THEN
-ZSFU(:,:)= XSSUFL_C(:,:,1)
-ZSFV(:,:)= XSSVFL_C(:,:,1)
-ZSFTH(:,:)= XSSTFL_C(:,:,1)
-ZSFRV(:,:)=XSSRFL_C(:,:,1)
-ELSE 
-IF (LOCEAN) THEN
-!
-  ALLOCATE( ZIZOCE(IKU)); ZIZOCE(:)=0. 
-  ALLOCATE( ZPROSOL1(IKU))
-  ALLOCATE( ZPROSOL2(IKU))
-  ALLOCATE(XSSOLA(IIU,IJU))
-  ! Time interpolation
-  JSW     = INT(TDTCUR%xtime/REAL(NINFRT))
-  ZSWA    = TDTCUR%xtime/REAL(NINFRT)-REAL(JSW)
-  ZSFRV = 0.
-  ZSFTH  = (XSSTFL_T(JSW+1)*(1.-ZSWA)+XSSTFL_T(JSW+2)*ZSWA) 
-  ZSFU = (XSSUFL_T(JSW+1)*(1.-ZSWA)+XSSUFL_T(JSW+2)*ZSWA)
-  ZSFV = (XSSVFL_T(JSW+1)*(1.-ZSWA)+XSSVFL_T(JSW+2)*ZSWA)
-!
-  ZIZOCE(IKU)   = XSSOLA_T(JSW+1)*(1.-ZSWA)+XSSOLA_T(JSW+2)*ZSWA
-  ZPROSOL1(IKU) = CST%XROC*ZIZOCE(IKU)
-  ZPROSOL2(IKU) = (1.-CST%XROC)*ZIZOCE(IKU)
-  IF(NVERB >= 5 ) THEN   
-!    WRITE(ILUOUT,*)'ZSWA JSW TDTCUR XTSTEP FT FU FV SolarR(IKU)', NINFRT, ZSWA,JSW,&
-!       TDTCUR%xtime, XTSTEP, ZSFTH(2,2), ZSFU(2,2),ZSFV(2,2),ZIZOCE(IKU)
-   WRITE(ILUOUT,*)'XSSTP1,XSSTP,NINFRT,ZSWA,JSW,TDTCUR%xtime,ZSFT', &
-      XSSTFL_T(JSW+1),XSSTFL_T(JSW),NINFRT,ZSWA,JSW, TDTCUR%xtime,ZSFTH(2,2)
-  END IF
-  if ( TBUCONF%LBUDGET_th ) call Budget_store_init( TBUDGETS(NBUDGET_TH), 'OCEAN', xrths(:, :, :) ) 
-  DO JKM=IKU-1,2,-1
-    ZPROSOL1(JKM) = ZPROSOL1(JKM+1)* exp(-XDZZ(2,2,JKM)/CST%XD1)
-    ZPROSOL2(JKM) = ZPROSOL2(JKM+1)* exp(-XDZZ(2,2,JKM)/CST%XD2)
-    ZIZOCE(JKM)   = (ZPROSOL1(JKM+1)-ZPROSOL1(JKM) + ZPROSOL2(JKM+1)-ZPROSOL2(JKM))/XDZZ(2,2,JKM)
-    ! Adding to temperature tendency, the solar radiation penetrating in ocean
-    XRTHS(:,:,JKM) = XRTHS(:,:,JKM) + XRHODJ(:,:,JKM)*ZIZOCE(JKM)
-  END DO
-  if ( TBUCONF%LBUDGET_th ) call Budget_store_end ( TBUDGETS(NBUDGET_TH), 'OCEAN', xrths(:, :, :) )
-  DEALLOCATE (XSSOLA)
-  DEALLOCATE( ZIZOCE) 
-  DEALLOCATE (ZPROSOL1)
-  DEALLOCATE (ZPROSOL2)
-END IF! LOCEAN NO LCOUPLES
-END IF!NO LCOUPLES
-!
-!
-CALL SECOND_MNH2(ZTIME2)
-!
-PRAD = PRAD + ZTIME2 - ZTIME1 &
-     - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
-!
-PTIME_BU = PTIME_BU + XTIME_LES_BU_PROCESS + XTIME_BU_PROCESS
-!
-!
-!-----------------------------------------------------------------------------
-!
-!*        2.    DEEP CONVECTION SCHEME
-!               ----------------------
-!
-ZTIME1 = ZTIME2
-XTIME_BU_PROCESS = 0.
-XTIME_LES_BU_PROCESS = 0.
-!
-CALL SECOND_MNH2(ZTIME1)
-!
-IF( CDCONV == 'KAFR' .OR. CSCONV == 'KAFR' ) THEN
-
-  if (  TBUCONF%LBUDGET_th ) call Budget_store_init( TBUDGETS(NBUDGET_TH), 'DCONV', xrths(:, :, :)    )
-  if (  TBUCONF%LBUDGET_rv ) call Budget_store_init( TBUDGETS(NBUDGET_RV), 'DCONV', xrrs (:, :, :, 1) )
-  if (  TBUCONF%LBUDGET_rc ) call Budget_store_init( TBUDGETS(NBUDGET_RC), 'DCONV', xrrs (:, :, :, 2) )
-  if (  TBUCONF%LBUDGET_ri ) call Budget_store_init( TBUDGETS(NBUDGET_RI), 'DCONV', xrrs (:, :, :, 4) )
-  if (  TBUCONF%LBUDGET_sv .and. lchtrans ) then
-    do jsv = 1, size( xrsvs, 4 )
-      call Budget_store_init( TBUDGETS(NBUDGET_SV1 - 1 + jsv), 'DCONV', xrsvs (:, :, :, jsv) )
-    end do
-  end if
-!
-! test to see if the deep convection scheme should be called
-!
-  GDCONV = .FALSE.
-!
-  CALL DATETIME_DISTANCE(TDTDCONV,TDTCUR,ZTEMP_DIST)
-  IF( MOD(NINT(ZTEMP_DIST/XTSTEP),NINT(XDTCONV/XTSTEP))==0 ) THEN
-    TDTDCONV = TDTCUR
-    GDCONV   = .TRUE.
-  END IF
-!
-  IF( GDCONV ) THEN
-    IF (CDCONV == 'KAFR' .OR. CSCONV == 'KAFR' ) THEN
-        ALLOCATE( ZRC(IIU,IJU,IKU) )
-        ALLOCATE( ZRI(IIU,IJU,IKU) )
-        ALLOCATE( ZWT(IIU,IJU,IKU) )
-        ALLOCATE( ZDXDY(IIU,IJU) )
-        ! Compute grid area
-        ZDXDY(:,:) = SPREAD(XDXHAT(1:IIU),2,IJU) * SPREAD(XDYHAT(1:IJU),1,IIU)
-        !
-        IF( LUSERC .AND. LUSERI ) THEN
-          ZRC(:,:,:) = XRT(:,:,:,2)
-          ZRI(:,:,:) = XRT(:,:,:,4)
-        ELSE IF( LUSERC .AND. (.NOT. LUSERI) ) THEN
-          ZRC(:,:,:) = XRT(:,:,:,2)
-          ZRI(:,:,:) = 0.0
-        ELSE
-          ZRC(:,:,:) = 0.0
-          ZRI(:,:,:) = 0.0
-        END IF
-        WRITE(UNIT=ILUOUT,FMT='("  CONVECTION called for KTCOUNT=",I6)')  &
-                                              KTCOUNT
-        IF ( LFORCING .AND. L1D ) THEN
-          ZWT(:,:,:) = XWTFRC(:,:,:)
-        ELSE
-          ZWT(:,:,:) = XWT(:,:,:)
-        ENDIF
-        IF (LDUST) CALL DUST_FILTER(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF(:,:,:))
-        IF (LSALT) CALL SALT_FILTER(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF(:,:,:))
-        IF (LCH_CONV_LINOX) THEN
-          CALL CONVECTION( XDTCONV, CDCONV, CSCONV, LREFRESH_ALL, LDOWN, NICE, &
-                         LSETTADJ, XTADJD, XTADJS, LDIAGCONV, NENSM,           &
-                         XPABST, XZZ, ZDXDY,                                   &
-                         XTHT, XRT(:,:,:,1), ZRC, ZRI, XUT, XVT,               &
-                         ZWT,XTKET(:,:,IKB),                                   &
-                         NCOUNTCONV, XDTHCONV, XDRVCONV, XDRCCONV, XDRICONV,   &
-                         XPRCONV, XPRSCONV,                                    &
-                         XUMFCONV,XDMFCONV,XMFCONV,XPRLFLXCONV,XPRSFLXCONV,    &
-                         XCAPE, NCLTOPCONV, NCLBASCONV,                        &
-                         LCHTRANS, XSVT, XDSVCONV,                             &
-                         LUSECHEM, LCH_CONV_SCAV, LCH_CONV_LINOX,              &
-                         LDUST, LSALT,                                         &
-                         XRHODREF, XIC_RATE, XCG_RATE                          )
-        ELSE
-          CALL CONVECTION( XDTCONV, CDCONV, CSCONV, LREFRESH_ALL, LDOWN, NICE, &
-                         LSETTADJ, XTADJD, XTADJS, LDIAGCONV, NENSM,           &
-                         XPABST, XZZ, ZDXDY,                                   &
-                         XTHT, XRT(:,:,:,1), ZRC, ZRI, XUT, XVT,               &
-                         ZWT,XTKET(:,:,IKB),                                   &
-                         NCOUNTCONV, XDTHCONV, XDRVCONV, XDRCCONV, XDRICONV,   &
-                         XPRCONV, XPRSCONV,                                    &
-                         XUMFCONV,XDMFCONV,XMFCONV,XPRLFLXCONV,XPRSFLXCONV,    &
-                         XCAPE, NCLTOPCONV, NCLBASCONV,                        &
-                         LCHTRANS, XSVT, XDSVCONV,                             &
-                         LUSECHEM, LCH_CONV_SCAV, LCH_CONV_LINOX,              &
-                         LDUST, LSALT,                                         &
-                         XRHODREF )
-        END IF
-!
-        DEALLOCATE( ZRC )
-        DEALLOCATE( ZRI )
-        DEALLOCATE( ZWT )
-        DEALLOCATE( ZDXDY )
-    END IF    
-  END IF
-!
-!  Deep convection tendency integration
-!
-  XRTHS(:,:,:)  = XRTHS(:,:,:)  + XRHODJ(:,:,:) * XDTHCONV(:,:,:)
-  XRRS(:,:,:,1) = XRRS(:,:,:,1) + XRHODJ(:,:,:) * XDRVCONV(:,:,:)
-!
-!
-! Aerosols size distribution
-! Compute Rg and sigma before tracers convection tendency (for orilam, dust and sea
-! salt)
-!
-
-  IF ( LCHTRANS ) THEN  ! update tracers for chemical transport
-    IF (LORILAM) ZRSVS(:,:,:,:) = XRSVS(:,:,:,:)    !
-    IF ((LDUST)) THEN ! dust convective balance
-      ALLOCATE(ZSIGDST(IIU,IJU,IKU,NMODE_DST))
-      ALLOCATE(ZRGDST(IIU,IJU,IKU,NMODE_DST))
-      ALLOCATE(ZNDST(IIU,IJU,IKU,NMODE_DST))
-      ALLOCATE(ZSVDST(IIU,IJU,IKU,NSV_DST))
-      !
-      DO JSV=1,NMODE_DST
-        IMODEIDX = JPDUSTORDER(JSV)
-        IF (CRGUNITD=="MASS") THEN
-          ZINIRADIUS(JSV) = XINIRADIUS(IMODEIDX) * EXP(-3.*(LOG(XINISIG(IMODEIDX)))**2)
-        ELSE
-          ZINIRADIUS(JSV) = XINIRADIUS(IMODEIDX)
-        END IF
-        ZSIGDST(:,:,:,JSV) = XINISIG(IMODEIDX)
-        ZRGDST(:,:,:,JSV)  = ZINIRADIUS(JSV)
-        ZNDST(:,:,:,JSV)   = XN0MIN(IMODEIDX)
-      ENDDO
-      !
-      DO JSV=NSV_DSTBEG,NSV_DSTEND
-        ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) = XRSVS(:,:,:,JSV) * XTSTEP / XRHODJ(:,:,:) 
-      ENDDO
-      CALL PPP2DUST(ZSVDST(IIB:IIE,IJB:IJE,IKB:IKE,:), XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE),&
-              PSIG3D=ZSIGDST(IIB:IIE,IJB:IJE,IKB:IKE,:), PRG3D=ZRGDST(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
-              PN3D=ZNDST(IIB:IIE,IJB:IJE,IKB:IKE,:))
-    END IF
-    !
-    IF ((LSALT)) THEN ! sea salt convective balance
-      ALLOCATE(ZSIGSLT(IIU,IJU,IKU,NMODE_SLT))
-      ALLOCATE(ZRGSLT(IIU,IJU,IKU,NMODE_SLT))
-      ALLOCATE(ZNSLT(IIU,IJU,IKU,NMODE_SLT))
-      ALLOCATE(ZSVSLT(IIU,IJU,IKU,NSV_SLT))
-      !
-      DO JSV=1,NMODE_SLT
-        IMODEIDX = JPSALTORDER(JSV)
-        IF (CRGUNITS=="MASS") THEN
-          ZINIRADIUS_SLT(JSV) = XINIRADIUS_SLT(IMODEIDX) * &
-                            EXP(-3.*(LOG(XINISIG_SLT(IMODEIDX)))**2)
-        ELSE
-          ZINIRADIUS_SLT(JSV) = XINIRADIUS_SLT(IMODEIDX)
-        END IF
-        ZSIGSLT(:,:,:,JSV) = XINISIG_SLT(IMODEIDX)
-        ZRGSLT(:,:,:,JSV)  = ZINIRADIUS_SLT(JSV)
-        ZNSLT(:,:,:,JSV)   = XN0MIN_SLT(IMODEIDX)
-      ENDDO
-      !
-      DO JSV=NSV_SLTBEG,NSV_SLTEND
-        ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) = XRSVS(:,:,:,JSV) * XTSTEP / XRHODJ(:,:,:) 
-      ENDDO
-      CALL PPP2SALT(ZSVSLT(IIB:IIE,IJB:IJE,IKB:IKE,:), XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE),&
-              PSIG3D=ZSIGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:), PRG3D=ZRGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:),   &
-              PN3D=ZNSLT(IIB:IIE,IJB:IJE,IKB:IKE,:))
-    END IF
-    !
-!
-! Compute convective tendency for all tracers
-!
-  IF (LCHTRANS) THEN
-    DO JSV = 1, SIZE(XRSVS,4)
-      XRSVS(:,:,:,JSV) = XRSVS(:,:,:,JSV) + XRHODJ(:,:,:) * XDSVCONV(:,:,:,JSV)
-    END DO
-    IF (LORILAM) THEN
-      DO JSV = NSV_AERBEG,NSV_AEREND
-        PWETDEPAER(:,:,:,JSV-NSV_AERBEG+1) = XDSVCONV(:,:,:,JSV) * XRHODJ(:,:,:)
-        XRSVS(:,:,:,JSV) = ZRSVS(:,:,:,JSV) 
-      END DO
-    END IF  
-  END IF
-!
-  IF ((LDUST).AND.(LCHTRANS)) THEN ! dust convective balance
-    IF (CPROGRAM == "MESONH") THEN
-      DO JSV=NSV_DSTBEG,NSV_DSTEND
-          ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) = XRSVS(:,:,:,JSV) * XTSTEP / XRHODJ(:,:,:) 
-      ENDDO
-    ELSE
-      DO JSV=NSV_DSTBEG,NSV_DSTEND
-        ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) = XSVT(:,:,:,JSV)
-      ENDDO
-    ENDIF
-    CALL DUST2PPP(ZSVDST(IIB:IIE,IJB:IJE,IKB:IKE,:), &
-                    XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE), ZSIGDST(IIB:IIE,IJB:IJE,IKB:IKE,:),&
-                    ZRGDST(IIB:IIE,IJB:IJE,IKB:IKE,:))
-    DO JSV=NSV_DSTBEG,NSV_DSTEND
-      XRSVS(:,:,:,JSV) =  ZSVDST(:,:,:,JSV-NSV_DSTBEG+1) * XRHODJ(:,:,:) / XTSTEP
-    ENDDO
-    !
-    DEALLOCATE(ZSVDST)
-    DEALLOCATE(ZNDST)
-    DEALLOCATE(ZRGDST)
-    DEALLOCATE(ZSIGDST)
-  END IF
-    !
-  IF ((LSALT).AND.(LCHTRANS)) THEN ! sea salt convective balance
-    IF (CPROGRAM == "MESONH") THEN
-      DO JSV=NSV_SLTBEG,NSV_SLTEND
-        ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) = XRSVS(:,:,:,JSV) * XTSTEP / XRHODJ(:,:,:) 
-      ENDDO
-    ELSE
-      DO JSV=NSV_SLTBEG,NSV_SLTEND
-        ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) = XSVT(:,:,:,JSV)
-      ENDDO
-    END IF
-    CALL SALT2PPP(ZSVSLT(IIB:IIE,IJB:IJE,IKB:IKE,:), &
-                  XRHODREF(IIB:IIE,IJB:IJE,IKB:IKE), ZSIGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:),&
-                  ZRGSLT(IIB:IIE,IJB:IJE,IKB:IKE,:))
-    DO JSV=NSV_SLTBEG,NSV_SLTEND
-      XRSVS(:,:,:,JSV) =  ZSVSLT(:,:,:,JSV-NSV_SLTBEG+1) * XRHODJ(:,:,:) / XTSTEP
-    ENDDO
-    !
-    DEALLOCATE(ZSVSLT)
-    DEALLOCATE(ZNSLT)
-    DEALLOCATE(ZRGSLT)
-    DEALLOCATE(ZSIGSLT)
-  END IF
-  !
-END IF
-!
-  IF( LUSERC .AND. LUSERI ) THEN
-    XRRS(:,:,:,2) = XRRS(:,:,:,2) + XRHODJ(:,:,:) * XDRCCONV(:,:,:)
-    XRRS(:,:,:,4) = XRRS(:,:,:,4) + XRHODJ(:,:,:) * XDRICONV(:,:,:)
-!
-  ELSE IF ( LUSERC .AND. (.NOT. LUSERI) ) THEN
-!
-!  If only cloud water but no cloud ice is used, the convective tendency
-!     for cloud ice is added to the tendency for cloud water
-!
-      XRRS(:,:,:,2) = XRRS(:,:,:,2) + XRHODJ(:,:,:) * (XDRCCONV(:,:,:) + &
-                                                       XDRICONV(:,:,:)   )
-!     and cloud ice is melted
-!
-      XRTHS(:,:,:) = XRTHS(:,:,:) - XRHODJ(:,:,:) *                      &
-         ( XP00/XPABST(:,:,:) )**(XRD/XCPD) * CST%XLMTT / XCPD * XDRICONV(:,:,:)
-!
-  ELSE IF ( (.NOT. LUSERC) .AND. (.NOT. LUSERI) ) THEN
-!
-!  If no cloud water and no cloud ice are used the convective tendencies for these
-!     variables are added to the water vapor tendency
-!
-      XRRS(:,:,:,1) = XRRS(:,:,:,1) + XRHODJ(:,:,:) * (XDRCCONV(:,:,:) + &
-                                                       XDRICONV(:,:,:)   )
-!     and all cloud condensate is evaporated
-!
-      XRTHS(:,:,:) = XRTHS(:,:,:) - XRHODJ(:,:,:) / XCPD * (              &
-                     CST%XLVTT * XDRCCONV(:,:,:) + CST%XLSTT * XDRICONV(:,:,:) ) *&
-                    ( XP00 / XPABST(:,:,:) ) ** ( XRD / XCPD )
-  END IF
-
-  if (  TBUCONF%LBUDGET_th ) call Budget_store_end( TBUDGETS(NBUDGET_TH), 'DCONV', xrths(:, :, :)    )
-  if (  TBUCONF%LBUDGET_rv ) call Budget_store_end( TBUDGETS(NBUDGET_RV), 'DCONV', xrrs (:, :, :, 1) )
-  if (  TBUCONF%LBUDGET_rc ) call Budget_store_end( TBUDGETS(NBUDGET_RC), 'DCONV', xrrs (:, :, :, 2) )
-  if (  TBUCONF%LBUDGET_ri ) call Budget_store_end( TBUDGETS(NBUDGET_RI), 'DCONV', xrrs (:, :, :, 4) )
-  if (  TBUCONF%LBUDGET_sv .and. lchtrans ) then
-    do jsv = 1, size( xrsvs, 4 )
-      call Budget_store_end( TBUDGETS(NBUDGET_SV1 - 1 + jsv), 'DCONV', xrsvs (:, :, :, jsv) )
-    end do
-  end if
-END IF
-!
-CALL SECOND_MNH2(ZTIME2)
-!
-PKAFR = PKAFR + ZTIME2 - ZTIME1 &
-       - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
-!
-PTIME_BU = PTIME_BU + XTIME_LES_BU_PROCESS + XTIME_BU_PROCESS
-!
-!-----------------------------------------------------------------------------
-!
-!*        3.    TURBULENT SURFACE FLUXES
-!               ------------------------
-!
-ZTIME1 = ZTIME2
-!
-IF (CSURF=='EXTE') THEN
-  CALL GOTO_SURFEX(IMI)
-!
-  IF( LTRANS ) THEN
-    XUT(:,:,1+JPVEXT) = XUT(:,:,1+JPVEXT) + XUTRANS
-    XVT(:,:,1+JPVEXT) = XVT(:,:,1+JPVEXT) + XVTRANS
-  END IF
-  !
-  ALLOCATE(ZDIR_ALB(IIU,IJU,NSWB_MNH))
-  ALLOCATE(ZSCA_ALB(IIU,IJU,NSWB_MNH))
-  ALLOCATE(ZEMIS  (IIU,IJU,NLWB_MNH))
-  ALLOCATE(ZTSRAD (IIU,IJU))
-  !  
-  IKIDM=0
-  DO JKID = IMI+1,NMODEL  ! min value of the possible kids
-    IF (IMI == NDAD(JKID) .AND. XWAY(JKID) == 2. .AND. &
-     CPROGRAM=='MESONH' .AND. &
-     (CCONF == 'RESTA' .OR. (CCONF == 'START' .AND. KTCOUNT /= 1))) THEN
-    !  where kids exist, use the two-way output fields (i.e. OMASKkids true)
-    !  rather than the farther calculations in radiation and convection schemes
-! BUG if number of the son does not follow the number of the dad
-!    IKIDM = JKID-IMI
-      IKIDM = IKIDM + 1
-     IF (LUSERC .AND. (                                               &
-         (LSEDIC .AND. CCLOUD(1:3) == 'ICE')                     .OR. &
-         (LSEDC  .AND. (CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO')) .OR. &
-         (MSEDC  .AND. CCLOUD=='LIMA')                                &
-        )) THEN
-         WHERE (OMASKkids(:,:) )
-            XINPRC(:,:) = ZSAVE_INPRC(:,:,IKIDM)
-          ENDWHERE
-      END IF
-      IF (LUSERR) THEN
-        WHERE (OMASKkids(:,:) )
-          XINPRR(:,:) = ZSAVE_INPRR(:,:,IKIDM)
-        ENDWHERE
-      END IF
-      IF (LUSERS) THEN
-        WHERE (OMASKkids(:,:) )
-          XINPRS(:,:) = ZSAVE_INPRS(:,:,IKIDM)
-       ENDWHERE
-      END IF
-      IF (LUSERG) THEN
-        WHERE (OMASKkids(:,:) )
-          XINPRG(:,:) = ZSAVE_INPRG(:,:,IKIDM)
-        ENDWHERE
-      END IF
-      IF (LUSERH) THEN
-        WHERE (OMASKkids(:,:) )
-          XINPRH(:,:) = ZSAVE_INPRH(:,:,IKIDM)
-        ENDWHERE
-      END IF
-      IF (CDCONV /= 'NONE') THEN
-        WHERE (OMASKkids(:,:) )
-          XPRCONV(:,:) = ZSAVE_PRCONV(:,:,IKIDM)
-          XPRSCONV(:,:) = ZSAVE_PRSCONV(:,:,IKIDM)
-        ENDWHERE
-      END IF
-      IF (CRAD /= 'NONE') THEN
-        DO JSWB=1,NSWB_MNH
-          WHERE (OMASKkids(:,:) ) 
-            XDIRFLASWD(:,:,JSWB) = ZSAVE_DIRFLASWD(:,:,JSWB,IKIDM)
-            XSCAFLASWD(:,:,JSWB) = ZSAVE_SCAFLASWD(:,:,JSWB,IKIDM)
-            XDIRSRFSWD(:,:,JSWB) = ZSAVE_DIRSRFSWD(:,:,JSWB,IKIDM)
-          ENDWHERE
-        ENDDO
-      END IF
-    ENDIF
-  END DO
-  !
- IF (IMODSON /= 0 ) THEN
-    DEALLOCATE( ZSAVE_INPRR,ZSAVE_INPRS,ZSAVE_INPRG,ZSAVE_INPRH)
-    DEALLOCATE( ZSAVE_INPRC,ZSAVE_PRCONV,ZSAVE_PRSCONV)
-    DEALLOCATE( ZSAVE_DIRFLASWD,ZSAVE_SCAFLASWD,ZSAVE_DIRSRFSWD)
- END IF
-  CALL GROUND_PARAM_n(YLDIMPHYEX,ZSFTH, ZSFRV, ZSFSV, ZSFCO2, ZSFU, ZSFV, &
-                      ZDIR_ALB, ZSCA_ALB, ZEMIS, ZTSRAD, KTCOUNT, TPFILE )
-  !
-  IF (LIBM) THEN
-    WHERE(XIBM_LS(:,:,IKB,1).GT.-XIBM_EPSI)
-      ZSFTH(:,:)=0.
-      ZSFRV(:,:)=0. 
-      ZSFU (:,:)=0. 
-      ZSFV (:,:)=0.
-    ENDWHERE
-    IF (NSV>0) THEN
-      DO JSV = 1 , NSV
-         WHERE(XIBM_LS(:,:,IKB,1).GT.-XIBM_EPSI) ZSFSV(:,:,JSV)=0.
-      ENDDO
-    ENDIF 
-  ENDIF
-  !
-  IF (SIZE(XEMIS)>0) THEN
-    XDIR_ALB = ZDIR_ALB
-    XSCA_ALB = ZSCA_ALB
-    XEMIS    = ZEMIS
-    XTSRAD   = ZTSRAD
-  END IF
-  !
-  DEALLOCATE(ZDIR_ALB)
-  DEALLOCATE(ZSCA_ALB)
-  DEALLOCATE(ZEMIS   )
-  DEALLOCATE(ZTSRAD  )
-  !
-  !
-  IF( LTRANS ) THEN
-    XUT(:,:,1+JPVEXT) = XUT(:,:,1+JPVEXT) - XUTRANS
-    XVT(:,:,1+JPVEXT) = XVT(:,:,1+JPVEXT) - XVTRANS
-  END IF
-!
-ELSE ! case no SURFEX (CSURF logical)
-  ZSFSV    = 0.
-  ZSFCO2   = 0.
-  IF (.NOT.LOCEAN) THEN
-    ZSFTH    = 0.
-    ZSFRV    = 0.
-    ZSFSV    = 0.
-    ZSFCO2   = 0.
-    ZSFU     = 0.
-    ZSFV     = 0.
-  END IF
-END IF !CSURF
-!
-CALL SECOND_MNH2(ZTIME2)
-!
-PGROUND = PGROUND + ZTIME2 - ZTIME1
-!
-!-----------------------------------------------------------------------------
-!
-!*        3.1    EDDY FLUXES PARAMETRIZATION
-!               ------------------
-!
-IF (IMI==1) THEN  ! On calcule les flus turb. comme preconise par PP
-
-   ! Heat eddy fluxes
-   IF ( LTH_FLX ) CALL EDDY_FLUX_n(IMI,KTCOUNT,XVT,XTHT,XRHODJ,XRTHS,XVTH_FLUX_M,XWTH_FLUX_M)
-   !
-   ! Momentum eddy fluxes
-   IF ( LUV_FLX ) CALL EDDYUV_FLUX_n(IMI,KTCOUNT,XVT,XTHT,XRHODJ,XRHODREF,XPABSM,XRVS,XVU_FLUX_M)
-
-ELSE
-   ! TEST pour maille infèrieure à 20km ? 
-   !      car pb d'instabilités ?
-   !      Pour le modèle fils, on spawne les flux du modèle père
-   ! Heat eddy fluxes
-   IF ( LTH_FLX ) CALL EDDY_FLUX_ONE_WAY_n (IMI,KTCOUNT,NDXRATIO_ALL(IMI),NDYRATIO_ALL(IMI),CLBCX,CLBCY)
-   !
-   ! Momentum eddy fluxes
-   IF ( LUV_FLX ) CALL EDDYUV_FLUX_ONE_WAY_n (IMI,KTCOUNT,NDXRATIO_ALL(IMI),NDYRATIO_ALL(IMI),CLBCX,CLBCY)
-   !
-END IF
-!-----------------------------------------------------------------------------
-!
-!*        4.    PASSIVE POLLUTANTS
-!               ------------------
-!
-ZTIME1 = ZTIME2
-!
-IF (LPASPOL) CALL PASPOL(XTSTEP, ZSFSV, ILUOUT, NVERB, TPFILE)
-!
-!
-!*        4b.  PASSIVE POLLUTANTS FOR MASS-FLUX SCHEME DIAGNOSTICS
-!              ---------------------------------------------------
-!
-IF (LCONDSAMP) CALL CONDSAMP(XTSTEP, ZSFSV, ILUOUT, NVERB)
-!
-CALL SECOND_MNH2(ZTIME2)
-!
-PTRACER = PTRACER + ZTIME2 - ZTIME1
-!-----------------------------------------------------------------------------
-!
-!*        5a.    Drag force 
-!               ----------
-!
-ZTIME1 = ZTIME2
-XTIME_BU_PROCESS = 0.
-XTIME_LES_BU_PROCESS = 0.
-!
-IF (LDRAGTREE) CALL DRAG_VEG( XTSTEP, XUT, XVT, XTKET, LDEPOTREE, XVDEPOTREE, &
-                              CCLOUD, XPABST, XTHT, XRT, XSVT, XRHODJ, XZZ,   &
-                              XRUS, XRVS, XRTKES, XRRS, XRSVS )
-!
-IF (LDRAGBLDG) CALL DRAG_BLD( XTSTEP, XUT, XVT, XTKET, XRHODJ, XZZ, XRUS, XRVS, XRTKES )
-!
-CALL SECOND_MNH2(ZTIME2)
-!
-PDRAG = PDRAG + ZTIME2 - ZTIME1 &
-             - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
-!
-PTIME_BU = PTIME_BU + XTIME_LES_BU_PROCESS + XTIME_BU_PROCESS
-!
-!*        5b.   Drag force from wind turbines 
-!               -----------------------
-!
-ZTIME1 = ZTIME2
-XTIME_BU_PROCESS = 0.
-XTIME_LES_BU_PROCESS = 0.
-!
-IF (LMAIN_EOL .AND. IMI == NMODEL_EOL) THEN
- CALL EOL_MAIN(KTCOUNT,XTSTEP,     &
-               XDXX,XDYY,XDZZ,     &
-               XRHODJ,             &
-               XUT,XVT,XWT,        &
-               XRUS, XRVS, XRWS    )
-END IF
-!
-CALL SECOND_MNH2(ZTIME2)
-!
-PEOL = PEOL + ZTIME2 - ZTIME1 &
-             - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
-!
-PTIME_BU = PTIME_BU + XTIME_LES_BU_PROCESS + XTIME_BU_PROCESS
-!
-!*        
-!-----------------------------------------------------------------------------
-!
-!*        6.    TURBULENCE SCHEME
-!               -----------------
-!
-ZTIME1 = ZTIME2
-XTIME_BU_PROCESS = 0.
-XTIME_LES_BU_PROCESS = 0.
-!
-ZSFTH(:,:)  = ZSFTH(:,:) * XDIRCOSZW(:,:)
-ZSFRV(:,:)  = ZSFRV(:,:) * XDIRCOSZW(:,:)
-DO JSV=1,NSV
-  ZSFSV(:,:,JSV)  = ZSFSV(:,:,JSV) * XDIRCOSZW(:,:)
-END DO
-!
-IF (LLES_CALL) CALL SWITCH_SBG_LES_n
-!
-!
-IF ( CTURB == 'TKEL' ) THEN
-!
-
-!*        6.1 complete surface flux fields on the border
-!
-!!$  IF(NHALO == 1) THEN
-    CALL ADD2DFIELD_ll( TZFIELDS_ll, ZSFTH, 'PHYS_PARAM_n::ZSFTH' )
-    CALL ADD2DFIELD_ll( TZFIELDS_ll, ZSFRV, 'PHYS_PARAM_n::ZSFRV' )
-    CALL ADD2DFIELD_ll( TZFIELDS_ll, ZSFU,  'PHYS_PARAM_n::ZSFU' )
-    CALL ADD2DFIELD_ll( TZFIELDS_ll, ZSFV,  'PHYS_PARAM_n::ZSFV' )
-    IF(NSV >0)THEN
-      DO JSV=1,NSV
-        write ( ynum, '( I6 ) ' ) jsv
-        CALL ADD2DFIELD_ll( TZFIELDS_ll, ZSFSV(:,:,JSV), 'PHYS_PARAM_n::ZSFSV:'//trim( adjustl( ynum ) ) )
-      END DO
-    END IF
-    CALL ADD2DFIELD_ll( TZFIELDS_ll, ZSFCO2, 'PHYS_PARAM_n::ZSFCO2' )
-    CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-    CALL CLEANLIST_ll(TZFIELDS_ll)
-!!$  END IF
-!
-  CALL MPPDB_CHECK2D(ZSFU,"phys_param::ZSFU",PRECISION)
-  !
-  IF ( CLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN
-    ZSFTH(IIB-1,:)=ZSFTH(IIB,:)
-    ZSFRV(IIB-1,:)=ZSFRV(IIB,:)
-    ZSFU(IIB-1,:)=ZSFU(IIB,:)
-    ZSFV(IIB-1,:)=ZSFV(IIB,:)
-    IF (NSV>0)  THEN
-      ZSFSV(IIB-1,:,:)=ZSFSV(IIB,:,:)
-      WHERE ((ZSFSV(IIB-1,:,:).LT.0.).AND.(XSVT(IIB-1,:,IKB,:).EQ.0.))
-          ZSFSV(IIB-1,:,:) = 0.
-      END WHERE
-    ENDIF
-    ZSFCO2(IIB-1,:)=ZSFCO2(IIB,:)
-  END IF
-  !
-  IF ( CLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN
-    ZSFTH(IIE+1,:)=ZSFTH(IIE,:)
-    ZSFRV(IIE+1,:)=ZSFRV(IIE,:)
-    ZSFU(IIE+1,:)=ZSFU(IIE,:)
-    ZSFV(IIE+1,:)=ZSFV(IIE,:)
-    IF (NSV>0) THEN
-      ZSFSV(IIE+1,:,:)=ZSFSV(IIE,:,:)
-      WHERE ((ZSFSV(IIE+1,:,:).LT.0.).AND.(XSVT(IIE+1,:,IKB,:).EQ.0.))
-          ZSFSV(IIE+1,:,:) = 0.
-      END WHERE
-    ENDIF
-    ZSFCO2(IIE+1,:)=ZSFCO2(IIE,:)
-  END IF
-  !
-  IF ( CLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN
-    ZSFTH(:,IJB-1)=ZSFTH(:,IJB)
-    ZSFRV(:,IJB-1)=ZSFRV(:,IJB)
-    ZSFU(:,IJB-1)=ZSFU(:,IJB)
-    ZSFV(:,IJB-1)=ZSFV(:,IJB)
-    IF (NSV>0) THEN
-      ZSFSV(:,IJB-1,:)=ZSFSV(:,IJB,:)
-      WHERE ((ZSFSV(:,IJB-1,:).LT.0.).AND.(XSVT(:,IJB-1,IKB,:).EQ.0.))
-          ZSFSV(:,IJB-1,:) = 0.
-      END WHERE
-    ENDIF
-    ZSFCO2(:,IJB-1)=ZSFCO2(:,IJB)
-  END IF
-  !
-  IF ( CLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN
-    ZSFTH(:,IJE+1)=ZSFTH(:,IJE)
-    ZSFRV(:,IJE+1)=ZSFRV(:,IJE)
-    ZSFU(:,IJE+1)=ZSFU(:,IJE)
-    ZSFV(:,IJE+1)=ZSFV(:,IJE)
-    IF (NSV>0) THEN
-      ZSFSV(:,IJE+1,:)=ZSFSV(:,IJE,:)
-      WHERE ((ZSFSV(:,IJE+1,:).LT.0.).AND.(XSVT(:,IJE+1,IKB,:).EQ.0.))
-          ZSFSV(:,IJE+1,:) = 0.
-      END WHERE
-    ENDIF
-    ZSFCO2(:,IJE+1)=ZSFCO2(:,IJE)
-  END IF
-!
-  IF( LTRANS ) THEN
-    XUT(:,:,:) = XUT(:,:,:) + XUTRANS
-    XVT(:,:,:) = XVT(:,:,:) + XVTRANS
-  END IF
-!
-!
-IF(ALLOCATED(XTHW_FLUX))  THEN
- DEALLOCATE(XTHW_FLUX)
- ALLOCATE(XTHW_FLUX(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)))
-ELSE
- ALLOCATE(XTHW_FLUX(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)))
-END IF
-
-IF(ALLOCATED(XRCW_FLUX))  THEN
- DEALLOCATE(XRCW_FLUX)
- ALLOCATE(XRCW_FLUX(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)))
-ELSE
- ALLOCATE(XRCW_FLUX(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)))
-END IF
-!
-IF(ALLOCATED(XSVW_FLUX))  THEN
- DEALLOCATE(XSVW_FLUX)
- ALLOCATE(XSVW_FLUX(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),SIZE(XSVT,4)))
-ELSE
- ALLOCATE(XSVW_FLUX(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),SIZE(XSVT,4)))
-END IF
-!
-GCOMPUTE_SRC=SIZE(XSIGS, 3)/=0
-!
-ALLOCATE(ZTDIFF(IIU,IJU,IKU))
-ALLOCATE(ZTDISS(IIU,IJU,IKU))
-!
-!! Compute Shape of sfc flux for Oceanic Deep Conv Case
-!
-IF (LOCEAN .AND. LDEEPOC) THEN
-  ALLOCATE(ZDIST(IIU,IJU))
-  !*       COMPUTES THE PHYSICAL SUBDOMAIN BOUNDS
-  ALLOCATE(ZXHAT_ll(NIMAX_ll+2*JPHEXT),ZYHAT_ll(NJMAX_ll+2*JPHEXT))
-  !compute ZXHAT_ll = position in the (0:Lx) domain 1 (Lx=Size of domain1 )
-  !compute XXHAT_ll = position in the (L0_subproc,Lx_subproc) domain for the current subproc
-  !                                     L0_subproc as referenced in the full domain 1
-  CALL GATHERALL_FIELD_ll('XX',XXHAT,ZXHAT_ll,IRESP)
-  CALL GATHERALL_FIELD_ll('YY',XYHAT,ZYHAT_ll,IRESP)
-  CALL GET_DIM_EXT_ll('B',IIU,IJU)
-  DO JJ = IJB,IJE
-    DO JI = IIB,IIE
-      ZDIST(JI,JJ) = SQRT(                         &
-      (( (XXHAT(JI)+XXHAT(JI+1))*0.5 - XCENTX_OC ) / XRADX_OC)**2 + &
-      (( (XYHAT(JJ)+XYHAT(JJ+1))*0.5 - XCENTY_OC ) / XRADY_OC)**2   &
-                                )
-    END DO
-  END DO
-  DO JJ=IJB,IJE
-    DO JI=IIB,IIE
-      IF ( ZDIST(JI,JJ) > 1.) ZSFTH(JI,JJ)=0.
-    END DO
-  END DO
-END IF !END DEEP OCEAN CONV CASE
-!
-LSTATNW = .FALSE.
-LHARAT = .FALSE.
-!
-IF(LLEONARD) THEN
-  IGRADIENTS=6
-  ALLOCATE(ZHGRAD(IIU,IJU,IKU,IGRADIENTS))
-  ZHGRAD(:,:,:,1) = GX_W_UW(XWT(:,:,:), XDXX,XDZZ,XDZX,1,IKU,1)
-  ZHGRAD(:,:,:,2) = GY_W_VW(XWT(:,:,:), XDXX,XDZZ,XDZX,1,IKU,1)
-  ZHGRAD(:,:,:,3) = GX_M_M(XTHT(:,:,:), XDXX,XDZZ,XDZX,1,IKU,1)
-  ZHGRAD(:,:,:,4) = GY_M_M(XTHT(:,:,:), XDXX,XDZZ,XDZX,1,IKU,1)
-  ZHGRAD(:,:,:,5) = GX_M_M(XRT(:,:,:,1), XDXX,XDZZ,XDZX,1,IKU,1)
-  ZHGRAD(:,:,:,6) = GY_M_M(XRT(:,:,:,1), XDXX,XDZZ,XDZX,1,IKU,1)
-END IF
-   CALL TURB( CST,CSTURB, TBUCONF, TURBN,YLDIMPHYEX,TLES, &
-              IMI, NRR, NRRL, NRRI, CLBCX, CLBCY, IGRADIENTS, NHALO,                 &
-              1, NMODEL_CLOUD,                                                       &
-              NSV, NSV_LGBEG, NSV_LGEND,CPROGRAM,                                    &
-              NSV_LIMA_NR, NSV_LIMA_NS, NSV_LIMA_NG, NSV_LIMA_NH,                    &
-              L2D, LNOMIXLG,LFLAT,                                                   &
-              LCOUPLES, LBLOWSNOW, LIBM,                                             &
-              GCOMPUTE_SRC, XRSNOW,                                                  &
-              LOCEAN, LDEEPOC, LDIAG_IN_RUN,                                         &
-              CTURBLEN_CLOUD, CCLOUD,                                                &
-              XTSTEP, TPFILE,                                                        &
-              XDXX, XDYY, XDZZ, XDZX, XDZY, XZZ,                                     &
-              XDIRCOSXW, XDIRCOSYW, XDIRCOSZW, XCOSSLOPE, XSINSLOPE,                 &
-              XRHODJ, XTHVREF, ZHGRAD, XZS,                                          &
-              ZSFTH, ZSFRV, ZSFSV, ZSFU, ZSFV,                                       &
-              XPABST, XUT, XVT, XWT, XTKET, XSVT, XSRCT,                             &
-              ZLENGTHM, ZLENGTHH, ZMFMOIST,                                          &
-              XBL_DEPTH, XSBL_DEPTH,                                                 &
-              XCEI, XCEI_MIN, XCEI_MAX, XCOEF_AMPL_SAT,                              &
-              XTHT, XRT,                                                             &
-              XRUS, XRVS, XRWS, XRTHS, XRRS, XRSVS, XRTKES, XSIGS, XWTHVMF,          &
-              XTHW_FLUX, XRCW_FLUX, XSVW_FLUX,XDYP, XTHP, ZTDIFF, ZTDISS,            &
-              TBUDGETS, KBUDGETS=SIZE(TBUDGETS),PLEM=XLEM,PRTKEMS=XRTKEMS,           &
-              PTR=XTR, PDISS=XDISS, PCURRENT_TKE_DISS=XCURRENT_TKE_DISS,             &
-              PIBM_LS=XIBM_LS(:,:,:,1), PIBM_XMUT=XIBM_XMUT,                         & 
-              PSSTFL=XSSTFL, PSSTFL_C=XSSTFL_C, PSSRFL_C=XSSRFL_C,                   &
-              PSSUFL_C=XSSUFL_C, PSSVFL_C=XSSVFL_C, PSSUFL=XSSUFL, PSSVFL=XSSVFL     )
-!
-DEALLOCATE(ZTDIFF)
-DEALLOCATE(ZTDISS)
-IF(LLEONARD) DEALLOCATE(ZHGRAD)
-!
-IF (LRMC01) THEN
-  CALL ADD2DFIELD_ll( TZFIELDS_ll, XSBL_DEPTH, 'PHYS_PARAM_n::XSBL_DEPTH' )
-  CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-  CALL CLEANLIST_ll(TZFIELDS_ll)
-  IF ( CLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN
-    XSBL_DEPTH(IIB-1,:)=XSBL_DEPTH(IIB,:)
-  END IF
-  IF ( CLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN
-    XSBL_DEPTH(IIE+1,:)=XSBL_DEPTH(IIE,:)
-  END IF
-  IF ( CLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN
-    XSBL_DEPTH(:,IJB-1)=XSBL_DEPTH(:,IJB)
-  END IF
-  IF ( CLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN
-    XSBL_DEPTH(:,IJE+1)=XSBL_DEPTH(:,IJE)
-  END IF
-END IF
-!
-CALL SECOND_MNH2(ZTIME3)
-!
-!-----------------------------------------------------------------------------
-!
-!*        7.    EDMF SCHEME
-!               -----------
-!
-IF (CSCONV == 'EDKF') THEN
-     ALLOCATE(ZEXN (IIU,IJU,IKU))
-     ALLOCATE(ZSIGMF (IIU,IJU,IKU))
-     ZSIGMF(:,:,:)=0.    
-     ZEXN(:,:,:)=(XPABST(:,:,:)/XP00)**(XRD/XCPD)  
-     !$20131113 check3d on ZEXN
-     CALL MPPDB_CHECK3D(ZEXN,"physparan.7::ZEXN",PRECISION)
-     CALL ADD3DFIELD_ll( TZFIELDS_ll, ZEXN, 'PHYS_PARAM_n::ZEXN' )
-     !$20131113 add update_halo_ll
-     CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-     CALL CLEANLIST_ll(TZFIELDS_ll)
-     CALL MPPDB_CHECK3D(ZEXN,"physparam.7::ZEXN",PRECISION)
- !    
-     CALL SHALLOW_MF_PACK(NRR,NRRL,NRRI,                                  &
-                   LMF_FLX,TPFILE,ZTIME_LES_MF,                           &
-                   XIMPL_MF, XTSTEP,                                      &
-                   XDZZ, XZZ,XDXHAT(1),XDYHAT(1),                         &
-                   XRHODJ, XRHODREF, XPABST, ZEXN, ZSFTH, ZSFRV,          &
-                   XTHT,XRT,XUT,XVT,XTKET,XSVT,                           &
-                   XRTHS,XRRS,XRUS,XRVS,XRSVS,                            &
-                   ZSIGMF,XRC_MF, XRI_MF, XCF_MF, XWTHVMF)
-!
-ELSE
-    XWTHVMF(:,:,:)=0.
-    XRC_MF(:,:,:)=0.
-    XRI_MF(:,:,:)=0.
-    XCF_MF(:,:,:)=0.
-ENDIF   
-!
-CALL SECOND_MNH2(ZTIME4)
-
-  IF( LTRANS ) THEN
-    XUT(:,:,:) = XUT(:,:,:) - XUTRANS
-    XVT(:,:,:) = XVT(:,:,:) - XVTRANS
-  END IF
-  IF (CMF_CLOUD == 'STAT') THEN
-    XSIGS =SQRT( XSIGS**2 + ZSIGMF**2 )
-  ENDIF
-  IF (CSCONV == 'EDKF') THEN
-    DEALLOCATE(ZSIGMF)
-    DEALLOCATE(ZEXN)
-  ENDIF
-END IF
-!
-IF (LLES_CALL) CALL SWITCH_SBG_LES_n
-!
-CALL SECOND_MNH2(ZTIME2)
-!
-PTURB = PTURB + ZTIME2 - ZTIME1 - (XTIME_LES-ZTIME_LES_MF) - XTIME_LES_BU_PROCESS &
-      - XTIME_BU_PROCESS - (ZTIME4 - ZTIME3)
-!
-PMAFL = PMAFL + ZTIME4 - ZTIME3 - ZTIME_LES_MF
-!
-PTIME_BU = PTIME_BU + XTIME_LES_BU_PROCESS + XTIME_BU_PROCESS
-!
-!
-!-------------------------------------------------------------------------------
-!
-!* deallocation of variables used in more than one parameterization
-!
-DEALLOCATE(ZSFU  )         ! surface schemes + turbulence
-DEALLOCATE(ZSFV  )
-DEALLOCATE(ZSFTH )
-DEALLOCATE(ZSFRV )
-DEALLOCATE(ZSFSV )
-DEALLOCATE(ZSFCO2)
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE PHYS_PARAM_n
-
diff --git a/src/mesonh/ext/prep_ideal_case.f90 b/src/mesonh/ext/prep_ideal_case.f90
deleted file mode 100644
index 3a340fe6f..000000000
--- a/src/mesonh/ext/prep_ideal_case.f90
+++ /dev/null
@@ -1,1950 +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.
-!-----------------------------------------------------------------
-!     #######################
-      PROGRAM PREP_IDEAL_CASE
-!     #######################
-!
-!!****  *PREP_IDEAL_CASE* - program to write an initial FM-file 
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this program is to prepare an initial meso-NH file
-!     (LFIFM and DESFM files) filled with some idealized fields.    
-!
-!      ---- The present version can provide two types of fields:
-!
-!      1) CIDEAL = 'CSTN' : 3D fields derived  from a vertical profile with
-!         ---------------   n levels of constant moist Brunt Vaisala frequency
-!             The vertical profile is read in EXPRE file.                 
-!             These fields can be used for model runs 
-!
-!      2) CIDEAL = 'RSOU' : 3D fields derived from a radiosounding.
-!          --------------- 
-!             The radiosounding is read in EXPRE file. 
-!             The following kind of data  is permitted :
-!                  YKIND = 'STANDARD'  :   Zsol, Psol, Tsol, TDsol
-!                                         (Pressure, dd, ff) , 
-!                                         (Pressure, T, Td)
-!                  YKIND = 'PUVTHVMR'  : zsol, Psol, Thvsol, Rsol
-!                                        (Pressure, U, V) , 
-!                                        (Pressure, THv, R)
-!                  YKIND = 'PUVTHVHU'  :  zsol, Psol, Thvsol, Husol
-!                                         (Pressure, U, V) , 
-!                                         (Pressure, THv, Hu)
-!                  YKIND = 'ZUVTHVHU'  :  zsol, Psol, Thvsol, Husol
-!                                         (height, U, V) , 
-!                                         (height, THv, Hu)
-!                  YKIND = 'ZUVTHVMR'  :  zsol, Psol, Thvsol, Rsol
-!                                         (height, U, V) , 
-!                                         (height, THv, R)
-!                  YKIND = 'PUVTHDMR'  : zsol, Psol, Thdsol, Rsol
-!                                         (Pressure, U, V) , 
-!                                         (Pressure, THd, R)
-!                  YKIND = 'PUVTHDHU'  : zsol, Psol, Thdsol, Husol
-!                                         (Pressure, U, V) , 
-!                                         (Pressure, THd, Hu)
-!                  YKIND = 'ZUVTHDMR'  :  zsol, Psol, Thdsol, Rsol
-!                                         (height, U, V) , 
-!                                         (height, THd, R)
-!                  YKIND = 'ZUVTHLMR'  :  zsol, Psol, Thdsol, Rsol
-!                                         (height, U, V) , 
-!                                         (height, THl, Rt)
-!
-!             These fields can be used for model runs 
-!
-!      Cases (1) and (2) can be balanced
-!      (geostrophic, hydrostatic  and anelastic balances) if desired.
-!
-!      ---- The orography can be flat (YZS='FLAT'), but also 
-!      sine-shaped (YZS='SINE') or  bell-shaped (YZS='BELL')
-!
-!      ---- The U(z)  profile given in the RSOU and CSTN cases can
-!      be multiplied (CUFUN="Y*Z") by a function of y (function FUNUY)  
-!      The V(z) profile  given in the RSOU and CSTN cases can
-!      be multiplied (CVFUN="X*Z") by a function of x (function FUNVX). 
-!      If it is not the case, i.e. U(y,z)=U(z) then CUFUN="ZZZ" and 
-!      CVFUN="ZZZ" for V(y,z)=V(z). Instead of these separable forms,
-!      non-separables functions FUNUYZ (CUFUN="Y,Z")  and FUNVXZ (CVFUN="X,Z") 
-!      can be used to specify the wind components.
-!
-!!**  METHOD
-!!    ------
-!!      The directives and data to perform the preparation of the initial FM
-!!    file are stored in EXPRE file. This file is composed  of two parts : 
-!!          - a namelists-format  part which is present in all cases
-!!          - a free-format  part which contains data in cases 
-!!       of discretised orography (CZS='DATA')
-!!       of radiosounding (CIDEAL='RSOU') or Nv=cste  profile (CIDEAL='CSTN')
-!!       of forced version (LFORCING=.TRUE.)
-!!    
-!!
-!!      The following  PREP_IDEAL_CASE program  :
-!!
-!!             - initializes physical constants by calling INI_CST 
-!!
-!!             - sets default values for global variables which will be 
-!!     written  in DESFM file and for variables in EXPRE file (namelists part)
-!!     which will be written in LFIFM file.    
-!!
-!!             - reads the namelists part of EXPRE file which gives 
-!!     informations about the preinitialization to perform,
-!!
-!!             - allocates memory for arrays, 
-!!
-!!             - initializes fields depending on the 
-!!              directives  (CIDEAL in namelist NAM_CONF_PRE) :
-!!  
-!!                * grid variables : 
-!!                  The gridpoints are regularly spaced by XDELTAX, XDELTAY.
-!!               The grid is stretched along the z direction, the mesh varies 
-!!               from XDZGRD near the ground to XDZTOP near the top and the 
-!!               weigthing function is a TANH function characterized by its 
-!!               center and width above and under this center
-!!                  The orography is initialized following the kind of orography
-!!               (YZS in namelist NAM_CONF_PRE) and the degrees of freedom :
-!!                     sine-shape ---> ZHMAX, IEXPX,IEXPY
-!!                     bell-shape ---> ZHMAX, ZAX,ZAY,IIZS,IJZS
-!!                  The horizontal grid variables are initialized following
-!!                the kind of geometry (LCARTESIAN in namelist NAM_CONF_PRE) 
-!!                and the grid parameters XLAT0,XLON0,XBETA in both geometries
-!!                and XRPK,XLONORI,XLATORI  in conformal projection.
-!!                  In the  case of initialization from a radiosounding, the
-!!                date and time is read in free-part of the EXPRE file. In other
-!!                cases year, month and day are set to NUNDEF and time to 0.
-!!
-!!               * prognostic fields : 
-!!
-!!                     U,V,W, Theta and r. are first determined. They are
-!!                multiplied by rhoj after the anelastic reference state 
-!!                computation.
-!!                     For the CSTN and RSOU cases, the determination of 
-!!                Theta and rv is performed  respectively by SET_RSOU
-!!                and by SET_CSTN which call the common routine SET_MASS. 
-!!                These three routines have  the following actions :
-!!          ---   The input vertical profile   is converted in 
-!!                variables (U,V,thetav,r) and  interpolated
-!!                on a mixed grid (with VERT_COORD) as in PREP_REAL_CASE 
-!!          ---   A variation of the u-wind component( x-model axis component) 
-!!                 is possible in y direction, a variation of the v-wind component 
-!!                (y-model axis component) is possible in x direction.
-!!          ---   Thetav could be computed with thermal wind balance
-!!                (LGEOSBAL=.TRUE. with call of SET_GEOSBAL)                 
-!!          ---   The mass fields (theta and r ) and the wind components are 
-!!                then interpolated on the model grid with orography  as in
-!!                PREP_REAL_CASE with the option LSHIFT                
-!!          ---   An  anelastic correction is  applied in PRESSURE_IN_PREP in
-!!                the case of non-vanishing orography.    
-!!            
-!!               * anelastic reference state variables :
-!!
-!!                   1D reference state : 
-!!                     RSOU and CSTN cases : rhorefz and thvrefz are computed 
-!!                         by   SET_REFZ (called by SET_MASS).
-!!                         They are deduced from thetav and r on the model grid
-!!                         without orography.
-!!                   The 3D reference state is  computed by SET_REF   
-!!            
-!!               * The total mass of dry air is computed by TOTAL_DMASS              
-!!
-!!             - writes the DESFM file, 
-!!
-!!             - writes the LFIFM file . 
-!!
-!!    EXTERNAL
-!!    --------
-!!      DEFAULT_DESFM : to set default values for variables which can be 
-!!                      contained in DESFM file
-!!      DEFAULT_EXPRE : to  set default values for other global variables 
-!!                      which can be contained in namelist-part of EXPRE file
-!!      Module MODE_GRIDPROJ : contains conformal projection routines
-!!           SM_GRIDPROJ   : to compute some grid variables, in
-!!                           case of conformal projection.
-!!      Module MODE_GRIDCART : contains cartesian geometry routines
-!!           SM_GRIDCART   : to compute some grid variables, in
-!!                           case of cartesian geometry.
-!!      SET_RSOU      : to initialize mass fields from a radiosounding
-!!      SET_CSTN      : to initialize mass fields from a vertical profile of 
-!!                      n layers of Nv=cste 
-!!      SET_REF       : to compute  rhoJ 
-!!      RESSURE_IN_PREP : to apply an anelastic correction in the case of
-!!                        non-vanishing orography 
-!!      IO_File_open : to open a FM-file (DESFM + LFIFM)
-!!      WRITE_DESFM   : to write the  DESFM file
-!!      WRI_LFIFM     : to write the   LFIFM file  
-!!      IO_File_close : to close a FM-file (DESFM + LFIFM)
-!!
-!!      MXM,MYM,MZM   : Shuman operators
-!!      WGUESS        : to compute W with the continuity equation from 
-!!                      the U,V values 
-!!
-!!
-!!      
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_PARAMETERS : contains parameters
-!!      Module MODD_DIM1      : contains dimensions 
-!!      Module MODD_CONF       : contains  configuration variables for 
-!!                                all models
-!!      Module MODD_CST        : contains physical constants
-!!      Module MODD_GRID       : contains grid variables  for all models
-!!      Module MODD_GRID1     : contains grid variables
-!!      Module MODD_TIME      : contains time variables for all models  
-!!      Module MODD_TIME1     : contains time variables  
-!!      Module MODD_REF        : contains reference state variables for
-!!                               all models
-!!      Module MODD_REF1      : contains reference state variables 
-!!      Module MODD_LUNIT      : contains variables which concern names
-!!                            and logical unit numbers of files  for all models
-!!      Module MODD_FIELD1    : contains prognostics  variables
-!!      Module MODD_GR_FIELD1 : contains the surface prognostic variables 
-!!      Module MODD_LSFIELD1    : contains Larger Scale fields
-!!      Module MODD_DYN1        : contains dynamic control variables for model 1
-!!      Module MODD_LBC1        : contains lbc control variables for model 1
-!!
-!!
-!!      Module MODN_CONF1    : contains  configuration variables for model 1
-!!                               and the NAMELIST list
-!!      Module MODN_LUNIT1    : contains variables which concern names
-!!                               and logical unit numbers of files and 
-!!                               the NAMELIST list
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of MESO-NH documentation (program PREP_IDEAL_CASE)
-!!    
-!!    AUTHOR
-!!    ------
-!!	V. Ducrocq   *Meteo France*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original                            05/05/94
-!!      updated                V. Ducrocq   27/06/94   
-!!      updated                P.M.         27/07/94
-!!      updated                V. Ducrocq   23/08/94 
-!!      updated                V. Ducrocq   01/09/94 
-!!      namelist changes       J. Stein     26/10/94 
-!!      namelist changes       J. Stein     04/11/94 
-!!      remove the second step of the geostrophic balance 14/11/94 (J.Stein)
-!!      add grid stretching in the z direction + Larger scale fields +
-!!      cleaning                                           6/12/94 (J.Stein) 
-!!      periodize the orography and the grid sizes in the periodic case
-!!                                                        19/12/94 (J.Stein) 
-!!      correct a bug in the Larger Scale Fields initialization
-!!                                                        19/12/94 (J.Stein) 
-!!      add the vertical grid stretching                  02/01/95 (J. Stein)
-!!      Total mass of dry air computation                 02/01/95 (J.P.Lafore) 
-!!      add the 1D switch                                 13/01/95 (J. Stein)
-!!      enforce a regular vertical grid if desired        18/01/95 (J. Stein)
-!!      add the tdtcur initialization                     26/01/95 (J. Stein)
-!!      bug in the test of the type of RS localization    25/02/95 (J. Stein)
-!!      remove R from the historical variables            16/03/95 (J. Stein)
-!!      error on the grid stretching                      30/06/95 (J. Stein)
-!!      add the soil fields                               01/09/95 (S.Belair)
-!!      change the streching function  and the wind guess
-!!        (J. Stein and V.Masson)                         21/09/95 
-!!      reset to FALSE LUSERC,..,LUSERH                   12/12/95 (J. Stein)
-!!      enforce the RS localization in 1D and 2D config.
-!!      + add the 'TSZ0' option for the soil variables    28/01/96 (J. Stein)
-!!      initialization of domain from center point        31/01/96 (V. Masson)
-!!      add the constant file reading                     05/02/96 (J. Stein)
-!!      enter vertical model levels values                20/10/95 (T.Montmerle)
-!!      add LFORCING option                               19/02/96 (K. Suhre)
-!!      modify structure of NAM_CONF_PRE                  20/02/96 (J.-P. Pinty)
-!!      default of the domain center when use of pgd file 12/03/96 (V. Masson)
-!!      change the surface initialization                 20/03/96 ( Stein,
-!!                                                    Bougeault, Kastendeutsch )
-!!      change the DEFAULT_DESFMN CALL                    17/04/96 ( Lafore )
-!!      set the STORAGE_TYPE to 'TT' (a single instant)   30/04/96 (Stein, 
-!!                                                    Jabouille)
-!!      new wguess to spread  the divergence              15/05/96 (Stein)
-!!      set LTHINSHELL to TRUE + return to the old wguess 29/08/96 (Stein)
-!!      MY_NAME and DAD_NAME writing for nesting          30/07/96 (Lafore)
-!!      MY_NAME and DAD_NAME reading in pgd file          26/09/96 (Masson)
-!!       and reading of pgd grid in a new routine
-!!      XXHAT and XYHAT are set to 0. at origine point    02/10/96 (Masson)
-!!      add LTHINSHELL in namelist NAM_CONF_PRE           08/10/96 (Masson)
-!!      restores use of TS and T2                         26/11/96 (Masson)
-!!      value  XUNDEF for soil and vegetation fields on sea 27/11/96 (Masson)
-!!      use of HUG and HU2 in both ISBA and TSZ0 cases    04/12/96 (Masson)
-!!      add initialization of chemical variables          06/08/96 (K. Suhre)
-!!      add MANUAL option for the terrain elevation       12/12/96 (J.-P. Pinty)
-!!      set DATA instead of MANUAL for the terrain
-!!      elevation option
-!!      add new anelastic equations' systems              29/06/97 (Stein)
-!!      split mode_lfifm_pgd                              29/07/97 (Masson)
-!!      add directional z0 and subgrid scale orography    31/07/97 (Masson)
-!!      separates surface treatment in PREP_IDEAL_SURF    15/03/99 (Masson)
-!!      new PGD fields allocations                        15/03/99 (Masson)
-!!      iterative call to pressure solver                 15/03/99 (Masson)
-!!      removes TSZ0 case                                 04/01/00 (Masson)
-!!      parallelization                                   18/06/00 (Pinty)
-!!      adaptation for patch approach                     02/07/00 (Solmon/Masson)
-!!      bug in W LB field on Y direction                  05/03/01 (Stein)
-!!      add module MODD_NSV for NSV variable              01/02/01 (D. Gazen) 
-!!      allow namelists in different orders               15/10/01 (I. Mallet)
-!!      allow LUSERC and LUSERI in 1D configuration       05/06/02 (P. Jabouille)
-!!      add  ZUVTHLMR case (move in set_rsou latter)      05/12/02 Jabouille/Masson
-!!      move LHORELAX_SV (after INI_NSV)                  30/04/04 (Pinty)
-!!      Correction Parallel bug IBEG & IDEND  evalution   13/11/08 J.Escobar
-!!      add the option LSHIFT for interpolation of        26/10/10 (G.Tanguy)
-!!      correction for XHAT & parallelizarion of ZSDATA   23/09/11 J.Escobar
-!!      the vertical profile (as in PREP_REAL_CASE)
-!!      add use MODI of SURFEX routines                   10/10/111 J.Escobar
-!!
-!!      For 2D modeling: 
-!!      Initialization of ADVFRC profiles (SET_ADVFRC)    06/2010 (P.Peyrille)
-!!      when LDUMMY(2)=T in PRE_IDEA1.nam 
-!!      USE MODDB_ADVFRC_n for grid-nesting               02*2012 (M. Tomasini)
-!!      LBOUSS in MODD_REF                                07/2013 (C.Lac)
-!!      Correction for ZS in PGD file                     04/2014 (G. TANGUY)
-!!      Bug : remove NC WRITE_HGRID                       05/2014 (S. Bielli via J.Escobar )
-!!      BUG if ZFRC and ZFRC_ADV or ZFRC_REL are used together  11/2014 (G. Delautier)
-!!      Bug : detected with cray compiler ,
-!!                  missing '&' in continuation string  3/12/2014 J.Escobar
-!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
-!!  06/2016     (G.Delautier) phasage surfex 8
-!!      P.Wautelet : 08/07/2016 : removed MNH_NCWRIT define
-!!  01/2018      (G.Delautier) SURFEX 8.1
-!  P. Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
-!  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
-!  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
-!  P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing
-!  P. Wautelet 19/04/2019: removed unused dummy arguments and variables
-!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!  F. Auguste     02/2021: add IBM
-!  P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv
-!  Jean-Luc Redelsperger 03/2021: ocean LES case
-!  P. Wautelet 06/07/2021: use FINALIZE_MNH
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-USE MODD_PARAMETERS       ! Declarative modules
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-USE MODD_DIM_n
-USE MODD_CONF
-USE MODD_CST
-USE MODD_GRID
-USE MODD_GRID_n
-USE MODD_IBM_LSF,     ONLY: CIBM_TYPE, LIBM_LSF, NIBM_SMOOTH, XIBM_SMOOTH
-USE MODD_IBM_PARAM_n, ONLY: XIBM_LS
-USE MODD_METRICS_n
-USE MODD_PGDDIM
-USE MODD_PGDGRID
-USE MODD_TIME
-USE MODD_TIME_n
-USE MODD_PARAM_ICE, ONLY: PARAM_ICE_ASSOCIATE
-USE MODD_REF
-USE MODD_REF_n
-USE MODD_LUNIT
-USE MODD_FIELD_n
-USE MODD_DYN_n
-USE MODD_LBC_n
-USE MODD_LSFIELD_n
-USE MODD_PARAM_n
-USE MODD_CH_MNHC_n,        ONLY:  LUSECHEM, LUSECHAQ, LUSECHIC, LCH_PH, LCH_INIT_FIELD
-USE MODD_CH_AEROSOL,ONLY:  LORILAM, CORGANIC, LVARSIGI, LVARSIGJ, LINITPM, XINIRADIUSI, &
-                           XINIRADIUSJ, XINISIGI, XINISIGJ, XN0IMIN, XN0JMIN, CRGUNIT
-USE MODD_DUST,      ONLY:  LDUST, NMODE_DST, CRGUNITD, XINISIG, XINIRADIUS, XN0MIN 
-USE MODD_SALT,      ONLY:  LSALT, NMODE_SLT, CRGUNITS, XINISIG_SLT, XINIRADIUS_SLT, XN0MIN_SLT
-USE MODD_VAR_ll,    ONLY:  NPROC
-USE MODD_LUNIT,     ONLY:  TLUOUT0, TOUTDATAFILE
-USE MODD_LUNIT_n
-USE MODD_IO,        ONLY: TFILE_DUMMY, TFILE_OUTPUTLISTING
-USE MODD_CONF_n
-USE MODD_NSV,       ONLY: NSV
-use modd_precision, only: LFIINT, MNHREAL_MPI, MNHTIME
-!
-USE MODN_BLANK_n
-!
-USE MODE_FINALIZE_MNH,     only: FINALIZE_MNH
-USE MODE_THERMO
-USE MODE_POS
-USE MODE_GRIDCART         ! Executive modules
-USE MODE_GRIDPROJ
-USE MODE_GATHER_ll
-USE MODE_IO,               only: IO_Config_set, IO_Init, IO_Pack_set
-USE MODE_IO_FIELD_READ,    only: IO_Field_read
-USE MODE_IO_FIELD_WRITE,   only: IO_Field_write, IO_Header_write
-USE MODE_IO_FILE,          only: IO_File_close, IO_File_open
-USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list
-USE MODE_ll
-USE MODE_MODELN_HANDLER
-use mode_field,            only: Alloc_field_scalars, Ini_field_list, Ini_field_scalars
-USE MODE_MSG
-!
-USE MODI_DEFAULT_DESFM_n    ! Interface modules
-USE MODI_DEFAULT_EXPRE
-USE MODI_IBM_INIT_LS
-USE MODI_READ_HGRID
-USE MODI_SHUMAN
-USE MODI_SET_RSOU
-USE MODI_SET_CSTN
-USE MODI_SET_FRC
-USE MODI_PRESSURE_IN_PREP
-USE MODI_WRITE_DESFM_n
-USE MODI_WRITE_LFIFM_n
-USE MODI_METRICS
-USE MODI_UPDATE_METRICS
-USE MODI_SET_REF
-USE MODI_SET_PERTURB
-USE MODI_TOTAL_DMASS
-USE MODI_CH_INIT_FIELD_n
-USE MODI_INI_NSV
-USE MODI_READ_PRE_IDEA_NAM_n
-USE MODI_ZSMT_PIC
-USE MODI_ZSMT_PGD
-USE MODI_READ_VER_GRID
-USE MODI_READ_ALL_NAMELISTS
-USE MODI_PGD_GRID_SURF_ATM
-USE MODI_SPLIT_GRID
-USE MODI_PGD_SURF_ATM
-USE MODI_ICE_ADJUST_BIS
-USE MODI_WRITE_PGD_SURF_ATM_n
-USE MODI_PREP_SURF_MNH
-USE MODI_INIT_SALT
-USE MODI_AER2LIMA
-USE MODD_PARAM_LIMA
-!
-!JUAN
-USE MODE_SPLITTINGZ_ll
-USE MODD_SUB_MODEL_n
-USE MODE_MNH_TIMING
-USE MODN_CONFZ
-!JUAN
-!
-USE MODI_VERSION
-USE MODI_INIT_PGD_SURF_ATM
-USE MODI_WRITE_SURF_ATM_N
-USE MODD_MNH_SURFEX_n
-! Modif ADVFRC
-USE MODD_2D_FRC
-USE MODD_ADVFRC_n     ! Modif for grid-nesting
-USE MODI_SETADVFRC
-USE MODD_RELFRC_n     ! Modif for grid-nesting
-USE MODI_SET_RELFRC
-!
-USE MODI_INI_CST
-USE MODI_INI_NEB
-USE MODD_NEB, ONLY: NEB
-USE MODI_WRITE_HGRID
-USE MODD_MPIF
-USE MODD_VAR_ll
-USE MODD_IO, ONLY: TFILEDATA,TFILE_SURFEX
-!
-USE MODE_MPPDB
-!
-USE MODD_GET_n
-!
-USE MODN_CONFIO, ONLY : NAM_CONFIO
-!
-IMPLICIT NONE
-!
-!*       0.1  Declarations of global variables not declared in the modules
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: XJ ! Jacobian
-REAL :: XLATCEN=XUNDEF, XLONCEN=XUNDEF ! latitude and longitude of the center of
-                                     ! the domain for initialization. This 
-                                     ! point is vertical vorticity point
-                                     !          ------------------------
-REAL :: XDELTAX=0.5E4, XDELTAY=0.5E4 ! horizontal mesh lengths  
-                                     !  used to determine  XXHAT,XYHAT
-!
-INTEGER :: NLUPRE,NLUOUT           ! Logical unit numbers for EXPRE file
-                                   ! and for output_listing file
-INTEGER :: NRESP                   ! return code in FM routines
-INTEGER :: NTYPE                   ! type of file (cpio or not)
-INTEGER(KIND=LFIINT) :: NNPRAR     ! number of articles predicted in the LFIFM file
-LOGICAL :: GFOUND                  ! Return code when searching namelist
-!
-INTEGER :: JLOOP,JILOOP,JJLOOP     ! Loop indexes
-!
-INTEGER :: NIB,NJB,NKB             ! Begining useful area  in x,y,z directions
-INTEGER :: NIE,NJE                 ! Ending useful area  in x,y directions
-INTEGER :: NIU,NJU,NKU             ! Upper bounds in x,y,z directions
-CHARACTER(LEN=4)   :: CIDEAL ='CSTN'     ! kind of idealized fields
-                                         ! 'CSTN' : Nv=cste case 
-                                         ! 'RSOU' : radiosounding case
-CHARACTER(LEN=4)   :: CZS    ='FLAT'     ! orography selector
-                                         ! 'FLAT' : zero orography
-                                         ! 'SINE' : sine-shaped orography 
-                                         ! 'BELL' : bell-shaped orography 
-REAL    :: XHMAX=XUNDEF            ! Maximum height for orography
-REAL    :: NEXPX=3,NEXPY=1         ! Exponents for  orography in case of CZS='SINE'
-REAL    :: XAX= 1.E4, XAY=1.E4     ! Widths for orography in case CZS='BELL'
-                                   ! along x and y 
-INTEGER :: NIZS = 5, NJZS = 5      ! Localization of the center in 
-                                   ! case CZS ='BELL' 
-!
-!*       0.1.1 Declarations of local variables for N=cste and 
-!              radiosounding cases :
-!
-INTEGER            :: NYEAR,NMONTH,NDAY ! year, month and day in EXPRE file
-REAL               :: XTIME             ! time in EXPRE file
-LOGICAL            :: LPERTURB =.FALSE. ! Logical to add a perturbation to 
-                                        ! a basic state 
-LOGICAL            :: LGEOSBAL =.FALSE. ! Logical to satisfy the geostrophic
-                                        ! balance
-                                        ! .TRUE. for geostrophic balance
-                                        ! .FALSE. to ignore this balance
-LOGICAL            :: LSHIFT   =.FALSE.  ! flag to perform vertical shift or not.        
-CHARACTER(LEN=3)   :: CFUNU ='ZZZ'      ! CHARACTER STRING for variation of
-                                        ! U in y direction
-                                        ! 'ZZZ'  : U = U(Z)
-                                        ! 'Y*Z'  : U = F(Y) * U(Z)
-                                        ! 'Y,Z'  : U = G(Y,Z)
-CHARACTER(LEN=3)   :: CFUNV ='ZZZ'      ! CHARACTER STRING for variation of
-                                        ! V in x direction
-                                        ! 'ZZZ'  : V = V(Z)
-                                        ! 'Y*Z'  : V = F(X) * V(Z)
-                                        ! 'Y,Z'  : V = G(X,Z)
-CHARACTER(LEN=6)   :: CTYPELOC='IJGRID' ! Type of informations  used to give the
-                                        ! localization of vertical profile
-                                        ! 'IJGRID'  for (i,j) point  on index space
-                                        ! 'XYHATM' for (x,y) coordinates on
-                                        !  conformal or cartesian plane
-                                        ! 'LATLON' for (latitude,longitude) on
-                                        !   spherical earth  
-REAL               :: XLATLOC= 45., XLONLOC=0.
-                                        ! Latitude and longitude of the vertical
-                                        ! profile localization  (used in case 
-                                        ! CTYPELOC='LATLON') 
-REAL               :: XXHATLOC=2.E4, XYHATLOC=2.E4 
-                                        ! (x,y) of the vertical profile
-                                        ! localization  (used in cases 
-                                        ! CTYPELOC='LATLON' and 'XYHATM') 
-INTEGER, DIMENSION(1) :: NILOC=4, NJLOC=4 
-                                        ! (i,j) of the vertical profile
-                                        ! localization 
-!
-!
-REAL,DIMENSION(:,:,:),ALLOCATABLE   :: XCORIOZ ! Coriolis parameter (this
-                                                 ! is exceptionnaly a 3D array
-                                                 ! for computing needs)
-!
-!
-!*       0.1.2 Declarations of local variables used when a PhysioGraphic Data
-!              file is used :
-!
-INTEGER             :: JSV                      ! loop index on scalar var.
-CHARACTER(LEN=28)   :: CPGD_FILE=' '            ! Physio-Graphic Data file name
-LOGICAL  :: LREAD_ZS = .TRUE.,                & ! switch to use orography 
-                                                ! coming from the PGD file
-            LREAD_GROUND_PARAM = .TRUE.         ! switch to use soil parameters
-                                                ! useful for the soil scheme
-                                                ! coming from the PGD file
-
-INTEGER           :: NSLEVE   =12         ! number of iteration for smooth orography
-REAL              :: XSMOOTH_ZS = XUNDEF  ! optional uniform smooth orography for SLEVE coordinate
-CHARACTER(LEN=28) :: YPGD_NAME, YPGD_DAD_NAME   ! general information
-CHARACTER(LEN=2)  :: YPGD_TYPE
-!
-INTEGER           :: IINFO_ll                   ! return code of // routines
-TYPE(LIST_ll), POINTER :: TZ_FIELDS_ll           ! list of metric coefficient fields
-!
-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 :: IBEG,IEND,IXOR,IXDIM,IYOR,IYDIM,ILBX,ILBY
-REAL, DIMENSION(:),   ALLOCATABLE :: ZXHAT_ll, ZYHAT_ll
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE ::ZTHL,ZT,ZRT,ZFRAC_ICE,&
-                                      ZEXN,ZLVOCPEXN,ZLSOCPEXN,ZCPH, &
-                                      ZRSATW, ZRSATI
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZBUF
-                                 ! variables for adjustement
-REAL                :: ZDIST
-!
-!JUAN TIMING
-REAL(kind=MNHTIME), DIMENSION(2) :: ZTIME1, ZTIME2, ZEND, ZTOT
-CHARACTER                 :: YMI
-INTEGER                   :: IMI
-!JUAN TIMING
-!
-REAL, DIMENSION(:),   ALLOCATABLE :: ZZS_ll
-INTEGER                           :: IJ
-!
-REAL              :: ZZS_MAX, ZZS_MAX_ll
-INTEGER           :: IJPHEXT
-!
-TYPE(TFILEDATA),POINTER :: TZEXPREFILE  => NULL()
-!
-!
-!*       0.2  Namelist declarations
-!
-NAMELIST/NAM_CONF_PRE/ LTHINSHELL,LCARTESIAN,    &! Declarations in MODD_CONF
-                       LPACK,                    &!
-                       NVERB,CIDEAL,CZS,         &!+global variables initialized
-                       LBOUSS,LOCEAN,LPERTURB,   &! at their declarations
-                       LFORCING,CEQNSYS,         &! at their declarations
-                       LSHIFT,L2D_ADV_FRC,L2D_REL_FRC, &
-                       NHALO , JPHEXT
-NAMELIST/NAM_GRID_PRE/ XLON0,XLAT0,            & ! Declarations in MODD_GRID
-                       XBETA,XRPK,             & 
-                       XLONORI,XLATORI
-NAMELIST/NAM_GRIDH_PRE/ XLATCEN,XLONCEN,       & ! local variables  initialized
-                 XDELTAX,XDELTAY,              & ! at their declarations
-                 XHMAX,NEXPX,NEXPY,            &
-                 XAX,XAY,NIZS,NJZS
-NAMELIST/NAM_VPROF_PRE/LGEOSBAL, CFUNU,CFUNV,   &! global variables initialized
-                     CTYPELOC,XLATLOC,XLONLOC,  &!  at their declarations
-                     XXHATLOC,XYHATLOC,NILOC,NJLOC
-NAMELIST/NAM_REAL_PGD/CPGD_FILE,                 & ! Physio-Graphic Data file
-                                                   !  name
-                      LREAD_ZS,                  & ! switch to use orography 
-                                                   ! coming from the PGD file
-                      LREAD_GROUND_PARAM
-NAMELIST/NAM_SLEVE/NSLEVE, XSMOOTH_ZS
-!
-!*       0.3  Auxillary Namelist declarations
-!
-NAMELIST/NAM_AERO_PRE/ LORILAM, LINITPM, XINIRADIUSI, XINIRADIUSJ, &
-                       XINISIGI, XINISIGJ, XN0IMIN, XN0JMIN, CRGUNIT, &
-                       LDUST, LSALT, CRGUNITD, CRGUNITS,&
-                       NMODE_DST, XINISIG, XINIRADIUS, XN0MIN,&
-                       XINISIG_SLT, XINIRADIUS_SLT, XN0MIN_SLT, &
-                       NMODE_SLT
-!
-NAMELIST/NAM_IBM_LSF/ LIBM_LSF, CIBM_TYPE, NIBM_SMOOTH, XIBM_SMOOTH
-!
-!-------------------------------------------------------------------------------
-!
-!*       0.    PROLOGUE
-!              --------
-CALL MPPDB_INIT()
-!
-CALL GOTO_MODEL(1)
-!
-CALL IO_Init()
-NULLIFY(TZ_FIELDS_ll)
-CALL VERSION
-CPROGRAM='IDEAL '
-!
-!JUAN TIMING
-  XT_START     = 0.0_MNHTIME
-  XT_STORE     = 0.0_MNHTIME
-!
-  CALL SECOND_MNH2(ZEND)
-!
-!JUAN TIMING
-!
-!*       1.    INITIALIZE PHYSICAL CONSTANTS :         
-!              ------------------------------
-!
-NVERB = 5
-CALL INI_CST
-CALL INI_NEB
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*  	 2.    SET DEFAULT VALUES  :  
-!              --------------------
-!
-!
-!*       2.1  For variables in DESFM file
-!
-CALL ALLOC_FIELD_SCALARS()
-CALL PARAM_ICE_ASSOCIATE()
-CALL DEFAULT_DESFM_n(1)
-!
-CSURF = "NONE"
-!
-!
-!*       2.2  For other global variables in EXPRE file
-!
-CALL DEFAULT_EXPRE
-!-------------------------------------------------------------------------------
-!
-!*  	 3.    READ THE EXPRE FILE :  
-!              --------------------
-!
-!*       3.1   initialize logical unit numbers (EXPRE and output-listing files)
-!              and open these files :
-! 
-! 
-CALL IO_File_add2list(TLUOUT0,'OUTPUT_LISTING1','OUTPUTLISTING','WRITE')
-CALL IO_File_open(TLUOUT0)
-NLUOUT = TLUOUT0%NLU
-!Set output files for PRINT_MSG
-TLUOUT              => TLUOUT0
-TFILE_OUTPUTLISTING => TLUOUT0
-!
-CALL IO_File_add2list(TZEXPREFILE,'PRE_IDEA1.nam','NML','READ')
-CALL IO_File_open(TZEXPREFILE)
-NLUPRE=TZEXPREFILE%NLU
-!
-!*       3.2   read in NLUPRE the namelist informations
-!
-WRITE(NLUOUT,FMT=*) 'attempt to read ',TRIM(TZEXPREFILE%CNAME),' file'
-CALL POSNAM(NLUPRE,'NAM_REAL_PGD',GFOUND,NLUOUT)
-IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_REAL_PGD)
-!
-!
-CALL POSNAM(NLUPRE,'NAM_CONF_PRE',GFOUND,NLUOUT)
-IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_CONF_PRE)
-!JUANZ
-CALL POSNAM(NLUPRE,'NAM_CONFZ',GFOUND,NLUOUT)
-IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_CONFZ)
-!JUANZ
-CALL POSNAM(NLUPRE,'NAM_CONFIO',GFOUND,NLUOUT)
-IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_CONFIO)
-CALL IO_Config_set()
-CALL POSNAM(NLUPRE,'NAM_GRID_PRE',GFOUND,NLUOUT)
-IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_GRID_PRE)
-CALL POSNAM(NLUPRE,'NAM_GRIDH_PRE',GFOUND,NLUOUT)
-IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_GRIDH_PRE)
-CALL POSNAM(NLUPRE,'NAM_VPROF_PRE',GFOUND,NLUOUT)
-IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_VPROF_PRE)
-CALL POSNAM(NLUPRE,'NAM_BLANKN',GFOUND,NLUOUT)
-CALL INIT_NAM_BLANKn
-IF (GFOUND) THEN
-  READ(UNIT=NLUPRE,NML=NAM_BLANKn)
-  CALL UPDATE_NAM_BLANKn
-END IF
-CALL READ_PRE_IDEA_NAM_n(NLUPRE,NLUOUT)
-CALL POSNAM(NLUPRE,'NAM_AERO_PRE',GFOUND,NLUOUT)
-IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_AERO_PRE)
-CALL POSNAM(NLUPRE,'NAM_IBM_LSF' ,GFOUND,NLUOUT)
-IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_IBM_LSF )
-!
-CALL INI_FIELD_LIST(1)
-!
-CALL INI_FIELD_SCALARS()
-! Sea salt
-CALL INIT_SALT
-!
-IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN 
-  ! open the PGD_FILE
-  CALL IO_File_add2list(TPGDFILE,TRIM(CPGD_FILE),'PGD','READ',KLFINPRAR=NNPRAR,KLFITYPE=2,KLFIVERB=NVERB)
-  CALL IO_File_open(TPGDFILE)
-
-  ! read the grid in the PGD file
-  CALL IO_Field_read(TPGDFILE,'IMAX',  NIMAX)
-  CALL IO_Field_read(TPGDFILE,'JMAX',  NJMAX)
-  CALL IO_Field_read(TPGDFILE,'JPHEXT',IJPHEXT)
-
-  IF ( CPGD_FILE /= CINIFILEPGD) THEN
-     WRITE(NLUOUT,FMT=*) ' WARNING : in PRE_IDEA1.nam, in NAM_LUNITn you&
-          & have CINIFILEPGD= ',CINIFILEPGD
-     WRITE(NLUOUT,FMT=*) ' whereas in NAM_REAL_PGD you have CPGD_FILE = '&
-          ,CPGD_FILE
-     WRITE(NLUOUT,FMT=*) ' '
-     WRITE(NLUOUT,FMT=*) ' CINIFILEPGD HAS BEEN SET TO  ',CPGD_FILE        
-     CINIFILEPGD=CPGD_FILE
-  END IF
-  IF ( IJPHEXT .NE. JPHEXT ) THEN
-     WRITE(NLUOUT,FMT=*) ' PREP_IDEAL_CASE : JPHEXT in PRE_IDEA1.nam/NAM_CONF_PRE ( or default value )&
-        & JPHEXT=',JPHEXT
-     WRITE(NLUOUT,FMT=*) ' different from PGD files=', CINIFILEPGD,' value JPHEXT=',IJPHEXT
-     WRITE(NLUOUT,FMT=*) '-> JOB ABORTED'
-     CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','')
-     !WRITE(NLUOUT,FMT=*) ' JPHEXT HAS BEEN SET TO ', IJPHEXT
-     !IJPHEXT = JPHEXT
-  END IF
-END IF
-!
-NIMAX_ll=NIMAX   !! _ll variables are global variables
-NJMAX_ll=NJMAX   !! but the old names are kept in PRE_IDEA1.nam file
-!
-!*       3.3   check some parameters:
-!
-L1D=.FALSE. ; L2D=.FALSE.
-!
-IF ((NIMAX == 1).OR.(NJMAX == 1)) THEN 
-  L2D=.TRUE.
-  NJMAX_ll=1
-  NIMAX_ll=MAX(NIMAX,NJMAX)
-  WRITE(NLUOUT,FMT=*) ' NJMAX HAS BEEN SET TO 1 SINCE 2D INITIAL FILE IS REQUIRED &
-                   & (L2D=TRUE) )' 
-END IF
-!
-IF ((NIMAX == 1).AND.(NJMAX == 1)) THEN 
-  L1D=.TRUE.
-  NIMAX_ll = 1
-  NJMAX_ll = 1
-  WRITE(NLUOUT,FMT=*) ' 1D INITIAL FILE IS REQUIRED (L1D=TRUE) ' 
-END IF
-!
-IF(.NOT. L1D) THEN
-  LHORELAX_UVWTH=.TRUE.
-  LHORELAX_RV=.TRUE.
-ENDIF
-!
-NRIMX= MIN(JPRIMMAX,NIMAX_ll/2)
-!
-IF (L2D) THEN
-  NRIMY=0
-ELSE
-  NRIMY= MIN(JPRIMMAX,NJMAX_ll/2)
-END IF
-!
-IF (L1D) THEN
-  NRIMX=0
-  NRIMY=0
-END IF
-!
-IF (L1D .AND. ( LPERTURB .OR. LGEOSBAL .OR.                &
-               (.NOT. LCARTESIAN ) .OR. (.NOT. LTHINSHELL) ))THEN 
-  LGEOSBAL   = .FALSE.
-  LPERTURB   = .FALSE.
-  LCARTESIAN = .TRUE. 
-  LTHINSHELL = .TRUE. 
-  WRITE(NLUOUT,FMT=*) ' LGEOSBAL AND LPERTURB HAVE BEEN SET TO FALSE &
-                      & AND LCARTESIAN AND LTHINSHELL TO TRUE        &
-                      & SINCE 1D INITIAL FILE IS REQUIRED (L1D=TRUE)' 
-END IF
-!
-IF (LGEOSBAL .AND. LSHIFT ) THEN
-  LSHIFT=.FALSE.
-  WRITE(NLUOUT,FMT=*) ' LSHIFT HAS BEEN SET TO FALSE SINCE &
-                        & LGEOSBAL=.TRUE. IS REQUIRED '
-END IF
-!                      
-!*       3.4   compute the number of moist variables :
-!
-IF (.NOT.LUSERV) THEN
-  LUSERV = .TRUE.
-  WRITE(NLUOUT,FMT=*) ' LUSERV HAS BEEN RESET TO TRUE, SINCE A MOIST VARIABLE &
-                   & IS PRESENT IN EXPRE FILE (CIDEAL = RSOU OR CSTN)' 
-END IF
-!
-IF((LUSERI .OR. LUSERC).AND. (CIDEAL /= 'RSOU')) THEN
-  !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','use of hydrometeors is only allowed in RSOU case')
-ENDIF
-IF (LUSERI) THEN
-  LUSERC =.TRUE.
-  LUSERR =.TRUE.
-  LUSERI =.TRUE.
-  LUSERS =.TRUE.
-  LUSERG =.TRUE.
-  LUSERH =.FALSE.
-  CCLOUD='ICE3'
-ELSEIF(LUSERC) THEN
-  LUSERR =.FALSE.
-  LUSERI =.FALSE.
-  LUSERS =.FALSE.
-  LUSERG =.FALSE.
-  LUSERH =.FALSE.
-  CCLOUD='REVE'
-ELSE
-  LUSERC =.FALSE.
-  LUSERR =.FALSE.
-  LUSERI =.FALSE.
-  LUSERS =.FALSE.
-  LUSERG =.FALSE.
-  LUSERH =.FALSE.
-  LHORELAX_RC=.FALSE.
-  LHORELAX_RR=.FALSE.
-  LHORELAX_RI=.FALSE.
-  LHORELAX_RS=.FALSE.
-  LHORELAX_RG=.FALSE.
-  LHORELAX_RH=.FALSE.
-  CCLOUD='NONE'
-!
-END IF
-!
-NRR=0
-IF (LUSERV) THEN
-  NRR=NRR+1
-  IDX_RVT = NRR
-END IF
-IF (LUSERC) THEN
-  NRR=NRR+1
-  IDX_RCT = NRR
-END IF
-IF (LUSERR) THEN
-  NRR=NRR+1
-  IDX_RRT = NRR
-END IF
-IF (LUSERI) THEN
-  NRR=NRR+1
-  IDX_RIT = NRR
-END IF
-IF (LUSERS) THEN
-  NRR=NRR+1
-  IDX_RST = NRR
-END IF
-IF (LUSERG) THEN
-  NRR=NRR+1
-  IDX_RGT = NRR
-END IF
-IF (LUSERH) THEN
-  NRR=NRR+1
-  IDX_RHT = NRR
-END IF
-!
-! NRR=4 for RSOU case because RI and Rc always computed
-IF (CIDEAL == 'RSOU' .AND. NRR < 4 ) NRR=4
-!                   
-!
-!*       3.5   Chemistry
-!
-IF (LORILAM .OR. LCH_INIT_FIELD) THEN
-  LUSECHEM = .TRUE.
-  IF (LORILAM) THEN
-    CORGANIC = "MPMPO"
-    LVARSIGI = .TRUE.
-    LVARSIGJ = .TRUE.
-  END IF
-END IF
-! initialise NSV_* variables
-CALL INI_NSV(1)
-LHORELAX_SV(:)=.FALSE.
-IF(.NOT. L1D) LHORELAX_SV(1:NSV)=.TRUE.
-!
-!-------------------------------------------------------------------------------
-!
-!*       4.    ALLOCATE MEMORY FOR ARRAYS :  
-!   	       ----------------------------
-!
-!*       4.1  Vertical Spatial grid 
-!
-CALL READ_VER_GRID(TZEXPREFILE)
-!
-!*       4.2  Initialize parallel variables and compute array's dimensions
-!
-!
-IF(LGEOSBAL) THEN
-  CALL SET_SPLITTING_ll('XSPLITTING')  ! required for integration of thermal wind balance
-ELSE
-  CALL SET_SPLITTING_ll('BSPLITTING')
-ENDIF
-CALL SET_JP_ll(1,JPHEXT,JPVEXT,JPHEXT)
-CALL SET_DAD0_ll()
-CALL SET_DIM_ll(NIMAX_ll, NJMAX_ll, NKMAX)
-CALL IO_Pack_set(L1D,L2D,LPACK)
-CALL SET_LBX_ll(CLBCX(1), 1)
-CALL SET_LBY_ll(CLBCY(1), 1)
-CALL SET_XRATIO_ll(1, 1)
-CALL SET_YRATIO_ll(1, 1)
-CALL SET_XOR_ll(1, 1)
-CALL SET_XEND_ll(NIMAX_ll+2*JPHEXT, 1)
-CALL SET_YOR_ll(1, 1)
-CALL SET_YEND_ll(NJMAX_ll+2*JPHEXT, 1)
-CALL SET_DAD_ll(0, 1)
-CALL INI_PARAZ_ll(IINFO_ll)
-!
-! sizes of arrays of the extended sub-domain
-!
-CALL GET_DIM_EXT_ll('B',NIU,NJU)
-CALL GET_DIM_PHYS_ll('B',NIMAX,NJMAX)
-CALL GET_INDICE_ll(NIB,NJB,NIE,NJE)
-CALL GET_OR_ll('B',IXOR,IYOR)
-NKB=1+JPVEXT
-NKU=NKMAX+2*JPVEXT
-!
-!*       4.3  Global variables absent from the modules :
-!
-ALLOCATE(XJ(NIU,NJU,NKU))
-SELECT CASE(CIDEAL)
-  CASE('RSOU','CSTN')
-    IF (LGEOSBAL) ALLOCATE(XCORIOZ(NIU,NJU,NKU))  ! exceptionally a 3D array  
-  CASE DEFAULT                      ! undefined preinitialization
-   !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','CIDEAL is not correctly defined')
-END SELECT 
-!
-!*       4.4   Prognostic variables at M instant (module MODD_FIELD1):
-!
-ALLOCATE(XUT(NIU,NJU,NKU))
-ALLOCATE(XVT(NIU,NJU,NKU))
-ALLOCATE(XWT(NIU,NJU,NKU))
-ALLOCATE(XTHT(NIU,NJU,NKU))
-ALLOCATE(XPABST(NIU,NJU,NKU))
-ALLOCATE(XRT(NIU,NJU,NKU,NRR))
-ALLOCATE(XSVT(NIU,NJU,NKU,NSV))
-!
-!*       4.5   Grid variables (module MODD_GRID1 and MODD_METRICS1):
-!
-ALLOCATE(XMAP(NIU,NJU))
-ALLOCATE(XLAT(NIU,NJU))
-ALLOCATE(XLON(NIU,NJU))
-ALLOCATE(XDXHAT(NIU),XDYHAT(NJU))
-IF (LEN_TRIM(CPGD_FILE)==0) ALLOCATE(XZS(NIU,NJU))
-IF (LEN_TRIM(CPGD_FILE)==0) ALLOCATE(ZZS_ll(NIMAX_ll))
-IF (LEN_TRIM(CPGD_FILE)==0) ALLOCATE(XZSMT(NIU,NJU))
-ALLOCATE(XZZ(NIU,NJU,NKU))
-!
-ALLOCATE(XDXX(NIU,NJU,NKU))
-ALLOCATE(XDYY(NIU,NJU,NKU))
-ALLOCATE(XDZX(NIU,NJU,NKU))
-ALLOCATE(XDZY(NIU,NJU,NKU))
-ALLOCATE(XDZZ(NIU,NJU,NKU))
-!
-!*       4.6   Reference state variables (modules MODD_REF and MODD_REF1):
-!
-ALLOCATE(XRHODREFZ(NKU),XTHVREFZ(NKU))
-XTHVREFZ(:)=0.0
-IF (LCOUPLES) THEN
-  ! Arrays for reference state different in ocean and atmosphere
-  ALLOCATE(XRHODREFZO(NKU),XTHVREFZO(NKU))
-  XTHVREFZO(:)=0.0
-END IF
-IF(CEQNSYS == 'DUR') THEN
-  ALLOCATE(XRVREF(NIU,NJU,NKU))
-ELSE
-  ALLOCATE(XRVREF(0,0,0))
-END IF
-ALLOCATE(XRHODREF(NIU,NJU,NKU),XTHVREF(NIU,NJU,NKU),XEXNREF(NIU,NJU,NKU))
-ALLOCATE(XRHODJ(NIU,NJU,NKU))
-!
-!*       4.7   Larger Scale fields (modules MODD_LSFIELD1):
-!
-ALLOCATE(XLSUM(NIU,NJU,NKU))
-ALLOCATE(XLSVM(NIU,NJU,NKU))
-ALLOCATE(XLSWM(NIU,NJU,NKU))
-ALLOCATE(XLSTHM(NIU,NJU,NKU))
-IF ( NRR >= 1) THEN
-  ALLOCATE(XLSRVM(NIU,NJU,NKU))
-ELSE
-  ALLOCATE(XLSRVM(0,0,0))
-ENDIF
-!
-!  allocate lateral boundary field used for coupling
-!
-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 (not yet parallelized)
-!                                          
-  CALL GET_SIZEX_LB(NIMAX_ll,NJMAX_ll,NRIMX,               &
-                    IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU, &
-                    IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2)
-  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))
-  !
-  IF ( LHORELAX_UVWTH ) THEN
-!JUAN A REVOIR TODO_JPHEXT
-! <<<<<<< prep_ideal_case.f90
-    ! NSIZELBX_ll=2*NRIMX+2
-    ! NSIZELBXU_ll=2*NRIMX+2
-    ALLOCATE(XLBXUM(IISIZEXFU,NJU,NKU))
-    ALLOCATE(XLBXVM(IISIZEXF,NJU,NKU))
-    ALLOCATE(XLBXWM(IISIZEXF,NJU,NKU))
-    ALLOCATE(XLBXTHM(IISIZEXF,NJU,NKU))
-! =======
-    NSIZELBX_ll=2*NRIMX+2*JPHEXT
-    NSIZELBXU_ll=2*NRIMX+2*JPHEXT
-    ! ALLOCATE(XLBXUM(2*NRIMX+2*JPHEXT,NJU,NKU))
-    ! ALLOCATE(XLBXVM(2*NRIMX+2*JPHEXT,NJU,NKU))
-    ! ALLOCATE(XLBXWM(2*NRIMX+2*JPHEXT,NJU,NKU))
-    ! ALLOCATE(XLBXTHM(2*NRIMX+2*JPHEXT,NJU,NKU))
-! >>>>>>> 1.3.2.4.2.3.2.14.2.8.2.11.2.2
-  ELSE
-    NSIZELBX_ll= 2*JPHEXT     ! 2
-    NSIZELBXU_ll=2*(JPHEXT+1) ! 4 
-    ALLOCATE(XLBXUM(NSIZELBXU_ll,NJU,NKU))
-    ALLOCATE(XLBXVM(NSIZELBX_ll,NJU,NKU))
-    ALLOCATE(XLBXWM(NSIZELBX_ll,NJU,NKU))
-    ALLOCATE(XLBXTHM(NSIZELBX_ll,NJU,NKU))
-  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 
-!JUAN A REVOIR TODO_JPHEXT
-! <<<<<<< prep_ideal_case.f90
-      ! NSIZELBXR_ll=2* NRIMX+2
-      ALLOCATE(XLBXRM(IISIZEXF,NJU,NKU,NRR))
-! =======
-      NSIZELBXR_ll=2*NRIMX+2*JPHEXT
-      ! ALLOCATE(XLBXRM(2*NRIMX+2*JPHEXT,NJU,NKU,NRR))
-! >>>>>>> 1.3.2.4.2.3.2.14.2.8.2.11.2.2
-    ELSE
-      NSIZELBXR_ll=2*JPHEXT ! 2
-      ALLOCATE(XLBXRM(NSIZELBXR_ll,NJU,NKU,NRR))
-    ENDIF
-  ELSE
-    NSIZELBXR_ll=0
-    ALLOCATE(XLBXRM(0,0,0,0))
-  END IF
-  !
-  IF ( NSV > 0 ) THEN 
-    IF ( ANY( LHORELAX_SV(:)) ) THEN
-!JUAN A REVOIR TODO_JPHEXT
-! <<<<<<< prep_ideal_case.f90
-      ! NSIZELBXSV_ll=2* NRIMX+2
-      ALLOCATE(XLBXSVM(IISIZEXF,NJU,NKU,NSV))
-! =======
-      NSIZELBXSV_ll=2*NRIMX+2*JPHEXT
-      ! ALLOCATE(XLBXSVM(2*NRIMX+2*JPHEXT,NJU,NKU,NSV))
-! >>>>>>> 1.3.2.4.2.3.2.14.2.8.2.11.2.2
-    ELSE
-      NSIZELBXSV_ll=2*JPHEXT ! 2
-      ALLOCATE(XLBXSVM(NSIZELBXSV_ll,NJU,NKU,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)
-!
-  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,NKU))
-    ALLOCATE(XLBYUM(IISIZEYF,IJSIZEYF,NKU))
-    ALLOCATE(XLBXVM(IISIZEXF,IJSIZEXF,NKU))
-    ALLOCATE(XLBYVM(IISIZEYFV,IJSIZEYFV,NKU))
-    ALLOCATE(XLBXWM(IISIZEXF,IJSIZEXF,NKU))
-    ALLOCATE(XLBYWM(IISIZEYF,IJSIZEYF,NKU))
-    ALLOCATE(XLBXTHM(IISIZEXF,IJSIZEXF,NKU))
-    ALLOCATE(XLBYTHM(IISIZEYF,IJSIZEYF,NKU))
-  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,NKU))
-    ALLOCATE(XLBYUM(IISIZEY2,IJSIZEY2,NKU))
-    ALLOCATE(XLBXVM(IISIZEX2,IJSIZEX2,NKU))
-    ALLOCATE(XLBYVM(IISIZEY4,IJSIZEY4,NKU))
-    ALLOCATE(XLBXWM(IISIZEX2,IJSIZEX2,NKU))
-    ALLOCATE(XLBYWM(IISIZEY2,IJSIZEY2,NKU))
-    ALLOCATE(XLBXTHM(IISIZEX2,IJSIZEX2,NKU))
-    ALLOCATE(XLBYTHM(IISIZEY2,IJSIZEY2,NKU))
-  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,NKU,NRR))
-      ALLOCATE(XLBYRM(IISIZEYF,IJSIZEYF,NKU,NRR))
-    ELSE
-      NSIZELBXR_ll=2*JPHEXT    ! 2
-      NSIZELBYR_ll=2*JPHEXT    ! 2
-      ALLOCATE(XLBXRM(IISIZEX2,IJSIZEX2,NKU,NRR))
-      ALLOCATE(XLBYRM(IISIZEY2,IJSIZEY2,NKU,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,NKU,NSV))
-      ALLOCATE(XLBYSVM(IISIZEYF,IJSIZEYF,NKU,NSV))
-    ELSE
-      NSIZELBXSV_ll=2*JPHEXT    ! 2
-      NSIZELBYSV_ll=2*JPHEXT    ! 2
-      ALLOCATE(XLBXSVM(IISIZEX2,IJSIZEX2,NKU,NSV))
-      ALLOCATE(XLBYSVM(IISIZEY2,IJSIZEY2,NKU,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
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*       5.     INITIALIZE ALL THE MODEL VARIABLES
-!   	        ----------------------------------
-!
-!
-!*       5.1    Grid variables and RS localization:
-!
-!*       5.1.1  Horizontal Spatial grid :
-!
-IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN 
-!--------------------------------------------------------
-! the MESONH horizontal grid will be read in the PGD_FILE 
-!--------------------------------------------------------
-  CALL READ_HGRID(1,TPGDFILE,YPGD_NAME,YPGD_DAD_NAME,YPGD_TYPE)
-! control the cartesian option
-  IF( LCARTESIAN ) THEN
-     WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE : IN GENERAL, THE USE OF A PGD_FILE &
-                & IMPLIES THAT YOU MUST TAKE INTO ACCOUNT THE EARTH SPHERICITY'
-     WRITE(NLUOUT,FMT=*) 'NEVERTHELESS, LCARTESIAN HAS BEEN KEPT TO TRUE'
-  END IF   
-!
-!* use of the externalized surface
-!
-  CSURF = "EXTE"
-!
-! determine whether the model is flat or no
-!
-  ZZS_MAX = ABS( MAXVAL(XZS(NIB:NIU-JPHEXT,NJB:NJU-JPHEXT)))
-  CALL MPI_ALLREDUCE(ZZS_MAX, ZZS_MAX_ll, 1, MNHREAL_MPI, MPI_MAX,  &
-                     NMNH_COMM_WORLD,IINFO_ll)
-  IF( ABS(ZZS_MAX_ll)  < 1.E-10 ) THEN
-    LFLAT=.TRUE.
-  ELSE
-    LFLAT=.FALSE.
-  END IF
-!
-
-ELSE
-!------------------------------------------------------------------------
-! the MESONH horizontal grid is built from the PRE_IDEA1.nam informations
-!------------------------------------------------------------------------
-!
-  ALLOCATE(XXHAT(NIU),XYHAT(NJU))
-!
-! define the grid localization at the earth surface by the central point
-! coordinates
-!
-  IF (XLONCEN/=XUNDEF .OR. XLATCEN/=XUNDEF) THEN
-    IF (XLONCEN/=XUNDEF .AND. XLATCEN/=XUNDEF) THEN 
-!
-! it should be noted that XLATCEN and XLONCEN refer to a vertical
-! vorticity point and (XLATORI, XLONORI) refer to the mass point of
-! conformal coordinates (0,0). This is to allow the centering of the model in
-! a non-cyclic  configuration regarding to XLATCEN or XLONCEN.
-!
-      ALLOCATE(ZXHAT_ll(NIMAX_ll+2*JPHEXT),ZYHAT_ll(NJMAX_ll+2*JPHEXT))
-      ZXHAT_ll=0.
-      ZYHAT_ll=0.
-      CALL SM_LATLON(XLATCEN,XLONCEN,                     &
-                       -XDELTAX*(NIMAX_ll/2-0.5+JPHEXT),  &
-                       -XDELTAY*(NJMAX_ll/2-0.5+JPHEXT),  &
-                       XLATORI,XLONORI)
-        DEALLOCATE(ZXHAT_ll,ZYHAT_ll)
-!
-      WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE : XLATORI=' , XLATORI, &
-                          ' XLONORI= ', XLONORI
-    ELSE
-   !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE',&
-                     'latitude and longitude of the center point must be initialized alltogether or not')
-    END IF
-  END IF
-!
-  IF (NPROC > 1) THEN
-    CALL GET_DIM_EXT_ll('B',IXDIM,IYDIM)
-    IBEG = IXOR-JPHEXT-1
-    IEND = IBEG+IXDIM-1
-    XXHAT(:) = (/ (REAL(JLOOP)*XDELTAX, JLOOP=IBEG,IEND) /)
-    IBEG = IYOR-JPHEXT-1
-    IEND = IBEG+IYDIM-1
-    XYHAT(:) = (/ (REAL(JLOOP)*XDELTAY, JLOOP=IBEG,IEND) /)
-!
-  ELSE
-    XXHAT(:) = (/ (REAL(JLOOP-NIB)*XDELTAX, JLOOP=1,NIU) /)
-    XYHAT(:) = (/ (REAL(JLOOP-NJB)*XDELTAY, JLOOP=1,NJU) /)
-  END IF
-END IF
-!
-!*       5.1.2  Orography and Gal-Chen Sommerville transformation :
-!
-IF (    LEN_TRIM(CPGD_FILE) == 0  .OR. .NOT. LREAD_ZS) THEN
-  SELECT CASE(CZS)     ! 'FLAT' or 'SINE' or 'BELL'
-  CASE('FLAT')
-    LFLAT = .TRUE.
-    IF (XHMAX==XUNDEF) THEN
-      XZS(:,:) = 0.
-    ELSE
-      XZS(:,:) = XHMAX
-    END IF
-  CASE('SINE')       ! sinus-shaped orography 
-    IF (XHMAX==XUNDEF) XHMAX=300.
-    LFLAT    =.FALSE.
-    XZS(:,:) = XHMAX          &      ! three-dimensional case   
-    *SPREAD((/((SIN((XPI/(NIMAX_ll+2*JPHEXT-1))*JLOOP)**2)**NEXPX,JLOOP=IXOR-1,IXOR+NIU-2)/),2,NJU) &
-    *SPREAD((/((SIN((XPI/(NJMAX_ll+2*JPHEXT-1))*JLOOP)**2)**NEXPY,JLOOP=IYOR-1,IYOR+NJU-2)/),1,NIU)
-    IF(L1D) THEN                     ! one-dimensional case
-      XZS(:,:) = XHMAX 
-    END IF        
-  CASE('BELL')       ! bell-shaped orography 
-    IF (XHMAX==XUNDEF) XHMAX=300.
-    LFLAT = .FALSE.
-    IF(.NOT.L2D) THEN                ! three-dimensional case
-      XZS(:,:) = XHMAX  / ( 1.                                           &
-        + ( (SPREAD(XXHAT(1:NIU),2,NJU) - REAL(NIZS) * XDELTAX) /XAX ) **2  &
-        + ( (SPREAD(XYHAT(1:NJU),1,NIU) - REAL(NJZS) * XDELTAY) /XAY ) **2  ) **1.5
-    ELSE                             ! two-dimensional case
-      XZS(:,:) = XHMAX  / ( 1.                                          &
-        + ( (SPREAD(XXHAT(1:NIU),2,NJU) - REAL(NIZS) * XDELTAX) /XAX ) **2 )
-    ENDIF
-    IF(L1D) THEN                     ! one-dimensional case
-      XZS(:,:) = XHMAX 
-    END IF        
-  CASE('COSI')       ! (1+cosine)**4 shape
-    IF (XHMAX==XUNDEF) XHMAX=800.
-    LFLAT = .FALSE.
-    IF(L2D) THEN                     ! two-dimensional case
-      DO JILOOP = 1, NIU
-        ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX
-        IF( ABS(ZDIST)<(4.0*XAX) ) THEN
-          XZS(JILOOP,:) = (XHMAX/16.0)*( 1.0 + COS((XPI*ZDIST)/(4.0*XAX)) )**4
-        ELSE
-          XZS(JILOOP,:) = 0.0
-        ENDIF
-      END DO
-    ENDIF
-  CASE('SCHA')       ! exp(-(x/a)**2)*cosine(pi*x/lambda)**2 shape
-    IF (XHMAX==XUNDEF) XHMAX=800.
-    LFLAT = .FALSE.
-    IF(L2D) THEN                     ! two-dimensional case
-      DO JILOOP = 1, NIU
-        ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX
-        IF( ABS(ZDIST)<(4.0*XAX) ) THEN
-          XZS(JILOOP,:) = XHMAX*EXP(-(ZDIST/XAY)**2)*COS((XPI*ZDIST)/XAX)**2
-        ELSE
-          XZS(JILOOP,:) = 0.0
-        ENDIF
-      END DO
-    ENDIF
-  CASE('AGNE')       ! h*a**2/(x**2+a**2) shape
-    LFLAT = .FALSE.
-    IF(L2D) THEN                     ! two-dimensional case
-      DO JILOOP = 1, NIU
-        ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX
-          XZS(JILOOP,:) = XHMAX*(XAX**2)/(XAX**2+ZDIST**2)
-      END DO
-		ELSE		! three dimensionnal case - infinite profile in y direction
-			DO JILOOP = 1, NIU
-        ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX
-          XZS(JILOOP,:) = XHMAX*(XAX**2)/(XAX**2+ZDIST**2)
-      END DO
-    ENDIF
-
-  CASE('DATA')       ! discretized orography
-    LFLAT    =.FALSE.
-    WRITE(NLUOUT,FMT=*) 'CZS="DATA",   ATTEMPT TO READ ARRAY     &
-                    &XZS(NIB:NIU-JPHEXT:1,NJU-JPHEXT:NJB:-1) &
-                    &starting from the first index'
-    CALL POSKEY(NLUPRE,NLUOUT,'ZSDATA')
-    DO JJLOOP = NJMAX_ll+2*JPHEXT-1,JPHEXT+1,-1    ! input like a map prior the sounding
-      READ(NLUPRE,FMT=*) ZZS_ll
-      IF ( ( JJLOOP <= ( NJU-JPHEXT + IYOR-1 ) ) .AND. ( JJLOOP >= ( NJB + IYOR-1 ) ) ) THEN
-         IJ    = JJLOOP - ( IYOR-1 )
-         XZS(NIB:NIU-JPHEXT,IJ) = ZZS_ll(IXOR:IXOR + NIU-JPHEXT - NIB )
-      END IF
-    END DO
-!
-  CASE DEFAULT   ! undefined  shape of orography
-   !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','erroneous ground type')
-  END SELECT
-!
-  CALL ADD2DFIELD_ll( TZ_FIELDS_ll, XZS, 'PREP_IDEAL_CASE::XZS' )
-  CALL UPDATE_HALO_ll(TZ_FIELDS_ll,IINFO_ll)
-  CALL CLEANLIST_ll(TZ_FIELDS_ll)
-!
-END IF
-!
-!IF( ( LEN_TRIM(CPGD_FILE) /= 0 ) .AND. .NOT.LFLAT .AND. &
-! ((CLBCX(1) /= "OPEN" ) .OR. &
-! (CLBCX(2) /= "OPEN" ) .OR. (CLBCY(1) /= "OPEN" ) .OR. &
-! (CLBCY(2) /= "OPEN" )) )  THEN 
-!   !callabortstop
-!  CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','with a PGD file, you cannot be in a cyclic LBC')
-!END IF
-!
-IF (LWEST_ll())  THEN
-  DO JILOOP = 1,JPHEXT
-    XZS(JILOOP,:) = XZS(NIB,:)
-  END DO
-END IF
-IF (LEAST_ll()) THEN
-  DO JILOOP = NIU-JPHEXT+1,NIU
-    XZS(JILOOP,:)=XZS(NIU-JPHEXT,:)
-  END DO
-END IF
-IF (LSOUTH_ll()) THEN
-  DO JJLOOP = 1,JPHEXT
-    XZS(:,JJLOOP)=XZS(:,NJB)
-  END DO
-END IF
-IF (LNORTH_ll()) THEN
-  DO JJLOOP =NJU-JPHEXT+1,NJU
-    XZS(:,JJLOOP)=XZS(:,NJU-JPHEXT)
-  END DO
-END IF
-!
-IF ( LEN_TRIM(CPGD_FILE) == 0  .OR. .NOT. LREAD_ZS) THEN
-  IF (LSLEVE) THEN
-    CALL ZSMT_PIC(NSLEVE,XSMOOTH_ZS)
-  ELSE
-    XZSMT(:,:) = 0.
-  END IF
-END IF
-!
-IF (LCARTESIAN) THEN
-  CALL SM_GRIDCART(XXHAT,XYHAT,XZHAT,XZS,LSLEVE,XLEN1,XLEN2,XZSMT,XDXHAT,XDYHAT,XZZ,XJ)
-  XMAP=1.
-ELSE
-  CALL SM_GRIDPROJ(XXHAT,XYHAT,XZHAT,XZS,LSLEVE,XLEN1,XLEN2,XZSMT,XLATORI,XLONORI, &
-                   XMAP,XLAT,XLON,XDXHAT,XDYHAT,XZZ,XJ)
-END IF
-!*       5.4.1  metrics coefficients and update halos:
-!
-CALL METRICS(XMAP,XDXHAT,XDYHAT,XZZ,XDXX,XDYY,XDZX,XDZY,XDZZ)
-!
-CALL UPDATE_METRICS(CLBCX,CLBCY,XDXX,XDYY,XDZX,XDZY,XDZZ)                         
-!
-!*       5.1.3  Compute the localization in index space of the vertical profile
-!               in CSTN and RSOU cases  :
-!
-IF (CTYPELOC =='LATLON' ) THEN  
-  IF (.NOT.LCARTESIAN) THEN                            ! compute (x,y) if 
-    CALL SM_XYHAT(XLATORI,XLONORI,                 &   ! the localization 
-                  XLATLOC,XLONLOC,XXHATLOC,XYHATLOC)   ! is given in latitude 
-  ELSE                                                 ! and longitude
-    WRITE(NLUOUT,FMT=*) 'CTYPELOC CANNOT BE LATLON IN CARTESIAN GEOMETRY'
-    WRITE(NLUOUT,FMT=*) '-> JOB ABORTED'
-   !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','CTYPELOC cannot be LATLON in cartesian geometry')
-  END IF 
-END IF  
-!
-ALLOCATE(ZXHAT_ll(NIMAX_ll+ 2 * JPHEXT),ZYHAT_ll(NJMAX_ll+2 * JPHEXT))
-CALL GATHERALL_FIELD_ll('XX',XXHAT,ZXHAT_ll,NRESP) !//
-CALL GATHERALL_FIELD_ll('YY',XYHAT,ZYHAT_ll,NRESP) !//
-IF (CTYPELOC /= 'IJGRID') THEN                                               
-  NILOC = MINLOC(ABS(XXHATLOC-ZXHAT_ll(:)))
-  NJLOC = MINLOC(ABS(XYHATLOC-ZYHAT_ll(:)))
-END IF
-!
-IF ( L1D .AND. ( NILOC(1) /= 1 .OR. NJLOC(1) /= 1 ) ) THEN
-  NILOC = 1
-  NJLOC = 1
-  WRITE(NLUOUT,FMT=*) 'FOR 1D CONFIGURATION, THE RS INFORMATIONS ARE TAKEN AT &
-                      & I=1 AND J=1 (CENTRAL VERTICAL WITHOUT HALO)'
-END IF
-!
-IF ( L2D .AND. ( NJLOC(1) /= 1 ) ) THEN
-  NJLOC = 1
-  WRITE(NLUOUT,FMT=*) 'FOR 2D CONFIGURATION, THE RS INFORMATIONS ARE TAKEN AT &
-                      & J=1 (CENTRAL PLANE WITHOUT HALO)'
-END IF
-!
-!*       5.2    Prognostic variables (not multiplied by  rhoJ) : u,v,w,theta,r
-!               and 1D anelastic reference state
-!
-!
-!*       5.2.1  Use a Radiosounding : CIDEAL='RSOU''
-!
-IF (CIDEAL == 'RSOU') THEN
-  WRITE(NLUOUT,FMT=*) 'CIDEAL="RSOU", attempt to read DATE'
-  CALL POSKEY(NLUPRE,NLUOUT,'RSOU')
-  READ(NLUPRE,FMT=*)  NYEAR,NMONTH,NDAY,XTIME
-  TDTCUR = DATE_TIME(DATE(NYEAR,NMONTH,NDAY),XTIME)
-  TDTEXP = TDTCUR
-  TDTSEG = TDTCUR
-  TDTMOD = TDTCUR
-  WRITE(NLUOUT,FMT=*) 'CIDEAL="RSOU", ATTEMPT TO PROCESS THE SOUNDING DATA'
-  IF (LGEOSBAL) THEN
-    CALL SET_RSOU(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS, &
-                  XJ,LSHIFT,XCORIOZ)
-  ELSE
-    CALL SET_RSOU(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS, &
-                  XJ,LSHIFT)
-  END IF
-!
-!*       5.2.2  N=cste  and U(z) : CIDEAL='CSTN'
-!
-ELSE IF (CIDEAL == 'CSTN') THEN
-  WRITE(NLUOUT,FMT=*) 'CIDEAL="CSTN", attempt to read DATE'
-  CALL POSKEY(NLUPRE,NLUOUT,'CSTN')
-  READ(NLUPRE,FMT=*)  NYEAR,NMONTH,NDAY,XTIME
-  TDTCUR = DATE_TIME(DATE(NYEAR,NMONTH,NDAY),XTIME)
-  TDTEXP = TDTCUR
-  TDTSEG = TDTCUR
-  TDTMOD = TDTCUR
-  WRITE(NLUOUT,FMT=*) 'CIDEAL="CSTN", ATTEMPT TO PROCESS THE SOUNDING DATA'
-  IF (LGEOSBAL) THEN
-    CALL SET_CSTN(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS, &
-                  XJ,LSHIFT,XCORIOZ)
-  ELSE
-    CALL SET_CSTN(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS, &
-                  XJ,LSHIFT)
-  END IF
-!
-END IF 
-!
-!*       5.3    Forcing variables
-!
-IF (LFORCING) THEN
-  WRITE(NLUOUT,FMT=*) 'FORCING IS ENABLED, ATTEMPT TO SET FORCING FIELDS'
-  CALL POSKEY(NLUPRE,NLUOUT,'ZFRC ','PFRC')
-  CALL SET_FRC(TZEXPREFILE)
-END IF
-!
-!! ---------------------------------------------------------------------
-! Modif PP ADV FRC
-! 5.4.2 initialize profiles for adv forcings
-IF (L2D_ADV_FRC) THEN
-    WRITE(NLUOUT,FMT=*) 'L2D_ADV_FRC IS SET TO  TRUE'
-    WRITE(NLUOUT,FMT=*) 'ADVECTING FORCING USED IS USER MADE, NOT STANDARD ONE ' 
-    WRITE(NLUOUT,FMT=*) 'IT IS FOR 2D IDEALIZED WAM STUDY ONLY ' 
-   CALL POSKEY(NLUPRE,NLUOUT,'ZFRC_ADV')
-   CALL SET_ADVFRC(TZEXPREFILE)
-ENDIF
-IF (L2D_REL_FRC) THEN
-    WRITE(NLUOUT,FMT=*) 'L2D_REL_FRC IS SET TO  TRUE'
-    WRITE(NLUOUT,FMT=*) 'RELAXATION FORCING USED IS USER MADE, NOT STANDARD ONE ' 
-    WRITE(NLUOUT,FMT=*) 'IT IS FOR 2D IDEALIZED WAM STUDY ONLY ' 
-   CALL POSKEY(NLUPRE,NLUOUT,'ZFRC_REL')
-   CALL SET_RELFRC(TZEXPREFILE)
-ENDIF
-!*       5.4    3D Reference state variables :
-!
-!
-!*       5.4.1  metrics coefficients and update halos:
-!
-CALL METRICS(XMAP,XDXHAT,XDYHAT,XZZ,XDXX,XDYY,XDZX,XDZY,XDZZ)
-!
-CALL UPDATE_METRICS(CLBCX,CLBCY,XDXX,XDYY,XDZX,XDZY,XDZZ)
-!
-!*       5.4.2  3D reference state :
-!
-CALL SET_REF(0,TFILE_DUMMY,                        &
-             XZZ,XZHAT,XJ,XDXX,XDYY,CLBCX,CLBCY,   &
-             XREFMASS,XMASS_O_PHI0,XLINMASS,       &
-             XRHODREF,XTHVREF,XRVREF,XEXNREF,XRHODJ)
-!
-!
-!*       5.5.1  Absolute pressure :
-!
-!
-!*       5.5.2  Total mass of dry air Md computation :
-!
-CALL TOTAL_DMASS(XJ,XRHODREF,XDRYMASST)
-!
-!
-!*       5.6    Complete prognostic variables (multipliy by  rhoJ) at time t :
-!
-! U grid   : gridpoint 2
-IF (LWEST_ll())  XUT(1,:,:)    = 2.*XUT(2,:,:) - XUT(3,:,:)
-! V grid   : gridpoint 3
-IF (LSOUTH_ll())  XVT(:,1,:)    = 2.*XVT(:,2,:) - XVT(:,3,:)
-! SV : gridpoint 1
-XSVT(:,:,:,:) = 0.
-!
-!
-!*       5.7   Larger scale fields initialization :
-!
-XLSUM(:,:,:) = XUT(:,:,:)        ! these fields do not satisfy the 
-XLSVM(:,:,:) = XVT(:,:,:)        ! lower boundary condition but are 
-XLSWM(:,:,:) = XWT(:,:,:)        ! in equilibrium
-XLSTHM(:,:,:)= XTHT(:,:,:)
-XLSRVM(:,:,:)= XRT(:,:,:,1)
-!
-! enforce the vertical homogeneity under the ground and above the top of
-! the model for the LS fields
-!
-XLSUM(:,:,NKB-1)=XLSUM(:,:,NKB)
-XLSUM(:,:,NKU)=XLSUM(:,:,NKU-1)
-XLSVM(:,:,NKB-1)=XLSVM(:,:,NKB)
-XLSVM(:,:,NKU)=XLSVM(:,:,NKU-1)
-XLSWM(:,:,NKB-1)=XLSWM(:,:,NKB)
-XLSWM(:,:,NKU)=XLSWM(:,:,NKU-1)
-XLSTHM(:,:,NKB-1)=XLSTHM(:,:,NKB)
-XLSTHM(:,:,NKU)=XLSTHM(:,:,NKU-1)
-IF ( NRR > 0 ) THEN
-  XLSRVM(:,:,NKB-1)=XLSRVM(:,:,NKB)
-  XLSRVM(:,:,NKU)=XLSRVM(:,:,NKU-1)
-END IF
-!
-ILBX=SIZE(XLBXUM,1)
-ILBY=SIZE(XLBYUM,2)
-IF(LWEST_ll() .AND. .NOT. L1D) THEN
-  XLBXUM(1:NRIMX+JPHEXT,        :,:)     = XUT(2:NRIMX+JPHEXT+1,        :,:)
-  XLBXVM(1:NRIMX+JPHEXT,        :,:)     = XVT(1:NRIMX+JPHEXT,        :,:)
-  XLBXWM(1:NRIMX+JPHEXT,        :,:)     = XWT(1:NRIMX+JPHEXT,        :,:)
-  XLBXTHM(1:NRIMX+JPHEXT,        :,:)   = XTHT(1:NRIMX+JPHEXT,        :,:)
-  XLBXRM(1:NRIMX+JPHEXT,        :,:,:)   = XRT(1:NRIMX+JPHEXT,        :,:,:)
-ENDIF
-IF(LEAST_ll() .AND. .NOT. L1D) THEN
-  XLBXUM(ILBX-NRIMX-JPHEXT+1:ILBX,:,:)     = XUT(NIU-NRIMX-JPHEXT+1:NIU,    :,:)
-  XLBXVM(ILBX-NRIMX-JPHEXT+1:ILBX,:,:)     = XVT(NIU-NRIMX-JPHEXT+1:NIU,    :,:)
-  XLBXWM(ILBX-NRIMX-JPHEXT+1:ILBX,:,:)     = XWT(NIU-NRIMX-JPHEXT+1:NIU,    :,:)
-  XLBXTHM(ILBX-NRIMX-JPHEXT+1:ILBX,:,:)   = XTHT(NIU-NRIMX-JPHEXT+1:NIU,    :,:)
-  XLBXRM(ILBX-NRIMX-JPHEXT+1:ILBX,:,:,:)   = XRT(NIU-NRIMX-JPHEXT+1:NIU,    :,:,:)
-ENDIF
-IF(LSOUTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) THEN
-  XLBYUM(:,1:NRIMY+JPHEXT,        :)     = XUT(:,1:NRIMY+JPHEXT,      :)
-  XLBYVM(:,1:NRIMY+JPHEXT,        :)     = XVT(:,2:NRIMY+JPHEXT+1,      :)
-  XLBYWM(:,1:NRIMY+JPHEXT,        :)     = XWT(:,1:NRIMY+JPHEXT,  :)
-  XLBYTHM(:,1:NRIMY+JPHEXT,        :)    = XTHT(:,1:NRIMY+JPHEXT,      :)
-  XLBYRM(:,1:NRIMY+JPHEXT,        :,:)   = XRT(:,1:NRIMY+JPHEXT,      :,:)
-ENDIF
-IF(LNORTH_ll().AND. .NOT. L1D .AND. .NOT. L2D) THEN
-  XLBYUM(:,ILBY-NRIMY-JPHEXT+1:ILBY,:)     = XUT(:,NJU-NRIMY-JPHEXT+1:NJU,  :)
-  XLBYVM(:,ILBY-NRIMY-JPHEXT+1:ILBY,:)     = XVT(:,NJU-NRIMY-JPHEXT+1:NJU,  :)
-  XLBYWM(:,ILBY-NRIMY-JPHEXT+1:ILBY,:)     = XWT(:,NJU-NRIMY-JPHEXT+1:NJU,  :)
-  XLBYTHM(:,ILBY-NRIMY-JPHEXT+1:ILBY,:)    = XTHT(:,NJU-NRIMY-JPHEXT+1:NJU,  :)
-  XLBYRM(:,ILBY-NRIMY-JPHEXT+1:ILBY,:,:)   = XRT(:,NJU-NRIMY-JPHEXT+1:NJU,  :,:)
-ENDIF
-DO JSV = 1, NSV
-  IF(LWEST_ll() .AND. .NOT. L1D) &
-  XLBXSVM(1:NRIMX+JPHEXT,        :,:,JSV)   = XSVT(1:NRIMX+JPHEXT,        :,:,JSV)
-  IF(LEAST_ll() .AND. .NOT. L1D) &
-  XLBXSVM(ILBX-NRIMX-JPHEXT+1:ILBX,:,:,JSV)   = XSVT(NIU-NRIMX-JPHEXT+1:NIU,    :,:,JSV)
-  IF(LSOUTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) &
-  XLBYSVM(:,1:NRIMY+JPHEXT,        :,JSV)   = XSVT(:,1:NRIMY+JPHEXT,      :,JSV)
-  IF(LNORTH_ll() .AND. .NOT. L1D .AND. .NOT. L2D) &
-  XLBYSVM(:,ILBY-NRIMY-JPHEXT+1:ILBY,:,JSV)   = XSVT(:,NJU-NRIMY-JPHEXT+1:NJU,  :,JSV)
-END DO
-!
-!
-!*       5.8   Add a perturbation to a basic state :
-!
-IF(LPERTURB) CALL SET_PERTURB(TZEXPREFILE)
-!
-!
-!*       5.9   Anelastic correction and pressure:
-!
-IF (.NOT.LOCEAN) THEN
-  CALL ICE_ADJUST_BIS(XPABST,XTHT,XRT)
-  IF ( .NOT. L1D ) CALL PRESSURE_IN_PREP(XDXX,XDYY,XDZX,XDZY,XDZZ)
-  CALL ICE_ADJUST_BIS(XPABST,XTHT,XRT)
-END IF
-!
-!
-!*       5.10  Compute THETA, vapor and cloud mixing ratio
-!
-IF (CIDEAL == 'RSOU') THEN
-    ALLOCATE(ZEXN(NIU,NJU,NKU))         
-  ALLOCATE(ZT(NIU,NJU,NKU))  
-  ALLOCATE(ZTHL(NIU,NJU,NKU))              
-  ALLOCATE(ZRT(NIU,NJU,NKU))              
-  ALLOCATE(ZCPH(NIU,NJU,NKU))        
-  ALLOCATE(ZLVOCPEXN(NIU,NJU,NKU))        
-  ALLOCATE(ZLSOCPEXN(NIU,NJU,NKU))  
-  ALLOCATE(ZFRAC_ICE(NIU,NJU,NKU))
-  ALLOCATE(ZRSATW(NIU,NJU,NKU))
-  ALLOCATE(ZRSATI(NIU,NJU,NKU))             
-  ALLOCATE(ZBUF(NIU,NJU,NKU,16))
-  ZRT=XRT(:,:,:,1)+XRT(:,:,:,2)+XRT(:,:,:,4)
-IF (LOCEAN) THEN
-  ZEXN(:,:,:)= 1.
-  ZT=XTHT
-  ZTHL=XTHT
-  ZCPH=XCPD+ XCPV * XRT(:,:,:,1)
-  ZLVOCPEXN = XLVTT
-  ZLSOCPEXN = XLSTT
-ELSE
-  ZEXN=(XPABST/XP00) ** (XRD/XCPD)
-  ZT=XTHT*(XPABST/XP00)**(XRD/XCPD)
-  ZCPH=XCPD+ XCPV * XRT(:,:,:,1)+ XCL *XRT(:,:,:,2)  + XCI * XRT(:,:,:,4)
-  ZLVOCPEXN = (XLVTT + (XCPV-XCL) * (ZT-XTT))/(ZCPH*ZEXN)
-  ZLSOCPEXN = (XLSTT + (XCPV-XCI) * (ZT-XTT))/(ZCPH*ZEXN)
-  ZTHL=XTHT-ZLVOCPEXN*XRT(:,:,:,2)-ZLSOCPEXN*XRT(:,:,:,4)
-  CALL TH_R_FROM_THL_RT(CST, NEB, SIZE(ZFRAC_ICE), 'T',ZFRAC_ICE,XPABST,ZTHL,ZRT,XTHT,XRT(:,:,:,1), &
-                        XRT(:,:,:,2),XRT(:,:,:,4),ZRSATW, ZRSATI,OOCEAN=.FALSE.,&
-                        PBUF=ZBUF)
-END IF
-  DEALLOCATE(ZEXN)         
-  DEALLOCATE(ZT)       
-  DEALLOCATE(ZCPH)        
-  DEALLOCATE(ZLVOCPEXN)        
-  DEALLOCATE(ZLSOCPEXN)
-  DEALLOCATE(ZTHL) 
-  DEALLOCATE(ZRT)
-  DEALLOCATE(ZBUF)
-! Coherence test
-  IF ((.NOT. LUSERI) ) THEN
-    IF (MAXVAL(XRT(:,:,:,4))/= 0) THEN
-       WRITE(NLUOUT,FMT=*) "*********************************"             
-       WRITE(NLUOUT,FMT=*) 'WARNING'      
-       WRITE(NLUOUT,FMT=*) 'YOU HAVE LUSERI=FALSE '
-       WRITE(NLUOUT,FMT=*) ' BUT WITH YOUR RADIOSOUNDING Ri/=0'
-       WRITE(NLUOUT,FMT=*) MINVAL(XRT(:,:,:,4)),MAXVAL(XRT(:,:,:,4))
-       WRITE(NLUOUT,FMT=*) "*********************************"       
-    ENDIF  
-  ENDIF
-  IF ((.NOT. LUSERC)) THEN
-    IF (MAXVAL(XRT(:,:,:,2))/= 0) THEN          
-      WRITE(NLUOUT,FMT=*) "*********************************"
-      WRITE(NLUOUT,FMT=*) 'WARNING'    
-      WRITE(NLUOUT,FMT=*) 'YOU HAVE LUSERC=FALSE '
-      WRITE(NLUOUT,FMT=*) 'BUT WITH YOUR RADIOSOUNDING RC/=0'
-      WRITE(NLUOUT,FMT=*) MINVAL(XRT(:,:,:,2)),MAXVAL(XRT(:,:,:,2))      
-      WRITE(NLUOUT,FMT=*) "*********************************"
-    ENDIF  
-  ENDIF
-      ! on remet les bonnes valeurs pour NRR
-  IF(CCLOUD=='NONE') NRR=1
-  IF(CCLOUD=='REVE') NRR=2
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*  	 6.    INITIALIZE SCALAR VARIABLES FOR CHEMISTRY
-!   	       -----------------------------------------
-!
-!  before calling chemistry
-CCONF = 'START'
-CSTORAGE_TYPE='TT'                  
-CALL IO_File_close(TZEXPREFILE)  ! Close the EXPRE file
-!
-IF ( LCH_INIT_FIELD ) CALL CH_INIT_FIELD_n(1, NLUOUT, NVERB)
-!
-! Initialization LIMA variables by ORILAM 
-IF (CCLOUD == 'LIMA' .AND. ((LORILAM).OR.(LDUST).OR.(LSALT))) &
-    CALL AER2LIMA(XSVT, XRHODREF, XRT(:,:,:,1), XPABST, XTHT, XZZ)
-!-------------------------------------------------------------------------------
-!
-!*  	 7.    INITIALIZE LEVELSET FOR IBM
-!   	       ---------------------------
-!
-IF (LIBM_LSF) THEN
-  !
-  ! In their current state, the IBM can only be used in
-  ! combination with cartesian coordinates and flat orography.
-  !
-  IF ((CZS.NE."FLAT").OR.(.NOT.LCARTESIAN)) THEN
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','IBM can only be used with flat ground')
-  ENDIF
-  !
-  ALLOCATE(XIBM_LS(NIU,NJU,NKU,4))
-  !
-  CALL IBM_INIT_LS(XIBM_LS)
-  !
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*   	 8.    WRITE THE FMFILE 
-!   	       ----------------
-!
-CALL SECOND_MNH2(ZTIME1)
-!
-NNPRAR = 22 + 2*(NRR+NSV)   &    ! 22 = number of grid variables + reference 
-       + 8 + 17                  ! state variables + dimension variables
-                                 ! 2*(8+NRR+NSV) + 1 = number of prognostic
-                                 ! variables at time t and t-dt
-NTYPE=1
-!
-CALL IO_File_add2list(TINIFILE,TRIM(CINIFILE),'MNH','WRITE',KLFINPRAR=NNPRAR,KLFITYPE=NTYPE,KLFIVERB=NVERB)
-!
-CALL IO_File_open(TINIFILE)
-!
-CALL IO_Header_write(TINIFILE)
-!
-CALL WRITE_DESFM_n(1,TINIFILE)
-!
-CALL WRITE_LFIFM_n(TINIFILE,'')  ! There is no DAD model for PREP_IDEAL_CASE
-!
-CALL SECOND_MNH2(ZTIME2)
-!
-XT_STORE = XT_STORE + ZTIME2 - ZTIME1
-!
-!-------------------------------------------------------------------------------
-!
-!*     9.     EXTERNALIZED SURFACE
-!             --------------------
-!
-!
-IF (CSURF =='EXTE') THEN
-  IF (LEN_TRIM(CINIFILEPGD)==0) THEN
-    IF (LEN_TRIM(CPGD_FILE)/=0) THEN
-      CINIFILEPGD=CPGD_FILE
-    ELSE
-      !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','CINIFILEPGD needed in NAM_LUNITn')
-    ENDIF      
-  ENDIF
-  CALL SURFEX_ALLOC_LIST(1)
-  YSURF_CUR => YSURF_LIST(1)
-  CALL READ_ALL_NAMELISTS(YSURF_CUR,'MESONH','PRE',.FALSE.)              
-  ! Switch to model 1 surface variables
-  CALL GOTO_SURFEX(1)
-  !* definition of physiographic fields
-  ! computed ...
-  IF (LEN_TRIM(CPGD_FILE)==0 .OR. .NOT. LREAD_GROUND_PARAM) THEN
-    TPGDFILE => TINIFILE
-    CALL PGD_GRID_SURF_ATM(YSURF_CUR%UG, YSURF_CUR%U,YSURF_CUR%GCP,'MESONH',TINIFILE%CNAME,'MESONH',.TRUE.,HDIR='-')
-    CALL PGD_SURF_ATM     (YSURF_CUR,'MESONH',TINIFILE%CNAME,'MESONH',.TRUE.)
-    CALL IO_File_add2list(TINIFILEPGD,TRIM(CINIFILEPGD),'PGD','WRITE',KLFINPRAR=NNPRAR,KLFITYPE=NTYPE,KLFIVERB=NVERB)
-    CALL IO_File_open (TINIFILEPGD)
-    TPGDFILE => TINIFILEPGD
-  ELSE
-  ! ... or read from file.
-    CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PGD',               &
-                            '                            ', '      ', &
-                            TDTCUR%nyear, TDTCUR%nmonth,              &
-                            TDTCUR%nday, TDTCUR%xtime                 )
-!
-  END IF
-  !
-  !* forces orography from atmospheric file
-  IF (.NOT. LREAD_ZS) CALL MNHPUT_ZS_n
-  !
-  ! on ecrit un nouveau fichier PGD que s'il n'existe pas
-  IF (LEN_TRIM(CPGD_FILE)==0 .OR. .NOT. LREAD_GROUND_PARAM) THEN
-    !* writing of physiographic fields in the file
-    CSTORAGE_TYPE='PG'
-    !
-    CALL IO_Header_write(TINIFILEPGD)
-    CALL IO_Field_write(TINIFILEPGD,'JPHEXT', JPHEXT)    
-    CALL IO_Field_write(TINIFILEPGD,'SURF','EXTE')
-    CALL IO_Field_write(TINIFILEPGD,'L1D', L1D)
-    CALL IO_Field_write(TINIFILEPGD,'L2D', L2D)
-    CALL IO_Field_write(TINIFILEPGD,'PACK',LPACK)
-    CALL WRITE_HGRID(1,TINIFILEPGD)
-    !
-    TOUTDATAFILE => TINIFILEPGD
-    !
-    TFILE_SURFEX => TINIFILEPGD
-    ALLOCATE(YSURF_CUR%DUO%CSELECT(0))    
-    CALL WRITE_PGD_SURF_ATM_n(YSURF_CUR,'MESONH')
-    NULLIFY(TFILE_SURFEX)
-    CSTORAGE_TYPE='TT'
-  ENDIF
-  !
-  !
-  !* rereading of physiographic fields and definition of prognostic fields
-  !* writing of all surface fields
-  TOUTDATAFILE => TINIFILE
-  TFILE_SURFEX => TINIFILE
-  CALL PREP_SURF_MNH('                            ','      ')
-  NULLIFY(TFILE_SURFEX)
-ELSE
-  CSURF = "NONE"
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*     10.     CLOSES THE FILE
-!             ---------------
-!
-IF (CSURF =='EXTE' .AND. (LEN_TRIM(CPGD_FILE)==0 .OR. .NOT. LREAD_GROUND_PARAM)) THEN
-  CALL IO_File_close(TINIFILEPGD)
-ENDIF
-CALL IO_File_close(TINIFILE)
-IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN
-  CALL IO_File_close(TPGDFILE)
-ENDIF
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*      11.    PRINTS ON OUTPUT-LISTING
-!              ------------------------
-!
-IF (NVERB >= 5) THEN
-  WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: LCARTESIAN,CIDEAL,CZS=', &
-                                    LCARTESIAN,CIDEAL,CZS 
-  WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: LUSERV=',LUSERV
-  WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: XLON0,XLAT0,XBETA,XRPK,XLONORI,XLATORI=', &
-                                    XLON0,XLAT0,XBETA,XRPK,XLONORI,XLATORI
-  WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: XDELTAX,XDELTAY=',XDELTAX,XDELTAY
-  WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: NVERB=',NVERB
-  IF(LCARTESIAN) THEN
-    WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: No map projection used.'
-  ELSE
-    IF (XRPK == 1.) THEN
-      WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: Polar stereo used.'
-    ELSE IF (XRPK == 0.) THEN
-      WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: Mercator used.'
-    ELSE
-      WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: Lambert used, cone factor=',XRPK 
-    END IF
-  END IF
-END IF
-!
-IF (NVERB >= 5) THEN
-  WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: IIB, IJB, IKB=',NIB,NJB,NKB
-  WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: IIU, IJU, IKU=',NIU,NJU,NKU
-END IF
-!
-!
-!*       28.1   print statistics!
-!
-  !
-  CALL SECOND_MNH2(ZTIME2)
-  XT_START=XT_START+ZTIME2-ZEND
-  !
-  ! Set File Timing OUTPUT
-  !
-  CALL SET_ILUOUT_TIMING(TLUOUT0)
-  !
-  ! Compute global time
-  !
-  CALL TIME_STAT_ll(XT_START,ZTOT)
-  !
-  !
-  IMI = 1
-  CALL TIME_HEADER_ll(IMI)
-  !
-  CALL TIME_STAT_ll(XT_STORE,ZTOT,      ' STORE-FIELDS','=')
-  CALL  TIMING_SEPARATOR('+')
-  CALL  TIMING_SEPARATOR('+')  
-  WRITE(YMI,FMT="(I0)") IMI
-  CALL TIME_STAT_ll(XT_START,ZTOT,      ' MODEL'//YMI,'+')
-  CALL  TIMING_SEPARATOR('+')
-  CALL  TIMING_SEPARATOR('+')
-  CALL  TIMING_SEPARATOR('+')
-WRITE(NLUOUT,FMT=*) ' '
-WRITE(NLUOUT,FMT=*) '****************************************************'
-WRITE(NLUOUT,FMT=*) '* PREP_IDEAL_CASE: PREP_IDEAL_CASE ENDS CORRECTLY. *'
-WRITE(NLUOUT,FMT=*) '****************************************************'
-!
-CALL FINALIZE_MNH()
-!
-!
-CONTAINS
-INCLUDE "th_r_from_thl_rt.func.h"
-INCLUDE "compute_frac_ice.func.h"
-END PROGRAM PREP_IDEAL_CASE
diff --git a/src/mesonh/ext/prep_real_case.f90 b/src/mesonh/ext/prep_real_case.f90
deleted file mode 100644
index 01b3b16db..000000000
--- a/src/mesonh/ext/prep_real_case.f90
+++ /dev/null
@@ -1,1421 +0,0 @@
-!MNH_LIC Copyright 1995-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.
-!-----------------------------------------------------------------
-!     ######################
-      PROGRAM PREP_REAL_CASE
-!     ######################
-!
-!!****  *PREP_REAL_CASE* - program to write an initial FM file from real case
-!!                         situation.
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!       The purpose of this program is to prepare an initial meso-NH file
-!!    (LFIFM and DESFM files) filled by some fields of a real situation. 
-!!    General data are given by the MESO-NH user in the namelist file 
-!!    'PRE_REAL1.nam'. The fields are obtained from three sources:
-!!        - an atmospheric input file, which can be:
-!!          * an Aladin file, itself obtained from an Arpege file with
-!!            the Aladin routine "FULLPOS".
-!!          * a grib file (ECMWF, Grib Arpege or Grib Aladin)
-!!          * a MESONH file
-!!        - an physiographic data file.
-!!
-!!       1) Fields obtained from the Atmospheric file:
-!!          -----------------------------------------
-!!
-!!      - the projection parameters (checked with PGD file): 
-!!                 reference latitude and longitude
-!!                 parameter of projection
-!!                 angle of rotation of the domain
-!!
-!!      - the horizontal grid definition (checked with PGD file):
-!!                 grid mesh
-!!                 latitude and longitude of the reference point 
-!!                                   (with data from PRE_REAL1.nam)
-!!
-!!      - thermodynamical 3D and 2D fields:
-!!                 potential temperature
-!!                 vapor mixing ratio
-!!
-!!      - dynamical fields:
-!!                 three components of the wind
-!!
-!!      - reference anelastic state variables:
-!!                 profile of virtual potential temperature
-!!                 profile of dry density
-!!                 Exner function at model top
-!!
-!!      - total dry air mass
-!!
-!!
-!!       2) Fields obtained from the physiographic data file:
-!!          ------------------------------------------------
-!!
-!!      - the projection parameters: 
-!!                 reference latitude and longitude
-!!                 parameter of projection
-!!                 angle of rotation of the domain
-!!
-!!      - the horizontal grid definition:
-!!                 grid mesh
-!!                 latitude and longitude of the reference point 
-!!                                   (with data from PRE_REAL1.nam)
-!!      - physiografic fields: (orographic, vegetation, soil and radiation fields)
-!!
-!!
-!!       3) Data obtained from the namelist file PRE_REAL1.nam:
-!!          --------------------------------------------------
-!! 
-!!      - type of equations system
-!!      - vertical grid definition
-!!      - number of points in x and y directions
-!!      - level of verbosity
-!!      - name of the different files
-!!
-!!
-!!**  METHOD
-!!    ------
-!!      In this program, once the MESO-NH domain is calculated, all the
-!!      2D or 3D fields are computed on the MESO-NH horizontal domain WITH 
-!!      the external points. This is particularly important for the large
-!!      scale fields during the MESO-NH run.
-!!
-!!   1) The following PREP_REAL_CASE program:
-!!
-!!      - set default values for global variables which will be written in 
-!!        DESFM file (by calling DEFAULT_DESFM1); lateral boundary conditions
-!!        are open.
-!!
-!!      - opens the different files (by calling OPEN_PRC_FILES).
-!!
-!!      - initializes physical constants (by calling INI_CST).
-!!
-!!      - initializes the horizontal domain from the data read in the 
-!!        descriptive part of the Aladin file and the directives read in the
-!!        namelist file (routines READ_GENERAL and SET_SUBDOMAIN in 
-!!        READ_ALL_DATA). This MESO-NH domain is a part of the Aladin domain.
-!!
-!!      - initializes global variables from namelists and the MESO-NH
-!!        vertical grid definition variables in the namelist file
-!!        (routine READ_VER_GRID).
-!!
-!!      - initializes the physiographic 2D fields from the physiographic data
-!!        file, in particular the MESO-NH orography.
-!!
-!!      - reads the 3D and 2D variable fields in the Grib file
-!!        (routine READ_ALL_DATA_GRIB_CASE),
-!!        if  HATMFILETYPE='GRIBEX':
-!!           absolute temperature
-!!           specific humidity
-!!           horizontal contravariant wind
-!!           surface pressure
-!!           large scale orography
-!!
-!!      - reads the 3D and 2D variable fields in the input MESONH file
-!!        (routine READ_ALL_DATA_MESONH_CASE), if HATMFILETYPE='MESONH':
-!!           potential temperature
-!!           vapor mixing ratio
-!!           horizontal wind
-!!           other mixing ratios
-!!           turbulence prognostic and semi-prognostic variables
-!!           large scale orography
-!!
-!!      - computes some geometric variables (routines SM_GRIDPROJ and METRICS),
-!!        in particular:
-!!          * altitude 3D array
-!!          * metric coefficients
-!!          * jacobian
-!!
-!!      - initializes MESO-NH thermodynamical fields:
-!!          * changes of variables (routine VER_PREP_mmmmmm_CASE):
-!!              absolute temperature --> virtual potential temperature
-!!              specific humidity    --> vapor mixing ratio
-!!          * interpolates/extrapolates the fields from the large scale 
-!!            orography to the MESO-NH one (routine VER_INT_THERMO in
-!!            VER_THERMO, by using a shifting function method).
-!!            in water vapor case, the interpolations are always performed
-!!            on relative humidity.
-!!          * the pressure is computed on each grid by integration of the
-!!            hydrostatic equation from bottom or top. When input atmospheric
-!!            file is a MESO-NH one, information about the difference between
-!!            hydrostatic pressure and total pressure is kept and interpolated
-!!            during the entire PREP_REAL_CASE process.
-!!          * interpolates the fields to the MESO-NH vertical grid
-!!            (also by routine VER_INT_THERMO in VER_THERMO).
-!!          * computes the potential temperature (routine VER_THERMO).
-!!          * sets to zero the mixing ratios, except the vapor mixing ratio
-!!            (VER_THERMO).
-!!
-!!      - initializes the reference anelastic state variables (routine SET_REFZ
-!!        in VER_THERMO).
-!!
-!!      - computes the total dry air mass (routine DRY_MASS in VER_THERMO).
-!!
-!!      - initializes MESO-NH dynamical variables:
-!!          * changes Aladin contravariant wind into true horizontal wind
-!!            (in subroutine VER_PREP).
-!!          * interpolates/extrapolates the momentum from the large scale 
-!!            orography to the MESO-NH one (routine VER_INT_DYN in
-!!            VER_DYN, by using a shifting function method).
-!!          * interpolates the fields to the MESO-NH vertical grid
-!!            (also by routine VER_INT_DYN in VER_DYN). The fields
-!!            are located on a horizontal Arakawa A-grid, as the Aladin fields.
-!!          * The momentum is interpolated to the Arakawa C-grid 
-!!            (routine VER_DYN).
-!!          * A first guess of the vertical momentum, verifying the 
-!!            uncompressible continuity equation and the material lower boundary
-!!            condition against the ground, is computed (routine WGUESS).
-!!          * computes the final non-divergent wind field (routine 
-!!            ANEL_BALANCE).
-!!
-!!      - copies the interpolated fields also at t-dt and in the large scale
-!!        fields (routine INI_PROG_VAR).
-!!  
-!!      - writes the DESFM and LFIFM files (routines WRITE_DESFM1 and
-!!        WRITE_LFIFM1).
-!!
-!!
-!!   2) Some conventions are used in this program and its subroutines because
-!!      of the number of different grids and fields:
-!!
-!!      - subscripts:
-!!          * the subscripts I and J are used for all the horizontal grid.
-!!          * the subcript K is used for the MESO-NH vertical grid (increasing
-!!            from bottom to top).
-!!          * the subscript L is used for the Aladin or input Mesonh grids
-!!            (increasing from bottom to top).
-!!
-!!      - suffixes:
-!!          * _LS: 
-!!              If used for a geographic or horizontal grid definition variable,
-!!               this variable is connected to the large horizontal domain.
-!!              If used for a surface variable, this variable corresponds to
-!!               the large scale orography, and therefore will be modified.
-!!              If used for another variable, this variable is discretized
-!!               on the Aladin or input MESONH file vertical grid 
-!!               (large-scale orography with input vertical discretization,
-!!                either coming from eta levels or input Gal-Chen grid).
-!!          * _MX:
-!!              Such a variable is discretized on the mixed grid.
-!!              (large-scale orography with output Gal-Chen vertical grid
-!!               discretization)
-!!          * _SH:
-!!              Such a variable is discretized on the shifted grid.
-!!              (fine orography with a shifted vertical grid, NOT Gal-Chen)
-!!          * no suffix:
-!!              The variable is discretized on the MESO-NH grid.
-!!              (fine orography with output Gal-Chen vertical grid discretization)
-!!
-!!      - additional pre-suffixes: (for pressure, Exner and altitude fields)
-!!          * MASS:
-!!              The variable is discretized on a mass point
-!!          * FLUX:
-!!              The variable is discretized on a flux point
-!!
-!!
-!!      - names of variables: for a physical variable VAR:
-!!          * pVARs        is the variable itself.
-!!          * pRHODVARs    is the variable multiplied by the dry density rhod.
-!!          * pRHODJVARs   is the variable multiplied by the dry density rhod
-!!                         and the Jacobian.            
-!!          * pRVARs       is the variable multiplied by rhod_ref, the anelastic
-!!                         reference state dry density and the Jacobian.
-!!        where p and s are the appropriate prefix and suffix.
-!!
-!!      - allocation of arrays: the arrays are allocated
-!!          * just before their initialization for the general arrays stored in 
-!!            modules.
-!!          * in the subroutine in which they are declared for the local arrays 
-!!            in a subroutine.
-!!          * in the routine in which they are initialized for the arrays 
-!!            defined in the monitor PREP_REAL_CASE. In this case they are in 
-!!            fact passed as pointer to the subroutines to allow their 
-!!            dynamical allocation (exception which confirms the rule: ZJ).
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!      Routine DEFAULT_DESFM1 : to set default values for variables which can be
-!!                              contained in DESFM file.
-!!      Routine OPEN_PRC_FILES: to open all files.
-!!      Routine INI_CST       : to initialize physical constants.
-!!      Routine READ_ALL_DATA_GRIB_CASE : to read all input data.
-!!      Routine READ_ALL_DATA_MESONH_CASE : to read all input data.
-!!      Routine SM_GRIDPROJ   : to compute some grid variables, in case of 
-!!                              conformal projection.
-!!      Routine METRICS       : to compute metric coefficients.
-!!      Routine VER_PREP_GRIBEX_CASE      : to prepare the interpolations.
-!!      Routine VER_PREP_MESONH_CASE      : to prepare the interpolations.
-!!      Routine VER_THERMO    : to perform the interpolation of thermodynamical
-!!                              variables.
-!!      Routine VER_DYN       : to perform the interpolation of dynamical
-!!                              variables.
-!!      Routine INI_PROG_VAR  : to initialize the prognostic varaibles not yet
-!!                              initialized
-!!      Routine WRITE_DESFM1  : to write a DESFM file.
-!!      Routine WRITE_LFIFM1  : to write a LFIFM file.
-!!      Routine IO_File_close : to close a FM-file (DESFM + LFIFM).
-!!
-!!      Module MODE_GRIDPROJ  : contains conformal projection routines
-!!    
-!!      Module MODI_DEFAULT_DESFM1  : interface module for routine DEFAULT_DESFM1
-!!      Module MODI_OPEN_PRC_FILES : interface module for routine OPEN_PRC_FILES
-!!      Module MODI_READ_ALL_DATA_MESONH_CASE : interface module for routine
-!!                                              READ_ALL_DATA_MESONH_CASE
-!!      Module MODI_METRICS        : interface module for routine METRICS
-!!      Module MODI_VER_PREP_GRIBEX_CASE      : interface module for routine
-!!                                              VER_PREP_GRIBEX_CASE
-!!      Module MODI_VER_PREP_MESONH_CASE      : interface module for routine
-!!                                              VER_PREP_MESONH_CASE
-!!      Module MODI_VER_THERMO     : interface module for routine VER_THERMO
-!!      Module MODI_VER_DYN        : interface module for routine VER_DYN
-!!      Module MODI_INI_PROG_VAR   : interface module for routine INI_PROG_VAR
-!!      Module MODI_WRITE_DESFM1   : interface module for routine WRITE_DESFM1
-!!      Module MODI_WRITE_LFIFM1   : interface module for routine WRITE_LFIFM1
-!!      
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!      Module MODD_CONF  : contains configuration variables for all models.
-!!         NVERB   : verbosity level for output-listing
-!!      Module MODD_CONF1 : contains configuration variables for model 1.
-!!         NRR     : number of moist variables
-!!      Module MODD_LUNIT : contains logical unit and names of files.
-!!      Module MODD_LUNIT : contains logical unit and names of files (model1).
-!!         CINIFILE: name of the FM file which will be used for the MESO-NH run.
-!!      Module MODD_GRID1 : contains grid variables.
-!!         XLAT    : latitude of the grid points
-!!         XLON    : longitudeof the grid points
-!!         XXHAT   : position xhat in the conformal plane
-!!         XYHAT   : position yhat in the conformal plane
-!!         XDXHAT  : horizontal local meshlength on the conformal plane
-!!         XDYHAT  : horizontal local meshlength on the conformal plane
-!!         XZS     : MESO-NH orography
-!!         XZZ     : altitude
-!!         XZHAT   : height zhat
-!!         XMAP    : map factor
-!!      Module MODD_LBC1 : contains declaration of lateral boundary conditions
-!!        CLBCX   : X-direction LBC type at left(1) and right(2) boundaries 
-!!        CLBCY   : Y-direction LBC type at left(1) and right(2) boundaries   
-!!      Module MODD_PARAM1 : contains declaration of the parameterizations' names
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!      Book 2
-!!
-!!    AUTHOR
-!!    ------
-!!	
-!!      V.Masson  Meteo-France
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    01/01/95
-!!                  Sept. 21, 1995  (J.Stein and V.Masson) surface pressure
-!!                  Jan.  09, 1996  (V. Masson) pressure function deduced from
-!!                                  hydrostatic pressure
-!!                  Jan.  31, 1996  (V. Masson) possibility to initialize
-!!                                  atmospheric fields from MESONH file
-!!                  Mar.  18, 1996  (V. Masson) new vertical extrapolation of Ts
-!!                                  in case of initialization with MESONH file
-!!                  Apr   17, 1996  (J. Stein ) change the DEFAULT_DESFM CALL
-!!                  May   25, 1996  (V. Masson) Variable CSTORAGE_TYPE
-!!                  Aug   26, 1996  (V. Masson) Only thinshell approximation is
-!!                                  currently available.
-!!                  Sept  24, 1996  (V. Masson) add writing of varaibles for
-!!                                  nesting ('DAD_NAME', 'DXRATIO', 'DYRATIO')
-!!                  Oct   11, 1996  (V. Masson) L1D and L2D configurations
-!!                  Oct   28, 1996  (V. Masson) add deallocations and NVERB
-!!                                  default set to 1
-!!                  Dec   02, 1996  (V. Masson) vertical interpolation of
-!!                                  surface fields in aladin case
-!!                  Dec   12, 1996  (V. Masson) add LS vertical velocity
-!!                  Jan   16, 1997  (J. Stein)  Durran's anelastic system
-!!                  May   07, 1997  (V. Masson) add LS tke
-!!                  Jun   27, 1997  (V. Masson) add absolute pressure
-!!                  Jul   09, 1997  (V. Masson) add namelist NAM_REAL_CONF
-!!                  Jul   10, 1997  (V. Masson) add LS epsilon
-!!                  Aug   25, 1997  (V. Masson) add computing time analysis
-!!                  Jan   20, 1998  (J. Stein)  add LB and LS fields
-!!                  Apr,  30, 1998  (V. Masson) Large scale VEG and LAI
-!!                  Jun,  04, 1998  (V. Masson) Large scale D2 and Aladin ISBA
-!!                                              files
-!!                  Jun,  04, 1998  (V. Masson) Add new soil interface var.
-!!                  Jan   20, 1999  (J. Stein)  add a Boundaries call
-!!                  March 15  1999  (J. Pettre, V. Bousquet and V. Masson)
-!!                                              initialization from GRIB files
-!!                  Jul       2000 (F.solmon/V.Masson) Adaptation for patch 
-!!                                            according to GRIB or MESONH case
-!!                  Nov   22, 2000  (P.Tulet, I. Mallet) initialization
-!!                                              from GRIB MOCAGE file
-!!                  Fev   01, 2001 (D.Gazen) add module MODD_NSV for NSV variable
-!!                  Jul   02, 2001 (J.Stein) add LCARTESIAN case
-!!                  Oct   15, 2001 (I.Mallet) allow namelists in different orders
-!!                  Dec       2003 (V.Masson) removes surface calls
-!!                  Jun   01, 2002 (O.Nuissier) filtering of tropical cyclone
-!!                  Aou   09, 2005 (D.Barbary) add CDADATMFILE CDADBOGFILE
-!!                   May   2006    Remove KEPS
-!!                  Feb   02, 2012 (C. Mari) interpolation from MOZART
-!!                                  add call to READ_CHEM_NETCDF_CASE &
-!!                                  VER_PREP_NETCDF_CASE 
-!!                  Mar   2012    Add NAM_NCOUT for netcdf output
-!!                  July  2013     (Bosseur & Filippi) Adds Forefire
-!!                  Mars  2014     (J.Escobar) Missing 'full' UPDATE_METRICS for arp2lfi // run
-!!                   April 2014     (G.TANGUY) Add LCOUPLING
-!!                        2014     (M.Faivre)
-!!                  Fevr  2015     (M.Moge) Cleaning up
-!!                  Aug   2015     (M.Moge) removing EXTRAPOL on XDXX and XDYY in part 8
-!!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
-!!    M.Leriche        2015 : add LUSECHEM  dans NAM_CH_CONF 
-!!                  Feb   02, 2012 (C. Mari & BV) interpolation from CAMS
-!!                                  add call to READ_CAMS_NETCDF_CASE &
-!!                                  VER_PREP_NETCDF_CASE 
-!!      Modification    01/2016  (JP Pinty) Add LIMA
-!!      Modification    02/2016  (JP Pinty) Convert CAMS mix ratio to nbr conc
-!
-!!  06/2016     (G.Delautier) phasage surfex 8
-!!    P.Wautelet : 08/07/2016 : removed MNH_NCWRIT define
-!!     B.VIE 2016 : LIMA
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
-!  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 20/03/2019: missing use MODI_INIT_SALT
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!  T.Nagel        02/2021: add IBM
-!  P. Wautelet 06/07/2021: use FINALIZE_MNH
-!!  M. Leriche 26/01/2022: add reading of CAMS reanalysis for chemistry
-!!                         and/or for LIMA
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_CH_M9_n
-USE MODD_CH_MNHC_n,        ONLY: LUSECHAQ_n=>LUSECHAQ,LUSECHIC_n=>LUSECHIC, LUSECHEM_n=>LUSECHEM
-USE MODD_CONF
-USE MODD_CONF_n
-USE MODD_CST
-USE MODD_DIM_n
-!UPG*PT
-USE MODD_CH_AEROSOL
-USE MODD_DUST,             ONLY:  LDUST, NMODE_DST, CRGUNITD, XINISIG, XINIRADIUS, XN0MIN,&
-                                  LDSTCAMS
-!UPG*PT
-
-USE MODD_DYN_n,            CPRESOPT_n=>CPRESOPT, LRES_n=>LRES, XRES_n=>XRES , NITR_n=>NITR
-USE MODD_FIELD_n
-USE MODD_GR_FIELD_n
-USE MODD_GRID
-USE MODD_GRID_n
-USE MODD_HURR_CONF
-USE MODD_IBM_LSF,          ONLY: CIBM_TYPE, LIBM_LSF, NIBM_SMOOTH, XIBM_SMOOTH
-USE MODD_IBM_PARAM_n,      ONLY: XIBM_LS
-USE MODD_IO,               ONLY: TFILEDATA, TFILE_SURFEX
-USE MODD_LBC_n
-USE MODD_LSFIELD_n
-USE MODD_LUNIT,            ONLY: TPGDFILE,TLUOUT0,TOUTDATAFILE
-USE MODD_LUNIT_n,          ONLY: CINIFILE,TINIFILE,TLUOUT
-USE MODD_METRICS_n
-USE MODD_MNH_SURFEX_n
-USE MODD_NESTING
-USE MODD_NSV
-USE MODD_PARAMETERS
-USE MODD_PARAM_n
-USE MODD_PARAM_ICE, ONLY: PARAM_ICE_ASSOCIATE
-USE MODD_PREP_REAL
-USE MODD_REF_n
-!UPG*PT
-USE MODD_SALT,             ONLY:  LSALT, NMODE_SLT, CRGUNITS, XINISIG_SLT, XINIRADIUS_SLT, XN0MIN_SLT,&
-                                  LSLTCAMS
-USE MODD_CH_AERO_n,        ONLY:  XM3D, XRHOP3D, XSIG3D, XRG3D, XN3D, XCTOTA3D
-!UPG*PT
-USE MODD_TURB_n
-!
-USE MODE_EXTRAPOL
-use mode_field,            only: Alloc_field_scalars, Ini_field_list, Ini_field_scalars
-USE MODE_FINALIZE_MNH,     only: FINALIZE_MNH
-USE MODE_GRIDCART
-USE MODE_GRIDPROJ
-USE MODE_IO,               only: IO_Init
-USE MODE_IO_FIELD_READ,    only: IO_Field_read
-USE MODE_IO_FIELD_WRITE,   only: IO_Header_write
-USE MODE_IO_FILE,          only: IO_File_close, IO_File_open
-USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list, IO_File_find_byname
-USE MODE_ll
-USE MODE_MODELN_HANDLER
-USE MODE_MPPDB
-USE MODE_MSG
-USE MODE_POS
-USE MODE_SPLITTINGZ_ll
-!
-USE MODI_BOUNDARIES
-USE MODI_COMPARE_DAD
-USE MODI_DEALLOCATE_MODEL1
-USE MODI_DEALLOC_PARA_LL
-USE MODI_DEFAULT_DESFM_n
-USE MODI_ERROR_ON_TEMPERATURE
-USE MODI_IBM_INIT_LS
-USE MODI_INI_PROG_VAR
-USE MODI_INIT_SALT
-USE MODI_LIMA_MIXRAT_TO_NCONC
-USE MODI_METRICS
-USE MODI_MNHREAD_ZS_DUMMY_n
-USE MODI_MNHWRITE_ZS_DUMMY_n
-USE MODI_OPEN_PRC_FILES
-USE MODI_PREP_SURF_MNH
-USE MODI_PRESSURE_IN_PREP
-USE MODI_READ_ALL_DATA_GRIB_CASE
-USE MODI_READ_ALL_DATA_MESONH_CASE
-USE MODI_READ_ALL_NAMELISTS
-!UPG*PT
-!USE MODI_READ_CAMS_DATA_NETCDF_CASE
-!USE MODI_READ_CHEM_DATA_NETCDF_CASE
-USE MODI_READ_CHEM_DATA_MOZART_CASE
-USE MODI_READ_CHEM_DATA_CAMS_CASE
-USE MODI_READ_LIMA_DATA_NETCDF_CASE
-USE MODI_AER2LIMA
-USE MODI_CH_AER_EQM_INIT_n
-!UPG*PT
-USE MODI_READ_VER_GRID
-USE MODI_SECOND_MNH
-USE MODI_SET_REF
-USE MODI_UPDATE_METRICS
-USE MODI_VER_DYN
-USE MODI_VER_PREP_GRIBEX_CASE
-USE MODI_VER_PREP_MESONH_CASE
-USE MODI_VER_PREP_NETCDF_CASE
-USE MODI_VERSION
-USE MODI_VER_THERMO
-USE MODI_WRITE_DESFM_n
-USE MODI_WRITE_LFIFM_n
-!
-USE MODN_CONF,             ONLY: JPHEXT , NHALO
-USE MODN_CONFZ
-USE MODN_PARAM_LIMA
-!
-IMPLICIT NONE
-!
-!*       0.1   Declaration of local variables
-!              ------------------------------
-!
-CHARACTER(LEN=28)              :: YATMFILE    ! name of the Atmospheric file
-CHARACTER(LEN=6)               :: YATMFILETYPE! type of the Atmospheric file
-CHARACTER(LEN=28)              :: YCHEMFILE    ! name of the Chemical file
-CHARACTER(LEN=6)               :: YCHEMFILETYPE! type of the Chemical file
-!UP*PT
-!CHARACTER(LEN=28)              :: YCAMSFILE    ! name of the input CAMS file
-!CHARACTER(LEN=6)               :: YCAMSFILETYPE! type of the input CAMS file
-CHARACTER(LEN=28)              :: YLIMAFILE    ! name of the input MACC file
-CHARACTER(LEN=6)               :: YLIMAFILETYPE! type of the input MACC file
-!UP*PT
-CHARACTER(LEN=28)              :: YSURFFILE    ! name of the Surface file
-CHARACTER(LEN=6)               :: YSURFFILETYPE! type of the Surface file
-CHARACTER(LEN=28)              :: YPGDFILE    ! name of the physiographic data
-!                                             ! file
-!
-CHARACTER(LEN=28)              :: YDAD_NAME   ! true name of the atmospheric file
-!
-!* other variables
-!
-REAL,DIMENSION(:,:,:), ALLOCATABLE:: ZJ       ! Jacobian
-!
-!* file management variables and counters
-!
-INTEGER                           :: ILUOUT0  ! logical unit for listing file
-INTEGER                           :: IPRE_REAL1 ! logical unit for namelist file
-INTEGER                           :: IRESP    ! return code in FM routines
-LOGICAL                           :: GFOUND   ! Return code when searching namelist
-INTEGER                           :: NIU,NJU,NKU   ! Upper bounds in x,y,z directions
-!
-REAL :: ZSTART, ZEND, ZTIME1, ZTIME2, ZTOT, ZALL ! for computing time analysis
-REAL :: ZMISC, ZREAD, ZHORI, ZPREP, ZSURF, ZTHERMO, ZDYN, ZDIAG, ZWRITE
-REAL :: ZDG                                      ! diagnostics time in routines
-INTEGER                           :: IINFO_ll    ! return code of // routines
-! Namelist model variables
-CHARACTER(LEN=5)                  :: CPRESOPT
-INTEGER                           :: NITR
-LOGICAL                           :: LRES
-REAL                              :: XRES
-LOGICAL                           :: LSHIFT      ! flag to perform vertical shift or not.
-LOGICAL                           :: LDUMMY_REAL ! flag to read and interpolate
-                                                 !dummy fields from GRIBex file
-INTEGER                           :: JRR      ! loop counter for moist var.
-LOGICAL  :: LUSECHAQ
-LOGICAL  :: LUSECHIC
-LOGICAL  :: LUSECHEM
-INTEGER :: JN
-!
-TYPE(TFILEDATA),POINTER :: TZATMFILE => NULL()
-TYPE(TFILEDATA),POINTER :: TZPRE_REAL1FILE => NULL()
-!
-!
-!*       0.3   Declaration of namelists
-!              ------------------------
-!
-NAMELIST/NAM_REAL_CONF/ NVERB, CEQNSYS, CPRESOPT, LSHIFT, LDUMMY_REAL, &
-                        LRES, XRES, NITR,LCOUPLING, NHALO , JPHEXT
-! Filtering and balancing of the large-scale and radar tropical cyclone
-NAMELIST/NAM_HURR_CONF/ LFILTERING, CFILTERING,   &
-XLAMBDA, NK, XLATGUESS, XLONGUESS, XBOXWIND, XRADGUESS, NPHIL, NDIAG_FILT,   &
-NLEVELR0,LBOGUSSING,               & 
-XLATBOG, XLONBOG, XVTMAXSURF, XRADWINDSURF,       &
-XMAX, XC, XRHO_Z, XRHO_ZZ, XB_0, XBETA_Z, XBETA_ZZ,&
-XANGCONV0, XANGCONV1000, XANGCONV2000,            &
-                        CDADATMFILE, CDADBOGFILE
- NAMELIST/NAM_AERO_CONF/ LORILAM, LINITPM, LDUST, XINIRADIUSI, XINIRADIUSJ,&
-                         XINISIGI, XINISIGJ, XN0IMIN, XN0JMIN, CRGUNIT, CRGUNITD,&
-                         LSALT, CRGUNITS, NMODE_DST, XINISIG, XINIRADIUS, XN0MIN,&
-!UPG*PT
-                         XINISIG_SLT, XINIRADIUS_SLT, XN0MIN_SLT, NMODE_SLT, &
-                         LDSTCAMS, LSLTCAMS,CACTCCN,CCLOUD, NMOD_IFN, NMOD_CCN
-!UPG*PT
-
-NAMELIST/NAM_CH_CONF/ LUSECHAQ,LUSECHIC,LUSECHEM
-!
-NAMELIST/NAM_IBM_LSF/ LIBM_LSF, CIBM_TYPE, NIBM_SMOOTH, XIBM_SMOOTH
-!
-! name of dad of input FM file
-INTEGER                :: II, IJ, IGRID, ILENGTH
-CHARACTER (LEN=100)    :: HCOMMENT
-TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL()   ! list of fields to exchange
-!UPG*PT
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZLBXRHO, ZLBYRHO
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZLBXZZ, ZLBYZZ
-REAL, DIMENSION(:,:,:),   ALLOCATABLE :: ZLBXPABST, ZLBYPABST
-INTEGER :: ILBX,ILBY,IIB,IJB,IIE,IJE
-!UPG*PT
-
-!-------------------------------------------------------------------------------
-!
-CALL MPPDB_INIT()
-!
-CALL GOTO_MODEL(1,ONOFIELDLIST=.TRUE.)
-!
-ZDIAG = 0.
-CALL SECOND_MNH (ZSTART)
-!
-ZHORI  = 0.
-ZSURF  = 0.
-ZTIME1 = ZSTART
-!
-!*       1.    SET DEFAULT VALUES
-!              ------------------
-!
-CALL VERSION
-CPROGRAM='REAL  '
-!
-CALL ALLOC_FIELD_SCALARS()
-CALL PARAM_ICE_ASSOCIATE()
-CALL DEFAULT_DESFM_n(1)
-NRR=1
-IDX_RVT = 1
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.    OPENNING OF THE FILES
-!              ---------------------
-CALL IO_Init()
-!
-CALL OPEN_PRC_FILES(TZPRE_REAL1FILE,YATMFILE, YATMFILETYPE,TZATMFILE &
-                                   ,YCHEMFILE,YCHEMFILETYPE &
-                                   ,YSURFFILE,YSURFFILETYPE &
-                                   ,YPGDFILE,TPGDFILE       &
-!UPG*PT
-!                                   ,YCAMSFILE,YCAMSFILETYPE)
-                                   ,YLIMAFILE,YLIMAFILETYPE)
-!UPG*PT
-ILUOUT0 = TLUOUT0%NLU
-TLUOUT => TLUOUT0
-!
-IF (YATMFILETYPE=='MESONH') THEN
-  LSHIFT = .FALSE.
-ELSE IF (YATMFILETYPE=='GRIBEX') THEN
-  LSHIFT = .TRUE.
-ELSE
-  LSHIFT = .TRUE.
-  WRITE(ILUOUT0,FMT=*) 'HATMFILETYPE WAS SET TO: '//TRIM(YATMFILETYPE)
-  WRITE(ILUOUT0,FMT=*) 'ONLY TWO VALUES POSSIBLE FOR HATMFILETYPE:'
-  WRITE(ILUOUT0,FMT=*) 'EITHER MESONH OR GRIBEX'
-  WRITE(ILUOUT0,FMT=*) '-> JOB ABORTED'
- !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_REAL_CASE','')
-END IF
-!                             
-LCPL_AROME=.FALSE.
-LCOUPLING=.FALSE.
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.    INITIALIZATION OF PHYSICAL CONSTANTS
-!              ------------------------------------
-!
-CALL INI_CST
-!
-!-------------------------------------------------------------------------------
-!
-!*       4.    READING OF NAMELIST
-!              -------------------
-!
-!*       4.1   reading of configuration variables
-!
-IPRE_REAL1 = TZPRE_REAL1FILE%NLU
-!
-CALL INIT_NMLVAR
-CALL POSNAM(IPRE_REAL1,'NAM_REAL_CONF',GFOUND,ILUOUT0)
-IF (GFOUND) READ(IPRE_REAL1,NAM_REAL_CONF)
-CALL POSNAM(IPRE_REAL1,'NAM_PARAM_LIMA',GFOUND,ILUOUT0)
-IF (GFOUND) READ(IPRE_REAL1,NAM_PARAM_LIMA)
-!
-CALL INI_FIELD_LIST(1)
-!
-CALL INI_FIELD_SCALARS()
-!
-!*       4.2   reading of values of some configuration variables in namelist
-!
-!
-!JUAN REALZ from prep_surfex
-!
-IF (YATMFILETYPE == 'GRIBEX') THEN
-!
-!*       4.1  Vertical Spatial grid 
-!
-CALL INIT_NMLVAR()
-CALL READ_VER_GRID(TZPRE_REAL1FILE)
-!
-CALL IO_Field_read(TPGDFILE,'IMAX',NIMAX)
-CALL IO_Field_read(TPGDFILE,'JMAX',NJMAX)
-!
-NIMAX_ll=NIMAX   !! _ll variables are global variables
-NJMAX_ll=NJMAX   !! but the old names are kept in PRE_IDEA1.nam file
-!
-CALL SET_JP_ll(JPMODELMAX,JPHEXT,JPVEXT,JPHEXT)
-CALL SET_DAD0_ll()
-!JUAN 4/04/2014 correction for PREP_REAL_CASE on Gribex files 
-!CALL SET_DIM_ll(NIMAX_ll, NJMAX_ll, 128)
-CALL SET_DIM_ll(NIMAX_ll, NJMAX_ll, NKMAX)
-CALL SET_LBX_ll('OPEN',1)
-CALL SET_LBY_ll('OPEN', 1)
-CALL SET_XRATIO_ll(1, 1)
-CALL SET_YRATIO_ll(1, 1)
-CALL SET_XOR_ll(1, 1)
-CALL SET_XEND_ll(NIMAX_ll+2*JPHEXT, 1)
-CALL SET_YOR_ll(1, 1)
-CALL SET_YEND_ll(NJMAX_ll+2*JPHEXT, 1)
-CALL SET_DAD_ll(0, 1)
-!JUANZ
-!CALL INI_PARA_ll(IINFO_ll)
-CALL INI_PARAZ_ll(IINFO_ll)
-!JUANZ
-
-!
-! sizes of arrays of the extended sub-domain
-!
-CALL GET_DIM_PHYS_ll('B',NIMAX,NJMAX)
-!!$CALL GET_DIM_EXT_ll('B',NIU,NJU)
-!!$CALL GET_INDICE_ll(NIB,NJB,NIE,NJE)
-!!$CALL GET_OR_ll('B',IXOR,IYOR)
-ENDIF
-!JUAN REALZ
-!
-LDUMMY_REAL= .FALSE.
-LFILTERING= .FALSE.
-CFILTERING= 'UVT  '
-XLATGUESS= XUNDEF ; XLONGUESS= XUNDEF ; XBOXWIND=XUNDEF; XRADGUESS= XUNDEF
-NK=50 ; XLAMBDA=0.2 ; NPHIL=24
-NLEVELR0=15
-NDIAG_FILT=-1
-LBOGUSSING= .FALSE.
-XLATBOG= XUNDEF ; XLONBOG= XUNDEF
-XVTMAXSURF= XUNDEF ; XRADWINDSURF= XUNDEF
-XMAX=16000. ; XC=0.7 ; XRHO_Z=-0.3 ; XRHO_ZZ=0.9
-XB_0=1.65 ; XBETA_Z=-0.5 ; XBETA_ZZ=0.35
-XANGCONV0=0. ; XANGCONV1000=0. ; XANGCONV2000=0.
-CDADATMFILE=' ' ; CDADBOGFILE=' '
-!
-CALL INIT_NMLVAR
-CALL POSNAM(IPRE_REAL1,'NAM_REAL_CONF',GFOUND,ILUOUT0)
-IF (GFOUND) READ(IPRE_REAL1,NAM_REAL_CONF)
-CALL POSNAM(IPRE_REAL1,'NAM_HURR_CONF',GFOUND,ILUOUT0)
-IF (GFOUND) READ(IPRE_REAL1,NAM_HURR_CONF)
-CALL POSNAM(IPRE_REAL1,'NAM_CH_CONF',GFOUND,ILUOUT0)
-IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_CH_CONF)
-CALL UPDATE_MODD_FROM_NMLVAR
-CALL POSNAM(IPRE_REAL1,'NAM_AERO_CONF',GFOUND,ILUOUT0)
-IF (GFOUND) READ(IPRE_REAL1,NAM_AERO_CONF)
-CALL POSNAM(IPRE_REAL1,'NAM_CONFZ',GFOUND,ILUOUT0)
-IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_CONFZ)
-CALL POSNAM(IPRE_REAL1,'NAM_IBM_LSF' ,GFOUND,ILUOUT0)
-IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_IBM_LSF)
-!
-! Sea salt
-CALL INIT_SALT
-!
-!*       4.3   set soil scheme to ISBA for initialization from GRIB
-!
-IF (YATMFILETYPE=='GRIBEX') THEN
-  CLBCX(:) ='OPEN'
-  CLBCY(:) ='OPEN'
-END IF
-!
-CALL SECOND_MNH(ZTIME2)
-ZMISC = ZTIME2 - ZTIME1
-!-------------------------------------------------------------------------------
-!
-!*       5.    READING OF THE INPUT DATA
-!              -------------------------
-!
-ZTIME1 = ZTIME2
-!
-IF (YATMFILETYPE=='MESONH') THEN
-  CALL READ_ALL_DATA_MESONH_CASE(TZPRE_REAL1FILE,YATMFILE,TPGDFILE,YDAD_NAME)
-ELSE IF (YATMFILETYPE=='GRIBEX') THEN
-  IF(LEN_TRIM(YCHEMFILE)>0 .AND. YCHEMFILETYPE=='GRIBEX')THEN
-    CALL READ_ALL_DATA_GRIB_CASE('ATM1',TZPRE_REAL1FILE,YATMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
-  ELSE
-    CALL READ_ALL_DATA_GRIB_CASE('ATM0',TZPRE_REAL1FILE,YATMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
-  END IF
-!
-  YDAD_NAME=' '
-END IF
-!
-IF (NIMAX==1 .AND. NJMAX==1) THEN
-  L1D=.TRUE.
-  L2D=.FALSE.
-ELSE IF (NJMAX==1) THEN
-  L1D=.FALSE.
-  L2D=.TRUE.
-ELSE
-  L1D=.FALSE.
-  L2D=.FALSE.
-END IF
-!
-! UPG*PT
-!*       5.1   reading of the input chemical data
-!
-!IF(LEN_TRIM(YCHEMFILE)>0)THEN
-!  ! read again Nam_aero_conf
-!  CALL POSNAM(IPRE_REAL1,'NAM_AERO_CONF',GFOUND,ILUOUT0)
-!  IF (GFOUND) READ(IPRE_REAL1,NAM_AERO_CONF)
-!  IF(YCHEMFILETYPE=='GRIBEX') &
-!  CALL READ_ALL_DATA_GRIB_CASE('CHEM',TZPRE_REAL1FILE,YCHEMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
-!  IF (YCHEMFILETYPE=='NETCDF') &
-!  CALL READ_CHEM_DATA_NETCDF_CASE(TZPRE_REAL1FILE,YCHEMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
-!END IF
-!
-!*       5.2   reading the input CAMS data
-!
-!IF(LEN_TRIM(YCAMSFILE)>0)THEN
-!   IF(YCAMSFILETYPE=='NETCDF') THEN
-!      CALL READ_CAMS_DATA_NETCDF_CASE(TZPRE_REAL1FILE,YCAMSFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
-!   ELSE
-!      CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_REAL_CASE','CANNOT READ CAMS GRIB FILES YET')
-!   END IF
-!END IF
-!*       5.1   reading CAMS or MACC files for init LIMA
-!
-IF(LEN_TRIM(YLIMAFILE)>0)THEN
-  IF(YLIMAFILETYPE=='NETCDF') THEN
-    CALL READ_LIMA_DATA_NETCDF_CASE(TZPRE_REAL1FILE,YLIMAFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
-  ELSE
-    WRITE(ILUOUT0,FMT=*)
-    !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_REAL_CASE','Pb in MACC/CAMS file')
-    STOP
-  END IF
-END IF
-!
-!*       5.2   reading of the input chemical data + dusts + salts if needed
-!
-IF(LEN_TRIM(YCHEMFILE)>0)THEN
-  ! read again Nam_aero_conf
-  CALL POSNAM(IPRE_REAL1,'NAM_AERO_CONF',GFOUND,ILUOUT0)
-  IF (GFOUND) READ(IPRE_REAL1,NAM_AERO_CONF)
-  IF(YCHEMFILETYPE=='GRIBEX') &
-  CALL READ_ALL_DATA_GRIB_CASE('CHEM',TZPRE_REAL1FILE,YCHEMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
-  IF (YCHEMFILETYPE=='MOZART') &
-  CALL READ_CHEM_DATA_MOZART_CASE(TZPRE_REAL1FILE,YCHEMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
-  IF (YCHEMFILETYPE=='CAMSEU') &
-  CALL READ_CHEM_DATA_CAMS_CASE(TZPRE_REAL1FILE,YCHEMFILE,TPGDFILE,ZHORI,NVERB, &
-                                LDUMMY_REAL,LUSECHEM)
-END IF
-
-!UPG*PT
-!
-CALL IO_File_close(TZPRE_REAL1FILE)
-!
-CALL SECOND_MNH(ZTIME2)
-ZREAD = ZTIME2 - ZTIME1 - ZHORI
-!-------------------------------------------------------------------------------
-!
-CALL IO_File_add2list(TINIFILE,CINIFILE,'MNH','WRITE',KLFITYPE=1,KLFIVERB=NVERB)
-CALL IO_File_open(TINIFILE)
-!
-ZTIME1=ZTIME2
-!
-!*       6.    CONFIGURATION VARIABLES
-!              -----------------------
-!
-!*       6.1   imposed values of some other configuration variables
-!
-CDCONV='NONE'
-CSCONV='NONE'
-CRAD='NONE'
-CCONF='START'
-NRIMX=6
-NRIMY=6
-LHORELAX_UVWTH=.TRUE.
-LHORELAX_RV=LUSERV
-LHORELAX_RC=LUSERC
-LHORELAX_RR=LUSERR
-LHORELAX_RI=LUSERI
-LHORELAX_RS=LUSERS
-LHORELAX_RG=LUSERG
-LHORELAX_RH=LUSERH
-LHORELAX_SV(:)=.FALSE.
-LHORELAX_SVC2R2 = (NSV_C2R2 > 0)
-LHORELAX_SVC1R3 = (NSV_C1R3 > 0)
-LHORELAX_SVLIMA = (NSV_LIMA > 0)
-LHORELAX_SVELEC = (NSV_ELEC > 0)
-LHORELAX_SVCHEM = (NSV_CHEM > 0)
-LHORELAX_SVCHIC = (NSV_CHIC > 0)
-LHORELAX_SVDST  = (NSV_DST > 0)
-LHORELAX_SVSLT  = (NSV_SLT > 0)
-LHORELAX_SVAER  = (NSV_AER > 0)
-LHORELAX_SVPP   = (NSV_PP > 0)
-#ifdef MNH_FOREFIRE
-LHORELAX_SVFF   = (NSV_FF > 0)
-#endif
-LHORELAX_SVCS   = (NSV_CS > 0)
-
-LHORELAX_SVLG   = .FALSE.
-LHORELAX_SV(1:NSV)=.TRUE.
-IF ( CTURB /= 'NONE') THEN
-  LHORELAX_TKE = .TRUE.
-ELSE
-  LHORELAX_TKE = .FALSE.
-END IF
-!
-!
-CSTORAGE_TYPE='TT'
-!-------------------------------------------------------------------------------
-!
-!*       8.    COMPUTATION OF GEOMETRIC VARIABLES
-!              ----------------------------------
-!
-ZTIME1 = ZTIME2
-!
-ALLOCATE(XMAP(SIZE(XXHAT),SIZE(XYHAT)))
-ALLOCATE(XLAT(SIZE(XXHAT),SIZE(XYHAT)))
-ALLOCATE(XLON(SIZE(XXHAT),SIZE(XYHAT)))
-ALLOCATE(XDXHAT(SIZE(XXHAT)))
-ALLOCATE(XDYHAT(SIZE(XYHAT)))
-ALLOCATE(XZZ(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)))
-ALLOCATE(ZJ(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)))
-!
-IF (LCARTESIAN) THEN
-  CALL SM_GRIDCART(XXHAT,XYHAT,XZHAT,XZS,LSLEVE,XLEN1,XLEN2,XZSMT,XDXHAT,XDYHAT,XZZ,ZJ)
-  XMAP=1.
-ELSE
-  CALL SM_GRIDPROJ(XXHAT,XYHAT,XZHAT,XZS,                    &
-                   LSLEVE,XLEN1,XLEN2,XZSMT,XLATORI,XLONORI, &
-                   XMAP,XLAT,XLON,XDXHAT,XDYHAT,XZZ,ZJ       )
-END IF
-!
-CALL MPPDB_CHECK2D(XZS,"prep_real_case8:XZS",PRECISION)
-CALL MPPDB_CHECK2D(XMAP,"prep_real_case8:XMAP",PRECISION)
-CALL MPPDB_CHECK2D(XLAT,"prep_real_case8:XLAT",PRECISION)
-CALL MPPDB_CHECK2D(XLON,"prep_real_case8:XLON",PRECISION)
-CALL MPPDB_CHECK3D(XZZ,"prep_real_case8:XZZ",PRECISION)
-CALL MPPDB_CHECK3D(ZJ,"prep_real_case8:ZJ",PRECISION)
-!
-ALLOCATE(XDXX(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)))
-ALLOCATE(XDYY(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)))
-ALLOCATE(XDZX(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)))
-ALLOCATE(XDZY(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)))
-ALLOCATE(XDZZ(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)))
-!
-!20131024 add update halo
-!=> corrects on PDXX calculation in metrics and XDXX !!
-CALL ADD3DFIELD_ll( TZFIELDS_ll, XZZ, 'PREP_REAL_CASE::XZZ' )
-CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-CALL CLEANLIST_ll(TZFIELDS_ll)
-!
-CALL METRICS(XMAP,XDXHAT,XDYHAT,XZZ,XDXX,XDYY,XDZX,XDZY,XDZZ)
-!
-CALL MPPDB_CHECK3D(XDXX,"prc8-beforeupdate_metrics:PDXX",PRECISION)
-CALL MPPDB_CHECK3D(XDYY,"prc8-beforeupdate_metrics:PDYY",PRECISION)
-CALL MPPDB_CHECK3D(XDZX,"prc8-beforeupdate_metrics:PDZX",PRECISION)
-CALL MPPDB_CHECK3D(XDZY,"prc8-beforeupdate_metrics:PDZY",PRECISION)
-!
-CALL UPDATE_METRICS(CLBCX,CLBCY,XDXX,XDYY,XDZX,XDZY,XDZZ)
-!
-!20131112 add update_halo for XDYY and XDZY!!
-CALL ADD3DFIELD_ll( TZFIELDS_ll, XDXX, 'PREP_REAL_CASE::XDXX' )
-CALL ADD3DFIELD_ll( TZFIELDS_ll, XDZX, 'PREP_REAL_CASE::XDZX' )
-CALL ADD3DFIELD_ll( TZFIELDS_ll, XDYY, 'PREP_REAL_CASE::XDYY' )
-CALL ADD3DFIELD_ll( TZFIELDS_ll, XDZY, 'PREP_REAL_CASE::XDZY' )
-CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-CALL CLEANLIST_ll(TZFIELDS_ll)
-
-!CALL EXTRAPOL('W',XDXX,XDZX)
-!CALL EXTRAPOL('S',XDYY,XDZY)
-
-CALL SECOND_MNH(ZTIME2)
-
-ZMISC = ZMISC + ZTIME2 - ZTIME1
-!-------------------------------------------------------------------------------
-!
-!*       9.    PREPARATION OF THE VERTICAL SHIFT AND INTERPOLATION
-!              ---------------------------------------------------
-!
-ZTIME1 = ZTIME2
-!
-IF (YATMFILETYPE=='GRIBEX') THEN
-  CALL VER_PREP_GRIBEX_CASE('ATM ',ZDG)
-ELSE IF (YATMFILETYPE=='MESONH') THEN
-  CALL VER_PREP_MESONH_CASE(ZDG)
-END IF
-!
-IF (LEN_TRIM(YCHEMFILE)>0 .AND. YCHEMFILETYPE=='GRIBEX') THEN
-  CALL VER_PREP_GRIBEX_CASE('CHEM',ZDG)
-END IF
-!UPG*PT
-!IF ((LEN_TRIM(YCHEMFILE)>0 .AND. YCHEMFILETYPE=='NETCDF') .OR. &
-!   (LEN_TRIM(YCAMSFILE)>0 .AND. YCAMSFILETYPE=='NETCDF')) THEN
-!  CALL VER_PREP_NETCDF_CASE(ZDG)
-!END IF
-IF (LEN_TRIM(YCHEMFILE)>0 .AND. ((YCHEMFILETYPE=='MOZART').OR. &
-                                 (YCHEMFILETYPE=='CAMSEU'))) THEN
-  CALL VER_PREP_NETCDF_CASE(ZDG,XSV_LS)
-
-  DEALLOCATE(XSV_LS)
-END IF
-!
-IF (LEN_TRIM(YLIMAFILE)>0 .AND. YLIMAFILETYPE=='NETCDF') THEN
-  CALL VER_PREP_NETCDF_CASE(ZDG,XSV_LS_LIMA)
-  DEALLOCATE(XSV_LS_LIMA)
-END IF
-!UPG*PT
-!
-CALL SECOND_MNH(ZTIME2)
-ZPREP = ZTIME2 - ZTIME1 - ZDG
-ZDIAG = ZDIAG + ZDG
-!-------------------------------------------------------------------------------
-!
-!*      10.    VERTICAL INTERPOLATION OF ALL THERMODYNAMICAL VARIABLES
-!              -------------------------------------------------------
-!
-ZTIME1 = ZTIME2
-!
-ALLOCATE(XPSURF(SIZE(XXHAT),SIZE(XYHAT)))
-!
-CALL EXTRAPOL('E',XEXNTOP2D)
-IF (YATMFILETYPE=='GRIBEX') THEN
-  CALL VER_THERMO(TINIFILE,LSHIFT,XTHV_MX,XR_MX,XZS_LS,XZSMT_LS,XZMASS_MX,XZFLUX_MX,XPMHP_MX,ZJ, &
-                  XDXX,XDYY,XEXNTOP2D,XPSURF,ZDG                               )
-ELSE IF (YATMFILETYPE=='MESONH') THEN
-  CALL VER_THERMO(TINIFILE,LSHIFT,XTHV_MX,XR_MX,XZS_LS,XZSMT_LS,XZMASS_MX,XZFLUX_MX,XPMHP_MX,ZJ, &
-                  XDXX,XDYY,XEXNTOP2D,XPSURF,ZDG,                              &
-                  XLSTH_MX,XLSRV_MX                                            )
-END IF
-!
-CALL SECOND_MNH(ZTIME2)
-ZTHERMO = ZTIME2 - ZTIME1 - ZDG
-ZDIAG = ZDIAG + ZDG
-!-------------------------------------------------------------------------------
-!
-!*      12.    VERTICAL INTERPOLATION OF DYNAMICAL VARIABLES
-!              ---------------------------------------------
-!
-ZTIME1 = ZTIME2
-IF (YATMFILETYPE=='GRIBEX') THEN
-  CALL VER_DYN(LSHIFT,XU_MX,XV_MX,XW_MX,XRHOD_MX,XZFLUX_MX,XZMASS_MX,XZS_LS,     &
-               XDXX,XDYY,XDZZ,XDZX,XDZY,ZJ,YATMFILETYPE                          )
-ELSE IF (YATMFILETYPE=='MESONH') THEN
-  CALL VER_DYN(LSHIFT,XU_MX,XV_MX,XW_MX,XRHOD_MX,XZFLUX_MX,XZMASS_MX,XZS_LS,     &
-               XDXX,XDYY,XDZZ,XDZX,XDZY,ZJ,YATMFILETYPE,                         &
-               XLSU_MX,XLSV_MX,XLSW_MX                                           )
-END IF
-!
-!
-IF (ALLOCATED(XTHV_MX)) DEALLOCATE(XTHV_MX)
-IF (ALLOCATED(XR_MX)) DEALLOCATE(XR_MX)
-IF (ALLOCATED(XPMHP_MX)) DEALLOCATE(XPMHP_MX)
-IF (ALLOCATED(XU_MX)) DEALLOCATE(XU_MX)
-IF (ALLOCATED(XV_MX)) DEALLOCATE(XV_MX)
-IF (ALLOCATED(XW_MX)) DEALLOCATE(XW_MX)
-IF (ALLOCATED(XLSTH_MX)) DEALLOCATE(XLSTH_MX)
-IF (ALLOCATED(XLSRV_MX)) DEALLOCATE(XLSRV_MX)
-IF (ALLOCATED(XLSU_MX)) DEALLOCATE(XLSU_MX)
-IF (ALLOCATED(XLSV_MX)) DEALLOCATE(XLSV_MX)
-IF (ALLOCATED(XLSW_MX)) DEALLOCATE(XLSW_MX)
-IF (ALLOCATED(XZFLUX_MX)) DEALLOCATE(XZFLUX_MX)
-IF (ALLOCATED(XZMASS_MX)) DEALLOCATE(XZMASS_MX)
-IF (ALLOCATED(XRHOD_MX)) DEALLOCATE(XRHOD_MX)
-IF (ALLOCATED(XEXNTOP2D)) DEALLOCATE(XEXNTOP2D)
-IF (ALLOCATED(XZS_LS)) DEALLOCATE(XZS_LS)
-IF (ALLOCATED(XZSMT_LS)) DEALLOCATE(XZSMT_LS)
-!
-!-------------------------------------------------------------------------------
-!
-!*      13.    ANELASTIC CORRECTION
-!              --------------------
-!
-CALL PRESSURE_IN_PREP(XDXX,XDYY,XDZX,XDZY,XDZZ)
-!
-CALL SECOND_MNH(ZTIME2)
-ZDYN = ZTIME2 - ZTIME1
-!
-!-------------------------------------------------------------------------------
-!
-!*      14.    INITIALIZATION OF THE REMAINING PROGNOSTIC VARIABLES (COPIES)
-!              -------------------------------------------------------------
-!
-ZTIME1 = ZTIME2
-!
-IF(LEN_TRIM(YCHEMFILE)>0 .AND. YCHEMFILETYPE=='MESONH')THEN
-  CALL INI_PROG_VAR(XTKE_MX,XSV_MX,YCHEMFILE)
-  LHORELAX_SVCHEM = (NSV_CHEM > 0)
-  LHORELAX_SVCHIC = (NSV_CHIC > 0)
-  LHORELAX_SVDST  = (NSV_DST > 0)
-  LHORELAX_SVSLT  = (NSV_SLT > 0)
-  LHORELAX_SVAER  = (NSV_AER > 0)
-ELSE
-!
-!UPG*PT
-!IF (LEN_TRIM(YCAMSFILE)>0 .AND. YCAMSFILETYPE=='NETCDF') THEN
-IF (LEN_TRIM(YLIMAFILE)>0 .AND. YLIMAFILETYPE=='NETCDF') THEN
-!UPG*PT
-  CALL LIMA_MIXRAT_TO_NCONC(XPABST, XTHT, XRT(:,:,:,1), XSV_MX)
-END IF
-!
-  CALL INI_PROG_VAR(XTKE_MX,XSV_MX)
-END IF
-!
-
-! Initialization of ORILAM variables
-IF (LORILAM) THEN
-  IF (.NOT.(ASSOCIATED(XN3D)))      ALLOCATE(XN3D(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPMODE))
-  IF (.NOT.(ASSOCIATED(XRG3D)))     ALLOCATE(XRG3D(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPMODE))
-  IF (.NOT.(ASSOCIATED(XSIG3D)))    ALLOCATE(XSIG3D(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPMODE))
-  IF (.NOT.(ASSOCIATED(XRHOP3D)))   ALLOCATE(XRHOP3D(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPMODE))
-  IF (.NOT.(ASSOCIATED(XM3D)))      ALLOCATE(XM3D(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPMODE*3))
-  IF (.NOT.(ASSOCIATED(XCTOTA3D))) &
-    ALLOCATE(XCTOTA3D(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),NSP+NCARB+NSOA,JPMODE))
-
-  CALL CH_AER_EQM_INIT_n(XSVT(:,:,:,NSV_CHEMBEG:NSV_CHEMEND),&
-                         XSVT(:,:,:,NSV_AERBEG:NSV_AEREND),&
-                         XM3D,XRHOP3D,XSIG3D,&
-                         XRG3D,XN3D, XRHODREF, XCTOTA3D)
-END IF
-!
-! Initialization LIMA variables by ORILAM
-IF (CCLOUD == 'LIMA' .AND. ((LORILAM).OR.(LDUST).OR.(LSALT))) THEN
-
-    ! Init LIMA by ORILAM
-    CALL AER2LIMA(XSVT, XRHODREF, XRT(:,:,:,1), XPABST, XTHT,XZZ)
-
-    ! Init LB LIMA by ORILAM
-    ALLOCATE(ZLBXRHO(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)))
-    ALLOCATE(ZLBYRHO(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3)))
-    ALLOCATE(ZLBXPABST(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)))
-    ALLOCATE(ZLBYPABST(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3)))
-    ALLOCATE(ZLBXZZ(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)))
-    ALLOCATE(ZLBYZZ(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3)))
-
-    ILBX=SIZE(XLBXSVM,1)/2-JPHEXT
-    ILBY=SIZE(XLBYSVM,2)/2-JPHEXT
-
-    CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-
-    ZLBXRHO(1:ILBX+1,:,:)        = XRHODREF(IIB-1:IIB-1+ILBX,:,:)
-    ZLBXRHO(ILBX+2:2*ILBX+2,:,:) = XRHODREF(IIE+1-ILBX:IIE+1,:,:)
-    ZLBYRHO(:,1:ILBY+1,:)        = XRHODREF(:,IJB-1:IJB-1+ILBY,:)
-    ZLBYRHO(:,ILBY+2:2*ILBY+2,:) = XRHODREF(:,IJE+1-ILBY:IJE+1,:)
-    ZLBXPABST(1:ILBX+1,:,:)        = XPABST(IIB-1:IIB-1+ILBX,:,:)
-    ZLBXPABST(ILBX+2:2*ILBX+2,:,:) = XPABST(IIE+1-ILBX:IIE+1,:,:)
-    ZLBYPABST(:,1:ILBY+1,:)        = XPABST(:,IJB-1:IJB-1+ILBY,:)
-    ZLBYPABST(:,ILBY+2:2*ILBY+2,:) = XPABST(:,IJE+1-ILBY:IJE+1,:)
-    ZLBXZZ(1:ILBX+1,:,:)        = XZZ(IIB-1:IIB-1+ILBX,:,:)
-    ZLBXZZ(ILBX+2:2*ILBX+2,:,:) = XZZ(IIE+1-ILBX:IIE+1,:,:)
-    ZLBYZZ(:,1:ILBY+1,:)        = XZZ(:,IJB-1:IJB-1+ILBY,:)
-    ZLBYZZ(:,ILBY+2:2*ILBY+2,:) = XZZ(:,IJE+1-ILBY:IJE+1,:)
-
-    CALL AER2LIMA(XLBXSVM, ZLBXRHO, XLBXRM(:,:,:,1), ZLBXPABST, XLBXTHM, ZLBXZZ)
-    CALL AER2LIMA(XLBYSVM, ZLBYRHO, XLBYRM(:,:,:,1), ZLBYPABST, XLBYTHM, ZLBYZZ)
-
-    DEALLOCATE(ZLBXRHO)
-    DEALLOCATE(ZLBYRHO)
-    DEALLOCATE(ZLBXPABST)
-    DEALLOCATE(ZLBYPABST)
-    DEALLOCATE(ZLBXZZ)
-    DEALLOCATE(ZLBYZZ)
-
-END IF
-!
-IF (ALLOCATED(XSV_MX)) DEALLOCATE(XSV_MX)
-IF (ALLOCATED(XTKE_MX)) DEALLOCATE(XTKE_MX)
-!
-CALL BOUNDARIES (                                                 &
-          0.,CLBCX,CLBCY,NRR,NSV,1,                               &
-          XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,   &
-          XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
-          XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,   &
-          XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,   &
-          XRHODJ,XRHODREF,                                        &
-          XUT, XVT, XWT, XTHT, XTKET, XRT, XSVT, XSRCT            )
-!
-CALL SECOND_MNH(ZTIME2)
-ZMISC = ZMISC + ZTIME2 - ZTIME1
-!
-!-------------------------------------------------------------------------------
-!
-!*      15.    Error on temperature during interpolations
-!              ------------------------------------------
-!
-ZTIME1 = ZTIME2
-!
-IF (YATMFILETYPE=='GRIBEX' .AND. NVERB>1) THEN
-  CALL ERROR_ON_TEMPERATURE(XT_LS,XPMASS_LS,XPABST,XPS_LS,XPSURF)
-END IF
-!
-IF (YATMFILETYPE=='GRIBEX') THEN
-  DEALLOCATE(XT_LS)
-  DEALLOCATE(XPMASS_LS)
-  DEALLOCATE(XPS_LS)
-END IF
-!
-IF (ALLOCATED(XPSURF)) DEALLOCATE(XPSURF)
-!
-CALL SECOND_MNH(ZTIME2)
-ZDIAG =  ZDIAG + ZTIME2 - ZTIME1
-!-------------------------------------------------------------------------------
-!
-!*       16.    INITIALIZE LEVELSET FOR IBM
-!              ---------------------------
-!
-IF (LIBM_LSF) THEN
-  !
-  IF (.NOT.LCARTESIAN) THEN
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','IBM can only be used with cartesian coordinates')
-  ENDIF
-  !
-  CALL GET_DIM_EXT_ll('B',NIU,NJU)
-  NKU=NKMAX+2*JPVEXT
-  !
-  ALLOCATE(XIBM_LS(NIU,NJU,NKU,4))
-  !
-  CALL IBM_INIT_LS(XIBM_LS)
-  !
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*      17.    WRITING OF THE MESO-NH FM-FILE
-!              ------------------------------
-!
-ZTIME1 = ZTIME2
-!
-CSTORAGE_TYPE='TT'
-IF (YATMFILETYPE=='GRIBEX') THEN
-  CSURF = "EXTE"
-  DO JRR=1,NRR
-    IF (JRR==1) THEN
-      LUSERV=.TRUE.
-      IDX_RVT = JRR
-    END IF
-    IF (JRR==2) THEN
-      LUSERC=.TRUE.
-      IDX_RCT = JRR
-    END IF
-    IF (JRR==3) THEN
-      LUSERR=.TRUE.
-      IDX_RRT = JRR
-    END IF
-    IF (JRR==4) THEN
-      LUSERI=.TRUE.
-      IDX_RIT = JRR
-    END IF
-    IF (JRR==5) THEN
-      LUSERS=.TRUE.
-      IDX_RST = JRR
-    END IF
-    IF (JRR==6) THEN
-      LUSERG=.TRUE.
-      IDX_RGT = JRR
-    END IF
-    IF (JRR==7) THEN
-      LUSERH=.TRUE.
-      IDX_RHT = JRR
-    END IF
-  END DO
-END IF
-!
-CALL WRITE_DESFM_n(1,TINIFILE)
-CALL IO_Header_write(TINIFILE,HDAD_NAME=YDAD_NAME)
-CALL WRITE_LFIFM_n(TINIFILE,YDAD_NAME)
-! 
-CALL SECOND_MNH(ZTIME2)
-ZWRITE = ZTIME2 - ZTIME1
-!
-!-------------------------------------------------------------------------------
-!
-!*      18.    OROGRAPHIC and DUMMY PHYSIOGRAPHIC FIELDS
-!              -----------------------------------------
-!
-!* reading in the PGD file
-!
-CALL MNHREAD_ZS_DUMMY_n(TPGDFILE)
-!
-!* writing in the output file
-!
-TOUTDATAFILE => TINIFILE
-CALL MNHWRITE_ZS_DUMMY_n(TINIFILE)
-!
-CALL DEALLOCATE_MODEL1(3)
-!
-IF (YATMFILETYPE=='MESONH'.AND. YATMFILE/=YPGDFILE) THEN
-  CALL IO_File_find_byname(TRIM(YATMFILE),TZATMFILE,IRESP)
-  CALL IO_File_close(TZATMFILE)
-END IF
-!-------------------------------------------------------------------------------
-!
-!*      19.    INTERPOLATION OF SURFACE VARIABLES
-!              ----------------------------------
-!
-IF (.NOT. LCOUPLING ) THEN
-  ZTIME1 = ZTIME2
-!
-  IF (CSURF=="EXTE") THEN
-    IF (YATMFILETYPE/='MESONH') THEN
-      CALL SURFEX_ALLOC_LIST(1)
-      YSURF_CUR => YSURF_LIST(1)
-      CALL READ_ALL_NAMELISTS(YSURF_CUR,'MESONH','PRE',.FALSE.)
-    ENDIF
-    CALL GOTO_SURFEX(1)
-    TFILE_SURFEX => TINIFILE
-    CALL PREP_SURF_MNH(YSURFFILE,YSURFFILETYPE)
-    NULLIFY(TFILE_SURFEX)
-  ENDIF
-!
-  CALL SECOND_MNH(ZTIME2)
-  ZSURF = ZSURF + ZTIME2 - ZTIME1
-ENDIF
-!
-!-------------------------------------------------------------------------------
-!
-!*      20.    EPILOGUE
-!              --------
-!
-WRITE(ILUOUT0,*)
-WRITE(ILUOUT0,*)
-WRITE(ILUOUT0,*)
-WRITE(ILUOUT0,*) '**************************************************'
-WRITE(ILUOUT0,*) '* PREP_REAL_CASE: PREP_REAL_CASE ends correctly. *'
-WRITE(ILUOUT0,*) '**************************************************'
-WRITE(ILUOUT0,*)
-!
-!-------------------------------------------------------------------------------
-!
-CALL SECOND_MNH (ZEND)
-!
-ZTOT        = ZEND - ZSTART          ! for computing time analysis
-!
-ZALL = ZMISC + ZREAD + ZHORI + ZPREP + ZTHERMO + ZSURF + ZDYN + ZDIAG + ZWRITE 
-!
-WRITE(ILUOUT0,*)
-WRITE(ILUOUT0,*) ' ------------------------------------------------------------ '
-WRITE(ILUOUT0,*) '|                                                            |'
-WRITE(ILUOUT0,*) '|          COMPUTING TIME ANALYSIS in PREP_REAL_CASE         |'
-WRITE(ILUOUT0,*) '|                                                            |'
-WRITE(ILUOUT0,*) '|------------------------------------------------------------|'
-WRITE(ILUOUT0,*) '|                     |                   |                  |'
-WRITE(ILUOUT0,*) '|    ROUTINE NAME     |     CPU-TIME      |   PERCENTAGE %   |'
-WRITE(ILUOUT0,*) '|                     |                   |                  |'
-WRITE(ILUOUT0,*) '|---------------------|-------------------|------------------|'
-WRITE(ILUOUT0,*) '|                     |                   |                  |'
-WRITE(UNIT=ILUOUT0,FMT=2) ZREAD, 100.*ZREAD/ZTOT
-WRITE(UNIT=ILUOUT0,FMT=9) ZHORI, 100.*ZHORI/ZTOT
-WRITE(UNIT=ILUOUT0,FMT=3) ZPREP, 100.*ZPREP/ZTOT
-WRITE(UNIT=ILUOUT0,FMT=4) ZTHERMO, 100.*ZTHERMO/ZTOT
-WRITE(UNIT=ILUOUT0,FMT=6) ZDYN, 100.*ZDYN/ZTOT
-WRITE(UNIT=ILUOUT0,FMT=7) ZDIAG, 100.*ZDIAG/ZTOT
-WRITE(UNIT=ILUOUT0,FMT=8) ZWRITE, 100.*ZWRITE/ZTOT
-WRITE(UNIT=ILUOUT0,FMT=1) ZMISC, 100.*ZMISC/ZTOT
-WRITE(UNIT=ILUOUT0,FMT=5) ZSURF, 100.*ZSURF/ZTOT
-!
-WRITE(UNIT=ILUOUT0,FMT=10) ZTOT   , 100.*ZALL/ZTOT
-WRITE(ILUOUT0,*) ' ------------------------------------------------------------ '
-!
-!                  FORMATS
-!                  -------
-!
-2  FORMAT(' |   READING OF DATA   |     ',F8.3,'      |     ',F8.3,'     |')
-9  FORMAT(' | HOR. INTERPOLATIONS |     ',F8.3,'      |     ',F8.3,'     |')
-3  FORMAT(' |      VER_PREP       |     ',F8.3,'      |     ',F8.3,'     |')
-4  FORMAT(' |     VER_THERMO      |     ',F8.3,'      |     ',F8.3,'     |')
-6  FORMAT(' |      VER_DYN        |     ',F8.3,'      |     ',F8.3,'     |')
-7  FORMAT(' |    DIAGNOSTICS      |     ',F8.3,'      |     ',F8.3,'     |')
-8  FORMAT(' |       WRITE         |     ',F8.3,'      |     ',F8.3,'     |')
-1  FORMAT(' |   MISCELLANEOUS     |     ',F8.3,'      |     ',F8.3,'     |')
-5  FORMAT(' |      SURFACE        |     ',F8.3,'      |     ',F8.3,'     |')
-10 FORMAT(' |   PREP_REAL_CASE    |     ',F8.3,'      |     ',F8.3,'     |')
-!
-!-------------------------------------------------------------------------------
-!
-IF (LEN_TRIM(YDAD_NAME)>0) THEN
-  WRITE(ILUOUT0,*) ' '
-  WRITE(ILUOUT0,*) ' ------------------------------------------------------------'
-  WRITE(ILUOUT0,*) '|  Nesting allowed                                           |'
-  WRITE(ILUOUT0,*) '|  DAD_NAME="',YDAD_NAME,'"                   |'
-  WRITE(ILUOUT0,*) ' ------------------------------------------------------------'
-  WRITE(ILUOUT0,*) ' '
-ELSE
-  WRITE(ILUOUT0,*) ' '
-  WRITE(ILUOUT0,*) ' ------------------------------------------------------------'
-  WRITE(ILUOUT0,*) '|  Nesting not allowed with a larger-scale model.            |'
-  WRITE(ILUOUT0,*) '|  The new file can only be used as model number 1           |'
-  WRITE(ILUOUT0,*) ' ------------------------------------------------------------'
-  WRITE(ILUOUT0,*) ' '
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-CALL IO_File_close(TINIFILE)
-CALL IO_File_close(TPGDFILE)
-!
-CALL FINALIZE_MNH()
-!
-!-------------------------------------------------------------------------------
-!
-CONTAINS 
-
-SUBROUTINE INIT_NMLVAR
-CPRESOPT=CPRESOPT_n
-LRES=LRES_n
-XRES=XRES_n
-NITR=NITR_n
-LUSECHAQ=LUSECHAQ_n
-LUSECHIC=LUSECHIC_n
-LUSECHEM=LUSECHEM_n
-END SUBROUTINE INIT_NMLVAR
-
-SUBROUTINE UPDATE_MODD_FROM_NMLVAR
-CPRESOPT_n=CPRESOPT
-LRES_n=LRES
-XRES_n=XRES
-NITR_n=NITR
-LUSECHAQ_n=LUSECHAQ
-LUSECHIC_n=LUSECHIC
-LUSECHEM_n=LUSECHEM
-END SUBROUTINE UPDATE_MODD_FROM_NMLVAR
-
-END PROGRAM PREP_REAL_CASE
diff --git a/src/mesonh/ext/resolved_cloud.f90 b/src/mesonh/ext/resolved_cloud.f90
deleted file mode 100644
index de801f6af..000000000
--- a/src/mesonh/ext/resolved_cloud.f90
+++ /dev/null
@@ -1,1136 +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_RESOLVED_CLOUD
-!     ##########################
-INTERFACE
-      SUBROUTINE RESOLVED_CLOUD ( HCLOUD, HACTCCN, HSCONV, HMF_CLOUD,                  &
-                                  KRR, KSPLITR, KSPLITG, KMI, KTCOUNT,                 &
-                                  HLBCX, HLBCY, TPFILE, HRAD, HTURBDIM,                &
-                                  OSUBG_COND, OSIGMAS, HSUBG_AUCV,                     &
-                                  PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,              &
-                                  PPABST, PTHT, PRT, PSIGS, PSIGQSAT, PMFCONV,         &
-                                  PTHM, PRCM, PPABSTT,                                 &
-                                  PW_ACT,PDTHRAD, PTHS, PRS, PSVT, PSVS, PSRCS, PCLDFR,&
-                                  PICEFR,                                              &
-                                  PCIT, OSEDIC, OACTIT, OSEDC, OSEDI,                  &
-                                  ORAIN, OWARM, OHHONI, OCONVHG,                       &
-                                  PCF_MF,PRC_MF, PRI_MF,                               &
-                                  PINPRC,PINPRC3D,PINPRR,PINPRR3D, PEVAP3D,            &
-                                  PINPRS,PINPRS3D,PINPRG,PINPRG3D,PINPRH,PINPRH3D,     &
-                                  PSOLORG,PMI,                                         &
-                                  PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,         &
-                                  PINDEP, PSUPSAT,  PNACT, PNPRO,PSSPRO, PRAINFR,      &
-                                  PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF,              &
-                                  PSEA,PTOWN          )   
-!
-USE MODD_IO, ONLY: TFILEDATA
-!
-CHARACTER(LEN=4),         INTENT(IN)   :: HCLOUD   ! kind of cloud
-CHARACTER(LEN=4),         INTENT(IN)   :: HACTCCN  ! kind of CCN activation scheme
-                                                   ! paramerization
-CHARACTER(LEN=4),         INTENT(IN)   :: HSCONV   ! Shallow convection scheme
-CHARACTER(LEN=4),         INTENT(IN)   :: HMF_CLOUD! Type of statistical cloud
-INTEGER,                  INTENT(IN)   :: KRR      ! Number of moist variables
-INTEGER,                  INTENT(IN)   :: KSPLITR  ! Number of small time step
-                                       ! integrations for  rain sedimendation
-INTEGER,                  INTENT(IN)   :: KSPLITG  ! Number of small time step
-                                       ! integrations for  ice  sedimendation
-INTEGER,                  INTENT(IN)   :: KMI      ! Model index
-INTEGER,                  INTENT(IN)   :: KTCOUNT  ! Temporal loop counter
-CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY   ! X and Y-direc. LBC type
-TYPE(TFILEDATA),          INTENT(IN)   :: TPFILE   ! Output file
-CHARACTER(len=4),         INTENT(IN)   :: HRAD     ! Radiation scheme name
-CHARACTER(len=4),         INTENT(IN)   :: HTURBDIM ! Dimensionality of the
-                                                   ! turbulence scheme
-LOGICAL,                  INTENT(IN)   :: OSUBG_COND ! Switch for Subgrid Cond.
-LOGICAL,                  INTENT(IN)   :: OSIGMAS  ! Switch for Sigma_s:
-                                        ! use values computed in CONDENSATION
-                                        ! or that from turbulence scheme
-CHARACTER(LEN=4),         INTENT(IN)   :: HSUBG_AUCV
-                                        ! Kind of Subgrid autoconversion method
-REAL,                     INTENT(IN)   :: PTSTEP ! Time step :XTSTEP in namelist
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PZZ     ! Height (z)
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRHODJ  !Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRHODREF! Reference dry air density
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PEXNREF ! Reference Exner function
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHT    ! Theta at time t
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PRT     ! Moist variables at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PSIGS   ! Sigma_s at time t
-REAL,                     INTENT(IN)   :: PSIGQSAT! coeff applied to qsat variance contribution
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PMFCONV ! convective mass flux
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHM    ! Theta at time t-Dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABSTT  ! Pressure time t+Dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRCM    ! Cloud water m.r. at time t-Dt
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_ACT ! W for CCN activation
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD! THeta RADiative Tendancy
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS   ! Theta source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS    ! Moist  variable sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVT   ! Scalar variable at time t
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS   ! Scalar variable sources
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSRCS ! Second-order flux
-                                                 ! s'rc'/2Sigma_s2 at time t+1
-                                                 ! multiplied by Lambda_3
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCLDFR! Cloud fraction
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PICEFR! Cloud fraction
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCIT  ! Pristine ice number
-                                                 ! concentration at time t
-LOGICAL,                  INTENT(IN)    :: OSEDIC! Switch to activate the
-                                                 ! cloud droplet sedimentation
-                                                 ! for ICE3            
-LOGICAL,                  INTENT(IN)    :: OACTIT ! Switch to activate the
-                                                 ! activation through temp.
-                                                 ! evolution in C2R2 and KHKO
-LOGICAL,                  INTENT(IN)    :: OSEDC ! Switch to activate the
-                                                 ! cloud droplet sedimentation
-                                                 ! for C2R2 or KHKO
-LOGICAL,                  INTENT(IN)    :: OSEDI ! Switch to activate the
-                                                 ! cloud crystal sedimentation
-LOGICAL,                  INTENT(IN)    :: ORAIN ! Switch to activate the
-                                                 ! raindrop formation
-LOGICAL,                  INTENT(IN)    :: OWARM ! Control of the rain formation
-                                                 !  by slow warm microphysical
-                                                 !         processes
-LOGICAL,                  INTENT(IN)    :: OHHONI! enable haze freezing
-LOGICAL,                  INTENT(IN)    :: OCONVHG! Switch for conversion from
-                                                  ! hail to graupel
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCF_MF! Convective Mass Flux Cloud fraction 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRC_MF! Convective Mass Flux liquid mixing ratio
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRI_MF! Convective Mass Flux solid mixing ratio
-!
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRC   ! Cloud instant precip
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRR   ! Rain instant precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRR3D ! sed flux of precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PEVAP3D  ! evap profile
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRS   ! Snow instant precip
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRG   ! Graupel instant precip
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRH   ! Hail instant precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRC3D ! sed flux of precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRS3D ! sed flux of precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRG3D ! sed flux of precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRH3D ! sed flux of precip
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSOLORG  ![%] solubility fraction of soa
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PMI
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDC ! Cloud sedimentation speed
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDR ! Rain sedimentation speed
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDS ! Snow sedimentation speed
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDG ! Graupel sedimentation speed
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDH ! Hail sedimentation speed
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINDEP   ! Cloud instant deposition
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSUPSAT  !sursat
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNACT    !concentrtaion d'aérosols activés au temps t
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNPRO    !concentrtaion d'aérosols activés au temps t
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSSPRO   !sursat
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRAINFR  ! Rain fraction
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PHLC_HRC !HighLow liquid content
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PHLC_HCF !HighLow liquid cloud fraction
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PHLI_HRI !HighLow ice content
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PHLI_HCF !HighLow ice clous fraction
-REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA      ! Land Sea mask
-REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN      ! Town fraction
-!
-END SUBROUTINE RESOLVED_CLOUD
-END INTERFACE
-END MODULE MODI_RESOLVED_CLOUD
-!
-!     ##########################################################################
-      SUBROUTINE RESOLVED_CLOUD ( HCLOUD, HACTCCN, HSCONV, HMF_CLOUD,                  &
-                                  KRR, KSPLITR, KSPLITG, KMI, KTCOUNT,                 &
-                                  HLBCX, HLBCY, TPFILE, HRAD, HTURBDIM,                &
-                                  OSUBG_COND, OSIGMAS, HSUBG_AUCV,                     &
-                                  PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF,              &
-                                  PPABST, PTHT, PRT, PSIGS, PSIGQSAT, PMFCONV,         &
-                                  PTHM, PRCM, PPABSTT,                                 &
-                                  PW_ACT,PDTHRAD, PTHS, PRS, PSVT, PSVS, PSRCS, PCLDFR,&
-                                  PICEFR,                                              &
-                                  PCIT, OSEDIC, OACTIT, OSEDC, OSEDI,                  &
-                                  ORAIN, OWARM, OHHONI, OCONVHG,                       &
-                                  PCF_MF,PRC_MF, PRI_MF,                               &
-                                  PINPRC,PINPRC3D,PINPRR,PINPRR3D, PEVAP3D,            &
-                                  PINPRS,PINPRS3D,PINPRG,PINPRG3D,PINPRH,PINPRH3D,     &
-                                  PSOLORG,PMI,                                         &
-                                  PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,         &
-                                  PINDEP, PSUPSAT,  PNACT, PNPRO,PSSPRO, PRAINFR,      &
-                                  PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF,              &
-                                  PSEA,PTOWN          )   
-!     ##########################################################################
-!
-!!****  * -  compute the  resolved clouds and precipitation
-!!
-!!    PURPOSE
-!!    -------
-!!      The purpose of this routine is to compute the  microphysical sources
-!!    related to the resolved clouds and precipitation
-!!
-!!
-!!**  METHOD
-!!    ------
-!!      The main actions of this routine is to call the routines computing the
-!!    microphysical sources. Before that:
-!!        - it computes the real absolute pressure,
-!!        - negative values of the current guess of all mixing ratio are removed.
-!!          This is done by a global filling algorithm based on a multiplicative
-!!          method (Rood, 1987), in order to conserved the total mass in the
-!!          simulation domain.
-!!        - Sources are transformed in physical tendencies, by removing the
-!!          multiplicative term Rhod*J.
-!!        - External points values are filled owing to the use of cyclic
-!!          l.b.c., in order to performe computations on the full domain.
-!!      After calling to microphysical routines, the physical tendencies are
-!!    switched back to prognostic variables.
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!      Subroutine SLOW_TERMS: Computes the explicit microphysical sources
-!!      Subroutine FAST_TERMS: Performs the saturation adjustment for l
-!!      Subroutine RAIN_ICE  : Computes the explicit microphysical sources for i
-!!      Subroutine ICE_ADJUST: Performs the saturation adjustment for i+l
-!!      MIN_ll,SUM3D_ll : distributed functions equivalent to MIN and SUM
-!!
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_PARAMETERS : contains declarations of parameter variables
-!!         JPHEXT       : Horizontal external points number
-!!         JPVEXT       : Vertical external points number
-!!      Module MODD_CST
-!!          CST%XP00               ! Reference pressure
-!!          CST%XRD                ! Gaz  constant for dry air
-!!          CST%XCPD               ! Cpd (dry air)
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!      Book1 and book2 of documentation ( routine RESOLVED_CLOUD )
-!!
-!!    AUTHOR
-!!    ------
-!!      E. Richard       * Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    21/12/94
-!!      Modifications: June 8, 1995 ( J.Stein )
-!!                                   Cleaning to improve efficienty and clarity
-!!                                  in agreement with the MESO-NH coding norm
-!!                     March 1, 1996 ( J.Stein )
-!!                                   store the cloud fraction
-!!                     March 18, 1996 ( J.Stein )
-!!                                   check that ZMASSPOS /= 0
-!!                     Oct.  12, 1996 ( J.Stein )
-!!                                   remove the negative values correction
-!!                                   for the KES2 case
-!!      Modifications: Dec 14, 1995 (J.-P. Pinty)
-!!                                   Add the mixed-phase option
-!!      Modifications: Jul 01, 1996 (J.-P. Pinty)
-!!                                   Change arg. list in routine FAST_TERMS
-!!      Modifications: Jan 27, 1997 (J.-P. Pinty)
-!!                                   add W and SV in arg. list
-!!      Modifications: March 23, 98 (E.Richard)
-!!                                   correction of negative value based on
-!!                                  rv+rc+ri and thetal or thetail conservation
-!!      Modifications: April 08, 98 (J.-P. Lafore and V. Ducrocq )
-!!                                  modify the  correction of negative values
-!!      Modifications: June 08, 00  (J.-P. Pinty and J.-M. Cohard)
-!!                                  add the C2R2 scheme
-!!      Modifications: April 08, 01  (J.-P. Pinty)
-!!                                  add the C3R5 scheme
-!!      Modifications: July  21, 01  (J.-P. Pinty)
-!!                                  Add OHHONI and PW_ACT (for haze freezing)
-!!      Modifications: Sept 21, 01  (J.-P. Pinty)
-!!                                  Add XCONC_CCN limitation
-!!      Modifications: Nov  21, 02  (J.-P. Pinty)
-!!                                  Add ICE4 and C3R5 options
-!!                     June, 2005   (V. Masson)
-!!                                  Technical change in interface for scalar arguments
-!!      Modifications : March, 2006 (O.Geoffroy)
-!!                                  Add KHKO scheme
-!!      Modifications : March 2013  (O.Thouron)
-!!                                  Add prognostic supersaturation
-!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
-!!                                      aircraft, ballon and profiler
-!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
-!!      M.Mazoyer : 04/2016 : Temperature radiative tendency used for  
-!!                            activation by cooling (OACTIT)
-!!      Modification    01/2016  (JP Pinty) Add LIMA
-!!                     10/2016 M.Mazoyer New KHKO output fields
-!!                    10/2016 (C.Lac) Add droplet deposition
-!!      S.Riette  : 11/2016 : ice_adjust before and after rain_ice
-!!                            ICE3/ICE4 modified, old version under LRED=F   
-!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 01/02/2019: ZRSMIN is now allocatable (instead of size of XRTMIN which was sometimes not allocated)
-!  C. Lac         02/2019: add rain fraction as an output field
-!  P. Wautelet    02/2020: use the new data structures and subroutines for budgets
-!  B. Vie         03/2020: LIMA negativity checks after turbulence, advection and microphysics budgets
-!  B. Vie      03/03/2020: use DTHRAD instead of dT/dt in Smax diagnostic computation
-!  P. Wautelet 11/06/2020: bugfix: correct ZSVS array indices
-!  P. Wautelet 11/06/2020: bugfix: add "Non local correction for precipitating species" for ICE4
-!  P. Wautelet + Benoit Vié 06/2020: improve removal of negative scalar variables + adapt the corresponding budgets
-!  P. Wautelet 23/06/2020: remove ZSVS and ZSVT to improve code readability
-!  P. Wautelet 30/06/2020: move removal of negative scalar variables to Sources_neg_correct
-!  P. Wautelet 30/06/2020: remove non-local corrections
-!  B. Vie         06/2020: add prognostic supersaturation for LIMA
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-USE MODD_BUDGET,         ONLY: TBUDGETS, TBUCONF
-USE MODD_CH_AEROSOL,     ONLY: LORILAM
-USE MODD_DUST,           ONLY: LDUST
-USE MODD_CST,            ONLY: CST
-USE MODD_DIMPHYEX,       ONLY: DIMPHYEX_t
-USE MODD_DUST ,          ONLY: LDUST
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_NEB,            ONLY: NEB
-USE MODD_NSV,            ONLY: NSV, NSV_C1R3END, NSV_C2R2BEG, NSV_C2R2END,                       &
-                               NSV_LIMA_BEG, NSV_LIMA_END, NSV_LIMA_CCN_FREE, NSV_LIMA_IFN_FREE, &
-                               NSV_LIMA_NC, NSV_LIMA_NI, NSV_LIMA_NR, NSV_AEREND,NSV_DSTEND,NSV_SLTEND
-USE MODD_PARAM_C2R2,     ONLY: LSUPSAT
-USE MODD_PARAMETERS,     ONLY: JPHEXT, JPVEXT
-USE MODD_PARAM_ICE,      ONLY: CSEDIM, LADJ_BEFORE, LADJ_AFTER, CFRAC_ICE_ADJUST, LRED, &
-                               PARAM_ICE
-USE MODD_PARAM_LIMA,     ONLY: LADJ, LCOLD, LPTSPLIT, LSPRO, NMOD_CCN, NMOD_IFN, NMOD_IMM
-USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN, RAIN_ICE_DESCR
-USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM
-USE MODD_SALT,           ONLY: LSALT
-USE MODD_TURB_n,         ONLY: TURBN, CSUBG_AUCV_RI, CCONDENS, CLAMBDA3, CSUBG_MF_PDF
-!
-USE MODE_ll
-USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
-use mode_sources_neg_correct, only: Sources_neg_correct
-!
-USE MODI_C2R2_ADJUST
-USE MODI_FAST_TERMS
-USE MODI_GET_HALO
-USE MODI_ICE_ADJUST
-USE MODI_KHKO_NOTADJUST
-USE MODI_LIMA
-USE MODI_LIMA_ADJUST
-USE MODI_LIMA_ADJUST_SPLIT
-USE MODI_LIMA_COLD
-USE MODI_LIMA_MIXED
-USE MODI_LIMA_NOTADJUST
-USE MODI_LIMA_WARM
-USE MODI_RAIN_C2R2_KHKO
-USE MODI_RAIN_ICE
-USE MODI_RAIN_ICE_OLD
-USE MODI_SHUMAN
-USE MODI_SLOW_TERMS
-USE MODI_AER2LIMA
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-!
-!
-CHARACTER(LEN=4),         INTENT(IN)   :: HCLOUD   ! kind of cloud paramerization
-CHARACTER(LEN=4),         INTENT(IN)   :: HACTCCN  ! kind of CCN activation scheme
-CHARACTER(LEN=4),         INTENT(IN)   :: HSCONV   ! Shallow convection scheme
-CHARACTER(LEN=4),         INTENT(IN)   :: HMF_CLOUD! Type of statistical cloud
-INTEGER,                  INTENT(IN)   :: KRR      ! Number of moist variables
-INTEGER,                  INTENT(IN)   :: KSPLITR  ! Number of small time step
-                                       ! integrations for  rain sedimendation
-INTEGER,                  INTENT(IN)   :: KSPLITG  ! Number of small time step
-                                       ! integrations for  ice  sedimendation
-INTEGER,                  INTENT(IN)   :: KMI      ! Model index
-INTEGER,                  INTENT(IN)   :: KTCOUNT  ! Temporal loop counter
-CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY   ! X and Y-direc. LBC type
-TYPE(TFILEDATA),          INTENT(IN)   :: TPFILE   ! Output file
-CHARACTER(len=4),         INTENT(IN)   :: HRAD     ! Radiation scheme name
-CHARACTER(len=4),         INTENT(IN)   :: HTURBDIM ! Dimensionality of the
-                                                   ! turbulence scheme
-LOGICAL,                  INTENT(IN)   :: OSUBG_COND ! Switch for Subgrid Cond.
-LOGICAL,                  INTENT(IN)   :: OSIGMAS  ! Switch for Sigma_s:
-                                        ! use values computed in CONDENSATION
-                                        ! or that from turbulence scheme
-CHARACTER(LEN=4),         INTENT(IN)   :: HSUBG_AUCV
-                                        ! Kind of Subgrid autoconversion method
-REAL,                     INTENT(IN)   :: PTSTEP ! Time step :XTSTEP in namelist
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PZZ     ! Height (z)
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRHODJ  !Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRHODREF! Reference dry air density
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PEXNREF ! Reference Exner function
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABST  ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHT    ! Theta at time t
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT):: PRT     ! Moist variables at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PSIGS   ! Sigma_s at time t
-REAL,                     INTENT(IN)   :: PSIGQSAT! coeff applied to qsat variance contribution
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PMFCONV ! convective mass flux
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTHM    ! Theta at time t-Dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PPABSTT ! Pressure time t+Dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PRCM    ! Cloud water m.r. at time t-Dt
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_ACT ! W for CCN activation
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDTHRAD! THeta RADiative Tendancy
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS   ! Theta source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS    ! Moist  variable sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVT   ! Scalar variable at time t
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS   ! Scalar variable sources
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSRCS ! Second-order flux
-                                                 ! s'rc'/2Sigma_s2 at time t+1
-                                                 ! multiplied by Lambda_3
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCLDFR! Cloud fraction
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PICEFR! Cloud fraction
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCIT  ! Pristine ice number
-                                                 ! concentration at time t
-LOGICAL,                  INTENT(IN)    :: OSEDIC! Switch to activate the
-                                                 ! cloud droplet sedimentation
-                                                 ! for ICE3            
-LOGICAL,                  INTENT(IN)    :: OACTIT ! Switch to activate the
-                                                 ! activation through temp.
-                                                 ! evolution in C2R2 and KHKO
-LOGICAL,                  INTENT(IN)    :: OSEDC ! Switch to activate the
-                                                 ! cloud droplet sedimentation
-LOGICAL,                  INTENT(IN)    :: OSEDI ! Switch to activate the
-                                                 ! cloud crystal sedimentation
-LOGICAL,                  INTENT(IN)    :: ORAIN ! Switch to activate the
-                                                 ! raindrop formation
-LOGICAL,                  INTENT(IN)    :: OWARM ! Control of the rain formation
-                                                 !  by slow warm microphysical
-                                                 !         processes
-LOGICAL,                  INTENT(IN)    :: OHHONI! enable haze freezing
-LOGICAL,                  INTENT(IN)    :: OCONVHG! Switch for conversion from
-                                                  ! hail to graupel
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCF_MF! Convective Mass Flux Cloud fraction 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRC_MF! Convective Mass Flux liquid mixing ratio
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRI_MF! Convective Mass Flux solid mixing ratio
-!
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRC   ! Cloud instant precip
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRR   ! Rain instant precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRR3D ! sed flux of precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PEVAP3D  ! evap profile
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRS   ! Snow instant precip
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRG   ! Graupel instant precip
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPRH   ! Hail instant precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRC3D ! sed flux of precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRS3D ! sed flux of precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRG3D ! sed flux of precip
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PINPRH3D ! sed flux of precip
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSOLORG  ![%] solubility fraction of soa
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PMI
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDC ! Cloud sedimentation speed
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDR ! Rain sedimentation speed
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDS ! Snow sedimentation speed
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDG ! Graupel sedimentation speed
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDH ! Hail sedimentation speed
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINDEP   ! Cloud instant deposition
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSUPSAT  !sursat
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNACT    !concentrtaion d'aérosols activés au temps t
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PNPRO    !concentrtaion d'aérosols activés au temps t
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PSSPRO   !sursat
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRAINFR  ! Rain fraction
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PHLC_HRC !HighLow liquid content
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PHLC_HCF !HighLow liquid cloud fraction
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PHLI_HRI !HighLow ice content
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PHLI_HCF !HighLow ice clous fraction
-REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA      ! Land Sea mask
-REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN      ! Town fraction
-!
-!
-!*       0.2   Declarations of local variables :
-!
-INTEGER :: JRR,JSV       ! Loop index for the moist and scalar variables
-INTEGER :: IIB           !  Define the physical domain
-INTEGER :: IIE           !
-INTEGER :: IJB           !
-INTEGER :: IJE           !
-INTEGER :: IKB           !
-INTEGER :: IKE           !
-INTEGER :: IKU
-INTEGER :: IINFO_ll      ! return code of parallel routine
-INTEGER :: JK,JI,JL
-!
-!
-!
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZDZZ
-real, dimension(:,:,:), allocatable :: ZEXN
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZZZ
-                                    ! model layer height
-! REAL  :: ZMASSTOT                   ! total mass  for one water category
-!                                     ! including the negative values
-! REAL  :: ZMASSPOS                   ! total mass  for one water category
-!                                     ! after removing the negative values
-! REAL  :: ZRATIO                     ! ZMASSTOT / ZMASSCOR
-!
-INTEGER                               :: ISVBEG ! first scalar index for microphysics
-INTEGER                               :: ISVEND ! last  scalar index for microphysics
-REAL, DIMENSION(:),       ALLOCATABLE :: ZRSMIN ! Minimum value for tendencies
-!UPG*PT
-REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSVT   ! scalar variable for microphysics only
-!UPG*PT
-
-LOGICAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: LLMICRO ! mask to limit computation
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3), KRR) :: ZFPR
-!
-INTEGER                               :: JMOD, JMOD_IFN
-LOGICAL                               :: GWEST,GEAST,GNORTH,GSOUTH
-LOGICAL                               :: LMFCONV ! =SIZE(PMFCONV)!=0
-! BVIE work array waiting for PINPRI
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)):: ZINPRI
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZICEFR
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZPRCFR
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZTM
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2)) :: ZSIGQSAT2D
-TYPE(DIMPHYEX_t) :: YLDIMPHYEX
-REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZDUM
-ZSIGQSAT2D(:,:) = PSIGQSAT
-!
-!------------------------------------------------------------------------------
-!
-!*       1.     PRELIMINARY COMPUTATIONS
-!               ------------------------
-!
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-IKB=1+JPVEXT
-IKE=SIZE(PZZ,3) - JPVEXT
-IKU=SIZE(PZZ,3)
-!
-CALL FILL_DIMPHYEX(YLDIMPHYEX, SIZE(PZZ,1), SIZE(PZZ,2), SIZE(PZZ,3))
-!
-GWEST  = LWEST_ll()
-GEAST  = LEAST_ll()
-GSOUTH = LSOUTH_ll()
-GNORTH = LNORTH_ll()
-!
-LMFCONV=(SIZE(PMFCONV)/=0)
-!
-IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') THEN
-  ISVBEG = NSV_C2R2BEG
-  ISVEND = NSV_C2R2END
-ELSE IF (HCLOUD == 'C3R5') THEN
-  ISVBEG = NSV_C2R2BEG
-  ISVEND = NSV_C1R3END
-ELSE IF (HCLOUD == 'LIMA') THEN
-  ISVBEG = NSV_LIMA_BEG
-  IF (.NOT. LDUST .AND. .NOT. LSALT .AND. .NOT. LORILAM) THEN
-    ISVEND = NSV_LIMA_END
-  ELSE
-    IF (LORILAM) THEN
-      ISVEND = NSV_AEREND
-    END IF
-    IF (LDUST) THEN
-      ISVEND = NSV_DSTEND
-    END IF
-    IF (LSALT) THEN
-      ISVEND = NSV_SLTEND
-    END IF
-  END IF
-ELSE
-  ISVBEG = 0
-  ISVEND = 0
-END IF
-!
-!
-!
-!*        1.    From ORILAM to LIMA: 
-!
-IF (HCLOUD == 'LIMA' .AND. ((LORILAM).OR.(LDUST).OR.(LSALT))) THEN
-! ORILAM : tendance s --> variable instant t
-ALLOCATE(ZSVT(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3),NSV))
-  DO JSV = 1, NSV
-    ZSVT(:,:,:,JSV) = PSVS(:,:,:,JSV) * PTSTEP / PRHODJ(:,:,:)
-  END DO
-
-CALL AER2LIMA(ZSVT(IIB:IIE,IJB:IJE,IKB:IKE,:),&
-              PRHODREF(IIB:IIE,IJB:IJE,IKB:IKE), &
-              PRT(IIB:IIE,IJB:IJE,IKB:IKE,1),&
-              PPABST(IIB:IIE,IJB:IJE,IKB:IKE),&
-              PTHT(IIB:IIE,IJB:IJE,IKB:IKE), &
-              PZZ(IIB:IIE,IJB:IJE,IKB:IKE))
-
-! LIMA : variable instant t --> tendance s
-  PSVS(:,:,:,NSV_LIMA_CCN_FREE)   = ZSVT(:,:,:,NSV_LIMA_CCN_FREE) * &
-                                    PRHODJ(:,:,:) / PTSTEP
-  PSVS(:,:,:,NSV_LIMA_CCN_FREE+1) = ZSVT(:,:,:,NSV_LIMA_CCN_FREE+1) * &
-                                    PRHODJ(:,:,:) / PTSTEP
-  PSVS(:,:,:,NSV_LIMA_CCN_FREE+2) = ZSVT(:,:,:,NSV_LIMA_CCN_FREE+2) * &
-                                    PRHODJ(:,:,:) / PTSTEP
-
-  PSVS(:,:,:,NSV_LIMA_IFN_FREE)   = ZSVT(:,:,:,NSV_LIMA_IFN_FREE) * &
-                                    PRHODJ(:,:,:) / PTSTEP
-  PSVS(:,:,:,NSV_LIMA_IFN_FREE+1) = ZSVT(:,:,:,NSV_LIMA_IFN_FREE+1) * &
-                                    PRHODJ(:,:,:) / PTSTEP
-
-DEALLOCATE(ZSVT)
-END IF
-
-!UPG*PT
-!
-IF (HCLOUD(1:3)=='ICE' .AND. LRED) THEN
-  ALLOCATE(ZRSMIN(SIZE(XRTMIN)))
-  ZRSMIN(:) = XRTMIN(:) / PTSTEP
-END IF
-!
-!*       2.     TRANSFORMATION INTO PHYSICAL TENDENCIES
-!               ---------------------------------------
-!
-PTHS(:,:,:) = PTHS(:,:,:) / PRHODJ(:,:,:)
-DO JRR = 1,KRR
-  PRS(:,:,:,JRR)  = PRS(:,:,:,JRR) / PRHODJ(:,:,:)
-END DO
-!
-IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') THEN
-  DO JSV = ISVBEG, ISVEND
-    PSVS(:,:,:,JSV) = PSVS(:,:,:,JSV) / PRHODJ(:,:,:)
-  ENDDO
-ENDIF
-!
-!  complete the lateral boundaries to avoid possible problems
-!
-DO JI=1,JPHEXT
- PTHS(JI,:,:) = PTHS(IIB,:,:)
- PTHS(IIE+JI,:,:) = PTHS(IIE,:,:)
- PTHS(:,JI,:) = PTHS(:,IJB,:)
- PTHS(:,IJE+JI,:) = PTHS(:,IJE,:)
-!
- PRS(JI,:,:,:) = PRS(IIB,:,:,:)
- PRS(IIE+JI,:,:,:) = PRS(IIE,:,:,:)
- PRS(:,JI,:,:) = PRS(:,IJB,:,:)
- PRS(:,IJE+JI,:,:) = PRS(:,IJE,:,:)
-END DO
-!
-!  complete the physical boundaries to avoid some computations
-!
-IF(GWEST  .AND. HLBCX(1) /= 'CYCL')  PRT(:IIB-1,:,:,2:) = 0.0
-IF(GEAST  .AND. HLBCX(2) /= 'CYCL')  PRT(IIE+1:,:,:,2:) = 0.0
-IF(GSOUTH .AND. HLBCY(1) /= 'CYCL')  PRT(:,:IJB-1,:,2:) = 0.0
-IF(GNORTH .AND. HLBCY(2) /= 'CYCL')  PRT(:,IJE+1:,:,2:) = 0.0
-!
-IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') THEN
-DO JI=1,JPHEXT
-  PSVS(JI,     :,      :, ISVBEG:ISVEND) = PSVS(IIB, :,   :, ISVBEG:ISVEND)
-  PSVS(IIE+JI, :,      :, ISVBEG:ISVEND) = PSVS(IIE, :,   :, ISVBEG:ISVEND)
-  PSVS(:,      JI,     :, ISVBEG:ISVEND) = PSVS(:,   IJB, :, ISVBEG:ISVEND)
-  PSVS(:,      IJE+JI, :, ISVBEG:ISVEND) = PSVS(:,   IJE, :, ISVBEG:ISVEND)
-END DO
- !
-!  complete the physical boundaries to avoid some computations
-!
-  IF(GWEST  .AND. HLBCX(1) /= 'CYCL') PSVT(:IIB-1, :,      :, ISVBEG:ISVEND) = 0.0
-  IF(GEAST  .AND. HLBCX(2) /= 'CYCL') PSVT(IIE+1:, :,      :, ISVBEG:ISVEND) = 0.0
-  IF(GSOUTH .AND. HLBCY(1) /= 'CYCL') PSVT(:,      :IJB-1, :, ISVBEG:ISVEND) = 0.0
-  IF(GNORTH .AND. HLBCY(2) /= 'CYCL') PSVT(:,      IJE+1:, :, ISVBEG:ISVEND) = 0.0
-ENDIF
-!
-!  complete the vertical boundaries
-!
-PTHS(:,:,IKB-1) = PTHS(:,:,IKB)
-PTHS(:,:,IKE+1) = PTHS(:,:,IKE)
-!
-PRS(:,:,IKB-1,:) = PRS(:,:,IKB,:)
-PRS(:,:,IKE+1,:) = PRS(:,:,IKE,:)
-!
-PRT(:,:,IKB-1,:) = PRT(:,:,IKB,:)
-PRT(:,:,IKE+1,:) = PRT(:,:,IKE,:)
-!
-IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' .OR. HCLOUD == 'KHKO' &
-                                           .OR. HCLOUD == 'LIMA') THEN
-  PSVS(:,:,IKB-1,ISVBEG:ISVEND) = PSVS(:,:,IKB,ISVBEG:ISVEND)
-  PSVS(:,:,IKE+1,ISVBEG:ISVEND) = PSVS(:,:,IKE,ISVBEG:ISVEND)
-  PSVT(:,:,IKB-1,ISVBEG:ISVEND) = PSVT(:,:,IKB,ISVBEG:ISVEND)
-  PSVT(:,:,IKE+1,ISVBEG:ISVEND) = PSVT(:,:,IKE,ISVBEG:ISVEND)
-ENDIF
-!
-!
-!*       3.     REMOVE NEGATIVE VALUES
-!               ----------------------
-!
-!*       3.1    Non local correction for precipitating species (Rood 87)
-!
-! IF (      HCLOUD == 'KESS'                       &
-!      .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' &
-!      .OR. HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' &
-!      .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'LIMA' ) THEN
-! !
-!   DO JRR = 3,KRR
-!     SELECT CASE (JRR)
-!       CASE(3,5,6,7) ! rain, snow, graupel and hail
-!
-!         IF ( MIN_ll( PRS(:,:,:,JRR), IINFO_ll) < 0.0 ) THEN
-! !
-! ! compute the total water mass computation
-! !
-!           ZMASSTOT = MAX( 0. , SUM3D_ll( PRS(:,:,:,JRR), IINFO_ll ) )
-! !
-! ! remove the negative values
-! !
-!           PRS(:,:,:,JRR) = MAX( 0., PRS(:,:,:,JRR) )
-! !
-! ! compute the new total mass
-! !
-!           ZMASSPOS = MAX(XMNH_TINY,SUM3D_ll( PRS(:,:,:,JRR), IINFO_ll ) )
-! !
-! ! correct again in such a way to conserve the total mass
-! !
-!           ZRATIO = ZMASSTOT / ZMASSPOS
-!           PRS(:,:,:,JRR) = PRS(:,:,:,JRR) * ZRATIO
-! !
-!         END IF
-!     END SELECT
-!   END DO
-! END IF
-!
-!*       3.2    Adjustement for liquid and solid cloud
-!
-! Remove non-physical negative values (unnecessary in a perfect world) + corresponding budgets
-call Sources_neg_correct( hcloud, 'NEGA', krr, ptstep, ppabst, ptht, prt, pths, prs, psvs, prhodj )
-!
-!*       3.4    Limitations of Na and Nc to the CCN max number concentration
-!
-! Commented by O.Thouron 03/2013
-!IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'C3R5' .OR. HCLOUD == 'KHKO') &
-!     .AND.(XCONC_CCN > 0)) THEN
-!  IF ((HACTCCN /= 'ABRK')) THEN
-!  ZSVT(:,:,:,1) = MIN( ZSVT(:,:,:,1),XCONC_CCN )
-!  ZSVT(:,:,:,2) = MIN( ZSVT(:,:,:,2),XCONC_CCN )
-!  ZSVS(:,:,:,1) = MIN( ZSVS(:,:,:,1),XCONC_CCN )
-!  ZSVS(:,:,:,2) = MIN( ZSVS(:,:,:,2),XCONC_CCN )
-!  END IF
-!END IF
-!
-!
-!-------------------------------------------------------------------------------
-!
-SELECT CASE ( HCLOUD )
-  CASE ('REVE')
-!
-!*       4.     REVERSIBLE MICROPHYSICAL SCHEME
-!               -------------------------------
-!
-    CALL FAST_TERMS ( KRR, KMI, HRAD, HTURBDIM,                                &
-                      HSCONV, HMF_CLOUD, OSUBG_COND, PTSTEP,                   &
-                      PRHODJ, PSIGS, PPABST,                                   &
-                      PCF_MF,PRC_MF,                                           &
-                      PRVT=PRT(:,:,:,1), PRCT=PRT(:,:,:,2),                    &
-                      PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),                    &
-                      PTHS=PTHS, PSRCS=PSRCS, PCLDFR=PCLDFR                    )
-!
-  CASE ('KESS')
-!
-!*       5.     KESSLER MICROPHYSICAL SCHEME
-!               ----------------------------
-!
-!
-!*       5.1    Compute the explicit microphysical sources
-!
-    CALL SLOW_TERMS ( KSPLITR, PTSTEP, KMI, HSUBG_AUCV,                       &
-                      PZZ, PRHODJ, PRHODREF, PCLDFR,                          &
-                      PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRT(:,:,:,3), PPABST, &
-                      PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),         &
-                      PINPRR, PINPRR3D, PEVAP3D                         )
-!
-!*       5.2    Perform the saturation adjustment
-!
-    CALL FAST_TERMS ( KRR, KMI, HRAD, HTURBDIM,                                &
-                      HSCONV, HMF_CLOUD, OSUBG_COND, PTSTEP,                   &
-                      PRHODJ, PSIGS, PPABST,                                   &
-                      PCF_MF,PRC_MF,                                           &
-                      PRVT=PRT(:,:,:,1), PRCT=PRT(:,:,:,2),                    &
-                      PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), PRRS=PRS(:,:,:,3), &
-                      PTHS=PTHS, PSRCS=PSRCS, PCLDFR=PCLDFR                    )
-!
-!
-  CASE ('C2R2','KHKO')
-!
-!*       7.     2-MOMENT WARM MICROPHYSICAL SCHEME C2R2 or KHKO
-!               ---------------------------------------
-!
-!
-!*       7.1    Compute the explicit microphysical sources
-!
-!
-    CALL RAIN_C2R2_KHKO ( HCLOUD, OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,     &
-                     TPFILE, PZZ, PRHODJ, PRHODREF, PEXNREF,                      &
-                     PPABST, PTHT, PRT(:,:,:,1), PRT(:,:,:,2),  PRT(:,:,:,3),     &
-                     PTHM, PRCM, PPABSTT,                                          &
-                     PW_ACT,PDTHRAD,PTHS, PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3), &
-                     PSVT(:,:,:,NSV_C2R2BEG),   PSVT(:,:,:,NSV_C2R2BEG+1),        &
-                     PSVT(:,:,:,NSV_C2R2BEG+2), PSVS(:,:,:,NSV_C2R2BEG),          &
-                     PSVS(:,:,:,NSV_C2R2BEG+1), PSVS(:,:,:,NSV_C2R2BEG+2),        &
-                     PINPRC, PINPRR, PINPRR3D, PEVAP3D ,                          &
-                     PSVT(:,:,:,:), PSOLORG, PMI, HACTCCN,                        &
-                     PINDEP, PSUPSAT, PNACT                                       )
-!
-!
-!*       7.2    Perform the saturation adjustment
-!
-   IF (LSUPSAT) THEN
-    CALL KHKO_NOTADJUST (KRR, KTCOUNT,TPFILE, HRAD,                              &
-                         PTSTEP, PRHODJ, PPABSTT, PPABST, PRHODREF, PZZ,          &
-                         PTHT,PRT(:,:,:,1),PRT(:,:,:,2),PRT(:,:,:,3),            &
-                         PTHS,PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3),            &
-                         PSVS(:,:,:,NSV_C2R2BEG+1), PSVS(:,:,:,NSV_C2R2BEG),     &
-                         PSVS(:,:,:,NSV_C2R2BEG+3), PCLDFR, PSRCS, PNPRO, PSSPRO )
-!
-   ELSE
-    CALL C2R2_ADJUST ( KRR,TPFILE, HRAD,                                &
-                       HTURBDIM, OSUBG_COND, PTSTEP,                    &
-                       PRHODJ, PSIGS, PPABST,                           &
-                       PTHS=PTHS, PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), &
-                       PCNUCS=PSVS(:,:,:,NSV_C2R2BEG),                  &
-                       PCCS=PSVS(:,:,:,NSV_C2R2BEG+1),                  &
-                       PSRCS=PSRCS, PCLDFR=PCLDFR, PRRS=PRS(:,:,:,3)    )
-!
-   END IF
-!
-  CASE ('ICE3')
-!
-!*       9.     MIXED-PHASE MICROPHYSICAL SCHEME (WITH 3 ICE SPECIES)
-!               -----------------------------------------------------
-!
-    allocate( zexn( size( pzz, 1 ), size( pzz, 2 ), size( pzz, 3 ) ) )
-    ZEXN(:,:,:)= (PPABST(:,:,:)/CST%XP00)**(CST%XRD/CST%XCPD)
-!
-!*       9.1    Compute the explicit microphysical sources
-!
-!
-    DO JK=IKB,IKE
-      ZDZZ(:,:,JK)=PZZ(:,:,JK+1)-PZZ(:,:,JK)    
-    ENDDO
-    ZZZ = MZF( PZZ )
-    IF(LRED .AND. LADJ_BEFORE) THEN
-      CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM, NEB, TURBN, TBUCONF, KRR, &
-                      CFRAC_ICE_ADJUST,                                        &
-                      'ADJU', .FALSE., .FALSE.,                                &
-                      PTSTEP, ZSIGQSAT2D,                                      &
-                      PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV,PMFCONV, PPABST, ZZZ,  &
-                      ZEXN, PCF_MF, PRC_MF, PRI_MF,                            &
-                      ZDUM, ZDUM, ZDUM, ZDUM, ZDUM,                            &
-                      PRV=PRS(:,:,:,1)*PTSTEP, PRC=PRS(:,:,:,2)*PTSTEP,        &
-                      PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),                    &
-                      PTH=PTHS*PTSTEP, PTHS=PTHS,                              &
-                      OCOMPUTE_SRC=SIZE(PSRCS, 3)/=0, PSRCS=PSRCS, PCLDFR=PCLDFR,    &
-                      PRR=PRS(:,:,:,3)*PTSTEP,                                 &
-                      PRI=PRS(:,:,:,4)*PTSTEP, PRIS=PRS(:,:,:,4),              &
-                      PRS=PRS(:,:,:,5)*PTSTEP,                                 &
-                      PRG=PRS(:,:,:,6)*PTSTEP,                                 &
-                      TBUDGETS=TBUDGETS,KBUDGETS=SIZE(TBUDGETS),               &
-                      PHLC_HRC=PHLC_HRC, PHLC_HCF=PHLC_HCF,                    &
-                      PHLI_HRI=PHLI_HRI, PHLI_HCF=PHLI_HCF                     )
-    ENDIF
-    IF (LRED) THEN
-      LLMICRO(:,:,:) = .FALSE.
-      LLMICRO(IIB:IIE,IJB:IJE,IKB:IKE)=PRT(IIB:IIE,IJB:IJE,IKB:IKE,2)>XRTMIN(2) .OR. &
-                   PRT(IIB:IIE,IJB:IJE,IKB:IKE,3)>XRTMIN(3) .OR. &
-                   PRT(IIB:IIE,IJB:IJE,IKB:IKE,4)>XRTMIN(4) .OR. &
-                   PRT(IIB:IIE,IJB:IJE,IKB:IKE,5)>XRTMIN(5) .OR. &
-                   PRT(IIB:IIE,IJB:IJE,IKB:IKE,6)>XRTMIN(6)
-      LLMICRO(IIB:IIE,IJB:IJE,IKB:IKE)=LLMICRO(IIB:IIE,IJB:IJE,IKB:IKE) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,2)>ZRSMIN(2) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,3)>ZRSMIN(3) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,4)>ZRSMIN(4) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,5)>ZRSMIN(5) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,6)>ZRSMIN(6)
-      CALL RAIN_ICE (YLDIMPHYEX,CST, PARAM_ICE, RAIN_ICE_PARAM, RAIN_ICE_DESCR,TBUCONF,&
-                    COUNT(LLMICRO), COUNT(LLMICRO), &
-                    .FALSE., HSUBG_AUCV, CSUBG_AUCV_RI,&
-                    PTSTEP, KRR, LLMICRO, ZEXN,                          &
-                    ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,&
-                    PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF,              &
-                    PTHT, PRT(:,:,:,1), PRT(:,:,:,2),                    &
-                    PRT(:,:,:,3), PRT(:,:,:,4),                          &
-                    PRT(:,:,:,5), PRT(:,:,:,6),                          &
-                    PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),      &
-                    PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),            &
-                    PINPRC,PINPRR, PEVAP3D,                    &
-                    PINPRS, PINPRG, PINDEP, PRAINFR, PSIGS,              &
-                    TBUDGETS,SIZE(TBUDGETS),           &
-                    PSEA,PTOWN, PFPR=ZFPR                                )
-    ELSE 
-      CALL RAIN_ICE_OLD (YLDIMPHYEX, OSEDIC, CSEDIM, HSUBG_AUCV, OWARM, 1, IKU, 1,    &
-                    KSPLITR, PTSTEP, KRR,                                 &
-                    ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,&
-                    PTHT, PRT(:,:,:,1), PRT(:,:,:,2),                     &
-                    PRT(:,:,:,3), PRT(:,:,:,4),                           &
-                    PRT(:,:,:,5), PRT(:,:,:,6),                           &
-                    PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),       &
-                    PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),             &
-                    PINPRC,PINPRR, PINPRR3D, PEVAP3D,                     &
-                    PINPRS, PINPRG, PSIGS,PINDEP, PRAINFR,                &
-                    PSEA, PTOWN, PFPR=ZFPR)
-    END IF
-
-!
-!*       9.2    Perform the saturation adjustment over cloud ice and cloud water
-!
-!
-    IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN
-      CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM, NEB, TURBN, TBUCONF, KRR,       &
-                       CFRAC_ICE_ADJUST,                                       &
-                       'DEPI', .FALSE., .FALSE.,                               &
-                       PTSTEP, ZSIGQSAT2D,                                     &
-                       PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,PPABST, ZZZ, &
-                       ZEXN, PCF_MF, PRC_MF, PRI_MF,                           &
-                       ZDUM, ZDUM, ZDUM, ZDUM, ZDUM,                           &
-                       PRV=PRS(:,:,:,1)*PTSTEP, PRC=PRS(:,:,:,2)*PTSTEP,       &
-                       PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),                   &
-                       PTH=PTHS*PTSTEP, PTHS=PTHS,                             &
-                       OCOMPUTE_SRC=SIZE(PSRCS, 3)/=0, PSRCS=PSRCS, PCLDFR=PCLDFR, &
-                       PRR=PRS(:,:,:,3)*PTSTEP,                                &
-                       PRI=PRS(:,:,:,4)*PTSTEP, PRIS=PRS(:,:,:,4),             &
-                       PRS=PRS(:,:,:,5)*PTSTEP,                                &
-                       PRG=PRS(:,:,:,6)*PTSTEP,                                &
-                       TBUDGETS=TBUDGETS,KBUDGETS=SIZE(TBUDGETS),              &
-                       PHLC_HRC=PHLC_HRC, PHLC_HCF=PHLC_HCF,                   &
-                       PHLI_HRI=PHLI_HRI, PHLI_HCF=PHLI_HCF                    )
-    END IF
-
-    deallocate( zexn )
-!
-  CASE ('ICE4')
-!
-!*       10.    MIXED-PHASE MICROPHYSICAL SCHEME (WITH 4 ICE SPECIES)
-!               -----------------------------------------------------
-!
-    allocate( zexn( size( pzz, 1 ), size( pzz, 2 ), size( pzz, 3 ) ) )
-    ZEXN(:,:,:)= (PPABST(:,:,:)/CST%XP00)**(CST%XRD/CST%XCPD)
-!
-!*       10.1   Compute the explicit microphysical sources
-!
-!
-    DO JK=IKB,IKE
-      ZDZZ(:,:,JK)=PZZ(:,:,JK+1)-PZZ(:,:,JK)    
-    ENDDO
-    ZZZ = MZF( PZZ )
-    IF(LRED .AND. LADJ_BEFORE) THEN
-      CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM, NEB, TURBN, TBUCONF, KRR,        &
-                       CFRAC_ICE_ADJUST,                                       &
-                       'ADJU', .FALSE., .FALSE.,                               &
-                       PTSTEP, ZSIGQSAT2D,                                     &
-                       PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV,PMFCONV, PPABST, ZZZ, &
-                       ZEXN, PCF_MF, PRC_MF, PRI_MF,                           &
-                       ZDUM, ZDUM, ZDUM, ZDUM, ZDUM,                           &
-                       PRV=PRS(:,:,:,1)*PTSTEP, PRC=PRS(:,:,:,2)*PTSTEP,       &
-                       PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),                   &
-                       PTH=PTHS*PTSTEP, PTHS=PTHS,                             &
-                       OCOMPUTE_SRC=SIZE(PSRCS, 3)/=0, PSRCS=PSRCS, PCLDFR=PCLDFR, &
-                       PRR=PRS(:,:,:,3)*PTSTEP,                                &
-                       PRI=PRS(:,:,:,4)*PTSTEP, PRIS=PRS(:,:,:,4),             &
-                       PRS=PRS(:,:,:,5)*PTSTEP,                                &
-                       PRG=PRS(:,:,:,6)*PTSTEP,                                &
-                       TBUDGETS=TBUDGETS,KBUDGETS=SIZE(TBUDGETS),              &
-                       PRH=PRS(:,:,:,7)*PTSTEP,                                &
-                       PHLC_HRC=PHLC_HRC, PHLC_HCF=PHLC_HCF,                   &
-                       PHLI_HRI=PHLI_HRI, PHLI_HCF=PHLI_HCF                    )
-    ENDIF
-    IF  (LRED) THEN
-      LLMICRO(:,:,:) = .FALSE.
-      LLMICRO(IIB:IIE,IJB:IJE,IKB:IKE)=PRT(IIB:IIE,IJB:IJE,IKB:IKE,2)>XRTMIN(2) .OR. &
-                   PRT(IIB:IIE,IJB:IJE,IKB:IKE,3)>XRTMIN(3) .OR. &
-                   PRT(IIB:IIE,IJB:IJE,IKB:IKE,4)>XRTMIN(4) .OR. &
-                   PRT(IIB:IIE,IJB:IJE,IKB:IKE,5)>XRTMIN(5) .OR. &
-                   PRT(IIB:IIE,IJB:IJE,IKB:IKE,6)>XRTMIN(6) .OR. &
-                   PRT(IIB:IIE,IJB:IJE,IKB:IKE,7)>XRTMIN(7)
-      LLMICRO(IIB:IIE,IJB:IJE,IKB:IKE)=LLMICRO(IIB:IIE,IJB:IJE,IKB:IKE) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,2)>ZRSMIN(2) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,3)>ZRSMIN(3) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,4)>ZRSMIN(4) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,5)>ZRSMIN(5) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,6)>ZRSMIN(6) .OR. &
-                   PRS(IIB:IIE,IJB:IJE,IKB:IKE,7)>ZRSMIN(7)
-     CALL RAIN_ICE (YLDIMPHYEX,CST, PARAM_ICE, RAIN_ICE_PARAM, RAIN_ICE_DESCR,TBUCONF,&
-                    COUNT(LLMICRO), COUNT(LLMICRO), &
-                    .FALSE., HSUBG_AUCV, CSUBG_AUCV_RI,&
-                    PTSTEP, KRR, LLMICRO, ZEXN,             &
-                    ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,&
-                    PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF,&
-                    PTHT, PRT(:,:,:,1), PRT(:,:,:,2),                     &
-                    PRT(:,:,:,3), PRT(:,:,:,4),                           &
-                    PRT(:,:,:,5), PRT(:,:,:,6),                           &
-                    PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),       &
-                    PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),             &
-                    PINPRC, PINPRR, PEVAP3D,                    &
-                    PINPRS, PINPRG, PINDEP, PRAINFR, PSIGS,               &
-                    TBUDGETS,SIZE(TBUDGETS),                     &            
-                    PSEA, PTOWN,                                          &
-                    PRT(:,:,:,7), PRS(:,:,:,7), PINPRH, PFPR=ZFPR         )
-    ELSE
-      CALL RAIN_ICE_OLD (YLDIMPHYEX, OSEDIC, CSEDIM, HSUBG_AUCV, OWARM, 1, IKU, 1,    &
-                    KSPLITR, PTSTEP, KRR,                                 &
-                    ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,&
-                    PTHT, PRT(:,:,:,1), PRT(:,:,:,2),                     &
-                    PRT(:,:,:,3), PRT(:,:,:,4),                           &
-                    PRT(:,:,:,5), PRT(:,:,:,6),                           &
-                    PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),       &
-                    PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),             &
-                    PINPRC,PINPRR, PINPRR3D, PEVAP3D,                     &
-                    PINPRS, PINPRG, PSIGS,PINDEP, PRAINFR,                &
-                    PSEA, PTOWN,                                          &
-                    PRT(:,:,:,7),  PRS(:,:,:,7), PINPRH, PFPR=ZFPR)
-    END IF
-
-
-!
-!*       10.2   Perform the saturation adjustment over cloud ice and cloud water
-!
-    IF (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) ) THEN
-     CALL ICE_ADJUST (YLDIMPHYEX,CST, RAIN_ICE_PARAM, NEB, TURBN, TBUCONF, KRR,      &
-                     CFRAC_ICE_ADJUST,                                       &
-                     'DEPI', .FALSE., .FALSE.,                               &
-                     PTSTEP, ZSIGQSAT2D,                                     &
-                     PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,PPABST, ZZZ, &
-                     ZEXN, PCF_MF, PRC_MF, PRI_MF,                           &
-                     ZDUM, ZDUM, ZDUM, ZDUM, ZDUM,                           &
-                     PRV=PRS(:,:,:,1)*PTSTEP, PRC=PRS(:,:,:,2)*PTSTEP,       &
-                     PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2),                   &
-                     PTH=PTHS*PTSTEP, PTHS=PTHS,                             &
-                     OCOMPUTE_SRC=SIZE(PSRCS, 3)/=0, PSRCS=PSRCS, PCLDFR=PCLDFR, &
-                     PRR=PRS(:,:,:,3)*PTSTEP,                                &
-                     PRI=PRS(:,:,:,4)*PTSTEP, PRIS=PRS(:,:,:,4),             &
-                     PRS=PRS(:,:,:,5)*PTSTEP,                                &
-                     PRG=PRS(:,:,:,6)*PTSTEP,                                &
-                     TBUDGETS=TBUDGETS,KBUDGETS=SIZE(TBUDGETS),              &
-                     PRH=PRS(:,:,:,7)*PTSTEP,                                &
-                     PHLC_HRC=PHLC_HRC, PHLC_HCF=PHLC_HCF,                   &
-                     PHLI_HRI=PHLI_HRI, PHLI_HCF=PHLI_HCF                    )
-    END IF
-
-    deallocate( zexn )
-!           
-!
-!*       12.    2-MOMENT MIXED-PHASE MICROPHYSICAL SCHEME LIMA
-!               --------------------------------------------------------------
-!
-!
-!*       12.1   Compute the explicit microphysical sources
-!
-  CASE ('LIMA')
-     !
-    DO JK=IKB,IKE
-      ZDZZ(:,:,JK)=PZZ(:,:,JK+1)-PZZ(:,:,JK)    
-    ENDDO
-    ZZZ = MZF( PZZ )
-     IF (LPTSPLIT) THEN
-        CALL LIMA (1, IKU, 1,                                              &
-                   PTSTEP, TPFILE,                                         &
-                   PRHODREF, PEXNREF, ZDZZ,                                &
-                   PRHODJ, PPABST,                                         &
-                   NMOD_CCN, NMOD_IFN, NMOD_IMM,                           &
-                   PDTHRAD, PTHT, PRT,                                     &
-                   PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), PW_ACT,          &
-                   PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),       &
-                   PINPRC, PINDEP, PINPRR, ZINPRI, PINPRS, PINPRG, PINPRH, &
-                   PEVAP3D, PCLDFR, PICEFR, PRAINFR                        )
-     ELSE
-
-        IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI,       &
-                                  TPFILE, KRR, PZZ, PRHODJ,                         &
-                                  PRHODREF, PEXNREF, PW_ACT, PPABST,                &
-                                  PDTHRAD,                                          &
-                                  PTHT, PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
-                                  PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
-                                  PINPRC, PINPRR, PINDEP, PINPRR3D, PEVAP3D         )
-!
-        IF (LCOLD) CALL LIMA_COLD(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,               &
-                                  KRR, PZZ, PRHODJ,                                  &
-                                  PRHODREF, PEXNREF, PPABST, PW_ACT,                 &
-                                  PTHT, PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),  &
-                                  PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),  &
-                                  PINPRS, PINPRG, PINPRH                             )
-!
-        IF (OWARM .AND. LCOLD) CALL LIMA_MIXED(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI,              &
-                                               KRR, PZZ, PRHODJ,                                 &
-                                               PRHODREF, PEXNREF, PPABST, PW_ACT,                &
-                                               PTHT, PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
-                                               PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END)  )
-     ENDIF
-!
-!*       12.2   Perform the saturation adjustment
-!
-   IF (LSPRO) THEN
-    CALL LIMA_NOTADJUST (KMI, TPFILE, HRAD,                                      &
-                         PTSTEP, PRHODJ, PPABSTT, PPABST, PRHODREF, PEXNREF, PZZ, &
-                         PTHT,PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),        &
-                         PTHS,PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),        &
-                         PCLDFR, PICEFR, PRAINFR, PSRCS                          )
-   ELSE IF (LPTSPLIT) THEN
-    CALL LIMA_ADJUST_SPLIT(YLDIMPHYEX, KRR, KMI, TPFILE, CCONDENS, CLAMBDA3,                     &
-                     OSUBG_COND, OSIGMAS, PTSTEP, PSIGQSAT,                          &
-                     PRHODREF, PRHODJ, PEXNREF, PSIGS, PMFCONV, PPABST, PPABSTT, ZZZ,&
-                     PDTHRAD, PW_ACT,                                                &
-                     PRT, PRS, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),                &
-                     PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),                          &
-                     PTHS, PSRCS, PCLDFR, PICEFR, PRC_MF, PRI_MF, PCF_MF             )
-   ELSE
-    CALL LIMA_ADJUST(KRR, KMI, TPFILE,                                &
-                     OSUBG_COND, PTSTEP,                              &
-                     PRHODREF, PRHODJ, PEXNREF, PPABST, PPABSTT,      &
-                     PRT, PRS, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
-                     PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),           &
-                     PTHS, PSRCS, PCLDFR, PICEFR, PRAINFR             )
-   ENDIF
-!
-END SELECT
-!
-IF(HCLOUD=='ICE3' .OR. HCLOUD=='ICE4' ) THEN
-  PINPRC3D=ZFPR(:,:,:,2) / CST%XRHOLW
-  PINPRR3D=ZFPR(:,:,:,3) / CST%XRHOLW
-  PINPRS3D=ZFPR(:,:,:,5) / CST%XRHOLW
-  PINPRG3D=ZFPR(:,:,:,6) / CST%XRHOLW
-  IF(KRR==7) PINPRH3D=ZFPR(:,:,:,7) / CST%XRHOLW
-  WHERE (PRT(:,:,:,2) > 1.E-04 )
-    PSPEEDC=ZFPR(:,:,:,2) / (PRT(:,:,:,2) * PRHODREF(:,:,:))
-  ENDWHERE
-  WHERE (PRT(:,:,:,3) > 1.E-04 )
-    PSPEEDR=ZFPR(:,:,:,3) / (PRT(:,:,:,3) * PRHODREF(:,:,:))
-  ENDWHERE
-  WHERE (PRT(:,:,:,5) > 1.E-04 )
-    PSPEEDS=ZFPR(:,:,:,5) / (PRT(:,:,:,5) * PRHODREF(:,:,:))
-  ENDWHERE
-  WHERE (PRT(:,:,:,6) > 1.E-04 )
-    PSPEEDG=ZFPR(:,:,:,6) / (PRT(:,:,:,6) * PRHODREF(:,:,:))
-  ENDWHERE
-  IF(KRR==7) THEN
-    WHERE (PRT(:,:,:,7) > 1.E-04 )
-      PSPEEDH=ZFPR(:,:,:,7) / (PRT(:,:,:,7) * PRHODREF(:,:,:))
-    ENDWHERE
-  ENDIF
-ENDIF
-
-! Remove non-physical negative values (unnecessary in a perfect world) + corresponding budgets
-call Sources_neg_correct( hcloud, 'NECON', krr, ptstep, ppabst, ptht, prt, pths, prs, psvs, prhodj )
-
-!-------------------------------------------------------------------------------
-!
-!
-!*      13.     SWITCH BACK TO THE PROGNOSTIC VARIABLES
-!               ---------------------------------------
-!
-PTHS(:,:,:) = PTHS(:,:,:) * PRHODJ(:,:,:)
-!
-DO JRR = 1,KRR
-  PRS(:,:,:,JRR)  = PRS(:,:,:,JRR) * PRHODJ(:,:,:)
-END DO
-!
-IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') THEN
-  DO JSV = ISVBEG, ISVEND
-    PSVS(:,:,:,JSV) = PSVS(:,:,:,JSV) * PRHODJ(:,:,:)
-  ENDDO
-ENDIF
-
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE RESOLVED_CLOUD
diff --git a/src/mesonh/ext/set_rsou.f90 b/src/mesonh/ext/set_rsou.f90
deleted file mode 100644
index 352af8a53..000000000
--- a/src/mesonh/ext/set_rsou.f90
+++ /dev/null
@@ -1,1640 +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_SET_RSOU
-!     ####################
-!
-INTERFACE
-!
-      SUBROUTINE SET_RSOU(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS,&
-                          PJ,OSHIFT,PCORIOZ)
-!
-USE MODD_IO, ONLY : TFILEDATA
-!
-TYPE(TFILEDATA),        INTENT(IN)  :: TPFILE ! outpput data file
-TYPE(TFILEDATA),        INTENT(IN)  :: TPEXPREFILE ! input data file
-CHARACTER(LEN=*),       INTENT(IN)  :: HFUNU  ! type of variation of U
-                                              ! in y direction
-CHARACTER(LEN=*),       INTENT(IN)  :: HFUNV  ! type of variation of V
-                                              ! in x direction
-INTEGER,                INTENT(IN)  :: KILOC  ! I Localisation of vertical profile
-INTEGER,                INTENT(IN)  :: KJLOC  ! J Localisation of vertical profile
-LOGICAL,                INTENT(IN)  :: OBOUSS ! logical switch for Boussinesq version
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PJ ! jacobien 
-LOGICAL,                INTENT(IN)  :: OSHIFT ! logical switch for vertical shift
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PCORIOZ ! Coriolis parameter
-                                               ! (exceptionnaly 3D array)
-!
-END SUBROUTINE SET_RSOU
-!
-END INTERFACE
-!
-END MODULE MODI_SET_RSOU
-!
-!     ########################################################################
-      SUBROUTINE SET_RSOU(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS, &
-                          PJ,OSHIFT,PCORIOZ)
-!     ########################################################################
-!
-!!****  *SET_RSOU * -  to initialize mass fiels from a radiosounding 
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is  to initialize the mass field (theta,r,
-!     thetavrefz,rhorefz) on model grid from a radiosounding located at point 
-!     (KILOC,KJLOC).
-!
-!        The free-formatted part of EXPRE file contains the radiosounding data.The data 
-!     are stored in following order :
-!        
-!         - year,month,day, time (these variables are read in PREINIT program)
-!         - kind of data in EXPRE file (see below for more explanations about
-!                                       YKIND)
-!         - ZGROUND
-!         - PGROUND
-!         - temperature variable at ground ( depending on the data Kind )
-!         - moist variable  at ground ( depending on the data Kind )
-!         - number of wind data levels  ( variable ILEVELU)
-!         - height  ,  dd  , ff   |
-!            or           or      |  ILEVELU times
-!           pressure,  U   , V    |
-!         - number of mass levels  ( variable ILEVELM), including the ground
-!           level
-!         - height  ,  T  ,          Td              |
-!            or        or            or              |  (ILEVELM-1) times
-!           pressure,  THeta_Dry  , Mixing Ratio     |
-!                      or            or              |
-!                      THeta_V    , relative HUmidity|  
-!
-!       NB : the first mass level is at ground
-! 
-!       The following kind of data  is permitted :
-!                  YKIND = 'STANDARD'  :   ZGROUND, PGROUND, TGROUND, TDGROUND
-!                                         (Pressure, dd, ff) , 
-!                                         (Pressure, T, Td)
-!                  YKIND = 'PUVTHVMR'  : zGROUND, PGROUND, ThvGROUND, RGROUND
-!                                        (Pressure, U, V) , 
-!                                        (Pressure, THv, R)
-!                  YKIND = 'PUVTHVHU'  :  zGROUND, PGROUND, ThvGROUND, HuGROUND
-!                                         (Pressure, U, V) , 
-!                                         (Pressure, THv, Hu)
-!                  YKIND = 'ZUVTHVHU'  :  zGROUND, PGROUND, ThvGROUND, HuGROUND
-!                                         (height, U, V) , 
-!                                         (height, THv, Hu)
-!                  YKIND = 'ZUVTHVMR'  :  zGROUND, PGROUND, ThvGROUND, RGROUND
-!                                         (height, U, V) , 
-!                                         (height, THv, R)
-!                  YKIND = 'PUVTHDMR'  : zGROUND, PGROUND, ThdGROUND, RGROUND
-!                                         (Pressure, U, V) , 
-!                                         (Pressure, THd, R)
-!                  YKIND = 'PUVTHDHU'  : zGROUND, PGROUND, ThdGROUND, HuGROUND
-!                                         (Pressure, U, V) , 
-!                                         (Pressure, THd, Hu)
-!                  YKIND = 'ZUVTHDMR'  :  zGROUND, PGROUND, ThdGROUND,
-!                  RGROUND
-!                                         (height, U, V) , 
-!                                         (height, THd, R)
-!                  YKIND = 'PUVTHU'  :   ZGROUND, PGROUND, TGROUND, HuGROUND
-!                                         (Pressure, U, V) , 
-!                                         (Pressure, T, Hu)
-!
-!  For ocean-LES case  the following kind of data is permitted
-!         
-!                  YKIND = 'IDEALOCE' : ZGROUND (Water depth),PGROUND(Sfc Atmos Press),
-!                                        TGROUND (SST), RGROUND (SSS)
-!                                         (Depth , U, V) starting from sfc   
-!                                         (Depth,  T, S)
-!                                     (Time, LE, H, SW_d,SW_u,LW_d,LW_u,Stress_X,Stress_Y)
-!
-!                  YKIND = 'STANDOCE' :  (Depth , Temp, Salinity, U, V) starting from sfc   
-!                                        (Time, LE, H, SW_d,SW_u,LW_d,LW_u,Stress_X,Stress_Y)     
-!        
-!!**  METHOD
-!!    ------
-!!      The radiosounding is first read, then data are converted in order to
-!!    always obtain  the following variables  (case YKIND = 'ZUVTHVMR') :
-!!       (height,U,V) and (height,Thetav,r) which are the model variables.
-!!      That is to say : 
-!!         - YKIND = 'STANDARD' : 
-!!           dd,ff converted in U,V
-!!           Td + pressure ----> r
-!!           T,r ---> Tv  + pressure ----> thetav
-!!           Pressure + thetav + ZGROUND ----> height (for mass levels)
-!!           Thetav at mass levels ----> thetav at wind levels
-!!           Pressure + thetav + ZGROUND + PGROUND ---->height (for wind levels)
-!!         - YKIND = 'PUVTHVMR' : 
-!!           Pressure + thetav + ZGROUND ----> height (for mass levels)
-!!           Thetav at mass levels ----> thetav at wind levels
-!!           Pressure + thetav + ZGROUND + PGROUND ---->height (for wind levels)
-!!         - YKIND = 'PUVTHVHU' : 
-!!           thetav + pressure ----> Tv +pressure +Hu ----> r 
-!!           Pressure + thetav + ZGROUND ----> height (for mass levels)
-!!           Thetav at mass levels ----> thetav at wind levels
-!!           Pressure + thetav + ZGROUND + PGROUND ---->height (for wind levels)
-!!         - YKIND = 'ZUVTHVHU' : 
-!!           height +thetav + PGROUND -----> pressure (for mass levels)
-!!           thetav + pressure ----> Tv +pressure +Hu ----> r 
-!!         - YKIND = 'PUVTHDVMR' : 
-!!           thetad + r ----> thetav
-!!           pressure + thetav + ZGROUND ----> height (for mass levels)
-!!           Thetav at mass levels ----> thetav at wind levels
-!!           Pressure + thetav + ZGROUND + PGROUND ---->height (for wind levels)
-!!         - YKIND = 'PUVTHDHU' :  
-!!           thetad + pressure -----> T
-!!           T + pressure + Hu -----> r 
-!!           thetad + r -----> thetav
-!!           pressure + thetav + ZGROUND ----> height (for mass levels)
-!!           Thetav at mass levels ----> thetav at wind levels
-!!           Pressure + thetav + ZGROUND + PGROUND ---->height (for wind levels)
-!!         - YKIND = 'ZUVTHDHU' :  
-!!           thetad + r -----> thetav
-!!         - YKIND = 'PUVTHU' :  
-!!           T + pressure -----> thetad
-!!           T + pressure + Hu  -----> r
-!!           thetad + r -----> thetav
-!!           pressure + thetav + ZGROUND ----> height (for mass levels)
-!!           Thetav at mass levels ----> thetav at wind levels
-!!           
-!!      The following basic formula are used :
-!!                Rd  es(Td)
-!!            r = --  ----------
-!!                Rv  P - es(Td)
-!!
-!!                 1 + (Rv/Rd) r
-!!            Tv = --------------  T  
-!!                    1 + r
-!!
-!!                          P00    Rd/Cpd             1 + (Rv/Rd) r
-!!            Thetav = Tv ( ---- )         = Thetad ( --------------)
-!!                           P                           1 + r
-!!       The integration of hydrostatic relation is used to compute height from
-!!   pressure  and vice-versa. This is done by HEIGHT_PRESS and PRESS_HEIGHT 
-!!   routines.  
-!!   
-!!      Then, these data are interpolated on a vertical grid which is  
-!!    a mixed grid calaculated with VERT_COORD from the vertical levels of MNH
-!!    grid and with a constant ororgraphy equal to the altitude of the vertical
-!!    profile (ZZGROUND) (It permits to keep low levels information with a
-!!    shifting function (as in PREP_REAL_CASE))
-!!
-!!      Then, the 3D mass and wind fields are deduced in SET_MASS
-!!     
-!!
-!!    EXTERNAL
-!!    --------
-!!      SET_MASS : to compute mass field on 3D-model grid
-!!      Module MODE_THERMO : contains thermodynamic routines
-!!         SM_FOES : To compute saturation vapor pressure from 
-!!                   temperature
-!!         SM_PMR_HU : to compute vapor mixing ratio from pressure, virtual
-!!                    temperature and relative humidity
-!!      HEIGHT_PRESS : to compute height from pressure and thetav 
-!!                    by integration of hydrostatic relation
-!!      PRESS_HEIGHT : to compute pressure from height and thetav
-!!                    by integration of hydrostatic relation
-!!      THETAVPU_THETAVPM : to interpolate thetav on wind levels
-!!                          from thetav on mass levels
-!!
-!!      Module MODI_HEIGHT_PRESS      : interface for function HEIGHT_PRESS
-!!      Module MODI_PRESS_HEIGHT      : interface for function PRESS_HEIGHT
-!!      Module MODI_THETAVPU_THETAVPM : interface for function
-!!                                      THETAVPU_THETVPM
-!!      Module MODI_SET_MASS          : interface for subroutine SET_MASS
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_CST     : contains physical constants
-!!        XPI  : Pi
-!!        XRV  : Gas constant for vapor 
-!!        XRD  : Gas constant for dry air
-!!        XCPD : Specific heat for dry air at constant pressure
-!!
-!!      Module MODD_LUNIT1  : contains logical unit names 
-!!        TLUOUT : name of output-listing
-!!
-!!      Module MODD_CONF    : contains configuration variables for all models. 
-!!        NVERB : verbosity level for output-listing
-!!
-!!      Module MODD_GRID1  : contains grid variables
-!!        XZHAT : height of w-levels of vertical model grid without orography
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of MESO-NH documentation (routine SET_RSOU)
-!!    
-!!
-!!    AUTHOR
-!!    ------
-!!	V. Ducrocq       * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    25/08/94
-!!      J.Stein     06/12/94  change the way to prescribe the horizontal wind
-!!                            variations + cleaning
-!!      J.Stein     18/01/95  bug corrections in the ILEVELM readings
-!!      J.Stein     16/04/95  put the same names of the declarative modules
-!!                            in the descriptive part
-!!      J.Stein     30/01/96  use the RS ground pressure to initialize the
-!!                            hydrostatic pressure computation
-!!      V.Masson    02/09/96  add allocation of ZTHVU in two cases
-!!      P.Jabouille 14/02/96  bug in extrapolation of ZMRM below the first level
-!! Jabouille/Masson 05/12/02  add  ZUVTHLMR case and hydrometeor initialization
-!!      P.Jabouille 29/10/03  add  hydrometeor initialization for ZUVTHDMR case
-!!      G. Tanguy   26/10/10  change the interpolation of the RS : we use now a
-!!                            mixed grid (PREP_REAL_CASE method)
-!!                            add PUVTHU case
-!!      V.Masson    12/08/13  Parallelization of the initilization profile
-!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 19/04/2019: removed unused dummy arguments and variables
-!  JL Redelsperger 01/2021: Ocean LES cases added
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_CONF
-USE MODD_CONF_n
-USE MODD_CST
-USE MODD_NEB, ONLY: NEB
-USE MODD_DYN_n,      ONLY: LOCEAN
-USE MODD_FIELD_n
-USE MODD_GRID
-USE MODD_GRID_n
-USE MODD_LUNIT_n,    ONLY: TLUOUT
-USE MODD_IO,         ONLY: TFILEDATA
-USE MODD_NETCDF
-USE MODD_OCEANH
-USE MODD_PARAMETERS, ONLY: JPHEXT
-USE MODD_TYPE_DATE
-!
-USE MODE_ll
-USE MODE_MSG
-USE MODE_THERMO
-!
-USE MODI_COMPUTE_EXNER_FROM_GROUND
-USE MODI_HEIGHT_PRESS
-USE MODI_PRESS_HEIGHT
-USE MODI_SET_MASS
-USE MODI_SHUMAN
-USE MODI_THETAVPU_THETAVPM
-USE MODI_VERT_COORD
-!
-USE NETCDF          ! for reading the NR files 
-!
-IMPLICIT NONE
-!  
-!  
-!*       0.1   Declarations of arguments :
-!
-TYPE(TFILEDATA),        INTENT(IN)  :: TPFILE ! outpput data file
-TYPE(TFILEDATA),        INTENT(IN)  :: TPEXPREFILE ! input data file
-CHARACTER(LEN=*),       INTENT(IN)  :: HFUNU  ! type of variation of U
-                                              ! in y direction
-CHARACTER(LEN=*),       INTENT(IN)  :: HFUNV  ! type of variation of V
-                                              ! in x direction
-INTEGER,                INTENT(IN)  :: KILOC  ! I Localisation of vertical profile
-INTEGER,                INTENT(IN)  :: KJLOC  ! J Localisation of vertical profile
-LOGICAL,                INTENT(IN)  :: OBOUSS ! logical switch for Boussinesq version
-LOGICAL,                INTENT(IN)  :: OSHIFT ! logical switch for vertical shift
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PCORIOZ ! Coriolis parameter
-                                               ! (exceptionnaly 3D array)
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PJ ! jacobien 
-!
-!
-!*       0.2   Declarations of local variables :
-!
-INTEGER                         :: ILUPRE ! logical unit number of the EXPRE return code
-INTEGER                         :: ILUOUT    ! Logical unit number for output-listing
-! local variables for reading sea sfc flux forcing for ocean model
-INTEGER                   :: IFRCLT 
-REAL, DIMENSION(:), ALLOCATABLE :: ZSSUFL_T,ZSSVFL_T,ZSSTFL_T,ZSSOLA_T !
-TYPE (DATE_TIME), DIMENSION(:), ALLOCATABLE :: ZFRCLT ! date/time of sea surface forcings
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!  variables read in EXPRE file at the RS/CTD levels
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-CHARACTER(LEN=8)                :: YKIND     ! Kind of  variables in 
-                                             ! EXPRE FILE
-INTEGER                         :: ILEVELU   ! number of wind levels 
-REAL, DIMENSION(:), ALLOCATABLE :: ZHEIGHTU  ! Height at wind levels 
-REAL, DIMENSION(:), ALLOCATABLE :: ZPRESSU   ! Pressure at wind levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZTHVU     ! Thetav at wind levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZU,ZV     ! wind components
-REAL, DIMENSION(:), ALLOCATABLE :: ZDD,ZFF   ! dd (direction) and ff(force)
-                                             !     for wind
-REAL                            :: ZZGROUND,ZPGROUND ! height and Pressure at ground  
-REAL                            :: ZTGROUND,ZTHVGROUND,ZTHDGROUND,ZTHLGROUND,    & 
-                                   ZTDGROUND,ZMRGROUND,ZHUGROUND        
-                                                  ! temperature and moisture
-                                                  ! variables at ground
-INTEGER                         :: ILEVELM   ! number of mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZHEIGHTM  ! Height at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZPRESSM   ! Pressure at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZTHV      ! Thetav at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZTHD      ! Theta (dry) at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZTHL      ! Thetal at mass levels  
-REAL, DIMENSION(:), ALLOCATABLE :: ZTH       ! Theta at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZT        ! Temperature at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZMR       ! Vapor mixing ratio at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZMRC      ! cloud mixing ratio at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZMRI      ! ice mixing ratio or cloud concentration
-REAL, DIMENSION(:), ALLOCATABLE :: ZRT       ! total mixing ratio  
-REAL, DIMENSION(:), ALLOCATABLE :: ZPRESS    ! pressure at mass level 
-REAL, DIMENSION(:), ALLOCATABLE :: ZHU       ! relative humidity at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZTD       ! Td at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZTV       ! Tv at mass levels
-REAL, DIMENSION(:), ALLOCATABLE :: ZEXN      
-REAL, DIMENSION(:), ALLOCATABLE :: ZCPH     
-REAL, DIMENSION(:), ALLOCATABLE :: ZLVOCPEXN     
-REAL, DIMENSION(:), ALLOCATABLE :: ZLSOCPEXN    
-REAL, DIMENSION(SIZE(XZHAT))    :: ZZFLUX_PROFILE ! altitude of flux points on the initialization columns
-REAL, DIMENSION(SIZE(XZHAT))    :: ZZMASS_PROFILE ! altitude of mass points on the initialization columns
-!
-!  fields on the grid of the model without orography
-!
-REAL, DIMENSION(SIZE(XZHAT))    :: ZUW,ZVW ! Wind at w model grid levels
-REAL, DIMENSION(SIZE(XZHAT))    :: ZMRM   ! vapor mixing ratio at mass model
-                                          !grid levels 
-REAL, DIMENSION(SIZE(XZHAT))    :: ZMRCM,ZMRIM
-REAL, DIMENSION(SIZE(XZHAT))    :: ZTHVM  ! Temperature at mass model grid levels
-REAL, DIMENSION(SIZE(XZHAT))    :: ZTHLM  ! Thetal at mass model grid levels
-REAL, DIMENSION(SIZE(XZHAT))    :: ZTHM  ! Thetal at mass model grid levels
-REAL, DIMENSION(SIZE(XZHAT))    :: ZRHODM   ! density at mass model grid level
-REAL, DIMENSION(:), ALLOCATABLE :: ZMRT    ! Total Vapor mixing ratio at mass levels on mixed grid
-REAL, DIMENSION(:), ALLOCATABLE :: ZEXNMASS  ! exner fonction at mass level
-REAL, DIMENSION(:), ALLOCATABLE :: ZEXNFLUX  ! exner fonction at flux level
-REAL                            :: ZEXNSURF  ! exner fonction at surface
-REAL, DIMENSION(:), ALLOCATABLE :: ZPREFLUX   ! pressure at flux model grid level
-REAL, DIMENSION(:), ALLOCATABLE :: ZFRAC_ICE ! ice fraction
-REAL, DIMENSION(:), ALLOCATABLE :: ZRSATW, ZRSATI             
-REAL                            :: ZDZSDH,ZDZ1SDH,ZDZ2SDH ! interpolation
-                                                          ! working arrays
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZBUF
-!
-INTEGER         :: JK,JKLEV,JKU,JKM,JKT,JJ,JI,JO,JLOOP  ! Loop indexes
-INTEGER         :: IKU                ! Upper bound in z direction
-REAL            :: ZRDSCPD,ZRADSDG, & ! Rd/Cpd, Pi/180.,
-                   ZRVSRD,ZRDSRV,   & ! Rv/Rd, Rd/Rv
-                   ZPTOP              ! Pressure at domain top 
-LOGICAL         :: GUSERC             ! use of input data cloud
-INTEGER         :: IIB, IIE, IJB, IJE
-INTEGER         :: IXOR_ll, IYOR_ll
-INTEGER         :: IINFO_ll
-LOGICAL         :: GPROFILE_IN_PROC   ! T : initialization profile is in current processor
-!
-REAL,DIMENSION(SIZE(XXHAT),SIZE(XYHAT))   ::ZZS_LS
-REAL,DIMENSION(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)) ::ZZFLUX_MX,ZZMASS_MX ! mixed grid
-!-------------------------------------------------------------------------------
-! For standard ocean version, reading external files
-CHARACTER(LEN=256) :: yinfile, yinfisf ! files to be read
-INTEGER :: IDX
-INTEGER(KIND=CDFINT) :: INZ, INLATI, INLONGI
-INTEGER(KIND=CDFINT) :: incid, ivarid, idimid, idimlen
-REAL, DIMENSION(:,:,:),     ALLOCATABLE :: ZOC_TEMPERATURE,ZOC_SALINITY,ZOC_U,ZOC_V
-REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_DEPTH  
-REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_LE,ZOC_H
-REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_SW_DOWN,ZOC_SW_UP,ZOC_LW_DOWN,ZOC_LW_UP
-REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_TAUX,ZOC_TAUY
-
-!--------------------------------------------------------------------------------
-!
-!*	 1.     PROLOGUE : INITIALIZE SOME CONSTANTS, RETRIEVE LOGICAL
-!               UNIT NUMBERS AND READ KIND OF DATA IN EXPRE FILE
-!	        -------------------------------------------------------
-!
-CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
-CALL GET_OR_ll('B',IXOR_ll,IYOR_ll)
-!
-!*       1.1  initialize some constants 
-!
-ZRDSCPD = XRD / XCPD
-ZRADSDG = XPI/180.
-ZRVSRD  = XRV/XRD
-ZRDSRV = XRD/XRV
-!
-!*       1.2  Retrieve logical unit numbers 
-!                         
-ILUPRE = TPEXPREFILE%NLU
-ILUOUT = TLUOUT%NLU
-!
-!*       1.3  Read data kind in EXPRE file 
-!
-READ(ILUPRE,*) YKIND
-WRITE(ILUOUT,*) 'YKIND read in set_rsou: ', YKIND
-!
-IF(LUSERC .AND. YKIND/='PUVTHDMR' .AND. YKIND/='ZUVTHDMR' .AND.  YKIND/='ZUVTHLMR') THEN 
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU','hydrometeors are not allowed for YKIND = '//trim(YKIND))
-ENDIF
-!
-IF(YKIND=='ZUVTHLMR' .AND. .NOT. LUSERC) THEN
-!callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU','LUSERC=T is required for YKIND=ZUVTHLMR')
-ENDIF
-!
-GUSERC=.FALSE.
-IF(LUSERC .AND. (YKIND == 'PUVTHDMR' .OR. YKIND == 'ZUVTHDMR')) GUSERC=.TRUE.
-!-------------------------------------------------------------------------------
-!
-!*	 2.     READ DATA AND CONVERT IN (height,U,V), (height,Thetav,r)
-!	        --------------------------------------------------------
-!
-SELECT CASE(YKIND)
-!   
-!     2.0.1 Ocean case 1
-!   
-  CASE ('IDEALOCE')
-!
-    XP00=XP00OCEAN
-    ! Read data in PRE_IDEA1.nam
-    ! Surface      
-    WRITE(ILUOUT,FMT=*) 'Reading data for ideal ocean :IDEALOCE'   
-    READ(ILUPRE,*) ZPTOP           ! P_atmosphere at sfc =P top domain
-    READ(ILUPRE,*) ZTGROUND        ! SST 
-    READ(ILUPRE,*) ZMRGROUND       ! SSS
-    WRITE(ILUOUT,FMT=*) 'Patm SST SSS', ZPTOP,ZTGROUND,ZMRGROUND
-    READ(ILUPRE,*) ILEVELU         ! Read number of Current levels
-    ! Allocate required memory 
-    ALLOCATE(ZHEIGHTU(ILEVELU),ZU(ILEVELU),ZV(ILEVELU))
-    ALLOCATE(ZOC_U(ILEVELU,1,1),ZOC_V(ILEVELU,1,1))
-    WRITE(ILUOUT,FMT=*) 'Level number for Current in data', ILEVELU
-    ! Read U and V at each wind level
-    DO JKU = 1,ILEVELU
-      READ(ILUPRE,*) ZHEIGHTU(JKU),ZOC_U(JKU,1,1),ZOC_V(JKU,1,1)
-      ! WRITE(ILUOUT,FMT=*) 'Leveldata D(m) under sfc: U_cur, V_cur', JKU, ZHEIGHTU(JKU),ZU(JKU),ZV(JKU)
-    END DO
-    DO JKU=1,ILEVELU
-      ! Z axis reoriented as in the model
-      IDX     = ILEVELU-JKU+1
-      ZU(JKU) = ZOC_U(IDX,1,1)
-      ZV(JKU) = ZOC_V(IDX,1,1)
-      ! ZHEIGHT used only in set_ rsou, defined as such ZHEIGHT(ILEVELM)=H_model
-      ! Z oriented in same time to have a model domain axis going
-      ! from 0m (ocean bottom/model bottom) towards H (ocean sfc/model top)
-    END DO
-    ! Read number of mass levels  
-    READ(ILUPRE,*) ILEVELM
-    ! Allocate required memory 
-    ALLOCATE(ZOC_DEPTH(ILEVELM))
-    ALLOCATE(ZHEIGHTM(ILEVELM))           
-    ALLOCATE(ZTHL(ILEVELM),ZTH(ILEVELM),ZTHV(ILEVELM)) 
-    ALLOCATE(ZMR(ILEVELM),ZRT(ILEVELM))
-    ALLOCATE(ZOC_TEMPERATURE(ILEVELM,1,1),ZOC_SALINITY(ILEVELM,1,1))
-    ! Read T and S at each mass level 
-    DO JKM= 2,ILEVELM
-      READ(ILUPRE,*) ZOC_DEPTH(JKM),ZOC_TEMPERATURE(JKM,1,1),ZOC_SALINITY(JKM,1,1)
-    END DO
-    ! Complete the mass arrays with the ground informations read in EXPRE file
-    ZOC_DEPTH(1)    = 0.                    
-    ZOC_TEMPERATURE(1,1,1)= ZTGROUND
-    ZOC_SALINITY(1,1,1)= ZMRGROUND
-    !!!!!!!!!!!!!!!!!!!!!!!!Inversing Axis!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-    ! Going from the data (axis downward i.e inverse model) grid to the model grid (axis upward)
-    ! Uniform bathymetry; depth goes from ocean sfc downwards  (data grid)
-    ! ZHEIGHT goes from the model domain bottom up to the sfc ocean (top of model domain)
-    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-    ZZGROUND   = 0.
-    ZTGROUND   = ZOC_TEMPERATURE(ILEVELM,1,1) 
-    ZMRGROUND  = ZOC_SALINITY(ILEVELM,1,1)
-    DO JKM= 1,ILEVELM
-      ! Z upward axis (oriented as in the model), i.e.
-      ! going from 0m (ocean bottom/model bottom) upward to H (ocean sfc/model top)
-      ! ZHEIGHT used only in set_ rsou, defined as such ZHEIGHT(ILEVELM)=H_model
-      IDX          = ILEVELM-JKM+1
-      ZTH(JKM)      = ZOC_TEMPERATURE(IDX,1,1)
-      ZMR(JKM)     = ZOC_SALINITY(IDX,1,1)
-      ZHEIGHTM(JKM)= ZOC_DEPTH(ILEVELM)- ZOC_DEPTH(IDX)
-      WRITE(ILUOUT,FMT=*) 'Model oriented initial data: JKM IDX depth T S ZHEIGHTM', &
-                      JKM,IDX,ZOC_DEPTH(IDX),ZTH(JKM),ZMR(JKM),ZHEIGHTM(JKM)
-    END DO
-    ! mass levels of the RS
-    ZTHV = ZTH ! TV==THETA=TL
-    ZTHL = ZTH
-    ZRT  = ZMR  
-    !!!!!!!!!!!!!!!!!!!!!!!!!!!!
-    ! READ Sea Surface Forcing !
-    !!!!!!!!!!!!!!!!!!!!!!!!!!!!
-    ! Reading the forcings from prep_idea1.nam
-    READ(ILUPRE,*) IFRCLT  ! Number of time-dependent forcing 
-    IF (IFRCLT > 99*8) THEN
-      ! CAUTION: number of forcing times is limited by the WRITE format 99(8E10.3)
-      !          and also by the name of forcing variables (format I3.3)
-      !          You have to modify those if you need more forcing times
-     CALL PRINT_MSG(NVERB_FATAL,'IO','SET_RSOU','maximum forcing times NFRCLT is 99*8')
-    END IF
-!
-    WRITE(UNIT=ILUOUT,FMT='(" THERE ARE ",I2," SFC FLUX FORCINGs AT:")') IFRCLT
-    ALLOCATE(ZFRCLT(IFRCLT))
-    ALLOCATE(ZSSUFL_T(IFRCLT)); ZSSUFL_T = 0.0
-    ALLOCATE(ZSSVFL_T(IFRCLT)); ZSSVFL_T = 0.0
-    ALLOCATE(ZSSTFL_T(IFRCLT)); ZSSTFL_T = 0.0
-    ALLOCATE(ZSSOLA_T(IFRCLT)); ZSSOLA_T = 0.0
-    DO JKT = 1,IFRCLT
-      WRITE(ILUOUT,FMT='(A, I4)') "SET_RSOU/Reading Sea Surface forcing: Number=", JKT
-      READ(ILUPRE,*) ZFRCLT(JKT)%nyear, ZFRCLT(JKT)%nmonth, &
-                     ZFRCLT(JKT)%nday,  ZFRCLT(JKT)%xtime
-      READ(ILUPRE,*) ZSSUFL_T(JKT)
-      READ(ILUPRE,*) ZSSVFL_T(JKT)
-      READ(ILUPRE,*) ZSSTFL_T(JKT)
-      READ(ILUPRE,*) ZSSOLA_T(JKT)
-    END DO
-!
-    DO JKT = 1 , IFRCLT
-      WRITE(UNIT=ILUOUT,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') &
-                 ZFRCLT(JKT)%xtime,         ZFRCLT(JKT)%nday,   &
-                 ZFRCLT(JKT)%nmonth, ZFRCLT(JKT)%nyear
-    END DO
-    NINFRT= INT(ZFRCLT(2)%xtime)
-    WRITE(ILUOUT,FMT='(A)') &
-         "Number U-Stress, V-Stress, Heat turb Flux, Solar Flux Interval(s)",NINFRT
-    DO JKT = 1, IFRCLT
-      WRITE(ILUOUT,FMT='(I10,99(3F10.2))') JKT, ZSSUFL_T(JKT),ZSSVFL_T(JKT),ZSSTFL_T(JKT) 
-    END DO
-    NFRCLT = IFRCLT
-    ALLOCATE(TFRCLT(NFRCLT))
-    ALLOCATE(XSSUFL_T(NFRCLT));XSSUFL_T(:)=0.
-    ALLOCATE(XSSVFL_T(NFRCLT));XSSVFL_T(:)=0.
-    ALLOCATE(XSSTFL_T(NFRCLT));XSSTFL_T(:)=0.
-    ALLOCATE(XSSOLA_T(NFRCLT));XSSOLA_T(:)=0.
-!
-    DO JKT=1,NFRCLT
-      TFRCLT(JKT)= ZFRCLT(JKT)
-      XSSUFL_T(JKT)=ZSSUFL_T(JKT)/XRH00OCEAN
-      XSSVFL_T(JKT)=ZSSVFL_T(JKT)/XRH00OCEAN
-      ! working in SI
-      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(3900.*XRH00OCEAN)
-      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(3900.*XRH00OCEAN)
-    END DO   
-    DEALLOCATE(ZFRCLT)
-    DEALLOCATE(ZSSUFL_T)
-    DEALLOCATE(ZSSVFL_T)
-    DEALLOCATE(ZSSTFL_T)
-    DEALLOCATE(ZSSOLA_T)
-!
-!--------------------------------------------------------------------------------   
-! 2.0.2  Ocean standard initialize from netcdf files
-!        U,V,T,S at Z levels + Forcings at model TOP (sea surface) 
-!--------------------------------------------------------------------------------   
-!
-  CASE ('STANDOCE')
-!   
-    XP00=XP00OCEAN
-    READ(ILUPRE,*) ZPTOP           ! P_atmosphere at sfc =P top domain
-    READ(ILUPRE,*) YINFILE, YINFISF
-    WRITE(ILUOUT,FMT=*) 'Netcdf files to read:', YINFILE, YINFISF
-    ! Open file containing initial profiles
-    CALL check(nf90_open(yinfile,NF90_NOWRITE,incid), "opening NC file")
-    ! Reading dimensions and lengths
-    CALL check( nf90_inq_dimid(incid, "depth",idimid), "getting depth  dimension id" )
-    CALL check( nf90_inquire_dimension(incid, idimid,             len=INZ),     "getting INZ"   )
-    CALL check( nf90_inquire_dimension(incid, INT(2,KIND=CDFINT), len=INLONGI), "getting NLONG" )
-    CALL check( nf90_inquire_dimension(incid, INT(1,KIND=CDFINT), len=INLATI),  "getting NLAT"  )
-!   
-    WRITE(ILUOUT,FMT=*) 'NB LEVLS READ INZ, NLONG NLAT ', INZ, INLONGI,INLATI
-    ALLOCATE(ZOC_TEMPERATURE(INLATI,INLONGI,INZ),ZOC_SALINITY(INLATI,INLONGI,INZ))
-    ALLOCATE(ZOC_U(INLATI,INLONGI,INZ),ZOC_V(INLATI,INLONGI,INZ))
-    ALLOCATE(ZOC_DEPTH(INZ))
-    WRITE(ILUOUT,FMT=*) 'NETCDF READING ==> Temp'
-    CALL check(nf90_inq_varid(incid,"temperature",ivarid), "getting temp ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_TEMPERATURE), "reading temp")
-    WRITE(ILUOUT,FMT=*) 'Netcdf Reading ==> salinity'
-    CALL check(nf90_inq_varid(incid,"salinity",ivarid), "getting salinity ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_SALINITY), "reading salinity")
-    WRITE(ILUOUT,FMT=*) 'Netcdf ==> Reading depth'
-    CALL check(nf90_inq_varid(incid,"depth",ivarid), "getting depth ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_DEPTH), "reading depth")
-    WRITE(ILUOUT,FMT=*) 'depth: max min ', MAXVAL(ZOC_DEPTH),MINVAL(ZOC_DEPTH)
-    WRITE(ILUOUT,FMT=*) 'depth 1 nz: ', ZOC_DEPTH(1),ZOC_DEPTH(INZ)
-    WRITE(ILUOUT,FMT=*) 'Netcdf Reading ==> Currents'
-    CALL check(nf90_inq_varid(incid,"u",ivarid), "getting u ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_U), "reading u")
-    CALL check(nf90_inq_varid(incid,"v",ivarid), "getting v ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_V), "reading v")
-    CALL check(nf90_close(incid), "closing yinfile")
-    WRITE(ILUOUT,FMT=*) 'End of initial file reading'
-!
-    DO JKM=1,INZ
-     ZOC_TEMPERATURE(1,1,JKM)=ZOC_TEMPERATURE(1,1,JKM)+273.15
-     WRITE(ILUOUT,FMT=*) 'Z T(Kelvin) S(Sverdup) U V K',&
-     JKM,ZOC_DEPTH(JKM),ZOC_TEMPERATURE(1,1,JKM),ZOC_SALINITY(1,1,JKM),ZOC_U(1,1,JKM),ZOC_V(1,1,JKM), JKM
-    ENDDO
-    !  number of data levels
-    ILEVELM=INZ
-    ! Model bottom
-    ZTGROUND  = ZOC_TEMPERATURE(1,1,ILEVELM)
-    ZMRGROUND = ZOC_SALINITY(1,1,ILEVELM)
-    ZZGROUND=0.
-    ! Allocate required memory
-    ALLOCATE(ZHEIGHTM(ILEVELM))           
-    ALLOCATE(ZT(ILEVELM))
-    ALLOCATE(ZTV(ILEVELM))
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZTHV(ILEVELM)) 
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))
-    !  Going from the inverse model grid (data) to the normal one
-    DO JKM= 1,ILEVELM
-      ! Z axis reoriented as in the model
-      IDX     = ILEVELM-JKM+1
-      ZT(JKM) = ZOC_TEMPERATURE(1,1,IDX)
-      ZMR(JKM)  =  ZOC_SALINITY(1,1,IDX)
-      ! ZHEIGHT used only in set_ rsou, defined as such ZHEIGHT(ILEVELM)=H_model
-      ! Z oriented in same time to have a model domain axis going
-      ! from 0m (ocean bottom/model bottom) towards H (ocean sfc/model top)
-      ! translation/inversion
-      ZHEIGHTM(JKM) = -ZOC_DEPTH(IDX) + ZOC_DEPTH(ILEVELM)
-      WRITE(ILUOUT,FMT=*) 'End gridmodel comput: JKM IDX depth T S ZHEIGHTM', &
-      JKM,IDX,ZOC_DEPTH(IDX),ZT(JKM),ZMR(JKM),ZHEIGHTM(JKM)
-    END DO
-    ! complete ther variables
-    ZTV  = ZT
-    ZTHV = ZT
-    ZRT  = ZMR
-    ZTHL = ZT
-    ZTH  = ZT
-    ! INIT --- U V -----
-    ILEVELU = INZ               ! Same nb of levels for u,v,T,S
-    !Assume that current and temp are given at same level
-    ALLOCATE(ZHEIGHTU(ILEVELU))           
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))
-    ZHEIGHTU=ZHEIGHTM
-    DO JKM= 1,ILEVELU
-      ! Z axis reoriented as in the model
-      IDX     = ILEVELU-JKM+1
-      ZU(JKM) = ZOC_U(1,1,IDX)
-      ZV(JKM) = ZOC_V(1,1,IDX)
-      ! ZHEIGHT used only in set_ rsou, defined as such ZHEIGHT(ILEVELM)=H_model
-      ! Z oriented in same time to have a model domain axis going
-      ! from 0m (ocean bottom/model bottom) towards H (ocean sfc/model top)
-    END DO
-!
-    DEALLOCATE(ZOC_TEMPERATURE)
-    DEALLOCATE(ZOC_SALINITY)
-    DEALLOCATE(ZOC_U)
-    DEALLOCATE(ZOC_V)
-    DEALLOCATE(ZOC_DEPTH)
-!
-    ! Reading/initializing  surface forcings
-!
-    WRITE(ILUOUT,FMT=*) 'netcdf sfc forcings file to be read:',yinfisf
-    ! Open of sfc forcing file
-    CALL check(nf90_open(yinfisf,NF90_NOWRITE,incid), "opening NC file")
-    ! Reading dimension and length
-    CALL check( nf90_inq_dimid(incid,"t",idimid), "getting  time dimension id" )
-    CALL check( nf90_inquire_dimension(incid, idimid, len=idimlen), "getting idimlen "  )
-!
-    WRITE(ILUOUT,FMT=*) 'nb sfc-forcing time idimlen=',idimlen
-    ALLOCATE(ZOC_LE(idimlen))
-    ALLOCATE(ZOC_H(idimlen))
-    ALLOCATE(ZOC_SW_DOWN(idimlen))
-    ALLOCATE(ZOC_SW_UP(idimlen))
-    ALLOCATE(ZOC_LW_DOWN(idimlen))
-    ALLOCATE(ZOC_LW_UP(idimlen))
-    ALLOCATE(ZOC_TAUX(idimlen))
-    ALLOCATE(ZOC_TAUY(idimlen))
-!
-    WRITE(ILUOUT,FMT=*)'Netcdf Reading ==> LE'  
-    CALL check(nf90_inq_varid(incid,"LE",ivarid), "getting LE ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_LE), "reading LE flux")
-    WRITE(ILUOUT,FMT=*)'Netcdf Reading ==> H'  
-    CALL check(nf90_inq_varid(incid,"H",ivarid), "getting H ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_H), "reading H flux")
-    WRITE(ILUOUT,FMT=*) 'Netcdf Reading ==> SW_DOWN'  
-    CALL check(nf90_inq_varid(incid,"SW_DOWN",ivarid), "getting SW_DOWN ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_SW_DOWN), "reading SW_DOWN")
-    WRITE(ILUOUT,FMT=*) 'Netcdf Reading ==> SW_UP'  
-    CALL check(nf90_inq_varid(incid,"SW_UP",ivarid), "getting SW_UP ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_SW_UP), "reading SW_UP")
-    WRITE(ILUOUT,FMT=*) 'Netcdf Reading ==> LW_DOWN'  
-    CALL check(nf90_inq_varid(incid,"LW_DOWN",ivarid), "getting LW_DOWN ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_LW_DOWN), "reading LW_DOWN")
-    WRITE(ILUOUT,FMT=*) 'Netcdf Reading ==> LW_UP'  
-    CALL check(nf90_inq_varid(incid,"LW_UP",ivarid), "getting LW_UP ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_LW_UP), "reading LW_UP")
-    WRITE(ILUOUT,FMT=*) 'Netcdf Reading ==> TAUX'  
-    CALL check(nf90_inq_varid(incid,"TAUX",ivarid), "getting TAUX ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_TAUX), "reading TAUX")
-    WRITE(ILUOUT,FMT=*) 'Netcdf Reading ==> TAUY'  
-    CALL check(nf90_inq_varid(incid,"TAUY",ivarid), "getting TAUY ivarid")
-    CALL check(nf90_get_var(incid,ivarid,ZOC_TAUY), "reading TAUY")
-    CALL check(nf90_close(incid), "closing yinfifs")
-!
-    WRITE(ILUOUT,FMT=*) '  Forcing-Number    LE     H     SW_down     SW_up    LW_down   LW_up TauX TauY' 
-    DO JKM = 1, idimlen
-      WRITE(ILUOUT,FMT=*) JKM, ZOC_LE(JKM), ZOC_H(JKM),ZOC_SW_DOWN(JKM),ZOC_SW_UP(JKM),&
-                          ZOC_LW_DOWN(JKM),ZOC_LW_UP(JKM),ZOC_TAUX(JKM),ZOC_TAUY(JKM)   
-    ENDDO
-    ! IFRCLT FORCINGS at sea surface
-    IFRCLT=idimlen
-    ALLOCATE(ZFRCLT(IFRCLT)) 
-    ALLOCATE(ZSSUFL_T(IFRCLT)); ZSSUFL_T = 0.0
-    ALLOCATE(ZSSVFL_T(IFRCLT)); ZSSVFL_T = 0.0
-    ALLOCATE(ZSSTFL_T(IFRCLT)); ZSSTFL_T = 0.0
-    ALLOCATE(ZSSOLA_T(IFRCLT)); ZSSOLA_T = 0.0
-    DO JKT=1,IFRCLT
-      ! Initial file for CINDY-DYNAMO: all fluxes correspond to the absolute value (>0)
-      ! modele ocean: axe z dirigé du bas vers la sfc de l'océan
-      ! => flux dirigé vers le haut (positif ocean vers l'atmopshere i.e. bas vers le haut)
-      ZSSOLA_T(JKT)=ZOC_SW_DOWN(JKT)-ZOC_SW_UP(JKT)
-      ZSSTFL_T(JKT)=(ZOC_LW_DOWN(JKT)-ZOC_LW_UP(JKT)-ZOC_LE(JKT)-ZOC_H(JKT))
-      ! assume that Tau given on file is along Ox
-      ! rho_air UW_air = rho_ocean UW_ocean= N/m2
-      ! uw_ocean
-      ZSSUFL_T(JKT)=ZOC_TAUX(JKT)
-      ZSSVFL_T(JKT)=ZOC_TAUY(JKT)
-      WRITE(ILUOUT,FMT=*) 'Forcing Nb Sol NSol UW_oc VW',&
-                          JKT,ZSSOLA_T(JKT),ZSSTFL_T(JKT),ZSSUFL_T(JKT),ZSSVFL_T(JKT) 
-    ENDDO
-    ! Allocate and Writing the corresponding variables in module MODD_OCEAN_FRC
-    NFRCLT=IFRCLT
-    ! value to read later on file ? 
-    NINFRT=600
-    ALLOCATE(TFRCLT(NFRCLT))
-    ALLOCATE(XSSUFL_T(NFRCLT));XSSUFL_T(:)=0.
-    ALLOCATE(XSSVFL_T(NFRCLT));XSSVFL_T(:)=0.
-    ALLOCATE(XSSTFL_T(NFRCLT));XSSTFL_T(:)=0.
-    ALLOCATE(XSSOLA_T(NFRCLT));XSSOLA_T(:)=0.
-    ! on passe en unités SI, signe, etc pour le modele ocean
-    !  W/m2 => SI :  /(CP_mer * rho_mer)
-    ! a revoir dans tt le code pour mettre de svaleurs plus exactes
-    DO JKT=1,NFRCLT
-      TFRCLT(JKT)= ZFRCLT(JKT)
-      XSSUFL_T(JKT)=ZSSUFL_T(JKT)/XRH00OCEAN
-      XSSVFL_T(JKT)=ZSSVFL_T(JKT)/XRH00OCEAN
-      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(3900.*XRH00OCEAN)
-      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(3900.*XRH00OCEAN)
-    END DO   
-    DEALLOCATE(ZFRCLT)
-    DEALLOCATE(ZSSUFL_T)
-    DEALLOCATE(ZSSVFL_T)
-    DEALLOCATE(ZSSTFL_T)
-    DEALLOCATE(ZSSOLA_T)
-    DEALLOCATE(ZOC_LE)    
-    DEALLOCATE(ZOC_H)    
-    DEALLOCATE(ZOC_SW_DOWN)    
-    DEALLOCATE(ZOC_SW_UP)    
-    DEALLOCATE(ZOC_LW_DOWN)    
-    DEALLOCATE(ZOC_LW_UP)    
-    DEALLOCATE(ZOC_TAUX)
-    DEALLOCATE(ZOC_TAUY)
-    ! END OCEAN STANDARD
-!
-!
-!*       2.1  ATMOSPHERIC STANDARD case : ZGROUND, PGROUND, TGROUND, TDGROUND
-!                               (Pressure, dd, ff) , 
-!                               (Pressure, T, Td)
-!
-  CASE ('STANDARD')
-    
-    READ(ILUPRE,*) ZZGROUND                 ! Read data at ground level
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTGROUND
-    READ(ILUPRE,*) ZTDGROUND
-!
-    READ(ILUPRE,*) ILEVELU               ! Read number of wind levels
-    ALLOCATE(ZPRESSU(ILEVELU))           ! Allocate memory for arrays to be read
-    ALLOCATE(ZDD(ILEVELU),ZFF(ILEVELU))  
-    ALLOCATE(ZHEIGHTU(ILEVELU))          ! Allocate memory for needed 
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))    !  arrays
-    ALLOCATE(ZTHVU(ILEVELU))             ! Allocate memory for intermediate
-                                         !  arrays 
-!
-    DO JKU = 1,ILEVELU                   ! Read data at wind levels
-      READ(ILUPRE,*) ZPRESSU(JKU),ZDD(JKU),ZFF(JKU)  
-    END DO  
-!
-    READ(ILUPRE,*) ILEVELM           ! Read number of mass levels
-                                     ! including the ground level
-    ALLOCATE(ZPRESSM(ILEVELM))     ! Allocate memory for arrays to be read
-    ALLOCATE(ZT(ILEVELM))                                   
-    ALLOCATE(ZTD(ILEVELM))                                  
-    ALLOCATE(ZHEIGHTM(ILEVELM))    ! Allocate memory for needed 
-    ALLOCATE(ZTHV(ILEVELM))        !  arrays
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZTV(ILEVELM))         ! Allocate memory for intermediate arrays
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))                                              
-!
-!   
-    DO JKM= 2,ILEVELM                ! Read data at mass levels
-      READ(ILUPRE,*) ZPRESSM(JKM),ZT(JKM),ZTD(JKM)
-    END DO
-    ZPRESSM(1)=ZPGROUND                 ! Mass level 1 is at the ground
-    ZT(1)=ZTGROUND
-    ZTD(1)=ZTDGROUND 
-!   
-!     recover the North-South and West-East wind components
-    ZU(:) = ZFF(:)*COS(ZRADSDG*(270.-ZDD(:)) )              
-    ZV(:) = ZFF(:)*SIN(ZRADSDG*(270.-ZDD(:)) )
-!
-!     compute vapor mixing ratio 
-    ZMR(:)  = SM_FOES(ZTD(:))                            &      
-            / ( (ZPRESSM(:) - SM_FOES(ZTD(:))) * ZRVSRD )       
-! 
-!     compute Tv
-    ZTV(:) = ZT(:) * (1. + ZRVSRD * ZMR(:))/(1.+ZMR(:))         
-!
-!     compute thetav
-    ZTHV(:) = ZTV(:) * (XP00/ ZPRESSM(:)) **(ZRDSCPD)         
-!
-!     compute height at the mass levels of the RS
-    ZHEIGHTM(:) = HEIGHT_PRESS(ZPRESSM,ZTHV,ZPGROUND,ZTHV(1),ZZGROUND) 
-!
-!     compute thetav and height at the wind levels of the RS
-    ZTHVU(:) = THETAVPU_THETAVPM(ZPRESSM,ZPRESSU,ZTHV)        
-    ZHEIGHTU(:) = HEIGHT_PRESS(ZPRESSU,ZTHVU,ZPGROUND,ZTHV(1),ZZGROUND)
-!
-!   Compute Thetal and Rt
-    ZRT(:)=ZMR(:)
-    ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))
-!
-!*       2.2  PUVTHVMR case : zGROUND, PGROUND, ThvGROUND, RGROUND
-!                               (Pressure, U, V) , 
-!                               (Pressure, THv, R)
-!
-  CASE ('PUVTHVMR') 
-!  
-!     Read data at ground level      
-    READ(ILUPRE,*) ZZGROUND                       
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTHVGROUND
-    READ(ILUPRE,*) ZMRGROUND
-!
-!     Read number of wind levels
-    READ(ILUPRE,*) ILEVELU  
-! 
-!     Allocate the required memory               
-    ALLOCATE(ZPRESSU(ILEVELU))              
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))    
-    ALLOCATE(ZHEIGHTU(ILEVELU))             
-    ALLOCATE(ZTHVU(ILEVELU))                
-!
-!     Read the data at each wind level of the RS   
-    DO JKU =1,ILEVELU
-      READ(ILUPRE,*) ZPRESSU(JKU),ZU(JKU),ZV(JKU)   
-    END DO
-! 
-!     Read number of mass levels
-    READ(ILUPRE,*) ILEVELM
-!
-!     Allocate the required memory     
-    ALLOCATE(ZPRESSM(ILEVELM))          
-    ALLOCATE(ZHEIGHTM(ILEVELM))
-    ALLOCATE(ZTHV(ILEVELM))
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))
-!   
-!     Read the data at each mass level of the RS   
-    DO JKM = 2,ILEVELM
-      READ(ILUPRE,*) ZPRESSM(JKM),ZTHV(JKM),ZMR(JKM)
-    END DO
-!
-!     Complete the mass arrays with the ground informations read in EXPRE file
-    ZPRESSM(1) = ZPGROUND
-    ZTHV(1)    = ZTHVGROUND
-    ZMR(1)     = ZMRGROUND 
-!
-!     Compute height of the mass levels of the RS
-    ZHEIGHTM(:) = HEIGHT_PRESS(ZPRESSM,ZTHV,ZPGROUND,ZTHV(1),ZZGROUND) 
-!                                                                 
-!     Compute thetav and heigth at the wind levels of the RS 
-    ZTHVU(:) = THETAVPU_THETAVPM(ZPRESSM,ZPRESSU,ZTHV)         
-    ZHEIGHTU(:) = HEIGHT_PRESS(ZPRESSU,ZTHVU,ZPGROUND,ZTHV(1),ZZGROUND)
-!
-! on interpole thetal(=theta quand il n'y a pas d'eau liquide) et r total
-    ZRT(:)=ZMR(:)
-    ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))
-!
-!*       2.3  PUVTHVHU case :  zGROUND, PGROUND, ThvGROUND, HuGROUND
-!                               (Pressure, U, V) , 
-!                               (Pressure, THv, Hu)
-!
-  CASE ('PUVTHVHU')
-! 
-!     Read data at ground level      
-    READ(ILUPRE,*) ZZGROUND                
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTHVGROUND
-    READ(ILUPRE,*) ZHUGROUND
-!
-!     Read number of wind levels
-    READ(ILUPRE,*) ILEVELU
-!
-!     Allocate the required memory     
-    ALLOCATE(ZPRESSU(ILEVELU))             
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))
-    ALLOCATE(ZHEIGHTU(ILEVELU))            
-    ALLOCATE(ZTHVU(ILEVELU))               
-!                                           
-!     Read the data at each wind level of the RS   
-    DO JKU =1,ILEVELU
-      READ(ILUPRE,*) ZPRESSU(JKU),ZU(JKU),ZV(JKU)   
-    END DO
-! 
-!     Read number of mass levels
-    READ(ILUPRE,*) ILEVELM
-!
-!     Allocate the required memory  
-    ALLOCATE(ZPRESSM(ILEVELM))           
-    ALLOCATE(ZTHV(ILEVELM))
-    ALLOCATE(ZHU(ILEVELM))
-    ALLOCATE(ZHEIGHTM(ILEVELM))          
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZTV(ILEVELM))     
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))
-!   
-!     Read the data at each mass level of the RS   
-    DO JKM = 2,ILEVELM
-      READ(ILUPRE,*) ZPRESSM(JKM),ZTHV(JKM),ZHU(JKM)
-    END DO
-!
-!     Complete the mass arrays with the ground informations read in EXPRE file
-    ZPRESSM(1) = ZPGROUND                    ! Mass level 1 is at the ground
-    ZTHV(1)    = ZTHVGROUND
-    ZHU(1)     = ZHUGROUND
-! 
-!     Compute Tv
-    ZTV(:)=ZTHV(:) * (ZPRESSM(:) / XP00) ** ZRDSCPD  
-!
-!     Compte mixing ratio      
-    ZMR(:)=SM_PMR_HU(ZPRESSM(:),ZTV(:),ZHU(:),SPREAD(ZMR(:),2,1))     
-!                                                          
-!     Compute height of the mass levels of the RS
-    ZHEIGHTM(:) = HEIGHT_PRESS(ZPRESSM,ZTHV,ZPGROUND,ZTHV(1),ZZGROUND)
-!                                                                 
-!     Compute thetav and height of the wind levels of the RS                                                                
-    ZTHVU(:) = THETAVPU_THETAVPM(ZPRESSM,ZPRESSU,ZTHV)   
-    ZHEIGHTU(:) = HEIGHT_PRESS(ZPRESSU,ZTHVU,ZPGROUND,ZTHV(1),ZZGROUND)
-! 
-! on interpole thetal(=theta quand il n'y a pas d'eau liquide) et r total
-    ZRT(:)=ZMR(:)
-    ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))
-!
-!*       2.4  ZUVTHVHU case :  zGROUND, PGROUND, ThvGROUND, HuGROUND
-!                               (height, U, V) , 
-!                               (height, THv, Hu)
-!
-  CASE ('ZUVTHVHU')
-!     Read data at ground level      
-    READ(ILUPRE,*) ZZGROUND                
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTHVGROUND
-    READ(ILUPRE,*) ZHUGROUND
-!
-!     Read number of wind levels
-    READ(ILUPRE,*) ILEVELU
-!
-!     Allocate the required memory 
-    ALLOCATE(ZPRESSU(ILEVELU))
-    ALLOCATE(ZHEIGHTU(ILEVELU))           
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))
-!
-!
-!     Read the data at each wind level of the RS   
-    DO JKU = 1,ILEVELU
-      READ(ILUPRE,*) ZHEIGHTU(JKU),ZU(JKU),ZV(JKU)  
-    END DO
-! 
-!     Read number of mass levels
-    READ(ILUPRE,*) ILEVELM
-!
-!     Allocate the required memory 
-    ALLOCATE(ZHEIGHTM(ILEVELM))          
-    ALLOCATE(ZTHV(ILEVELM))
-    ALLOCATE(ZHU(ILEVELM))
-    ALLOCATE(ZMR(ILEVELM))               
-    ALLOCATE(ZPRESSM(ILEVELM))           
-    ALLOCATE(ZTV(ILEVELM))
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))    
-!   
-!     Read the data at each mass level of the RS
-    DO JKM = 2,ILEVELM
-      READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHV(JKM),ZHU(JKM)
-    END DO 
-!
-!     Complete the mass arrays with the ground informations read in EXPRE file
-    ZHEIGHTM(1) = ZZGROUND                   ! Mass level 1 is at the ground 
-    ZTHV(1)    = ZTHVGROUND
-    ZHU(1)     = ZHUGROUND
-!
-!     Compute Pressure at the mass levels of the RS
-    ZPRESSM= PRESS_HEIGHT(ZHEIGHTM,ZTHV,ZPGROUND,ZTHV(1),ZHEIGHTM(1)) 
-!                                                       
-!     Compute Tv and the mixing ratio at the mass levels of the RS
-    ZTV(:)=ZTHV(:) * (ZPRESSM(:) / XP00) ** ZRDSCPD   
-    ZMR(:)=SM_PMR_HU(ZPRESSM(:),ZTV(:),ZHU(:),SPREAD(ZMR(:),2,1)) 
-!
-! on interpole thetal(=theta quand il n'y a pas d'eau liquide) et r total
-    ZRT(:)=ZMR(:)
-    ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))
-!
-!
-!*       2.5  ZUVTHVMR case :  zGROUND, PGROUND, ThvGROUND, RGROUND
-!                               (height, U, V) , 
-!                               (height, THv, R)
-!
-!
-  CASE ('ZUVTHVMR')
-!     Read data at ground level      
-    READ(ILUPRE,*) ZZGROUND
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTHVGROUND
-    READ(ILUPRE,*) ZMRGROUND
-!
-!     Read number of wind levels
-    READ(ILUPRE,*) ILEVELU
-!
-!     Allocate the required memory 
-    ALLOCATE(ZHEIGHTU(ILEVELU))         
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))
-!
-!     Read the data at each wind level of the RS
-    DO JKU = 1,ILEVELU
-      READ(ILUPRE,*) ZHEIGHTU(JKU),ZU(JKU),ZV(JKU)  
-    END DO
-! 
-!     Read number of mass levels
-    READ(ILUPRE,*) ILEVELM
-!
-!     Allocate the required memory 
-    ALLOCATE(ZHEIGHTM(ILEVELM))           
-    ALLOCATE(ZTHV(ILEVELM))
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))    
-!
-!     Read the data at each mass level of the RS
-    DO JKM=2,ILEVELM    
-      READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHV(JKM),ZMR(JKM) 
-    END DO
-!
-!     Complete the mass arrays with the ground informations read in EXPRE file
-    ZHEIGHTM(1)= ZZGROUND                      ! Mass level 1 is at the ground
-    ZTHV(1)    = ZTHVGROUND
-    ZMR(1)     = ZMRGROUND
-! on interpole thetal(=theta quand il n'y a pas d'eau liquide) et r total
-    ZRT(:)=ZMR(:)
-    ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))    
-!
-!
-!*       2.6  PUVTHDMR case : zGROUND, PGROUND, ThdGROUND, RGROUND
-!                               (Pressure, U, V) , 
-!                               (Pressure, THd, R)
-!
-  CASE ('PUVTHDMR')
-!     Read data at ground level      
-    READ(ILUPRE,*) ZZGROUND               
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTHDGROUND
-    READ(ILUPRE,*) ZMRGROUND
-!
-!     Read number of wind levels
-    READ(ILUPRE,*) ILEVELU
-!
-!     Allocate the required memory 
-    ALLOCATE(ZPRESSU(ILEVELU))          
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))
-    ALLOCATE(ZTHVU(ILEVELU))
-    ALLOCATE(ZHEIGHTU(ILEVELU))         
-!
-!     Read the data at each wind level of the RS
-    DO JKU =1,ILEVELU    
-      READ(ILUPRE,*) ZPRESSU(JKU),ZU(JKU),ZV(JKU)
-    END DO
-!
-!     Read number of mass levels 
-    READ(ILUPRE,*) ILEVELM
-!
-!     Allocate the required memory 
-    ALLOCATE(ZPRESSM(ILEVELM))         
-    ALLOCATE(ZTHD(ILEVELM))
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZMRC(ILEVELM))
-    ZMRC=0
-    ALLOCATE(ZMRI(ILEVELM))
-    ZMRI=0
-    ALLOCATE(ZHEIGHTM(ILEVELM))        
-    ALLOCATE(ZTHV(ILEVELM))
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))     
-!
-!     Read the data at each mass level of the RS
-    DO JKM=2,ILEVELM
-      IF(LUSERI) THEN
-        READ(ILUPRE,*) ZPRESSM(JKM),ZTHD(JKM),ZMR(JKM),ZMRC(JKM),ZMRI(JKM)
-      ELSEIF (GUSERC) THEN
-        READ(ILUPRE,*) ZPRESSM(JKM),ZTHD(JKM),ZMR(JKM),ZMRC(JKM)
-      ELSE
-        READ(ILUPRE,*) ZPRESSM(JKM),ZTHD(JKM),ZMR(JKM)
-      ENDIF
-    END DO
-!
-!     Complete the mass arrays with the ground informations read in EXPRE file
-    ZPRESSM(1) = ZPGROUND                     ! Mass level 1 is at  the ground
-    ZTHD(1)    = ZTHDGROUND
-    ZMR(1)     = ZMRGROUND 
-    IF(GUSERC) ZMRC(1) = ZMRC(2)
-    IF(LUSERI) ZMRI(1) = ZMRI(2)
-!
-!     Compute thetav at the mass levels of the RS
-      ZTHV(:) = ZTHD(:) * (1. + ZRVSRD *ZMR(:))/(1.+ZMR(:)+ZMRC(:)+ZMRI(:))
-!
-!     Compute the heights at the mass levels of the RS
-    ZHEIGHTM(:) = HEIGHT_PRESS(ZPRESSM,ZTHV,ZPGROUND,ZTHV(1),ZZGROUND)
-!
-!     Compute thetav and heights of the wind levels
-    ZTHVU(:) = THETAVPU_THETAVPM(ZPRESSM,ZPRESSU,ZTHV)   
-    ZHEIGHTU(:) = HEIGHT_PRESS(ZPRESSU,ZTHVU,ZPGROUND,ZTHV(1),ZZGROUND)
-!
-!    Compute Theta l and Rt  
-    IF (.NOT. GUSERC  .AND. .NOT. LUSERI) THEN
-      ZRT(:)=ZMR(:)
-      ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))   
-    ELSE
-       ALLOCATE(ZEXN(ILEVELM))         
-       ALLOCATE(ZT(ILEVELM))       
-       ALLOCATE(ZCPH(ILEVELM))        
-       ALLOCATE(ZLVOCPEXN(ILEVELM))        
-       ALLOCATE(ZLSOCPEXN(ILEVELM))               
-       ZRT(:)=ZMR(:)+ZMRI(:)+ZMRC(:)
-       ZEXN(:)=(ZPRESSM/XP00) ** (XRD/XCPD)
-       ZT(:)=ZTHV*(ZPRESSM(:)/XP00)**(ZRDSCPD)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))
-       ZCPH(:)=XCPD+ XCPV * ZMR(:)+ XCL *ZMRC(:)  + XCI * ZMRI(:)
-       ZLVOCPEXN(:) = (XLVTT + (XCPV-XCL) * (ZT(:)-XTT))/(ZCPH*ZEXN(:))
-       ZLSOCPEXN(:) = (XLSTT + (XCPV-XCI) * (ZT(:)-XTT))/(ZCPH*ZEXN(:))
-       ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))-ZLVOCPEXN(:)*ZMRC(:)-ZLSOCPEXN(:)*ZMRI(:)
-       DEALLOCATE(ZEXN)         
-       DEALLOCATE(ZT)       
-       DEALLOCATE(ZCPH)        
-       DEALLOCATE(ZLVOCPEXN)        
-       DEALLOCATE(ZLSOCPEXN)
-    ENDIF   
-!
-!
-!*       2.7  PUVTHDHU case :  zGROUND, PGROUND, ThdGROUND, HuGROUND
-!                               (Pressure, U, V) , 
-!                               (Pressure, THd, Hu)
-!
-  CASE ('PUVTHDHU')
-!     Read data at ground level      
-    READ(ILUPRE,*) ZZGROUND              
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTHDGROUND
-    READ(ILUPRE,*) ZHUGROUND
-!
-!     Read number of wind levels  
-    READ(ILUPRE,*) ILEVELU
-!
-!     Allocate the required memory
-    ALLOCATE(ZPRESSU(ILEVELU))         
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))
-    ALLOCATE(ZTHVU(ILEVELU))
-    ALLOCATE(ZHEIGHTU(ILEVELU))        
-!
-!     Read the data at each wind level of the RS
-    DO JKU = 1,ILEVELU
-      READ(ILUPRE,*) ZPRESSU(JKU),ZU(JKU),ZV(JKU)
-    END DO
-!
-!     Read number of mass levels 
-    READ(ILUPRE,*) ILEVELM
-!
-! Allocate the required memory
-    ALLOCATE(ZPRESSM(ILEVELM))          
-    ALLOCATE(ZTHD(ILEVELM))
-    ALLOCATE(ZHU(ILEVELM))
-    ALLOCATE(ZHEIGHTM(ILEVELM))          
-    ALLOCATE(ZTHV(ILEVELM))
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZT(ILEVELM)) 
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))                                          
-!   
-!     Read the data at each mass level of the RS
-    DO JKM =2,ILEVELM
-      READ(ILUPRE,*) ZPRESSM(JKM),ZTHD(JKM), ZHU(JKM)
-    END DO
-!     Complete the mass arrays with the ground informations read in EXPRE file
-    ZPRESSM(1) = ZPGROUND                     ! Mass level 1 is at the  ground
-    ZTHD(1)    = ZTHDGROUND
-    ZHU(1)     = ZHUGROUND
-! 
-    ZT(:) = ZTHD(:) * (ZPRESSM(:)/XP00)**ZRDSCPD  ! compute T and mixing ratio
-    ZMR(:) = ZRDSRV*SM_FOES(ZT(:))/((ZPRESSM(:)*100./ZHU(:)) -SM_FOES(ZT(:)))
-                         
-!     Compute thetav at the mass levels of the RS
-    ZTHV(:) = ZTHD(:)  * (1. + ZRVSRD *ZMR(:))/(1.+ZMR(:)) 
-!
-!     Compute height at mass levels
-    ZHEIGHTM(:) = HEIGHT_PRESS(ZPRESSM,ZTHV,ZPGROUND,ZTHV(1),ZZGROUND) 
-!
-!     Compute thetav and heights of the wind levels 
-    ZTHVU(:) = THETAVPU_THETAVPM(ZPRESSM,ZPRESSU,ZTHV) 
-    ZHEIGHTU(:) = HEIGHT_PRESS(ZPRESSU,ZTHVU,ZPGROUND,ZTHV(1),ZZGROUND)   
-!
-!   Compute thetal and Rt
-    ZRT(:)=ZMR(:)
-    ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))      
-!
-!*       2.8  ZUVTHDMR case :  zGROUND, PGROUND, ThdGROUND, RGROUND
-!                               (height, U, V) , 
-!                               (height, THd, R)
-!
-  CASE ('ZUVTHDMR')
-! Read data at ground level
-    READ(ILUPRE,*) ZZGROUND                  
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTHDGROUND
-    READ(ILUPRE,*) ZMRGROUND
-!
-!     Read number of wind levels  
-    READ(ILUPRE,*) ILEVELU
-!
-!   Allocate required memory 
-    ALLOCATE(ZHEIGHTU(ILEVELU))           
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))
-!
-!     Read the data at each wind level of the RS
-    DO JKU = 1,ILEVELU
-      READ(ILUPRE,*) ZHEIGHTU(JKU),ZU(JKU),ZV(JKU)
-    END DO
-! 
-!     Read number of mass levels  
-     READ(ILUPRE,*) ILEVELM
-!
-!   Allocate required memory 
-    ALLOCATE(ZHEIGHTM(ILEVELM))           
-    ALLOCATE(ZTHD(ILEVELM))
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZTHV(ILEVELM)) 
-    ALLOCATE(ZMRC(ILEVELM))
-    ZMRC=0
-    ALLOCATE(ZMRI(ILEVELM))
-    ZMRI=0
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))
-!
-!     Read the data at each mass level of the RS
-    DO JKM= 2,ILEVELM
-      IF(LUSERI) THEN
-        READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHD(JKM),ZMR(JKM),ZMRC(JKM),ZMRI(JKM)
-      ELSEIF (GUSERC) THEN
-        READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHD(JKM),ZMR(JKM),ZMRC(JKM)
-      ELSE
-        READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHD(JKM),ZMR(JKM)
-      ENDIF
-    END DO
-!     Complete the mass arrays with the ground informations read in EXPRE file
-    ZHEIGHTM(1) = ZZGROUND                     ! Mass level 1 is at ground
-    ZTHD(1)     = ZTHDGROUND
-    ZMR(1)      = ZMRGROUND
-    IF(GUSERC) ZMRC(1) = ZMRC(2)
-    IF(LUSERI) ZMRI(1) = ZMRI(2)
-!     Compute thetav at the mass levels of the RS
-    IF(LUSERI) THEN
-      ZTHV(:) = ZTHD(:) * (1. + ZRVSRD *ZMR(:))/(1.+ZMR(:)+ZMRC(:)+ZMRI(:))
-    ELSEIF (GUSERC) THEN
-      ZTHV(:) = ZTHD(:) * (1. + ZRVSRD *ZMR(:))/(1.+ZMR(:)+ZMRC(:))
-    ELSE
-      ZTHV(:) = ZTHD(:) * (1. + ZRVSRD *ZMR(:))/(1.+ZMR(:))
-    ENDIF    
-!    
-!    Compute Theta l and Rt  
-    IF (.NOT. GUSERC  .AND. .NOT. LUSERI) THEN
-      ZRT(:)=ZMR(:)
-      ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))   
-    ELSE
-       ALLOCATE(ZEXN(ILEVELM))  
-       ALLOCATE(ZEXNFLUX(ILEVELM))        
-       ALLOCATE(ZT(ILEVELM))       
-       ALLOCATE(ZCPH(ILEVELM))        
-       ALLOCATE(ZLVOCPEXN(ILEVELM))        
-       ALLOCATE(ZLSOCPEXN(ILEVELM))  
-       ZRT(:)=ZMR(:)+ZMRI(:)+ZMRC(:)
-       ZEXNSURF=(ZPGROUND/XP00) ** (XRD/XCPD)
-       CALL COMPUTE_EXNER_FROM_GROUND(ZTHV,ZHEIGHTM,ZEXNSURF,ZEXNFLUX,ZEXN)
-       ZT(:)=ZTHV*ZEXN(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))
-       ZCPH(:)=XCPD+ XCPV * ZMR(:)+ XCL *ZMRC(:)  + XCI * ZMRI(:)
-       ZLVOCPEXN(:) = (XLVTT + (XCPV-XCL) * (ZT(:)-XTT))/(ZCPH*ZEXN(:))
-       ZLSOCPEXN(:) = (XLSTT + (XCPV-XCI) * (ZT(:)-XTT))/(ZCPH*ZEXN(:))
-       ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))-ZLVOCPEXN(:)*ZMRC(:)-ZLSOCPEXN(:)*ZMRI(:)
-       DEALLOCATE(ZEXN)         
-       DEALLOCATE(ZEXNFLUX)         
-       DEALLOCATE(ZT)       
-       DEALLOCATE(ZCPH)        
-       DEALLOCATE(ZLVOCPEXN)        
-       DEALLOCATE(ZLSOCPEXN)
-    ENDIF  
-!
-! 2.9 ZUVTHLMR case : zGROUND, PGROUND, ThdGROUND, RGROUND
-!                               (height, U, V)
-!                               (height, THL, Rt)
-
-!
-  CASE ('ZUVTHLMR')
-! Read data at ground level
-    READ(ILUPRE,*) ZZGROUND                  
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTHLGROUND
-    READ(ILUPRE,*) ZMRGROUND
-!
-!   Read number of wind levels  
-    READ(ILUPRE,*) ILEVELU
-!
-!   Allocate required memory 
-    ALLOCATE(ZHEIGHTU(ILEVELU))           
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))
-!
-!   Read the data at each wind level of the RS
-    DO JKU = 1,ILEVELU
-      READ(ILUPRE,*) ZHEIGHTU(JKU),ZU(JKU),ZV(JKU)
-    END DO
-! 
-!   Read number of mass levels  
-    READ(ILUPRE,*) ILEVELM
-!
-!   Allocate required memory 
-    ALLOCATE(ZHEIGHTM(ILEVELM))           
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZTH(ILEVELM))
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZTHV(ILEVELM)) 
-    ALLOCATE(ZMRC(ILEVELM))
-    ZMRC=0
-    ALLOCATE(ZMRI(ILEVELM))
-    ZMRI=0    
-    ALLOCATE(ZRT(ILEVELM))
-!
-!   Read the data at each mass level of the RS
-    DO JKM= 2,ILEVELM
-!     IF(LUSERI) THEN
-!       READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHL(JKM),ZMR(JKM),ZMRC(JKM),ZMRI(JKM)
-!     ELSEIF (GUSERC) THEN
-      IF (GUSERC) THEN
-        READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHL(JKM),ZMR(JKM),ZMRC(JKM)
-      ELSE
-        READ(ILUPRE,*) ZHEIGHTM(JKM),ZTHL(JKM),ZMR(JKM)
-      ENDIF
-    END DO
-!   Complete the mass arrays with the ground informations read in EXPRE file
-    ZHEIGHTM(1) = ZZGROUND                     ! Mass level 1 is at ground
-    ZTHL(1)     = ZTHLGROUND
-    ZMR(1)      = ZMRGROUND
-    IF(GUSERC) ZMRC(1) = ZMRC(2)
-!   IF(LUSERI) ZMRI(1) = ZMRI(2)
-!
-!   Compute Rt
-    ZRT(:)=ZMR+ZMRC+ZMRI
-!
-!*       2.10  PUVTHU case :  zGROUND, PGROUND, TempGROUND, HuGROUND
-!                               (Pressure, U, V) , 
-!                               (Pressure, Temp, Hu)
-!
-  CASE ('PUVTHU')
-!     Read data at ground level      
-    READ(ILUPRE,*) ZZGROUND              
-    READ(ILUPRE,*) ZPGROUND
-    READ(ILUPRE,*) ZTGROUND
-    READ(ILUPRE,*) ZHUGROUND
-!
-!     Read number of wind levels  
-    READ(ILUPRE,*) ILEVELU
-!
-!     Allocate the required memory
-    ALLOCATE(ZPRESSU(ILEVELU))         
-    ALLOCATE(ZU(ILEVELU),ZV(ILEVELU))
-    ALLOCATE(ZTHVU(ILEVELU))
-    ALLOCATE(ZHEIGHTU(ILEVELU))        
-!
-!     Read the data at each wind level of the RS
-    DO JKU = 1,ILEVELU
-      READ(ILUPRE,*) ZPRESSU(JKU),ZU(JKU),ZV(JKU)
-    END DO
-!
-!     Read number of mass levels 
-    READ(ILUPRE,*) ILEVELM
-!
-! Allocate the required memory
-    ALLOCATE(ZPRESSM(ILEVELM))          
-    ALLOCATE(ZTHD(ILEVELM))
-    ALLOCATE(ZHU(ILEVELM))
-    ALLOCATE(ZHEIGHTM(ILEVELM))          
-    ALLOCATE(ZTHV(ILEVELM))
-    ALLOCATE(ZMR(ILEVELM))
-    ALLOCATE(ZT(ILEVELM))  
-    ALLOCATE(ZTHL(ILEVELM))
-    ALLOCATE(ZRT(ILEVELM))
-
-!   
-!     Read the data at each mass level of the RS
-    DO JKM =2,ILEVELM
-      READ(ILUPRE,*) ZPRESSM(JKM),ZT(JKM), ZHU(JKM)
-    END DO
-!     Complete the mass arrays with the ground informations read in EXPRE file
-    ZPRESSM(1) = ZPGROUND                     ! Mass level 1 is at the  ground
-    ZT(1)    = ZTGROUND
-    ZHU(1)     = ZHUGROUND
-! 
-    ZTHD(:) = ZT(:) / (ZPRESSM(:)/XP00)**ZRDSCPD  ! compute THD and mixing ratio
-    ZMR(:) = ZRDSRV*SM_FOES(ZT(:))/((ZPRESSM(:)*100./ZHU(:)) -SM_FOES(ZT(:)))
-!     Compute thetav at the mass levels of the RS
-    ZTHV(:) = ZTHD(:)  * (1. + ZRVSRD *ZMR(:))/(1.+ZMR(:)) 
-!
-!     Compute height at mass levels
-    ZHEIGHTM(:) = HEIGHT_PRESS(ZPRESSM,ZTHV,ZPGROUND,ZTHV(1),ZZGROUND) 
-!
-!     Compute thetav and heights of the wind levels 
-    ZTHVU(:) = THETAVPU_THETAVPM(ZPRESSM,ZPRESSU,ZTHV) 
-    ZHEIGHTU(:) = HEIGHT_PRESS(ZPRESSU,ZTHVU,ZPGROUND,ZTHV(1),ZZGROUND)   
-!
-! on interpole thetal(=theta quand il n'y a pas d'eau liquide) et r total
-     ZRT(:)=ZMR(:)
-     ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:))
-  CASE DEFAULT
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU','data type YKIND='//TRIM(YKIND)//' in PREFILE unknown')
-END SELECT
-!
-!-------------------------------------------------------------------------------
-!
-!*	 3.     INTERPOLATE ON THE  VERTICAL MIXED MODEL GRID 
-!	        ---------------------------------------------------------
-!
-!
-! 
-IKU=SIZE(XZHAT)
-!
-!*       3.1    Compute mixed grid
-! 
-IF (PRESENT(PCORIOZ)) THEN 
-! LGEOSBAL=T (no shift allowed, MNH grid without ororgraphy)
-  ZZS_LS(:,:)=0
-ELSE
-  IF (OSHIFT) THEN
-    ZZS_LS(:,:)=ZZGROUND
-  ELSE
-    ZZS_LS(:,:)=0
-  ENDIF
-ENDIF
-CALL VERT_COORD(LSLEVE,ZZS_LS,ZZS_LS,XLEN1,XLEN2,XZHAT,ZZFLUX_MX)
-ZZMASS_MX(:,:,:)=MZF(ZZFLUX_MX)
-ZZMASS_MX(:,:,IKU)=1.5*ZZFLUX_MX(:,:,IKU)-0.5*ZZFLUX_MX(:,:,IKU-1)
-!
-!*        3.2  Interpolate and extrapolate U and V on w- mixed grid levels
-!
-!* vertical grid at initialization profile location
-GPROFILE_IN_PROC=(KILOC+JPHEXT-IXOR_ll+1>=IIB .AND. KILOC+JPHEXT-IXOR_ll+1<=IIE) &
-         & .AND. (KJLOC+JPHEXT-IYOR_ll+1>=IJB .AND. KJLOC+JPHEXT-IYOR_ll+1<=IJE)
-!
-IF (GPROFILE_IN_PROC) THEN
-  ZZMASS_PROFILE(:) = ZZMASS_MX(KILOC+JPHEXT-IXOR_ll+1,KJLOC+JPHEXT-IYOR_ll+1,:)
-  ZZFLUX_PROFILE(:) = ZZFLUX_MX(KILOC+JPHEXT-IXOR_ll+1,KJLOC+JPHEXT-IYOR_ll+1,:)
-ELSE
-  ZZMASS_PROFILE(:) = 0.
-  ZZFLUX_PROFILE(:) = 0.
-END IF
-DO JK = 1,IKU
-  CALL REDUCESUM_ll(ZZMASS_PROFILE(JK), IINFO_ll)
-  CALL REDUCESUM_ll(ZZFLUX_PROFILE(JK), IINFO_ll)
-END DO
-
-! interpolation of U and V
-DO JK = 1,IKU
-  IF (ZZFLUX_PROFILE(JK) <= ZHEIGHTU(1)) THEN      ! extrapolation below the first level
-          ZDZSDH  = (ZZFLUX_PROFILE(JK) - ZHEIGHTU(1)) / (ZHEIGHTU(2) - ZHEIGHTU(1))
-          ZUW(JK) = ZU(1) + (ZU(2) - ZU(1)) * ZDZSDH
-          ZVW(JK) = ZV(1) + (ZV(2) - ZV(1)) * ZDZSDH 
-  ELSE IF (ZZFLUX_PROFILE(JK) > ZHEIGHTU(ILEVELU) ) THEN  ! extrapolation above the last
-    ZDZSDH  = (ZZFLUX_PROFILE(JK) - ZHEIGHTU(ILEVELU))                   &   ! level
-            / (ZHEIGHTU(ILEVELU) - ZHEIGHTU(ILEVELU-1))
-    ZUW(JK) = ZU(ILEVELU) + (ZU(ILEVELU) -ZU(ILEVELU -1)) * ZDZSDH
-    ZVW(JK) = ZV(ILEVELU) + (ZV(ILEVELU) -ZV(ILEVELU -1)) * ZDZSDH
-  ELSE                       ! interpolation between the first and last levels
-    DO JKLEV = 1,ILEVELU-1
-      IF ( (ZZFLUX_PROFILE(JK) > ZHEIGHTU(JKLEV)).AND.                  &
-           (ZZFLUX_PROFILE(JK) <= ZHEIGHTU(JKLEV+1)) )THEN 
-        ZDZ1SDH = (ZZFLUX_PROFILE(JK) - ZHEIGHTU(JKLEV))                &
-              / (ZHEIGHTU(JKLEV+1)-ZHEIGHTU(JKLEV)) 
-        ZDZ2SDH = (ZHEIGHTU(JKLEV+1) - ZZFLUX_PROFILE(JK) )             &
-              / (ZHEIGHTU(JKLEV+1)-ZHEIGHTU(JKLEV)) 
-        ZUW(JK) = (ZU(JKLEV) * ZDZ2SDH) + (ZU(JKLEV+1) *ZDZ1SDH)
-        ZVW(JK) = (ZV(JKLEV) * ZDZ2SDH) + (ZV(JKLEV+1) *ZDZ1SDH)
-      END IF        
-    END DO
-  END IF
-END DO
-!
-!*       3.3    Interpolate and extrapolate Thetav and r on  mass mixed grid levels
-!
-ZMRCM=0
-ZMRIM=0
-DO JK = 1,IKU
-  IF (ZZMASS_PROFILE(JK) <= ZHEIGHTM(1)) THEN    ! extrapolation below the first level
-    ZDZSDH  = (ZZMASS_PROFILE(JK) - ZHEIGHTM(1)) / (ZHEIGHTM(2) - ZHEIGHTM(1))
-    ZTHLM(JK) = ZTHL(1) + (ZTHL(2) - ZTHL(1)) * ZDZSDH
-    ZMRM(JK)  = ZRT(1) + (ZRT(2) - ZRT(1)) * ZDZSDH 
-    IF (GUSERC) ZMRCM(JK)  = ZMRC(1) + (ZMRC(2) - ZMRC(1)) * ZDZSDH 
-    IF (LUSERI) ZMRIM(JK)  = ZMRI(1) + (ZMRI(2) - ZMRI(1)) * ZDZSDH 
-  ELSE IF (ZZMASS_PROFILE(JK) > ZHEIGHTM(ILEVELM) ) THEN  ! extrapolation above the last
-    ZDZSDH  = (ZZMASS_PROFILE(JK) - ZHEIGHTM(ILEVELM))                   &  ! level
-            / (ZHEIGHTM(ILEVELM) - ZHEIGHTM(ILEVELM-1))
-    ZTHLM(JK) = ZTHL(ILEVELM) + (ZTHL(ILEVELM) -ZTHL(ILEVELM -1)) * ZDZSDH
-    ZMRM(JK) = ZRT(ILEVELM) + (ZRT(ILEVELM) -ZRT(ILEVELM -1)) * ZDZSDH
-    IF (GUSERC) ZMRCM(JK) = ZMRC(ILEVELM) + (ZMRC(ILEVELM) -ZMRC(ILEVELM -1)) * ZDZSDH
-    IF (LUSERI) ZMRIM(JK) = ZMRI(ILEVELM) + (ZMRI(ILEVELM) -ZMRI(ILEVELM -1)) * ZDZSDH
-  ELSE  ! interpolation between the first and last levels
-    DO JKLEV = 1,ILEVELM-1
-      IF ( (ZZMASS_PROFILE(JK) > ZHEIGHTM(JKLEV)).AND.                  &
-           (ZZMASS_PROFILE(JK) <= ZHEIGHTM(JKLEV+1)) )THEN 
-        ZDZ1SDH = (ZZMASS_PROFILE(JK) - ZHEIGHTM(JKLEV))                 &
-              / (ZHEIGHTM(JKLEV+1)-ZHEIGHTM(JKLEV)) 
-        ZDZ2SDH = (ZHEIGHTM(JKLEV+1) - ZZMASS_PROFILE(JK) )              &
-              / (ZHEIGHTM(JKLEV+1)-ZHEIGHTM(JKLEV)) 
-        ZTHLM(JK) = (ZTHL(JKLEV) * ZDZ2SDH) + (ZTHL(JKLEV+1) *ZDZ1SDH)
-        ZMRM(JK)  = (ZRT(JKLEV) * ZDZ2SDH) + (ZRT(JKLEV+1) *ZDZ1SDH)
-        IF (GUSERC) ZMRCM(JK)  = (ZMRC(JKLEV) * ZDZ2SDH) + (ZMRC(JKLEV+1) *ZDZ1SDH)
-        IF (LUSERI) ZMRIM(JK)  = (ZMRI(JKLEV) * ZDZ2SDH) + (ZMRI(JKLEV+1) *ZDZ1SDH)
-      END IF 
-    END DO
-  END IF
-END DO
-!
-! Compute thetaV rv ri and Rc with adjustement
-ALLOCATE(ZEXNFLUX(IKU))
-ALLOCATE(ZEXNMASS(IKU))
-ALLOCATE(ZPRESS(IKU))
-ALLOCATE(ZPREFLUX(IKU))
-ALLOCATE(ZFRAC_ICE(IKU))
-ALLOCATE(ZRSATW(IKU))
-ALLOCATE(ZRSATI(IKU))
-ALLOCATE(ZMRT(IKU))
-ALLOCATE(ZBUF(IKU,16))
-ZMRT=ZMRM+ZMRCM+ZMRIM
-ZTHVM=ZTHLM
-!
-IF (LOCEAN) THEN
-  ZRHODM(:)=XRH00OCEAN*(1.-XALPHAOC*(ZTHLM(:) - XTH00OCEAN)&
-          +XBETAOC* (ZMRM(:)  - XSA00OCEAN))
-  ZPREFLUX(IKU)=ZPTOP
-  DO JK=IKU-1,2,-1
-    ZPREFLUX(JK) = ZPREFLUX(JK+1) + XG*ZRHODM(JK)*(ZZFLUX_PROFILE(JK+1)-ZZFLUX_PROFILE(JK))
-  END DO
-  ZPGROUND=ZPREFLUX(2)
-  WRITE(ILUOUT,FMT=*)'ZPGROUND i.e. Pressure at ocean domain bottom',ZPGROUND
-  ZTHM=ZTHVM
-ELSE
-! Atmospheric case   
-  ZEXNSURF=(ZPGROUND/XP00)**(XRD/XCPD)
-  DO JLOOP=1,20 ! loop for pression 
-    CALL COMPUTE_EXNER_FROM_GROUND(ZTHVM,ZZMASS_PROFILE(:),ZEXNSURF,ZEXNFLUX,ZEXNMASS)
-    ZPRESS(:)=XP00*(ZEXNMASS(:))**(XCPD/XRD)
-    CALL TH_R_FROM_THL_RT(CST,NEB,SIZE(ZPRESS,1),'T',ZFRAC_ICE,ZPRESS,ZTHLM,ZMRT,ZTHM,ZMRM,ZMRCM,ZMRIM, &
-                          ZRSATW, ZRSATI,OOCEAN=.FALSE.,&
-                          PBUF=ZBUF)
-     ZTHVM(:)=ZTHM(:)*(1.+XRV/XRD*ZMRM(:))/(1.+(ZMRM(:)+ZMRIM(:)+ZMRCM(:)))
-  ENDDO
-ENDIF
-!
-DEALLOCATE(ZEXNFLUX)
-DEALLOCATE(ZEXNMASS)
-DEALLOCATE(ZPRESS)
-DEALLOCATE(ZFRAC_ICE)
-DEALLOCATE(ZRSATW)
-DEALLOCATE(ZRSATI)       
-DEALLOCATE(ZMRT)
-DEALLOCATE(ZBUF)
-!-------------------------------------------------------------------------------
-!
-!* 4.     COMPUTE FIELDS ON THE MODEL GRID (WITH OROGRAPHY)
-!         -------------------------------------------------
-CALL SET_MASS(TPFILE,GPROFILE_IN_PROC, ZZFLUX_PROFILE,                      &
-              KILOC+JPHEXT,KJLOC+JPHEXT,ZZS_LS,ZZMASS_MX,ZZFLUX_MX,ZPGROUND,&
-              ZTHVM,ZMRM,ZUW,ZVW,OSHIFT,OBOUSS,PJ,HFUNU,HFUNV,              &
-              PMRCM=ZMRCM,PMRIM=ZMRIM,PCORIOZ=PCORIOZ)
-!
-DEALLOCATE(ZPREFLUX)
-DEALLOCATE(ZHEIGHTM)          
-DEALLOCATE(ZTHV)
-DEALLOCATE(ZMR)
-DEALLOCATE(ZTHL)
-!-------------------------------------------------------------------------------
-CONTAINS
-  SUBROUTINE CHECK( ISTATUS, YLOC )
-    INTEGER(KIND=CDFINT), INTENT(IN) :: ISTATUS
-    CHARACTER(LEN=*),     INTENT(IN) :: YLOC
-
-    IF( ISTATUS /= NF90_NOERR ) THEN
-      CALL PRINT_MSG( NVERB_ERROR, 'IO', 'SET_RSOU', 'error at ' // Trim( yloc) // ': ' // NF90_STRERROR( ISTATUS ) )
-    END IF
-  END SUBROUTINE check
-  !
-  INCLUDE "th_r_from_thl_rt.func.h"
-  INCLUDE "compute_frac_ice.func.h"
-  !
-END SUBROUTINE SET_RSOU
diff --git a/src/mesonh/ext/shallow_mf_pack.f90 b/src/mesonh/ext/shallow_mf_pack.f90
deleted file mode 100644
index ee2f7e2fb..000000000
--- a/src/mesonh/ext/shallow_mf_pack.f90
+++ /dev/null
@@ -1,383 +0,0 @@
-!MNH_LIC Copyright 2010-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_SHALLOW_MF_PACK
-!    ######################
-!
-INTERFACE
-!     #################################################################
-      SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI,                       &
-                OMF_FLX,TPFILE,PTIME_LES,                             &
-                PIMPL_MF, PTSTEP,                                     &
-                PDZZ, PZZ, PDX,PDY,                                   &
-                PRHODJ, PRHODREF,                                     &
-                PPABSM, PEXN,                                         &
-                PSFTH,PSFRV,                                          &
-                PTHM,PRM,PUM,PVM,PTKEM,PSVM,                          &
-                PRTHS,PRRS,PRUS,PRVS,PRSVS,                           &
-                PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF  )
-!     #################################################################
-!!
-use MODD_IO,        only: TFILEDATA
-use modd_precision, only: MNHTIME
-!
-!*               1.1  Declaration of Arguments
-!
-!
-INTEGER,                INTENT(IN)   :: KRR        ! number of moist var.
-INTEGER,                INTENT(IN)   :: KRRL       ! number of liquid water var.
-INTEGER,                INTENT(IN)   :: KRRI       ! number of ice water var.
-LOGICAL,                INTENT(IN)   :: OMF_FLX    ! switch to write the
-                                                   ! MF fluxes in the synchronous FM-file
-TYPE(TFILEDATA),        INTENT(IN)   :: TPFILE     ! Output file
-REAL(kind=MNHTIME),DIMENSION(2), INTENT(OUT)  :: PTIME_LES  ! time spent in LES computations
-REAL,                   INTENT(IN)   :: PIMPL_MF   ! degre of implicitness
-REAL,                   INTENT(IN)   :: PTSTEP     ! Dynamical timestep 
-
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PZZ         ! Height of flux point
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PDZZ        ! Metric coefficients
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PRHODJ      ! dry density * Grid size
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PRHODREF    ! dry density of the
-                                                     ! reference state
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PPABSM      ! Pressure at time t-1
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PEXN        ! Exner function at t-dt
-
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PSFTH,PSFRV ! normal surface fluxes of theta and Rv 
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PTHM        ! Theta at t-dt
-REAL, DIMENSION(:,:,:,:),INTENT(IN)::  PRM         ! water var. at t-dt
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PUM,PVM     ! wind components at t-dt
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PTKEM       ! tke at t-dt
-
-REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM      ! scalar variable a t-dt
-
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS,PRVS,PRTHS ! Meso-NH sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRRS 
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS            ! Scalar sources 
-REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PSIGMF,PRC_MF,PRI_MF,PCF_MF ! cloud info for the cloud scheme
-REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PFLXZTHVMF           ! Thermal production for TKE scheme
-!
-REAL, INTENT(IN) :: PDX,PDY ! Size of mesh in X/Y directions
-END SUBROUTINE SHALLOW_MF_PACK
-
-END INTERFACE
-!
-END MODULE MODI_SHALLOW_MF_PACK
-
-!     #################################################################
-      SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI,                       &
-                OMF_FLX,TPFILE,PTIME_LES,                             &
-                PIMPL_MF, PTSTEP,                                     &
-                PDZZ, PZZ, PDX,PDY,                                   &
-                PRHODJ, PRHODREF,                                     &
-                PPABSM, PEXN,                                         &
-                PSFTH,PSFRV,                                          &
-                PTHM,PRM,PUM,PVM,PTKEM,PSVM,                          &
-                PRTHS,PRRS,PRUS,PRVS,PRSVS,                           &
-                PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF  )
-!     #################################################################
-!!
-!!****  *SHALLOW_MF_PACK* - 
-!!       
-!!
-!!    PURPOSE
-!!    -------
-!!****  The purpose of this routine is
-!!
-!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!      
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!     REFERENCE
-!!     ---------
-!!
-!!
-!!     AUTHOR
-!!     ------
-!!      V.Masson 09/2010
-! --------------------------------------------------------------------------
-! Modifications:
-!  R. Honnert     07/2012: introduction of vertical wind for the height of the thermal
-!  M. Leriche     02/2017: avoid negative values for sv tendencies
-!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
-!  S. Riette      11/2016: support for CFRAC_ICE_SHALLOW_MF
-!  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
-!  P. Wautelet    02/2020: use the new data structures and subroutines for budgets
-! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST, ONLY: CST
-USE MODD_NEB, ONLY: NEB
-USE MODD_TURB_n, ONLY: TURBN
-USE MODD_CTURB,  ONLY: CSTURB
-USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALLN
-USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
-!
-USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
-!
-USE MODD_BUDGET,          ONLY: TBUDGETS,TBUCONF,lbudget_th,nbudget_th
-USE MODD_CONF
-USE MODD_IO,              ONLY: TFILEDATA
-USE modd_field,           ONLY: tfielddata, TYPEREAL
-USE MODD_NSV,             ONLY: XSVMIN, NSV_LGBEG, NSV_LGEND
-USE MODD_PARAMETERS
-USE MODD_PARAM_ICE,       ONLY: CFRAC_ICE_SHALLOW_MF
-USE MODD_PARAM_MFSHALL_n
-USE modd_precision,       ONLY: MNHTIME
-
-USE mode_budget,          ONLY: Budget_store_init, Budget_store_end, Budget_store_add
-USE MODE_IO_FIELD_WRITE,  ONLY: IO_Field_write
-
-USE MODI_DIAGNOS_LES_MF
-USE MODI_SHALLOW_MF
-USE MODI_SHUMAN
-!
-IMPLICIT NONE
-
-!*                    0.1  Declaration of Arguments
-!
-!
-!
-INTEGER,                INTENT(IN)   :: KRR        ! number of moist var.
-INTEGER,                INTENT(IN)   :: KRRL       ! number of liquid water var.
-INTEGER,                INTENT(IN)   :: KRRI       ! number of ice water var.
-LOGICAL,                INTENT(IN)   :: OMF_FLX    ! switch to write the
-                                                   ! MF fluxes in the synchronous FM-file
-TYPE(TFILEDATA),        INTENT(IN)   :: TPFILE     ! Output file
-REAL(kind=MNHTIME),DIMENSION(2), INTENT(OUT)  :: PTIME_LES  ! time spent in LES computations
-REAL,                   INTENT(IN)   :: PIMPL_MF   ! degre of implicitness
-REAL,                   INTENT(IN)   :: PTSTEP     ! Dynamical timestep 
-
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PZZ         ! Height of flux point
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PDZZ        ! Metric coefficients
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PRHODJ      ! dry density * Grid size
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PRHODREF    ! dry density of the
-                                                     ! reference state
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PPABSM      ! Pressure at time t-1
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PEXN        ! Exner function at t-dt
-
-REAL, DIMENSION(:,:),   INTENT(IN) ::  PSFTH,PSFRV ! normal surface fluxes of theta and Rv 
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PTHM        ! Theta at t-dt
-REAL, DIMENSION(:,:,:,:),INTENT(IN)::  PRM         ! water var. at t-dt
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PUM,PVM     ! wind components at t-dt
-REAL, DIMENSION(:,:,:), INTENT(IN) ::  PTKEM       ! tke at t-dt
-
-REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM        ! scalar variable a t-dt
-
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS,PRVS,PRTHS ! Meso-NH sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRRS 
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS            ! Scalar sources 
-REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PSIGMF,PRC_MF,PRI_MF,PCF_MF ! cloud info for the cloud scheme
-REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PFLXZTHVMF           ! Thermal production for TKE scheme
-!
-REAL, INTENT(IN) :: PDX,PDY ! Size of mesh in X/Y directions
-!                     0.2  Declaration of local variables
-!
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDUDT_TURB   ! tendency of U   by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDVDT_TURB   ! tendency of V   by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDTHLDT_TURB ! tendency of thl by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDRTDT_TURB  ! tendency of rt  by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PSVM,4)) ::  ZDSVDT_TURB  ! tendency of Sv  by turbulence only
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDUDT_MF   ! tendency of U   by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDVDT_MF   ! tendency of V   by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDTHLDT_MF ! tendency of thl by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDRTDT_MF  ! tendency of Rt by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3),SIZE(PSVM,4)) ::  ZDSVDT_MF  ! tendency of Sv by massflux scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZSIGMF,ZRC_MF,ZRI_MF,ZCF_MF ! cloud info for the cloud scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZTHVMF           ! Thermal production for TKE scheme
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZTHMF
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZRMF
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZUMF
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFLXZVMF
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTHL_UP   ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRT_UP    ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRV_UP    ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZU_UP     ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZV_UP     ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRC_UP    ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZRI_UP    ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZTHV_UP   ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZW_UP     ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZFRAC_UP  ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZEMF      ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZDETR     ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZENTR     ! updraft characteristics
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZUMM     ! wind on mass point
-REAL, DIMENSION(SIZE(PTHM,1),SIZE(PTHM,2),SIZE(PTHM,3)) ::  ZVMM     ! wind on mass point
-!
-INTEGER,DIMENSION(SIZE(PTHM,1)*SIZE(PTHM,2))     :: IKLCL,IKETL,IKCTL ! level of LCL,ETL and CTL
-INTEGER :: IIU, IJU, IKU, IKB, IKE, IRR, ISV  
-INTEGER :: JK,JRR,JSV                          ! Loop counters
-
-
-LOGICAL :: LSTATNW  !  switch for HARMONIE-AROME turb physics option
-                    ! TODO: linked with modd_turbn + init at default_desfmn 
-
-TYPE(TFIELDDATA) :: TZFIELD
-TYPE(DIMPHYEX_t) :: YLDIMPHYEXPACK
-!------------------------------------------------------------------------
-!
-!!! 1. Initialisation
-CALL FILL_DIMPHYEX(YLDIMPHYEXPACK, SIZE(PZZ,1), SIZE(PZZ,2), SIZE(PZZ,3))
-!
-! Internal Domain
-IIU=SIZE(PTHM,1)
-IJU=SIZE(PTHM,2)
-IKU=SIZE(PTHM,3)
-IKB=1+JPVEXT
-IKE=IKU-JPVEXT
-!
-! number of moist  var
-IRR=SIZE(PRM,4)
-! number of scalar var
-ISV=SIZE(PSVM,4)
-!
-! wind on mass points
-ZUMM=MXF(PUM)
-ZVMM=MYF(PVM)
-!
-!!! 2. Call of the physical parameterization of massflux vertical transport
-!
-LSTATNW = .FALSE.
-!
-CALL SHALLOW_MF(YLDIMPHYEXPACK, CST, NEB, PARAM_MFSHALLN, TURBN, CSTURB,&
-                KRR,KRRL,KRRI,ISV,                                    &
-                CFRAC_ICE_SHALLOW_MF,LNOMIXLG,NSV_LGBEG,NSV_LGEND,    &
-                PIMPL_MF, PTSTEP,                                     &
-                PDZZ, PZZ,                                            &
-                PRHODJ,PRHODREF,                                      &
-                PPABSM, PEXN,                                         &
-                PSFTH,PSFRV,                                          &
-                PTHM,PRM,ZUMM,ZVMM,PTKEM,PSVM,                        &
-                ZDUDT_MF,ZDVDT_MF,                                    &
-                ZDTHLDT_MF,ZDRTDT_MF,ZDSVDT_MF,                       &
-                ZSIGMF,ZRC_MF,ZRI_MF,ZCF_MF,ZFLXZTHVMF,               &
-                ZFLXZTHMF,ZFLXZRMF,ZFLXZUMF,ZFLXZVMF,                 &
-                ZTHL_UP,ZRT_UP,ZRV_UP,ZRC_UP,ZRI_UP,                  &
-                ZU_UP, ZV_UP, ZTHV_UP, ZW_UP,                         &
-                ZFRAC_UP,ZEMF,ZDETR,ZENTR,                            &
-                IKLCL,IKETL,IKCTL,PDX,PDY,PRSVS,XSVMIN,               &
-                TBUCONF, TBUDGETS,SIZE(TBUDGETS)                      )
-!
-! Fill non-declared-explicit-dimensions output variables
-PSIGMF(:,:,:) = ZSIGMF(:,:,:)
-PRC_MF(:,:,:) = ZRC_MF(:,:,:)
-PRI_MF(:,:,:) = ZRI_MF(:,:,:)
-PCF_MF(:,:,:) = ZCF_MF(:,:,:)
-PFLXZTHVMF(:,:,:) = ZFLXZTHVMF(:,:,:)
-!
-!!! 3. Compute source terms for Meso-NH pronostic variables
-!!!    ----------------------------------------------------
-!
-! As the pronostic variable of Meso-Nh are not (yet) the conservative variables
-! the thl tendency is put in th and the rt tendency in rv
-! the adjustment will do later the repartition between vapor and cloud
-PRTHS(:,:,:)  = PRTHS(:,:,:)  +   &
-                  PRHODJ(:,:,:)*ZDTHLDT_MF(:,:,:)
-PRRS(:,:,:,1) = PRRS(:,:,:,1) +   &
-                  PRHODJ(:,:,:)*ZDRTDT_MF(:,:,:)
-PRUS(:,:,:)   = PRUS(:,:,:)  +MXM(  &
-                  PRHODJ(:,:,:)*ZDUDT_MF(:,:,:))
-PRVS(:,:,:)   = PRVS(:,:,:)  +MYM(  &
-                  PRHODJ(:,:,:)*ZDVDT_MF(:,:,:))
-!
-DO JSV=1,ISV 
-  IF (LNOMIXLG .AND. JSV >= NSV_LGBEG .AND. JSV<= NSV_LGEND) CYCLE
-  PRSVS(:,:,:,JSV)   = MAX((PRSVS(:,:,:,JSV)  +    &
-                  PRHODJ(:,:,:)*ZDSVDT_MF(:,:,:,JSV)),XSVMIN(JSV))
-END DO     
-!
-!!! 4. Prints the fluxes in output file
-!
-IF ( OMF_FLX .AND. tpfile%lopened ) THEN
-  ! stores the conservative potential temperature vertical flux
-  TZFIELD%CMNHNAME   = 'MF_THW_FLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'MF_THW_FLX'
-  TZFIELD%CUNITS     = 'K m s-1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_MF_THW_FLX'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZTHMF)
-  !
-  ! stores the conservative mixing ratio vertical flux
-  TZFIELD%CMNHNAME   = 'MF_RCONSW_FLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'MF_RCONSW_FLX'
-  TZFIELD%CUNITS     = 'K m s-1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_MF_RCONSW_FLX'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZRMF)
-  !
-  ! stores the theta_v vertical flux
-  TZFIELD%CMNHNAME   = 'MF_THVW_FLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'MF_THVW_FLX'
-  TZFIELD%CUNITS     = 'K m s-1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_MF_THVW_FLX'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,PFLXZTHVMF)
-  !
- IF (PARAM_MFSHALLN%LMIXUV) THEN
-  ! stores the U momentum vertical flux
-  TZFIELD%CMNHNAME   = 'MF_UW_FLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'MF_UW_FLX'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_MF_UW_FLX'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZUMF)
-  !
-  ! stores the V momentum vertical flux
-  TZFIELD%CMNHNAME   = 'MF_VW_FLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'MF_VW_FLX'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_MF_VW_FLX'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZVMF)
-  !
- END IF
-END IF
-!
-!!! 5. Externalised LES Diagnostic for Mass Flux Scheme
-!!!    ------------------------------------------------
-!
-      CALL DIAGNOS_LES_MF(IIU,IJU,IKU,PTIME_LES,               &
-                          ZTHL_UP,ZRT_UP,ZRV_UP,ZRC_UP,ZRI_UP, &
-                          ZU_UP,ZV_UP,ZTHV_UP,ZW_UP,           &
-                          ZFRAC_UP,ZEMF,ZDETR,ZENTR,           &
-                          ZFLXZTHMF,ZFLXZTHVMF,ZFLXZRMF,       &
-                          ZFLXZUMF,ZFLXZVMF,                   &
-                          IKLCL,IKETL,IKCTL )
-!               
-END SUBROUTINE SHALLOW_MF_PACK
diff --git a/src/mesonh/ext/switch_sbg_lesn.f90 b/src/mesonh/ext/switch_sbg_lesn.f90
deleted file mode 100644
index 2920680fa..000000000
--- a/src/mesonh/ext/switch_sbg_lesn.f90
+++ /dev/null
@@ -1,589 +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$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
-!     ########################## 
-      SUBROUTINE SWITCH_SBG_LES_n
-!     ##########################
-!
-!!****  *SWITCH_SBG_LESn* - moves LES subgrid quantities from modd_les
-!!                          to modd_lesn or the contrary.
-!!
-!!    PURPOSE
-!!    -------
-!
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------ 
-!!
-!!    REFERENCE
-!!    ---------
-!!      
-!!
-!!    AUTHOR
-!!    ------
-!!	   V. Masson   *Meteo France*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    June 14, 2002                
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-USE MODD_LES
-USE MODD_LES_n
-USE MODD_CONF_n
-USE MODD_NSV
-!
-USE MODI_SECOND_MNH
-!
-IMPLICIT NONE
-!
-REAL :: ZTIME1, ZTIME2
-!-------------------------------------------------------------------------------
-!
-!*      7.4  interactions of resolved and subgrid quantities
-!            -----------------------------------------------
-!
-CALL SECOND_MNH(ZTIME1)
-!
-IF (.NOT.   ASSOCIATED (X_LES_RES_W_SBG_WThl) ) THEN
-!                                                                           ______
-  CALL LES_ALLOCATE('X_LES_RES_W_SBG_WThl',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <w'w'Thl'>
-!                                                                        _____
-  CALL LES_ALLOCATE('X_LES_RES_W_SBG_Thl2',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <w'Thl'2>
-!                                                                              _____
-  CALL LES_ALLOCATE('X_LES_RES_ddxa_U_SBG_UaU',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <du'/dxa ua'u'>
-!                                                                              _____
-  CALL LES_ALLOCATE('X_LES_RES_ddxa_V_SBG_UaV',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dv'/dxa ua'v'>
-!                                                                             _____
-  CALL LES_ALLOCATE('X_LES_RES_ddxa_W_SBG_UaW',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dw'/dxa ua'w'>
-!                                                                              _______
-  CALL LES_ALLOCATE('X_LES_RES_ddxa_W_SBG_UaThl',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dw'/dxa ua'Thl'>
-!                                                                                _____
-  CALL LES_ALLOCATE('X_LES_RES_ddxa_Thl_SBG_UaW',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dThl'/dxa ua'w'>
-!                                                                                  ___
-  CALL LES_ALLOCATE('X_LES_RES_ddz_Thl_SBG_W2',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dThl'/dz w'2>
-!                                                                                _______
-  CALL LES_ALLOCATE('X_LES_RES_ddxa_Thl_SBG_UaThl',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dThl'/dxa ua'Thl'>
-!
-  IF (LUSERV) THEN
-!                                                                          _____
-    CALL LES_ALLOCATE('X_LES_RES_W_SBG_WRt',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <w'w'Rt'>
-!                                                                           ____
-    CALL LES_ALLOCATE('X_LES_RES_W_SBG_Rt2',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <w'Rt'2>
-!                                                                          _______
-    CALL LES_ALLOCATE('X_LES_RES_W_SBG_ThlRt',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <w'Thl'Rt'>
-!                                                                                ______
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_W_SBG_UaRt',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dw'/dxa ua'Rt'>
-!                                                                                 _____
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_Rt_SBG_UaW',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dRt'/dxa ua'w'>
-!                                                                                   ___
-    CALL LES_ALLOCATE('X_LES_RES_ddz_Rt_SBG_W2',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dRt'/dz w'2>
-!                                                                                  ______
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_Thl_SBG_UaRt',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dThl'/dxa ua'Rt'>
-!                                                                                 _______
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_Rt_SBG_UaThl',(/NLES_K,NLES_TIMES,NLES_MASKS/))!  <dRt'/dxa ua'Thl'>
-!                                                                                  ______
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_Rt_SBG_UaRt',(/NLES_K,NLES_TIMES,NLES_MASKS/)) !  <dRt'/dxa ua'Rt'>
-  ELSE
-    CALL LES_ALLOCATE('X_LES_RES_W_SBG_WRt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_RES_W_SBG_Rt2',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_RES_W_SBG_ThlRt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_W_SBG_UaRt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_Rt_SBG_UaW',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_RES_ddz_Rt_SBG_W2',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_Thl_SBG_UaRt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_Rt_SBG_UaThl',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_RES_ddxa_Rt_SBG_UaRt',(/0,0,0/))
-  END IF
-!                                                                                   ______
-CALL LES_ALLOCATE('X_LES_RES_ddxa_W_SBG_UaSv',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  !  <dw'/dxa ua'Sv'>
-!                                                                                    _____
-CALL LES_ALLOCATE('X_LES_RES_ddxa_Sv_SBG_UaW',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  !  <dSv'/dxa ua'w'>
-!                                                                                    ___
-CALL LES_ALLOCATE('X_LES_RES_ddz_Sv_SBG_W2',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/) ) !  <dSv'/dz w'2>
-!                                                                                   ______
-CALL LES_ALLOCATE('X_LES_RES_ddxa_Sv_SBG_UaSv',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  !  <dSv'/dxa ua'Sv'>
-!                                                                             _____
-CALL LES_ALLOCATE('X_LES_RES_W_SBG_WSv',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  !  <w'w'Sv'>
-!                                                                             ____
-CALL LES_ALLOCATE('X_LES_RES_W_SBG_Sv2',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  !  <w'Sv'2>
-!
-!
-  X_LES_RES_W_SBG_WThl         = XLES_RES_W_SBG_WThl
-  X_LES_RES_W_SBG_Thl2         = XLES_RES_W_SBG_Thl2
-  X_LES_RES_ddxa_U_SBG_UaU     = XLES_RES_ddxa_U_SBG_UaU
-  X_LES_RES_ddxa_V_SBG_UaV     = XLES_RES_ddxa_V_SBG_UaV
-  X_LES_RES_ddxa_W_SBG_UaW     = XLES_RES_ddxa_W_SBG_UaW
-  X_LES_RES_ddxa_W_SBG_UaThl   = XLES_RES_ddxa_W_SBG_UaThl
-  X_LES_RES_ddxa_Thl_SBG_UaW   = XLES_RES_ddxa_Thl_SBG_UaW
-  X_LES_RES_ddz_Thl_SBG_W2     = XLES_RES_ddz_Thl_SBG_W2
-  X_LES_RES_ddxa_Thl_SBG_UaThl = XLES_RES_ddxa_Thl_SBG_UaThl
-  IF (LUSERV) THEN
-    X_LES_RES_W_SBG_WRt        = XLES_RES_W_SBG_WRt
-    X_LES_RES_W_SBG_Rt2        = XLES_RES_W_SBG_Rt2
-    X_LES_RES_W_SBG_ThlRt      = XLES_RES_W_SBG_ThlRt
-    X_LES_RES_ddxa_W_SBG_UaRt  = XLES_RES_ddxa_W_SBG_UaRt
-    X_LES_RES_ddxa_Rt_SBG_UaW  = XLES_RES_ddxa_Rt_SBG_UaW
-    X_LES_RES_ddz_Rt_SBG_W2    = XLES_RES_ddz_Rt_SBG_W2
-    X_LES_RES_ddxa_Thl_SBG_UaRt= XLES_RES_ddxa_Thl_SBG_UaRt
-    X_LES_RES_ddxa_Rt_SBG_UaThl= XLES_RES_ddxa_Rt_SBG_UaThl
-    X_LES_RES_ddxa_Rt_SBG_UaRt = XLES_RES_ddxa_Rt_SBG_UaRt
-  END IF
-  IF (NSV>0) THEN
-    X_LES_RES_ddxa_W_SBG_UaSv  = XLES_RES_ddxa_W_SBG_UaSv
-    X_LES_RES_ddxa_Sv_SBG_UaW  = XLES_RES_ddxa_Sv_SBG_UaW
-    X_LES_RES_ddz_Sv_SBG_W2    = XLES_RES_ddz_Sv_SBG_W2
-    X_LES_RES_ddxa_Sv_SBG_UaSv = XLES_RES_ddxa_Sv_SBG_UaSv
-    X_LES_RES_W_SBG_WSv        = XLES_RES_W_SBG_WSv
-    X_LES_RES_W_SBG_Sv2        = XLES_RES_W_SBG_Sv2
-  END IF
-!
-!
-  CALL LES_ALLOCATE('X_LES_SUBGRID_U2',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <u'2>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_V2',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <v'2>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_W2',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'2>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_Thl2',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <Thl'2>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_UV',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <u'v'>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WU',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'u'>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WV',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'v'>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_UThl',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <u'Thl'>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_VThl',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <v'Thl'>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WThl',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'Thl'>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WThv',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! <w'Thv'>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_ThlThv',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! <Thl'Thv'>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_W2Thl',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! <w'2Thl>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WThl2',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! <w'Thl'2>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_DISS_Tke',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! <epsilon>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_DISS_Thl2',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! <epsilon_Thl2>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WP',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! <w'p'>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_PHI3',(/NLES_K,NLES_TIMES,NLES_MASKS/))  !  phi3
-  CALL LES_ALLOCATE('X_LES_SUBGRID_LMix',(/NLES_K,NLES_TIMES,NLES_MASKS/))  !  Lmix
-  CALL LES_ALLOCATE('X_LES_SUBGRID_LDiss',(/NLES_K,NLES_TIMES,NLES_MASKS/))  !  Ldiss
-  CALL LES_ALLOCATE('X_LES_SUBGRID_Km',(/NLES_K,NLES_TIMES,NLES_MASKS/))  !  Km
-  CALL LES_ALLOCATE('X_LES_SUBGRID_Kh',(/NLES_K,NLES_TIMES,NLES_MASKS/))  !  Kh
-  CALL LES_ALLOCATE('X_LES_SUBGRID_ThlPz',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! <Thl'dp'/dz>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_UTke',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <u'Tke>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_VTke',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <v'Tke>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WTke',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'Tke>
-  CALL LES_ALLOCATE('X_LES_SUBGRID_ddz_WTke',(/NLES_K,NLES_TIMES,NLES_MASKS/)) ! <dw'Tke/dz>
-
-  CALL LES_ALLOCATE('X_LES_SUBGRID_THLUP_MF',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Thl of the Updraft
-  CALL LES_ALLOCATE('X_LES_SUBGRID_RTUP_MF',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Rt of the Updraft
-  CALL LES_ALLOCATE('X_LES_SUBGRID_RVUP_MF',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Rv of the Updraft
-  CALL LES_ALLOCATE('X_LES_SUBGRID_RCUP_MF',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Rc of the Updraft
-  CALL LES_ALLOCATE('X_LES_SUBGRID_RIUP_MF',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Ri of the Updraft
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WUP_MF',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Thl of the Updraft
-  CALL LES_ALLOCATE('X_LES_SUBGRID_MASSFLUX',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Mass Flux
-  CALL LES_ALLOCATE('X_LES_SUBGRID_DETR',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Detrainment
-  CALL LES_ALLOCATE('X_LES_SUBGRID_ENTR',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Entrainment
-  CALL LES_ALLOCATE('X_LES_SUBGRID_FRACUP',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Updraft Fraction 
-  CALL LES_ALLOCATE('X_LES_SUBGRID_THVUP_MF',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! Thv of the Updraft
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WTHLMF',(/NLES_K,NLES_TIMES,NLES_MASKS/))! Flux of thl   
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WRTMF',(/NLES_K,NLES_TIMES,NLES_MASKS/)) ! Flux of rt
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WTHVMF',(/NLES_K,NLES_TIMES,NLES_MASKS/)) ! Flux of thv 
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WUMF',(/NLES_K,NLES_TIMES,NLES_MASKS/))! Flux of u
-  CALL LES_ALLOCATE('X_LES_SUBGRID_WVMF',(/NLES_K,NLES_TIMES,NLES_MASKS/))! Flux of v
-  
-  IF (LUSERV ) THEN
-    CALL LES_ALLOCATE('X_LES_SUBGRID_Rt2',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <Rt'2>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_ThlRt',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <Thl'Rt'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_URt',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <u'Rt'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_VRt',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <v'Rt'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WRt',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'Rt'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_RtThv',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <Rt'Thv'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_W2Rt',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'2Rt'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WThlRt',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'Thl'Rt'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WRt2',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'Rt'2>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_DISS_Rt2',(/NLES_K,NLES_TIMES,NLES_MASKS/))  ! <epsilon_Rt2>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_DISS_ThlRt',(/NLES_K,NLES_TIMES,NLES_MASKS/)) ! <epsilon_ThlRt>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_RtPz',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <Rt'dp'/dz>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_PSI3',(/NLES_K,NLES_TIMES,NLES_MASKS/))     !  psi3  
-  ELSE
-    CALL LES_ALLOCATE('X_LES_SUBGRID_Rt2',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_ThlRt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_URt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_VRt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WRt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_RtThv',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_W2Rt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WThlRt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WRt2',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_DISS_Rt2',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_DISS_ThlRt',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_RtPz',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_PSI3',(/0,0,0/))    
-  END IF
-  IF (LUSERC ) THEN
-    CALL LES_ALLOCATE('X_LES_SUBGRID_Rc2',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <Rc'2>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_URc',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <u'Rc'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_VRc',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <v'Rc'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WRc',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <w'Rc'>
-  ELSE
-    CALL LES_ALLOCATE('X_LES_SUBGRID_Rc2',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_URc',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_VRc',(/0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WRc',(/0,0,0/))
-  END IF
-  IF (LUSERI ) THEN
-    CALL LES_ALLOCATE('X_LES_SUBGRID_Ri2',(/NLES_K,NLES_TIMES,NLES_MASKS/))     ! <Ri'2>
-  ELSE
-    CALL LES_ALLOCATE('X_LES_SUBGRID_Ri2',(/0,0,0/))
-  END IF
-  IF (NSV>0  ) THEN
-    CALL LES_ALLOCATE('X_LES_SUBGRID_USv',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/)) ! <u'Sv'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_VSv',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/)) ! <v'Sv'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WSv',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/)) ! <w'Sv'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_Sv2',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  ! <Sv'2>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_SvThv',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  ! <Sv'Thv'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_W2Sv',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  ! <w'2Sv'>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WSv2',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  ! <w'Sv'2>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_DISS_Sv2',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  ! <epsilon_Sv2>
-    CALL LES_ALLOCATE('X_LES_SUBGRID_SvPz',(/NLES_K,NLES_TIMES,NLES_MASKS,NSV/))  ! <Sv'dp'/dz>
-  ELSE
-    CALL LES_ALLOCATE('X_LES_SUBGRID_USv',(/0,0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_VSv',(/0,0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WSv',(/0,0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_Sv2',(/0,0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_SvThv',(/0,0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_W2Sv',(/0,0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_WSv2',(/0,0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_DISS_Sv2',(/0,0,0,0/))
-    CALL LES_ALLOCATE('X_LES_SUBGRID_SvPz',(/0,0,0,0/))
-  END IF
-!
-  X_LES_SUBGRID_U2  = XLES_SUBGRID_U2 
-  X_LES_SUBGRID_V2  = XLES_SUBGRID_V2 
-  X_LES_SUBGRID_W2  = XLES_SUBGRID_W2 
-  X_LES_SUBGRID_Thl2= XLES_SUBGRID_Thl2
-  X_LES_SUBGRID_UV  = XLES_SUBGRID_UV 
-  X_LES_SUBGRID_WU  = XLES_SUBGRID_WU
-  X_LES_SUBGRID_WV  = XLES_SUBGRID_WV
-  X_LES_SUBGRID_UThl= XLES_SUBGRID_UThl
-  X_LES_SUBGRID_VThl= XLES_SUBGRID_VThl
-  X_LES_SUBGRID_WThl= XLES_SUBGRID_WThl
-  X_LES_SUBGRID_WThv     = XLES_SUBGRID_WThv
-  X_LES_SUBGRID_ThlThv   = XLES_SUBGRID_ThlThv
-  X_LES_SUBGRID_W2Thl    = XLES_SUBGRID_W2Thl
-  X_LES_SUBGRID_WThl2    = XLES_SUBGRID_WThl2
-  X_LES_SUBGRID_DISS_Tke = XLES_SUBGRID_DISS_Tke
-  X_LES_SUBGRID_DISS_Thl2= XLES_SUBGRID_DISS_Thl2
-  X_LES_SUBGRID_WP       = XLES_SUBGRID_WP
-  X_LES_SUBGRID_PHI3     = XLES_SUBGRID_PHI3
-  X_LES_SUBGRID_LMix     = XLES_SUBGRID_LMix
-  X_LES_SUBGRID_LDiss    = XLES_SUBGRID_LDiss
-  X_LES_SUBGRID_Km       = XLES_SUBGRID_Km
-  X_LES_SUBGRID_Kh       = XLES_SUBGRID_Kh
-  X_LES_SUBGRID_ThlPz    = XLES_SUBGRID_ThlPz
-  X_LES_SUBGRID_UTke= XLES_SUBGRID_UTke
-  X_LES_SUBGRID_VTke= XLES_SUBGRID_VTke
-  X_LES_SUBGRID_WTke= XLES_SUBGRID_WTke
-  X_LES_SUBGRID_ddz_WTke  =XLES_SUBGRID_ddz_WTke
-  
-  X_LES_SUBGRID_THLUP_MF = XLES_SUBGRID_THLUP_MF
-  X_LES_SUBGRID_RTUP_MF = XLES_SUBGRID_RTUP_MF 
-  X_LES_SUBGRID_RVUP_MF = XLES_SUBGRID_RVUP_MF 
-  X_LES_SUBGRID_RCUP_MF = XLES_SUBGRID_RCUP_MF 
-  X_LES_SUBGRID_RIUP_MF = XLES_SUBGRID_RIUP_MF 
-  X_LES_SUBGRID_WUP_MF = XLES_SUBGRID_WUP_MF  
-  X_LES_SUBGRID_MASSFLUX = XLES_SUBGRID_MASSFLUX
-  X_LES_SUBGRID_DETR = XLES_SUBGRID_DETR    
-  X_LES_SUBGRID_ENTR = XLES_SUBGRID_ENTR    
-  X_LES_SUBGRID_FRACUP = XLES_SUBGRID_FRACUP   
-  X_LES_SUBGRID_THVUP_MF = XLES_SUBGRID_THVUP_MF
-  X_LES_SUBGRID_WTHLMF = XLES_SUBGRID_WTHLMF     
-  X_LES_SUBGRID_WRTMF = XLES_SUBGRID_WRTMF   
-  X_LES_SUBGRID_WTHVMF = XLES_SUBGRID_WTHVMF   
-  X_LES_SUBGRID_WUMF = XLES_SUBGRID_WUMF    
-  X_LES_SUBGRID_WVMF = XLES_SUBGRID_WVMF    
-
-  IF (LUSERV ) THEN
-    X_LES_SUBGRID_Rt2  = XLES_SUBGRID_Rt2
-    X_LES_SUBGRID_ThlRt= XLES_SUBGRID_ThlRt
-    X_LES_SUBGRID_URt  = XLES_SUBGRID_URt
-    X_LES_SUBGRID_VRt  = XLES_SUBGRID_VRt
-    X_LES_SUBGRID_WRt  = XLES_SUBGRID_WRt
-    X_LES_SUBGRID_RtThv   = XLES_SUBGRID_RtThv
-    X_LES_SUBGRID_W2Rt    = XLES_SUBGRID_W2Rt
-    X_LES_SUBGRID_WThlRt  = XLES_SUBGRID_WThlRt
-    X_LES_SUBGRID_WRt2    = XLES_SUBGRID_WRt2
-    X_LES_SUBGRID_DISS_Rt2= XLES_SUBGRID_DISS_Rt2
-    X_LES_SUBGRID_DISS_ThlRt= XLES_SUBGRID_DISS_ThlRt
-    X_LES_SUBGRID_RtPz    = XLES_SUBGRID_RtPz
-    X_LES_SUBGRID_PSI3    = XLES_SUBGRID_PSI3  
-  END IF
-  IF (LUSERC ) THEN
-    X_LES_SUBGRID_Rc2 = XLES_SUBGRID_Rc2
-    X_LES_SUBGRID_URc = XLES_SUBGRID_URc
-    X_LES_SUBGRID_VRc = XLES_SUBGRID_VRc
-    X_LES_SUBGRID_WRc = XLES_SUBGRID_WRc
-  END IF
-  IF (LUSERI ) THEN
-    X_LES_SUBGRID_Ri2 = XLES_SUBGRID_Ri2
-  END IF
-  IF (NSV>0  ) THEN
-    X_LES_SUBGRID_USv = XLES_SUBGRID_USv
-    X_LES_SUBGRID_VSv = XLES_SUBGRID_VSv
-    X_LES_SUBGRID_WSv = XLES_SUBGRID_WSv
-    X_LES_SUBGRID_Sv2      = XLES_SUBGRID_Sv2 
-    X_LES_SUBGRID_SvThv    = XLES_SUBGRID_SvThv
-    X_LES_SUBGRID_W2Sv     = XLES_SUBGRID_W2Sv 
-    X_LES_SUBGRID_WSv2     = XLES_SUBGRID_WSv2    
-    X_LES_SUBGRID_DISS_Sv2 = XLES_SUBGRID_DISS_Sv2 
-    X_LES_SUBGRID_SvPz     = XLES_SUBGRID_SvPz  
-  END IF
-!
-!
-  CALL LES_ALLOCATE('X_LES_UW0',(/NLES_TIMES/))
-  CALL LES_ALLOCATE('X_LES_VW0',(/NLES_TIMES/))
-  CALL LES_ALLOCATE('X_LES_USTAR',(/NLES_TIMES/))
-  CALL LES_ALLOCATE('X_LES_Q0',(/NLES_TIMES/))
-  CALL LES_ALLOCATE('X_LES_E0',(/NLES_TIMES/))
-  CALL LES_ALLOCATE('X_LES_SV0',(/NLES_TIMES,NSV/))
-!
-  X_LES_UW0       = XLES_UW0
-  X_LES_VW0       = XLES_VW0
-  X_LES_USTAR     = XLES_USTAR
-  X_LES_Q0        = XLES_Q0
-  X_LES_E0        = XLES_E0
-  IF (NSV>0) X_LES_SV0       = XLES_SV0
-
-ELSE
-!
-  XLES_RES_W_SBG_WThl         = X_LES_RES_W_SBG_WThl
-  XLES_RES_W_SBG_Thl2         = X_LES_RES_W_SBG_Thl2
-  XLES_RES_ddxa_U_SBG_UaU     = X_LES_RES_ddxa_U_SBG_UaU
-  XLES_RES_ddxa_V_SBG_UaV     = X_LES_RES_ddxa_V_SBG_UaV
-  XLES_RES_ddxa_W_SBG_UaW     = X_LES_RES_ddxa_W_SBG_UaW
-  XLES_RES_ddxa_W_SBG_UaThl   = X_LES_RES_ddxa_W_SBG_UaThl
-  XLES_RES_ddxa_Thl_SBG_UaW   = X_LES_RES_ddxa_Thl_SBG_UaW
-  XLES_RES_ddz_Thl_SBG_W2     = X_LES_RES_ddz_Thl_SBG_W2
-  XLES_RES_ddxa_Thl_SBG_UaThl = X_LES_RES_ddxa_Thl_SBG_UaThl
-  IF (LUSERV) THEN
-    XLES_RES_W_SBG_WRt        = X_LES_RES_W_SBG_WRt
-    XLES_RES_W_SBG_Rt2        = X_LES_RES_W_SBG_Rt2
-    XLES_RES_W_SBG_ThlRt      = X_LES_RES_W_SBG_ThlRt
-    XLES_RES_ddxa_W_SBG_UaRt  = X_LES_RES_ddxa_W_SBG_UaRt
-    XLES_RES_ddxa_Rt_SBG_UaW  = X_LES_RES_ddxa_Rt_SBG_UaW
-    XLES_RES_ddz_Rt_SBG_W2    = X_LES_RES_ddz_Rt_SBG_W2
-    XLES_RES_ddxa_Thl_SBG_UaRt= X_LES_RES_ddxa_Thl_SBG_UaRt
-    XLES_RES_ddxa_Rt_SBG_UaThl= X_LES_RES_ddxa_Rt_SBG_UaThl
-    XLES_RES_ddxa_Rt_SBG_UaRt = X_LES_RES_ddxa_Rt_SBG_UaRt
-  END IF
-  IF (NSV>0) THEN
-    XLES_RES_ddxa_W_SBG_UaSv  = X_LES_RES_ddxa_W_SBG_UaSv
-    XLES_RES_ddxa_Sv_SBG_UaW  = X_LES_RES_ddxa_Sv_SBG_UaW
-    XLES_RES_ddz_Sv_SBG_W2    = X_LES_RES_ddz_Sv_SBG_W2
-    XLES_RES_ddxa_Sv_SBG_UaSv = X_LES_RES_ddxa_Sv_SBG_UaSv
-    XLES_RES_W_SBG_WSv        = X_LES_RES_W_SBG_WSv
-    XLES_RES_W_SBG_Sv2        = X_LES_RES_W_SBG_Sv2
-  END IF
-  XLES_SUBGRID_U2  = X_LES_SUBGRID_U2 
-  XLES_SUBGRID_V2  = X_LES_SUBGRID_V2 
-  XLES_SUBGRID_W2  = X_LES_SUBGRID_W2 
-  XLES_SUBGRID_Thl2= X_LES_SUBGRID_Thl2
-  XLES_SUBGRID_UV  = X_LES_SUBGRID_UV 
-  XLES_SUBGRID_WU  = X_LES_SUBGRID_WU
-  XLES_SUBGRID_WV  = X_LES_SUBGRID_WV
-  XLES_SUBGRID_UThl= X_LES_SUBGRID_UThl
-  XLES_SUBGRID_VThl= X_LES_SUBGRID_VThl
-  XLES_SUBGRID_WThl= X_LES_SUBGRID_WThl
-  XLES_SUBGRID_WThv     = X_LES_SUBGRID_WThv
-  XLES_SUBGRID_ThlThv   = X_LES_SUBGRID_ThlThv
-  XLES_SUBGRID_W2Thl    = X_LES_SUBGRID_W2Thl
-  XLES_SUBGRID_WThl2    = X_LES_SUBGRID_WThl2
-  XLES_SUBGRID_DISS_Tke = X_LES_SUBGRID_DISS_Tke
-  XLES_SUBGRID_DISS_Thl2= X_LES_SUBGRID_DISS_Thl2
-  XLES_SUBGRID_WP       = X_LES_SUBGRID_WP
-  XLES_SUBGRID_PHI3     = X_LES_SUBGRID_PHI3
-  XLES_SUBGRID_LMix     = X_LES_SUBGRID_LMix
-  XLES_SUBGRID_LDiss    = X_LES_SUBGRID_LDiss
-  XLES_SUBGRID_Km       = X_LES_SUBGRID_Km
-  XLES_SUBGRID_Kh       = X_LES_SUBGRID_Kh
-  XLES_SUBGRID_ThlPz    = X_LES_SUBGRID_ThlPz
-  XLES_SUBGRID_UTke= X_LES_SUBGRID_UTke
-  XLES_SUBGRID_VTke= X_LES_SUBGRID_VTke
-  XLES_SUBGRID_WTke= X_LES_SUBGRID_WTke
-  XLES_SUBGRID_ddz_WTke  =X_LES_SUBGRID_ddz_WTke
-
-  XLES_SUBGRID_THLUP_MF = X_LES_SUBGRID_THLUP_MF
-  XLES_SUBGRID_RTUP_MF = X_LES_SUBGRID_RTUP_MF 
-  XLES_SUBGRID_RVUP_MF = X_LES_SUBGRID_RVUP_MF 
-  XLES_SUBGRID_RCUP_MF = X_LES_SUBGRID_RCUP_MF 
-  XLES_SUBGRID_RIUP_MF = X_LES_SUBGRID_RIUP_MF 
-  XLES_SUBGRID_WUP_MF = X_LES_SUBGRID_WUP_MF  
-  XLES_SUBGRID_MASSFLUX = X_LES_SUBGRID_MASSFLUX
-  XLES_SUBGRID_DETR = X_LES_SUBGRID_DETR    
-  XLES_SUBGRID_ENTR = X_LES_SUBGRID_ENTR    
-  XLES_SUBGRID_FRACUP = X_LES_SUBGRID_FRACUP   
-  XLES_SUBGRID_THVUP_MF = X_LES_SUBGRID_THVUP_MF
-  XLES_SUBGRID_WTHLMF = X_LES_SUBGRID_WTHLMF     
-  XLES_SUBGRID_WRTMF = X_LES_SUBGRID_WRTMF   
-  XLES_SUBGRID_WTHVMF = X_LES_SUBGRID_WTHVMF   
-  XLES_SUBGRID_WUMF = X_LES_SUBGRID_WUMF    
-  XLES_SUBGRID_WVMF = X_LES_SUBGRID_WVMF    
-  
-  IF (LUSERV ) THEN
-    XLES_SUBGRID_Rt2  = X_LES_SUBGRID_Rt2
-    XLES_SUBGRID_ThlRt= X_LES_SUBGRID_ThlRt
-    XLES_SUBGRID_URt  = X_LES_SUBGRID_URt
-    XLES_SUBGRID_VRt  = X_LES_SUBGRID_VRt
-    XLES_SUBGRID_WRt  = X_LES_SUBGRID_WRt
-    XLES_SUBGRID_RtThv   = X_LES_SUBGRID_RtThv
-    XLES_SUBGRID_W2Rt    = X_LES_SUBGRID_W2Rt
-    XLES_SUBGRID_WThlRt  = X_LES_SUBGRID_WThlRt
-    XLES_SUBGRID_WRt2    = X_LES_SUBGRID_WRt2
-    XLES_SUBGRID_DISS_Rt2= X_LES_SUBGRID_DISS_Rt2
-    XLES_SUBGRID_DISS_ThlRt= X_LES_SUBGRID_DISS_ThlRt
-    XLES_SUBGRID_RtPz    = X_LES_SUBGRID_RtPz
-    XLES_SUBGRID_PSI3    = X_LES_SUBGRID_PSI3
-  END IF
-  IF (LUSERC ) THEN
-    XLES_SUBGRID_Rc2 = X_LES_SUBGRID_Rc2
-    XLES_SUBGRID_URc = X_LES_SUBGRID_URc
-    XLES_SUBGRID_VRc = X_LES_SUBGRID_VRc
-    XLES_SUBGRID_WRc = X_LES_SUBGRID_WRc
-  END IF
-  IF (LUSERI ) THEN
-    XLES_SUBGRID_Ri2 = X_LES_SUBGRID_Ri2
-  END IF
-  IF (NSV>0  ) THEN
-    XLES_SUBGRID_USv = X_LES_SUBGRID_USv
-    XLES_SUBGRID_VSv = X_LES_SUBGRID_VSv
-    XLES_SUBGRID_WSv = X_LES_SUBGRID_WSv
-    XLES_SUBGRID_Sv2      = X_LES_SUBGRID_Sv2 
-    XLES_SUBGRID_SvThv    = X_LES_SUBGRID_SvThv
-    XLES_SUBGRID_W2Sv     = X_LES_SUBGRID_W2Sv 
-    XLES_SUBGRID_WSv2     = X_LES_SUBGRID_WSv2    
-    XLES_SUBGRID_DISS_Sv2 = X_LES_SUBGRID_DISS_Sv2 
-    XLES_SUBGRID_SvPz     = X_LES_SUBGRID_SvPz  
-  END IF
-  XLES_UW0       = X_LES_UW0
-  XLES_VW0       = X_LES_VW0
-  XLES_USTAR     = X_LES_USTAR
-  XLES_Q0        = X_LES_Q0
-  XLES_E0        = X_LES_E0
-  IF (NSV>0) XLES_SV0       = X_LES_SV0
-!
-  CALL LES_DEALLOCATE('X_LES_RES_W_SBG_WThl')
-  CALL LES_DEALLOCATE('X_LES_RES_W_SBG_Thl2')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_U_SBG_UaU')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_V_SBG_UaV')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_W_SBG_UaW')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_W_SBG_UaThl')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_Thl_SBG_UaW')
-  CALL LES_DEALLOCATE('X_LES_RES_ddz_Thl_SBG_W2')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_Thl_SBG_UaThl')
-  CALL LES_DEALLOCATE('X_LES_RES_W_SBG_WRt')
-  CALL LES_DEALLOCATE('X_LES_RES_W_SBG_Rt2')
-  CALL LES_DEALLOCATE('X_LES_RES_W_SBG_ThlRt')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_W_SBG_UaRt')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_Rt_SBG_UaW')
-  CALL LES_DEALLOCATE('X_LES_RES_ddz_Rt_SBG_W2')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_Thl_SBG_UaRt')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_Rt_SBG_UaThl')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_Rt_SBG_UaRt')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_W_SBG_UaSv')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_Sv_SBG_UaW')
-  CALL LES_DEALLOCATE('X_LES_RES_ddz_Sv_SBG_W2')
-  CALL LES_DEALLOCATE('X_LES_RES_ddxa_Sv_SBG_UaSv')
-  CALL LES_DEALLOCATE('X_LES_RES_W_SBG_WSv')
-  CALL LES_DEALLOCATE('X_LES_RES_W_SBG_Sv2')
-!
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_U2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_V2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_W2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_Thl2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_UV')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WU')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WV')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_UThl')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_VThl')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WThl')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WThv')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_ThlThv')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_W2Thl')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WThl2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_DISS_Tke')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_DISS_Thl2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WP')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_PHI3')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_LMix')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_LDiss')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_Km')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_Kh')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_ThlPz')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_UTke')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_VTke')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WTke')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_ddz_WTke')
-
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_THLUP_MF')  
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_RTUP_MF')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_RVUP_MF')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_RCUP_MF')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_RIUP_MF')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WUP_MF')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_MASSFLUX')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_DETR')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_ENTR')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_FRACUP')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_THVUP_MF')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WTHLMF')  
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WRTMF')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WTHVMF')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WUMF')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WVMF')
-  
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_Rt2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_ThlRt')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_URt')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_VRt')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WRt')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_RtThv')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_W2Rt')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WThlRt')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WRt2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_DISS_Rt2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_DISS_ThlRt')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_RtPz')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_PSI3')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_Rc2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_URc')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_VRc')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WRc')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_Ri2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_USv')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_VSv')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WSv')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_Sv2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_SvThv')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_W2Sv')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_WSv2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_DISS_Sv2')
-  CALL LES_DEALLOCATE('X_LES_SUBGRID_SvPz')
-  !
-  CALL LES_DEALLOCATE('X_LES_UW0')
-  CALL LES_DEALLOCATE('X_LES_VW0')
-  CALL LES_DEALLOCATE('X_LES_USTAR')
-  CALL LES_DEALLOCATE('X_LES_Q0')
-  CALL LES_DEALLOCATE('X_LES_E0')
-  CALL LES_DEALLOCATE('X_LES_SV0')
-!
-END IF
-!
-CALL SECOND_MNH(ZTIME2)
-!
-XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-!
-END SUBROUTINE SWITCH_SBG_LES_n
diff --git a/src/mesonh/ext/write_lesn.f90 b/src/mesonh/ext/write_lesn.f90
deleted file mode 100644
index 9b6b326bc..000000000
--- a/src/mesonh/ext/write_lesn.f90
+++ /dev/null
@@ -1,1319 +0,0 @@
-!MNH_LIC Copyright 2000-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 mode_write_les_n
-!######################
-
-use modd_field, only: tfield_metadata_base
-
-implicit none
-
-private
-
-public :: Write_les_n
-
-
-character(len=:), allocatable :: cgroup
-character(len=:), allocatable :: cgroupcomment
-
-logical :: ldoavg    ! Compute and store time average
-logical :: ldonorm   ! Compute and store normalized field
-
-type(tfield_metadata_base) :: tfield
-type(tfield_metadata_base) :: tfieldx
-type(tfield_metadata_base) :: tfieldy
-
-interface Les_diachro_write
-  module procedure Les_diachro_write_1D, Les_diachro_write_2D, Les_diachro_write_3D, Les_diachro_write_4D
-end interface
-
-contains
-
-!###################################
-subroutine  Write_les_n( tpdiafile )
-!###################################
-!
-!
-!!****  *WRITE_LES_n* writes the LES final diagnostics for model _n
-!!
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      V. Masson
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         07/02/00
-!!                       01/02/01 (D. Gazen) add module MODD_NSV for NSV variable
-!!                       06/11/02 (V. Masson) some minor bugs
-!!                       01/04/03 (V. Masson) idem
-!!                       10/10/09 (P. Aumond) Add user multimaskS
-!!                          11/15 (C.Lac) Add production terms of TKE
-!!                    10/2016 (C.Lac) Add droplet deposition
-!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
-!  C. Lac         02/2019: add rain fraction as a LES diagnostic
-!  P. Wautelet 13/09/2019: budget: simplify and modernize date/time management
-!  P. Wautelet 12/10/2020: remove HLES_AVG dummy argument and group all 4 calls
-!  P. Wautelet 13/10/2020: bugfix: correct some names for LES_DIACHRO_2PT diagnostics (Ri)
-!  P. Wautelet 26/10/2020: bugfix: correct some comments and conditions + add missing RES_RTPZ
-!  P. Wautelet 26/10/2020: restructure subroutines to use tfield_metadata_base type
-! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-use modd_conf_n,     only: luserv, luserc, luserr, luseri, lusers, luserg, luserh
-use modd_io,         only: tfiledata
-use modd_field,      only: NMNHDIM_BUDGET_LES_TIME, NMNHDIM_BUDGET_LES_LEVEL, NMNHDIM_BUDGET_LES_SV, NMNHDIM_BUDGET_LES_MASK, &
-                           NMNHDIM_BUDGET_LES_PDF,                                                                            &
-                           NMNHDIM_SPECTRA_2PTS_NI, NMNHDIM_SPECTRA_2PTS_NJ,  NMNHDIM_SPECTRA_LEVEL, NMNHDIM_UNUSED,          &
-                           TYPEREAL
-use modd_grid_n,     only: xdxhat, xdyhat
-use modd_nsv,        only: nsv
-use modd_les
-use modd_les_n
-use modd_param_n,    only: ccloud
-use modd_param_c2r2, only: ldepoc
-use modd_param_ice,  only: ldeposc
-use modd_parameters, only: XUNDEF
-
-use mode_les_spec_n,            only: Les_spec_n
-use mode_modeln_handler,        only: Get_current_model_index
-use mode_write_les_budget_n,    only: Write_les_budget_n
-use mode_write_les_rt_budget_n, only: Write_les_rt_budget_n
-use mode_write_les_sv_budget_n, only: Write_les_sv_budget_n
-
-IMPLICIT NONE
-!
-!*      0.1  declarations of arguments
-!
-TYPE(TFILEDATA),  INTENT(IN) :: TPDIAFILE! file to write
-!
-!
-!*      0.2  declaration of local variables
-!
-INTEGER :: IMASK
-!
-INTEGER :: JSV       ! scalar loop counter
-INTEGER :: JI        ! loop counter
-!
-character(len=3)                        :: ynum
-CHARACTER(len=5)                        :: YGROUP
-character(len=7), dimension(nles_masks) :: ymasks
-!
-logical :: gdoavg    ! Compute and store time average
-logical :: gdonorm   ! Compute and store normalized field
-REAL, DIMENSION(:,:,:), ALLOCATABLE     :: ZAVG_PTS_ll
-REAL, DIMENSION(:,:,:), ALLOCATABLE     :: ZUND_PTS_ll
-REAL                                    :: ZCART_PTS_ll
-INTEGER                                 :: IMI ! Current model inde
-!
-!-------------------------------------------------------------------------------
-!
-IF (.NOT. LLES) RETURN
-!
-!
-!*      1.   Initializations
-!            ---------------
-!
-IMI = GET_CURRENT_MODEL_INDEX()
-!
-!
-!*      1.1  Normalization variables
-!            -----------------------
-!
-IF (CLES_NORM_TYPE/='NONE' ) THEN
-  CALL LES_ALLOCATE('XLES_NORM_M',  (/NLES_TIMES/))
-  CALL LES_ALLOCATE('XLES_NORM_S',  (/NLES_TIMES/))
-  CALL LES_ALLOCATE('XLES_NORM_K',  (/NLES_TIMES/))
-  CALL LES_ALLOCATE('XLES_NORM_RHO',(/NLES_TIMES/))
-  CALL LES_ALLOCATE('XLES_NORM_RV', (/NLES_TIMES/))
-  CALL LES_ALLOCATE('XLES_NORM_SV', (/NLES_TIMES,NSV/))
-  CALL LES_ALLOCATE('XLES_NORM_P',  (/NLES_TIMES/))
-  !
-  IF (CLES_NORM_TYPE=='CONV') THEN
-    WHERE (XLES_WSTAR(:)>0.)
-      XLES_NORM_M(:)   = XLES_BL_HEIGHT(:)
-      XLES_NORM_S(:)   = XLES_NORM_M(:) / XLES_WSTAR(:)
-      XLES_NORM_K(:)   = XLES_Q0(:) / XLES_WSTAR(:)
-      XLES_NORM_RHO(:) = XLES_MEAN_RHO(1,:,1)
-      XLES_NORM_RV(:)  = XLES_E0(:) / XLES_WSTAR(:)
-      XLES_NORM_P(:)   = XLES_MEAN_RHO(1,:,1) * XLES_WSTAR(:)**2
-    ELSEWHERE
-      XLES_NORM_M(:)   = 0.
-      XLES_NORM_S(:)   = 0.
-      XLES_NORM_K(:)   = 0.
-      XLES_NORM_RHO(:) = 0.
-      XLES_NORM_RV(:)  = 0.
-      XLES_NORM_P(:)   = 0.
-    END WHERE
-    DO JSV=1,NSV
-      WHERE (XLES_WSTAR(:)>0.)
-        XLES_NORM_SV(:,JSV)= XLES_SV0(:,JSV) / XLES_WSTAR(:)
-      ELSEWHERE
-        XLES_NORM_SV(:,JSV)= 0.
-      END WHERE
-    END DO
-  ELSE IF (CLES_NORM_TYPE=='EKMA') THEN
-    WHERE (XLES_USTAR(:)>0.)
-      XLES_NORM_M(:)   = XLES_BL_HEIGHT(:)
-      XLES_NORM_S(:)   = XLES_NORM_M(:) / XLES_USTAR(:)
-      XLES_NORM_K(:)   = XLES_Q0(:) / XLES_USTAR(:)
-      XLES_NORM_RHO(:) = XLES_MEAN_RHO(1,:,1)
-      XLES_NORM_RV(:)  = XLES_E0(:) / XLES_USTAR(:)
-      XLES_NORM_P(:)   = XLES_MEAN_RHO(1,:,1) * XLES_USTAR(:)**2
-    ELSEWHERE
-      XLES_NORM_M(:)   = 0.
-      XLES_NORM_S(:)   = 0.
-      XLES_NORM_K(:)   = 0.
-      XLES_NORM_RHO(:) = 0.
-      XLES_NORM_RV(:)  = 0.
-      XLES_NORM_P(:)   = 0.
-    END WHERE
-    DO JSV=1,NSV
-      WHERE (XLES_USTAR(:)>0.)
-        XLES_NORM_SV(:,JSV)= XLES_SV0(:,JSV) / XLES_USTAR(:)
-      ELSEWHERE
-        XLES_NORM_SV(:,JSV)= 0.
-      END WHERE
-    END DO
-  ELSE IF (CLES_NORM_TYPE=='MOBU') THEN
-    XLES_NORM_M(:) = XLES_MO_LENGTH(:)
-    WHERE (XLES_USTAR(:)>0.)
-      XLES_NORM_S(:)   = XLES_NORM_M(:) / XLES_USTAR(:)
-      XLES_NORM_K(:)   = XLES_Q0(:) / XLES_USTAR(:)
-      XLES_NORM_RHO(:) = XLES_MEAN_RHO(1,:,1)
-      XLES_NORM_RV(:)  = XLES_E0(:) / XLES_USTAR(:)
-      XLES_NORM_P(:)   = XLES_MEAN_RHO(1,:,1) * XLES_USTAR(:)**2
-    ELSEWHERE
-      XLES_NORM_S(:)   = 0.
-      XLES_NORM_K(:)   = 0.
-      XLES_NORM_RHO(:) = 0.
-      XLES_NORM_RV(:)  = 0.
-      XLES_NORM_P(:)   = 0.
-    END WHERE
-    DO JSV=1,NSV
-      WHERE (XLES_USTAR(:)>0.)
-        XLES_NORM_SV(:,JSV)= XLES_SV0(:,JSV) / XLES_USTAR(:)
-      ELSEWHERE
-        XLES_NORM_SV(:,JSV)= 0.
-      END WHERE
-    END DO
-  END IF
-END IF
-!
-!*      1.2  Initializations for WRITE_DIACHRO
-!            ---------------------------------
-!
-NLES_CURRENT_TIMES=NLES_TIMES
-!
-CALL LES_ALLOCATE('XLES_CURRENT_Z',(/NLES_K/))
-
-XLES_CURRENT_Z(:) = XLES_Z(:)
-!
-XLES_CURRENT_ZS = XLES_ZS
-!
-NLES_CURRENT_IINF=NLESn_IINF(IMI)
-NLES_CURRENT_ISUP=NLESn_ISUP(IMI)
-NLES_CURRENT_JINF=NLESn_JINF(IMI)
-NLES_CURRENT_JSUP=NLESn_JSUP(IMI)
-!
-XLES_CURRENT_DOMEGAX=XDXHAT(1)
-XLES_CURRENT_DOMEGAY=XDYHAT(1)
-
-tfield%ngrid = 0 !Not on the Arakawa grid
-tfield%ntype = TYPEREAL
-!
-!*      2.   (z,t) profiles (all masks)
-!            --------------
-IMASK = 1
-ymasks(imask) = 'cart'
-IF (LLES_NEB_MASK) THEN
-  IMASK=IMASK+1
-  ymasks(imask) = 'neb'
-  IMASK=IMASK+1
-  ymasks(imask) = 'clear'
-END IF
-IF (LLES_CORE_MASK) THEN
-  IMASK=IMASK+1
-  ymasks(imask) = 'core'
-  IMASK=IMASK+1
-  ymasks(imask) = 'env'
-END IF
-IF (LLES_MY_MASK) THEN
-   DO JI=1,NLES_MASKS_USER
-        IMASK=IMASK+1
-        Write( ynum, '( i3.3 )' ) ji
-        ymasks(imask) = 'user' // ynum
-   END DO
-END IF
-IF (LLES_CS_MASK) THEN
-  IMASK=IMASK+1
-  ymasks(imask) = 'cs1'
-  IMASK=IMASK+1
-  ymasks(imask) = 'cs2'
-  IMASK=IMASK+1
-  ymasks(imask) = 'cs3'
-END IF
-!
-!*      2.0  averaging diagnostics
-!            ---------------------
-!
-ALLOCATE(ZAVG_PTS_ll (NLES_K,NLES_TIMES,NLES_MASKS))
-ALLOCATE(ZUND_PTS_ll (NLES_K,NLES_TIMES,NLES_MASKS))
-
-ZAVG_PTS_ll(:,:,:) = NLES_AVG_PTS_ll(:,:,:)
-ZUND_PTS_ll(:,:,:) = NLES_UND_PTS_ll(:,:,:)
-ZCART_PTS_ll       = (NLESn_ISUP(IMI)-NLESn_IINF(IMI)+1) * (NLESn_JSUP(IMI)-NLESn_JINF(IMI)+1)
-
-tfield%ndims = 3
-tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-tfield%ndimlist(4:) = NMNHDIM_UNUSED
-
-ldoavg  = xles_temp_mean_start /= XUNDEF .and. xles_temp_mean_end /= XUNDEF
-ldonorm = .false.
-
-cgroup        = 'Miscellaneous'
-cgroupcomment = 'Miscellaneous terms (geometry, various unclassified averaged terms...)'
-
-call Les_diachro_write( tpdiafile, zavg_pts_ll,                'AVG_PTS',  'number of points used for averaging',   '1', ymasks )
-call Les_diachro_write( tpdiafile, zavg_pts_ll / zcart_pts_ll, 'AVG_PTSF', 'fraction of points used for averaging', '1', ymasks )
-call Les_diachro_write( tpdiafile, zund_pts_ll,                'UND_PTS',  'number of points below orography',      '1', ymasks )
-call Les_diachro_write( tpdiafile, zund_pts_ll / zcart_pts_ll, 'UND_PTSF', 'fraction of points below orography',    '1', ymasks )
-
-DEALLOCATE(ZAVG_PTS_ll)
-DEALLOCATE(ZUND_PTS_ll)
-!
-!*      2.1  mean quantities
-!            ---------------
-!
-cgroup = 'Mean'
-cgroupcomment = 'Mean vertical profiles of the model variables'
-
-tfield%ndims = 3
-tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-tfield%ndimlist(4:) = NMNHDIM_UNUSED
-
-ldoavg  = xles_temp_mean_start /= XUNDEF .and. xles_temp_mean_end /= XUNDEF
-ldonorm = trim(cles_norm_type) /= 'NONE'
-
-call Les_diachro_write( tpdiafile, XLES_MEAN_U,      'MEAN_U',      'Mean U Profile',                        'm s-1',  ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_V,      'MEAN_V',      'Mean V Profile',                        'm s-1',  ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_W,      'MEAN_W',      'Mean W Profile',                        'm s-1',  ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_P,      'MEAN_PRE',    'Mean pressure Profile',                 'Pa',     ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_DP,     'MEAN_DP',     'Mean Dyn production TKE Profile',       'm2 s-3', ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_TP,     'MEAN_TP',     'Mean Thermal production TKE Profile',   'm2 s-3', ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_TR,     'MEAN_TR',     'Mean transport production TKE Profile', 'm2 s-3', ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_DISS,   'MEAN_DISS',   'Mean Dissipation TKE Profile',          'm2 s-3', ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_LM,     'MEAN_LM',     'Mean mixing length Profile',            'm',      ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_RHO,    'MEAN_RHO',    'Mean density Profile',                  'kg m-3', ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_Th,     'MEAN_TH',     'Mean potential temperature Profile',    'K',      ymasks )
-call Les_diachro_write( tpdiafile, XLES_MEAN_Mf,     'MEAN_MF',     'Mass-flux Profile',                     'm s-1',  ymasks )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Thl,    'MEAN_THL',    'Mean liquid potential temperature Profile',  'K', ymasks )
-if ( luserv ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Thv,    'MEAN_THV',    'Mean virtual potential temperature Profile', 'K', ymasks )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Rt,     'MEAN_RT',     'Mean Rt Profile', 'kg kg-1', ymasks )
-if ( luserv ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Rv,     'MEAN_RV',     'Mean Rv Profile', 'kg kg-1', ymasks )
-if ( luserv ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Rehu,   'MEAN_REHU',   'Mean Rh Profile', 'percent', ymasks )
-if ( luserv ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Qs,     'MEAN_QS',     'Mean Qs Profile', 'kg kg-1', ymasks )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_KHt,    'MEAN_KHT',    'Eddy-diffusivity (temperature) Profile', 'm2 s-1', ymasks )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_KHr,    'MEAN_KHR',    'Eddy-diffusivity (vapor) Profile',      'm2 s-1', ymasks )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Rc,     'MEAN_RC',     'Mean Rc Profile',              'kg kg-1', ymasks )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Cf,     'MEAN_CF',     'Mean Cf Profile',              '1',       ymasks )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_INDCf,  'MEAN_INDCF',  'Mean Cf>1-6 Profile (0 or 1)', '1',       ymasks )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_INDCf2, 'MEAN_INDCF2', 'Mean Cf>1-5 Profile (0 or 1)', '1',       ymasks )
-if ( luserr ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Rr,     'MEAN_RR',     'Mean Rr Profile',              'kg kg-1', ymasks )
-if ( luserr ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_RF,     'MEAN_RF',     'Mean RF Profile',              '1',       ymasks )
-if ( luseri ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Ri,     'MEAN_RI',     'Mean Ri Profile',              'kg kg-1', ymasks )
-if ( luseri ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_If,     'MEAN_IF',     'Mean If Profile',              '1',       ymasks )
-if ( lusers ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Rs,     'MEAN_RS',     'Mean Rs Profile',              'kg kg-1', ymasks )
-if ( luserg ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Rg,     'MEAN_RG',     'Mean Rg Profile',              'kg kg-1', ymasks )
-if ( luserh ) &
-call Les_diachro_write( tpdiafile, XLES_MEAN_Rh,     'MEAN_RH',     'Mean Rh Profile',              'kg kg-1', ymasks )
-
-if ( nsv > 0 ) then
-  tfield%ndims = 4
-  tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-  tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-  tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-  tfield%ndimlist(4)  = NMNHDIM_BUDGET_LES_SV
-  tfield%ndimlist(5:) = NMNHDIM_UNUSED
-
-  call Les_diachro_write( tpdiafile, XLES_MEAN_Sv, 'MEAN_SV', 'Mean Sv Profiles', 'kg kg-1', ymasks )
-
-  tfield%ndims = 3
-  !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-  !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-  !tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-  tfield%ndimlist(4)  = NMNHDIM_UNUSED
-  !tfield%ndimlist(5:) = NMNHDIM_UNUSED
-end if
-
-call Les_diachro_write( tpdiafile, XLES_MEAN_WIND, 'MEANWIND',       'Profile of Mean Modulus of Wind', 'm s-1',      ymasks )
-call Les_diachro_write( tpdiafile, XLES_RESOLVED_MASSFX, 'MEANMSFX', 'Total updraft mass flux',         'kg m-2 s-1', ymasks )
-
-if ( lles_pdf ) then
-  cgroup = 'PDF'
-  cgroupcomment = ''
-
-  tfield%ndims = 4
-  !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-  !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-  !tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-  tfield%ndimlist(4)  = NMNHDIM_BUDGET_LES_PDF
-  tfield%ndimlist(5:) = NMNHDIM_UNUSED
-
-  call Les_diachro_write( tpdiafile,   XLES_PDF_TH,  'PDF_TH',  'Pdf potential temperature Profiles', '1', ymasks )
-  call Les_diachro_write( tpdiafile,   XLES_PDF_W,   'PDF_W',   'Pdf vertical velocity Profiles',     '1', ymasks )
-  call Les_diachro_write( tpdiafile,   XLES_PDF_THV, 'PDF_THV', 'Pdf virtual pot. temp. Profiles',    '1', ymasks )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile,   XLES_PDF_RV,  'PDF_RV',  'Pdf Rv Profiles',                    '1', ymasks )
-  if ( luserc ) then
-    call Les_diachro_write( tpdiafile, XLES_PDF_RC,  'PDF_RC',  'Pdf Rc Profiles',                    '1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_PDF_RT,  'PDF_RT',  'Pdf Rt Profiles',                    '1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_PDF_THL, 'PDF_THL', 'Pdf Thl Profiles',                   '1', ymasks )
-  end if
-  if ( luserr ) &
-  call Les_diachro_write( tpdiafile,   XLES_PDF_RR,  'PDF_RR',  'Pdf Rr Profiles',                    '1', ymasks )
-  if ( luseri ) &
-  call Les_diachro_write( tpdiafile,   XLES_PDF_RI,  'PDF_RI',  'Pdf Ri Profiles',                    '1', ymasks )
-  if ( lusers ) &
-  call Les_diachro_write( tpdiafile,   XLES_PDF_RS,  'PDF_RS',  'Pdf Rs Profiles',                    '1', ymasks )
-  if ( luserg ) &
-  call Les_diachro_write( tpdiafile,   XLES_PDF_RG,  'PDF_RG',  'Pdf Rg Profiles',                    '1', ymasks )
-end if
-!
-!*      2.2  resolved quantities
-!            -------------------
-!
-if ( lles_resolved ) then
-  !Prepare metadata (used in Les_diachro_write calls)
-  ldoavg  = xles_temp_mean_start /= XUNDEF .and. xles_temp_mean_end /= XUNDEF
-  ldonorm = trim(cles_norm_type) /= 'NONE'
-
-  cgroup = 'Resolved'
-  cgroupcomment = 'Mean vertical profiles of the resolved fluxes, variances and covariances'
-
-  tfield%ndims = 3
-  tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-  tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-  tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-  tfield%ndimlist(4:) = NMNHDIM_UNUSED
-
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_U2, 'RES_U2',  'Resolved <u2> variance',        'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_V2, 'RES_V2',  'Resolved <v2> variance',        'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_W2, 'RES_W2',  'Resolved <w2> variance',        'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_UV, 'RES_UV',  'Resolved <uv> Flux',            'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_WU, 'RES_WU',  'Resolved <wu> Flux',            'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_WV, 'RES_WV',  'Resolved <wv> Flux',            'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_Ke, 'RES_KE',  'Resolved TKE Profile',          'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_P2, 'RES_P2',  'Resolved pressure variance',    'Pa2',    ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_UP, 'RES_UPZ', 'Resolved <up> horizontal Flux', 'Pa s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_VP, 'RES_VPZ', 'Resolved <vp> horizontal Flux', 'Pa s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_WP, 'RES_WPZ', 'Resolved <wp> vertical Flux',   'Pa s-1', ymasks )
-
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThThv, 'RES_THTV', &
-                          'Resolved potential temperature - virtual potential temperature covariance',        'K2', ymasks )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThlThv, 'RES_TLTV', &
-                          'Resolved liquid potential temperature - virtual potential temperature covariance', 'K2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_Th2, 'RES_TH2', 'Resolved potential temperature variance', 'K2', ymasks )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_Thl2, 'RES_THL2', 'Resolved liquid potential temperature variance', 'K2',&
-                          ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_UTh, 'RES_UTH', 'Resolved <uth> horizontal Flux', 'm K s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_VTh, 'RES_VTH', 'Resolved <vth> horizontal Flux', 'm K s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_WTh, 'RES_WTH', 'Resolved <wth> vertical Flux',   'm K s-1', ymasks )
-
-  if ( luserc ) then
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_UThl, 'RES_UTHL', 'Resolved <uthl> horizontal Flux', 'm K s-1',       ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_VThl, 'RES_VTHL', 'Resolved <vthl> horizontal Flux', 'm K s-1',       ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WThl, 'RES_WTHL', 'Resolved <wthl> vertical Flux',   'm K s-1',       ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_Rt2,  'RES_RT2',  'Resolved total water variance',   'kg2 kg-2',      ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRt,  'RES_WRT',  'Resolved <wrt> vertical Flux',    'm kg kg-1 s-1', ymasks )
-  end if
-
-  if ( luserv ) then
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_UThv,  'RES_UTHV', 'Resolved <uthv> horizontal Flux', 'm K s-1',       ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_VThv,  'RES_VTHV', 'Resolved <vthv> horizontal Flux', 'm K s-1',       ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WThv,  'RES_WTHV', 'Resolved <wthv> vertical Flux',   'm K s-1',       ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_Rv2,   'RES_RV2',  'Resolved water vapor variance',   'kg2 kg-2',      ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThRv,  'RES_THRV', 'Resolved <thrv> covariance',      'K kg kg-1',     ymasks )
-    if ( luserc ) &
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThlRv, 'RES_TLRV', 'Resolved <thlrv> covariance',     'K kg kg-1',     ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThvRv, 'RES_TVRV', 'Resolved <thvrv> covariance',     'K kg kg-1',     ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_URv,   'RES_URV',  'Resolved <urv> horizontal flux',  'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_VRv,   'RES_VRV',  'Resolved <vrv> horizontal flux',  'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRv,   'RES_WRV',  'Resolved <wrv> vertical flux',    'm kg kg-1 s-1', ymasks )
-  end if
-
-  if ( luserc ) then
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_Rc2,   'RES_RC2',  'Resolved cloud water variance',  'kg2 kg-2',      ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThRc,  'RES_THRC', 'Resolved <thrc> covariance',     'K kg kg-1',     ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThlRc, 'RES_TLRC', 'Resolved <thlrc> covariance',    'K kg kg-1',     ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThvRc, 'RES_TVRC', 'Resolved <thvrc> covariance',    'K kg kg-1',     ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_URc,   'RES_URC',  'Resolved <urc> horizontal flux', 'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_VRc,   'RES_VRC',  'Resolved <vrc> horizontal flux', 'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRc,   'RES_WRC',  'Resolved <wrc> vertical flux',   'm kg kg-1 s-1', ymasks )
-  end if
-
-  if ( luseri ) then
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_Ri2,   'RES_RI2',  'Resolved cloud ice variance',    'kg2 kg-2',      ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThRi,  'RES_THRI', 'Resolved <thri> covariance',     'K kg kg-1',     ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThlRi, 'RES_TLRI', 'Resolved <thlri> covariance',    'K kg kg-1',     ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThvRi, 'RES_TVRI', 'Resolved <thvri> covariance',    'K kg kg-1',     ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_URi,   'RES_URI',  'Resolved <uri> horizontal flux', 'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_VRi,   'RES_VRI',  'Resolved <vri> horizontal flux', 'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRi,   'RES_WRI',  'Resolved <wri> vertical flux',   'm kg kg-1 s-1', ymasks )
-  end if
-
-  if ( luserr ) then
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRr,   'RES_WRR',   'Resolved <wrr> vertical flux', 'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_INPRR3D,        'INPRR3D',   'Precipitation flux',           'm s-1',         ymasks )
-    call Les_diachro_write( tpdiafile, XLES_MAX_INPRR3D,    'MAXINPR3D', 'Max Precip flux',              'm s-1',         ymasks )
-    call Les_diachro_write( tpdiafile, XLES_EVAP3D,         'EVAP3D',    'Evaporation profile',          'kg kg-1 s-1',   ymasks )
-  end if
-
-  if ( nsv > 0 ) then
-    tfield%ndims = 4
-    tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-    tfield%ndimlist(4)  = NMNHDIM_BUDGET_LES_SV
-    tfield%ndimlist(5:) = NMNHDIM_UNUSED
-
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_Sv2,   'RES_SV2',  'Resolved scalar variables variances', 'kg2 kg-2', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThSv,  'RES_THSV', 'Resolved <ThSv> variance',  'K kg kg-1',          ymasks )
-    if ( luserc ) &
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThlSv, 'RES_TLSV', 'Resolved <ThlSv> variance', 'K kg kg-1',          ymasks )
-    if ( luserv ) &
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThvSv, 'RES_TVSV', 'Resolved <ThvSv> variance', 'K kg kg-1',          ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_USv,   'RES_USV',  'Resolved <uSv> horizontal flux', 'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_VSv,   'RES_VSV',  'Resolved <vSv> horizontal flux', 'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WSv,   'RES_WSV',  'Resolved <wSv> vertical flux', 'm kg kg-1 s-1',   ymasks )
-
-    tfield%ndims = 3
-    !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    !tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-    tfield%ndimlist(4)  = NMNHDIM_UNUSED
-    !tfield%ndimlist(5:) = NMNHDIM_UNUSED
-  end if
-
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_U3, 'RES_U3', 'Resolved <u3>', 'm3 s-3', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_V3, 'RES_V3', 'Resolved <v3>', 'm3 s-3', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_W3, 'RES_W3', 'Resolved <w3>', 'm3 s-3', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_U4, 'RES_U4', 'Resolved <u4>', 'm4 s-4', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_V4, 'RES_V4', 'Resolved <v4>', 'm4 s-4', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_W4, 'RES_W4', 'Resolved <w4>', 'm4 s-4', ymasks )
-
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_WThl2, 'RES_WTL2', 'Resolved <wThl2>', 'm K2 s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_W2Thl, 'RES_W2TL', 'Resolved <w2Thl>', 'm2 K s-2', ymasks )
-
-  if ( luserv ) then
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRv2,   'RES_WRV2', 'Resolved <wRv2>',   'm kg2 kg-2 s-1',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_W2Rv,   'RES_W2RV', 'Resolved <w2Rv>',   'm2 kg kg-1 s-2',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRt2,   'RES_WRT2', 'Resolved <wRt2>',   'm kg2 kg-2 s-1',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_W2Rt,   'RES_W2RT', 'Resolved <w2Rt>',   'm2 kg kg-1 s-2',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WThlRv, 'RE_WTLRV', 'Resolved <wThlRv>', 'm K kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WThlRt, 'RE_WTLRT', 'Resolved <wThlRt>', 'm K kg kg-1 s-1', ymasks )
-  end if
-
-  if ( luserc ) then
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRc2,   'RES_WRC2', 'Resolved <wRc2>',   'm kg2 kg-2 s-1',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_W2Rc,   'RES_W2RC', 'Resolved <w2Rc>',   'm2 kg kg-1 s-2',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WThlRc, 'RE_WTLRC', 'Resolved <wThlRc>', 'm K kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRvRc,  'RE_WRVRC', 'Resolved <wRvRc>',  'm kg2 kg-2 s-1',  ymasks )
-  end if
-
-  if ( luseri ) then
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRi2,   'RES_WRI2', 'Resolved <wRi2>',   'm kg2 kg-2 s-1',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_W2Ri,   'RES_W2RI', 'Resolved <w2Ri>',   'm2 kg kg-1 s-2',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WThlRi, 'RE_WTLRI', 'Resolved <wThlRi>', 'm K kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRvRi,  'RE_WRVRI', 'Resolved <wRvRi>',  'm kg2 kg-2 s-1',  ymasks )
-  end if
-
-  if ( nsv > 0 ) then
-    tfield%ndims = 4
-    tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-    tfield%ndimlist(4)  = NMNHDIM_BUDGET_LES_SV
-    tfield%ndimlist(5:) = NMNHDIM_UNUSED
-
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WSv2,   'RES_WSV2', 'Resolved <wSv2>',   'm kg2 kg-2 s-1',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_W2Sv,   'RES_W2SV', 'Resolved <w2Sv>',   'm2 kg kg-1 s-2',  ymasks )
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WThlSv, 'RE_WTLSV', 'Resolved <wThlSv>', 'm K kg kg-1 s-1', ymasks )
-    if ( luserv ) &
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_WRvSv,  'RE_WRVSV', 'Resolved <wRvSv>',  'm kg2 kg-2 s-1',  ymasks )
-
-    tfield%ndims = 3
-    !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    !tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-    tfield%ndimlist(4)  = NMNHDIM_UNUSED
-    !tfield%ndimlist(5:) = NMNHDIM_UNUSED
-  end if
-
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_ThlPz, 'RES_TLPZ', 'Resolved <Thldp/dz>', 'K Pa m-1',        ymasks )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_RtPz,  'RES_RTPZ', 'Resolved <Rtdp/dz>',  'kg2 kg-2 Pa m-1', ymasks )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_RvPz,  'RES_RVPZ', 'Resolved <Rvdp/dz>',  'kg2 kg-2 Pa m-1', ymasks )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_RcPz,  'RES_RCPZ', 'Resolved <Rcdp/dz>',  'kg2 kg-2 Pa m-1', ymasks )
-  if ( luseri ) &
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_RiPz,  'RES_RIPZ', 'Resolved <Ridp/dz>',  'kg2 kg-2 Pa m-1', ymasks )
-
-  if ( nsv > 0 ) then
-    tfield%ndims = 4
-    tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-    tfield%ndimlist(4)  = NMNHDIM_BUDGET_LES_SV
-    tfield%ndimlist(5:) = NMNHDIM_UNUSED
-
-    call Les_diachro_write( tpdiafile, XLES_RESOLVED_SvPz, 'RES_SVPZ', 'Resolved <Svdp/dz>', 'kg2 kg-2 Pa m-1', ymasks )
-
-    tfield%ndims = 3
-    !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    !tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-    tfield%ndimlist(4)  = NMNHDIM_UNUSED
-    !tfield%ndimlist(5:) = NMNHDIM_UNUSED
-  end if
-
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_UKe, 'RES_UKE', 'Resolved flux of resolved kinetic energy', 'm3 s-3', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_VKe, 'RES_VKE', 'Resolved flux of resolved kinetic energy', 'm3 s-3', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_RESOLVED_WKe, 'RES_WKE', 'Resolved flux of resolved kinetic energy', 'm3 s-3', ymasks )
-end if
-!
-!
-!*      2.3  subgrid quantities
-!            ------------------
-!
-if ( lles_subgrid ) then
-  !Prepare metadata (used in Les_diachro_write calls)
-  ldoavg  = xles_temp_mean_start /= XUNDEF .and. xles_temp_mean_end /= XUNDEF
-  ldonorm = trim(cles_norm_type) /= 'NONE'
-
-  cgroup = 'Subgrid'
-  cgroupcomment = 'Mean vertical profiles of the subgrid fluxes, variances and covariances'
-
-  tfield%ndims = 3
-  tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-  tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-  tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-  tfield%ndimlist(4:) = NMNHDIM_UNUSED
-
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_Tke,  'SBG_TKE',  'Subgrid TKE',           'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_U2,   'SBG_U2',   'Subgrid <u2> variance', 'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_V2,   'SBG_V2',   'Subgrid <v2> variance', 'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_W2,   'SBG_W2',   'Subgrid <w2> variance', 'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_UV,   'SBG_UV',   'Subgrid <uv> flux',     'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WU,   'SBG_WU',   'Subgrid <wu> flux',     'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WV,   'SBG_WV',   'Subgrid <wv> flux',     'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_Thl2, 'SBG_THL2', 'Subgrid liquid potential temperature variance', &
-                          'K2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_UThl, 'SBG_UTHL', 'Subgrid horizontal flux of liquid potential temperature',  &
-                          'm K s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_VThl, 'SBG_VTHL', 'Subgrid horizontal flux of liquid potential temperature',  &
-                          'm K s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WThl, 'SBG_WTHL', 'Subgrid vertical flux of liquid potential temperature', &
-                          'm K s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WP,   'SBG_WP',   'Subgrid <wp> vertical Flux', 'm Pa s-1', ymasks )
-
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_THLUP_MF, 'THLUP_MF', 'Subgrid <thl> of updraft',    'K',          ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_RTUP_MF,  'RTUP_MF',  'Subgrid <rt> of updraft',     'kg kg-1',    ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_RVUP_MF,  'RVUP_MF',  'Subgrid <rv> of updraft',     'kg kg-1',    ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_RCUP_MF,  'RCUP_MF',  'Subgrid <rc> of updraft',     'kg kg-1',    ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_RIUP_MF,  'RIUP_MF',  'Subgrid <ri> of updraft',     'kg kg-1',    ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WUP_MF,   'WUP_MF',   'Subgrid <w> of updraft',      'm s-1',      ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_MASSFLUX, 'MAFLX_MF', 'Subgrid <MF> of updraft',     'kg m-2 s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_DETR,     'DETR_MF',  'Subgrid <detr> of updraft',   'kg m-3 s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_ENTR,     'ENTR_MF',  'Subgrid <entr> of updraft',   'kg m-3 s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_FRACUP,   'FRCUP_MF', 'Subgrid <FracUp> of updraft', '1',          ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_THVUP_MF, 'THVUP_MF', 'Subgrid <thv> of updraft',    'K',          ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WTHLMF,   'WTHL_MF',  'Subgrid <wthl> of mass flux convection scheme', &
-                          'm K s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WRTMF,    'WRT_MF',   'Subgrid <wrt> of mass flux convection scheme',  &
-                          'm kg kg-1 s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WTHVMF,   'WTHV_MF',  'Subgrid <wthv> of mass flux convection scheme', &
-                          'm K s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WUMF,     'WU_MF',    'Subgrid <wu> of mass flux convection scheme',   &
-                          'm2 s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WVMF,     'WV_MF',    'Subgrid <wv> of mass flux convection scheme',   &
-                          'm2 s-2', ymasks )
-
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_PHI3,  'SBG_PHI3', 'Subgrid Phi3 function',         '1',      ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_LMix,  'SBG_LMIX', 'Subgrid Mixing Length',         '1',      ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_LDiss, 'SBG_LDIS', 'Subgrid Dissipation Length',    '1',      ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_Km,    'SBG_KM',   'Eddy diffusivity for momentum', 'm2 s-1', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_Kh,    'SBG_KH',   'Eddy diffusivity for heat',     'm2 s-1', ymasks )
-
-  if ( luserv ) then
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_WThv,  'SBG_WTHV', 'Subgrid vertical flux of liquid potential temperature', &
-                            'm K s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_Rt2,   'SBG_RT2',  'Subgrid total water variance', 'kg2 kg-2', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_ThlRt, 'SBG_TLRT', 'Subgrid <thlrt> covariance',  'K kg kg-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_URt,   'SBG_URT',  'Subgrid total water horizontal flux', &
-                            'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_VRt,   'SBG_VRT',  'Subgrid total water horizontal flux', &
-                            'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_WRt,   'SBG_WRT',  'Subgrid total water vertical flux',   &
-                            'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_PSI3,  'SBG_PSI3', 'Subgrid Psi3 function', '1', ymasks )
-  end if
-
-  if ( luserc ) then
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_Rc2, 'SBG_RC2', 'Subgrid cloud water variance',        'kg2 kg-2', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_URc, 'SBG_URC', 'Subgrid cloud water horizontal flux', 'm kg kg-1 s-1', &
-                            ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_VRc, 'SBG_VRC', 'Subgrid cloud water horizontal flux', 'm kg kg-1 s-1', &
-                            ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_WRc, 'SBG_WRC', 'Subgrid cloud water vertical flux',   'm kg kg-1 s-1', &
-                            ymasks )
-  end if
-
-  if ( nsv > 0 ) then
-    tfield%ndims = 4
-    tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-    tfield%ndimlist(4)  = NMNHDIM_BUDGET_LES_SV
-    tfield%ndimlist(5:) = NMNHDIM_UNUSED
-
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_USv, 'SBG_USV', 'Subgrid <uSv> horizontal flux', 'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_VSv, 'SBG_VSV', 'Subgrid <vSv> horizontal flux', 'm kg kg-1 s-1', ymasks )
-    call Les_diachro_write( tpdiafile, XLES_SUBGRID_WSv, 'SBG_WSV', 'Subgrid <wSv> vertical flux',   'm kg kg-1 s-1', ymasks )
-
-    tfield%ndims = 3
-    !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    !tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_MASK
-    tfield%ndimlist(4)  = NMNHDIM_UNUSED
-    !tfield%ndimlist(5:) = NMNHDIM_UNUSED
-
-
-  end if
-
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_UTke,  'SBG_UTKE', 'Subgrid flux of subgrid kinetic energy', 'm3 s-3',   ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_VTke,  'SBG_VTKE', 'Subgrid flux of subgrid kinetic energy', 'm3 s-3',   ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WTke,  'SBG_WTKE', 'Subgrid flux of subgrid kinetic energy', 'm3 s-3',   ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_W2Thl, 'SBG_W2TL', 'Subgrid flux of subgrid kinetic energy', 'm2 K s-2', ymasks )
-  call Les_diachro_write( tpdiafile, XLES_SUBGRID_WThl2, 'SBG_WTL2', 'Subgrid flux of subgrid kinetic energy', 'm K2 s-1', ymasks )
-end if
-
-
-!Prepare metadata (used in Les_diachro_write calls)
-tfield%ndims = 2
-tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-tfield%ndimlist(3:) = NMNHDIM_UNUSED
-
-ldoavg  = xles_temp_mean_start /= XUNDEF .and. xles_temp_mean_end /= XUNDEF
-ldonorm = trim(cles_norm_type) /= 'NONE'
-!
-!*      2.4  Updraft quantities
-!            ------------------
-!
-if ( lles_updraft ) then
-  cgroup = 'Updraft'
-  cgroupcomment = 'Updraft vertical profiles of some resolved and subgrid fluxes, variances and covariances'
-
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT,     'UP_FRAC', 'Updraft fraction',                                 '1' )
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_W,   'UP_W',    'Updraft W mean value',                             'm s-1' )
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Th,  'UP_TH',   'Updraft potential temperature mean value',         'K' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Thl, 'UP_THL',  'Updraft liquid potential temperature mean value',  'K' )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Thv, 'UP_THV',  'Updraft virtual potential temperature mean value', 'K' )
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Ke,  'UP_KE',   'Updraft resolved TKE mean value',                   'm2 s-2' )
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Tke, 'UP_TKE',  'Updraft subgrid TKE mean value',                    'm2 s-2' )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Rv,  'UP_RV',   'Updraft water vapor mean value',                    'kg kg-1' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Rc,  'UP_RC',   'Updraft cloud water mean value',                    'kg kg-1' )
-  if ( luserr ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Rr,  'UP_RR',   'Updraft rain mean value',                           'kg kg-1' )
-  if ( luseri ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Ri,  'UP_RI',   'Updraft ice mean value',                            'kg kg-1' )
-  if ( lusers ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Rs,  'UP_RS',   'Updraft snow mean value',                           'kg kg-1' )
-  if ( luserg ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Rg,  'UP_RG',   'Updraft graupel mean value',                        'kg kg-1' )
-  if ( luserh ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Rh,  'UP_RH',   'Updraft hail mean value',                           'kg kg-1' )
-
-  if ( nsv > 0 ) then
-    tfield%ndims = 3
-    tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_SV
-    tfield%ndimlist(4:) = NMNHDIM_UNUSED
-
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Sv, 'UP_SV', 'Updraft scalar variables mean values', 'kg kg-1' )
-
-    tfield%ndims = 2
-    !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3) = NMNHDIM_UNUSED
-    !tfield%ndimlist(4:) = NMNHDIM_UNUSED
-  end if
-
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Th2,    'UP_TH2',  'Updraft resolved Theta variance',             'K2' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Thl2,   'UP_THL2', 'Updraft resolved Theta_l variance',           'K2' )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThThv,  'UP_THTV', 'Updraft resolved Theta Theta_v covariance',   'K2' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThlThv, 'UP_TLTV', 'Updraft resolved Theta_l Theta_v covariance', 'K2' )
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_WTh,    'UP_WTH',  'Updraft resolved WTh flux',                    'm K s-1' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_WThl,   'UP_WTHL', 'Updraft resolved WThl flux',                   'm K s-1' )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_UPDRAFT_WThv,   'UP_WTHV', 'Updraft resolved WThv flux',                   'm K s-1' )
-
-  if ( luserv ) then
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Rv2,   'UP_RV2',   'Updraft resolved water vapor variance', 'kg2 kg-2' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThRv,  'UP_THRV',  'Updraft resolved <thrv> covariance',    'K kg kg-1' )
-    if ( luserc ) &
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThlRv, 'UP_THLRV', 'Updraft resolved <thlrv> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThvRv, 'UP_THVRV', 'Updraft resolved <thvrv> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_WRv,   'UP_WRV',   'Updraft resolved <wrv> vertical flux',  'm kg kg-1 s-1' )
-  end if
-
-  if ( luserc ) then
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Rc2,   'UP_RC2',   'Updraft resolved cloud water variance', 'kg2 kg-2' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThRc,  'UP_THRC',  'Updraft resolved <thrc> covariance',    'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThlRc, 'UP_THLRC', 'Updraft resolved <thlrc> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThvRc, 'UP_THVRC', 'Updraft resolved <thvrc> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_WRc,   'UP_WRC',   'Updraft resolved <wrc> vertical flux',  'm kg kg-1 s-1' )
-  end if
-
-  if ( luseri ) then
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Ri2,   'UP_RI2',   'Updraft resolved cloud ice variance',   'kg2 kg-2' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThRi,  'UP_THRI',  'Updraft resolved <thri> covariance',    'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThlRi, 'UP_THLRI', 'Updraft resolved <thlri> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThvRi, 'UP_THVRI', 'Updraft resolved <thvri> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_WRi,   'UP_WRI',   'Updraft resolved <wri> vertical flux',  'm kg kg-1 s-1' )
-  end if
-
-
-  if ( nsv > 0 ) then
-    tfield%ndims = 3
-    tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_SV
-    tfield%ndimlist(4:) = NMNHDIM_UNUSED
-
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_Sv2,   'UP_SV2',   'Updraft resolved scalar variables variances', 'kg2 kg-2' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThSv,  'UP_THSV',  'Updraft resolved <ThSv> variance',            'K kg kg-1' )
-    if ( luserc ) &
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThlSv, 'UP_THLSV', 'Updraft resolved <ThlSv> variance',           'K kg kg-1' )
-    if ( luserv ) &
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_ThvSv, 'UP_THVSV', 'Updraft resolved <ThvSv> variance',           'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_UPDRAFT_WSv,   'UP_WSV',   'Updraft resolved <wSv> vertical flux', 'm kg kg-1 s-1' )
-
-    tfield%ndims = 2
-    !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3) = NMNHDIM_UNUSED
-    !tfield%ndimlist(4:) = NMNHDIM_UNUSED
-  end if
-end if
-!
-!
-!*      2.5  Downdraft quantities
-!            --------------------
-!
-if ( lles_downdraft ) then
-  cgroup = 'Downdraft'
-  cgroupcomment = 'Downdraft vertical profiles of some resolved and subgrid fluxes, variances and covariances'
-
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT,     'DW_FRAC', 'Downdraft fraction',                                 '1' )
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_W,   'DW_W',    'Downdraft W mean value',                             'm s-1' )
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Th,  'DW_TH',   'Downdraft potential temperature mean value',         'K' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Thl, 'DW_THL',  'Downdraft liquid potential temperature mean value',  'K' )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Thv, 'DW_THV',  'Downdraft virtual potential temperature mean value', 'K' )
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Ke,  'DW_KE',   'Downdraft resolved TKE mean value',                 'm2 s-2' )
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Tke, 'DW_TKE',  'Downdraft subgrid TKE mean value',                  'm2 s-2' )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Rv,  'DW_RV',   'Downdraft water vapor mean value',                 'kg kg-1' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Rc,  'DW_RC',   'Downdraft cloud water mean value',                 'kg kg-1' )
-  if ( luserr ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Rr,  'DW_RR',   'Downdraft rain mean value',                        'kg kg-1' )
-  if ( luseri ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Ri,  'DW_RI',   'Downdraft ice mean value',                         'kg kg-1' )
-  if ( lusers ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Rs,  'DW_RS',   'Downdraft snow mean value',                        'kg kg-1' )
-  if ( luserg ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Rg,  'DW_RG',   'Downdraft graupel mean value',                     'kg kg-1' )
-  if ( luserh ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Rh,  'DW_RH',   'Downdraft hail mean value',                        'kg kg-1' )
-
-  if ( nsv > 0 ) then
-    tfield%ndims = 3
-    tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_SV
-    tfield%ndimlist(4:) = NMNHDIM_UNUSED
-
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Sv, 'DW_SV', 'Downdraft scalar variables mean values', 'kg kg-1' )
-
-    tfield%ndims = 2
-    !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3) = NMNHDIM_UNUSED
-    !tfield%ndimlist(4:) = NMNHDIM_UNUSED
-  end if
-
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Th2,    'DW_TH2',  'Downdraft resolved Theta variance',             'K2' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Thl2,   'DW_THL2', 'Downdraft resolved Theta_l variance',           'K2' )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThThv,  'DW_THTV', 'Downdraft resolved Theta Theta_v covariance',   'K2' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThlThv, 'DW_TLTV', 'Downdraft resolved Theta_l Theta_v covariance', 'K2' )
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_WTh,    'DW_WTH',  'Downdraft resolved WTh flux',                   'm K s-1' )
-  if ( luserc ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_WThl,   'DW_WTHL', 'Downdraft resolved WThl flux',                  'm K s-1' )
-  if ( luserv ) &
-  call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_WThv,   'DW_WTHV', 'Downdraft resolved WThv flux',                  'm K s-1' )
-
-  if ( luserv ) then
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Rv2,   'DW_RV2',   'Downdraft resolved water vapor variance', 'kg2 kg-2' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThRv,  'DW_THRV',  'Downdraft resolved <thrv> covariance',    'K kg kg-1' )
-    if ( luserc ) &
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThlRv, 'DW_THLRV', 'Downdraft resolved <thlrv> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThvRv, 'DW_THVRV', 'Downdraft resolved <thvrv> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_WRv,   'DW_WRV',   'Downdraft resolved <wrv> vertical flux',  &
-                            'm kg kg-1 s-1' )
-  end if
-
-  if ( luserc ) then
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Rc2,   'DW_RC2',   'Downdraft resolved cloud water variance', 'kg2 kg-2' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThRc,  'DW_THRC',  'Downdraft resolved <thrc> covariance',    'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThlRc, 'DW_THLRC', 'Downdraft resolved <thlrc> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThvRc, 'DW_THVRC', 'Downdraft resolved <thvrc> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_WRc,   'DW_WRC',   'Downdraft resolved <wrc> vertical flux',  &
-                            'm kg kg-1 s-1' )
-  end if
-
-  if ( luseri ) then
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Ri2,   'DW_RI2',   'Downdraft resolved cloud ice variance',   'kg2 kg-2' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThRi,  'DW_THRI',  'Downdraft resolved <thri> covariance',    'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThlRi, 'DW_THLRI', 'Downdraft resolved <thlri> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThvRi, 'DW_THVRI', 'Downdraft resolved <thvri> covariance',   'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_WRi,   'DW_WRI',   'Downdraft resolved <wri> vertical flux',  &
-                            'm kg kg-1 s-1' )
-  end if
-
-
-  if ( nsv > 0 ) then
-    tfield%ndims = 3
-    tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3)  = NMNHDIM_BUDGET_LES_SV
-    tfield%ndimlist(4:) = NMNHDIM_UNUSED
-
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_Sv2,   'DW_SV2',   'Downdraft resolved scalar variables variances', &
-                            'kg2 kg-2' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThSv,  'DW_THSV',  'Downdraft resolved <ThSv> variance',            &
-                            'K kg kg-1' )
-    if ( luserc ) &
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThlSv, 'DW_THLSV', 'Downdraft resolved <ThlSv> variance',           &
-                            'K kg kg-1' )
-    if ( luserv ) &
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_ThvSv, 'DW_THVSV', 'Downdraft resolved <ThvSv> variance',           &
-                            'K kg kg-1' )
-    call Les_diachro_write( tpdiafile, XLES_DOWNDRAFT_WSv,   'DW_WSV',   'Downdraft resolved <wSv> vertical flux',        &
-                            'm kg kg-1 s-1' )
-
-    tfield%ndims = 2
-    !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-    !tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-    tfield%ndimlist(3) = NMNHDIM_UNUSED
-    !tfield%ndimlist(4:) = NMNHDIM_UNUSED
-  end if
-end if
-!
-!-------------------------------------------------------------------------------
-!
-!*      3.   surface normalization parameters
-!            --------------------------------
-!
-cgroup = 'Radiation'
-cgroupcomment = 'Radiative terms'
-
-!Prepare metadata (used in Les_diachro_write calls)
-tfield%ndims = 2
-tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_LEVEL
-tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_TIME
-tfield%ndimlist(3:) = NMNHDIM_UNUSED
-
-ldoavg  = xles_temp_mean_start /= XUNDEF .and. xles_temp_mean_end /= XUNDEF
-ldonorm = .false.
-
-call Les_diachro_write( tpdiafile, XLES_SWU,      'SWU',      'SW upward radiative flux',          'W m-2' )
-call Les_diachro_write( tpdiafile, XLES_SWD,      'SWD',      'SW downward radiative flux',        'W m-2' )
-call Les_diachro_write( tpdiafile, XLES_LWU,      'LWU',      'LW upward radiative flux',          'W m-2' )
-call Les_diachro_write( tpdiafile, XLES_LWD,      'LWD',      'LW downward radiative flux',        'W m-2' )
-call Les_diachro_write( tpdiafile, XLES_DTHRADSW, 'DTHRADSW', 'SW radiative temperature tendency', 'K s-1' )
-call Les_diachro_write( tpdiafile, XLES_DTHRADLW, 'DTHRADLW', 'LW radiative temperature tendency', 'K s-1' )
-!writes mean_effective radius at all levels
-call Les_diachro_write( tpdiafile, XLES_RADEFF,   'RADEFF',   'Mean effective radius',             'micron' )
-
-
-cgroup = 'Surface'
-cgroupcomment = 'Averaged surface fields'
-
-! !Prepare metadate (used in Les_diachro_write calls)
-tfield%ndims = 1
-tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_TIME
-tfield%ndimlist(2:) = NMNHDIM_UNUSED
-
-call Les_diachro_write( tpdiafile, XLES_Q0, 'Q0', 'Sensible heat flux at the surface', 'm K s-1' )
-if ( luserv ) &
-call Les_diachro_write( tpdiafile, XLES_E0, 'E0', 'Latent heat flux at the surface',   'kg kg-1 m s-1' )
-
-if ( nsv > 0 ) then
-  tfield%ndims = 2
-  tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_TIME
-  tfield%ndimlist(2)  = NMNHDIM_BUDGET_LES_SV
-  tfield%ndimlist(3:) = NMNHDIM_UNUSED
-
-  call Les_diachro_write( tpdiafile, XLES_SV0, 'SV0', 'Scalar variable fluxes at the surface', 'kg kg-1 m s-1' )
-
-  tfield%ndims = 1
-  !tfield%ndimlist(1)  = NMNHDIM_BUDGET_LES_TIME
-  tfield%ndimlist(2)  = NMNHDIM_UNUSED
-  !tfield%ndimlist(3:) = NMNHDIM_UNUSED
-end if
-
-call Les_diachro_write( tpdiafile, XLES_USTAR,      'Ustar',      'Friction velocity',                   'm s-1' )
-call Les_diachro_write( tpdiafile, XLES_WSTAR,      'Wstar',      'Convective velocity',                 'm s-1' )
-call Les_diachro_write( tpdiafile, XLES_MO_LENGTH,  'L_MO',       'Monin-Obukhov length',                'm' )
-if ( luserr ) &
-call Les_diachro_write( tpdiafile, XLES_PRECFR,     'PREC_FRAC',  'Fraction of columns where rain at surface',  '1' )
-if ( luserr ) &
-call Les_diachro_write( tpdiafile, XLES_INPRR,      'INST_PREC',  'Instantaneous precipitation rate',       'mm day-1' )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_INPRC,      'INST_SEDIM', 'Instantaneous cloud precipitation rate', 'mm day-1' )
-if ( luserc .and. ( ldeposc .or. ldepoc ) ) &
-call Les_diachro_write( tpdiafile, XLES_INDEP,      'INST_DEPOS', 'Instantaneous cloud deposition rate',    'mm day-1' )
-if ( luserr ) &
-call Les_diachro_write( tpdiafile, XLES_RAIN_INPRR, 'RAIN_PREC',  'Instantaneous precipitation rate over rainy grid cells', &
-                        'mm day-1' )
-if ( luserr ) &
-call Les_diachro_write( tpdiafile, XLES_ACPRR,      'ACCU_PREC',  'Accumulated precipitation rate',             'mm' )
-
-
-cgroup        = 'Miscellaneous'
-cgroupcomment = 'Miscellaneous terms (geometry, various unclassified averaged terms...)'
-
-call Les_diachro_write( tpdiafile, XLES_BL_HEIGHT,  'BL_H',       'Boundary Layer Height',               'm' )
-call Les_diachro_write( tpdiafile, XLES_INT_TKE,    'INT_TKE',    'Vertical integrated TKE',             'm2 s-2' )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_ZCB,        'ZCB',        'Cloud base Height',                   'm' )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_CFtot,      'ZCFTOT',     'Total cloud cover (rc>1e-6)',         '1' )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_CF2tot,     'ZCF2TOT',    'Total cloud cover (rc>1e-5)',         '1' )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_LWP,        'LWP',        'Liquid Water path',                   'kg m-2' )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_LWPVAR,     'LWPVAR',     'Liquid Water path variance',          'kg m-4' )
-if ( luserr ) &
-call Les_diachro_write( tpdiafile, XLES_RWP,        'RWP',        'Rain Water path',                     'kg m-2' )
-if ( luseri ) &
-call Les_diachro_write( tpdiafile, XLES_IWP,        'IWP',        'Ice Water path',                      'kg m-2' )
-if ( lusers ) &
-call Les_diachro_write( tpdiafile, XLES_SWP,        'SWP',        'Snow Water path',                     'kg m-2' )
-if ( luserg ) &
-call Les_diachro_write( tpdiafile, XLES_GWP,        'GWP',        'Graupel Water path',                  'kg m-2' )
-if ( luserh ) &
-call Les_diachro_write( tpdiafile, XLES_HWP,        'HWP',        'Hail Water path',                     'kg m-2' )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_ZMAXCF,     'ZMAXCF',     'Height of Cloud fraction maximum (rc>1e-6)', 'm' )
-if ( luserc ) &
-call Les_diachro_write( tpdiafile, XLES_ZMAXCF2,    'ZMAXCF2',    'Height of Cloud fraction maximum (rc>1e-5)', 'm' )
-
-!-------------------------------------------------------------------------------
-!
-!*      4.   LES budgets
-!            -----------
-!
-call Write_les_budget_n( tpdiafile )
-
-if ( luserv )  call Write_les_rt_budget_n( tpdiafile )
-
-if ( nsv > 0 ) call Write_les_sv_budget_n( tpdiafile )
-!
-!-------------------------------------------------------------------------------
-!
-!*      5.   (ni,z,t) and (nj,z,t) 2points correlations
-!            ------------------------------------------
-!
-if ( nspectra_k > 0 ) then
-  tfieldx%cstdname = ''
-  tfieldx%ngrid    = 0 !Not on the Arakawa grid
-  tfieldx%ntype    = TYPEREAL
-  tfieldx%ndims    = 3
-  tfieldx%ndimlist(1)  = NMNHDIM_SPECTRA_2PTS_NI
-  tfieldx%ndimlist(2)  = NMNHDIM_SPECTRA_LEVEL
-  tfieldx%ndimlist(3)  = NMNHDIM_BUDGET_LES_TIME
-  tfieldx%ndimlist(4:) = NMNHDIM_UNUSED
-
-  tfieldy%cstdname = ''
-  tfieldy%ngrid    = 0 !Not on the Arakawa grid
-  tfieldy%ntype    = TYPEREAL
-  tfieldy%ndims    = 3
-  tfieldy%ndimlist(1)  = NMNHDIM_SPECTRA_2PTS_NJ
-  tfieldy%ndimlist(2)  = NMNHDIM_SPECTRA_LEVEL
-  tfieldy%ndimlist(3)  = NMNHDIM_BUDGET_LES_TIME
-  tfieldy%ndimlist(4:) = NMNHDIM_UNUSED
-
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_UU, XCORRj_UU, 'UU', 'U*U     2 points correlations', 'm2 s-2' )
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_VV, XCORRj_VV, 'VV', 'V*V     2 points correlations', 'm2 s-2' )
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_WW, XCORRj_WW, 'WW', 'W*W     2 points correlations', 'm2 s-2' )
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_UV, XCORRj_UV, 'UV', 'U*V     2 points correlations', 'm2 s-2' )
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_WU, XCORRj_WU, 'WU', 'W*U     2 points correlations', 'm2 s-2' )
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_WV, XCORRj_WV, 'WV', 'W*V     2 points correlations', 'm2 s-2' )
-
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_ThTh, XCORRj_ThTh, 'THTH', 'Th*Th   2 points correlations', 'K2' )
-  if ( luserc ) &
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_ThlThl, XCORRj_ThlThl, 'TLTL', 'Thl*Thl 2 points correlations', 'K2' )
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_WTh,    XCORRj_WTh,    'WTH',  'W*Th    2 points correlations', 'm K s-1' )
-  if ( luserc ) &
-  call Les_diachro_2pt_write( tpdiafile, XCORRi_WThl,   XCORRj_WThl,   'WTHL', 'W*Thl   2 points correlations', 'm K s-1' )
-
-  if ( luserv ) then
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_RvRv,  XCORRj_RvRv,  'RVRV', 'rv*rv   2 points correlations', 'kg2 kg-2' )
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_ThRv,  XCORRj_ThRv,  'THRV', 'TH*RV   2 points correlations', 'K kg kg-1' )
-    if ( luserc ) &
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_ThlRv, XCORRj_ThlRv, 'TLRV', 'thl*rv  2 points correlations', 'K kg kg-1' )
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_WRv,   XCORRj_WRv,   'WRV',  'W*rv    2 points correlations', 'm kg s-1 kg-1' )
-  end if
-
-  if ( luserc ) then
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_RcRc,  XCORRj_RcRc,  'RCRC', 'rc*rc   2 points correlations', 'kg2 kg-2' )
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_ThRc,  XCORRj_ThRc,  'THRC', 'th*rc   2 points correlations', 'K kg kg-1' )
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_ThlRc, XCORRj_ThlRc, 'TLRC', 'thl*rc  2 points correlations', 'K kg kg-1' )
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_WRc,   XCORRj_WRc,   'WRC',  'W*rc    2 points correlations', 'm kg s-1 kg-1' )
-  end if
-
-  if ( luseri ) then
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_RiRi,  XCORRj_RiRi,  'RIRI', 'ri*ri   2 points correlations', 'kg2 kg-2' )
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_ThRi,  XCORRj_ThRi,  'THRI', 'th*ri   2 points correlations', 'K kg kg-1' )
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_ThlRi, XCORRj_ThlRi, 'TLRI', 'thl*ri  2 points correlations', 'K kg kg-1' )
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_WRi,   XCORRj_WRi,   'WRI',  'W*ri    2 points correlations', 'm kg s-1 kg-1' )
-  end if
-
-!PW: TODO: ameliorer le ygroup (tenir compte de ce qu'est la variable scalaire et pas juste son jsv!)
-  do jsv = 1, nsv
-    Write( ygroup, fmt = "( a2, i3.3 )" ) "SS", jsv
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_SvSv(:,:,:,JSV), XCORRj_SvSv(:,:,:,JSV), ygroup, &
-                                'Sv*Sv   2 points correlations','kg2 kg-2' )
-  end do
-
-!PW: TODO: ameliorer le ygroup (tenir compte de ce qu'est la variable scalaire et pas juste son jsv!)
-  do jsv = 1, nsv
-    Write( ygroup, fmt = "( a2, i3.3 )" ) "WS", jsv
-    call Les_diachro_2pt_write( tpdiafile, XCORRi_WSv(:,:,:,JSV), XCORRj_WSv(:,:,:,JSV), ygroup, &
-                                'W*Sv    2 points correlations','m kg s-1 kg-1' )
-  end do
-end if
-!
-!-------------------------------------------------------------------------------
-!
-!*      6.   spectra and time-averaged profiles (if first call to WRITE_LES_n)
-!            ----------------------------------
-!
-call Les_spec_n( tpdiafile )
-!
-!-------------------------------------------------------------------------------
-!
-!*      7.   deallocations
-!            -------------
-!
-CALL LES_DEALLOCATE('XLES_CURRENT_Z')
-
-IF (CLES_NORM_TYPE/='NONE' ) THEN
-  CALL LES_DEALLOCATE('XLES_NORM_M')
-  CALL LES_DEALLOCATE('XLES_NORM_S')
-  CALL LES_DEALLOCATE('XLES_NORM_K')
-  CALL LES_DEALLOCATE('XLES_NORM_RHO')
-  CALL LES_DEALLOCATE('XLES_NORM_RV')
-  CALL LES_DEALLOCATE('XLES_NORM_SV')
-  CALL LES_DEALLOCATE('XLES_NORM_P')
-END IF
-
-end subroutine Write_les_n
-
-!------------------------------------------------------------------------------
-
-subroutine Les_diachro_write_1D( tpdiafile, pdata, hmnhname, hcomment, hunits )
-
-use modd_io,          only: tfiledata
-
-use mode_les_diachro, only: Les_diachro
-
-type(tfiledata),    intent(in) :: tpdiafile ! file to write
-real, dimension(:), intent(in) :: pdata
-character(len=*),   intent(in) :: hmnhname
-character(len=*),   intent(in) :: hcomment
-character(len=*),   intent(in) :: hunits
-
-tfield%cmnhname  = hmnhname
-tfield%clongname = hmnhname
-tfield%ccomment  = hcomment
-tfield%cunits    = hunits
-
-call Les_diachro( tpdiafile, tfield, cgroup, cgroupcomment, ldoavg, ldonorm, pdata )
-
-end subroutine Les_diachro_write_1D
-
-!------------------------------------------------------------------------------
-
-subroutine Les_diachro_write_2D( tpdiafile, pdata, hmnhname, hcomment, hunits )
-
-use modd_io,          only: tfiledata
-
-use mode_les_diachro, only: Les_diachro
-
-type(tfiledata),      intent(in) :: tpdiafile ! file to write
-real, dimension(:,:), intent(in) :: pdata
-character(len=*),     intent(in) :: hmnhname
-character(len=*),     intent(in) :: hcomment
-character(len=*),     intent(in) :: hunits
-
-tfield%cmnhname  = hmnhname
-tfield%clongname = hmnhname
-tfield%ccomment  = hcomment
-tfield%cunits    = hunits
-
-call Les_diachro( tpdiafile, tfield, cgroup, cgroupcomment, ldoavg, ldonorm, pdata )
-
-end subroutine Les_diachro_write_2D
-
-!------------------------------------------------------------------------------
-
-subroutine Les_diachro_write_3D( tpdiafile, pdata, hmnhname, hcomment, hunits, hmasks )
-
-use modd_io,          only: tfiledata
-
-use mode_les_diachro, only: Les_diachro
-
-type(tfiledata),                          intent(in) :: tpdiafile ! file to write
-real,             dimension(:,:,:),       intent(in) :: pdata
-character(len=*),                         intent(in) :: hmnhname
-character(len=*),                         intent(in) :: hcomment
-character(len=*),                         intent(in) :: hunits
-character(len=*), dimension(:), optional, intent(in) :: hmasks
-
-tfield%cmnhname  = hmnhname
-tfield%clongname = hmnhname
-tfield%ccomment  = hcomment
-tfield%cunits    = hunits
-
-call Les_diachro( tpdiafile, tfield, cgroup, cgroupcomment, ldoavg, ldonorm, pdata, hmasks = hmasks )
-
-end subroutine Les_diachro_write_3D
-
-!------------------------------------------------------------------------------
-
-subroutine Les_diachro_write_4D( tpdiafile, pdata, hmnhname, hcomment, hunits, hmasks )
-
-use modd_io,          only: tfiledata
-
-use mode_les_diachro, only: Les_diachro
-
-type(tfiledata),                            intent(in) :: tpdiafile ! file to write
-real,             dimension(:,:,:,:),       intent(in) :: pdata
-character(len=*),                           intent(in) :: hmnhname
-character(len=*),                           intent(in) :: hcomment
-character(len=*),                           intent(in) :: hunits
-character(len=*), dimension(:),   optional, intent(in) :: hmasks
-
-tfield%cmnhname  = hmnhname
-tfield%clongname = hmnhname
-tfield%ccomment  = hcomment
-tfield%cunits    = hunits
-
-call Les_diachro( tpdiafile, tfield, cgroup, cgroupcomment, ldoavg, ldonorm, pdata, hmasks = hmasks )
-
-end subroutine Les_diachro_write_4D
-
-!------------------------------------------------------------------------------
-
-subroutine Les_diachro_2pt_write( tpdiafile, zcorri, zcorrj, hmnhname, hcomment, hunits )
-
-use modd_io,          only: tfiledata
-
-use mode_les_diachro, only: Les_diachro_2pt
-
-type(tfiledata),          intent(in) :: tpdiafile ! file to write
-real, dimension(:,:,:),   intent(in) :: zcorri    ! 2 pts correlation data
-real, dimension(:,:,:),   intent(in) :: zcorrj    ! 2 pts correlation data
-character(len=*),         intent(in) :: hmnhname
-character(len=*),         intent(in) :: hcomment
-character(len=*),         intent(in) :: hunits
-
-tfieldx%cmnhname  = hmnhname
-tfieldx%clongname = hmnhname
-tfieldx%ccomment  = hcomment
-tfieldx%cunits    = hunits
-
-tfieldy%cmnhname  = hmnhname
-tfieldy%clongname = hmnhname
-tfieldy%ccomment  = hcomment
-tfieldy%cunits    = hunits
-
-call Les_diachro_2pt( tpdiafile, tfieldx, tfieldy, zcorri, zcorrj )
-
-end subroutine Les_diachro_2pt_write
-
-!------------------------------------------------------------------------------
-
-end module mode_write_les_n
-- 
GitLab